⑴ 一個好的程序員至少應該具備哪些條件
樓上的幾位顯然誤會我的意思了,我並不是說不應當寫文檔加註釋注重團隊精神,看看下面的一篇文章,那位三天就寫出UNIX的他需要寫文檔注釋和團隊精神嗎,他用不著。哪個高手沒有一點傲氣和自信,他之所以敢對用戶說:拿到你想要的,然後滾蛋,你已經很幸運了!是因為他有這個資本。天才本就不循規蹈矩,那樣他就不叫天才了。
MIT BBS上說微軟電話面試的一道題就是「Who do you think is the best coder,
and why?」。我覺得挺有意思的,也來湊個熱鬧。排名不分先後。
Bill Joy, 前任Sun的首席科學家,當年在Berkeley時主持開發了最早版本的BSD。他還
是vi和csh的作者。當然,Csh Programming Considered Harmful 是另一個話題樂。據
說他想看看自己能不能寫個操作系統,就在三天里寫了個自己的Unix, 也就是BSD的前
身。當然是傳說了,但足見他的功力。另一個傳說是,1980年初的時候,DARPA讓BBN在
Berkley Unix里加上BBN開發的TCP/IP代碼。但當時還是研究生的B伯伯怒了,拒絕把BBN
TCP/IP加入BSD,因為他覺得BBN的TCP/IP寫得不好。於是B伯伯出手了,端的是一箭封
喉,很快就寫出了高性能的伯克利版TCP/IP。當時 BBN和DARPA簽了巨額合同開發TCP/IP
Stack,誰知他們的代碼還不如一個研究生的好。於是他們開會。只見當時B伯伯穿
個T-shirt出現在會議室(當時穿T-shirt不象現在,還是相當散漫的哈)。只見BBN問:你
怎麼寫出來的?而B伯伯答:簡單,你讀協議,然後編程就行了。最令偶暈倒的是,B伯
伯碩士畢業後決定到工業界發展,於是就到了當時只有一間辦公室的Sun, 然後他就把
Sparc設計出來樂。。。象這種軟硬通吃的牛人,想不佩服都不行的說。據Bill Joy的同
事說,一般開會的時候B伯伯總是拿一堆雜志漫不經心地讀。但往往在關鍵之處,B伯伯
發言,直切要害,提出漂亮的構想,讓同事們徹底崩潰。對了,他還是java Spec和JINI
的主要作者之一。
John Carmack,ID Software的founder和Lead Programmer。上個月和一個搞圖形的師兄
聊天,他竟然不知道John Carmack, 也讓偶大大地暈了一把。不過也許搞研究的和搞實
戰的多少有些隔吧。想必喜歡第一人稱射擊游戲的都知道J哥哥。90年代初只要能在PC
上搞個小動畫都能讓人驚嘆一番的時候,J哥哥就推出了石破天驚的Castle Wolfstein,
然後再接再勵,doom, doomII, Quake...每次都把3-D技術推到極限。J哥哥的簡歷上說
自己的專長是"Exhaust 3-D technology",真是牛人之言不我欺的說。做J哥哥這樣的人
是很幸福的,因為各大圖形卡廠家一有了新產品就要向他「進貢"
,不然如果他的游戲不支持哪種卡,哪種卡基本就會夭折樂。當初MS的Direct3D也得聽
取他的意見,修改了不少API。當然,J哥哥在結婚前十數年如一日地每天編程14小時以
上,也是偶們凡人望塵莫及的。對了,J哥哥高中肆業(?),可以說是自學成才。不過
呢,誰要用這個例子來為自己學習不好辯護,就大錯特錯了。那 Leonardo Da Vinci還
是自學成才呢(人是私生子,不能上學)。普通人和天才還是有區別的。對了,其實偶們
叫「達分奇」是相當不對的,因為Vinci是地名,而Da Vinci就是從Vinci來的人的意
思。換句話說,Leonardo Da Vinci就是「從Vinci來的Leonardo」的意思。叫別
人「Da Vinci」就不知所謂樂。嗯,扯遠了,打住。
David Cutler,VMS和Windows NT的首席設計師,去微軟前號稱矽谷最牛的kernel開發
員。當初他和他的手下在微軟一周內把一個具備基本功能的bootable kernel寫出來,然
後說:「who can't write an OS in a week?",也是牛氣沖天的說。順便說一句,D爺
爺到NT3.5時,管理1500名開發員,自己還兼做設計和編程,不改coder本色啊。
D爺爺天生脾氣火爆,和人爭論時喜歡雙手猛擊桌子以壯聲勢。 日常交談fuck不離口。
他面試秘書時必問:"what do you think of the word 'fuck'?" ,讓無數美女剎羽而
歸。終於有一天,一個同樣火爆的女面對這個問題脫口而出:"That's my favorite
word"。於是她被錄取樂,為D爺爺工作到NT3.5發布。
Don Knuth。高爺爺其實用不著偶多說。學編程的不知道他就好像學物理的不知道牛頓,
學數學的不知道歐拉,學音樂的不知道莫扎特,學Delphi的不知到 Anders Hejlsberg,
或者學linux不知道Linus Torvalds一樣,不可原諒啊。為了讓文章完整,就再羅唆幾句
吧。高爺爺本科時就開始給行行色色的公司寫各種稀奇古怪的編譯器掙外快了。他賣給別
人時收一兩千美元,那些公司拿了code,加工一下賣出去就是上萬上十萬。不過也沒見高
爺爺不爽過,學者本色的說。想想那可是60年代初啊,高爺爺寫編譯器寫多了,順帶就搞
出了個 Attribute Grammar和LR(k),大大地造福後人啊。至於高爺爺在CalTech的編程比
賽(有Alan Kay得眾多高高手參加)總是第一,寫的Tex到86年就code freeze,還附帶2^n
美分獎勵等等都是耳熟能詳的,偶就不饒舌樂。
順便說一下,高老大爺是無可爭議的寫作高手。他給Concrete Mathematics 寫的前言可
謂字字鏗鏘,堪為前言的典範。他的技術文章也是一絕,文風細致,解釋精當,而且沒
有學究氣,不失輕快跳脫。記得幾年前讀Concrete Mathemathics,時不時開懷大笑,讓
老媽極其郁悶,覺得我nerdy到家,不可救葯。其實呢,子非魚,安知魚之樂,更不知那
完全是高爺爺的功勞。說到寫作高手,不能不提Stephen A. Cook。他的文章當年就被我
們的寫作老師極力推薦,號稱典雅文風的樣本。庫爺爺一頭銀發,身材頎長,總是面帶
謙和的微笑,頗有仙風道骨,正好和他的仙文相配的說。
高爺爺其實還是開源運動的先驅。雖然他沒有象Richard Stallman那樣八方奔走,但他
捐獻了好多作品,都可以在網上看到,比如著名的Mathematical Writing,MMIXWare,
The Tex Book等,更不用說足以讓他流芳百世的Tex樂。
Ken Thompson,C語言前身B語言的作者,Unix的發明人之一(另一個是Dennis M. Riche
老大,被尊為DMR),Belle(一個厲害的國際象棋程序)的作者之一, 操作系統Plan 9的主
要作者(另一個是大牛人Rob Pike,
前不久被google挖走了)。Ken爺爺也算是計算機歷史上開天闢地的人物了。1969年還是
計算機史前時代,普通人都認為只有大型機才能運行通用的操作系統,小型機只有高山
仰止的份兒。至於用高級語言來寫操作系統,更是笑談。Ken爺爺自然不是池中物,於是
他和DMR怒了,在1969年到1970間用匯編在PDP-7上寫出了UNIX的第一個版本。他們並不
知道,一場轟轟烈烈的UNIX傳奇由此拉開了序幕。Ken爺爺在1971年又把Unix用C重寫,
於是C在隨後20年成就了不知多少豪傑的夢想和光榮。
Ken爺爺還有段佳話: 裝了UNIX的PDP-11最早被安裝在Bell Lab里供大家日常使用。很
快大家就發現Ken爺爺總能進入他們的帳戶,獲得最高許可權。Bell
Lab里的科學家都心比天高,當然被搞得郁悶無比。於是有高手怒了,跳出來分析了UNIX
代碼,找到後門,修改代碼,然後重新編譯了整個UNIX。就在大家都以為「這個世界清
凈了」的時候,他們發現Ken爺爺還是輕而易舉地拿到他們的帳戶許可權,百思不解後,只
好繼續郁悶。誰知道這一郁悶,就郁悶了14年,直到Ken爺爺道出個中緣由。原來,代碼
里的確有後門,但後門不在Unix代碼里,而在編譯Unix代碼的C編譯器里。每次C編譯器
編譯UNIX的代碼,就自動生成後門代碼。而整個Bell Lab的人,都是用Ken爺爺的C編譯
器。
(6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,現在google研究操作系
統 。羅伯伯是Unix的先驅,是貝爾實驗室最早和Ken Thompson以及Dennis M. Ritche開
發 Unix的猛人,UTF-8的設計人。他還在美國名嘴David
Letterman的晚間節目上露了一小臉,一臉憨厚地幫一胖子吹牛搞怪。讓偶佩服不已的
是,羅伯伯還是1980年奧運會射箭的銀牌得主。他還是個頗為厲害的業余天文學家,設
計的珈瑪射線望遠鏡差點被NASA用在太空梭上。他還是兩本經典,The Unix
Programming Environment 和 The Practice of Programming 的作者之一。如果初學者
想在編程方面精益求精,實在該好好讀讀這兩本書。它們都有中文版的說。羅伯伯還寫
出了Unix下第一個基於點陣圖的窗口系統,並且是著名的blit終端的作者。當然了,羅伯
伯還是號稱銳意革新的操作系統,Plan9,的主要作者。可惜的是,Plan9並沒有引起多
少人的注意。羅伯伯一怒之下,寫出了振聾發聵的雄文 Systems Software Research is
Irrelevant,痛斥當下系統開發的不思進取,固步自封的弊病。雖然這篇文章是羅伯伯
含忿出手,頗有偏激之詞,但確實道出了系統開發的無奈:開發周期越來越長,代價越
來越大,用戶被統一到少數幾個系統上,結果越來越多的活動是測量和修補,而真正的
革新越來越少。
就在羅伯伯郁悶之極的時候,google登門求賢來樂。如果說現在還有一家大眾公司在不
遺餘力地把系統開發推向極致的話,也就是google樂。隨便看看google的成果就知道
了。具有超強容錯和負載平衡能力的分布式文件系統GFS
(現在能夠用100,000台廉價PC搭起一個巨型分布系統,並且高效便宜地進行管理的系統
也不多哈),大規模機器學習系統(拼寫檢查,廣告匹配,拼音搜尋。。。哪個都很牛的
說),更不用說處理海量並行計算的各式google服務了。Rob在System Software
Research is Irrelevant里蕭瑟地說現在沒有人再關心系統研究的前沿成果了。想不到
他錯了,應為google關心。google網路了大批功成總是試圖吸取系統研究的最新成果。
想必Rob Pike在google很幸福。願他做出更棒的系統。
Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新聞組上人稱DMR的Dennis M.
Ritchie自然也是,畢竟兩人共同締造了UNIX,而Dennis幾乎獨力把C搞大(當然,C的前
身是B,而B是Ken Thompson一手做出來的)。兩人1983年分享圖靈獎,是有史以來少數幾
個因工程項目得獎的工程師(本來是唯一的一對兒,但Alan Kay才因為SmallTalk得獎,
所以就成了唯二的樂) 一個人一生能做出一個卓越的系統已經不易,DMR的C和UNIX長盛
不衰近30年,至今生機勃勃,DMR此生可以無憾的說。
D爺爺也算有家學淵源:他老爸在AT&T貝爾實驗室工作了一輩子,並在電路設計方面卓有
成就,還出了本頗有影響的書The Design of Switching Circuits,據說在交換理論和
邏輯設計方面有獨到的論述。當然,D爺爺和他老爸是不同時代的人:他老爸的研究成
形於晶體管發明之前,而D爺爺的工作離了晶體管就玩兒不轉樂。:-D
不要看D爺爺搞出了C,其實他最愛的編程語言是Alef,在Plan9上運行,支持並行編程。
Alef的語法和C相似,但數據類型和執行方式都和C大大不同。說到語言,D爺爺對後來
人有非常中肯的建議:抱著學習的目的來開發你自己的語言,不要冀望於它被眾人接
受。這個建議不光對語言開發有用,也適用於其它大型系統的開發。別的不說,DMR後來
領導自己的團隊在1995年和1996分別推出了Plan9和Inferno操作系統,又用多少人知道
呢?其實,D爺爺當初也沒想過C會風行世界。他開發C的初衷和Eric S. Raymond
在Cathedral and Bazaar里闡述的一樣,就是要消除自己對現有工具的不爽之處。誰
知D爺爺無心插柳,C竟然受到眾多程序員的狂熱擁戴,連D爺爺自己都大惑不解。在一次
采訪中D爺爺說大概那是因為C的抽象程度碰巧既滿足了程序員的要求, 又容易實現。當
然C一度是Unix上的通用語言也是原因。但不管怎麼說,D爺爺對編程語言出色的審美意
識奠定了C廣為流傳的基礎。
最後八卦一下。D爺爺的業余愛好和NBA大牛Karl Malone一樣:開卡車。不過D爺爺更喜
歡開NASCAR,而KM獨愛巨無霸。J D爺爺自稱心中不供偶像,如果一定要說一個,那就
是Ken Thompson了。現在Ken爺爺退休當飛機教練去了,而D爺爺當了貝爾實驗室系統開
發部的頭,整日忙於開支票。他倆合作20年,屢屢創造歷史。這段令人神往的佳話,也
就長留你我心中樂。
P.S., 很多人都以為Brian W. Kernighan是C的作者。其實BWK只是寫了那本經典K&R C。
據D爺爺說,他,Ken, 和Kernighan三人中,Kernighan最能寫文章,他次之,而Ken寫
得最少;但說到編程,Ken爺爺才是當之無愧的老大。
Edsger Wybe Dijkstra, 對,就是E.W. Dijkstra. 一提到EWD,很多人就會想起找最短
路徑的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一樣。
其實這些個演算法不過是兩個牛人在他們職業生涯中最瑣碎的貢獻。比如Dijkstra演算法,
無非是戴爺爺在1956年為了展示新計算機
ARMAC的計算能力,初試身手的成果,屬於他的演算法處女作。據戴爺爺自述,他搞出最
短路徑演算法的時候連紙筆都沒用。當時他和他老婆在阿姆斯特丹一家咖啡廳的陽台上曬
太陽喝咖啡,突然就把這個演算法想出來樂。而且當時的演算法研究還比較原始,牛人們忙
著用計算機搞數值計算,對離散演算法不屑一顧。那時連一個象樣的專注於離散演算法的專
業期刊都沒有。戴爺爺於是推遲發表這個演算法。直到1959年,他才把這個演算法發表
在Numerische Mathematik的創刊號上,權為捧場。:-)
EWD在多個領域牛氣沖天,端的是理論和編程兩手硬的高手。只不過他的很多工作比較
深刻,學校的老先生們覺得本科生接受不了,不給本科生講而已。
戴爺爺大概因為最短路徑演算法一戰成名,於是有人請他參加另一台計算機X1的設計工
作,並且把設計實時中斷系統的任務派給了他。現在看來實時中斷也許不算什麼,但要
知到,X1前根本就沒有實時中斷的概念。實現它簡直就是一場豪賭。戴爺爺起初還不情
願,但經不住項目負責人Bram和Carel的輪番 「吹捧」:我們知道實時中斷讓您工作變
得非常困難,但象您這樣的牛人肯定能做出來的說。結果戴爺爺被糖衣炮彈徹底擊穿,
接下了這個燙手山芋。兩三年後,他不僅搞出了實時中斷,還圍繞這個寫出了自己的博
士論文,順利戴上博士帽。
讓戴爺爺真正成名立萬的還是在X1上開發的Algo60,最早的高級語言之一。戴爺爺沒日
沒夜地工作了8個月,就搞出了Algo60,也因此獲得了 1972年的圖靈獎。因為Algo60,
戴爺爺發表了一篇石破天驚的文章:Recursive
Programming,於是人們才知道,原來高級語言也可以高效地實現遞歸,原來從此以後,
所有程序員都不可避免地和戴爺爺發明的一個詞(應該說是概念)打交道:堆棧。
而且Algo60還讓戴爺爺深入地思考多道程序設計的問題,最終發明了每個系統程序員
都繞不開的概念:semaphore。當然,戴爺爺總是把他發明的概念嚴格形式化,極具科
學家本色的說。和這些成就想比,他提出的吃飯的哲學家問題,也就沒什麼好說的了。
說來好笑,當時的大學(忘了哪所了)還是覺得戴爺爺沒有受過正統的數學訓練,也不是
專門搞數值分析的,所以最後不太情願地給了他一個教職。這種小挫折並不能妨礙象戴
爺爺這樣的牛人創造歷史。他一邊教數值分析(:-D) ,一邊開始開發一個新的操作系
統,並培養計算機科學家。幾年後,THE Multiprogramming
System橫空出世。THE是第一個支持鬆散耦合,顯式同步的進程並由此使得嚴格證明系統
沒有死鎖變得容易的操作系統。可惜戴爺爺任職的系不識貨,還強行解散了他的研究小
組(1972年戴爺爺給他的系主任說他得了圖靈獎,系主任的第一反應是你們搞計算機就
喜歡亂發獎)。這讓戴爺爺相當郁悶,得了抑鬱症。在極度郁悶之中,戴爺爺決定用寫作
來治療自己的抑鬱症。於是經典就誕生樂:Notes on Structured Programming。戴爺爺
從此被尊為結構化編程的奠基人,而且他的抑鬱症也被治好樂。
EWD太牛,結果他的故事也太多。先到這里吧。1973起,他的故事就在美國發生了。
Anders Hejlsberg,微軟.NET的首席架構師,編程語言設計和實現的頂尖高手。他一手
做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。這些作
品的名字足以為他立傳。作為一個程序員,我在這樣的大師面前實在無語。生子當
如Anders的說。李維的<>里已詳細講述了Anders的傳奇故事,我就不用費舌了:
http: //java.mblogger.cn/iexploiter/posts/1505.aspx
Artima上有Anders談C#的系列訪談。MSDN上有一段Anders導游的錄像 。有興趣可以去看
看牛人的豐采。
⑵ 大家,零基礎做一個合格的程序員需要多久
學習編程是一個由淺至深的過程,報班是正確的選擇,不過從一開始就盲目自學C語言或java c++等語言,不僅對於編程零基礎者毫無幫助,往往會使零基礎者喪失信心。
那麼從哪裡開始呢?我這里為你大概列出一些方向,幫助你初步理解編程,但是學習的過程必須任然是一個枯燥乏味,且需要不停練習的過程。
什麼是編程? 編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。下面是重點,是零基礎者需要知道的。
編程分為硬體編程和軟體編程。
先由硬體編程講起(零基礎者必須了解,了解有助於認識編程,)中央處理器又叫cpu,(這里用大白話講述),cpu有很多向外的線 (術語叫做引腳),它們中有一根線我們以它作為電壓0參考,其餘的線有兩個功能:1.讀出這點接入的電路的電壓,2.輸出電壓我們又定義電壓U,以U為界限將讀取輸入的電壓分為0,1。在PC,筆記本電腦上,1指電壓低於-12V,手機里1指電壓高於3V,其他情況為零。對於一塊1600萬色的屏幕,它可以顯示16777216(就是24個2相乘)中顏色,24根線每根線電壓為0或1,那麼剛好有16777216組合,屏幕會根據每根線的電壓大小判斷該顯示的顏色,對1080P的屏幕有1920*1080個點即2073600(小於21個2相乘),21根線的組合可以涵蓋屏幕上的點,顯示時,21根線告訴屏幕那一個點亮,24根線告訴屏幕亮什麼顏色,當21根線代表的點不是這一點,這一點顏色不會變化,拿小米電視來說1s一個點最多可以改變30次,超過24次人眼就感覺不出來。
好了你該問知道這些有什麼用,那麼我來告訴你,人類最初的編程語言就是這樣工作的,我們叫它「匯編語言」,現在除非你在intel等半導體公司工作,匯編語言已經不用了,零基礎者千萬別學匯編。下面舉一個例子,讓一個點顯白色 MOV XXX BIN(00000000000000000000000);XXX是自己為那24根線起的名字,括弧里24個零。
下面是重點,我想在屏幕上顯示0,那就包含了很多點,因為屏幕的顯示是1個個點構成的,一個人不可能輸完,我可以在另一台計算機上編一個軟體(下面會講到),我寫
print(「0」);軟體會自動翻譯成匯編語言,讓cpu驅動屏幕一點一點顯示。由「print(「0」)」到匯編語言的過程我們叫編譯,為了讓軟體識別我們也應該制定一套標准,那就是C語言和C++語言(以下統稱C語言),C語言簡化了編程,但是它只可以用於操作硬體,由一台電腦編完後輸入硬體系統,這是初學者迷惑的地方,為什麼編出的程序可以在windows上運行,因為windows提供了一套模擬硬體,它模擬的是最早的IBM-PC(許多老師都不知道)。不同的cpu用的C語言是不一樣的,但他們的基本結構,賦值規則相同,現行的教材都是以IBM-PC為標准,只要你學完譚浩強的教材,當你接觸到新的硬體看完生產商的規范最多半個小時後,你就可以用了。
下面是大家關心的,軟體編程,大多數人想編的是在windows上運行的。
現在軟體編程包括windows編程,安卓編程,OX編程,linux編程。先講一下原理。拿windows編程來說,微軟公司用C語言編寫了能使intel amd的cpu驅動顯示器顯示的程序,就是windows操作系統,你要編寫的程序寫完後告訴windows,windows把你寫的程序當作想點數標一樣的反應。微軟自己定義了一套語言,但是開發者學習成本有很高,C語言模擬器又滿足不了它的要求,於是微軟開發了C#(C#有著與C相同的結構賦值規則),它是專門為windows設計的語言,又是windows開發環境,C#最大化的減少windows開發難度,同時增大不同人間的協作性,WPS、AE、QQ影音都是用C#編出的,只要你學過C語言和C#你就可以在windows平台開發。最後說一下JAVA,隨著圖形界面的流行,各個系統操作日益相同,如windows,linux,MAC OS,java應運而生,它可以把你寫的程序翻譯為相似平台的語言,從而在各個平台運行。初學者自學不要碰JAVA,只有學過C語言,C#你才能看的懂。
最後總結一下:
編程首先要學C語言(可以不學C++),數據結構(當編寫大程序如wps,學過數據結構能增加運行速度,不學的話也可以)這兩者可以讓你明白編程的基本規則。
如果你想編寫硬體系統,如單片機,windows,安卓(編是一個人是不可能的但該可以),那麼你學過C語言,數據結構下一步你要學習ARM,或51單片機,對ARM,或51單片機編程與硬體編程原理相同,之後你就可以看操作系統底層。
如果你想編軟體,你要看情況,編windows你要學C#,學完就可以了。編安卓你要學先學JAVA,才能接觸谷歌專為安卓修改的JAVA語言。編iOS ,mac os你要學習Object-C。
⑶ 程序員為什麼要一直改bug不能一次性寫好嗎
作為一名程序員,我也總是在調試,Bug總是防不甚防的出現,這個過程真是有趣又痛苦,最後我覺得習慣就好,一次性寫出完美代碼是每個程序員不可實現的夢想。
程序員作為一項工作,是有任務有指標的,比起慢慢寫出完美程序解決所有問題,大家更喜歡快速看到一個可以執行解決部分問題的程序,此時完成比完美更重要。
沒有哪個程序員可以寫出完美的代碼,即使高能又偉大的公司也做不到這一點,想想看你的手機軟體是不是經常提醒你該更新了,連微軟都在三天兩頭的讓你打補丁,不是嗎?
⑷ 【程序員·隨身聽】玄學:機械鍵盤
大家好,感謝收聽【程序員·隨身聽】。
這一期准備講一講程序員群體中的一種玄學:鍵盤,具體來說,是機械鍵盤。還有一種玄學,是耳機。如果說鍵盤是程序員的武器,那麼耳機就是程序員的鎧甲,不過,這一期我們先不講耳機了。
先闡釋一下啥叫玄學,玄學是指那些不可知,不可思議,科學不能解釋,不能涉及的學說。
這樣來說,似乎玄學帶有貶義。不過,事先聲明,本期中的玄學並沒有貶義的意思,而是帶有一種膜拜,或者說,想要親近,卻不得要領,沒有途徑,而帶有一種酸葡萄心理的感情色彩。
說到這里,可能有些聽者琢磨出來點味道,好傢伙,原來你不是圈裡人啊。
對啊,我不是圈裡人,默哀三秒鍾,一,二,三,然後擦乾眼淚繼續說。
到這里,作為厚道人,我得說,如果您想通過本期音頻,得到關於機械鍵盤的指導型知識,就得失望了,因為我也想得到這方面的知識。如果您知道,還希望您能夠通過微博告訴我。我是真的想知道啊。在此,先聲謝過。
那麼,我說點什麼呢?才疏學淺的我,只是想把這個話題拋出來,談一談自己的一些觀察和看法。如果有幸能夠拋磚引玉,得到高人指點,到時候任督二脈一通,我再做一期指導型的音頻。
那麼,我們開始進入正題。
鍵盤作為電子產品的輸入設備,比滑鼠要出現得早。這很正常,因為進入圖形交互系統的時代,我們才有滑鼠的需求嘛。直至如今,鍵盤仍是我們在電子產品輸入內容上,不可或缺的設備。
我們知道,一般來說,鍵盤有兩大類,薄膜鍵盤和機械鍵盤。還聽說一種,叫靜電容鍵盤,靜電容鍵盤太少見,我根本沒見過,網路上說,靜電容鍵盤是利用電容容量的變化來判斷按鍵的開和關,在按下按鍵後,開關中電容容量發生改變,從而實現觸發,整個過程不需要開關的閉合。正是由於無物理接觸點就可以實現敲擊,因而磨損更小,使用壽命更長。更穩定、迅速、全鍵無沖突、無比靈敏。通常在大型醫療設備上能夠見到,也可作為比較昂貴的高端游戲外設。
在靜電容鍵盤還沒有進入主流前,我們就不說它了,回到薄膜鍵盤和機械鍵盤上。它倆的區別,簡單來說,薄膜鍵盤的鍵,表面看起來是一個個的,其實,每個鍵帽是依託在一整張薄膜上的,按下一個鍵,薄膜上就壓下去一個點到印刷電路板上,發出電信號。而機械鍵盤,那真是一個鍵,就是一個電信號的開關。所以,你就知道,為啥機械鍵盤要比薄膜鍵盤貴很多了,因為從工程學上講,機械鍵盤的結構就比薄膜鍵盤復雜多了。
雖然,一般,機械鍵盤比薄膜鍵盤貴,但吊詭的是,早起的鍵盤可都是機械鍵盤。我小時候玩的小霸王學習機,就是那個一開機就發出詭異的聲音——「小霸王,其樂無窮啊」,那就是機械鍵盤的。那時候還覺得敲鍵盤挺費力的。但如果,我們仔細觀察下鍵盤的發展歷史,就不奇怪了,就跟汽車一樣,早期的汽車,純手工打造,零件都是匠人一個個做出來的,但隨著汽車行業的發展,追求產業化,模塊化,純手工打造的汽車必然退出主流汽車市場。鍵盤也是如此,隨著技術發展,產業化的進步,薄膜鍵盤應運而生,一下子降低了成本,還增加了便攜性。為什麼還增加了便攜性呢,因為由於機械鍵盤每個鍵都是一個個小開關,它需要一定的體積,而薄膜鍵盤只是一個按的動作,因此薄膜鍵盤能夠做的很薄。為啥蘋果的 MacBook 系列能那麼薄?所以,即使它的鍵盤體驗被稱為敲鐵板,它也不可能換成機械鍵盤,只能在薄膜鍵盤的基礎上,想辦法提高鍵盤的舒適感。
按理說,機械鍵盤在薄膜鍵盤的沖擊下,就要退出歷史舞台了,就像軟盤被U盤取代,機械鍵盤的好兄弟,機械滑鼠(就是肚子里裝著一個滾球的滑鼠)被光電滑鼠取代。但是,有時候,有些看似過時的產品,還能苟延殘喘,甚至是復活。就像純手工打造的汽車,可能還是有它的小眾市場。歷史上,這樣的事例也不少見,比如說拍立得,前段時間,我的朋友還用拍立得給自家的娃拍照留念;比如說廣播,要知道電影電視的興起,那可是把無線電廣播沖擊的奄奄一息,但現在廣播在汽車的普及下,在新的生活節奏下,又生機盎然。我作為程序員,都要在蜻蜓FM做廣播了。
這里插一句,關於小眾產品的復活,大家可以看一下愛奇藝上王自如的脫口秀,《科技相對論》,其中第一季的第三期就專門說的小眾產品的復活。
書歸正傳,繼續說我們的鍵盤。機械鍵盤為什麼能夠復活呢?我覺得,一個原因很重要,那就是有很多工作,都是要長期伏案於鍵盤之前的。像編輯,像程序員,一天敲鍵盤幾個小時那都是少的。鍵盤作為生產力工具,那就相當於戰士的武器,誰不想要一把得心應手的武器呢?這時,我們就懷念起機械鍵盤那獨特手感和反饋感,甚至那噼里啪啦的敲擊聲。這就是我認為機械鍵盤復活的重要原因。
另外,程序員作為一個群體,也有自己的文化。文化是虛的,是需要在具體事物上表達的。作為程序員的一個重要生產力工具,鍵盤必然被程序員賦予了文化符號。為了個性化的彰顯,為了追求差異化,甚至僅僅是為了鄙視另一個程序員,就這樣,機械鍵盤就在薄膜鍵盤的勢力包圍中,強勢回歸。
現在的機械鍵盤,不僅種類很多,顏值擔當的也很多,甚至有很多絢麗奪目的小功能,什麼呼吸燈,跑馬燈,夜間背光等等。我們接下來就說說機械鍵盤的門派。
在機械鍵盤的江湖,有四大門派,輕快如風的紅軸,內外兼修的茶軸,囂張直爽的青軸,直來直去的黑軸。
門派之別,來源於對武術的不同見地,但畢竟都是武術,有相同的根源。那機械鍵盤的共同原理是什麼呢?
首先,不管是什麼軸,它的機械軸都是由開關帽、開關帽固定卡、彈簧、觸點金屬片和底座構成,還有一部分的機械軸里還有跳線。這幾個部件中,最關鍵的部位是開關帽,彈簧和觸點金屬片,它們的不同導致了觸發的壓力,手感和按鍵的壽命不同。先說彈簧,彈簧的圈數越少,彈簧的反饋壓力就越大,黑>青>茶>紅,再說開關帽,開關帽作用於觸點金屬片,按壓導致觸點金屬片連接或者斷開迴路,發出電信號,開關帽作用於觸點金屬片時產生阻力,阻力就會讓我們感受到傳說中的段落感,再加上開關帽不同的嵌套結構,作用到底座的鍵程不同,會帶來不同的節奏感,紅軸和黑軸就是直上直下的感覺,而茶軸和青軸則有一定的阻尼感。然後說說觸點金屬片,機械鍵盤單軸壽命是2000萬次到8000萬次不等,如果一個鍵被用壞了,一般來說,就是觸點金屬片損壞了,可以說觸點金屬片決定了機械鍵盤單軸的壽命。(要知道,薄膜鍵盤的壽命一般來說是30萬次,如果一個鍵,你一天按100次,30萬次就代表著這個鍵你能用3000天,小十年呢,機械鍵盤單軸幾千萬次,可以說,在你厭煩它之前,是用不壞的)說完最關鍵的三個部件,最後說說鍵帽,鍵帽是我們敲鍵盤是最直接觸摸到的,一般是不同質地的塑料,鍵帽上的字有很多工藝,比如絲印,激光雕刻,激光刻蝕,熱升華,二色成型,絲印是最容易讓字摩擦刮花甚至消失的。
熱鬧的江湖只有四種門派么?當然不是,除了紅黑茶青,還有綠軸,橙軸,白軸,灰軸,甚至怪軸,它們有的是不同於上面幾種軸的力度,有的是用於空格鍵這樣比較特殊的按鍵上,它們都比較稀有,有的已經停產,比如白軸,有的是廠家定製款,比如雷柏的橙軸,所以,這個江湖還是很熱鬧的。
講完了機械鍵盤的基本情況,我們來說說玄學部分吧,那就是機械鍵盤的體驗。
有人說,青軸是鍵盤里的春天,因為青軸觸發深度最深,段落感最強,噼里啪啦的聲音最大,打字的時候清脆爽快,像沐浴在春風中敲架子鼓。據說,使用青軸容易被你四周的人揍。。。
有人說,黑軸是公認的游戲軸,玩游戲黑軸是不二之選,因為黑軸沒有段落感,直上直下,一觸即發,打一盤游戲,盡顯激情。
又有人說,茶軸是鍵盤中的紳士,優雅冷靜,它全面兼顧,介於打字和游戲之間,相較於青軸,段落感弱了很多,相對於黑軸,又不是直上直下,因此,也有人會覺得它中庸沒有個性。
最後說,紅軸,紅軸一般推薦給女生,因為它和黑軸一樣直上直下,打字輕快,同時,它壓力系數最小,毫不費力。
聽到這里,不知道你能不能明晰的分出四種軸的不同,其實,真讓你感受四種軸,可能沒有那麼明顯的不同,如果把那些更小眾的軸加上,如白軸,橙軸,灰軸,綠軸,你更加區分不出來。但是被人表達後,人為的強化了不同。這就產生了玄學。玄學的詭譎之處在於,你要根據這些體驗去選你想像中的鍵盤,大概率的可能性是與你的想像不同。就是說,聽起來很有道理,指導起事情來,可能要抓瞎。所以,我覺得買鍵盤,還是要買有眼緣的,當個外貌協會也不錯,有機會呢,還是要去感受一下,覺得喜歡就好,沒必要根據四種軸的文化定位來選。即使你選了黑軸,該團滅還是會被團滅的。
關於上面說的體驗,沒有接觸過如此多的種類,或者沒有長時間在鍵盤上碼字的體驗,可能很難有共鳴。你也可能會覺得這些人好矯情啊,不就是碼字敲鍵盤么,說的神神叨叨,故弄玄虛。是啊,是有些故弄玄虛,文化不就這樣么,虛虛實實,人類就是這樣一種喜歡聽故事的動物啊,把你心目中的神抽絲剝繭,還原歷史情境,他還會讓你感動的起雞皮疙瘩么?所以,我們還是把機械鍵盤理解為一種程序員可愛的文化吧。
總結一下來說,機械鍵盤,相對於薄膜鍵盤,在體驗上沒有質的飛越,打字也不一定更快,也不省力,可能只是釋放了本能中對節奏的渴望,但是卻給程序員帶來了很大的愉悅,創造了話題,也是程序員文化中不可或缺的一部分。
感謝您的收聽。
⑸ 一個四年的程序員,一般工資在多少合適
程序員的行業根據環境,地域,行情,技術等因素來決定薪資,所以除了專業的數據分析平台,我個人只能給出一個大概的范圍吧:
我們按照一個正常的程序員來講述他的待遇;以北京為例,小明畢業於普通二本,大學學習了Java和Android,畢業來到北京找到了一份Android工程師的工作,稅前6K,他覺得工資多少無所謂,主要是讓他接觸到企業項目,學習更多新知識,工作一年後,Android的基本技術小明已經完全掌握了培空啟,並且每天都勤奮好學,學到了不少高深技術,於是他去跳槽,找到下家談到了12k,這個時候的小明堪堪一年虧如工作經驗,由於技術不錯,很快的擔任了項目重要角色,這樣一干就幹了三年,公司每年給他漲幅1k-2K工資,這個時候的小明已經四年經驗了,稅前工資達到了16K,如果他願意跳槽的話,他可能拿得到18k,20k或者更高,但是他沒有,因為這三年雖然項目做了非常多,但是他發現,重復的工作太多了,他的技術一直停滯不前,他也結婚,生子了,以前下班回家都是學習到半夜,到有女朋友後,下班會陪女朋友看電影,玩游戲,到現在下班後遛娃,輔導功課,他已經沒有動力再去學習新的知識了。
雖然小明知道現在的待業已經不配如算高了,但是重在安逸穩定,所以他並沒有跳槽的想法,哪怕看到網上一些言論說四年的工資多少,他也直接無視,但是程序行業日新月異,老東家堅持不住了,倒閉了,於是小明又要重新找工作了,這個時候的小明五年工作經驗,稅前16k,於是他寫簡歷,因為他有資歷,了解了現在的行情,洋洋灑灑寫了一份很精緻的簡歷附上期望月薪30k,可是面試的過程並不順利,很多問題他都答不上來,要麼就是基礎忘記了,要麼就是新技術他不會,於是他開始迷茫了~~
之後的故事我就不編了,大家自己腦補吧。
回答題主的問題:四年程序員大概在10-25k之間,大部分是15k-20k區間
⑹ 資深程序員分享如何預防頸椎病
王先生作為一個自身的程序員,從事編程工作多年,再加上平時喜歡玩電腦多,長時間在電腦前坐著,以至於得了職業病。手指、手腕、肩頸部都經常疼痛,眼睛干澀紅癢,肚子也變將軍了。後來在家SOHO,頸椎問題更為嚴重。在網上尋求解決方法,並進行自我治療,有了明顯的好轉,將心得體會記錄於下,望對使用電腦工作的人有點用處,尤其是從事編程工作的朋友們。 頸椎問題的嚴重性:會引發腦部供血、脊柱神經、睡眠等問題。 原因:久坐少動,肩頸部肌肉勞損以至頸部骨骼、軟骨受損。 我的解決過程:先是每周按摩一小時。你要想有點效果一定得到正規的地方,還得受得了疼。按一次,得疼三天。有是有點用,回想一下,這不是花錢找罪受么?然後去了醫院,醫生給開了一些葯,問了,大概都是緩解症狀的,不能治本。我一向不同意程序員30歲轉行的觀點,難道我過不去這個坎?轉而採取日常生活中的自我治療。一般來說,主流的意見是多運動,包括體育運動和針對性的保健操。我在家實踐了兩個月,3天一次長跑或羽毛球,每天一次散步和多次保健操。頸椎疼痛有一定的緩解。再後來進一步從源頭上著手,調整使用電腦時的坐姿,坐在電腦椅上時微微向後傾斜,選擇有頭枕的電腦椅,這樣可以對頸部起到很好的支撐作用,降低頸椎病的發生。還有硬性的減少坐在電腦前的時間,游戲不打了,工作想問題時就起身,這個也不易,對工作有一定影響,但也是重要方法之一。還有些方法是調整桌椅高度及坐姿,桌椅一定是符合三個90度:坐著膝蓋90度、大腿和上身90度、肘部90度。肘部一定要有依託,至少有椅子的扶手,我現在是可以升降的辦公桌,兩肘都放在桌面上;另外,買電腦椅時特別選擇了一款腰部支撐比較不錯的電腦椅,效果非常不錯,原來腰部的輕微疼痛現在沒有了,特別早上起來感覺很輕松。現在我的頸椎問題已經好多了。 總結:方法是綜合的,但效果最明顯的就是注意使用電腦時的坐姿和睡眠健康。健康的坐姿,可以讓我們工作、健康兩不誤,良好、科學的睡眠姿勢和適合枕頭保證我們有充足的睡眠時間、較高的睡眠質量。另外,千萬別覺得沒有時間想健康問題,否則結果是不得不想。