Re: [問題] 打好Java基礎對學其他語言的幫助大嗎?

看板java作者 (有些事,有時候。。。)時間12年前 (2013/08/25 01:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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)
文章代碼(AID): #1I6F6U-A (java)
討論串 (同標題文章)
文章代碼(AID): #1I6F6U-A (java)