注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

我的Programming Language学习之路  

2012-01-16 20:57:17|  分类: 唧唧歪歪 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最早从高中开始玩DOS/QBasic,Basic是个好东西,足够简单,很适合入门。而且dos年代的操作系统比较简单,没有win32那么多花花绿绿的东东。之后到了win32时代的Visual Basic,其实也是写win32 ui程序的利器,当时还是很傻很天真的年代,VB还足够简单。再之后就是.NET的出现,VB进化为VB.NET,彻底成为现代的语言,对于新开始学习.NET的人,选C#吧,看着VB.NET的语法就觉得蛋疼。记得大四去过一家做医疗oa软件的小公司,他们就是用VB开发client,之后尝试迁移到VB.NET平台,未果。虽然.NET很强大,但对技术人员的要求和理解,又上了一个新的层次。


高中后来用上了Delphi(pascal),写写小软件,不亦乐乎,最记得写了个五子棋。还有和朋友们热血沸腾做了个RPG,Delphi对于写ui应用的便利,那个时代是远超过VC++6.0的。当然,高中时期还不理解什么class之流,对于Delphi真的是热血玩儿,也不深入。Borland后继乏力,做Delphi的老大去了M$,搞了C#出来。


大学后,开始认真学习C/C++,也接触了一下汇编。那段时间,正好是C++最火热的时候,从0x98 C++标准的确立,到各种C++书籍的井喷,当时的一个误区就是想把C++的各种语言特性搞清楚,看不起C#/Java之流。C++语言特性太杂,介乎于低级语言与高级语言之间,搞得复杂无比。到现在,说到是否会用C++,我只能说,"略懂略懂"。


而C呢,想做一名优秀的程序员,C是你通向所有internal tech的必修课。至少到目前为止,想研究操作系统你离不开C,想折腾下python虚拟机你离不开C。没必要什么都用C来写,但做剖析和优化的时候,有时还是少不了它。相比C++,其实C很简单,而且经历了这么多年的发展,有无数优秀的开源代码提供学习,C学习资源之丰富,又是其它语言无法比拟的。


大学中看过一些java/C#,感觉不如C++酷,不底层。


毕业后这几年,最常用的语言不是C,不是C++,也不是C#/Java,而是一种古老的脚本语言,lpc。和C语法很像,但真的是侧头侧尾的脚本语言。lpc这个语言已经没人维护,但它真的很简单,依托于mudos,国内早起网游服务端的基础,至今还在为实际项目贡献着力量。没有 class,没有 inherit,没有 class/instance 之间的区别,只有 module,very simple~(其实还是有inherit和instance的,不过项目中不使用,简化了的语言反而更实用)。但lpc已缺乏维护,再过几年,也可以消亡了吧。与lpc最近亲的是pike(http://pike.ida.liu.se/),类库很丰富,和python已是一个级别了,不过太小众。


除了lpc,工作中也用用python/lua,写写工具,客户端逻辑啥的。python现在已是脚本语言中的巨无霸,其社区已经很庞大,成熟了。但python语言本身很优美,精简掉了所有可能的冗余语法,加上类库完备,已经是开发各种软件的利器。而lua随着WOW的火热,也称为游戏行业的另一个颗明星,从语言角度来说,lua比python更纯粹,更优美,号称"披着C语法的lisp"。不过lua比较匮乏类库,这与python形成鲜明反差。从lua/python对类库的态度,可以鲜明地看到来自学术界、工业界不同的设计风格。


这两年还玩了一下erlang。这是一门有点热又不大众的语言,但只要是做服务端开发的同学,我都推荐你把玩一下erlang,从erlang身上,可以学到如何去规划一个大型复杂的异步应用。erlang自称所有服务器程序实现走到最后,就是半个erlang,我深以为然。


最近开始玩一下C#。经过这几年时间项目的开发,才发现用C++来写大型软件是多么痛苦,维护几十万行的C++,真叫你吐血。Java/C#都是伟大的进步,python也是,让程序员从很多方面解放出来,更容易写出稳定的大型软件。对C#感兴趣,是因为mono。mono的老大一直是写ui程序的,作为GNOME的初创者之一,在.NET刚出来时,就被"用C#这种新语言来写ui逻辑"的想法震撼了,他以然决定启动mono项目,实现一个隶属于社区的.NET平台。现在的mono,已比较成熟。而C#进化到现在,已经是很接近动态语言的静态语言了。


顺带说一下lisp。这是各种脚本语言进化的终极目标,但lisp自己很难成为大众语言了。因为标准落后,用的人太少,一个socket库,不同lisp实现版本,居然用起来是不同的,除了自身是一个脚本语言,类库方面和C/C++时代没啥区别。所以我对lisp浅尝辄止。除了爱好者和那些维护老项目代码的同学,尝试lisp的人,很少了。


最后来说一下自己推荐学习的语言 :)

对于新同学,从python入手是再合适不过地选择。简单、强大,享受多多成就感。

如果工作中需要C#/Java,选其一即可,深入研究之,我觉得两者差别不大。

对于喜爱研究操作系统,学学C,玩玩linux,人生不再遗憾。

对于写服务器程序的同学,吐血推荐,看一下erlang吧。


根据自己的需要和兴趣,选择最合适的就好。That's all.

最后附上Peter Norvig的名篇《Teach Yourself Programming in Ten Years》http://norvig.com/21-days.html

  评论这张
 
阅读(1103)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017