这段时间断断续续做了一些小项目,代码写得不多,很大部分时间在胡乱看一下技术书籍,比如clojure,scala,groovy,几乎可以找到的语言的书籍都大概翻了一下,其实也只是闲得无聊。把VS装上,弄几下C#,然后又卸了,过几天又来兴趣,又装上弄几下。我猜想很多人都跟我一样吧,不然也不会有那么多人问该学哪种语言了。呵呵。
最近,总算想明白了,其实学习没必要说分得很清楚,JAVA,.net或android,iphone,这些平台间的争论从来都不少,也不乏许多牛人出来正名,其实语言只是工具,真正重要的是基础,是数据结构,算法那些基础的东西,学好这些,再多语言还不是手到擒来。但很少有人真正的为初学者想想——这里的初学者指工作不满两年的(当然包括小弟啦)。其实说语言是工具,没错,这很多人都同意,但语言不重要,相信很多人都要反驳。.net的把C#或其他.net系的吹上天去,微软就是神;而JAVA或其他的,也只是把他们自己的语言吹得天花乱坠。但仔细一看,各个语言都有它的优缺点(很少用其他语言,这里就不说了,免得有失偏颇)。
看到最近几年JAVA的发展,不能说它实在是“不怎么行”啊。当然,我是搞JAVA开发的,这样说自己工作的语言似乎不太好,但就是因为靠它混饭吃,就更要了解到它的缺点和优点。JAVA一直鼓吹着跨平台,但这个梦想没多少实现过。虽说真的可以跨平台,但体验好吗?真正跨平台靠的是JVM,而我们写的程序并没多少享受到跨平台的待遇。eclipse还是分好几个版本,windows,linux,mac os,如果跨平台,为啥呢?有人会说,它调用了操作系统的API啊,所以当然要好几个版本。好吧,这样那C++也行啊,那为啥JAVA非要吹跨平台呢?说真的,跨平台其实并不是我们程序员该考虑的,说到跨平台,大把语言比JAVA好,python,ruby,lua,perl一大把,但为啥企业应用还是喜欢JAVA呢。其实说到底还是JAVA的性质决定的,它作为一个较浓技术气氛公司的公司发布的语言,比商业公司的多少会好点,而且现在的JAVA,在类库和框架等方面的支持上远远超越其他竞争对手。先不说它的语法是不是复杂,但关靠这点,很多大公司就愿意用JAVA。而且,在中国这片神奇的土地上,找个JAVA程序员还不是易如反掌,比找个民工还容易呢。
上面我们说了JAVA的跨平台,但这似乎不是近几年的事了。先不管,胡乱扯的。接下来,扯扯JAVA的发展,JDK6发布到今年的JDK7,估计大家也都盼得脖子快长了。而.net呢?.net 3.5到.net 4.0只花了两年的时间,而且微软为C#及其他.net上的语言添加了很多特性。我们先撇开对微软的所谓“仇恨”,看看JAVA的发展,一对比,相对正常人都知道,JAVA的发展实在是有点那个了。很久以前老赵就抨击过JAVA复杂的语法和不思进取(详情看这里http://blog.zhaojie.me/2010/04/why-java-sucks-and-csharp-rocks-slides-final-version.html)。其实很多人都知道它说的是实话,但看到一个搞.net的这样说自己工作的语言,很多人还是忍不住在上面开骂。老赵的文章观点向来犀利。但不可否认,它的观点是正确的。JAVA确实有那么点“不思进取”。
这段时间了解过很多语言后,发现很多语言一直都在进步,一直不断在超越,而JAVA,不得不说,比起那些,它的发展太慢了。如果不是有那些企业开发级类库和所谓的跨平台撑着,很难想象JAVA的未来会怎样?很多人说JAVA就快要死了,但我觉得,这未必,什么语言都不可能近几年就消失,就算是VB,到现在十几年了,还是有人照样靠它混饭吃,而且混得比我们都好。
说到这后面,文章的主线是啥呢?其实也没啥,因为是胡乱谈谈的。上面说到我看了一大堆语言的书,说到底,对我有什么帮助呢?感觉没啥。我觉得主要还是我没到那个程度,学习一门语言停留在语法的层面上。当什么时候,你学习一门语言开始学习它的思想,它的设计,那么你就开始向大牛跨进了,而且跨了一大步。
其实每一件事情,只要你真正努力去做了,做精了,就是成功的。到时就不是你找别人了,而是别人来找你了。
分享到:
相关推荐
本“Java完整基础教程”将通过详细的讲解和实例演示,帮助初学者从零开始,一步步掌握Java编程,无论你是想要成为一名软件开发者,还是希望提升自己的技术能力,这个教程都将是你理想的起点。通过系统学习,你将能够...
《JSP源码详解——基于Java的进销存管理系统》 在信息技术日新月异的今天,企业对高效、稳定的管理系统的依赖日益增强。本文将深入探讨一款基于JSP技术,结合MSSQL数据库实现的Java进销存管理系统。这款系统以JSP...
1. JUnit:Java平台上的单元测试框架,用于编写和运行可重复的测试。 2. Selenium:用于Web应用程序自动化测试,支持多种浏览器和编程语言。 3. Appium:跨平台移动应用自动化测试,适用于iOS和Android。 4. ...
首先,我们来谈谈Java游戏开发的基础——Java环境。Java是一种跨平台的编程语言,它的“一次编写,到处运行”特性使得开发者可以在不同的操作系统上运行游戏,极大地降低了开发和部署的复杂性。要运行这个项目,你...
二分查找的时间复杂度为O(logN),这表示随着数据规模的增加,查找所需的操作数量呈对数增长。对于插入操作,无序数组的插入时间复杂度为O(N),而有序数组的插入则可以达到O(1)的理想状态。同样,无序和有序数组的...
java IO流——四大抽象类 java IO流是java语言中用于输入输出操作的基本类库,IO流是Java程序中最基本也最重要的一部分,java IO流主要可以分为两大类:字节流和字符流。在java中,四大抽象类是IO流的基础,它们...
首先,让我们来了解JavaCV的核心组件之一——OpenCV。OpenCV是一个开源的计算机视觉库,提供了大量的图像和视频处理函数。在Android项目中,JavaCV允许我们使用Java或JNI(Java Native Interface)直接调用这些函数...
《网上购物系统(JAVA)——基于JAVA、JSP、Struts和MYSQL的实践解析》 在信息技术高速发展的今天,网上购物系统已经成为了电子商务的核心组成部分。本项目“网上购物系统(JAVA)”是我作为JAVA软件工程师培训期间...
接下来,我们谈谈Java NIO(New IO),这是Java 1.4引入的一个新特性,提供了非阻塞I/O模型。与传统的IO相比,NIO更注重于通道(Channels)和缓冲区(Buffers)的使用,而非流。NIO的主要优点在于其非阻塞特性,可以...
JVM(Java虚拟机)内部锁升级的过程是指Java对象在多线程环境中通过synchronized关键字实现同步时,锁的状态从无锁到轻量级锁再到重量级锁的转换过程。这个机制是为了在多线程操作共享资源时,保证数据的一致性和...
最后,让我们谈谈Java的异常处理。Java通过`try-catch-finally`语句块来捕获和处理运行时错误,异常是程序运行过程中遇到的问题,分为检查型异常和非检查型异常。检查型异常在编译时必须处理,非检查型异常则可以...
首先,我们来谈谈Java虚拟机的主要职责。JVM负责将字节码(Bytecode)——由Java编译器生成的中间语言——转换为特定平台的机器码,实现了“一次编写,到处运行”的目标。Java SE 7的JVM在前一版本的基础上进行了多...
首先,让我们聚焦于系统的核心——Java技术。Java是一种跨平台的面向对象编程语言,以其“编写一次,到处运行”的特性而受到广泛欢迎。在这个学生管理系统中,Java主要负责前端的用户交互逻辑和后端的业务处理。前端...
总的来说,《FLEX从入门到精通——Java的结合》涵盖了从基本的FLEX编程到高级的跨平台通信技术,旨在帮助开发者全面掌握FLEX与Java的协同工作。无论你是初学者还是有经验的开发者,都可以从中获得宝贵的知识,提升你...
这篇"Android开发笔记——环境搭建"涵盖了这一基础但至关重要的过程,旨在帮助初学者快速入门。以下将详细介绍Android开发环境的搭建步骤,以及ADB(Android Debug Bridge)的相关知识。 首先,我们需要安装Java ...
此外,C++与其他语言的交互,特别是在Web开发中使用AJAX技术,可能涉及到C++与C#、Java或VB.NET的接口设计。例如,C++/CLI可以作为C++和.NET Framework之间的桥梁,实现跨语言互操作。理解不同语言的数据类型映射和...
接下来,我们谈谈`FastJson`。FastJson的性能在众多JSON库中表现突出,它的解析速度非常快,同时内存消耗低。在Android项目中,我们经常需要将网络请求得到的JSON数据转换为Java对象,或者将Java对象转换为JSON字符...
本文将深入探讨Java异常处理的关键元素——try、catch和finally,以及如何自定义异常类。 首先,Java中的异常处理基于五个关键字:`try`、`catch`、`finally`、`throw`和`throws`。`try`块用于包含可能会抛出异常的...