初学者是学习C语言还是C?
C++则应当成为计算机相关专业初学者的第一门编程语言、至少也应该是其中之一,C排在C++之后,理由:
1:C++的内存管理相对于C,对于初学者来说有非常重要的改进。C++相对于现代不少有所谓垃圾回收特性的语言,的确比较简陋,但是其自带的类的构造和析构只需要学一点点就可以给初学者级别的程序提供足够的内存管理支持。
2:编程泛型多,学一C++个就相当于获得了:C风格的命令过程语言 + 基于类的面向对象语言 + C++11标准后的简陋的函数式语言,一举三得。值得一提的是,每一个新风格的叠加都是在现有系统的基础上实现(比如设计C的时候根本不会想到还会扩展为C++,而C++必须高度兼容C),这是一个非常有挑战的工作,C++之父Bjarne Stroustrup的《The Design and Evolution of C++》就描述了部分C++语言设计的过程,非常有价值。
3:基础库屏蔽了大量初学者容易出错的细节,以STL的string为例,这个库虽然简单,但是居然在C之上搭建的C++中实现了和许多现代的很高级的语言使用字符串一样的体验。换做是C,很多初学者就不太容易搞明白strcat, strcmp, strcpy等等那套几乎针对内存操作的字符串处理机制是怎么回事,再结合例如缓冲区溢出预防,正确分配和释放内存等等问题,学习曲线会很陡。
4:编程语言特性多不代表你必须学完全部特性才能开始应用。C++那么多特性怕是不少C++的实现者都不能说自己完全“精通”,对于初学者来说,学会对初学者最友善的,最简单的那部分(STL,基本的类)已经能帮助解决很多问题甚至开始写一些小型软件了。
5:不过分脱离底层,计算机专业得用更加接近所谓“底层”的语言,“底层”值的是了解我们这个世界最流行的机器架构中,数据是怎么在内存中流动的,高级语言写出的一些语句实际在机器中执行大概要经历什么过程,以维基百科里快速排序词条里的某所谓高级语言写出的快速排序为例:
sort [] = [] sort (pivot:rest) = sort [y | y <- rest, y < pivot] ++ [pivot] ++ sort [y | y <- rest, y >=pivot]
从代码字面看来,算法的思想的确描述得很简单,但是如果直接给初学者看这段代码,初学者如何想象它为什么叫“快速排序”?这一条实际上跟第三条略微有点矛盾,不过参考第四条,初学者可以在学习的不同阶段自由选择已经掌握的特性。
综上所述,C++是计算机专业初学者的第一门编程语言的最佳选择。
如果想了解更多it知识欢迎关注我哦
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有