程序員應該將精力放在研究編程語言本身還是用編程語言創造好的軟體?

問 「側重」可能比較合適.

背景是我一個同事與我閑談時, 側重表達使用了高大上的語言技巧, 而我認為夠用、簡單、好用就可以了,重點在於實現功能.


從我個人的角度來理解,一個軟體,可以分為四層

需求:為什麼要做軟體

業務:需求如何拆解,如何與用戶協調

邏輯:如何正確的完成業務

實現:如何實現邏輯

對語言的運用,會對你的邏輯和實現部分有比較大的影響。好的語言更加貼近你的業務模型,你可以精簡的描述並實現它,寫的快,也不容易出錯;選擇了不好的語言,會讓你在邏輯和實現上繞遠路,甚至因為規模的膨脹而導致目標不可實現。

所以如果你想成為一個領域的專家,語言上當然不能做到太差。畢竟你的水平,是由最爛的部分決定的。


研究編程語言是科學家的事情,創造好的軟體、產生好的想法是產品狗的事情,程序員應該致力於把一個已經存在的想法轉化成一個精確的描述然後解決/實現它的這麼一個事情。


汽車發明之前,人們只想要一匹更快的馬。

真的,我的目的是送快遞,又不是開車,騎馬騎電驢騎自行車都很好啊


利用編程語言,提供最優的解決方案。


我也學學三體搞個公理體系吧。

公理一: 懂的總要比用的多那麼一點點,才能判斷什麼是夠用了。

公理二: 只要不拒絕新的業務且希望精益求精的實現,用的總會觸及懂的上限。

結論是: 總是不夠用啊啊啊。


研究編程語言本身的唯一目的就是幫助人們用它創造好的軟體。但是好的軟體也不是憑空創造出來的。

所以首先程序員應該研究編程語言本身,以便於了解自己手上的工具,不了解斧子鋸子就成不了好木匠,其次程序員應該用編程語言創造好的軟體,實踐出真知呀……


找個可以同時兼顧研究編程語言和用編程語言創造軟體的工作


木匠是專門研究木工工具比較好,還是專心製造好的傢具比較好?


做產品到一定程度一定會感覺到PL是極端重要的研究領域。但是如果一直做一般層次的產品可能永遠感覺不到,因為市面上永遠有現成的工具能快速滿足短期需求


同意 @vczh輪子的觀點,再往下說就有點玩文字遊戲了。

編程語言本身也是一個工具軟體。程序員工程師本質上都是要「創造更好的軟體」,讓「用戶」更方便的解決問題。

只是面對的用戶不同。編程語言的用戶就是我們呀。


工欲善其事,必先利其器!


程序員應該更關注廣度,而最高效獲取廣度的方式是將一門語言學精,然後學其他語言只需要學其它語言的不一樣的特性即可


重點是保證產品質量,提升開發效率


我覺得兩者並不衝突呀,一個從來沒有用工具做出過產品的人是沒有辦法去評估工具的好壞的。就比如石鐮割草,只有當鐮鈍了才會去磨。當有一天程序員覺得語言本身有某些地方不夠效率的時候,自然會想到改變這個工具。


取決於你的目的。

如果你想提高技術水平,應該鑽研語言本身到相當深度,然後考慮如何實現應用,與其他技術協同(比如其他編程語言、資料庫或其他backend技術等);發展方向是該技術領域的專家。

如果想做產品,儘快推向市場,則不需要過於深入(比如底層機制、性能深度優化等)。但知識面要廣,確保實現方案不會太糟,至少要可行。或者你要拉團隊時不會被人忽悠:)

大部分人都是先鑽研語言,然後到開發實際應用,然後其中少數人能總結出工程層面的通用經驗甚至理論,自成體系。然後如果能再結合某個行業的行業經驗,成為一個所謂的「專家」。有一個發展過程。

當然了,也可能最後殊途同歸,最後都是要----賺錢。哈哈哈哈。所以也同意坐沙發的同學的回答。


我覺的先回答這個問題比較好:運動員應該將精力放在先學會走路還是提高自己的跑步速度上?


想想駕駛員和汽車的關係


反正都找不到女朋友


推薦閱讀:

Google對C++的影響有多大?
為什麼 C 語言源程序最後一行要是一個空行?
如何以最小的改動盡量不改變已有代碼的情況下適應不斷變更的需求?
如果要改進C語言,您最希望添加哪些語言特性,移除哪些語言特性?
在知乎這個平台里,你最喜歡哪位C/C++大神?

TAG:軟體 | 程序員 | 編程語言 | CC | 工程師 |