作為程序員應該以什麼樣的態度對待編程語言、IDE和編輯器之爭?
只要有程序員的地方編程語言和編輯器之爭就是月經貼,我個人認為這種爭論還是有好處的,只要別變成撕逼就好了..
在知乎上看過一些這方面的討論,態度一般會有一下幾類1. XXX才是最正確的,其他全都是異教徒,要燒死2. 語言、IDE只是工具,顯擺工具的都是low B3. 不要打架不要打架,在什麼情況下用什麼語言,你們的比較毫無意義但是我覺得這幾種方式都不利於討論和互相學習。但是不討論又不利於互相學習,所以像請教下大家該怎樣對待這種爭論。
多試試,喜歡就用,不喜歡就讓別人用,少吵,少爭,少起鬨。
十年過去了,居然還有人在爭論語言,IDE 和編輯器。十年前我就寫下了這篇文章
為什麼程序員沒有成為飛行員那樣體面的工作
空門/2006
對很多人來說,這個標題未免有些不靠譜。但是這兩個職業並非沒有可比性。早期的程序員也都是一些精英,通常是一些職業數學家,培養一個程序員的成本並不比飛行員低多少。早期電子計算機的成本也非常高,為昂貴的計算機配置優秀的程序員是情理之中的事情。
隨著摩爾定律的不斷應驗,計算機的成本越來越低,界面也變得越來越好。似乎程序員地位的下降是理所當然的事情。但是筆者認為,這並非是程序員失勢的根本原因,而是軟體工業的功利性造成的。下文中提到的飛行員,都是指戰鬥機飛行員。
駕馭比空氣重的飛行器,可能是最有挑戰的工作之一。培養一個飛行員需要大量的時間和金錢,而且需要飛行員本身具有非常高的反射神經和身體素質。而且,優秀飛行員和菜鳥飛行員的差距非常巨大——在二戰中,一個優秀的飛行員可以擊落數十架敵機,有的王牌飛行員的紀錄甚至達到了三位數。
編程並不比駕駛飛機簡單多少,也許一個小學生都能寫出 hello world,但是一個優秀的程序員需要掌握許多專業技能。好的程序員需要非常好的邏輯思維能力和應用數學功底,同時還需要手指具有非常好的靈活性。一個優秀的程序員敲擊鍵盤的速度並不會比文字錄入員慢多少。高級程序員能完成的事情對於初級程序員很可能是不完成的,或者需要的時間超過了一兩個數量級(或者需要初級程序員成長為高級程序員)。
市面上可以買到一打的模擬飛行軟體和五花八門的飛行搖桿。此外,很多人都可以負擔遙控飛機的價碼,能夠遠程控制真正的飛行器。駕駛真實的飛機並不會比編程有趣,大多數時候僅僅是從一點到另一點,即便是戰鬥機駕駛員,也不過是在視距外用導彈鎖定敵人。但是飛行員在大眾眼中是一種非常有傳奇色彩的職業,畢竟有無數的小說、詩歌和電影譜寫了飛行員的傳奇。
市面上充斥著各種編程指南,但是並沒有什麼類似於模擬編程軟體這樣的東西。在大眾眼中的程序員幾乎不存在,他們所熟知的無非是米特尼克這樣的肥胖的黑客。而在中國,程序員幾乎成了高科技民工的代名詞。
飛行員從來不是孤身奮戰的,維持一個飛行員需要很多地勤人員。飛行員需要了解自己的飛行器,但是他們並不需要自己維修飛行器。飛行器很可能是世界上最複雜的一些電子機械混合體,只有資深的工程師可以維修這樣的東西。此外,為了實施飛行任務,飛行員在執行任務時需要地面的指揮,還需要地面雷達站等單位提供數據鏈支持。一架航空母艦上面有數千人,飛行員不過百數人。
程序員就沒有那麼幸運了。有人說程序員像一些孤獨的騎士,但是筆者認為這個比喻並不恰當——騎士還有隨從和一個所屬的組織。程序員似乎是全知全能的,他們需要自己安裝開發軟體,學習各種奇怪的軟體,撰寫文檔,編製和調試程序。我很少看到程序員向他所在公司的信息專家(IT Specialist)尋求幫助,反過來的情況倒是很多。筆者認為,正是因為缺乏分工,制約了程序員的才華。如果把他們當作飛行員,那麼他們不得不自己制定飛行方案,用簡陋的工具建造和修理飛行器,最後還需要承擔一切責任。
每個飛行員都是可以被替換的,任何一個飛行員都可以完成給定的任務。但是,從某種角度上來看,每個飛行員都是獨一無二的,是不可已被替代的。空軍對飛行員的重視遠遠超過了對飛行器的重視,因為他們很清楚,飛機可以按計劃大批量地生產,但是飛行員不能。
嚴格的軟體方法學希望把程序員變成流水線上的工人,認為只要有嚴格的管理手段和工作流程,程序員可以成為一些可以被替換的「零件」。正因為如此,軟體工程中出現了所謂的軟體架構師,無非是認為一個好的空軍指揮官可以讓蹩腳的飛行員使用高性能的飛機就能取得制空權。幸運的是,XP 一類的先進方法學把程序員重新推向了前台,並且提出了結對編程的概念——空軍採用長機、僚機組合已經有幾十年歷史了。
飛行員總是可以享受新技術帶來的便利,例如彩色的 HUD 和頭盔瞄準儀等。當然,他們永遠可以信賴自己的操縱桿,無論它是電傳控制、液壓控制還是機械控制的。總的來說,雖然飛行員需要面對非常複雜的輸入設備,但是它們都是被精心設計的。這些輸入設備可以讓飛行員在最短的時間內完成對突發事件的響應。決不會有一個飛行員依賴層次化的用戶菜單或者用戶手冊。
程序員則要悲慘得多,他們至今還在使用原始的輸入設備。程序員依賴一種為了減緩輸入速度而發明的鍵盤布局,或者說臭名昭著的 QWERTY 鍵盤。從某種程度上說,鍵盤這種設備比駕駛艙中的按鈕惡劣的得多,因為上面的每個鍵都是類似的,沒有任何特別的提示和保護裝置。相當一部分程序員在純文本編輯器中編寫代碼,而且其中一部分程序員可能是程序員中的精英。雖然現代的 emacs 和 vim 已經能根據文法分析用醒目的色彩提示不同的符號的含義,但是它們並不比七八十年代的文本編輯器先進多少。很多人認為一個程序員選擇 emacs 這種原始的編輯器是因為其獨立精神,但是筆者認為是因為所謂的集成開發環境通常還不如這些純文本編輯器好用。現代的集成開發環境提供了很多優秀的特性,遺憾的是為了應用這些特性,程序員不得不經常在鍵盤和滑鼠這兩個截然不同的輸入設備之間切換。至少目前為止,一個高級程序員使用簡陋的 notebook 也比使用集成開發環境的初級程序員強很多。至少對筆者而言,使用集成開發環境並不能提高自己的開發效率。我見過很多優秀的程序員在開發時身邊都放著許多厚厚的參考書,幕上也全都是各種形式的開發文檔。程序員經常在鎖定目標之後再去查詢手冊,了解如何才能將導彈發射出去。
正因為這樣,筆者認為有必要改變現狀。正因為此,筆者認為最重要的是程序員需要像飛行員一樣進行思考,而像飛行員一樣思考需要像飛行員一樣工作,而這隻能從人機界面入手。作為一個實踐者,筆者已經買了由著名的 Logitech 生產的Extreme 3D Pro 飛行搖桿,琢磨如何使用它進行體面的編程工作。
遺憾的是,十年過去了,我還在用 VIM,飛行手柄早就送人了。程序員這個職業大概沒辦法像飛行員那樣光鮮——但是程序員完全可以飛模型飛機啊。糾結於 VIM/EMACS/IDEA 永遠都無法體會到飛行的樂趣。要飛行需要合適的控制器和手柄,例如
不過其實我是來做廣告的:
Bayesian Gossip - 知乎專欄
又及
這是十年前我在 Live Space 寫的東西,那時候我還會在段落前面加兩個全形空格。那時候無人機還沒有流行,遙控飛機還是一飛就能炸的高級愛好。現在開源飛控到處都是,銀輝出的小直升飛機小學生都能飛。和我一本正經的扯淡(我真的買了手柄但是我只是在研究非模態界面而不是編程)不同的是,寫程序沒有變得像飛行一樣,飛行越來越像是在寫程序了。
我拿到 Spektrum DX6 和 Makerfire Microfpv 不到一天,但是我已經很清楚自己是在跟一個非常複雜的軟體系統進行交互。這個不到 $100 的飛行器上有一個 BetaFlight 的固件,也可以刷 CleanFlight 的固件,它的 GUI 是個 Chrome App:
它甚至還有命令行界面:
如果不是它的電池太小,滯空時間太短,我想大概會有人通過空中協議遠程登陸上去做一些命令行調整吧。
在玩具店裡面就能買到 Parrot 的飛行器,它們裝備了更多的感測器,而且運行的是 Linux。我拿到這些飛行器的第一件事情通常是升級固件。
雖然 Parrot 的飛行器讓無人機的門檻降低了很多,但是無人機 DIY 的門檻相對於以前的航模並沒有降低,反而提高了(因為以前的航模根本沒有飛控這種東西,只需要電源、接收器和舵機就能飛)。越來越多的人可以為飛行器編寫軟體,或者使用軟體來控制飛行器。我估計,應該沒有太多飛行員去寫程序,雖然他們也需要跟越來越多的軟體打交道。
另外,想剝奪我一個老程序員資格的,請先看看我之前的回(guang)答(gao):
程序員真的干到35就干不動了嗎? - 空門的回答 - 知乎
看起來,知乎應驗了某個好基友最喜歡說的一句話
NO COUNTRY FOR OLD CODER.
或者我可以這麼做答——作為一個程序員,最好用享樂的態度來寫程序。
PHP是世界上最好的語言,Vim是世界上最好的IDE,記事本是世界上最好的編輯器。
來來來,誰與我大戰三百合?!你說IDE好用,我偏說編輯器逼格高你說編輯器可定製,我就喜歡IDE的傻瓜化就這態度,愛咋咋地
對於這種問題,我一貫的原則是:愛用用,不用滾。
有本事去用記事本。
青龍偃月刀一點都不牛逼,牛逼的是關羽。是關羽讓青龍偃月刀被世人知曉。不過。使得動青龍偃月刀的人,一般也不會差到哪去。能力和工具是兩碼事。
不糾結,看產品、需要選擇語言;跟隨自己的內心選擇編輯器。
前段時間看到題目以知乎為題材能製作什麼遊戲? - 張翔的回答,就用js寫了兩個小遊戲,幾天時間,多快好省。
不想記vm的命令,不覺得手不離鍵盤有什麼意思,正式做c++工程都用vs,只要能快速定位文件、方法、變數這些就好了。開發蘋果的產品,必須用xcode,obj-c。寫安卓的app,肯定要java了,個人覺得 android studio 比 eclipse 好看好用,就用前面的。寫網站,喜歡用php,搭建配置環境簡單,有好用的框架用。幾年前寫一個手機小遊戲,想用lua腳本,想搞一套像unity那樣的,但是用起來么又有很多要調整的,特煩,小遊戲么這麼糾結幹嘛,後來直接寫C++了。總之,我會根據要做的產品來選擇語言;我對編輯器的要求只要能做到幾個快速定位就好了,所以一般就用 vs 、sublime
我算體驗過不少的編輯器和ide了吧,vs2013,DevC,C-Free,eclipse,codeblocks也有vim,emacs,sublime text 23,notepad++,肯定還有我沒用過的,但是好用的也就那麼幾個,你可以都試試,憑個人喜好,這種東西本來就是蘿蔔白菜各有所愛。。 喜歡用哪個就用哪個!有時候可以多個東西一起用。別管什麼爭不爭的,有那時間不如多碼點代碼。
簡要說說我的感受把,如有錯誤請輕噴,。emacs神器,但是使用要求太高,不高也不叫神器,學起來太慢太難。 vim,也是神器,要求比emacs稍低,但還是挺高的! ST,可難可易,可定製性也較好,新手也可以用,用熟練了也可以自己折騰搗鼓,學習難度較低。 notepad++,個人覺得並不好用,也許是我沒怎麼搗鼓吧!平時用Windows記事本都可以滿足編碼要求的我怎麼會覺得一個加強型記事本的好呢! 然後就是編輯器都有一個通病,需要搗鼓很久的配置,什麼編譯器環境變數亂七八糟的 說說ide把! vs2013,新手用有難度,但是功能強大,就是小程序用起來沒意思,開發大工程絕對的神器,畢竟公認第一ide。Devc新手入門利器。。。功能簡單。。安裝快捷!但是用過高級貨的都知道,這東西就是個渣!唯一的好處也許就是給廣大新手們節約了無數時間!C-Free個人感覺太雞肋,還收費!新手用Devc比他好,高手用編輯器或者ide也比他方便!codeblocks裝好過一次,沒用過,有機會問問我朋友,再補充!
eclipse我寫Java用!感覺挺好的,但我還是主點C語言的技能點!就這些了,求輕噴!我不管哪門語言好,哪門語言給我更好的薪資,有助於我成長,並且之後用的到,我就願意學哪門。Ide也是,哪個我用的順手用哪個。比起逼格,我覺得還是按時完成工作少加班才是王道。我倒是巴不得多些吹語言的人,反正越吹,進入這行的人越多,競爭壓力越大。我不是大佬,能力有限,站不到最頂尖的行列,不能和輪子哥談笑風生,所以少點競爭力對我這類人來說是個好事。
開機自啟vs。然後,就這樣。
古人曰:工欲善其事必先利其器。
翻譯:能能力不行裝備補。大道之爭,不死不休。
蘿蔔青菜各有所愛,開發哪個順手就用哪個好啦,個人獨愛sublime2,沒有為什麼,好用,任性
爭論這些太low了。
到了一定境界就無視語言、無視編輯器了,因為不需要敲代碼了。
直男總覺得自己是最牛逼的
怎麼感覺是一堆RMB玩家在赤果果的秀裝備呢?
語言各有各的好,關鍵是看你用它做什麼,天天在那裡討論這個好那個好,你到底有什麼作品拿出來證明下?
聊這些真的是太廉價了,難的是踏踏實實的碼代碼
上課的時候老師都強調學習要做筆記增加記憶,我想問的是,既然都是牛叉程序員,一般都是專精幾門語言,既然這樣,你行,你自己照別人的代碼做一個啊,順便學習別的語言
贊題主,這個問題問的還是比較理性的。
語言之爭,IDE之爭,說白了就是大家在極力的宣告某某語言、某某工具很和自己的需要,用起來很順自己的手,說起來自然是一番溢美之詞!這些固然是好的,可之後又覺得其他人也應該跟自己一樣,也應該覺得這個很好,必須要跟自己有相同的想法,不相同就是你的不對,這樣爭論就起來了。我以為,對於工具和語言,你大可以放心的去宣揚自己所感覺到的好,有人跟你有同感,自然會挺你;有人遇到問題,需要用到你說的長處,自然也就去聽你的。我們只是想讓各種工具盡其所能。
其實沒有那種語言和工具能全部占絕對優勢,看應用領域了。
而爭論,有時也會讓答案更明確,所謂「道理不辨不明」
over!管他們爭做什麼,你覺得哪個好用就用行了別人問,你就說出你的看法,沒什麼大不了的
PHP也敢妄稱語言?
推薦閱讀:
※中國有哪些獨立 OS X 開發者?他們的生存狀況如何?
※如何看待CC++使用大量的宏定義函數?
※不會 tokenizer 和 parser 是種怎樣的體驗?
※關於自己的知識庫的困惑?
※對於一個新手來說,在使用Visual Studio新建項目時,win32控制台應用程序和win32項目、空項目、MFC應用程序有哪些區別?