一。变化的是形式,不变的是什么?
首先,语言怎么变化,怎么更新换代。数据结构和算法是相对独立的。而语言的差异在语法部分也趋向于借鉴或者照抄,有些只是一个壳(比如动态解析语言),体现在一定意义
的运用方向的封装。所以学习编程,首先是学习好类c语言描述的数据结构算法等。而在不同语言的实现中大同小意。现在看来一个系统高层属性的抽象更显系统的独创性。比
如把一个1G的数据块,怎么组织,怎么快速访问,插入,删除,排序,检索,算法是可以脱离编程的具体语言而用自然语言描述的。学好这个,才是一切的基础。当然,计算机
发展并不算长,而外界的事物我觉得更多的应该为机器模拟作借鉴。其实栈,队列,数组,图,树,这些都是现实存在的数学模型的抽象,真正的人才不光是从书本的章节照搬
来运用。更多的在解决实际问题上,从现实世界得到更多启发,发明发现更多模型和解决方案。有人说,程序员如果还没开始作自己的封装或者创建类,框架,那他还在一个入
门阶段。是否是这样呢?
基本算法表现的就是现在的系统库中,java实现了完整的基本算法。所以别人用起来不费劲。而c++行动似乎迟缓了一点。当然更高层次的数据组织,是从解决一个问题的全部
实现过程,所以比基本算法我认为要困难许多。而且需要丰富的经验,非书本能得来得。这个只能靠积累,靠其他人的积累和贡献等。
二。自学的实质。
很多人其实是就近原则,公司用什么语言自己就学习和强化使用某种语言。这是不错的选择。因为语言在用,英文在此,编程语言也在此。
任何语言都是古老语言的发展分支。就像动物的进化一样。所以现在世界上所有语言,任选一种学会,长期使用,都对其他语言的学习和运用有一个先遣的作用。好在我们现在
的学校教育,普遍能作好基础部分的教育,比如c/c++数据结构,计算机原理。另外一个欠缺或者是弱点就是自学能力的培养不足。学校教育老师不敢脱离教材,不敢太多的占
用课堂时间,依照我在七个工厂工作的经验,和在好几个行业的有跨度的跑马观花,我感觉(不光对程序员)是对所以技术方面的人,重要的是接触机会和自学能力。说白了,我
没念过计算机,但我能从数字电路和模拟电路中走出来。依靠以前的一点基础,也能看完计算机专科的教材。那我们的开设专业除了基本教材外,老师应该给学生什么,我认为
是引导并提起兴趣。应该兴趣才是出了学校后最好的老师。而且现在知识过时得太快。不充电,容量再大得电池也会放电完毕。而自学的方法是很多人比具备的。我有一个小故
事:一个朋友他不会编程。看着我用pb,他想学习。我说那就开始吧。很简单,你花两周作一两个界面出来,然后有兴趣了,没惧怕感之后,在学复杂的。而对计算机基础不懂
也没关系,倒过程学习法,也能够根据兴趣逐步引导你深入学习一些基础。结果是,现在sql的子查询都还有问题,pb还作不出一个界面。如果凡是希望得到别人的指点,一点
主动性都没有。那怎么叫自学呢?不学而居高位于人,怎么可能呢?而我以前有文章讲述自己学习编程后半年接到第一个单子,因为水平不行,每天到深夜三点,四点,而八点
钟还要起来上班,而工作是网络维护和erp维护。我想这个朋友下的苦功夫是远远不够的。之前花两年多学习protel也是一样,没人来教你,也没人非要把你教会,让你多赚钱
,没有这样的人。所以靠自己嘛。
三。语言的选择。
我的看法。语言不过三。过多而烂。多种语言的语法容易把人搞混淆,而且常抱怨一种语言。你看别的语言里实现多简单,在这种语言里怎么就那么麻烦!
c++的天才说,c++语言创建的程序是最贵的。这个事实不会容易改变。
我考虑的就是两个层面:
1。跨平台性。如果您打算到四十岁还可以有成就,那就选择跨平台好的语言深入学习。而vf,vb,c#这些适合卖青春的年青人。而某天你想作一些能体现自己学识和经验的东西
,并对平台不挑剔的话,那语言就很关键了。现在除了c/c++/java外。似乎没好的选择。动态脚本当然不适合产品。对商业版权保护不行。
2. 机器编译,中间码编译,和动态解析。
我觉得就是要这三门语言各选择一门深入学习。因为都会有它使用得到的地方。而且这三种语言的特点和思维方式,有助于改变人的思维方法。其实每一种语言的创立都是有它
独特的思维和运用环境的。
3.如果想成就一个自己的产品的话,就是用自己最熟悉的语言来实现,因为你已经了解了它的内涵。对熟悉c++的人来说,用c++实现比用python简单。
4.宁缺毋滥。人的精力有限。不要跟着商家的商业宣传走。现在很多学校都认为教计算机最重要的是原理,数学,算法,结构,汇编/C/C++语言。而不会认为在学校阶段应该教
vf,vb,c#因为他们都是大同小异的。而现在除了c/c++/java/以及以前的一些古老语言,有着良好工业程度外,其他新兴语言变化和发展非常大,不适合学习也不适合教学。
从这个表我们可以看到。像微软这样basic,vf,vb,vb.net,vc/CLI,c#的多变政策,不得不担心程序员的精力都耗费在大大小小的差异化的学习上了。所以很多人认为,除了工作
语言外,倒不如捡一样自己喜欢的语言,深入仔细的学习。深入以后,仍然能做出许多自己精良的程序。
这个问题为什么值得思考。但凡过了28岁,还想有所收获的话,自己当老板或者开发自己的产品,则上面这个问题就不得不思考。ajax来了,css来了,wpf来了,xml来了,ror
来了,太多的繁华。终于都不是自己想要的。有经验积累的人还是要在自己已经熟悉的领域深入下去比较容易实现。看大势而不随小流,看中基础,看中积累,并在积累上深入,倒有可能有自己的建树。
tioble的这个表里,我们看到自己的选择并不多。我想这个里面哪个有前途,哪个对你而言比较熟悉都是一目了然。但是这个也要结合你辞职以后,或者创业以后要从事什么工作来整体衡量,学了的东西完全丢掉是痛心的,我已经有类似的经历,所以请大家仔细选择。想想以后,想想长远。
排名 |
去年 同期排名 |
变化趋势 |
编程语言 |
占有率 |
变化幅度 |
等级 |
1 |
1 |
平衡 |
Java |
22.377% |
+1.17% |
A |
2 |
2 |
平衡 |
C |
17.430% |
-2.04% |
A |
3 |
6 |
上升三位 |
(Visual) Basic |
11.195% |
+3.44% |
A |
4 |
3 |
下降一位 |
C++ |
10.254% |
-0.26% |
A |
5 |
5 |
平衡 |
PHP |
9.639% |
+1.77% |
A |
6 |
4 |
下降两位 |
Perl |
5.313% |
-4.57% |
A |
7 |
8 |
上升一位 |
Python |
3.071% |
+0.19% |
A |
8 |
7 |
下降一位 |
C# |
2.683% |
-0.80% |
A |
9 |
10 |
上升一位 |
Delphi |
2.162% |
+0.40% |
A |
10 |
9 |
下降一位 |
JavaScript |
2.019% |
+0.10% |
A |
11 |
11 |
平衡 |
SAS |
1.986% |
+0.69% |
A |
12 |
13 |
上升一位 |
PL/SQL |
1.151% |
+0.19% |
A |
13 |
28 |
上升15位 |
Ruby |
0.804% |
+0.54% |
A-- |
14 |
21 |
上升7位 |
Visual FoxPro |
0.631% |
+0.20% |
A- |
15 |
15 |
平衡 |
VB.NET |
0.619% |
-0.06% |
B |
16 |
14 |
下降2位 |
Lisp/Scheme |
0.586% |
-0.10% |
B |
17 |
12 |
下降5位 |
COBOL |
0.561% |
-0.48% |
B |
18 |
18 |
平衡 |
Ada |
0.554% |
+0.05% |
B |
19 |
19 |
平衡 |
Pascal |
0.510% |
+0.02% |
B |
20 |
29 |
上升九位 |
D |
0.456% |
+0.20% |
B |