當我們在學習編程語言時进泼,我們在學習什么?

今天上班的公交上看到一篇文章疮装,叫《學習編程語言時缘琅,我們在學習什么》,想想自己這幾年的學習經(jīng)歷廓推,覺得文中的許多觀點說的很有道理刷袍,于是整理成文,僅供參考樊展。
在程序員這條路上呻纹,我們注定會面對或者學習多種不同的語言,對于一門編程語言专缠, 我們到底學習什么東西呢雷酪?

1、基本語法

首先肯定是語法涝婉, 像數(shù)據(jù)類型哥力、標識符、關鍵字墩弯、運算符吩跋、注釋、 流程控制語句等等渔工。如果你之前學過一門編程語言锌钮,再去學新的語言,會發(fā)現(xiàn)在基本的語法層面引矩, 這些語言都差不太多梁丘。因為都是命令式編程語言, 程序員要精確的告訴計算機用何種指令做事情旺韭, 是對計算機硬件的抽象氛谜,命令式程序本質(zhì)上就是一個馮諾依曼機的指令序列。如果你學的是函數(shù)式編程区端, 那就大不相同了值漫。對于命令式編程, 最基本的控制語句就這么三種: 順序珊燎、分支惭嚣、循環(huán)。當然不同的語言悔政, 對于這基本的流程控制會有一些變體晚吞, 例如do ... while, switch .. foreach 等等, 但本質(zhì)都是一樣的谋国。
對于基本的語法槽地, 我相信很多人都能迅速掌握。

2芦瘾、基本的數(shù)據(jù)結構

想象一下捌蚊, 假設OC中沒有集合框架, 什么東西都需要自己來做近弟, 那寫起程序來該有多累缅糟!現(xiàn)在的語言除了基本的語法之外 ,都會有內(nèi)置的強大的數(shù)據(jù)結構祷愉, 方便程序員來編程 窗宦。這些數(shù)據(jù)結構中最常見的是這幾個:

字符串

實際代碼中會有大量對字符串的操作,現(xiàn)在的語言都有良好的支持二鳄, 需要學習下相關的API赴涵。

可以動態(tài)增長的數(shù)組

這也是一個非常常見、非常有用的數(shù)據(jù)結構订讼, 在Java 中就是ArrayList, OC 就是NSArray髓窜, Ruby 中稱為數(shù)組。 由于其應用的廣泛性欺殿, 一定要好好學習下它的用法寄纵。

用來存儲 key - value 這樣值對的集合

Java 中的Map , OC 中的字典, ruby的hash 表均屬此類祈餐。
絕大部分程序擂啥,經(jīng)常使用的也就是上面三個數(shù)據(jù)結構, 其他的還有無重復元素的集合(Set)等等帆阳。

3哺壶、面向?qū)ο?/h4>

看完語法和數(shù)據(jù)結構, 接下來可以看看面向?qū)ο笤谶@個語言中是怎么實現(xiàn)的蜒谤,對于命令式編程山宾, 面向?qū)ο蠛喼本褪菢伺洌?沒有面向?qū)ο蟮闹С郑?簡直就不好意思和別人打招呼。
有人說面向?qū)ο笠阉溃?實際情況呢鳍徽? 絕大部分軟件還是以面向?qū)ο鬄榛A構建起來的资锰, 所以不要聽風就是雨, 老老實實地去學封裝阶祭、繼承绷杜、多態(tài)吧直秆。
如果你已經(jīng)掌握了面向?qū)ο蟮脑O計和編程的思維, 那對于學習新語言的OO來說鞭盟, 那真是太簡單了圾结, 基本上就是一點點語法的區(qū)別。
例如繼承齿诉, Java用extends , OC用“:”筝野, Ruby 用“<” , Python 用 括號來表示, 大同小異粤剧, 只不過有些語言只支持單繼承歇竟, 有些支持多繼承, 更加復雜一些抵恋。
對于封裝焕议, 各個語言也是差不多,一般都有private , proteted , public 這三個保護的級別馋记,也是表現(xiàn)形式不一樣号坡。
對于多態(tài), 這是很多靜態(tài)語言的專利梯醒, 動態(tài)語言用的是Duck Typing , 比多態(tài)更加靈活宽堆, 需要仔細揣摩下和多態(tài)的區(qū)別, 優(yōu)勢和劣勢茸习。

4畜隶、突破內(nèi)存

學到這里, 你應該可以用這門語言來寫程序了号胚, 但是你很快就會發(fā)現(xiàn)籽慢,程序只能在內(nèi)存中折騰,最多能輸出到毫無趣味的控制臺上猫胁, 還無法訪問硬盤和網(wǎng)絡箱亿, 這也是編程語言必須提供的重要特性。不同的語言對硬盤和網(wǎng)絡的抽象大相徑庭弃秆, 例如Java 試圖把所有的東西都稱為IO, 抽象出了一套優(yōu)雅但是不太好用的API届惋。 相比而言像Ruby 和 Python 對硬盤文件的操作就簡單的多。對XML 和 JSON的操作是必須要掌握的技能菠赚, 因為他們的用途實在是太廣泛了脑豹。對于網(wǎng)絡編程, 至少要理解Socket和HTTP衡查, 一個是傳輸層瘩欺,一個是應用層, 各大語言對Socket和Http 編程都有很好的支持。

5俱饿、讓多任務并發(fā)執(zhí)行

線程的概念對于初學者歌粥,或者說沒有計算機基礎的同學們學起來有點難度, 因為要理解什么是進程拍埠, 什么是線程 阁吝,為什么要有進程和線程, 有點偏向計算機的底層了械拍。并發(fā)編程會涉及到線程之間的同步和通信, 如何加鎖装盯,防止死鎖坷虑, 線程池等很多煩人的知識點, 雖然說在實際工作中都封裝好了埂奈, 業(yè)務編程中用的少迄损, 但是要理解概念。對于各個語言來說账磺, 良好的線程支持也是標配芹敌, 要了解相應的API, 至少能用他們寫出小程序來。

6垮抗、語言特性

各個語言都有自己的特性氏捞, 例如Java 的反射/范型/注解, OC 的block冒版, 元編程, javascript的原型/閉包/函數(shù)等等液茎。 這些特性對于寫出優(yōu)雅漂亮的程序有極大幫助, 一定要掌握辞嗡。

7捆等、GUI

GUI一般指的桌面編程和手機端編程的圖形用戶界面, 各大語言都有支持续室, 但是除了Android(Java), iOS(Objective-C) 和微軟系的語言(C#,VB.NET...)外栋烤, 別的語言直接寫GUI的相對不多。
Java 的Swing 和 AWT 應用領域狹窄挺狰, 我知道的只有在金融領域明郭, ERP, IDE 有所使用她渴,所以不用下大功夫去學达址。
如果你是做桌面編程和手機端編程,需要關注如下幾點:

1. 界面是如何描述的趁耗?

界面的控件有哪些沉唠? 如何進行頁面的布局?

2. 數(shù)據(jù)如何獲瓤涟堋满葛?

現(xiàn)在的程序基本上都是聯(lián)網(wǎng)的径簿, 很多數(shù)據(jù)都來自服務器, 這又涉及到了前面提到了網(wǎng)絡編程嘀韧。

3. 界面和數(shù)據(jù)如何綁定篇亭?

因為數(shù)據(jù)一般是外部來的,是變化的锄贷, 需要在GUI上展示译蒂, 綁定數(shù)據(jù)到界面必不可少。

4. 用戶在GUI的操作該如何處理谊却?

現(xiàn)在基本上都是事件驅(qū)動柔昼,例如用戶點擊了一個按鈕,就會調(diào)用onClick 函數(shù)炎辨。

總的來說捕透, GUI中用MVC相對比較多, 需要掌握學習碴萧。

8乙嘀、Web

終于到達Web編程了, 這是個非常大的主題破喻, 其實已經(jīng)超越了一門語言的范疇虎谢,涉及到HTTP, XML, Javascript , JSON, Servlet, JSP 等基礎知識。 當然更重要的是框架曹质。

(完)

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘉冒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咆繁,更是在濱河造成了極大的恐慌讳推,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玩般,死亡現(xiàn)場離奇詭異银觅,居然都是意外死亡,警方通過查閱死者的電腦和手機坏为,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門究驴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人匀伏,你說我怎么就攤上這事洒忧。” “怎么了够颠?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵熙侍,是天一觀的道長。 經(jīng)常有香客問我,道長蛉抓,這世上最難降的妖魔是什么庆尘? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮巷送,結果婚禮上驶忌,老公的妹妹穿的比我還像新娘。我一直安慰自己笑跛,他們只是感情好付魔,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著飞蹂,像睡著了一般抒抬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晤柄,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音妖胀,去河邊找鬼芥颈。 笑死,一個胖子當著我的面吹牛赚抡,可吹牛的內(nèi)容都是我干的爬坑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涂臣,長吁一口氣:“原來是場噩夢啊……” “哼盾计!你這毒婦竟也來了?” 一聲冷哼從身側響起赁遗,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤署辉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岩四,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哭尝,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年剖煌,在試婚紗的時候發(fā)現(xiàn)自己被綠了材鹦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耕姊,死狀恐怖桶唐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茉兰,我是刑警寧澤尤泽,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響安吁,放射性物質(zhì)發(fā)生泄漏醉蚁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一鬼店、第九天 我趴在偏房一處隱蔽的房頂上張望网棍。 院中可真熱鬧,春花似錦妇智、人聲如沸滥玷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惑畴。三九已至,卻和暖如春航徙,著一層夾襖步出監(jiān)牢的瞬間如贷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工到踏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杠袱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓窝稿,卻偏偏與公主長得像楣富,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伴榔,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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

  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多纹蝴。不是我不學習,這世界變化快踪少! 有時候還是蠻懷念十幾塘安、二...
    碼園老農(nóng)閱讀 5,321評論 2 35
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 如何成為一個很厲害的人 我們應該怎樣對待時間 態(tài)度 一個人如何對待他的時間,決定了他可以成為什么樣的人援奢。 鄭重 不...
    lashengcheng閱讀 1,058評論 1 1
  • 來荷蘭這么久了耙旦,但是除了上課之外基本上都是在公寓度過的。這開學四周以來萝究,周末我基本上除了窩在公寓玩游戲免都,看書,做作...
    鈐魚擺擺閱讀 113評論 1 1
  • “看帆竹,那個女孩绕娘,她是光頭誒,臉那么大栽连,還沒有頭發(fā)险领,好丑啊侨舆。” “沒關系的绢陌,我已經(jīng)習慣了不是嘛挨下。”小郁苦笑了一聲便默...
    方方不圓閱讀 798評論 19 10