为什么国外本科学的第一门编程语言通常是Python或者JAVA,而我国大部分是C

这是我国软件教育理念比较落后的表现 。
目前 , C语言的年龄已大于很多在校学生了 。在诞生之初 , C语言是为了取代臃肿晦涩的汇编语言、提高编程效率而出现的 , 当时的计算机硬件还停留在较低水平 , 常需要程序员直接控制硬件 , C较好地满足了当时的需求 , 但不得不说 , 那时的软件开发、应用的“层次”也非常之低 。举个例子 , 想在屏上实现一段简单动画 , 都要写上N多行C代码 , 而现在用Python、Java可能只需几行!
不可否认 , 从学习理论的角度看 , C语言虽麻烦 , 但学好后确实能帮助学生更好理解计算机软件编程及运行的原理 。然而 , 时至今日 , 计算机硬件、软件水平已发生了天翻地覆的改变 , 应用领域也得到了前所未有的衍生 , 还像以往一样让大学生去“啃”C语言就有些不合时宜了 , 为什么这么说呢?
业内人士都知道 , 目前除部分嵌入式开发需要C , 其它“高级应用软件”的开发早已全部用上了面向对象(OOP)、甚至是更加高级的语言了 , 究其原因:随着计算机硬件能力飙升 , 来自应用场景的需求也日益复杂 , 像C这样老旧的设计观念根本无法满足了!尽管C语言是“近乎万能”的基础语言 , 尽管它能直来直去玩硬件 , 尽管它的模块化设计是OOP基础 , 但面对今天的开发需求 , C已经“力不从心”了 , 这必然导致在校学习C与现实需求存在明显脱节的问题 。
此外 , 零基础的学生学习C存在比较大的困难 。我们的高中阶段几乎没有像样的计算机教育 , 很多大学生在不太明白计算机基本原理的情况下去学C这样的“底层语言” , 必然存在“认知障碍” , 在短短一个学期内 , 是无法很好掌握这门语言的 。实际上 , 很多包括计算机专业在内的大学生到了毕业时 , 对C语言的理解仍是比较模糊的 。
反观Python、Java、VB之类的OOP语言 , 语法简单 , 对象结构直观 , IDE界面友好 , 在各自强悍的编译器支持下 , 做到了轻语法、重功能、高效率、多应用 , 这是C语言无法达到的 。微软的VS开发平台是一个标志性开始 , 从上世纪90年代开始 , 在微软OOP技术支持下 , 软件开发、应用、市场携手共进 , 软件生态进入一个飞跃发展期 , 也是软件业有史以来最好的“黄金时期” 。C语言呢 , 尽管进化到了同样支持OOP的C++ , 但想用好它真的太难了!
经过这数十年发展 , “软件大厦”现已达到一个顶天立地的高度 , 而我们的学校呢?仍在让学生孜孜不倦地在这栋大厦的底层徘徊 , 难道不知道让他们抬起头、往上走吗?如果学校不行 , 那么 , 有志于软件事业的学子们 , 你们自己开始吧!
这也不能怪学校 , 还是因为我们教师队伍里面人才太少了 。一个教师一个月多少钱?一个高级的Java程序员一个月多少钱?
所以就造成一个结果 , 厉害的程序员在公司 , 普通的程序员在大学 。当然厉害的程序员做老师的也有 , 但毕竟是少数 , 这就是社会的现实 。
其实学编程 , 学的是思想 , 而不是某种语言 , 在学校里老师也只能教你基础的if、for语句 , 至于能不能玩出花样来 , 就看你自己了 。
我是计算机专业毕业的 , 我把C的课程学完之后我其实是懵逼的 , 因为我无法想象我们平时在用软件的时候 , 是如何在if、for这些语句中实现实际功能的 。
我只会运用这些语句来做一些计算 , 要开发一个程序从来没有想过 , 我认为老师也没有教过 , 但老师说他教完了 。
后来我参加工作实际做了项目才知道 , 老师的确是教完了 。任何程序都是在这些if、for语句里面取值 , 把中文转换成数字 , 把字符串转换成数字 , 编程其实一切都是和这些数字打交道 。
C和PYTHON我都用过 , 其实C就像武林里的“名门正派” , 招式一板一眼 , 非常拘束 , 但对于编程思想的基础会打得非常扎实 , 对今后学习其他语言非常有帮助 。