Hi, 如果有任何想法与我沟通, 请用: lifr_nj 在 msn.com

关于c++和其他一些语言的废话

上一篇 / 下一篇  2007-07-27 11:03:25 / 个人分类:dev

关于c++和其他一些语言的废话

我的语言学习历程是这样的,最开始在大学里学习c,然后自然发展到c++。c语言做过比较大的项目,开发单片机上的驱动。c++没有做过大项目,当时觉得学得还不错了,现在回头看,除了设计方面不说,即使c++语言本身,也有很多地方也没有搞清楚。

大学毕业一年后,开始转到Java。java是一门无论语法还是库得设计都很清晰的语言,Java特别适合开发大型程序。它的这些优点都说的太多了。在它这个级别,可能c#是唯一的对手,不过我对c#还一无所知。

这几年,也学习了一些脚本语言,用的最多的是Ruby和Javascrīpt。我个人观点是,Ruby是脚本语言里设计最好的语言,当然相比perl和python它出现最晚。Ruby的语言我觉得有两个特点最让人赞叹
1)核心小而精干,想想一个事实是,它的private和public竟然都实现为一种函数,而不是语言本身的内在特性。这就使得在它上面添加新的特性比较容易,不会侵入语言核心。
2)Ruby可能是脚本语言里面对lambda支持最精彩的,lambda本身的特性使得很多问题有了优美的解决方式。想想它的Collection库。

相对于Ruby,perl的优势是互联网上庞大的library,但它不愧号称hacker的语言,语法实在是不敢恭维。

Python最大优势是“看上去更简单的语法”。但这点优势也在被它自己慢慢丢弃。看看它不断往语言里面加入的东西。

在Web client端运行的语言你几乎没有选择,只能是javascrīpt。不要对我说还有VBscrīpt,我认为VB这样的语言在这个世界大行其道简直是一个奇迹,一个MS用它的垄断和金钱砸出来的一个变态的奇迹。javascrīpt据说是最被低估的语言,c的语法外衣,函数式语言一样的动态特性。javascrīpt可以写出一个c程序员永远想不到的代码样式,看看prototype库。我建议我们都用prototype库,用它的风格写代码。一个ruby程序员会发现它非常熟悉。:)

对函数式设计语言也有相当的兴趣,这是一个完全不同的世界,我还是初学者。对一个语法完美主义者来说,scheme肯定是最佳学习选择,但实用的机会不多。能接触到的最多的是emacs的elist和autocad的visual lisp。这些场合的lisp都是作为象sh一样的脚本调用application环境的命令,不知道高阶函数和延迟求值这些特性做应用开发能不能用上。

说了这么多废话其实都是因为这几天又重新学习c++,总是把c++和java对比,感触很多。最主要的感觉有两个,
1)c++太复杂。它支持4种风格的设计:c语言风格,抽象数据结构(Abstract Data Type), 面向对象设计和范型程序设计。单独的每一种都不算复杂,但要支持了4种风格,不可避免的c++成为一门复杂的语言。听说它的设计者都不指望人们能完全弄懂它。我想对应用者来说我应该,不排斥任何一种,但尽量使用最基本最简单的东西。在某种实现方式可能变得复杂或使用高级技巧的时候,保持警惕,宁可多写一些简单的代码,而不要”通用“但”精妙“的代码。

2)内存管理。内存管理可能永远是c/c++程序员的恶梦。为人称道的Loki的smartpointer可能设计很高妙(其实我并没有真正读懂),但我认为它使用了对我来说太复杂的技术。我的原则是首先考虑在栈上申请对象,因为系统会为我释放对象,如果要在堆上申请对象,那么设计一个factory,在同一个地方申请和释放对象。

相关阅读:

TAG: 语言 dev

 

评分:0

我来说两句

Open Toolbar