最近比较多的思考编程语言的优劣,以及编程语言的发展轨迹,由于自己对编程语言的历史并不是了如指掌,所以肯定有很多漏洞,既然有想法了就要记下来,不能让它们白白的流逝了。
c语言其实我用的并不多,是大学里正统的学习过的一门语言,学完这门语言后,虽说是新手,可接触其它语言的时候总是用c语言的习惯去写程序。比如说,遇到包含文件就很慌张,比如会考虑函数的包含顺序,比如说分不清数组为啥要有固定初始化长度,比如说不明白为啥申明个变量要用malloc等等。
后来工作了直接用到的c++,c++是从c语言上发展过来的,本来是一族,但是c++有更多的限制,并且加入了继承和虚函数,模板这些概念。c++是一门非常复杂的语言的,c相对来说简单。c比较灵活,放心的让你去做任何你想做的事情,比如类型转换,如果你强转的话,c编译器是没有warn呢,比如说结构体,你可以任意访问结构体内的变量,但c语言里只有数据结构,函数都是全局变量。c++里有public,protected,private
访问限制符,你必须很清楚成员变量,成员函数具体的责任,才能很好的划分访问限制。c++类设计的时候遵循高内聚,就是说c++里的成员变量和成员函数都有很紧密的关系。通过类里的函数,和变量解决好问题。尽量少的依赖外部类和方法,少抛出接口。而c语言里全部是全局函数,可以任意用你想用的。c++里还有const 关键字,更加为语言加上了枷锁,告诉你什么东西可以修改,什么东西不可以修改,如果你想传递我,必须传递给一个const的类型才可以。比如c里的宏是非常灵活的,想怎么编写都可以。模板的话也是你必须传入特定的类型,然后针对特定类型进行编程。
说了这么多,给我的感受就是,c语言是信任程序员的,所以用c写项目对程序员的要求更高,因为没有限制,所以很容易设计出拙劣的框架。而c++里有各种限制,并且兼容c语言,所以你必须的深入学习c++才行,才可以用到语言发明者bs为了避免程序员在设计上,在代码重用性上,在代码变态层次上的理解,才能写出好的c++程序。因为c++发明就是因为作者用c很不爽,因为c总是当好人,不告诉你的缺点,所以你很容易陶醉到自己的设计里,让你的坏习惯肆意的蔓延,最后受伤的人还是你。而c++里通过这些特定的概念,最起码提醒一下你,那些操作是危险的,那些设计是好的,那些常用的函数需要抽象。