###### tags: `Miscellany` # 程式學習經驗小記 >3年小心得> < 我還要變得更強!!! ## 學哪種程式語言比較好? *(以下為目前個人理解的觀點)* 最近越來越多人問,我要學哪一種程式語言, Python、R語言、Java、C++、網頁御三家 ...... 或者更多千奇百怪的程式語言。 可以理解人們茫然的感覺, 語言太多了,卻在目前的生活中完全沒有連結到其中之一, 只是被「寫程式是未來趨勢」這個被瘋狂洗版的的熱門話題弄得不知所措。 (有時候甚至覺得是聯X、巨X之類的電腦課程廣告打太兇XDDD 最近很常聽到一句話, ::: info **「沒有比較好的程式語言,只有比較適合的程式語言」** ::: 各個程式語言基本上都有各自特性間的差異,這邊用常聽到三個舉個例: *這些屬個人了解至現在的一個概況,若想知道更正確更精準的比較還是建議自行深入研究看看* **C & C++** 最接近**底層開發**,可直接與底層系統介面溝通, 撰寫結構時彈性較其他語言都大(本人寫Java時對不能使用Pointer非常不開心 也因為彈性高、接近底層, 當追求**軟體效能**為當務之急時,C++可說是不二人選。 **Java** 不同於C++直接運行在系統底層, Java是運行在JVM(Java Virtual Machine)上的, 由於是透過模擬器運行,且各作業系統基本上都已經有其VM,其**移植性大勝C語言**。 並因其高移植性,以及記憶體回收機制等已經規範好的底層程序等等, 促成其相對於C語言高出許多的**開發效率** **Python** 近年來常被拿來和「大數據」綁一塊的Python,會如此也不是沒有原因, **好學易懂易開發**,語法規範的方式使其代碼量實在比上述兩者少了非常之多, **開源免費**,這聽起來還好,但對於一個程式語言來說,開源代表著數以萬計的免費勞工(誤 **高移植性**,但不同於Java的VM模式,Python的移植性可說是多虧了他的開源性 回到數據處理,對於目前極速成長中的數據處理需求, Python開源性造成的套件開發速度讓其能在數據處理上佔有一定地位。 簡單整理: >執行效率 -- C++ > Java > Python >開發效率 -- Python > Java > C++ >移植性 -- Python. Java > C++ 因此,不同語言因其彼此特性差異, 被運用在不同的功能、產業上,所以才有**沒有比較好的程式語言,只有比較適合的程式語言**一說 ## 那我要從哪種語言入門? 先說我的經驗,我大學前兩年的課都是C語言基礎,就跟課,也沒特別挑。 近期語言方面往外擴展了Python、Java、Html、CSS、JavaScript等, 特定開發環境QT(C++)、OpenGL(C++)、Arduino(C++)、Android Studio(Java)等, **「基本上都上手的十分快速」**,我把一切都歸功於練了兩年的程式邏輯跟思考的路線、速度, 編程類的程式語言(非Html、CSS之類的標籤語法),拿掉了語法差異,基本上都差不多, 永遠都脫離不了loop、if/else,畢竟是邏輯問題。 因為很重要所以再說一次,**哥練的是程式邏輯跟思考方式** 我想說的是, 未來工作的公司、工作內容都是未知數,尤其你也不知道未來真正用到的是什麼, 比起好像選老婆一樣,好像選了你就永遠在這條路上, 不如放輕鬆點,反正就去學就去做, 最重要的東西不會是語法,而是寫程式的Sense,還有對結構概念的理解跟經驗。 *以下厭世* 反正大學很多程式的課也都只是帶你入門, 沒有後續、沒有專案開發,不自己在之後做點甚麼肯定課結束學習就結束了, 但我認為上這些課也不浪費時間 (比機\*材\*有用多了XDD 就像我上面說的, 至少能培養一些寫程式的Sense,至少提升一點邏輯性和思考力, 以後學其他同性質的東西也很快, 往後大部分程式語言都能直接跳過還在那邊「迴圈是什麼」、「運算子有哪些」的無聊新手村。 *厭世結束* #### 如果真要討一個意見,簡單講一下小小的建議: 1. **看你需求** -- 如果確定以後會用到什麼,甚至想做什麼,絕對先學起來放不會錯。 我要玩網路爬蟲 -- Python 我要玩機器學習 -- Python (ㄅ 我要寫Android APP -- Java ***成大機械大三專題實作課程 -- C++(Arduino)*** 知道想做什麼但不知道要學那一個? **查啊!!!** 2. **跟課** -- 看一下學校開了什麼課程,看對眼了就勇敢衝了。 學程式我多半是學校老師給方向(主題、作業、考試),我真正的老師是Google,相信我,目前覺得**學程式最有用的技能真的是Google**(所以我都蹺課XD 關於要不要花錢去上課,問我我會說不要,升大學的時候我去上了巨X的AutoCAD,會是會了,然後就沒有然後了,沒有說不好,只是個人的回憶不太好XDDDD 而且很貴。 3. **問學長/長輩會用到啥** -- 假聊天真** 如果你也是NCKU ME的快樂海盜,現在我就在跟你講你可能會用到C++、Scilab、Matlab 又譬如我聽幾個研究所學長說做研究時用R語言寫運算、再用Matlab做資料圖像化等等, 多和有經驗的人聊聊能有很多收穫,始終是個不變得定律。 4. **佛系學習** -- 隨便選,時候到了自然會用到 好啦你要速成就學Python,想學個完整的就C啦!! 反正你問我我一定說C++!!! ## 結語 玩了三年程式語言,尤其近一年才全心全意投入到有點癡狂,但好像還未曾有過自己學了很多的感覺,永遠覺的還不夠還不夠XDDDD 然後最近在Coding-X又認識了一個大神,又進入了ROS(Robot Operating System) 的一個新世界,又再次覺得自己是還是個渣,好想變強RRRRR 學程式成為主流是肯定的,未來科技肯定朝著更自動化、更智慧化發展,看目前人工智慧、數據統計及預測的熱度就知道,而你今天不管身在哪個領域,都將很難完全和其脫離關係。所以我覺得學是必要的,只是學多學少、學精學淺的差別而已,所以,反正各位加油XDDDD <br><br><br> *More about me* >*HackMD -- [Overview](https://hackmd.io/nTkmZqpdQdqFRmUM6WnWCQ)* >*Medium -- https://medium.com/gcc-me-c* >*Github -- https://github.com/chwchao* >*Facebook -- https://www.facebook.com/chiawei.chao.716*