精通某種編程語言學習其他編程語言真的很容易嗎?
事情緣由:谷歌發布了新的編程語言開發安卓應用
我說如果全面轉向新語言的話,那之前用積累的Java開發安卓應用的經驗就蛋疼了!這時身邊人跳出來了完全不屑的語氣說,怎麼會,Java開發安卓熟練了,很快就能轉谷歌新語言開發安卓,很簡單的。請問真的是這樣嗎?那Objective-C轉Swift真的就輕鬆的一逼嗎??個人認為你精通一種語言,並不代表你學其他語言就特容易。
需要看語言的流派,如你會C++,轉Java,C#等會很快,但是轉FP可能不那麼容易。但是我相信精通了C++的,轉任何語言都不會是很困難的事情,因為精通C++意味著要精通很多東西,遠非單獨一門語言了。
會 C 和 Lisp 基本學大部分的語言都問題不大了——某 Old School Hacker 說的
當然不輕鬆!
你看都是XAML,SL被幹掉的時候大家都說學了這個東西就浪費了(明明還有WPF,WindowsPhone,Metro,Universal App)。API幾乎一樣,用法幾乎一樣,開發工具完全一樣,加上 github上的winjs還能直接用來寫網頁,大家都還是說SL的經驗浪費了!
因此,Java換Dart當然更蛋疼了!根本不給程序員活路了!再加上google總是發布東西一看火不起來就幹掉,萬一Dart開發Android火不起來呢,你的投資就更加打水漂了(至少Java還能用來干別的事情對吧,Dart能幹嘛?)
兩個論斷不同時同意或者同時不同意的,都是不真誠,別有用心。
是的,但是你要去學所處時代的最複雜的主流編程系統才會有這種感覺。以我的經歷來說,在1995-2005期間學習了Visual C++的全部內容(C、C++、CRT/STL/ATL/MFC、Windows SDK、COM/OLE/ActiveX)是件感覺很好的事,後來再學C#/.NET覺得簡直簡單得不像話
今天除了要學一遍C++,還要學學Haskell之類的FP才行不輕鬆。
要到生產環境用起來,除了語法,還要把生態,類庫,語言的坑得摸得一清二楚。
容不容易是一回事,能不能吃飯是關鍵問題。所以JS社區總有一小撮人嚷嚷這Script那Script,你看看沉默的大多數不還是一天到晚擼jQuery?
首先,精通一門語言並不容易,以C++為例,看看《深入探索C++對象模型》《STL源碼剖析》《程序員的自我修養:封裝、鏈接和庫》這些書,也許才會發現,想掌握一門語言,對操作系統,編譯原理的東西要比較懂。如果說能輕鬆使用各種API,熟練開發出能工作的軟體,就算精通了一門語言,呵呵,未必。
其次,編程語言本身是一種抽象,是程序員進行軟體功能描述和實現的工具。眾多的編程語言又被不同的設計範式劃分開來,比如常見的過程式語言,C;OOP的代表C++、Java;函數式編程語言Haskell;以及各種雜交,etc。
基於以上簡單分析,回答題主的問題需要區分上下文。如果真的精通了某種語言(真的,真的精通了),那編程語言本身在這位開發者眼裡就沒有那麼神秘了,用什麼信手拈來並不誇張。然而常見情況是,我們大多是編程語言使用者,很少精通,僅僅熟悉而已,如此情況下,如果從C++去轉Java,也就是編程範式類似的前提下,不會太難;如果從OOP轉函數式,我覺得可能要花不少心思吧。
再拿Android為例,真正靠譜的安卓程序員,必定需要對JVM略知一二;iOS同理(我本人沒搞過iOS開發,這是大膽推斷而已)。所以,重點不是你從什麼語言轉到了什麼語言;核心問題也許可以歸結為,要解決什麼問題,什麼語言比較合適,學之,用之,探索之(最後,你精通的不是編程語言,你精通的應該是操作系統,編譯原理,etc)。
不必太拘泥於自己會用什麼語言,做到手中無劍才是我們應該追求的較高境界吧!共勉:-)精通一門語言都很難,就像我,我學編程的,從小就學,一直學計算機,211 985大學畢業,也做過軟體工程師,就拿JAVA來說,你入門也不容易,等你什麼時候達到入職要求,也不容易,我們班50多個人,能入職軟體工程師做開發不到10個,能精通的,估計最多1,2個,什麼是精通,這個沒標準答案,反正我覺得我那麼多年到現在還沒精通,那怕我的領導也沒精通,估計比爾·蓋茨這類也不過是某方面的精通。也不是全通。人的精力有限,精通某方面已經算不錯了。
真心不容易。
感覺不需要轉啊。。。因為Dart應該做不到APP常駐後台,用戶殺不死的地步啊
竊以為不是Haskell轉VHDL、LOGO轉彙編都不算難。但是,想精通任何一門語言,都比登天還難。
08年開始寫C#,11年轉AS3,只用了不到一周就可以寫模塊了
同意 @vczh 大神的說法。不過我想說的是,轉語言簡單,把這門新語言用到生產環境中就難。
有經驗的oc程序員轉swift不是難事,但是需要有充足的學習環境。因為公司是傾向於使用舊技術的,況且swift現在確實屬於成長期。
推薦閱讀:
※Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什麼關係?
※目前工作是單片機開發和C#上位機,未來該朝哪個方向發展,如何轉型嵌入式上層應用開發?
※學習程序語言也會像學外語一樣會受到母語(第一語言)的影響嗎?
※為什麼代碼注釋中有@符號?
※JDK 1.8.0_92 Arrays.sort()方法不可用?