成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 開發工具
對于一門編程語言,我們到底學習什么東西呢?下面我們就來講一講。

編程語言

對于一門編程語言, 我們到底學習什么東西呢?

1. 基本語法

首先肯定是語法, 像數據類型、標識符、關鍵字、運算符、注釋、 流程控制語句等等。

如果你之前學過一門編程語言,再去學新的語言,會發現在基本的語法層面, 這些語言都差不太多。

因為都是命令式編程語言, 程序員要精確的告訴計算機用何種指令做事情, 是對計算機硬件的抽象,命令式程序本質上就是一個馮諾依曼機的指令序列。如果你學的是函數式編程, 那就大不相同了。

對于命令式編程, 最基本的控制語句就這么三種: 順序、分支、循環。

對于命令式編程, 最基本的控制語句

當然不同的語言, 對于這基本的流程控制會有一些變體, 例如do ... while, switch .. foreach 等等, 但本質都是一樣的。

對于基本的語法, 我相信很多人都能迅速掌握。

2. 基本的數據結構

想象一下, 假設Java 中沒有集合框架, 什么東西都需要自己來做, 那寫起程序來該有多累!

現在的語言除了基本的語法之外 ,都會有內置的強大的數據結構, 方便程序員來編程 。

這些數據結構中最常見的是這幾個:

(1)字符串

實際代碼中會有大量對字符串的操作,現在的語言都有良好的支持, 需要學習下相關的API。

(2)可以動態增長的數組

這也是一個非常常見、非常有用的數據結構, 在Java 中就是ArrayList, Python 就是列表, Ruby 中稱為數組。 由于其應用的廣泛性, 一定要好好學習下它的用法。

特別值得一提得是, 很多動態語言對數組提供了很多強悍的操作, 很輕松的可以把它當作棧、隊列來使用。

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

Java 中的Map , Python 中的字典, ruby的hash 表均屬此類

絕大部分程序,經常使用的也就是上面三個數據結構, 其他的還有無重復元素的集合(Set)等等。

3. 面向對象

看完語法和數據結構, 接下來可以看看面向對象在這個語言中是怎么實現的,對于命令式編程, 面向對象簡直就是標配, 沒有面向對象的支持, 簡直就不好意思和別人打招呼。

有人說面向對象已死, 實際情況呢? 絕大部分軟件還是以面向對象為基礎構建起來的, 所以不要聽風就是雨, 老老實實地去學封裝、繼承、多態吧。

如果你已經掌握了面向對象的設計和編程的思維, 那對于學習新語言的OO來說, 那真是太簡單了, 基本上就是一點點語法的區別。

例如繼承, Java用extends , Ruby 用“<” , Python 用 括號來表示, 大同小異, 只不過有些語言只支持單繼承, 有些支持多繼承, 更加復雜一些。

對于封裝, 各個語言也是差不多,一般都有private , proteted , public 這三個保護的級別,也是表現形式不一樣。

對于多態, 這是很多靜態語言的專利, 動態語言用的是Duck Typing , 比多態更加靈活, 需要仔細揣摩下和多態的區別, 優勢和劣勢。

(碼農翻身注: 參見《小張的Duck Typing》 )

4. 突破內存

學到這里, 你應該可以用這門語言來寫程序了, 但是你很快就會發現,程序只能在內存中折騰,最多能輸出到毫無趣味的控制臺上, 還無法訪問硬盤和網絡, 這也是編程語言必須提供的重要特性。

不同的語言對硬盤和網絡的抽象大相徑庭, 例如Java 試圖把所有的東西都稱為IO, 抽象出了一套優雅但是不太好用的API。 相比而言像Ruby 和 Python 對硬盤文件的操作就簡單的多。

對XML 和 JSON的操作是必須要掌握的技能, 因為他們的用途實在是太廣泛了。

對于網絡編程, 至少要理解Socket和HTTP, 一個是傳輸層,一個是應用層, 各大語言對Socket和Http 編程都有很好的支持。

(參見《張大胖和Socket》 , 《IE為什么把火狐和Chrome打傷了》,《對瀏覽器村的第二次采訪》)

5. 讓多任務并發執行

線程的概念對于初學者,或者說沒有計算機基礎的同學們學起來有點難度, 因為要理解什么是進程, 什么是線程 ,為什么要有進程和線程, 有點偏向計算機的底層了。

并發編程會涉及到線程之間的同步和通信, 如何加鎖,防止死鎖, 線程池等很多煩人的知識點, 雖然說在實際工作中都封裝好了, 業務編程中用的少, 但是要理解概念。

對于各個語言來說, 良好的線程支持也是標配, 要了解相應的API, 至少能用他們寫出小程序來。

(參見《我是一個進程》《我是一個線程》)

6. 語言特性

各個語言都有自己的特性, 例如Java 的反射/范型/注解, Ruby 的block, 元編程, javascript的原型/閉包/函數等等。 這些特性對于寫出優雅漂亮的程序有極大幫助, 一定要掌握。

7. GUI

GUI一般指的桌面編程和手機端編程的圖形用戶界面, 各大語言都有支持, 但是除了Android(Java), iOS(Objective-C) 和微軟系的語言(C#,VB.NET...)外, 別的語言直接寫GUI的相對不多。

Java 的Swing 和 AWT 應用領域狹窄, 我知道的只有在金融領域, ERP, IDE 有所使用,所以不用下大功夫去學。

如果你是做桌面編程和手機端編程,需要關注如下幾點:

(1)界面是如何描述的?

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

(2)數據如何獲取?

現在的程序基本上都是聯網的, 很多數據都來自服務器, 這又涉及到了前面提到了網絡編程。

(3)界面和數據如何綁定?

因為數據一般是外部來的,是變化的, 需要在GUI上展示, 綁定數據到界面必不可少。

(4)用戶在GUI的操作該如何處理?

現在基本上都是事件驅動,例如用戶點擊了一個按鈕,就會調用onClick 函數。

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

8. Web

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

(碼農翻身注: 參見文章《掌握了這幾點,你就學會了Web編程》)

9. 學會了嗎?

學到這里, 大部分人還是很困惑,覺得自己已經看了語法,OO, 線程、IO, Web, 但還是心里沒底,不知道自己到底學會了沒有, 這個時候,務必要尋求項目來做了。 做項目才能把知識給串起使用, 幫你查漏補缺, 不斷前進。

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2022-03-11 21:28:31

部署開發服務器

2020-11-16 15:47:05

SaaS軟件轉型

2022-11-11 09:28:57

軟件設計DDD

2024-07-26 08:35:29

2016-08-12 10:11:22

2023-08-28 10:33:09

敏捷Scrum理念

2012-04-11 09:19:08

Haskell編程

2021-11-18 21:09:50

流批場景引擎

2022-07-05 09:31:46

基礎設施容器Docker

2017-10-11 13:25:00

前端

2019-12-24 11:19:44

容器DockerLinux

2024-03-28 14:16:43

容災云計算

2018-08-23 08:34:21

區塊鏈分布式賬本比特幣

2014-06-25 09:11:48

技術

2017-04-05 17:59:29

思科CTO下午茶

2016-11-22 23:44:56

2021-02-26 21:15:45

人工智能機器學習經濟

2019-01-18 12:18:31

編程語言Python

2019-04-11 19:11:27

root手機安卓

2018-07-18 08:48:11

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区四区av | japanhdxxxx裸体 | 女女爱爱视频 | 福利视频二区 | 欧美黄色一区 | 国产四虎 | 精品1区 | 国产成人精品久久二区二区91 | 四虎影院在线观看免费视频 | 在线视频一区二区三区 | 精品美女视频在免费观看 | 日本免费一区二区三区四区 | 天天射视频 | 国产美女久久久 | 国产精品视频网 | 亚洲欧美日韩在线 | 久久成人午夜 | 久久午夜国产精品www忘忧草 | 日韩天堂av | 激情91| 精品国产欧美一区二区三区成人 | 国产精品一区在线 | 欧洲尺码日本国产精品 | 欧美亚洲视频 | 亚洲欧美激情国产综合久久久 | 日韩成人免费av | 天堂一区| 国产在线1| 久久久国产精品入口麻豆 | 久久99蜜桃综合影院免费观看 | 国产精品国产 | 日韩精品人成在线播放 | 91久久国产综合久久 | 第一区在线观看免费国语入口 | 日本偷偷操| 亚洲综合日韩精品欧美综合区 | 成人h片在线观看 | 亚洲视频免费在线 | 理伦毛片| 国产视频二区在线观看 | 成人免费大片黄在线播放 |