Re: [問卦] 大家都怎麼學程式語言的阿(認真)

作者: freeunixer (御劍客)   2016-12-25 19:49:36
※ 引述《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#,
如果你沒想好或不知道將來想幹嘛,做籤給自己抽,抽到哪個就選哪個,
如果你有比較明確的方向,那當然不要選個跟那個方向差太遠的,才不會看來很好笑,
當然,就是還得真的能夠時間花下去,每天學,每天寫就是了...
作者: LIONDODO (LION)   2016-12-25 19:53:00
這麼認真必須含淚推一下
作者: by0413 (誤會一場...)   2016-12-25 19:53:00
這篇可惜了
作者: citcal (沉默)   2016-12-25 19:53:00
Python加1
作者: mmaa (蔡菜)   2016-12-25 19:55:00
PHP+1

Links booklink

Contact Us: admin [ a t ] ucptt.com