亚洲女人被黑人巨大进入-亚洲日本视频在线观看-亚洲AV秘片一区二区三3-亚洲欧美中文字幕乱码在线

<dfn id="uqq4w"><dl id="uqq4w"></dl></dfn>
  • <abbr id="uqq4w"></abbr>
    <center id="uqq4w"><cite id="uqq4w"></cite></center>
    ?
    徐州北大青鳥
    當(dāng)前位置: 主頁(yè) > 新聞中心 > 媒體關(guān)注 >

    如何從零學(xué)習(xí)一門編程語(yǔ)言,并由此拿到高薪?

    時(shí)間:2021-01-19 16:23來(lái)源:未知 作者:代碼如詩(shī) 點(diǎn)擊:
    很多人喜歡爭(zhēng)論什么編程語(yǔ)言好,我認(rèn)為這個(gè)話題如果不限定應(yīng)用范圍,就毫無(wú)意義。 每種編程語(yǔ)言必然有其優(yōu)點(diǎn)和缺點(diǎn),這也決定了它有適合的應(yīng)用場(chǎng)景和不適合的應(yīng)用場(chǎng)景。 現(xiàn)代
    很多人喜歡爭(zhēng)論什么編程語(yǔ)言好,我認(rèn)為這個(gè)話題如果不限定應(yīng)用范圍,就毫無(wú)意義。
     
    每種編程語(yǔ)言必然有其優(yōu)點(diǎn)和缺點(diǎn),這也決定了它有適合的應(yīng)用場(chǎng)景和不適合的應(yīng)用場(chǎng)景。
     
    現(xiàn)代軟件行業(yè),想一門編程語(yǔ)言包打天下是不現(xiàn)實(shí)的。這中現(xiàn)狀也造成了一種現(xiàn)象,一個(gè)程序員往往要掌握多種編程語(yǔ)言。
     
    學(xué)習(xí)任何一門編程語(yǔ)言,都會(huì)面臨的第一個(gè)問題都是:如何學(xué)習(xí)這門語(yǔ)言?
     
    我不想說(shuō)什么多看、多學(xué)、多寫、多練之類的廢話。世上事有難易乎?無(wú)他,唯手熟爾。誰(shuí)不知道熟能生巧的道理?
     
    我覺得有必要談?wù)劦氖牵喝绾斡蓽\入深的學(xué)習(xí)一門編程語(yǔ)言?學(xué)習(xí)所有編程語(yǔ)言有沒有一個(gè)相對(duì)統(tǒng)一的學(xué)習(xí)方法?
     
    曾幾何時(shí),當(dāng)我還是一名小菜鳥時(shí),總是嘆服那些大神掌握多門編程語(yǔ)言。后來(lái),在多年編程工作和學(xué)習(xí)中,我陸陸續(xù)續(xù)也接觸過(guò)不少編程語(yǔ)言:C、C++、Java、C#、Javascript、shell 等等。每次學(xué)習(xí)一門新的編程語(yǔ)言,掌握程度或深或淺,但是學(xué)習(xí)的曲線卻大抵相似。
     
    下面,我按照個(gè)人的學(xué)習(xí)經(jīng)驗(yàn)總結(jié)一下,學(xué)習(xí)編程語(yǔ)言的基本步驟。
     
    01 學(xué)習(xí)編程語(yǔ)言的步驟
     
    02 基本語(yǔ)法
     
    首先當(dāng)然是了解語(yǔ)言的最基本語(yǔ)法。
     
    控制臺(tái)輸出,如 C 的 printf,Java 的 System.out.println 等。
     
    普通程序員的第一行代碼一般都是輸出 “Hello World” 吧。
     
    03 基本數(shù)據(jù)類型
     
    不同編程語(yǔ)言的基本數(shù)據(jù)類型不同?;緮?shù)據(jù)類型是的申請(qǐng)內(nèi)存空間變得方便、規(guī)范化。
     
    04 變量
     
    不同編程語(yǔ)言的聲明變量方式有很大不同。有的如 Java 、C++ 需要明確指定變量數(shù)據(jù)類型,這種叫強(qiáng)類型定義語(yǔ)言。有的語(yǔ)言(主要是腳本語(yǔ)言),如 Javascript、Shell 等,不需要明確指定數(shù)據(jù)類型,這種叫若類型定義語(yǔ)言。
     
    還需要注意的一點(diǎn)是變量的作用域范圍和生命周期。不同語(yǔ)言變量的作用域范圍和生命周期不一定一樣,這個(gè)需要在代碼中細(xì)細(xì)體會(huì),有時(shí)會(huì)為此埋雷。
     
    05 邏輯控制語(yǔ)句
     
    編程語(yǔ)言都會(huì)有邏輯控制語(yǔ)句,哪怕是匯編語(yǔ)言。
     
    掌握條件語(yǔ)句、循環(huán)語(yǔ)句、中斷循環(huán)語(yǔ)句(break、continue)、選擇語(yǔ)句。一般區(qū)別僅僅在于關(guān)鍵字、語(yǔ)法格式略有不同。
     
    06 運(yùn)算符
     
    掌握基本運(yùn)算符,如算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符等。
     
    有些語(yǔ)言還提供位運(yùn)算符、特殊運(yùn)算符,視情節(jié)掌握。
    注釋(沒啥好說(shuō)的)
     
    07 函數(shù)
     
    編程語(yǔ)言基本都有函數(shù)。注意語(yǔ)法格式:是否支持出參;支持哪些數(shù)據(jù)作為入?yún)?,有些語(yǔ)言允許將函數(shù)作為參數(shù)傳入另一個(gè)參數(shù)(即回調(diào));返回值;如何退出函數(shù)(如 Java、C++的 return,)。
     
    08 數(shù)組、枚舉、集合
     
    枚舉只有部分編程語(yǔ)言有,如 Java、C++、C#。
     
    但是數(shù)組和集合(有些語(yǔ)言叫容器)一般編程語(yǔ)言都有,只是有的編程語(yǔ)言提供的集合比較豐富。使用方法基本類似。
     
    09 常用類
     
    比較常用的類(當(dāng)然有些語(yǔ)言中不叫類,叫對(duì)象或者其他什么,這個(gè)不重要,領(lǐng)會(huì)精神)請(qǐng)了解其 API 用法,如:字符串、日期、數(shù)學(xué)計(jì)算等等。
     
    10 語(yǔ)言特性
     
    語(yǔ)言特性這個(gè)特字反映的就是各個(gè)編程語(yǔ)言自身的"獨(dú)特個(gè)性",這涉及的點(diǎn)比較多,簡(jiǎn)單列舉一些。
     
    11 編程模式
     
    比較流行的編程模式大概有:
     
    面向?qū)ο缶幊?,主要是封裝、繼承、多態(tài);函數(shù)式編程,主要是應(yīng)用 Lambda;過(guò)程式編程,可以理解為實(shí)現(xiàn)需求功能的特定步驟。
     
    每種編程模式都有一定的道理,我從不認(rèn)為只有面向?qū)ο缶幊滩攀峭醯馈?/div>
     
    Java 是面向?qū)ο笳Z(yǔ)言,從 Java8 開始也支持函數(shù)編程(引入 Lambda 表達(dá)式);C++ 可以算是半面向?qū)ο?,半面向過(guò)程式語(yǔ)言。
     
    12 語(yǔ)言自身特性
     
    每個(gè)語(yǔ)言自身都有一些重要特性需要了解。例如,學(xué)習(xí) C、C++,你必須了解內(nèi)存的申請(qǐng)和釋放,了解指針、引用。而學(xué)習(xí) Java,你需要了解 JVM,垃圾回收機(jī)制。學(xué)習(xí) Javascript,你需要了解 DOM 操作等。
     
    13 代碼組織、模塊加載、庫(kù)管理
     
    一個(gè)程序一般都有很多個(gè)源代碼文件。這就會(huì)引入這些問題:如何將代碼文件組織起來(lái)?如何根據(jù)業(yè)務(wù)需要,選擇將部分模塊啟動(dòng)時(shí)進(jìn)行加載,部分模塊使用懶加載(或者熱加載)?
     
    最基本的引用文件就不提了,如C、C++的#include,Java 的 import 等。
     
    針對(duì)代碼組織、模塊加載、庫(kù)管理這些問題,不同語(yǔ)言會(huì)有不同的解決方案。
     
    如 Java 可以用 maven、gradle 管理項(xiàng)目依賴、組織代碼結(jié)構(gòu);Javascript (包括 Nodejs、jquery、react 等等庫(kù))可以用 npm、yarn 管理依賴,用 webpack 等工具管理模塊加載。
     
    14 容錯(cuò)處理
     
    程序總難免會(huì)有 bug。
     
    所以為了代碼健壯性也好,為了方便定位問題也好,代碼中需要有容錯(cuò)處理。
     
    常見的手段有:異常、斷言、日志、調(diào)試、單元測(cè)試。
     
    15 輸入輸出和文件處理
     
    這塊知識(shí)比較繁雜。建議提綱挈領(lǐng)的學(xué)習(xí)一下,理解基本概念,比如輸入輸出流、管道等等。至于 API,用到的時(shí)候再查一下即可。
     
    16 回調(diào)機(jī)制
     
    每種語(yǔ)言實(shí)現(xiàn)回調(diào)的方式有所不同,如 .Net 的 delegate (大量被用于 WinForm 程序);Javascript 中函數(shù)天然支持回調(diào):Javascript 函數(shù)允許傳入另一個(gè)函數(shù)作為入?yún)ⅲ缓笤诜椒ㄖ姓{(diào)用它。其它語(yǔ)言的回調(diào)方式不一一列舉。
     
    17 序列化和反序列化
     
    首先需要了解的是,序列化和反序列化的作用是為了在不同平臺(tái)之間傳輸對(duì)象。
     
    其次,要知道序列化存在多種方式,不同編程語(yǔ)言可能有多種方案。根據(jù)應(yīng)用的序列化方式,選擇性了解即可。
     
    18 進(jìn)階特性
     
    以下學(xué)習(xí)內(nèi)容屬于進(jìn)階性內(nèi)容??梢愿鶕?jù)開發(fā)需要去學(xué)習(xí)、掌握。需要注意的是,學(xué)習(xí)這些特性的態(tài)度應(yīng)該是不學(xué)則已,學(xué)則死磕。因?yàn)榘攵氩欢?,特別容易引入問題。
     
    對(duì)于半桶水的同學(xué),我想說(shuō):放過(guò)自己,也放過(guò)別人,活著不好嗎?
     
    并發(fā)編程:好處多多,十分重要,但是并發(fā)代碼容易出錯(cuò),且出錯(cuò)難以定位。要學(xué)習(xí)還是要花很大力氣的,需要了解大量知識(shí),如:進(jìn)程、線程、同步、異步、讀寫鎖等等。
     
    反射:讓你可以動(dòng)態(tài)編程(慎用)。
     
    泛型:集合(或者叫容器)的基石。精通泛型,能大大提高你的代碼效率。
     
    元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù)。Java 中叫做注解。
     
    19 庫(kù)和框架
     
    學(xué)習(xí)一門編程語(yǔ)言,難免需要用到圍繞它構(gòu)建的技術(shù)生態(tài)圈——庫(kù)和框架。這方面知識(shí)范圍太龐大,根據(jù)實(shí)際應(yīng)用領(lǐng)域去學(xué)習(xí)吧。
     
    比如搞 JavaWeb,你多多少少肯定要用到 Spring、Mybatis、Hibernate、Shiro等大量開發(fā)框架;如果做 Javascript 前端,你可能會(huì)用到 React、Vue、Angular 、jQuery 等庫(kù)或框架。
     
    小結(jié)
     
    總結(jié)以上,編程語(yǔ)言學(xué)習(xí)的道路是任重而道遠(yuǎn)的,未來(lái)是光明的。
     
    最后一句話與君共勉:路漫漫兮其修遠(yuǎn),吾將上下而求索。
    試聽課
    (責(zé)任編輯:代碼如詩(shī))
    ------分隔線----------------------------
    欄目列表
    推薦內(nèi)容