Python 在編程語言中是什麼地位?為什麼很多大學不教 Python?
大學更多偏向學術,了解計算機體系結構,語言當然是和體系密切的c為主。
當然某些課程會需要比較偏向實用的,那一般會根據社會當前主流的應用開發語言去教學。Python畢竟還是個小眾。Python在高級語言裡面經常和Ruby、Perl拿在一起做比較。所以要看看Ruby和Perl或者Lua的地位,也可以知道一點Python的地位。
Python應該是定位於快速開發,作為低級語言粘合劑的腳本語言。
如果要看編程語言的地位的話,可以看看編程語言排名
http://sd.csdn.net/a/20110711/301407.htmlpython還是可以排在前十的。
國內的互聯網企業,從最老的金山,網易,到新進的豆瓣,有很多使用Python的公司。應用範圍也很廣,從服務端後台、工具腳本到遊戲客戶端開發,非常多。總的來說,依然是應用非常廣泛的。
為什麼很多大學都不教Python呢?個人覺得有兩個原因:1 Python是可以自學的,比起C/C++來說簡單多了;2 大學的教材和課程更新速度遠遠不及技術發展的速度。編程範式,設計模式,MVC,軟體開發方法和思想這些才是應該教而沒有教的東西,編程語言都是些小角色,完全可以穿插到裡面作為一個章節或一兩個課時的內容。偏偏國內的很多高校,學了一個學期的java,對介面interface的存在充滿疑惑,甚至很多學生還以為面向對象編程中的封裝和信息隱藏是為了保密(讓源代碼不被泄露出去!)。
先說一下國內的編程語言,或程序設計教學的背景
國內的大學本科 工科類的大多數程序設計課程,是以C語言為基礎的 ,有的課程更直接的寫為C語言程序設計 ,雖然有的名稱為C++ ,並且利用Visual C++的IDE集成環境 ,但對於工科計算機基礎類程序設計語言來講,基本都是C的基礎語法部分 。國內高校目前對於理工科基礎平台課程中計算機基礎,存在有些傳統類型的課程體系,程序設計一般屬於第二門課程(第一門課程就是傳統的計算機基礎,但由於IT飛速發展,目前大學新生遠不是若干年前沒有見過計算機的生手了,許多學校都採用免修和作為選修課,直接進入程序設計語言的教學階段),理工類突出演算法與數據結構 ,意味著偏重後期的計算與(電子電氣信息類)機器系統介面操作。另外,偏文和管理類的,則開始Visual Basic,甚至幾年前還有Fro Pro偏資料庫的語言編程課程 ,則側重基本的演算法與數據處理的基礎,後期工作主要不是和底層代碼打交道了。由於本文的主題設計Python語言 ,而該語言基本不是僅僅只專門給計算機專業來準備的 。所以,討論本問題,也不會僅僅限制於計算機專業是否開設的範疇。
基於上述情況,國內高校延用一貫的體系,自1980年代個人計算機大普及開始,工科的Fortran語言/Basic語言,計算機專業(部分信息管理專業)的Pascal,隨後軟硬兼容的C語言。Python語言誕生與會1990年代,最重要的是其開源模式。這個重要的因素,考慮國內軟體獲得使用權非常輕鬆(版權問題)開源對於同樣可以不計版權使用幾乎所有的編程軟體的情況來說,不會引起過多的關注。而國外則會由於開源而考慮軟體成本(當然教育科研會有相當大的折扣)。 另外一個軟體例子,應該是工科高校1990年代以來作為數學工具而使用的Matlab軟體。至今尚不明白,為什麼這個Matlab軟體還成為許多數學,電子學科本科的一門專業基礎課程(選修課尚可考慮)。 歸納如下:1 課程體系的因素和調整慣性, Python語言一直沒有廣泛採用。但,由於其全面的功能和與其他語言的資源共享,逐漸會納入課程體系,但個人認為,其主要適合通用演算法與程序設計課程或配合相關工科課程課程設計,而是作為高效的程序設計的語言。C語言(C++)仍然對於計算機、電子信息等 專業課程,不可廢棄。其實,作為學習C語言的,花一周左右時間完全可以從容掌握基本的Python程序設計(當然不包括其廣泛的外部應用,網路編程,GUI之類的)。 由於工作的原因,經常與歐美高校進行課程對接,國外高校,本科生的編程,尤其非計算機專業的,多數給出的編程語言為Python例子,當然Matlab仍然是多數的。2 軟體的版權或多或少會有一定的影響因素。嵌入式課程設計,我用python寫了一個圖書管理系統,我們老師都不知道有這門編程語言。。。
如果是計算機相關專業的學生,有必要去學習一些C/C++這樣的底層語言,但是其他專業,比如一般的理工專業,還是學python好。理工類專業學了C這種語言後,根本就沒有任何用處,光語法就夠他們折騰的了,還談什麼編程思想計算機的思想?窈以後後者才是普及計算機教育的意義吧?另外對於理工科來講,科學計算很重要,一般的大學會開Matlab課,但其實開python相關的也完全可以替代。所以應該在普通理工科大力推廣Python。
大學教的是學習方法,C/C++學好了,其他語言就不在話下了。再說了,Python這樣的語言,版本更新太快,學校是不會教這樣東西的,一般會是自己學。但是如果教的話,發現也都是學很古老的版本,適用性不強。
計算機科班學生當做專業課來學的話當然是c/c++,有了基礎需要的時候python買本書看看就會了。也可以當做選修課。
語言是入門 關鍵是思想 其實幾門語言學好用好都不容易 如果覺得學校教的語言就限制了你的發揮 那是幼稚的
巨同意李紹開的觀點,個人感覺c/c++作為大學的編程教學應該比java/C#等等語言要好的多。目前在公司很多項目都不限制語言,學會編程的思想就好了。
密歇根州立大學的新生入門語言也是python的,這是課程主頁CSE 231,裡面有教程,也有課後作業,挺不錯的,感興趣的話可以一起翻譯一下:ma6174/pythoncourse · GitHub
大家貌似是走入了一個誤區!其實C應該是必學的,不然會太痛苦了 (學習之後的語言)但是 python和c並沒有說只能教一樣啊 python完全可以作為選修,按照興趣來學習嘛!不過這門語言 確實不需要教學 自學完全就夠鳥!
大學學知識更多是為了和其他的知識觸類旁通的,學習C語言才能更透徹的了解所謂的內存,I/O,緩存的關係。如果讓他學會了python,再給他說內存地址。恐怕有點天方夜譚了。除非在大學課程中,連python解釋器的源代碼也要講述給學生,這就有點太誇張了。
nothing, garbage or conspiracy
很多老師都不會python。另一方面,感覺C/C++被強調很多年,基本首選認這倆。
我覺得python雖然可以做很多事情,但它的確算不上是一門非常好的語言。因為好用,所以很多人在用,但是這些人往往都是沒有軟體開發行業背景的,大多數是一些搞研究的搞科研的業餘程序員在用。專業的程序員一般都會選擇ruby。網上有很多關於python和ruby的論戰。其實我也更喜歡ruby一些,但是python也有很大的優勢,其中一個就是,類庫很好很強大。
國外很多大學都有教Python的,比如MIT的計算機導論課、演算法課都用的是Python。
這裡有一份列表 http://wiki.python.org/moin/SchoolsUsingPython國內大學現在除了C++ Java C 好點的能整個C# 好像沒別的現在中國的怪現象 老師只管教 教什麼無所謂 也不管實際要用什麼 他們不了解現在什麼東西比較火 什麼東西最有用 從來不變通 中國大學就是潭死水
大學中就不應該學習語言,就算開了一些語言課,也都是虛的,一個學期,30-40節可能個什麼
我抱著消極一點的觀點,我認為是因為大學為了就業率之類的東西,將市場中所需要的人才定位為自己要培養的人才,而需求最多的是C/C++/Java之流的學生,所以大學也大部分都只教這些。然後大量的這種人才又反過來使得很多企業不敢要別的人才,因為怕人員不足,然後就惡性循環
對於比較多的大學老師而言,python這類玩意實在太可怕鳥,還是新白娘子傳奇好看……
國內大學么?那很正常,一來教材更新慢、二來老師沒心思教,學生也沒心思學。
現在還有很多學校還在喲用那本那本錯誤百出的數據結構咱沒能力評價什麼「方法」,也不管什麼水準,什麼「可以自學」,包括「大學既不是專才教育,也不是通才教育。大學是基本能力教育,它只有義務教會大多數學生在他專業領域中的基本能力。
」。但是,咱很明顯是教Python的,而且開學第一課就是它。
有圖有真相。截圖,week2-slides.pdf。我們大學第一學期教python,作為接觸編程、了解編程的敲門磚。
而第二學期開數據結構的時候就教C。而我在大學前涉獵過C,學python算是比較輕鬆。所以我覺得,C,C++掌握了,其他語言就好辦了。python的地位就不答了,我哪兒知道。
關於大學為什麼不教這個問題:
1.大學教授技術落後(讀博士直接去教書的不在少說,這些人哪寫過幾行代碼,我相信大學計算機系教授裡面知道git github的人也是鳳毛麟角了吧)
2.很大一部分老師安於現狀(教學大綱就是這樣了,寫好了可以多年不變)關於用python作為入門語言教學我是強烈推薦的,也對學校老師講過(當然也推薦過git,結果不說你們也知道),為什麼呢?最重要的是培養學生最最最最初對計算機的興趣:
1.中國的環境。在我這一級(2010入學)很多人真的是到了大學才第一次摸電腦(這是真的),特么上來教C,你玩死他們,也確實是這樣,很多計算機系的學生因為大一敗在了C語言上因此對這個專業無愛。
2.培養興趣。確實C系更加底層,可以讓學生更深入的對於編程有一個更加系統深入的感受,但是,這種感受必須要建立到你入門,並且有一點點興趣的基礎上,python的易用性就不提了吧。3.python勝在廣。可以在教學的時候用python搭個小站,後端這比大學用java servlet搭容易太多 老師在稍微提一下bootstrap之類的前端 迅速做完一個web,成就感有了有沒有。python可以做的事情實在是巨多無比,懶得舉例。哦,不是說學了python就不該教C了,譚浩強的書還是要賣的,老師以前的講義還是要用的。
Life is too short, please use python.不指望大學教什麼語言, 在工作一段時間後,發現理論的東西很重要,與語言無關. 數據結構, 演算法, 編譯原理, 操作系統原理. 這些東西才是最重要的, 用什麼語言去實現都一樣.
計算機專業第一門語言課學python這樣太高級的語言不合適吧。太多的庫函數和太靈活的數據處理能力儘管可以瞬間寫出代碼解決很多實際問題,但是恰恰錯過了一些程序設計中的核心演算法思維。c語言則剛剛好。第一門語言課學c可以建立計算機語言思維更可以在學習過程中接觸不少基本但很有意義的演算法問題。比如幾種排序演算法的開銷對比啊,stack,heap之類的內存概念啊等。換句話說編程的核心其實還是演算法和思維咯。再說了,學完c,認真完成課程大作業,其他的語言自學就行啦。
推薦閱讀:
※【阿里雲大學課程】怎樣學好C語言?從入門到實戰
※聊一聊TOML
※如果軟體要實現以下功能 要用什麼編程語言編寫比較合適?
※D語言的前景如何?在中國的發展情況如何?