導航:首頁 > 程序命令 > 程序員之間最容易引戰的話語

程序員之間最容易引戰的話語

發布時間:2022-08-26 16:52:50

㈠ 百戰程序員編程語言有幾種

把編程語言比喻成車:
Ada 是輛丑到極點但是永遠不會出故障的坦克。
C 是輛賽車,它能跑得超乎想像得快,不過每跑個 50 英里就會拋錨。
Cobol 號稱是輛車,不過沒有哪個有自尊心的駕駛員肯承認曾經開過。
C# 是輛競爭模式的家庭旅行車。一旦你開過它,你就不會再用其他競品廠商的產品了。
C++ 是輛大馬力版本的 C 型賽車,它額外提供了成打的特性,而且每跑 250 英里才會拋錨,不過當它真出問題的時候,沒有人能找到究竟是哪兒壞了。
Eiffel 是輛內置了法國口音駕駛說明的汽車。他會幫你快速地找到錯誤並從中學到東西,不過你要是敢跟他爭論的話,他會罵你然後把你從車里扔出去。[來自 Daniel Prager ,稍有修改]
Erlang 是一個車隊,它們會互相協作把你送到任何你想去的地方。想要每隻腳各自操縱一輛車還是需要一些練習的,不過一旦學會了之後你就可以駕駛著它們通往其他方式難以企及的地方了。還有,你用了那麼多輛車,所以就算有幾輛壞掉也沒什麼可擔心的。
Forth 是你親手用套件組裝出來的車。你這輛車不論長相還是功能都沒必要和別人的一樣。不過,Forth 型號的車只能倒著走。
[Digg.com 網站上的評論,來自 256byteram(我忍不住要把它加上):]
FORTH LOVE IF HONK THEN !(譯註:抱歉我實在不知道這句話是啥意思……)
Fortran 是輛非常原始的車。它能跑得很快,前提是你要始終在完全筆直的道路上開。據說學開 Fortran 型汽車會導致你再也沒法學開其他型號的汽車了。
Java
Java 是輛家庭旅行車。它駕駛起來很容易,開起來速度也不會太快,不至於傷到你自己。
版本1:Haskell 是輛設計極端優雅漂亮的車,傳聞它能開到非常極端的地形中去。當你試圖駕駛它的時候,它並不是真的沿著道路在前進的;實際上,它是不斷把自己和道路進行復制,每次成功復制之後,車在路上都會比上一次更遠一點。應該還是有可能按照傳統的方式來駕駛它的,不過你的數學能力不足以找出這個辦法來。
版本2:Haskell 並不是輛真的車,它是一個抽象的機器,能夠詳細地告訴你駕駛這個過程應該是什麼樣子的,如果你願意的話。你必須把這個抽象的機器放到另一台實際的機器裡面才能開動它,別問這個實際的機器是怎麼運行的。還有一種方法,你可以用多台抽象的機器造出另一台抽象的機器,然後把它交給那台實際的機器,這樣就能一個接一個地完成你的旅途了。[Monadic 的版本]
版本1:Lisp 看起來像一輛車,不過經過足夠的改裝,就能把它變成非常有效的一架飛機或一艘潛艇。
版本2:一開始它看起來一點兒都不像一輛車,不過時不時地你也能看到有人在開著它轉悠。終於有一天你決定多了解一下它,然後你意識到它其實是一輛能造出更多汽車的汽車。你把這個發現告訴了朋友,不過他們都大笑著說這些車看起來太奇怪了。至今你仍在車庫里留著一輛,期待著哪天能把它開上路去。[來自 Paul Tanimoto]
Mathematica 是輛設計得很好的車,它從 Lisp 型汽車那裡借鑒了大量的東西,卻連一點兒應得的贊揚都不給它。它能通過方程計算出到達目的地最高效的路徑,只不過這要花上一大筆錢。
是輛設計給新手用的短途旅行車,通常都是開往那些 Mathmatica 型汽車常去的地方。在那些地方這車開起來非常舒服,不過只要你偏離了路線,哪怕只有一點點,它就會變得非常難以駕馭,以致於很多勢利的司機根本就不承認它是一輛車。
Ocaml 是輛非常性感的歐洲車。它不像 C 那麼快,但它從不出故障,所以結果你反而會花更短的時間到達目的地。不過因為這是法國,所有的控制裝置都不在它們平時該在的地方。
Perl 應該是輛挺酷的車,不過駕駛員手冊卻難以理解。另外,就算你能找到方法去駕駛一輛 Perl 型號的車,你也開不起來別人的 Perl 型汽車。
php 是輛熱狗車(Oscar Mayer Wienermobile),它非常古怪、又難以駕馭,但是所有人卻還是想開它。[來自 digg.com 網站的 CosmicJustice]
版本1:Prolog 是全自動的:你告訴它你的目的地是什麼樣子的,然後剩下的駕駛工作它就全搞定了。[Paul Graham附加的:]不過,大多數情況下,確認目的地所花的工夫,和你直接開過去也差不多了。
版本2:Prolog 這輛車上裝了一個獨特的試錯型 GPS 系統。在通往目的地的路上,它會一直往前開,如果走到死胡同了,它就調頭回來再試試別的路,如此不斷往復,一直到目的地為止。[我忘了是誰建議的這一條]
Python 是輛非常棒的給初學者用的車,就算沒有駕照也能開。除非你想開得超級快,或者想開去很危險的地方,否則你可能永遠都用不到別的車。
Ruby 這輛車是因為一次 Perl、Python 和 Smalltalk 三車相撞事故產生的。一個日本的機師找到了這些車的碎片然後拼成了一輛車,很多司機都覺得這比那三輛車加在一起還要好。不過也有些司機會發牢騷說 Ruby 型汽車的好多控制器都是重復的、甚至有三份,而這些重復的控制器在某些特別的情況下又稍有不同,這會讓這車開起來更麻煩。據傳說重新設計的工作已經在進行中了。
Smalltalk 是輛小型汽車,原本是設計給那些打算學駕駛的人用的,不過因為它設計得太棒了,即使那些有經驗的老司機都喜歡開它。它速度並沒有很快,不過你可以把它的任何一個零部件拿下來改造改造,讓它更符合你的期待。古怪的事情是,你其實並沒有真正地駕駛它,你只是發了條消息讓它去什麼地方,然後它要麼就開過去了,要麼就告訴你它不懂你在說啥。
版本1:匯編就只是個發動機。你得自己把車子造出來,還得在它跑的時候手動給它加油。不過只要你足夠小心,它就能像來自地獄的蝙蝠(a bat out of hell)一樣飛速前進。
版本2:匯編:你自己就是那輛車。
如果編程語言是種武器:
C 語言是 M1 式加蘭德步槍,很老但可靠。
C++是雙截棍,揮舞起來很強悍,很吸引人,但需要你多年的磨練來掌握,很多人希望改用別的武器。
Java 是 M240 通用彈夾式自動機槍,有時它的彈夾是圓的,但有時候不是,如果不是,當你開火時,會遇到 NullPointerException 問題,槍就會爆炸,你被炸死。
Scala 是 M240 通用機槍的變種,但它的使用手冊是用一種看不懂的方言寫的,很多人懷疑那隻是一些夢話。
JavaScript 是一把寶劍,但沒有劍柄。
Go 語言是一種自製的「if err != nil」發令槍,每一次發射後,你都必須要檢查它是否真的發射了。
Rust 語言是一種 3D 列印出的槍。將來也許真的能派上用場。
bash 是一個十分礙手的錘子,你掄起它時會發現所有東西看起來都像釘子,尤其是你的指頭。
Ruby 是一把外嵌紅寶石的寶刀,人們使用它通常是因為看起來很炫。
PHP 是水管子,你通常會把它的一段接到汽車的排氣管,另一端插進車窗里,然後你坐進車里,開動引擎。
Mathematica 是一種地球低軌道粒子大炮,它也許能夠干出很神奇的事情,但只有付得起費用的人才能使用它。
C#是一種強悍的激光大炮,架在一頭驢子上,如果從驢子上卸下來,它好像就發不出激光。
Prolog 語言是一種人工智慧武器,你告訴它要做什麼,它會照做不誤,但之後,它會弄幾個終結者出來,燒掉你的房子。
Lisp 語言是一把剃須刀,有很多款式。只有尋求刺激和危險的人才會使用它。
希望可以幫到您,謝謝!

㈡ 什麼才是程序員的核心競爭力 知乎

姚冬回答的非常好,我狗尾續貂的說幾句。

我們都知道學習能力很重要,那麼學習能力從何而來,除了去看書上課這種,如何在實踐工作中學習成長?
我之前微博說了一個籠統的概念,什麼是能力? 對待問題的態度,以及處理問題的思路和方法。

先說態度

你伺服器偶爾出501錯誤,也許比例不高(知乎也出現過很多次),很多程序員,沒錯,是很多,假裝看不見,不在乎,或者歸咎於人品問題。 這就是態度問題。
再往後,負載高了或者其他什麼原因,突然頻繁出現501錯誤,不去追尋深入的原因,而是找各種借口, 什麼IDC服務商不好,伺服器品牌不好,操作系統不好,資料庫不好,CDN不好,網路狀況不好,web server不好,甚至,直接對Boss說我們被DDOS啦!(遇到過,幫他Boss找過多個安全專家會診,最後發現根本不是DDOS,是程序員太爛。)

這就是態度,觸目驚心,如果能對問題有敏感性,能知道對任何小的,輕微的問題有足夠的敏銳度,你就有了一個快速成長的基礎。對問題的敏銳度是非常重要的。很多性能或程序邏輯上非致命的bug,在不夠敏銳的時候是發現不了的,但是一旦進入特殊場景就會驟然爆發,你多一點敏銳度,就會減少這種危機的風險。

第二個態度是解決問題的態度,有人對自己的解決方案信心滿滿,認為萬無一失,但有的人就會多留一條後路;就好比你說我伺服器要不要做安全加固,肯定要做對不對,要做到盡可能嚴謹和周全,但是你資料庫保存密碼的時候是不是還要加密?而且要隨機salt,不就是防止萬一依然有漏洞被人拿庫怎麼辦么。程序也一樣,以前寫的一些服務端守護進程,有bug,會莫名其妙的終止,這個bug當然要定位,要修復,但是同時,寫一個cron檢查這個守護進程狀態,一旦遇到終止給予自動恢復,這就是第二手准備,即便你多麼不希望他執行,這個准備還是要做的。對問題 做兩手甚至三手准備,也是優秀程序員,架構師的關鍵素質。

第三個態度是基於溝通與理解的態度,產品或運營提了一個不靠譜需求,一句話打回去當然很爽很威風,但是有沒有仔細溝通分析過,這個需求基於怎樣的實際訴求,這個實際訴求有沒有更合理的實現途徑,一句話「這個沒法做,這個實現成本太高」,不是正確的溝通態度,而且,最優秀的產品,往往是實現了那些原本人們認為無法實現的訴求。

這樣的態度,才有了一個持續進步的基礎,下面說思路和方法。

優秀 的程序員和平庸的程序員,如果只看敲打代碼的速度,我覺得是分不出來的,也許每人都可以一天寫很多行代碼,但是遇到問題後,平庸的程序員的解決效率,和優秀程序員相比就會有天壤之別。 所謂解決效率,不外乎對bug的分析、定位,以及 思考。

最基本的一條,看執行日誌,看各種日誌,web server的日誌,資料庫 的日誌,慢查詢日誌,binlog日誌,php的錯誤日誌,等等等等,線上出問題瞎猜連日誌都不看的大有人在。看日誌不仔細不完整的也大有人在,你能去認真研究日誌已經超越很多人了。

第二條,模塊測試和斷點分析,程序員一個壞習慣就是上來就寫很大一坨代碼然後再執行,不知道一個模塊一個模塊來寫來測試,執行出了問題不知道設置斷點,縮小范圍逐步分析。斷點分析非常簡單,將整個代碼中插幾個中間輸出,觀察哪個環節出了問題,或者觀察每個環節的系統開銷,對調錯和性能優化都非常重要,高手們大概認為這是ABC的東西,但是就這玩意我看到的大部分程序員都沒有這個習慣。

第三條,錯誤信息 的理解和搜索,搜索引擎上有各種豐富的技術資料和技術問答,你所遇到的錯誤信息和錯誤提示,通常都能在網上搜索到,當然,搜索到後要結合你的場景認真思考,並理解透徹,而不是照貓畫虎的去處理,否則可能這次運氣好就蒙對了,下次運氣不好又不知道怎麼回事了。

第四條,不斷總結歸納,對一個問題,一類問題,以及不同類型的問題,善於歸納整理,不斷反思自己的問題,即便是不出bug的代碼,你經過一段時間去回頭看,也有很多思考不正確不合理的地方,有很多優化點,如果你覺得自己的代碼一向牛逼,毫無破綻,那你一定是原地踏步,毫無進展。

關於 歸納總結,我說個案例
以前我們有個系統,請求量非常大,負載非常高,有個不錯的技術經理來處理,他列了幾個升級計劃,都很靠譜,去執行了,效果非常好,然後我們跟進匯報的時候他來講,做了幾項升級,整體效果如何,然後我就批評了他。
我批評了什麼呢?他是一起做的升級,然後一起觀測的效果,那麼這幾個方案里,具體每個方案的實際效果怎樣,對提升的幫助多大,他沒有任何數據。所以對具體每個升級方案的價值和重要性,他沒有任何概念。你正確的解決了問題,卻沒有認真的去歸納整理,你的收獲是有限的。一起做升級不能說是錯的,但是效果評估需要單獨去做,而這個數據是非常有價值的,知識積累,不是你處理過的就一定有積累,而是整理過的。

大概就這些

最後重述一遍
什麼是能力?

遇到問題的態度
處理問題的思路和方法

這就是能力

點贊的那麼多,答謝各位,補充幾條思路吧,是上面幾個方法的具體擴充

補充1:善於提問,你能得到怎樣的答案,取決於你提出怎樣的問題。
你遇到問題,你應該知道,從哪裡去問,去問什麼。
我常見的一個測試題是這樣的。
資料庫目前掛了,我就是伺服器,我不知道為什麼掛了,你是一個優秀的分析師,現在我來做響應,你問我問題,你問一個問題,我回答一個指標,然後看你能不能定位問題。(當然,我會根據所假設的問題回答所有數據指標),比如你問我資料庫連接數多少,問我系統i/o壓力多少,或者問我慢查詢日誌里有什麼,等等,善於提問的人就可以快速得到答案,而不善於提問的人,就會猜測一堆可能,最終卻一無所獲。
有個真實好玩的案例,有個兄弟公司(前段時間新聞出來,賣了好像十個億的樣子),開始的時候服務端資料庫不夠強壯,負載起來的時候會出現一些問題,就請我去把脈,我一看windows伺服器,SQLserver (不要猜了,那是幾年前,現在應該改了),我說這個我不會啊,然後人家那麼熱忱當我是專家,只好硬著頭皮上,我連基本操作都不會怎麼辦,我就坐在那裡問問題,開始他們說是不是這樣,是不是那樣,我說你們不要盲目下結論,你們要是知道結論就別來問我了,我問什麼指標,什麼日誌你們就給我查什麼,我就一樣樣的問,他們現場操作去查數據,我問一個他們查一個給我看,查著查著,他們的工程師說,知道原因了!果然和他們開始的假設完全不同。其實關鍵就是問問題的思路,他們一開始沒有提出正確的問題。提出了正確的問題,他們很快自己就找到了原因。

補充2:善於劃定范圍,縮小問題區間。
前面提到的斷點分析是一個非常常見的分析方法,但是很多場景,你甚至不知道是哪個程序出的問題,善於將問題范圍化,也是一種歸納和分類的能力。

我曾在某個技術群出過一個經典測試,還記得以前微博上提到的一個經典面試題么。「從瀏覽器輸入url到打開網頁,中間經歷了什麼」,這是一個經典的綜合認知的題目,基於這個題目,出一個更實戰的場景測試是(這個場景其實90%的網站站長和游戲運營商都遇到過),」目前有用戶反映網站或游戲卡,請問如何分析原因,以及當前優先順序步驟。「。結果在這個群里,只有我徒弟說出了完全正確的答案(09年帶過的)。優先順序第一步是看在線用戶數和當前訪問數,對比歷史,得到該問題目前的影響程度,來決定後續的優先順序,以及減少分析范圍。(這是意識問題)分析思路,分成三大塊,前端,網路層,服務端。當然這三塊可以繼續延伸下去非常多細節,但是至少,能先把問題分成三大塊,然後基於一些顯見的分析方式快速排除其中幾個部分,再逐步細化問題,而大部分人只是從一個局部去思考,講了很多局部細節卻沒有完整的綱領,所以這就是差距。

先想到這些,咳咳。

轉自知乎 曹政

㈢ 程序員編程最方便的語言是什麼

C++語言,適合在校大學生、自學的轉行者、喜歡計算機的人群,學習目標是C++基本語法、數據結構、STL、線程、協議編程、資料庫、Socket。學後可以使用C++實現最新的項目案例,雷霆戰機、遠程式控制制、視頻會議、伺服器架構等。
1.C++語言:是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
2.特點:C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。
3.基本內容:類、封裝、重載、繼承、模版。

㈣ 產品經理和程序員,如何避免矛盾

產品實現是你的目的,為了這個目的不必太講究。

做了一陣子之後我有了自己對於與程序員相處的方法論,對這句話並不苟同,我還是傾向於把事做好的同時也能把話說好,雖然我現在也能深刻的領會到當時leader的核心意思是產品本身是第一位的。

接下來我就闡述下自己的一些心得:

㈤ 找一些程序員的經典格言

1.不要看到別人的回復第一句話就說:給個代碼吧!你應該想想為什麼。當你自己想
出來再參考別人的提示,你就知道自己和別人思路的差異。
2.初學者請不要看太多太多的書那會誤人子弟的,先找本系統的學,很多人用了很久
都是只對部分功能熟悉而已,不系統還是不夠的。
3.看幫助,不要因為很難而自己是初學者所以就不看;幫助永遠是最好的參考手冊,
雖然幫助的文字有時候很難看懂,總覺得不夠直觀。
4.不要被對象、屬性、方法等詞彙所迷惑;最根本的是先了解最基礎知識。
5.不要放過任何一個看上去很簡單的小問題--他們往往並不那麼簡單,或者可以引伸
出很多知識點;不會舉一反三你就永遠學不會。
6.知道一點東西,並不能說明你會寫腳本,腳本是需要經驗積累的。
7.學腳本並不難,JSP、ASP、PHP等等也不過如此--難的是長期堅持實踐和不遺餘力的博覽
群書;
8.看再多的書是學不全腳本的,要多實踐
9.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
10.學習腳本最好的方法之一就是多練習;
11.在任何時刻都不要認為自己手中的書已經足夠了;
12.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
13.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
14.請把書上的例子親手到電腦上實踐,即使配套光碟中有源文件;
15.把在書中看到的有意義的例子擴充;並將其切實的運用到自己的工作中;
16.不要漏掉書中任何一個練習——請全部做完並記錄下思路;
17.當你用腳本到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將余
下的部分粗略的完成以保證這個代碼的完整性,然後分析自己的?
砦蟛⒅匭鹵嘈春凸?
作。
18.別心急,寫腳本確實不容易;水平是在不斷的實踐中完善和發展的;
19.每學到一個腳本難點的時候,嘗試著對別人講解這個知識點並讓他理解----你能
講清楚才說明你真的理解了;
20.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
21.保存好你做過的所有的源文件----那是你最好的積累之一;
22.對於網路,還是希望大家能多利用一下,很多問題不是非要到論壇來問的,首先
你要學會自己找答案,比如google、網路都是很好的搜索引擎,你只要輸入關鍵字就
能找到很多相關資料,別老是等待別人給你希望,看的出你平時一定也很懶!
23,到一個論壇,你學會去看以前的帖子,不要什麼都不看就發帖子問,也許你的問
題早就有人問過了,你再問,別人已經不想再重復了,做為初學者,誰也不希望自己
的帖子沒人回的。
24,雖然不是打擊初學者,但是這句話還是要說:論壇論壇,就是大家討論的地方,
如果你總期望有高手總無償指點你,除非他是你親戚!!討論者,起碼是水平相當的
才有討論的說法,如果水平真差距太遠了,連基本操作都需要別人給解答,誰還跟你
討論呢。
能找到很多相關資料,別老是等待別人給你希望,看的出你平時一定也很懶!
23,到一個論壇,你學會去看以前的帖子,不要什麼都不看就發帖子問,也許你的問
題早就有人問過了,你再問,別人已經不想再重復了,做為初學者,誰也不希望自己
的帖子沒人回的。
24,雖然不是打擊初學者,但是這句話還是要說:論壇論壇,就是大家討論的地方,
如果你總期望有高手總無償指點你,除非他是你親戚!!討論者,起碼是水平相當的
才有討論的說法,如果水平真差距太遠了,連基本操作都需要別人給解答,誰還跟你
討論呢。
浮躁的人容易問:我到底該學什麼;----別問,學就對了;
浮躁的人容易問:JS有錢途嗎;----建議你去搶銀行;
浮躁的人容易說:我要中文版!我英文不行!----不行?學呀!
浮躁的人分兩種:只觀望而不學的人;只學而不堅持的人;
浮躁的人永遠不是一個高手。

㈥ 有哪些關於程序員的心靈雞湯

1. 在你責怪別人之前,先檢查自己的代碼

先想一想自己的假設和其他人的假設。來自不同供應商的工具可能內置不同的假設,即便是相同的供應商對於不同的工具,其假設也可能不同。

當其他人正在報告一個你不能重復的問題的時候,去看看他們在做什麼。他們可能會做一些你從來沒有想到過的事情,或者他們的做事順序與你的截然不同。

我個人的原則是,如果我有一個不能確定的錯誤,那麼我會先考慮是不是編譯器的問題,然後再去檢查堆棧是否損壞。特別是當添加跟蹤代碼會使得問題移動的話就更要這么做了。多線程問題是 bug 的另一個來源,有時候令人焦躁得簡直想拔光頭發,或者直接想摔電腦。當系統是多線程的時候,最好傾向於簡單的代碼。我們不能依賴調試和單元測試來發現任何一致性的 bug,所以設計的簡單性是最重要的。

所以,在你不分青紅皂白地去責怪編譯器之前,先想一想福爾摩斯的這條建議,「一旦你排除了種種不可能,剩下的不管有多麼難以置信,一定就是真相」。

2. 不斷學習

我們生活在一個有趣的時代。隨著軟體開發逐漸遍布全球各地,你會發現有很多人都可以干你的工作。所以你需要不斷學習以保持競爭力。否則,你就會落伍,停滯不前,直到有一天,這份工作不再需要你,或外包給一些更廉價的勞動力。

那麼我們能做些什麼?有些僱主很慷慨,會提供培訓以拓寬你的技能。也有的人會說我沒時間或者沒這個資金去接受任何培訓。所以,關鍵是要擺正心態,學習是對自己的負責。

這里有一些學習的方法。而且許多資源都可以在互聯網上免費獲取:
•閱讀書籍、雜志、博客、Twitter feeds 和網站。如果你想更深入地了解對象,可以考慮添加到郵件列表或新聞組。點擊這里通過郵件訂閱《快樂碼農》雜志
•如果你真的很想學習某一種技術,那麼就親自動手寫代碼。
•盡量與導師一起工作。雖然你從任何人身上都可以學到一些東西,但是從那些比你更聰明或更有經驗的人身上,你能學到的更多。如果你實在找不到這樣的良師益友,那麼請繼續往下看。
•使用虛擬導師。在網路上找你真正喜歡的作者和開發人員,閱讀他們寫的內容。訂閱他們的博客。
•了解你使用的框架和庫。知道事物的工作原理,有助於你更好地應用它們。如果你使用的是開源資源,那麼你真的很幸運。使用調試器單步執行代碼,以查看內部究竟是怎麼回事。你也可以去看看那些確實比你聰明的人是如何編寫和審查代碼的。
•當你犯了錯誤,修復 bug,或者遇到問題的時候,試著去真正理解發生了什麼事情。很有可能其他人已經遇到過同樣的問題,並且發布在了網上。谷歌搜索真的很有用。
•學習東西還有一個好方法就是所謂的「教學相長」。當別人在傾聽你的言語,並問你問題的同時,你也會學到東西。可以建立用戶組或本地會議。
•為自己感興趣語言和技術加入或啟動一個研究小組(模式社區),也可以創建本地的用戶組。
•參加會議。如果去不了的話,也可以在網上看,許多會議會將其談話免費發布到網上。
•收聽播客。
•曾經對代碼庫運行過靜態分析工具,又或者查看下你的 IDE 警告?了解它們報告了什麼,以及其原因。

當然如果你有《黑客帝國》中 Neo 那樣的超能力,自然這一切對你而言不過是小菜一碟。但很可惜,我們都是普通人,我們需要時間和精力,以及不斷的努力才能促使自己不斷的學習。不過,你不必成天學習。只要你能有意識地花點時間去學習就可以了,哪怕每天一小時,有總比沒有好。人活著不是為了工作,你還應該有自己的生活。

3. 不要害怕破壞東西

每個具備行業經驗的程序員肯定參與過代碼庫岌岌可危的項目。系統很糟糕,並且改變這邊總是會破壞另一邊不相關的功能。每次添加模塊,程序員只能想著盡可能少地改變代碼,每次發布都膽戰心驚。這座軟體的摩天大樓隨時有坍塌的可能。之所以改動代碼會如此傷腦筋是因為系統太糟糕了。但是即使你知道系統出了問題,卻又因為投鼠忌器,而不得不聽之任之。任何一個外科醫生都懂得,傷口要想癒合就必須得切除腐肉。雖然手術會帶來痛苦,但絕對比任傷口發炎潰爛要好。

不要害怕你的代碼。沒有人會在乎當你搗鼓代碼的時候有沒有暫時破壞了什麼東西。只要你做的改變不會讓項目重新回到開始狀態,就不會令人崩潰。投入時間重構,能讓你受益於項目整個生命周期。這樣做還有一個額外的好處是,由於你有過這種處理病危系統的經驗,所以你對它應該如何工作非常內行。要善於應用這些知識,千萬不要反感這些寶貴的財富。重新定義內部介面,重構模塊,重構復制粘貼代碼,並通過減少依賴來簡化設計。你可以通過消除特殊情況顯著降低代碼的復雜性,因為特殊情況往往是因為錯誤的耦合特點導致的。慢慢地從舊結構過渡到新結構,測試一路同行。如果你想要一下子完成一個大的重構,那麼往往會因為各種頻出的問題而考慮中途放棄。

4. 專業程序員

專業程序員的一個最重要的特點是有責任心。專業程序員會為他們的職業生涯、預算、日程安排承諾、錯誤、技能技巧負責。一個專業的程序員不會將責任推卸給別人。

如果你是專業的,那麼你就需要為自己的職業生涯負責。你有責任去閱讀和學習。你有責任去時刻關注最新的產業和技術。但是許多程序員覺得這應該是他們僱主的工作。NO,大錯特錯。想一想醫生?想一想律師?他們都是靠自己來培養和訓練自己的。他們的下班時間多用在了閱讀雜志報刊上。他們時刻關注著最新的資訊動態。所以,我們也應該如此。你和你僱主之間的關系,已經在僱用合同上作了詳細的說明,簡而言之就是:你的僱主承諾支付你薪酬,而你承諾做好工作。

專業程序員會為他們編寫的代碼負責。除非他們知道這些代碼是有效的,否則就不會發布代碼。現在,好好思考這個問題:如果是你,你會不會在不透徹了解代碼的情況下就直接發布代碼?專業程序員不希望 QA 找到任何 bug,因為這些代碼都是經過他測試之後才發布的。當然,QA 依然會發現一些問題,因為沒有一個人是完美的。但作為專業程序員,我們的態度應該是讓 QA 找不到任何缺陷。

專業程序員也是好的團隊成員。他們負責地對待整個團隊的輸出,而不是只顧自己的工作。他們樂於助人,善於向彼此學習,在需要的時候甚至會鼎力相助,為了項目前仆後繼。

5. 充分利用代碼分析工具

測試的價值是編程早期階段就灌輸給軟體開發者的一個理念。近年來,單元測試,測試驅動開發和敏捷方法的興起,證實了我們開始注重於在開發周期的各個階段進行測試。但是,測試只是你可以用來提高代碼質量的許多工具之一。

回過頭去看,當C語言還是一個新事物的時候,CPU 時間和任何類型的存儲都是非常寶貴的。第一個C語言編譯器注意到了這一點,所以選擇了通過去掉一些語義分析,來減少代碼之間的傳遞次數。這意味著,在編譯時,編譯器檢查到的可能只是可被檢測到的 bug 中的一小部分。為了彌補這個缺陷,Stephen Johnson 寫了一個名為 lint 的工具——它將從你的代碼中刪除一些沒有價值的東西——從而實現一些已被它的兄弟C語言編譯器撤掉的靜態分析功能。然而,靜態分析工具卻因為可以給出大范圍的誤報警告和一些沒有必要遵循的靜態文體慣例的警告而倍受贊譽。

現在的語言、編譯器和靜態分析工具的設計和以前已經大不相同。由於內存和 CPU 時間變得相對比較便宜,因此負擔得起編譯器檢查更多的錯誤。幾乎每一種語言都擁有至少一個工具,用來檢查風格指南的違規行為、常見問題以及一些狡猾的有時候可能很難捕捉到的錯誤,如潛在取消引用空指針。更高級的工具,如C的 Splint,以及 Python 的 pylint,是可配置的,這意味著你可以通過命令行開關或在 IDE 中,使用配置文件來讓工具選擇放過其中的哪些錯誤和警告。Splint 甚至還能讓你在注釋中註解你的代碼,以便於更好地提示你的程序是如何工作的。

6. 關心代碼

優秀程序員能寫出好代碼,這是毋庸置疑的。壞程序員……則不能(他們能寫出好代碼,就不是壞程序員了,哈哈)。他們總是在生產其他人不得不消滅的怪獸。你的目標是寫出好代碼,對不?那麼你應該成為好程序員。

好的代碼並不是憑空而來的,也不能靠運氣然後恰巧讓你瞎貓碰到死老鼠。為了獲得良好的代碼,你必須努力的改進。過程是艱難的。但是如果你確實關心代碼的話,那麼你一定能收獲好代碼。

僅靠技術並不能成就好的編程。我碰到過一些非常聰明的程序員,他們能夠產出令人印象深刻的演算法,能夠熟記語言標准,但卻寫出了最可怕的代碼。這種代碼,閱讀起來很痛苦,使用起來很痛苦,修改起來更是令人痛不欲生。我也碰到過一些非常謙遜的程序員,因為堅持簡單的代碼,所以寫出來的程序更優雅,更易於表達他的意思,和他們工作非常愉快。

基於我多年的軟體生產經驗,我得出的結論是,差強人意的程序員和偉大的程序員之間的真正區別是:態度。好的編程在於專業的方法,以及一種竭盡全力希望寫出最好軟體的期望。

要成為一個優秀的程序員,你必須對自己的代碼負責,真正關心代碼——養成積極向上的心態。偉大的代碼是由大師精心雕琢的,而不是由那些馬虎的程序員胡亂寫出來的。

㈦ 程序員,新到一家公司,技術太low,我還沒有話語權,我該咋辦呢

慢慢努力,我相信終有一天你會有話語權的。加油。

㈧ 對程序員的工作有哪些通俗易懂的解釋

想要對程序員的工作做一些通俗易懂的解釋,那你就可以這么跟他說,「你用拼多多嗎?你用QQ嗎?你用微信嗎?你用淘寶購物嗎?」這些都是我們一點一點用程序寫出來的,我們的工作就是設計這些軟體的程序。

㈨ 我的夢想是成為一名出色的程序設計人員,想問問那些成功的朋友們,我要怎樣努力,謝謝大家!

這是一條漫長而艱辛的路

㈩ 怎麼看待「程序員是出軌率最高的群體

程序員是出軌率最高的群體。出軌率第二高的是金融男。遠遠高於其他群體。聽到這個調查報告,一大群人表示驚訝,尤其是年輕女人。程序員是互聯網世界有話語權的人,所以他們有足夠的話語權把自己的形象塑成木訥,老實,內向,不善勾搭,難以脫單,還喜歡以搬磚、碼農之類的矯情詞彙自稱。但是事實上,程序員是出軌率極高的群體。而且,程序員也是約炮率極高的群體。

為啥?因為運用書中關於證據效力的幾個章節所講的內容,讀完第一句話,你的頭腦里至少會提出以下問題,接著,你會發現作者對這些問題根本沒有也無意提供靠譜的答案,所以基本可以推論,這段文字是純度高達99.99%的扯淡文。

問題1、調查報告的來源是哪裡?研究機構是誰?原始的研究目的是什麼?

問題2、與程序員和金融男共同對比的其它群體有多少?具體是哪些?

問題3、從作者列舉的兩個群體程序員和金融男來看,兩個群體並不對等,因為後者有性別屬性而前者沒有,這就說明這個調查(如果存在)並不科學嚴謹,要麼調查機構不具備基本的科研常識,要麼調查機構有「程序員都是男人」的核板印象,要麼是作者自己的認知有這兩方面問題。

問題4、調查報告的采樣標準是什麼(比如年齡、性別、所在城市、受教育程度、家庭背景等等)?群體之間采樣標准相同嗎?各群體的樣本足夠大足夠隨機嗎?能代表群體整體嗎?

問題5、出軌是道德敏感話題,在這個問題上參與者誠實作答的可能性比「早餐吃什麼」類問題要低很多,有人想無中生有顯示性吸引力,有人則想掩蓋事實維護良民形象,有人甚至純粹為了看熱鬧胡亂作答,所以這個調查報告是如何控制參與者答案真實度的?

批判性思維結論:這是一個空穴來風的「調查報告」,可信度無限接近0。以這個報告結果為前提的任何論述都是扯淡、瞎掰。除了營銷吸睛,毫無營養,也不能這么說,起碼可以營養那麼一點點批判性思維。

閱讀全文

與程序員之間最容易引戰的話語相關的資料

熱點內容
艾默生壓縮機說明書 瀏覽:289
超解壓手法 瀏覽:415
如何獲取伺服器上的文件地址 瀏覽:679
文件夾題用另存為嗎 瀏覽:639
各種編譯類型為自然選擇提供了 瀏覽:914
cnc玻璃精雕機編程 瀏覽:313
電腦復制中途改文件夾名字 瀏覽:498
批處理轉exe反編譯工具 瀏覽:76
pdf怎麼換成圖片 瀏覽:323
換位加密能夠按照一定 瀏覽:390
安卓開發入門pdf 瀏覽:192
日醫pdf 瀏覽:861
指定文件夾換壁紙 瀏覽:898
天玥伺服器是什麼架構 瀏覽:236
蘋果為什麼回購安卓手機 瀏覽:87
27歲程序員發型 瀏覽:198
圖庫文件夾是什麼意思 瀏覽:532
空調壓縮機隔音 瀏覽:352
簿荷閱讀app為什麼登陸不了 瀏覽:517
zigbee與單片機通信 瀏覽:440