---
# System prepended metadata

title: 程式學習經驗小記
tags: [Miscellany]

---

###### 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*