Soft_Job 板


LINE

討論程式語言的前景怎麼會變成比較程式語言的功能起來? 很多朋友都有一個誤區,那就是你的前景決定於你會什麼程式語言。 這並不完全是對的。 第一個誤區 --- > 你的前景決定於你用程式語言解決問題的能力 > 不是「你會不會某種程式語言」。 程式語言是工具,工具,工具。 重要的話說三次。 就跟你想在法國長住你就得學會法文,想在日本常住,那就得學會日文, 就算你想新加坡,菲律賓長住,雖然是他們官方語言是英文,但是也是有 當地的用法,你還是得學會。 你可以用中文,英文去當地旅行,但是當你在當地需要解決生活的問題的 時候,用更適合的語言,可以讓你取得更快,更好的優勢。 我很久以前就談過,作為程式開發人員,程式可以分成「體」「技」「用」 三層。 體是程式語言的各種概念,比如多執行緒,記憶體管理,設計模式, ,單元測試,Mocking,TCP/IP,Protocol,類神經網路概念,決策樹理論, 動態規劃,隨機森林....這些橫跨程式語言的觀念。 技是程式語言,以及程式語言的生態系。 用是你能用程式語言解決的各種問題,比如,撰寫跨平台遊戲,寫App,預測 明天股市漲跌,比對病毒模式。 體,有的學校會教。技,網路上都能自學,花錢上課也都可以。「用」才是難 關。 用才是價值,寫程式不能為組織賺錢,你寫的程式解決了組織的問題,解決了 客戶的問題,才是你的價值。 第二個誤區 --- 缺乏對程式語言多面向的了解 很多人對於程式語言缺乏多個面向的了解,只從技術的觀點看程式語言本身 ,卻沒有想過,程式語言的存在包括多個面向,所以才會有這麼多程式語言存在。 舉例來說,前面有人說Java程式每次都馬要重新編譯1, 2分鐘才能執行,我是建議 他去Google一下Hotswapagent跟JRebel是什麼東西。 當你想要去貶低一個不是你熟悉,或是不是你主要的程式語言的時候,往往只會看到 一個程式語言某方面了劣勢,而忽略的在某方面的優勢。 你覺得中文用起來很簡單,很熟悉,但是從西方人的角度看,中文是這個地球上最難 學習的語言,他沒有曲折,沒有時態變化,還有可怕的量詞。但是你不會有這個感受。 程式語言也是一樣的。 延續第一個誤區,你要解決問題,不得不受到Triple Constraint的限制:Schedule, Cost, Quality。 「Java程式語言的效率不可能與C比較」這個命題基本上是胡扯。 對某些人而言,C儘管在好的架構下,可以達到比較好的記憶體管理,但同樣的 也更容易產生memory leak,你只考慮了你自己,卻沒有考慮到,在組織當中, 跟你一樣有水準的工程師不一定那麼多,Java執行效率較慢,但他更安全。 也許你的Performance不是第一考量,也許你需要有更好的企業架構。 Java不是單打獨鬥,Java有整個JVM的生態系在支援它,而且是非常成熟的生態系。 Spring Framework幾乎集成了所有企業級的功能,打到官方EJB自爆,其他語言許多 概念,都是衍伸自Java,例如xUnit,logging,DI。 Mybatis, Hibernate都是出道超過10幾年的框架,到現在還是可以運作得很好,有 成千上萬的成功企業使用Java。 也有人說Java不適合微服務吧,那他也可以去Google一下Spring Boot。 Java也有很好的向下相容性,10幾年前的Code,你用現在的JDK9去編譯,大多數狀況下 它都能很好的運作,所以對於開發出來以後會用上10來年的系統,Java會是一個比較 容易的選擇。 你能用.Net Framework去編譯VB6的程式嗎?或是ASP?Python 2 migrate 到Python 3 ,從2008年推出到現在快10年了,他還在Migration。 我並不是說Java很好,而是往往很多人想說,「天啊,你們公司還在用Java,真老」 ,或是Java缺乏某某功能,比如GC還不能自動控制之類的,那都是用自己偏狹的一方 觀點去看一個程式語言,而沒有考慮它使用的場合,限制,要解決的問題,也忽略了 整個生態系的完整程度。 我們公司還在用COBOL咧,前端還不是可以吐json接AngularJS跟Vue? 第三個誤區 --- 只能會一個程式語言 我不是獨尊Java,Java也能做深度學習,有ND4J,Deeplearning4J,甚至直接跟 Spark或Hadoop結合,但Python深度學習這方面起步早,有Tensorflow還有Scikit-learn 這些機器學習套件,他在這方面的生態系比較成熟一些,資料也比較多,我要 搞深度學習,首選還是Python,事實上我們公司主要用Java,COBOL,但Python也有拿 來做機器學習一些data使用。 但不代表你用了Tensorflow,你就一定要用Django做資料視覺化的展示,或是寫ERP程式 ,你一樣可以利用Java跟Spring打造你的企業應用,用Node.js的socket.io做即時資料 交換,用Meteor寫App,如果要拿去賣,賣像要更好就再用Swift跟Andorid打造App, 只有內部使用可以考慮Xamrin。公司跟微軟合作良好就去用.Net Framework,同時要 管理server side deploy跟docker image management就再用shellscript跟Ansible。 沒有人可以限制你,只有你要自己限制自己,你會得東西越多,你越能在Triple Constraint中找到完美的平衡,選擇最適合的解決方案跟生態系。 武術分為很多流派,拳擊,桑博,詠春,散打,空手道,但在不同規則下,不同的武術 有不同的優勢,沒有最強的武術,只有最適合的功夫,最後站在擂台上的,才是勝利者。 另外一個重點是「體」,夠有錢,甄子丹也打不過馬師傅。 當然你要專精一個程式語言是可以的,但是活用,可以為你取得更多的機會。 最後 --- 你要解決什麼問題,決定了你要使用什麼樣的工具,但只要你體質夠強壯,任何工具 都能為你所用。 我們從2015年起用Spring打造了一個同仁不知道那是Spring的Spring框架(因為 已經變成convention over configuration了,我們還借鏡了一些其他語言才有的觀念) ,還有一個專門的部署平台,提供多達80個人共同開發,目前支援超過1400個 Controller, 1000個service以及超過120個Restful Service的ERP以及各類周邊系統。 當然我們也有開始試著用一些R, Python, 跟Node,做一些非ERP有關的東西。 Logging/monitor system也從無到有建立了Graylog/Elastic Search叢集,用Sonarqube 做static scan,現在整個Gradle已經快變成天書,但是所有開發同仁可以完全 沒有Spring, 沒有Gradle的知識。 我們還在把三四十年來的COBOL程式改成Java,我們希望程式語言還可以再戰20年, 而且不要變化太快,但也不要跟C一樣缺乏開發效率,Java看來是比較合理的選擇。 人力盤點的結果,再加上對於各種成本考量,Java可能是最好的選擇,儘管我們 還是沒買JRebel導致SQLMap改了之後還是要rebuild,hotswapagent有點兩光。 但這不就是推動Unit test以及mocking的一項不錯的動機嗎? 不同產業,不同環境,要解決的問題不同,你的老闆是誰,決定了你該會什麼 ,要用什麼。 決定你的目標,再看你的體質,選擇最適合的工具。我想這才是大家選擇程式語言 前景的目的吧,不要再比較誰好誰壞了,請先把你的命題想好,要解決的問題說清楚 ,才有討論的價值。 不然跟麥格魯戈跟五月天打拳擊沒有兩樣。 -- 所有我的作品,請到..... ~四十八個德瑞克~http://blog.derekhsu.net 馬皇本紀:http://blog.derekhsu.net/2009/08/821 上官先生傳:http://blog.derekhsu.net/2009/08/825 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.105.222.185
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1514303283.A.E26.html ※ 編輯: derekhsu (112.105.222.185), 12/26/2017 23:49:48 ※ 編輯: derekhsu (112.105.222.185), 12/26/2017 23:55:58
1F:推 senjor: 整理了很多職場經驗,用心推 12/27 00:30
2F:推 icydream: 推 12/27 00:55
3F:推 shps951015: 用心推! 12/27 01:00
4F:推 hegemon: 這才是現實的工作狀況... 12/27 01:24
5F:→ hegemon: 很多時候需要用到combo技才能發揮最大的戰力 12/27 01:25
6F:→ hegemon: 某些語言就是有足夠多的套件支援,真的用到的時候不選這 12/27 01:26
7F:→ hegemon: 種,反而硬拿其他語言去硬刻才真的傻了 12/27 01:26
8F:推 darklose: 推這篇觀念 12/27 02:15
9F:→ doomdied: 舉例錯誤,.net framework跟asp是不同的東西,當然不行 12/27 02:48
10F:→ doomdied: jsp換個jdk版本可能就compile不起來了好嗎 12/27 02:53
11F:推 wanlinlin: 推經驗分享 12/27 07:46
12F:推 imreader: 推,我還是先去用 python 跟 node.js 好了 12/27 08:25
13F:→ imreader: 懶人還是用可以偷懶的工具,比較實在,多點時間打電動 12/27 08:26
14F:推 JohnRoyer: 推程式語言只是一種工具 12/27 11:35
15F:推 senjor: 不同的程式語言之於CODER就如同不同的繪圖軟體之於繪師 12/27 12:04
16F:→ senjor: 如果繪師之間戰什麼繪圖軟體才最好其實會感覺層次有點低。 12/27 12:05
17F:推 Vendy: 所以我覺得大家避而遠之JAVA很奇怪,明明 spring boot 用 12/27 12:20
18F:推 Vendy: 起來很方便阿~ 12/27 12:23
19F:推 ripple0129: 繪圖師討論工具很正常吧,不知道為什麼要把討論講成是 12/27 12:27
20F:→ ripple0129: 戰,就好比photo impact跟photoshop,討論哪款適用或 12/27 12:27
21F:→ ripple0129: 開發某種用途的圖形的方便性。今天出來一款新的繪圖工 12/27 12:27
22F:→ ripple0129: 具,能夠在某應用場景下比photoshop還好用,但並沒有 12/27 12:28
23F:→ ripple0129: 說photoshop就廢掉。 12/27 12:28
24F:推 senjor: 討論當然不錯,不過我說戰當然指的是拿來戰的那群人 XD 12/27 12:29
25F:→ senjor: 例如說photoshop使用率下降了,用photoshop的塊陶喔~ 12/27 12:29
26F:推 GlinX: 剛剛看才注意到這篇文章 推 寫得不錯 12/27 12:29
27F:→ GlinX: 現在工作需求的趨勢都是多技能吃香了 前端後端不分 直接來 12/27 12:35
28F:→ GlinX: 個全端 只是資訊人員很累就是 一直有新東西新概念 12/27 12:35
29F:推 ripple0129: Springboot的方便是對比過去的Servlet與SpringMVC,再 12/27 12:36
30F:→ ripple0129: 對比node或go會發現更方便 12/27 12:36
31F:推 ripple0129: 不用暗喻是我了,我單純很理性分析個人觀感,畢竟語 12/27 12:40
32F:→ ripple0129: 言要學習時間的投入,對資深人員是沒差往往都要碰多語 12/27 12:40
33F:→ ripple0129: 言,但是對新手在選擇語言時會是很好的參考價值。而 12/27 12:40
34F:→ ripple0129: 不提供有參考價值意見無意義的噓或捧個人覺得沒什麼 12/27 12:40
35F:→ ripple0129: 幫助的。 12/27 12:40
36F:推 Ommm5566: 看前幾篇的推文就知道誰在戰 因為XXX語言正在下降 12/27 12:46
37F:→ Ommm5566: 所以大家不要用這種邏輯 12/27 12:46
38F:→ Ommm5566: 或者是我不會OOO 所以不使用這個語言 12/27 12:46
39F:→ Ommm5566: 因為自己不會只好貶低來提升自己不會的高尚 12/27 12:46
40F:推 Ommm5566: 而不是說某語言在特殊問題有優勢這種討論方式 12/27 12:49
41F:推 ripple0129: 我對號入座一下吧,我從來沒打過大家不要用這句話, 12/27 13:23
42F:→ ripple0129: 不知道哪邊看到的。再來Java是我主力語言,只是對於 12/27 13:23
43F:→ ripple0129: 學習成本以及開發速度的關係我老闆不愛用,所以只能 12/27 13:23
44F:→ ripple0129: 捨棄Java。而Java的在台灣很大會選用的原因事實上有 12/27 13:23
45F:→ ripple0129: 不少已經是因為人員取得方便以及各種解決方案也有許多 12/27 13:23
46F:→ ripple0129: 的成功案例這方面的面向。我個人是對Java抱持悲觀但 12/27 13:23
47F:→ ripple0129: 不代表我就捨棄了Java,事實上Java在現階段還是有不可 12/27 13:23
48F:→ ripple0129: 取代性,太多的舊案包含我們公司也有,仍然還是要繼 12/27 13:23
49F:→ ripple0129: 續使用Java。 12/27 13:23
50F:推 hegemon: 我覺得台灣很多新創團隊犯的錯誤就是看到什麼潮就跟風用 12/27 13:48
51F:→ hegemon: 什麼..卻沒看看開發環境,套件是否成熟... 12/27 13:48
52F:推 vi000246: 哪個語言實用就學哪個 我也是覺得多多益善 12/27 13:54
53F:→ vi000246: 像我就會分成工作用 寫小工具用 寫side project用 12/27 13:55
54F:→ vi000246: side project又要看性質決定用哪個語言 12/27 13:55
55F:推 kaitokid1214: 講超好的 小弟剛進公司寫一年多的 code 真心覺得T字 12/27 15:00
56F:→ kaitokid1214: 型發展超重要 12/27 15:00
57F:→ zenixls2: micro也可以用Akka吧,不用侷限在spring上 12/27 15:14
58F:推 gmoz: 推 12/27 15:36
59F:推 Sidney0503: 我不是說r大 而是某個人說不會thread所以不使用 12/27 15:54
60F:→ Sidney0503: 我說不會用memory所以C很爛 還有人認同 12/27 15:55
61F:→ Sidney0503: 戰java的理由是自己不會用 這種文章還真有"建設性" 12/27 15:56
62F:推 Sidney0503: 搞得我都不知道哪些人是反串 12/27 16:14
63F:推 druid0214: 整個系列看下來 不少分身www 12/27 16:25
64F:→ Argos: 但我還是覺得讓JavaScript壯大是程式語言界最大的錯誤 12/27 17:18
65F:→ Argos: 另一個錯誤是Flash 還好它快死了 哇哈哈哈哈哈哈 12/27 17:19
66F:→ Argos: 沒有最好的只有最適合的 這句話大家都會講 但事實上真正的 12/27 17:20
67F:→ Argos: 問題是在於「你怎麼知道這時候用這個是最適合的」? 12/27 17:20
68F:→ Argos: 考量再多這也沒辦法量化 最後還是選用什麼技術還是取決你的 12/27 17:21
69F:→ Argos: 感覺 尤其是當解決方案有好幾種都看起來很適合時 12/27 17:22
70F:→ Argos: 就變成「我覺得XXX應該會比較好」 12/27 17:23
71F:→ nelley: 推 12/27 18:32
72F:→ y3k: 應該說 在你遇到問題時選擇你會的東西之中最適合的 12/27 18:51
73F:→ ezaki: 推這篇,沒有高下之分,語言也是很難比較出來的東西 12/27 22:09
74F:→ ezaki: 硬要比就只能比單一功能面的東西,聽到都有點無力感 12/27 22:09
75F:推 onthesea: 好文推 12/27 23:04
76F:→ alan3100: microserivce 有很多範本是akka 12/27 23:32
77F:推 silverzeus: 優文給推~~ 12/29 11:22
78F:推 v9290026: 推 12/29 23:36
79F:推 atpx: 推薦! 12/30 01:37
80F:推 vvind: 推 12/30 16:47
81F:推 vencil: 推這篇 12/30 19:25
82F:推 Naturetee: 推 12/31 21:24
83F:推 allnun: 推! 01/01 10:09
84F:推 Falldog: 推 優文 01/02 14:36
85F:推 a42006310: 推 讚讚 01/14 23:49







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether 或 站內搜尋

TOP