程序猿大學(xué)生活的真正技能修煉(一)

打開程序世界的大門

可能很多人接觸的第一堂編程語言課就是c語言天试,我也一樣怕膛,那時似乎完全不知道在說什么,不知道來龍匪凉,也不知道去脈捌肴,這就導(dǎo)致了一個問題蹬叭,怎么學(xué)。其實不是說老師沒鋪墊好状知,而是在老師感覺以為那本就不是問題秽五,而且時間有限干脆直接切入正題。但是對于學(xué)生而言饥悴,其實這也是一個會一直存在的問題坦喘,就是概念懸空,當(dāng)然就算從程序設(shè)計的起源一步步講起也未必誰都能懂西设,所以說到底到靠自學(xué)瓣铣!應(yīng)該說一開始學(xué)習(xí)編程完完全全就是為了入門,至于能拿來做什么僅限于一個套路下實現(xiàn)一個功能就好贷揽,就比如學(xué)了c語言的語法和代碼基礎(chǔ)邏輯然后就可以用來處理一些數(shù)學(xué)計算棠笑,實現(xiàn)一個純字符界面的所謂的管理系統(tǒng)或小游戲,其實依賴的完全是程序的順序邏輯以及純字符打印輸出禽绪,大多情況是這樣蓖救,好一點可能利用一下文件的處理功能洪规,用文件存儲數(shù)據(jù)而不是只在內(nèi)存存放數(shù)據(jù)。其實這個時候我們努力把這些做好就可以了藻糖,實實在在多去練習(xí)熟能生巧淹冰。

到底什么是編程

經(jīng)常練習(xí)的人可能就會發(fā)現(xiàn),即使是最簡單的功能會有許多種不同的實現(xiàn)方法并且往往效果上有輕微差別巨柒,比如遞歸和迭代,應(yīng)該很多人都已經(jīng)接觸這個了柠衍,其實都是循環(huán)洋满,只是實現(xiàn)方式不同,遞歸可能更簡潔珍坊,但你需要理清楚數(shù)學(xué)邏輯牺勾,而迭代一般相對代碼多一些,關(guān)鍵的一點是同一個功能的話用這兩種方式執(zhí)行起來效率是有很大差異的阵漏!很多人慢慢就會發(fā)現(xiàn)代碼的這個規(guī)律驻民,去追求一種更高效的寫法或者運行效率,當(dāng)然一般兩者很難兼得履怯』鼗梗可以說這其實才真正屬于程序設(shè)計!

所以說叹洲,程序設(shè)計其實不僅僅在于實現(xiàn)功能柠硕,這里涉及到的一個概念就是優(yōu)化!理解了這層含義运提,當(dāng)作拋磚引玉蝗柔,可以開始講講編程語言本身了。在編程語言里面民泵,不可缺少的一種東西叫做標(biāo)準(zhǔn)癣丧,比如之前最常用和常見的C89標(biāo)準(zhǔn),后來又出現(xiàn)了C99栈妆、C11標(biāo)準(zhǔn)胁编,這些標(biāo)準(zhǔn)里面保留了一些舊版本的兼容特性,但更多的是加入了許多新特性和要求签钩,沒有哪一門語言是愿意一成不變的掏呼,也需要做創(chuàng)新和優(yōu)化。系統(tǒng)和開發(fā)環(huán)境本身也是一種程序铅檩,只不過是為了編譯或者解釋(有些語言是不需要編譯的憎夷,稱之為解釋)、執(zhí)行所編寫的程序昧旨,這些環(huán)境會去執(zhí)行這些標(biāo)準(zhǔn)拾给,以來各種各樣的庫(這里又冒出一個哭的概念O榈谩)。所以這里的意思其實是應(yīng)該多去了解這些原理蒋得,對于頭文件级及、鏈接庫、編譯器如果熟悉是大有裨益的(暫且指的是以C/C++為例)额衙。

積累原理知識

掌握原理其實是相當(dāng)重要的饮焦,很多人也都明白,可是怎么去做呢窍侧?在學(xué)習(xí)了一些編程語言的基礎(chǔ)之后可能就開始慢慢接觸一些綜合知識了县踢,比如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)伟件、計算機(jī)網(wǎng)絡(luò)等硼啤,這些都是與程序設(shè)計息息相關(guān)的。更重要的一點是這些是與編程語言無關(guān)的斧账,任何編程語言都必須依賴這些谴返,換句話說就是任何語言都有數(shù)據(jù),有數(shù)據(jù)就有數(shù)據(jù)的結(jié)構(gòu)咧织,任何高級語言都建立在操作系統(tǒng)的基礎(chǔ)上都必須利用系統(tǒng)的底層調(diào)用實現(xiàn)功能嗓袱,任何高級語言都會有實現(xiàn)網(wǎng)絡(luò)編程的需求。所以說這個時候你學(xué)了什么語言并不重要拯爽,而是你是否會利用語言去聯(lián)系這些基礎(chǔ)而重要的知識索抓,甚至可以說是核心的知識!因為這些內(nèi)容是一個編程語言真正存在的前因后果毯炮,一個語句或操作之所以意味著某個含義是依賴于底層調(diào)用再去做一些數(shù)據(jù)結(jié)構(gòu)的處理才能實現(xiàn)的逼肯。我覺得有必要有這樣的認(rèn)識。

編程語言是建立在基礎(chǔ)原理之上的桃煎,沒有知識體系也不可能有編程語言這種東西篮幢。所以說編程語言在實現(xiàn)各種各樣需求的時候只有依賴某一知識標(biāo)準(zhǔn)才可能被使用,能夠被使用的編程語言也就可以用來去實現(xiàn)更多新的標(biāo)準(zhǔn)为迈,這兩者是相輔相成的三椿。了解了數(shù)據(jù)結(jié)構(gòu),就有必要去挖掘各種數(shù)據(jù)結(jié)構(gòu)葫辐,了解一個優(yōu)良的高效的存儲結(jié)構(gòu)是什么樣的等等搜锰。操作系統(tǒng)就更重要了,程序的執(zhí)行(進(jìn)程的概念)耿战、對文件操作(文件流蛋叼、二進(jìn)制文件等概念)、字符終端的使用(標(biāo)準(zhǔn)輸入輸出、其實也是一種文件)狈涮、內(nèi)存利用等等狐胎,必須深入了解不可!

程序猿的綜合能力

其實任何一個程序員只會一門語言是不可能的歌馍,當(dāng)然這里不是鼓勵去學(xué)各種編程語言的意思握巢,因為高級語言一門基本就能完成所需的所有功能了,只是難易程度的問題罷了松却。這里的意思是使用一門語言和各種相關(guān)聯(lián)的技能的重要性暴浦,可能經(jīng)常也聽到說語言就一門學(xué)到透就可以了,走遍天下都不怕晓锻,但這句話其實缺少了上下文肉渴!因為一門語言想要掌握得好和用得好必須懂得許多技能,只有這樣也才更有效率带射!

先說操作系統(tǒng),作為程序員肯定知道遠(yuǎn)不止windows這一中操作系統(tǒng)循狰,最重要的是在開源世界里的GNU/Linux(從Unix發(fā)展而來)窟社,所以不管是什么時候,一個打算進(jìn)入編程世界的人绪钥,必須學(xué)會不同操作系統(tǒng)下的基礎(chǔ)知識灿里,起碼應(yīng)該像一個開發(fā)者一樣能輕松使用一臺計算機(jī),不管他是windows還是linux程腹。首先你得熟練地會安裝操作系統(tǒng)匣吊,然后熟悉不同環(huán)境下的環(huán)境變量、網(wǎng)絡(luò)配置寸潦、軟件安裝色鸳、命令行操作等等。這對一個程序員來說是一個必不可少的修煉過程见转!

再比如說數(shù)據(jù)庫命雀,開始可能依賴內(nèi)存或者普通文件存儲一條條數(shù)據(jù),現(xiàn)在有了數(shù)據(jù)庫可以處理大量數(shù)據(jù)可進(jìn)行永久存儲而且有專門的SQL語言進(jìn)行操作斩箫。而且程序分前臺和后臺吏砂,前臺用來展示給用戶就行交互,后臺用來連接數(shù)據(jù)庫處理數(shù)據(jù)乘客,其實現(xiàn)在的大多應(yīng)用中間都是經(jīng)過了許許多多的接口狐血,作為一個程序員,你必須懂得流行數(shù)據(jù)庫的操作(增刪改查易核、和宿主語言的連接——例如經(jīng)典的ODBC)匈织、接口(前后臺連接或者數(shù)據(jù)結(jié)構(gòu)或者協(xié)議進(jìn)行不同語言之間的連接)的使用。還有耸成,我們常說的接口就是為了獲取和推送數(shù)據(jù)报亩,你應(yīng)該了解常用的數(shù)據(jù)格式浴鸿,因為不同的數(shù)據(jù)格式應(yīng)用特點不一樣,編程經(jīng)常會用到許多特定的數(shù)據(jù)格式弦追,不同語言之間采用同一種數(shù)據(jù)格式岳链,就可以實現(xiàn)合作,學(xué)會各種格式文件的處理(讀取劲件、寫入)是一門必修課掸哑!

程序員一個很重要的特點是使用各種各樣高效的手法去解決問題,一些好的技巧和意識往往事半功倍零远,所以這也是程序員所應(yīng)認(rèn)真鍛煉的技能苗分。首當(dāng)其沖的應(yīng)該說一說搜索引擎!因為搜索引擎可以幫助你通往世界的幾乎每一個角落牵辣,通過網(wǎng)絡(luò)可以去發(fā)現(xiàn)各種各樣的資源和最新技術(shù)發(fā)展動態(tài)摔癣,可以找到許許多多解決問題的方案,可以利用許多大神功能貢獻(xiàn)出的輪子(輪子就是別人寫好的模塊等纬向,尤其是在像python這種腳本里面依賴的是大量模塊的組裝)择浊,這些都可以幫助幫助編程人員高效地開發(fā),但是搜索引擎你真的知道怎么使用嗎逾条?推薦最強大的谷歌瀏覽器琢岩,而作為技術(shù)人員首先應(yīng)該去仔細(xì)看一看官方文檔,叫你真正的使用技巧师脂!

提到了查看官方文檔担孔,我們應(yīng)當(dāng)意識到了,很多東西正式使用之前都應(yīng)該去看一下說明書吃警,程序開發(fā)也如此糕篇,使用各種各樣的編程軟件去寫代碼你應(yīng)該首先去熟悉一下快捷方式和特殊用法,還有各種高校插件汤徽,這是一個良好的習(xí)慣娩缰,且會讓人受益匪淺!比如一個notepad++谒府,這個軟件可以很方便地幫你處理編碼拼坎、列編輯、特殊格式變換完疫、高級替換等泰鸡。說到高級替換,不得不說的是正則表達(dá)式壳鹤,可能很多人還沒接觸過盛龄,但是這個至關(guān)重要,是字符匹配和數(shù)據(jù)文件處理不可或缺的技巧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末余舶,一起剝皮案震驚了整個濱河市啊鸭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匿值,老刑警劉巖赠制,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挟憔,居然都是意外死亡钟些,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門绊谭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來政恍,“玉大人,你說我怎么就攤上這事达传「莺模” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵宪赶,是天一觀的道長鹤树。 經(jīng)常有香客問我,道長逊朽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任曲伊,我火速辦了婚禮叽讳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坟募。我一直安慰自己岛蚤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布懈糯。 她就那樣靜靜地躺著涤妒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赚哗。 梳的紋絲不亂的頭發(fā)上她紫,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音屿储,去河邊找鬼贿讹。 笑死,一個胖子當(dāng)著我的面吹牛够掠,可吹牛的內(nèi)容都是我干的民褂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赊堪!你這毒婦竟也來了面殖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哭廉,失蹤者是張志新(化名)和其女友劉穎脊僚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體群叶,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡吃挑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了街立。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舶衬。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赎离,靈堂內(nèi)的尸體忽然破棺而出逛犹,到底是詐尸還是另有隱情,我是刑警寧澤梁剔,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布虽画,位于F島的核電站,受9級特大地震影響荣病,放射性物質(zhì)發(fā)生泄漏码撰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一个盆、第九天 我趴在偏房一處隱蔽的房頂上張望脖岛。 院中可真熱鬧,春花似錦颊亮、人聲如沸柴梆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍在。三九已至,卻和暖如春雹有,著一層夾襖步出監(jiān)牢的瞬間偿渡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工霸奕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留卸察,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓铅祸,卻偏偏與公主長得像坑质,于是被迫代替她去往敵國和親合武。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容