正好前段时间和老师吃饭聊起这个事情,毕业十年了,当时说起学校教学,居然还在用vc6我惊呆了,后来老师说了苦衷,大概以下几点
最重要的一点学校没开ide使用的课,课程教学内容决定了没哪个老师会在意这个,就好比工作中项目业务逻辑都没跑通的情况下,产品一个劲的纠结这个按钮放这里,这个列表行距要窄一点等等需求的时候你作为开发你会不会觉得他有病?
vc6简单容易,比起各种最新版本的vs要轻量多了(mmp好像是2017还是多少的vs居然带了unity进去我也是醉了),针对教学内容来说足够足够了,有的杠精估计要说了,那怎么不用vi,那你觉得让个大一新生自己去做compile,link他会不会懵逼?这个教育成本得多高?教学内容是有教学体系的循序渐进的过程,所以在某门课只关注本课程所需要教的内容就好,用vc6并没有什么问题,当然老师一般是允许学生自己选择开发环境的,只要能交上作业就行。
换ide课程变化的成本太高,而且非核心诉求,老师的工作不是开发,是教书,课时有限当然会想办法让学生多学一点这门课本身的内容,所以课件准备,教学内容的准备才是重点,至于ide的选择使用设置一个ppt或者文档可以用十年。花时间去整用vc6还是vs2017才是不务正业,而且最重要的是很多demo换了ide跑不动了啊,跑不动了谁来改?改了以后实验课的课件也要改,但是这种改动并没本质变化,为什么老师不能把时间花在更重要的事情上。
然后说怎么不用python这种简单易用的语言,确实国外很多学校都用python而国内却一直是c,原因是教学体系不同,多看看英文教材或者翻译版教材你会发现课本内容在教学思路上都完全不同,要变教学体系可是个大事,据老师说母校尝试换python作为大一基础课的语言,然后第二年我当年c的老师去给学生讲数据结构讲到链表发现没人知道指针,讲不下去了,直接气炸,然后跑院里一顿喷,所以你说要换那整个四年的教学内容都要换,包括所有的课程内容教学思路也要跟着换,玩脱了这个锅谁背?瞎比创新才是对学生最大的不负责。
更新一下
发现杠精太多,开口之前你们先回答一下为什么现在还大部分是ipv4,ipv6他妈几十年了现在还在推广?
继续补充
上面那个例子想表达的更换成本很高,不要盯着一门课看,从四年的学习来看,同样用不用python也是一个道理,评论里国外都用python的,十几年前我就知道国外很多学校用python,我本科毕业设计就是用python做的没学过看看文档和资料两周就能用了,还是写的一个调gtk的linux下图形界面的工程,国外用python国内用c或c++我觉得是长久以来东西方教学思维的不同,上文也说了多看看国外的教材会发现教学逻辑不一样。国外都是先不太讲概念直接由使用的场景或例子推倒出概念让学生理解,而国内确相反是先明确概念再说例子辅已大量练习来实践这些概念让学生会用,对于前者当然用python好了,但对于后者其实python并不适合,因为很多时候不会体现出需要灌输的概念。这两种教学思维是从小学起一直延续到大学的,在大学突然做转变学生是否能接受风险很大的,所以说换教学体系不是容易的事情,更不是哪个领导拍着脑袋一说换就换的,那样盲从的老师才是对学生不负责任的。而且教学课程的相关性也不是说想换就换的,好比一个几十人团队在做开发,你突然把一个公共的util给改了,上面调用的十几个项目报个小错,你在deprecated里写了替代方法,但是又并没有太多区别,还可能多了几个必传的入参,你说其他人会不会想骂人?
至于ide,我从头到尾都没说学校限定死必须用vc6,而是老师只会说用这个按步骤写程序你不会在ide使用上卡壳罢了,可以花更多时间去理解课程本身。同样老师也没必要花时间在考虑是否换ide上,因为vc6的那些坑在教学中是完全可以不遇到的,不重要的事情够用就行。
因为教育部(政治敏感)。按理讲:
现在的状态是:谁都得学C(我们学校的生物专业当年用的还是Turbo C编译器),然后大量课程都绑在微软十几年前的全家桶上。
====补充====
现在计算机广泛渗透进入各个行业,对从业人员编程能力的需求也随之出现。不过这并不是说所有编程人员都需要学C,因为他们可能根本不是程序员,而是数据分析师、机械工程师、金融风险精算师。试想这样的情景:
那我简直要日狗了。
====继续补充====
很多人对C有种蜜汁自傲,在此对常见的说法统一反驳,随时补充。
C是编程的基础。
C不是编程的基础,对任务目标的划分、对具体食物的抽象、对模糊逻辑的清晰化才是编程的基础。
虽然底层编程需要C,但一来这更多的是历史遗留原因(Unix以及很多操作系统使用C编写),二来底层操纵其实更重要的是intrinsics、编译器扩展一类的非标准玩意,远远不止是C语言本身。
其实你要是说Haskell是编程的基础,我还能赞同一下。
C有类型,脚本语言没有类型,用脚本语言入门会损失对类型的感觉。
合着只有机器基本类型才是类型?
以我最熟悉的Perl为例,你一开始入门,立即就会学到标量、数组、哈希表三种类型,以及引用类型和引用析值的概念,掌握这些类型之后,已经能完成绝大部分的日常数据分析工作。
稍微再学一点,你就会学到“标量会自动转换数值和字符串”的概念,以及“浮点数是有精度的,累积计算会有误差”的概念。
稍微再学一点,学到Perl的对象设施bless,你立即就会得到“对象就是绑定了操作的一组数据”这个基本而重要、但国内无数傻逼教材穷尽整本书也讲不明白的概念。
在这个过程中,我不认为学习者会有任何损失。相反,由于循序渐进,效果会更好。
语言只是工具,都一样的。
一样就有鬼了。真要是“都一样”,那人们开发出那么多种语言,难道是闲的?
同样的功能在不同的编程语言里,易用性是非常不同的。对于项目开发,这会直接影响开发范式。对于初学者,这会决定他同时需要面对两三个难点还是几十个难点。
C入门之后,再学别的语言会变容易。
反之,你随便学什么语言——哪怕弱鸡如shell脚本——然后再学别的语言,也一样会变容易。
但区别在于:你以平缓的学习曲线入门,还是以陡峭的学习曲线入门。
人的精神力、注意力是非常有限的,关注了一个难点就会忽略另一个。所以理想的学习方式,是允许初学者逐个接触新概念,并逐个掌握。这不但不会耗竭学习者的精神与耐心,而且会带来及时的正反馈,可以鼓励学习者继续坚持下去。反过来,如果在一个阶段的学习里,你必须要同时掌握10个新概念,否则整个东西就会崩溃,那是一种什么样的体验?
这是几乎是最基本的教育理念,所以我很难理解这里面有什么难以理解的。
XXX语言也是由C实现的。
“B由A实现”和“A的概念是B的概念的基础”,以及“A的用法是B的用法的基础”完全是不同的事情。