10月24日看似一個(gè)普通的日子,卻也是一個(gè)很有意思的節(jié)日。1024是2的十次方,二進(jìn)制計(jì)數(shù)的基本計(jì)量單位之一,因此每年的10月24日被大家親切稱(chēng)為程序員節(jié)。
一、程序員的前世今生
很多良心企業(yè)和互聯(lián)網(wǎng)機(jī)構(gòu)一直非常關(guān)注程序員健康,針對(duì)程序員經(jīng)常周末加班與工作日熬夜的情況,倡議每年的10月24日為1024程序員節(jié),比如
兄弟網(wǎng)絡(luò),在這一天就是拒絕程序員加班的。
1800年,一個(gè)名字叫做約瑟夫·瑪麗·雅卡爾的人,設(shè)計(jì)出人類(lèi)歷史上首臺(tái)可設(shè)計(jì)織布機(jī)——雅卡爾織布機(jī),對(duì)將來(lái)發(fā)展出其他可編程機(jī)器起了重要作用。
1834年,阿達(dá)·洛芙萊的朋友——英國(guó)數(shù)學(xué)家、發(fā)明家兼機(jī)械工程師查爾斯·巴貝其——發(fā)明了一臺(tái)分析機(jī)。阿達(dá)·洛芙萊開(kāi)始致力于為該分析機(jī)編寫(xiě)算法,并于1843年公布了世界上第一套算法。巴貝其分析機(jī),后來(lái)被認(rèn)為是最早期的計(jì)算機(jī)雛形,而阿達(dá)·洛芙萊得以“數(shù)字女王”之稱(chēng),她的算法則被認(rèn)為是最早的計(jì)算機(jī)程序。
1936年,阿蘭·麥席森·圖靈向倫敦權(quán)威的數(shù)學(xué)雜志投了一篇論文,題為“論數(shù)字計(jì)算在決斷難題中的應(yīng)用”。在這篇開(kāi)創(chuàng)性的論文中,圖靈給“可計(jì)算性”下了一個(gè)嚴(yán)格的數(shù)學(xué)定義,并提出著名的“圖靈機(jī)”(Turing Machine)的設(shè)想。圖靈被稱(chēng)為“計(jì)算機(jī)科學(xué)之父”。
1959年,葛麗絲·霍普創(chuàng)造了現(xiàn)代第一個(gè)編譯器A-0 系統(tǒng),以及商用電腦編程語(yǔ)言“COBOL”,被譽(yù)為COBOL之母 。
1972年,丹尼斯·里奇在貝爾實(shí)驗(yàn)室的工作時(shí)間里感到無(wú)聊,所以他決定制作帶有花括號(hào)的C,并最終取得了巨大的成功。之后,他添加了分段錯(cuò)誤和其他開(kāi)發(fā)人員友好功能,以提高生產(chǎn)力。在星期天還有幾個(gè)小時(shí)的時(shí)間,他和他在貝爾實(shí)驗(yàn)室的朋友決定創(chuàng)建一個(gè)名為Unix的操作系統(tǒng)。
1983年,比雅尼·斯特勞斯特魯普發(fā)明了C++,寫(xiě)下了它的早期定義并做出了首個(gè)實(shí)現(xiàn)。
1994年,拉斯姆斯·勒多夫(Rasmus Lerdorf)為他的個(gè)人主頁(yè)CGI腳本制作了一個(gè)模板引擎,隨后采取開(kāi)源化政策,被眾多編程愛(ài)好者追逐擁戴,也是目前
西安網(wǎng)站建設(shè)行業(yè)里,包括
西安兄弟網(wǎng)絡(luò)等等建站公司,都在使用的
PHP。
1995年,布蘭登·艾克在周末的時(shí)候設(shè)計(jì)了一種語(yǔ)言,用來(lái)為世界各地的每一個(gè)網(wǎng)頁(yè)瀏覽器提供支持。當(dāng)初這門(mén)語(yǔ)言被稱(chēng)為L(zhǎng)iveScript,但隨著Java變得流行,他們決定將其重命名為
JavaScript。
總之,大約一九五幾年之后,各種編程語(yǔ)言相繼如春筍般出世。直至今天互聯(lián)網(wǎng)行業(yè)的發(fā)展越發(fā)迅猛,技術(shù)的更新迭代速度更是異常的快速。
二、程序員需要具備的技能
1、熟練開(kāi)發(fā)工具
做為一名程序員至少熟練掌握兩到三種開(kāi)發(fā)工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點(diǎn)推薦的開(kāi)發(fā)工具,C/C++以其高效率和高度的靈活性成為開(kāi)發(fā)工具中的利器,很多系統(tǒng)級(jí)的軟件還是用C/C++編寫(xiě)。其次,能掌握一種簡(jiǎn)便的可視化開(kāi)發(fā)工具,如VB,PowerBuilder,Delphi,CBuilder,這些開(kāi)發(fā)工具減小了開(kāi)發(fā)難度,并能夠強(qiáng)化程序員對(duì)象模型的概念。另外,需要掌握基本的腳本語(yǔ)言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知數(shù)據(jù)庫(kù)
為什么數(shù)據(jù)庫(kù)是如此重要?作為程序員,他們自然有自己的理由:很多應(yīng)用程序都是以數(shù)據(jù)庫(kù)的數(shù)據(jù)為中心,而數(shù)據(jù)庫(kù)的產(chǎn)品也有不少,其中關(guān)系型數(shù)據(jù)庫(kù)仍是主流形式,所以程序員至少熟練掌握一兩種數(shù)據(jù)庫(kù),對(duì)關(guān)系型數(shù)據(jù)庫(kù)的關(guān)鍵元素要非常清楚,要熟練掌握SQL的基本語(yǔ)法。雖然很多數(shù)據(jù)庫(kù)產(chǎn)品提供了可視化的數(shù)據(jù)庫(kù)管理工具,但SQL是基礎(chǔ),是通用的數(shù)據(jù)庫(kù)操作方法。如果沒(méi)有機(jī)會(huì)接觸商業(yè)數(shù)據(jù)庫(kù)系統(tǒng),可以使用免費(fèi)的數(shù)據(jù)庫(kù)產(chǎn)品是一個(gè)不錯(cuò)的選擇,如mySQL,Postgres等。
3、了解操作系統(tǒng)
當(dāng)前主流的操作系統(tǒng)是Windows,Linux/Unix,熟練地使用這些操作系統(tǒng)是必須的,但只有這些還遠(yuǎn)遠(yuǎn)不夠。要想成為一個(gè)真正的編程高手,需要深入了解操作系統(tǒng),了解它的內(nèi)存管理機(jī)制、進(jìn)程/線程調(diào)度、信號(hào)、內(nèi)核對(duì)象、系統(tǒng)調(diào)用、協(xié)議棧實(shí)現(xiàn)等。
在互聯(lián)網(wǎng)如此普及的今天,如果您還沒(méi)有對(duì)互聯(lián)網(wǎng)的支撐協(xié)議TCP/IP協(xié)議棧有很好的掌握,就需要迅速補(bǔ)上這一課,網(wǎng)絡(luò)技術(shù)已改變了軟件運(yùn)行的模式,從最早的客戶/服務(wù)器結(jié)構(gòu),到今天的WEBServices,再到未來(lái)的網(wǎng)格計(jì)算,這一切都離不開(kāi)以TCP/IP協(xié)議棧為基礎(chǔ)的網(wǎng)絡(luò)協(xié)議支持,深入掌握TCP/IP協(xié)議是非常必要的。
隨著技術(shù)的發(fā)展,軟件與網(wǎng)絡(luò)的無(wú)縫結(jié)合是必然趨勢(shì),軟件系統(tǒng)的位置無(wú)關(guān)性是未來(lái)計(jì)算模式的重要特征之一,DCOM/CORBA是當(dāng)前兩大主流的分布計(jì)算的中間平臺(tái),DCOM是微軟COM(組件對(duì)象模型)的擴(kuò)展,而CORBA是OMG支持的規(guī)范。XML/WebServices重要性不言而喻,XML以其結(jié)構(gòu)化的表示方法和超強(qiáng)的表達(dá)能力被喻為互聯(lián)網(wǎng)上的“世界語(yǔ)”,是分布式計(jì)算的基石之一。
4、不要將軟件工程與CMM分開(kāi)
大型軟件系統(tǒng)的開(kāi)發(fā)中,工程化的開(kāi)發(fā)控制取代個(gè)人英雄主義,成為軟件系統(tǒng)成功的保證,一個(gè)編程高手并不一定是一個(gè)優(yōu)秀的程序員,一個(gè)優(yōu)秀的程序員是將出色的編程能力和開(kāi)發(fā)技巧同嚴(yán)格的軟件工程思想有機(jī)結(jié)合,編程只是軟件生命周期中的其中一環(huán),優(yōu)秀的程序員應(yīng)該掌握軟件開(kāi)發(fā)各個(gè)階段的基本技能,如市場(chǎng)分析,可行性分析,需求分析,結(jié)構(gòu)設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件測(cè)試等。
5、需求理解能力
程序員要能正確理解任務(wù)單中描述的需求。在這里要明確一點(diǎn),程序員不僅僅要注意到軟件的功能需求,還應(yīng)注意軟件的性能需求,要能正確評(píng)估自己的模塊對(duì)整個(gè)項(xiàng)目中的影響及潛在的威脅,如果有著兩到三年項(xiàng)目經(jīng)驗(yàn)的熟練程序員對(duì)這一點(diǎn)沒(méi)有體會(huì)的話,只能說(shuō)明他或許是認(rèn)真工作過(guò),但是沒(méi)有用心工作。
6、模塊化思維能力
作為一個(gè)優(yōu)秀的程序員,他的思想不能局限在當(dāng)前的工作任務(wù)里面,要想想看自己寫(xiě)的模塊是否可以脫離當(dāng)前系統(tǒng)存在,通過(guò)簡(jiǎn)單的封裝在其他系統(tǒng)中或其他模塊中直接使用。這樣做可以使代碼能重復(fù)利用,減少重復(fù)的勞動(dòng),也能使系統(tǒng)結(jié)構(gòu)越趨合理。模塊化思維能力的提高是一個(gè)程序員的技術(shù)水平提高的一項(xiàng)重要指標(biāo)。
三、程序員的職業(yè)素質(zhì)要求
1、團(tuán)隊(duì)精神和協(xié)作能力
團(tuán)隊(duì)協(xié)作是作為一個(gè)程序員應(yīng)具備的最基本的素質(zhì)。軟件工程已經(jīng)提了將近三十年了,當(dāng)今的軟件開(kāi)發(fā)已經(jīng)不是編程了,而是工程。獨(dú)行俠可以寫(xiě)一些程序也能賺錢(qián)發(fā)財(cái),但是進(jìn)入研發(fā)團(tuán)隊(duì),從事商業(yè)化和產(chǎn)品化的開(kāi)發(fā)任務(wù),就必須具備這種素質(zhì)??梢院敛豢鋸埖恼f(shuō)這種
素質(zhì)是一個(gè)程序員乃至一個(gè)團(tuán)隊(duì)的安身立命之本。
2、文檔習(xí)慣
文檔是一個(gè)軟件系統(tǒng)的生命力。一個(gè)公司的產(chǎn)品再好、技術(shù)含量再高,如果缺乏文檔,知識(shí)就沒(méi)有繼承,公司還是一個(gè)來(lái)料加工的軟件作坊。作為代碼程序員,必須將30%的工作時(shí)間用于寫(xiě)技術(shù)文檔。沒(méi)有文檔的程序員勢(shì)必會(huì)被淘汰。
3、規(guī)范化的代碼編寫(xiě)習(xí)慣
知名軟件公司的代碼的變量命名、注釋格式,甚至嵌套中行縮進(jìn)的長(zhǎng)度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫(xiě)習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。
4、測(cè)試習(xí)慣
測(cè)試是軟件工程質(zhì)量保證的重要環(huán)節(jié),但是測(cè)試不僅僅是測(cè)試工程師的工作,而是每個(gè)程序員的一種基本職責(zé)。程序員要認(rèn)識(shí)測(cè)試不僅是正常的程序調(diào)試,而要是要進(jìn)行有目的有針對(duì)性的異常調(diào)用測(cè)試,這一點(diǎn)要結(jié)合需求
理解能力。
5、學(xué)習(xí)和總結(jié)的能力
程序員是很容易被淘汰的職業(yè),所以要善于學(xué)習(xí)總結(jié)。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術(shù)人員無(wú)論學(xué)了多少語(yǔ)言,代碼寫(xiě)起來(lái)多熟練,只能說(shuō)他是一名熟練的代碼民工(碼農(nóng)),他永遠(yuǎn)都不會(huì)有質(zhì)的提高。一個(gè)善于學(xué)習(xí)的程序員會(huì)經(jīng)常總結(jié)自己的技術(shù)水平,對(duì)自己的技術(shù)層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級(jí)為軟件設(shè)計(jì)師、系統(tǒng)分析員。
6、擁有強(qiáng)烈的好奇心
什么才是一個(gè)程序員的終極武器呢,那就是強(qiáng)烈的好奇心和學(xué)習(xí)精神。沒(méi)有比強(qiáng)烈的好奇心和學(xué)習(xí)精神更好的武器了,它是程序員們永攀高峰的源泉和動(dòng)力所在。
生命不息,學(xué)習(xí)不止!
四、程序員同事的可愛(ài)
在我們的生活中,有這樣的一群人:常年如一日的單調(diào)著裝,讓人倍感嫌棄又想吐槽,超長(zhǎng)反射弧和超高笑點(diǎn),常常讓同事冷場(chǎng),略顯愚鈍木訥的舉止,讓身邊的人覺(jué)得無(wú)聊又無(wú)趣……他們經(jīng)常讓外人覺(jué)得莫名其妙,甚至以“異類(lèi)生物”相稱(chēng)呼,可卻經(jīng)常神乎其技的寫(xiě)幾行代碼,就能實(shí)現(xiàn)某個(gè)功能,讓人仰慕不已。
他們有著,與他們的高智商極不匹配的低情商,或許他們對(duì)朋友的關(guān)心不及對(duì)工作的十分之一,卻為我們“構(gòu)建”出了一整個(gè)科技世界,沒(méi)有程序員,我們就沒(méi)有微博、微信、淘寶、滴滴、各種網(wǎng)頁(yè)、各種APP、各種智能、各種游戲……
就是這樣一群人讓我們的生活悄然改變著,
以最低調(diào)、踏實(shí)、核心的功能模塊搭建起這個(gè)科技世界,讓我們感受著科技力量的偉大和生活的便捷。程序員就像是一個(gè)個(gè)1024,一步一個(gè)腳印,悄無(wú)聲息地為世界進(jìn)步貢獻(xiàn)著自己的力量。
他們善于學(xué)習(xí)、進(jìn)取心超強(qiáng)的人。他們總是喜歡學(xué)習(xí)、嘗試新事物,求知欲望相當(dāng)強(qiáng)。在互聯(lián)網(wǎng)這個(gè)行業(yè),技術(shù)的更新迭代速度很快,唯有不斷學(xué)習(xí)和嘗試,才能立于不敗之地,人都是做自己原本不能勝任的事情中,才能快速成長(zhǎng)。正是基于這種信念,我們常常能在程序員的身上看到不竭的激情與滿滿的正能量。
五、全球程序員節(jié)·西安
為積極響應(yīng)國(guó)家“一帶一路”倡議,啟迪創(chuàng)新思維,提升西安國(guó)際影響力,弘揚(yáng)程序員精神,加快推進(jìn)軟件和信息服務(wù)業(yè)成為大西安追趕超越的重要支柱產(chǎn)業(yè),著力打造全球“
軟件名城”和“
絲路硅谷”,第二屆“全球程序員節(jié)”將于2018年10月24日至25日在西安高新國(guó)際會(huì)議中心舉辦。
為傳承程序員精神,以榜樣的力量鼓舞廣大新生代軟件從業(yè)者帶著榮譽(yù)感、使命感和更高的熱情投身事業(yè),將在永久會(huì)址設(shè)立大咖程序員“星光大道”,采集并展示中國(guó)軟件產(chǎn)業(yè)開(kāi)路人和領(lǐng)路人的手印,其采集對(duì)象包括
王永民、宮敏、求伯君、雷軍、張小龍、丁磊、王小川等對(duì)中國(guó)軟件產(chǎn)業(yè)發(fā)展做出卓著貢獻(xiàn)的“大咖程序員”。
軟件和信息服務(wù)業(yè)是數(shù)字經(jīng)濟(jì)的先導(dǎo)性、基礎(chǔ)性和戰(zhàn)略性產(chǎn)業(yè),“全球程序員節(jié)”將以壯大數(shù)字建設(shè)大軍為使命,承載激情,傳播理念,積聚智慧,為全球的軟件開(kāi)發(fā)者、科技企業(yè)、創(chuàng)投機(jī)構(gòu)、行業(yè)意見(jiàn)領(lǐng)袖和科學(xué)領(lǐng)袖搭建交流合作的生態(tài)平臺(tái),
驅(qū)動(dòng)創(chuàng)新,碼動(dòng)未來(lái)!