想學編程,請問從哪個開始較好:C/C++,Python 還是 Lisp?
理工科化學/材料專業,有一定數學基礎但無編程經驗。
Scheme
如果用來套近乎, 別人學什麼, 你學什麼.
真學編程就別將自己當妹子了, 別人怎麼學你就該怎麼學. 編程應該獨立於語言之外, 語言是描述工具, 都差不多, 又不是一輩子的事, 不用細挑.你確定妹紙真的想寫一行行由字元組成的字元串而且還可能要遭遇各種臭bug和莫名奇妙的環境設置而不是只是看完黑客帝國頭腦發熱而已?
Python
不說Python的都是不客觀。你們看我頭像。我認為是Python。
我不止一次地和人說過,非計算機專業的人,學習編程最重要的是保持住興趣,而不是糾結技能樹的問題。Python上手簡單(當然語言本身還是沒那麼簡單的),有交互性強的開發環境,還有眾多的第三方庫,學習起來樂趣會比C/C++有樂趣得多。
我也認同每個專業的程序員都應該學習,或者或多或少了解C。但是C過於底層,強在內存操作,功能實現起來卻十分複雜,並不適合作為上手語言。
另外,你是理工科的學生,Python中有像Numpy、Scipy這樣的科學計算庫,以及Matplotlib這樣的數據呈現庫,從做研究的角度來講,Python有潛質成為你的一個得力工具。個人想法,題主做個參考。我是學數學和金融的,像我們專業的同學大部分都是搞matlab和stata等等,因為這些軟體可以很好的完成他們學習的任務;但是我從大一開始就開始選修各類編程語言,尤其是我最開始學習的c語言老師可以把語言講得深入淺出,這給了我很大的幫助,所以我的建議是:
- 開始學習c,知道一些編程的基礎知識,至於函數式編程語言對於我們這種只需要一種趁手工具的人來說,最好是不要接觸。
- 當我們需要用某一門語言寫點東西時,建議使用python,這真的可以讓你更多的專註與你的核心內容,而不用考慮過多的技術細節
- 如果你最後成為專業的程序員,即使你只寫你專業內的程序,建議使用c和java等適合大型工程的語言,一來效率有保障,二來通用。
JavaScript, 蔡學鏞稱它為最具性價比的編程語言不是沒有道理的。
首先,它很好學:從開始學,到寫出一些非練習性質的小程序,需要的時間短;也就是「價格低」;
其次,沒有哪個領域是JavaScript不能搞得,前端、Web服務、GUI程序、系統管理、手機應用,you name it;也就是「質量高」。
再有,它很好找工作。
再再有,即使你是偏科研的,函數式編程、原型繼承、非同步編程,這些也都是極好的研究方向。brainfuck
除了 C++,其他的還真不容易上心學。
C#
PythonJavaScriptC語言語法簡潔,入門簡單同時它也可以是我們後面繼續發展的基礎
四個字:請聯繫我
^_^
Javascript 最好,無需開發環境,打開chrome就能寫。配合live coding工具能快速反饋。學會了還能做些前端界面特效玩玩,有趣好玩不枯燥。
作為化工系畢業的程序員。。。妹子私信我吧。。學什麼不重要,關鍵是跟誰學
Python,最近我開始教我女朋友編程,就是從python開始的,主要是鍛煉她的思維。python語法簡單,庫多,抽象度高。從結構語句講起,然後講講函數,講講代碼風格,寫點簡單的遊戲,代碼長了之後講點類,設計,重構。整個過程都以開發簡單的遊戲為主。
忘記說要看妹子要做什麼,如果你有很強的數學運算要求——微積分,求偏微分方程之類的,那就mathematica/matlab,其他的編程語言干這個麻煩(估計幹不了)否則就python吧,挺好的,簡單易學
主要看編程的目的是什麼了,假設有三種目的
1、科研,如果處理實驗數據的話,用matlab足夠了,當然一些工科專業,力學什麼的,可能需要學習Mathematica,用來推導工式,但如果需要晶體計算相關什麼的話,可能考慮到效率問題需要C/C++,當然對於大部分普通工科專業來說,C語言應是大一學過的,重新複習一下就好了2、為了好玩,解些數學題什麼的,最好學python3、轉行,對於一般工科專業的人來說(非通信,電信,電子相關),無非是web, ios,android等,或者挑戰一下自已,嵌入式相關,對於不同的領域用的語言各不相同,需要定好領域,再定語言
至於Lisp,在我看來是一些計算機,軟體科班的裝逼利器,你可以先從scheme開始學習,看SICP,然後過渡到Lisp, 不過我不建議在Lisp上浪費太多的時間,因為學Lisp的話,你會發現被帶到程序語言設計及編譯這個領域。
另外編程能教給我們這種非科班最重要的三點是,1、計算思維,2、動手做,3、高度抽象C還是要學下,至少要知道數據是怎麼存放在內存裡面的啊···
這個完全要看你以後的方向,按我理解,理工科化學類的如果就是為了科研,當然是必須嘗試一些數值計算有優勢的語言,首先推薦MATLAB,這個幾乎不需要什麼編程經驗,而且你已經有數學基礎了,話說回來,這個東西對數學理解是有要求的。其次是python,python是國外很多科研機構和高校的推薦語言,擁有簡單的語法但更主要的是有豐富的數值類和各類學科自身的庫支撐,絕對讓你事半功倍,缺點是運行略慢,畢竟是腳本語言,當然如果演算法優異的話,其實語言本身帶來的運行開銷是可以忽略不計的,特別對於科研程序而言。很多國內高校教授數值計算時(比如我上學時)使用fortran,在我看來完全是沒有必要的,第一fortran太偏離主流,而且從效率來看並不很高,甚至語法怪異,但是沒辦法國內很多前輩使用的程序庫都是fortran,但是老師們都沒時間也懶得去修改這些歷史代碼,一代一代遺留下來,不出所料的話,很多學校未來還會使用fortran,這是一種悲劇,所以只能靠你自己去學其他的。如果你不是為了科研,追求一份碼農的工作(完全不管你是男是女)的話,要細分,但是我建議從C語言學起,因為對於一個碼農來說如果一直依靠語言的GC來做內存相關的處理,自己完全不了解底層,那也是不行的,雖然大多數人從C開始學但是工作中絕大多數是使用C++,因為開發效率會高一些,至於LISP,如果時間充裕,等你學完一門面向過程的語言和一門面向對象的語言後,再涉獵這門神聖的語言也未嘗不可,其他不多說了,你多看看書方向也就出來了,努力吧。
材料專業?不知道你平時做項目分析時會用哪些軟體。-------------------------------------------------------------介紹下我現在的選擇以供參考:先下結論:python+excel VBA--------------------------------------------------------------偶是土木專業的,在做一些項目時,會用到abaqus這個通用有限元軟體來做一些節點分析。在使用過程中,發現abaqus提供了python介面以進行二次開發。於是,偶就選擇了python作為編程軟體,編了一些小腳本用來輔助進行abaqus建模前處理、odb數後處理等等。尤其是python+abaqus宏錄製,兩者相結合,可以實驗批量建模,批理計算,批量導出計算結果(txt文件)。後期用excel VBA+excel宏命令,實現了對txt數據的批量導入,批量數據處理、批量畫圖形,想想還是蠻方便的~:)--------------------------------------------------------------其實,工具很多,主要是你想實現什麼目的~像我剛才所說的,為了可以實現abaqus的批量建模和批量數據提取,所以我用了python做為編程手段,為了可以實現excel對數據的批量處理和批量畫圖(主要是不會用python的一些數據處理庫),所以學了下excel vba~
Python;但如果有數學基礎的話,其實是可以考慮考慮Lisp的;可以看下這篇博客:[轉]初學者程序語言的選擇,算是個新視角
推薦閱讀:
※熱愛編程,什麼時候開始學習?
※Python中實現 (a and b or c) in xx 這種邏輯最簡潔的方式是怎樣的?
※關於學習數據結構與演算法的一些疑惑?
※在這種情況下,我應該如何努力才能如願成為一名計算機大神?
※Python 適合初學編程的人學嗎?