欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Python 在编程语言中是什么地位?为什么很多大学不教 Python?

程序员文章站 2022-04-17 16:02:36
...
MIT使用python作为导论课的教学语言。

回复内容:

首先,大学教材更新速度慢是真的,只要在大学图书馆里看看Access和VB书的数量就知道了。当然,有些人说大学学的是基本能力,但我觉得这个解释很勉强,因为学不学基本能力跟学不学新东西根本不是矛盾的,新东西就不能学基本能力了吗?

然后,自学Python确实是完全没问题的,但我认为除了正儿八经的CS你好好学学C/C++啥的,别的都可以用Python来入门。现在大学非CS专业的情况是什么样的呢?一门课下来,70%左右的人不知道编程为何物,甚至对此产生了恐惧,还不如学Python快快乐乐地了解基本理论和方法。

最后,对于非码农而言,Python是日常真正能用的工具,用Python代替VBA操作Excel、用Python写个小爬虫从网上采集一些数据、用Python进行小规模定制化的自动测试,都是非常给力的。 我觉得楼上各位说的挺好,但都是“作为资深码农,如果我去教大学生,为什么我会教c”。远远高估了大部分大学教授和教研组的责任心和水平,其实还有别的原因

实际上作为本科生的老师,他们的实践水平是远远不能和一线人员比的,对于大部分c语言老师来说,会python的大概不多,不用说主要精力放在教学评估上的老师,很多老开发者都还在执着于mfc。

更重要的是,更换一个教学语言对于大学来说,太麻烦了,他们现在还在用vc6.0教学。(当然,教那点东西它确实够用了) 英国王尔德说过
真正有价值的东西 学校里没人教你(意译)


  • 原文:Education is an admirable thing. But it is well to remember from time to time that nothing that is worth knowing can be taught.
教育事業是值得欽佩的,但請不時想起:並沒有什麼值得知道的事是能夠被傳授的。 大学也不教PHP的,大学能教会怎么学习就不错了,Python真的很简单,有学习能力的学生很快就可以掌握基础 大学学习的基本设计思想,老师教授一两张语言即可,关键自己得去钻研,看自己喜欢什么就去多看多练习多钻研才可以 真的不明白为什么楼上要纠结大学入门课程教什么语言,对于入门来讲,语言知识一个桥梁,更多的是理解理念和,楼主所为的MIT拿python作为导论的语言,对于零基础或者没开发经验人来讲,我拿Ruby python,C++ 甚至java C #作为导论的语言其实没什么区别,导论课的核心在于导论,在于给没基础的人讲什么是数据结构,什么是算法,什么是基本的数据格式,内存,线程这些东西一类的,这门课就不是在教什么语法,更不可能是框架什么的东西,说白了就不是在教开发。至于开发,我认为有底子以后看个人兴趣自学了,有了底子上手什么语言都快。高等教育是一个引导,而不是说教你什么学什么, 如果说就为了学个语言,用会某个语言,不深入理解然后去做点东西就满足了,那还不如去北大青鸟上个JAVA python速成班来得快。说到底,高等教育不是功利性的教育,但很多学生没有理解到罢了。 Python在高级语言里面经常和Ruby、Perl拿在一起做比较。所以要看看Ruby和Perl或者Lua的地位,也可以知道一点Python的地位。

Python应该是定位于快速开发,作为低级语言粘合剂的脚本语言。

如果要看编程语言的地位的话,可以看看编程语言排名
sd.csdn.net/a/20110711/

python还是可以排在前十的。

国内的互联网企业,从最老的金山,网易,到新进的豆瓣,有很多使用Python的公司。应用范围也很广,从服务端后台、工具脚本到游戏客户端开发,非常多。总的来说,依然是应用非常广泛的。

为什么很多大学都不教Python呢?
个人觉得有两个原因:1 Python是可以自学的,比起C/C++来说简单多了;2 大学的教材和课程更新速度远远不及技术发展的速度。 刚毕业,正好我接触过各类背景的同学,从C/C++/Pascal/Java/Python入门的都有,讲讲我的感受,求轻拍

先讲个题外话:不要太低估国内大学计算机系的水平,国内比较好的大学开设的课程,其实都很紧跟国外的教学趋势的,前些年的Perl,最近的Python和ARM、hadoop,几乎都会有对应的课程。所以也可以不用那么愤青啦~

其实交大从去年开始电类专业的程序设计思想与方法就从C++转向了Python,用的教材是Core Python Programming. 基本上现在的格局是:
电类专业:一学期Python + 一学期C++
非电类专业: 一学期C++?
然后后面要用什么语言就自己去学吧,Java也好Verilog也好Haskell也好学校都不教了。

好处呢就是一开始Python的确比C++好上手啊。
坏处是:Python是一门好语言,但它不适合教学,特别是不适合电类的教学。结果是学弟学妹们并不是特别适应:

一方面,国内的硬环境,是除了计算机和生物类,几乎没有人大规模使用Python——对于很多行业内仍然在用VC6/MFC写界面的电气类学生,你教他Python,他还是要再回头学C++。更进一步说,由于C++的教学时间缩短,而人们又离不开C/C++——起码操作系统课要用,写ARM程序要用,所以反而使得新生没有办法专心掌握一种语言。

另一方面,Python并不适合入门:

Python之于C++,并不像是Lisp之于C,是计算模型的不同导致的简化。相反,Python和C++的计算模型都是命令式为主的,而Python的美好,在于自然而隐藏了很多细节,像自省啊词典啊动态化啊。但是Python本身的计算模型是比较杂糅的——有一点过程、有一点对象、有一点函数式。这就要求编程者要选用合适的方式来实现自己的方法——如@莫宇诚 所述,这是很实用主义也很精彩的设计。但是命令式的计算模型和强类型系统决定了,这部分的复杂度并没有消失,只是隐藏了起来。理解这些复杂度,是能够顺畅使用Python的前提:我正在操作的是什么类型?这个for语法隐式的使用了哪个对象的迭代方法?方法有没有默认参数?

而偏偏,新生是很难理解这些的——在C语言里明明白白的写出来,都有很多人头痛,不要说藏起来隐式调用。就好像C++里的流,不深刻理解模板重载和迭代器,根本不会理解这东西“为什么能这么写”。

所以学Python和学C++的时候,都会有很多学弟妹惊讶的问——呀,为什么这个地方能这么写,不能那么写?我真的很难解释——因为这些问题,往往牵扯到类型啊对象啊继承啊——恰恰是语言的简单背后藏着的那些东西。

=========================

所以对于新生来说,我觉得入门的语言要的是简单:这种简单,不是指代码量上的短,而是指思维、语法和计算模型上的简单:让新手可以集中注意力理解少数几个概念,不需要纠结于很多惯用法啊隐藏的细节啊:那是给熟手加快进度用的,不是给新人学习用的。所以我觉得Python/C++/Java这种大型语言,都不适合入门——太复杂,太难掌握,最后只能学个皮毛,还不如教一种学生能吃透的语言,以后触类旁通。C/Scheme,在我看来是很好的语言:它还算好用,而且模型简单,学生容易彻底理解。日后比照着学习其他更加抽象化的语言,也更加容易。

至于C的缺点,是可以通过教学来改正的——教育学生合理的抽象,适度的隐藏,学会使用迭代和递归。而我觉得这,才是程序设计导论课区别于C++语法课的关键所在。但是很遗憾,不管使用什么语言,能讲到这个层次的老师,都太少了。(学生也不爱听,他们只关心怎么能做大作业,实现更多的功能)

=====================

其实MIT自己也认为现在学生用Lisp入门不太好,这里有一篇文章引用Sussman的话解释了原因。

cemerick.com/2009/03/24

总之,语言教学这件事,重点不是要赶时髦,而是要接地气。 想想大家为什么用 Python。从语言上说,Python 并不够 clean。目前还有 2.x vs. 3.x 的分歧。从工程上说,Python 的集成性并不比 C 好,因为业界有很多库还只是 C 接口,用 Python 必须有一些封装。大家用 Python 是因为它的资源能够帮助很多人解决问题。

但是这个「Python 是因为它的资源能够帮助很多人解决问题」的问题不是大学生面临的问题。大学生面临的更多是 big, clean problem。这种问题需要逻辑纯洁的方案,或者完全形成标准的方案。比如学语言用 C,学计算用 Lisp,学 kernel 用 Linux, BSD 都是没问题。但是 Python 属于战场专业工具箱,应该等等。 编程范式,设计模式,MVC,软件开发方法和思想这些才是应该教而没有教的东西,编程语言都是些小角色,完全可以穿插到里面作为一个章节或一两个课时的内容。偏偏国内的很多高校,学了一个学期的java,对接口interface的存在充满疑惑,甚至很多学生还以为面向对象编程中的封装和信息隐藏是为了保密(让源代码不被泄露出去!)。
相关标签: python MIT