国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 4752|回復: 0
打印 上一主題 下一主題

如何從零學習一門編程語言

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2021-7-9 11:06:05 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: 編程 , 數組 , 枚舉 , 集合 , 基本語法
很多人喜歡爭論什么什么編程語言好,我認為這個話題如果不限定應用范圍,就毫無意義。每種編程語言必然有其優點和缺點,這也決定了它有適合的應用場景和不適合的應用場景。
現代軟件行業,想一門編程語言包打天下是不現實的。這中現狀也造成了一種現象,一個程序員往往要掌握多種編程語言。
學習任何一門編程語言,都會面臨的第一個問題都是:如何學習這門語言?
我不想說什么多看、多學、多寫、多練之類的廢話。世上事有難易乎?無他,唯手熟爾。誰不知道熟能生巧的道理?
我覺得有必要談談的是:如何由淺入深的學習一門編程語言?學習所有編程語言有沒有一個相對統一的學習方法?
曾幾何時,當我還是一名小菜鳥時,總是嘆服那些大神掌握多門編程語言。后來,在多年編程工作和學習中,我陸陸續續也接觸過不少編程語言:CC++JavaC#Javascriptshell 等等。每次學習一門新的編程語言,掌握程度或深或淺,但是學習的曲線卻大抵相似。
下面,我按照個人的學習經驗總結一下,學習編程語言的基本步驟。
一、學習編程語言的步驟
二、基本語法
首先當然是了解語言的最基本語法。
控制臺輸出,如 C printfJava System.out.println 等。
普通程序員的第一行代碼一般都是輸出 Hello World” 吧。
三、基本數據類型
不同編程語言的基本數據類型不同。基本數據類型是的申請內存空間變得方便、規范化。
四、變量
不同編程語言的聲明變量方式有很大不同。有的如 Java C++ 需要明確指定變量數據類型,這種叫強類型定義語言。有的語言(主要是腳本語言),如 JavascriptShell 等,不需要明確指定數據類型,這種叫若類型定義語言。
還需要注意的一點是變量的作用域范圍和生命周期。不同語言變量的作用域范圍和生命周期不一定一樣,這個需要在代碼中細細體會,有時會為此埋雷。
五、邏輯控制語句
編程語言都會有邏輯控制語句,哪怕是匯編語言。
掌握條件語句、循環語句、中斷循環語句(breakcontinue)、選擇語句。一般區別僅僅在于關鍵字、語法格式略有不同。
六、運算符
掌握基本運算符,如算術運算符、關系運算符、邏輯運算符、賦值運算符等。
有些語言還提供位運算符、特殊運算符,視情節掌握。
注釋(沒啥好說的)
七、函數
編程語言基本都有函數。注意語法格式:是否支持出參;支持哪些數據作為入參,有些語言允許將函數作為參數傳入另一個參數(即回調);返回值;如何退出函數(如 JavaC++return,)。
八、數組、枚舉、集合
枚舉只有部分編程語言有,如 JavaC++C#
但是數組和集合(有些語言叫容器)一般編程語言都有,只是有的編程語言提供的集合比較豐富。使用方法基本類似。
九、常用類
比較常用的類(當然有些語言中不叫類,叫對象或者其他什么,這個不重要,領會精神)請了解其 API 用法,如:字符串、日期、數學計算等等。
十、語言特性
語言特性這個特字反映的就是各個編程語言自身的"獨特個性",這涉及的點比較多,簡單列舉一些。
十一、編程模式
比較流行的編程模式大概有:
面向對象編程,主要是封裝、繼承、多態;函數式編程,主要是應用 Lambda;過程式編程,可以理解為實現需求功能的特定步驟。
每種編程模式都有一定的道理,我從不認為只有面向對象編程才是王道。
Java 是面向對象語言,從 Java8 開始也支持函數編程(引入 Lambda 表達式);C++ 可以算是半面向對象,半面向過程式語言。
十二、語言自身特性
每個語言自身都有一些重要特性需要了解。例如,學習 CC++,你必須了解內存的申請和釋放,了解指針、引用。而學習 Java,你需要了解 JVM,垃圾回收機制。學習 Javascript,你需要了解 DOM 操作等。
十三、代碼組織、模塊加載、庫管理
一個程序一般都有很多個源代碼文件。這就會引入這些問題:如何將代碼文件組織起來?如何根據業務需要,選擇將部分模塊啟動時進行加載,部分模塊使用懶加載(或者熱加載)?
最基本的引用文件就不提了,如CC++#includeJava import 等。
針對代碼組織、模塊加載、庫管理這些問題,不同語言會有不同的解決方案。
Java 可以用 mavengradle 管理項目依賴、組織代碼結構;Javascript (包括 Nodejsjqueryreact 等等庫)可以用 npmyarn 管理依賴,用 webpack 等工具管理模塊加載。
十四、容錯處理
程序總難免會有 bug
所以為了代碼健壯性也好,為了方便定位問題也好,代碼中需要有容錯處理。常見的手段有:
異常
斷言
日志
調試
單元測試
十五、輸入輸出和文件處理
這塊知識比較繁雜。建議提綱挈領的學習一下,理解基本概念,比如輸入輸出流、管道等等。至于 API,用到的時候再查一下即可。
十六、回調機制
每種語言實現回調的方式有所不同,如 .Net delegate (大量被用于 WinForm 程序);Javascript 中函數天然支持回調:Javascript 函數允許傳入另一個函數作為入參,然后在方法中調用它。其它語言的回調方式不一一列舉。
十七、序列化和反序列化
首先需要了解的是,序列化和反序列化的作用是為了在不同平臺之間傳輸對象。
其次,要知道序列化存在多種方式,不同編程語言可能有多種方案。根據應用的序列化方式,選擇性了解即可。
如果你想乘風新基建,如果你想突破自我,如果你想改變目前的工作狀態,預約信盈達免費試聽課,有需要加18025267692(微信)私聊免費體驗名師面對面教導,多年實戰經驗傾囊相授,少走彎路!
十八、進階特性
以下學習內容屬于進階性內容。可以根據開發需要去學習、掌握。需要注意的是,學習這些特性的態度應該是不學則已,學則死磕。因為半懂半不懂,特別容易引入問題。
對于半桶水的同學,我想說:放過自己,也放過別人,活著不好嗎?
并發編程:好處多多,十分重要,但是并發代碼容易出錯,且出錯難以定位。要學習還是要花很大力氣的,需要了解大量知識,如:進程、線程、同步、異步、讀寫鎖等等。
反射:讓你可以動態編程(慎用)。
泛型:集合(或者叫容器)的基石。精通泛型,能大大提高你的代碼效率。
元數據:描述數據的數據。Java 中叫做注解。
十九、庫和框架
學習一門編程語言,難免需要用到圍繞它構建的技術生態圈——庫和框架。這方面知識范圍太龐大,根據實際應用領域去學習吧。比如搞 JavaWeb,你多多少少肯定要用到 SpringMybatisHibernateShiro等大量開發框架;如果做 Javascript 前端,你可能會用到 ReactVueAngular jQuery 等庫或框架。
總結以上,編程語言學習的道路是任重而道遠的,未來是光明的。

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: chinesevideos原创麻豆| 青青操国产视频| 亚洲精品福利在线| 青青青手机视频在线观看| 亚洲综合自拍| 亚洲痴汉| 国产精品久久久久久久久爆乳 | 日本a级特黄三级三级三级| 四虎影院精品在线观看| 手机跑分排行最新排名| 伊人精品视频在线观看| 国产99久久九九免费精品无码| 年轻的搜子8中字在线观看| 四虎在线最新地址4hu| 欧美桃色视频| 亚洲第一页在线播放| 羞羞视频免费网站在线| 99热都是精品| 暖暖视频免费高清在线观看 视频| 天堂网日本| 青青草成人免费在线视频| 亚洲免费片| 中文字幕在线天堂| 开心久久激情| 热re66久久精品国产99re| 青娱乐极品视频在线| 双性np肉文| 成人国产亚洲欧美成人综合网 | 一级做a爰片久久毛片潮喷动漫| 色国产精品一区在线观看| 四虎在线观看| 亚洲综合20p| 国产精品久久久久久久久爆乳| 夜色88V精品国产亚洲AV| 青草影院在线| 天堂8在线天堂资源在线| 2020亚洲国产在线播放在线| 牢记永久免费网址| 中文字幕爆乳JULIA女教师| 日本高清视频在线免费观看| 中文在线观看免费网站|