MyException - 我的异常网
当前位置:我的异常网» 编程 » 小弟我的编程语言学习经历

小弟我的编程语言学习经历

www.MyException.Cn  网友分享于:2015-08-26  浏览:1次
我的编程语言学习经历
越来越发现自己是个语言控。回想一下,上学期间除了课本里的ASM/C/SQL以外,自己业余时间学习过Basic/C++/AS,当然这些都是实际写过代码的:

  • Visual Basic是在Corel Draw矢量绘图软件里面编写了一个名片系统,为的是帮助一家大企业快速生成几千人的名片,后来又简单改为一个工牌系统。
  • 写C++代码之前看过几本书,包括一本讲C++基础的,名字忘了;一本讲C++编写字符窗口界面的;还有讲VC++的。这几本书看完后都不得要领,会写C++代码但做不好windows界面编程,包括Borland C++、Visual C++等,后来终于勉强搞出一个俄罗斯方块游戏。
  • Flash编程曾经有段时间特别喜欢,还用它做了一个象棋对战程序,界面动画很酷。但不知道怎么做网络编程,只好把它嵌在MFC编写的界面上,网络部分在VC里面解决。曾经还想把它写成一本书,大概写了4个多月后来觉得没劲,加上使用的WPS Office不稳定,放弃了。

后来陆续看完侯捷老师著(译)的《深入浅出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嘛,虽然也有些丑。

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

我总结下来我追求的是这些东西:
  • 语言表达能力,比如简洁性、异步编程的简单性
  • 执行效率
  • 是否方便重构,这使我倾向于静态类型
  • 语言扩展能力和DSL能力
  • 跨平台,甚至是动态物理迁移能力
  • 编译出较小的原生代码
  • 代码是否美观

很难找到一个完美的语言解决了所有问题,有时候也就是自己折磨自己,很多语言都不能在项目中使用,只能作为兴趣。

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

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

1 楼 dearplain 2012-05-01  
我也是语言爱好者,不过我一直坚持使用c。

文章评论

为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
编程语言是女人
编程语言是女人
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员的鄙视链
程序员的鄙视链
代码女神横空出世
代码女神横空出世
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
漫画:程序员的工作
漫画:程序员的工作
中美印日四国程序员比较
中美印日四国程序员比较
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
鲜为人知的编程真相
鲜为人知的编程真相
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员都该阅读的书
程序员都该阅读的书
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
一个程序员的时间管理
一个程序员的时间管理
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
那些争议最大的编程观点
那些争议最大的编程观点
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
旅行,写作,编程
旅行,写作,编程
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
每天工作4小时的程序员
每天工作4小时的程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
总结2014中国互联网十大段子
总结2014中国互联网十大段子
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员和编码员之间的区别
程序员和编码员之间的区别
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
我是如何打败拖延症的
我是如何打败拖延症的
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员必看的十大电影
程序员必看的十大电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
10个调试和排错的小建议
10个调试和排错的小建议
我的丈夫是个程序员
我的丈夫是个程序员
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有