Python 现在这么火,国外有些大学基础也是 Python,为什么国内大学还在教C 语言呢?
程序员文章站
2022-03-27 13:23:21
...
补充:看来python确实是一门很火的语言,大家的关注度如此之高!根据各位知友的回答,python以其简单易学,容易上手的特性,作为入门级语言,给我这样非计算机专业的同学作为兴趣语言或者工具语言,是非常好的。前不久和同学们交流中得知很多人也在用python做计算,虽然我们水力学专业比较偏向于实用fortran进行编程计算,但比起python,繁琐的基础编程还是挺费时费力的。也有同学使用matlab进行编程计算,我想这跟python有同样的原因。
其实我提这个问题的原因,也在于现在的语言工具很多,且都好用,也有很多人用。我大一学习C的时候确实感觉到困难,一来是自己学习的我积极性不高,二来实在提不起兴趣,最开始的几节课没听懂,后面就跟不上,也不爱学了。各位知友的分析也确实点中要害,羞得我掩面。
还有一个问题,就是今年刚学fortran,有人跟我说,因为计算速度快,做科学计算用的多,当然我们水力学也一直用。但是也有同学讨论说其实在计算速度方便,主要是算法优化,比如matlab,只要循环越少,速度就越快。利用它自带的函数,进行矩阵计算,速度也可以很快的。在这里也想向各位万能的知友请教一下,matlab中,能利用自带函数,进行矩阵计算,避免循环,从而提高计算速度的例子。
本人既是知乎新人,也是编程菜鸟,问的问题如显低级,拉低各位答友逼格,还望见谅!
国内的大学普遍来说教材更新确实是慢,这个没什么好洗地的。不过真的编程入门换成Python并不等于教学水平就一定提升上来了,别的不说,单说拒绝C是因为难学,这个想法就更糟糕的多…… 别的学校我不清楚,但是就我知道的几个美国的学校来说,虽然python是挂在CS下的,但是一般都是给其他系学生选修。这也是为啥python的课号很低,甚至比Java还低,让大家以为这个是CS的入门课,其实不是啊。大家可以看看,很多有python课的学校CS学生的必修课表里面根本就没有python啊,都是从Java开始的。哦,顺便提一句,C确实是必须,但是C++并不是,学C主要是为了上后面的OS,network等课。C++对于教育来说意义并不大,美国的software development的课都是用java的上的。
其实这里就可以看出,美国本科并不会以教编程语言为目的而教某种语言,教编程语言都是为了之后课程的学习而打基础的。仔细想想大家就能明白,Python学完之后对CS之后课程的学习基本没有啥好处。你说是要用python来学data structure,system programming,还是compiler啥的?Python确实很强的,也很好学,但是它太高level了,和底层已经脱节了。真正用Python的人遇到需要,第一反应是去找有没有现成的lib而不是自己写一个,但是这一点对于本科学习是不可取的。 我是个忠实的python粉,忠实到从头到尾看通了cpython解释器的源码,工作中能用python的地方尽可能的用python解决。然而我认为python绝不适用于cs入门教学语言。一个没有C这样靠近硬件层语言知识和C++/Java这种对象化语言知识的人是不可能真正精通Python的。
Python的基础概念是最简的对象化实现,内存管理都采用统一的计数GC,为了提高开发效率而限制了几乎所有的底层操作。这作为一个对对象化概念清晰、对内存管理逻辑清楚、对算法应用恰当的程序员和研究者来说无疑是提高工作效率的神器。
然而入门教育的对象是普通学生,其中大多数不要说原理,连对象化、堆空间与栈空间、数据在内存中的表现形式等等最最基本的概念都没有。让他们学python入门就如同让四则运算都不会的孩子直接上手微积分。
偏偏python还非常暧昧:它是解释语言,却可以加载C编译的模块;它是动态类型,却同时又是强类型;它全对象化,却对若干基础类型通过“不可变”实现了类似变量的操作……这意味着概念不清晰的人就算能写python代码,也没办法理解其执行逻辑,会遇到自己不能理解的不知原因的错误。
用python做入门教学,优势无非在于刚开始的学习梯度小,反馈高,容易提起兴趣,给非计算机专业的学生当当入门教材或许还有些意义。但是cs不学原理不学基础一口气爬到现代语言的高架子上,那只是等学生自己掉下来摔死。 谢邀。
可能题主被某些假象蒙蔽了或者道听途说了… 以我接触到的来说,如果是非CS 专业的学生,对于理工科Python确实是一个比较热门的基础课程。但对于CS 专业,这…我记得语法特性等等都是秒过,做Data Mining 的时候,库的学习是基于数学模型的,重点是数!学!建!模!跟语言没啥关系,所以对于Python也是秒过… 话说如果一开始不以C/C++学起,后面你也是要把坑填掉的。
最后补充:很多新手以!为!编程很简单(不就是那些语法加常用库砌起来的嘛)以!为!写着相似代码出来就能与大师并肩,以!为!看着某些项目的源码其实也不过如此,其实代码背后一层套一层的架构,框架,模块化,业务逻辑的实现与优化等逻辑思维的抽象,才是你要学习的。语言只不过是实现这种逻辑思维的工具,请不要在纠结哪种语言最好的,这样会暴露智商的。请选最合适的。
手机打的字,时间较仓促,有不合适的地方请见谅。
以上 你都是学水力了,还想用Matlab???来来来给你个流体场模拟去吧。
底层用Fortran写的,经过无数优化的ANSYS,动辄都要好几天才能算完一个,你跟我说你用Matlab???
Matlab 是科学计算神器,但不能大规模计算!!!
Matlab 是科学计算神器,但不能大规模计算!!!
Matlab 是科学计算神器,但不能大规模计算!!! C语言作为入门课程最大的问题并不在于难学,而是在于没有乐趣。
大部分同学不是没有这个能力去学好CS课程。而是从一开始就丧失了兴趣。
用Python作为入门课程的好处,第一是减小难度,第二是培养乐趣。
我们很容易的就可以做些好玩的事。
有了乐趣和想做的事情以后,学其他CS课程就会比较有目的性。 哈?Java和c最火吧? 先问是不是
北大的非计算机类专业的编程课已经全部改用Python 大部分学校c入门是为了讲语法的 某种意义上说Python的语法和不少语言都差得挺远。。。比如说缩进代替定界符 而且作为动态类型的语言 用不好会用出问题而且很难debug 所以不适合 不过 现在这种拿TC教c 拿VC++6.0教c++的做法确实是不能提倡
实际上以我们这个专业来看 讲c c++都讲得不深 作为理科的基础课程 专业课入门是Python R bash脚本 数值分析是c和MATLAB c#和http://VB.net选择一个用来讲用户界面和数据库连接 后面的课像生物信息算法 机器学习 计算基因组学基本属于语言无关 想用什么用什么 所以我们交作业从MATLAB Python(2和3都有。。。) Perl Ruby R到c c#都能看到。。。感觉助教好可怜= =而且大家合作完成大作业的时候。。。各种语言的通信也是一个大坑啊。。。最后还是不得不去搞c 不懂c的话Python和其他语言的通信怎么办。。。
当然。。。我真没见过有人写java啊哈哈哈哈 啥,你说c难学?????
其实我提这个问题的原因,也在于现在的语言工具很多,且都好用,也有很多人用。我大一学习C的时候确实感觉到困难,一来是自己学习的我积极性不高,二来实在提不起兴趣,最开始的几节课没听懂,后面就跟不上,也不爱学了。各位知友的分析也确实点中要害,羞得我掩面。
还有一个问题,就是今年刚学fortran,有人跟我说,因为计算速度快,做科学计算用的多,当然我们水力学也一直用。但是也有同学讨论说其实在计算速度方便,主要是算法优化,比如matlab,只要循环越少,速度就越快。利用它自带的函数,进行矩阵计算,速度也可以很快的。在这里也想向各位万能的知友请教一下,matlab中,能利用自带函数,进行矩阵计算,避免循环,从而提高计算速度的例子。
本人既是知乎新人,也是编程菜鸟,问的问题如显低级,拉低各位答友逼格,还望见谅!
回复内容:
想太多了,什么都是渐进的,Python也不是唯一真理。国内的大学普遍来说教材更新确实是慢,这个没什么好洗地的。不过真的编程入门换成Python并不等于教学水平就一定提升上来了,别的不说,单说拒绝C是因为难学,这个想法就更糟糕的多…… 别的学校我不清楚,但是就我知道的几个美国的学校来说,虽然python是挂在CS下的,但是一般都是给其他系学生选修。这也是为啥python的课号很低,甚至比Java还低,让大家以为这个是CS的入门课,其实不是啊。大家可以看看,很多有python课的学校CS学生的必修课表里面根本就没有python啊,都是从Java开始的。哦,顺便提一句,C确实是必须,但是C++并不是,学C主要是为了上后面的OS,network等课。C++对于教育来说意义并不大,美国的software development的课都是用java的上的。
其实这里就可以看出,美国本科并不会以教编程语言为目的而教某种语言,教编程语言都是为了之后课程的学习而打基础的。仔细想想大家就能明白,Python学完之后对CS之后课程的学习基本没有啥好处。你说是要用python来学data structure,system programming,还是compiler啥的?Python确实很强的,也很好学,但是它太高level了,和底层已经脱节了。真正用Python的人遇到需要,第一反应是去找有没有现成的lib而不是自己写一个,但是这一点对于本科学习是不可取的。 我是个忠实的python粉,忠实到从头到尾看通了cpython解释器的源码,工作中能用python的地方尽可能的用python解决。然而我认为python绝不适用于cs入门教学语言。一个没有C这样靠近硬件层语言知识和C++/Java这种对象化语言知识的人是不可能真正精通Python的。
Python的基础概念是最简的对象化实现,内存管理都采用统一的计数GC,为了提高开发效率而限制了几乎所有的底层操作。这作为一个对对象化概念清晰、对内存管理逻辑清楚、对算法应用恰当的程序员和研究者来说无疑是提高工作效率的神器。
然而入门教育的对象是普通学生,其中大多数不要说原理,连对象化、堆空间与栈空间、数据在内存中的表现形式等等最最基本的概念都没有。让他们学python入门就如同让四则运算都不会的孩子直接上手微积分。
偏偏python还非常暧昧:它是解释语言,却可以加载C编译的模块;它是动态类型,却同时又是强类型;它全对象化,却对若干基础类型通过“不可变”实现了类似变量的操作……这意味着概念不清晰的人就算能写python代码,也没办法理解其执行逻辑,会遇到自己不能理解的不知原因的错误。
用python做入门教学,优势无非在于刚开始的学习梯度小,反馈高,容易提起兴趣,给非计算机专业的学生当当入门教材或许还有些意义。但是cs不学原理不学基础一口气爬到现代语言的高架子上,那只是等学生自己掉下来摔死。 谢邀。
可能题主被某些假象蒙蔽了或者道听途说了… 以我接触到的来说,如果是非CS 专业的学生,对于理工科Python确实是一个比较热门的基础课程。但对于CS 专业,这…我记得语法特性等等都是秒过,做Data Mining 的时候,库的学习是基于数学模型的,重点是数!学!建!模!跟语言没啥关系,所以对于Python也是秒过… 话说如果一开始不以C/C++学起,后面你也是要把坑填掉的。
最后补充:很多新手以!为!编程很简单(不就是那些语法加常用库砌起来的嘛)以!为!写着相似代码出来就能与大师并肩,以!为!看着某些项目的源码其实也不过如此,其实代码背后一层套一层的架构,框架,模块化,业务逻辑的实现与优化等逻辑思维的抽象,才是你要学习的。语言只不过是实现这种逻辑思维的工具,请不要在纠结哪种语言最好的,这样会暴露智商的。请选最合适的。
手机打的字,时间较仓促,有不合适的地方请见谅。
以上 你都是学水力了,还想用Matlab???来来来给你个流体场模拟去吧。
底层用Fortran写的,经过无数优化的ANSYS,动辄都要好几天才能算完一个,你跟我说你用Matlab???
Matlab 是科学计算神器,但不能大规模计算!!!
Matlab 是科学计算神器,但不能大规模计算!!!
Matlab 是科学计算神器,但不能大规模计算!!! C语言作为入门课程最大的问题并不在于难学,而是在于没有乐趣。
大部分同学不是没有这个能力去学好CS课程。而是从一开始就丧失了兴趣。
用Python作为入门课程的好处,第一是减小难度,第二是培养乐趣。
我们很容易的就可以做些好玩的事。
有了乐趣和想做的事情以后,学其他CS课程就会比较有目的性。 哈?Java和c最火吧? 先问是不是
北大的非计算机类专业的编程课已经全部改用Python 大部分学校c入门是为了讲语法的 某种意义上说Python的语法和不少语言都差得挺远。。。比如说缩进代替定界符 而且作为动态类型的语言 用不好会用出问题而且很难debug 所以不适合 不过 现在这种拿TC教c 拿VC++6.0教c++的做法确实是不能提倡
实际上以我们这个专业来看 讲c c++都讲得不深 作为理科的基础课程 专业课入门是Python R bash脚本 数值分析是c和MATLAB c#和http://VB.net选择一个用来讲用户界面和数据库连接 后面的课像生物信息算法 机器学习 计算基因组学基本属于语言无关 想用什么用什么 所以我们交作业从MATLAB Python(2和3都有。。。) Perl Ruby R到c c#都能看到。。。感觉助教好可怜= =而且大家合作完成大作业的时候。。。各种语言的通信也是一个大坑啊。。。最后还是不得不去搞c 不懂c的话Python和其他语言的通信怎么办。。。
当然。。。我真没见过有人写java啊哈哈哈哈 啥,你说c难学?????