顯示廣告
隱藏 ✕
※ 本文為 ChiChi7.bbs. 轉寄自 ptt.cc 更新時間: 2016-12-27 03:42:40
看板 Gossiping
作者 freeunixer (離自相空她相)
標題 Re: [問卦] 大家都怎麼學程式語言的阿(認真)
時間 Sun Dec 25 19:49:36 2016


※ 引述《newsted5566 (NEWSTED5566(亂劣我文))》之銘言:
: ※ 引述《swilly0906 (史威利哥哥)》之銘言:
: : 我看了簡單的範例/語法
: : 可是實作演練的HW 的超難
: : 到底一開始沒有程式背景的朋友是怎麼學的阿!!????
: : 要怎麼從無到有?
: 魯宅大學時從沒碰過程式…
: 高中學HTML語法就快死掉
: 還發誓未來絕不碰這東西…
: 大一修C語言還被當
: 看到一行一行的程式碼就像看天書一樣
: 覺得這好可怕這是啥…我死也不要碰這東西
: 而且魯宅頗推python
: 他真的是一個很適合給程式白痴用的語言
: 很多異想天開的寫法他都可以做動!!

講程式,有些人講 C,有人講 C++,有人講 Java、C#,有人講 Python,有人講 PHP...

拎老師今天我就來給各位上堂課,胡謅一下學語言該從什麼開始.

先講傳統的結構式語言.

要先學 C?可以,你要耐得住性子,能至少持續三到六個月,
最好不間斷連續直到看完第一本書.

這種做法適合沒有即戰力需求的人,缺點是門檻期較長,得要有恆心.

學 C 的成本低,二手書攤隨便找本十年前的二手書都還能用(寫得爛是另一件事,不討論).
找個 Code:Blocker 裝 clang,也不太佔硬碟空間(但是比較不好搞就是)

型別、流程、函式、遞迴、模組 先學會,巨集、struct 擺第二,指標 擺第三

第一本書應該就足以教會你第一部份,但其它部份可能就要再靠其它第二、三、四本...
容易的先搞定,難的後面一個一個慢慢來,你的挫折感比較不會那麼大

學 C 有個好處,你對一套軟體的關心角度會比較周全,像是要記得管理你的記憶體.
對軟、硬體的觀念會有機會比較全面,所謂的有機會是指,
當你再去看如硬體結構的書,會比較容易懂原來為什麼要這樣,會那樣.
人都不怕底子深,就怕連嘴炮都使不好.

這條路往下去,可以學現在最具工程實務精神的 go.
一樣沒有 Class,但是有 GC,效能一樣在,開發還更快,可以彌補 C 的土炮疲勞度.

講物件式語言.

直譯式

如果想學 javascript 式的多型,可以試著接觸看看 rebol,
這是以前從 amiga 上來的.
這套語言超強,十年前就可以支援 async, await.
C#, Java, Javascript 根本看不到它的車尾燈

台灣早期有一個寫譯軟體書有名的 蔡學鏞(現在跑天朝國去了),很推這一套,
他有寫了一本書教這套語言 編程ing
賣了四年還賣不完,有興趣的可以去幫幫忙,
讓碁峰一版快賣完,才能給碁峰一點動力叫蔡再改寫出二版.

從這本書的內容,可以看到他所認為的學習程式的語言,
基礎不出我在上面 C 講的第一部份,
而他那本書也只講到這部份,所以之後類與多型或其它,大家就每天一信催他趕快寫...

如果想要學面廣彈性大的,可以選 Python.
我雖然還是傾向建議你從 2.x 開始學,但是現在市面上的 2.x 的書不好找.
有本葉難寫的 Python 程式設計入門,內容算多,但老實說,內容編排不好,又真的包太多,
要一個初學者自己去選擇哪些要搞會哪些先不用管,實在太折騰.

碁峰 Python初學特訓班、松崗 Python程式設計 不妨去翻翻看,喜歡哪本就買哪本
不然就全部帶回家.反正也不貴.

Windows 版 IDE,Pyscriper 要裝比較麻煩些,要自己到系統設 path,也沒有 OS/X 版.

基礎的部份比較難搞懂的是 list 的 reference 的觀念,
因為這是從 C++ 來的,對比的是 C 的 call by value of address(pointer)
但是 python 都是動態 object 沒有定址,全部都變來變去,所以比較不容易搞懂.
dict 型別比較複雜,學的時候要動點腦.

模組就顯式、隱式匯入, _init__ 初始化, 2.x vs. 3.x 等幾種同異,頗煩人.

Class 的部份,最複雜的是多型,跟 Rebol 還有靜態型別的 C++/Java/C# 不一樣.
靜態類的語言,多型在 compile-time 時決定,動態類的在 run-time 時決定.
Python 的重載與 C++ 類的重載不一樣,稱之為 duck type,我亂稱它為刻板印象定型.
它的多重繼承,是優先順序繼承,而不是全部都能繼承.
實例物件、方法物件...一些這種一鍋子亂七八糟的東西要搞清楚,頗費功夫.
到了物件、繼承這裡的時候,要有耐心一天兩段式的慢慢推進.多翻幾本書,網上教材.

如果想專攻開發網站後台, PHP 7 當然是首選,但是除非你自己也兼刻醜醜的網頁,
不然自己一個人搞, HTML、CSS、Javascript...兼太多,容易累死自己...

編譯式

C++ 當然是包山包海包你娶妻生子還包到你兒子上台大,但是你很難控制得了...

要講資源跟使用族群,當然是 Java 勝,但就現狀來看,我認為已經可以跨平台的 C#,
是可以投資的對象.
論背景、靠山、架構、功能,C# 都不是普通角色,雖然以前因為只能在 Win 上跑,
大多又只在企業內部使用,限制了它應用的全面性與大眾普及性,
不過現在可以開始跨平台,現在學這個,
一則可以做為學習靜態類多型、繼承的敲門磚,二則未來他有成長機會.
很重要的一點是,不必死抱著,今天選了 C#,以後就不能換的心態.
這只是一個開始而已,以後不確定性很大,不用太擔心將來會怎樣.


學 C# 記得一件事,只買一本 C# 不夠,要再買一本 .Net Framework 的書,因為...

所以...

仍是要再提醒,第一個選擇什麼,並不表示之後不能選擇什麼.

學過 Python 可以學 C,學過 C# 可以學 Python,學過 go 也可以學 C#,
如果你沒想好或不知道將來想幹嘛,做籤給自己抽,抽到哪個就選哪個,
如果你有比較明確的方向,那當然不要選個跟那個方向差太遠的,才不會看來很好笑,
當然,就是還得真的能夠時間花下去,每天學,每天寫就是了...

--
讀者審校網試行版
http://readerreviewnet.twbbs.org/
(哲、史、法、政、經、社,人文翻譯書籍錯譯提報網)
◎洪蘭"毀人不倦"舉報專區
http://tinyurl.com/z3t6qzf
讀者需自救,有錯自己改...

--
LIONDODO: 這麼認真必須含淚推一下1F 12/25 19:53
by0413: 這篇可惜了2F 12/25 19:53
citcal: Python加13F 12/25 19:53
mmaa: PHP+14F 12/25 19:55
xaw123: 大大對swift的看法如何5F 12/25 20:00

你要有錢買 Mac,當然沒有不可以.
可以等到它更版變慢,不要那麼瘋狂改版時再學,比較不會經常在做白工這樣...

Wolfclaw: 最後還是要靠Stackoverflow6F 12/25 20:00
app325: 推7F 12/25 20:01
jpg31415926: 好文8F 12/25 20:02
pig12335331: 用心幫推推9F 12/25 20:03
※ 編輯: freeunixer (60.250.90.238), 12/25/2016 20:12:54
zenwhale: 推10F 12/25 20:05
Grothendieck: 先學python建立自信11F 12/25 20:05
RaspberryPi: 學java真的是拿石頭砸自己腳,除非要寫android12F 12/25 20:09
freeunixer: 要聽樓上爆卦~13F 12/25 20:13
NCKUFatPork: 抽到c++14F 12/25 20:13
freeunixer: 樓上加油,佛、菩薩會加持你~15F 12/25 20:18
hayamakurata: Fortran->C++->python 一路上來 真的是有需要什麼16F 12/25 20:20
hayamakurata: 就學什麼XD
atobela: 淚推,程式語言用到後來真的每個都要插個幾下18F 12/25 20:28
wsx1678904: 那obov說的懶叫學習要從哪個語言開始學才好?19F 12/25 20:32
autoimmune: 推大神20F 12/25 20:34
attis: 這篇不錯 但我是從asm先學的21F 12/25 20:38
ziso: .22F 12/25 20:54
alway70345: 大推23F 12/25 20:59
DoraGian: deep learning 就python掛tensorflow24F 12/25 21:03
riker729: 想當年我第一個學的是basic 現在已經消失了?25F 12/25 21:11
LinkedList: C 一招走天下26F 12/25 21:18
george40516: 好文推27F 12/25 21:33
Gold740716: C -x perl -> linux bash -> javascript28F 12/25 21:44
st2913sbck: 好文29F 12/25 21:44
ferocious: 推一個 想知道 因為...所以...的內容XDD30F 12/25 21:45
bbo6uis122: 推31F 12/25 22:31
sank: 推32F 12/25 22:35
tweence:33F 12/25 22:38
yesyesyesyes: 推  我是C -> C++ -> C#  真覺得自己在亂做...34F 12/25 22:42
godchildtw: 還好我19年前決定退出江湖改行,現在今日事今日畢35F 12/25 23:01
charlly: 推推36F 12/25 23:21
mamaka: 好文37F 12/26 00:01
jokker: 推38F 12/26 00:10
nucleargod: 其實學 C 我一本書都沒看過,只是去解題庫而已39F 12/26 00:39
selvester: java被綁架了 勒索專職Oracle 大家快棄船啊! 話說dll40F 12/26 00:49
selvester: 修改器和app+伺服 要從哪開始?
king22649: 額 賣了四年賣不完 真的是稱讚嗎=口=42F 12/26 01:50
Kemuel:43F 12/27 02:20

--
※ 看板: Gossiping 文章推薦值: 1 目前人氣: 0 累積人氣: 12917 
※ 本文也出現在看板: whatla diabloex
分享網址: 複製 已複製
( ̄︶ ̄)b totoro123 說讚!
lecheck 轉錄至看板 whatla (使用連結) 時間:2016-12-27 08:28:24
1樓 時間: 2016-12-27 13:05:39 (台灣)
  12-27 13:05 TW
我是曾學過C++ 自學的 不難 且一般如果C++會的話 其它語言其實差不了多少
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇