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.
Python应该是定位于快速开发,作为低级语言粘合剂的脚本语言。
如果要看编程语言的地位的话,可以看看编程语言排名
http://sd.csdn.net/a/20110711/301407.html
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的话解释了原因。
http://cemerick.com/2009/03/24/why-mit-now-uses-python-instead-of-scheme-for-its-undergraduate-cs-program/
总之,语言教学这件事,重点不是要赶时髦,而是要接地气。 想想大家为什么用 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和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),