編程語言之間的差異真有那麼大嗎?

軟件開發是一種特殊的職業,特殊到有點匪夷所思,行業從業人員的工種分類很是的不穩定, 好比說古時候有C工程師、C++工程師、VB工程師,後來有了Java工程師、.net工程師、php工程師, 再後來又有了前端開發工程師、nodejs工程師、 golang工程師、python工程師什麼的, 反正每隔個幾年就會莫名其妙的蹦出來幾種新的軟件開發職業,讓一批又一批的人趨之若鶩。而後這些不一樣的職業卻又幹着一些相互重疊的事情, 好比說網站,Java、.net、php工程師均可以作;好比客戶端軟件,C++、VB、Java、.net也均可以作;好比說服務器程序,C、C++、nodejs、golang又均可以作php

並且這些使用不一樣語言作不一樣類型軟件的工程師相互之間還具備排它性, 除了少數狀況之外, 假如你想讓一個Java網站工程師去開發和維護.net或者php技術開發的網站, 很差意思 ,沒門! 反過來也同樣。至於理由,用的最多的應該就是「不會」「沒興趣」「學習成本過高」之類的,總而言之,就算這些不一樣的技術是用來作相同事情的,就算它們在作這些相同的事情時總會用到一些類似的技巧,但它們之間老是有差別的,除非不一樣的技術在作某些相同的事情時用到的類似的技巧很是的多並且抹平它們之間差別的成本很是的低,不然想要在不一樣的技術之間平滑的過渡老是很困難的。就拿使用不一樣的技術作網站這個例子來說, 技術間相同之處有http相關的內容、數據庫使用、服務器原理等,不一樣之處反正逃不出語言、類庫、框架,其實語言就能夠把這三項內容給囊括了, 由於它們都屬於語言的範疇。語言對於不少開發人員來講就是一坐不可逾越的大山, 或許由於沒能力,或許由於沒興趣,或許由於沒精力,可是反正就是過不去。css

再從另外一個角度來分析。 像C++、Java、.net、JS這樣能夠適應各類應用場景的語言又能派生出許多種職業,如C++客戶工程師、C++服務器工程師、Java android 工程師、 Java網站工程師、網站工程師、.net windows客戶端工程師、JS前端開發工程師、nodejs服務器工程師,看看這架勢, 光一種語言就能造出N種工程師,恐怖。上面咱們講到, 使用不一樣的技術作一樣的事情 ,而這裏正好相反, 使用相同的技術作不一樣的事情。 以這種方式劃分的不一樣種類的工程師,相互之間也具備必定的排它性,但整體來講沒有根據技術來劃分種類的方式來顯有敵意,主動想在不一樣種類之間過渡的程序員數量也更多,然而,相互之間過渡的成本卻一點也不比在不一樣技術之間過渡來的低。就拿如今最火爆的JavaScript語言來講, 它原來是一種網頁腳本語言, 是用來編寫網頁特效的, 隨着互聯網的火熱發展, JavaScript語言也開始大行其道, 近年來還發展出一種叫nodejs的服務器編程技術,主打高併發高性能, 高併發和高性能啊,逼格多高的技能,掌握了就好像獲得了全世界,所以無數開發人員爲之瘋狂。本來使用JavaScript的前端開發工程師天然也不例外,並且這種技術使用的仍是他們看家的語言, 彷彿佔盡了先天優點。 然而, 事實上, 真正從網頁前端開發過渡到nodejs服務器開發的工程師數量寥寥無幾,由於要抹平二者之間差別的成本很是高,換言之它們雖然用的都是JS, 可是實現差別卻很是的大。 JS網頁特效和nodejs服務器程序的類似之處, 無非就是JavaScript語言, 然而除此以外卻再沒一絲重疊了。作前端頁面時使用的html、css、jquery等等和其它各類框架在寫nodejs程序時徹底沒有一絲用武之地,並且寫nodejs時須要掌握的http較深層次的原理、網絡通訊、數據庫技術等每一項技術都不是省油的燈、好啃的軟骨頭,而這些正是大多數前端程序員未掌握的,所以過渡的成本的確很是的高, 難度很是的大。 再好比說Java技術的使用,Java服務器程序員善於使用服務器、數據庫相關技術,而一樣使用Java做爲開發語言的android應用,開發時倒是測重於界面繪製、控件使用、兼容性問題克服等技能,假如服務器程序員想轉移陣地,以前儲備的絕大多數武器將所有報廢,開發新程序戰鬥力幾乎爲零, 一切從頭開始,這成本不可謂不大, 難度不能夠謂不低,沒有辦法過渡也在情理之中。html

在談如何在不一樣技術或者開發不一樣種類軟件之間過渡方法以前, 咱們先談談到底有沒有必要去過渡。 若是你是一個一直作Java網站開發的程序員, 畢竟如今IT行業如中午12點的太陽如日中天,或許還不到12點也有可能,從業人員數量巨大,長江後推前流,前浪尚未死在沙灘上後浪又一波波的繼續跟上來了, 所以,你使用Java作好網站開發也足夠混口飯吃了。假如你能力比較強,資歷上來之後, 當個部門主管或者項目經理,以後若是一路順風再當個CTO或者對行業瞭解的足夠深入,本身創業當CEO,而後迎娶白富美, 走上人生巔峯, 那麼我除了恭喜你之外,也只能羨慕的流口水, 由於這畢竟只有少數人能作到,他們須要同時具有天資、能力、運氣,而這些不是每一個程序員都能擁有的。身爲一個普通的程序員,若是職業生涯一直使用一種語言作一件事情,如一直使用php作網站, 那我以爲是一件至關枯燥乏味的事情。此外, 工做中總會碰到這樣那樣的意外,好比說你在使用Java時上級忽然扔你一個php網站讓你維護;又或者有一個需求使用網站技術已經沒有辦法知足了,須要一種新類型的程序才能把這個問題解決;這個時候你應該怎麼辦?固然,你能夠搞不定, 由於這不是你的職責範圍, 可是我想, 搞定總比搞不定來的強。前端

如何搞定? 具體一點就是如何使用不一樣技術開發相同的程序?如使用php、Java開發網站和使用相同的技術開發不一樣的程序?如使用JS開發前端頁面和使得nodejs開發服務器程序,或者使用c#開發網站或者開發windows客戶端 。表面上的解決辦法就是須要作什麼時就學什麼。 可是首先,臨時抱佛腳確定是來不及的, 這跟考試是一個道理;其次,軟件開發行業的技術萬千上萬,不一樣種類的軟件也數之不盡,咱們的時間有限, 不可能也不必花大量的時間在這個上面,只有那種沒性生活的屌絲和剛畢業的學生狗才會這麼去幹。 最有效的辦法就是學習一系列通用的技術,掌握這些技術之後,使用不一樣的技術和開發不一樣類型的軟件的成本和難度就會大大的下降,就像張公子學會九陽神功之後妹兒也一把一個準。 那是否是真的有這種包治百病的靈丹妙藥或者能夠開任何鎖的萬能鑰匙呢? 我想, 確定是有的。 試想一下,軟件開發的一切都是基於計算機的,也就是這塊把CPU、內存、硬盤、主板、顯示器、鍵盤鼠標拼起來的積木, 咱們只要掌握了它的運行原理,也就意味着咱們就是這個虛擬的軟件世界的主人, 想幹什麼就幹什麼, 想怎麼幹就怎麼幹。那麼如何掌握這臺一屁股就能坐碎可是卻牛逼轟轟的不得了的機器嗎? 其實很容易,只要把微機原理、操做系統原理、編譯原理、數據庫原理、算法原理等等各類原理都學一遍,而後包你代碼寫遍天下無敵手。 看到這裏大家是否是特別想罵人, 以爲我說的是人人都知道的廢話, 卻又沒有幾我的能作的到。 其實我只是想說, 大家啊上學的時候必定要好好的用功, 只有在那時候你纔有這個精力和智力去上這些高冷且難以征服的技能,而後高潮。 畢業之後, 鐵定不行了,有心無力!node

相關文章
相關標籤/搜索