Re: [問題] 打好Java基礎對學其他語言的幫助大嗎?
※ 引述《henry781114 (期王)》之銘言:
: 先聲明我非本科系(我是數學系),對程式語言這塊很陌生,也沒啥基礎
: 大一的程式語言老師教C一學期也沒教什麼,只教到for (據說資工系2個禮拜就能上完XD)
: 目前要升大四,想說在大學畢業前學好一個程式語言
: 將來沒有要走寫程式這行(想走也太慢了XD),只是本業可能會需要寫程式
: 以後寫的程式也不一定會用Java,但我聽說學好一個程式語言,再學其他語言會很快
: 本來我是想學好C的,因為聽說這個語言的效能最好,最低階,學得好什麼都做得出來
: 但是我看到我們學校資工系和資管系大一的程式語言課程都是教Java,所以也無從選擇@@
: 我認識一位資工系的朋友說Java有個缺點是如果有錯的話,要整個重開@@
: C或C++就只要去找看看是哪一行寫錯,直接修改就好
: 想請問各位,如果我想打程式基礎的話,去買本C的書來看比較好,還是去修Java的課呢?
: 什麼語言對將來學其他程式的幫助最大呢?
: 感謝各位!
學 OOO 對 XXX 有沒有用!?
這是學習遷移理論的問題
http://wiki.mbalib.com/zh-tw/%E5%AD%A6%E4%B9%A0%E8%BF%81%E7%A7%BB
要有沒有用呢,要先看不同的遷移對象間的關係。
再來討論遷移的可能性與它的「正」「負」遷移方向。
例如:
學了 Java 後,對 C 有幫助嗎?
學了 C 後,對 Java 有幫助嗎?
去掉 class 的部分,他的語法都是差不多的。
你可以知道它的變數宣告與定義都這樣的型式:
type variable_name = value ;
這是許多語言共通的部分,
應該能算是學 Java 後對其他語言有幫助的部分
(看起來是很微小的幫助:D)
例如:
學了 Java 後,知道程式是需要「編譯」再「執行」的。
而且「編譯」的過程可能出現「cannot resolve symbol」
可能是類別名稱打錯了,或是 classpath 沒給足
去用其他同為編譯式的語言,
知道得完成「編譯」的動作才可以「執行」
知道「編譯」過程可能會有錯誤,
錯誤可能是人為輸入錯誤,或編譯條件沒滿足。
你得依 compiler 的訊息決定處理方式
像寫 C 時得多設額外的 include path 與 lib path
若沒設好也會看到相似於 cannot resolve symbol 的訊息,
經驗到這裡用上了,就不會感到相當疑惑。
若你看了學習遷移論,請多注意到遷移有可能是負面的。
對程式語言學習來說,語法容易遷移,語意容易誤解。
當你在另一個語言看到相似的結構而開心
覺得這一段可以輕鬆一點時,得多注意在語意的細節上有什麼異同之處
像是在其他語言用慣了這樣比較二個變數是否相等:
if foo == "something": ...
在 java 忘了物件應該用 equals 比較(特別是字串新手會忘了它是物件)
過去的經驗給你的直覺,產生了負面的影響。
要避免這些負面影響,只能很仔細地深入語法相關的語意
才可以明確地區分出是否與過去的經驗衝突。
若因為覺得有經驗而「疏、懶」,那絕對是學習的大忌
正面的例子呢?若你明白了為何大量字串結合要用 StringBuffer
在其他語言也會有 sense 是不是可能有這個問題。
不管最後你選定了哪一個語言,請取得一份良好的學習歷經。
因為我相信正向的經驗比較容易引發正向的循環。
*. 蒐集一些好的 codying style
(在你自己也認同的前提)
*. 思考語言上是否有曖昧的寫法,並提醒自己避免它
(別寫出讓人容易誤解的東西)
*. 熟悉 SDK 基本工具使用與常用標準函式
(在沒有好用的 IDE 時,你得怎麼野地求生!?)
(javac, java, CLASSPATH ....)
*. 使用開發工具讓你有生產力
(IDE、Debugger、Code Template、使用 logger)
*. 累積跨語言的經驗(單元測試、重構、...)
(總之,寫出讓大家高枕無憂的東西吧)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.231.137.107
※ 編輯: qrtt1 來自: 36.231.137.107 (08/25 01:48)
※ 編輯: qrtt1 來自: 36.231.137.107 (08/25 01:50)
※ 編輯: qrtt1 來自: 36.231.137.107 (08/25 01:54)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):