前几天在论坛里看到一个问题,下面有个这样的回复。
[Quote=引用 21 楼 的回复:]
C++语言确实能创造出各种奇葩。不知道这是它的荣耀还是悲哀。
[/Quote]
他这个回复对楼主的问题没有任何帮助,因为这个问题不是某种语言的问题。
所以看到他的抱怨的时候我就想驳一驳他,但是后来只顾帮楼主解决问去了,没有回复他。
楼主的问题是“规则和需求”引起的。
从最低层次来说,如果没有任何需求和规则,用机器码随便写什么都行,这样就没有编译器在中间搀和,就不会出现楼主的问题了,只是机器能不能按照需求执行所写的机器码而已。这样也就没有语言一说了,也不用抱怨某某语言是奇葩了。
向上升一个层次,然后有了汇编程序(汇编引擎,可以错误的理解为汇编语言的编译器),为了让汇编程序能认识你的源代码,所以定制了少量的语法规则,但本质还是按照处理器的工作方式规定的,把不同的机器码用不同的可读的指令代码来标识。不要说汇编很难,只是用汇编开发【繁琐】。【语法规则相对简单,开发过程繁琐】
然后有了C语言,一切蛋疼的事都从这里蔓延开了,C语言规定了“语法规则”,这个规则相对与汇编语法规则来说复杂多了!C语言的语法规则比汇编繁琐,但是开发过程却比汇编轻松了许多,因为C编译器为你做了很多繁琐的事。【语法规则的繁琐,开发过程相对轻松】
然后有了C++语言,C++不但语法规则比C语言更加繁琐了一点还引入支持了【面向对象思想】,先抛开面向对象思想来说,C++的语法比C语言增加了一些,关键字增多是肯定的,其他增加的特性我也不列举了。C++开发过程比C的开发过程没有太多的减少工作量,但是也有改进。再次印证了【语法规则越繁琐,开发过程相对越轻松】
然后加入【面向对象思想】来说,面向对象思想是可以完全脱离编程的一套抽象规则。经常听人说什么什么语言是面向对象的,其实很多语言只是支持面向对象,并不是说这种语言就是面向对象的(你钻牛角尖说SmallTalk就是面向对象的我也无话可说),有了面向对象思想的支持,开发过程变得何等轻松了!还是要说【语法规则和编程思想越繁琐,开发过程相对越轻松】
再到后面JAVA,C#,我就不说了,思想也已经被引入编程了,为了更加提高开发效率,牛逼的公司或者组织干脆就先替程序员实现一些基础的功能模块,然后STL啊,Boost啊,MFC啊,ATL啊,VCL啊,dotNet啊,[JFC啊,JavaAPI啊](java的类库我还不知道叫什么确切的名字)等等一系列的类库框架就铺天盖地的出现了……然后程序员就累死在学习这些类库框架的过程中了。