我的编程语言学习经历

越来越发现自己是个语言控。回想一下,上学期间除了课本里的ASM/C/SQL以外,自己业余时间学习过Basic/C++/AS,当然这些都是实际写过代码的:

[list]
[*]Visual Basic是在Corel Draw矢量绘图软件里面编写了一个名片系统,为的是帮助一家大企业快速生成几千人的名片,后来又简单改为一个工牌系统。
[*]写C++代码之前看过几本书,包括一本讲C++基础的,名字忘了;一本讲C++编写字符窗口界面的;还有讲VC++的。这几本书看完后都不得要领,会写C++代码但做不好windows界面编程,包括Borland C++、Visual C++等,后来终于勉强搞出一个俄罗斯方块游戏。
[*]Flash编程曾经有段时间特别喜欢,还用它做了一个象棋对战程序,界面动画很酷。但不知道怎么做网络编程,只好把它嵌在MFC编写的界面上,网络部分在VC里面解决。曾经还想把它写成一本书,大概写了4个多月后来觉得没劲,加上使用的WPS Office不稳定,放弃了。
[/list]
后来陆续看完侯捷老师著(译)的《深入浅出MFC》、《深度探索C++对象模型》,潘爱民老师译的《COM本质论》,觉得兴趣还是在C++上,又看过《Exceptional C++ Style》、《Essential C++》、《产生式编程》、《Modern C++ Design》之类的,整个过程长达一年多,特别是《深度探索C++对象模型一书》折磨我小半年,前3章迈不过去,多次想放弃,坚持看完后倒觉得不再有看不过去的。

04年到了一家小创业公司,写过几千行Java封装Web Service,Oracle存储过程也写过几千行。然后转到编写游戏服务器,写了几万行C++。又转到视频游戏客户端项目,之前练手的MFC和Flash居然派上用场,结合VLC完成了这个项目,当然也没管什么License。后来有一个后端管理客户端程序,询问项目经理有没有快速开发的工具,他推荐了Python,于是花了3天看完语言规范和Python Cookbook,然后1星期把之前C++版的重写了,那个版本是另一个同事做了3个月的,确实感觉到动态语言的强大。在此期间也被D语言所吸引,持续关注到今天。

06年被Ruby on Rails影响,很是心动,做了很多练手小项目,然后被人拉去创业,虽然没成功,但也是一段有趣的经历。这期间js也写了一些,算是入门级。然后对动态类型语言好感降低。

07年开始做网站的后端优化、分布式存储系统、缓存系统等,写了大量C++代码,其中部分代码是使用Ruby作DSL来生成代码。同时接触了erlang,但因人员、风险等,并没有在项目中使用,却把一些思想带入到C++项目中,编写了新的C++框架,使用轻量级线程和消息机制。期间被Io吸引过一阵子,并从中学习到了Future方式,觉得这语言实现很精巧,虽然效率很低。如果我那时候看过lisp,可能不会有太多感觉。

09年在思考服务的并行优化、隋性计算、提早计算等需求时,对过程式语言逐渐失去兴趣,开始研究一些函数式语言,但并没有深入,仅限于研究这些需求的解决方案。

10年对go、nodejs等产生过一点兴趣,这两个语言都没有让我太激动,只是因为我对C++越来越厌恶,觉得go在一般情况下能够替代它。我不太喜欢要占用独立栈空间的coroutine,觉得这完全是浪费,即便是有栈增长机制也依然很丑陋。并发执行体只是一个拥有状态的对象,完全没有必要使用这样的栈。

11年倒是完整看完了Common Lisp、Scala、OCaml等语言的语法和特性,最让人激动的还是Lisp,如果不是我对静态类型有太深的感情,肯定会用它的,当初Ruby也是这个原因而没有继续使用,这就像是信仰一样,一旦有了选择,会影响终身,很难改变。OCaml号称是C++程序员最应该学习的函数式语言,本来是很不错的,不过我不断拿它和Haskell比较,越比越觉得丑陋。Scala如果是早两年学习,应该还是不少小激动,现在看来除了叹服它的语言实现以外,并没有太大动力想写点代码。

目前有兴趣的是Haskell,语法很早就看过,一直被它的一些库所吸引,比如Parsec、QuickCheck等,然后就会不务正业一段时间。专心学习是近一个月的事,越来越喜欢。也很难说它完美,对于IO,我觉得实现很美,但很讨厌把IO写成命令式风格并顺序执行,后来我想通了,不是还有Template嘛,虽然也有些丑。

在这么多语言中游离并不是我多么喜新厌旧,每种语言几乎都可以完成项目。

我总结下来我追求的是这些东西:
[list]
[*] 语言表达能力,比如简洁性、异步编程的简单性
[*] 执行效率
[*] 是否方便重构,这使我倾向于静态类型
[*] 语言扩展能力和DSL能力
[*] 跨平台,甚至是动态物理迁移能力
[*] 编译出较小的原生代码
[*] 代码是否美观
[/list]
很难找到一个完美的语言解决了所有问题,有时候也就是自己折磨自己,很多语言都不能在项目中使用,只能作为兴趣。

选择Haskell来学习,也经过了较长时间,最终决定要认真学习,还是被Haskell的各个库和代码所吸引,感觉这代码实在是太漂亮,很多库很有想象力。

虽说语言只是工具,但语言的思想和表达能力相差实在太多了,可能会影响项目开发,从生产力上说,我感觉lisp可能会最高(没写过lisp项目只是猜测),原因是它的宏太强大,其它语言要么太麻烦(比如Ruby拼字符串再eval、Haskell的Template),要么功能太差(比如C、D),这可能得益于它的语法形式简单、单一。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值