最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

學(xué)習(xí)筆記_我該如何學(xué)好編程 20220418

2022-04-18 10:22 作者:記性差的松  | 我要投稿


# 學(xué)習(xí)筆記_我該如何學(xué)好編程 20220418


## 動(dòng)機(jī)


### 不指望依賴編程找工作,而主要是為了高效實(shí)現(xiàn)想法,并在實(shí)現(xiàn)時(shí),可以提升運(yùn)行速度(如提升我的MATLAB程序效率)。


### 需要高效率學(xué)會(huì)編程,或者提高當(dāng)前編程效率


### 進(jìn)而,希望自己能站在更高的維度去學(xué)習(xí)編程。


### PS:每個(gè)人的目的不一樣和時(shí)間不一樣,對(duì)應(yīng)的學(xué)習(xí)思路也不一樣。比如我,沒辦法像別人說的,每天刷題,我覺得會(huì)很沒有成就感。此外,這也意味著,對(duì)于我不不太需要的內(nèi)容,我了解的不夠準(zhǔn)確。


## 區(qū)分學(xué)編程和編程語言的區(qū)別 【9】


### 前者核心是借助計(jì)算機(jī)去解決問題的一門學(xué)問,后者是學(xué)習(xí)一種語言,一種工具。

Eg. 學(xué)習(xí)編程語言就像在學(xué)習(xí)木工之前學(xué)習(xí)如何使用木工鋸、錘子等工具。而會(huì)編程則是指,木工會(huì)注意到想法、可行性分析、度量、測(cè)試、用戶使用習(xí)慣、檢查工具和材料質(zhì)量等工作。

PS:大多數(shù)課程就只是教編程語言。扼殺興趣。


- 這里可以用木工圖,根雕圖什么的去理解


### 學(xué)會(huì)編程實(shí)質(zhì)是種思想辦法。而學(xué)不同的編程語言,是為了掌握更多的工具,讓自己在解決某一個(gè)問題時(shí),盡可能不受限,進(jìn)而依據(jù)不同工具的特性決定了如何靈活使用他們。


### 再次提醒:學(xué)習(xí)編程的核心是,借助計(jì)算機(jī)去解決問題。


## 學(xué)編程語言具體內(nèi)容 [5]


### * 程序語言本身

語法

語言特性

使用技巧

最佳實(shí)踐

內(nèi)存管理

設(shè)計(jì)哲學(xué)

編程范式

常用類庫(kù)

編譯/解釋機(jī)制和運(yùn)行環(huán)境


* 計(jì)算機(jī)科學(xué)

程序語言如何控制計(jì)算機(jī)

計(jì)算機(jī)是如何工作的

網(wǎng)絡(luò)是怎樣通信的


* 編程思想

編程語言發(fā)展史,各門語言的起源和歷史

人類如何利用計(jì)算機(jī)解決問題

編程和計(jì)算的關(guān)系

抽象思維

邏輯思維


### 上述很多話,我只能做到粗淺的理解。等以后理解深了再修改。先記著


## 如何算掌握一門語言?


### 【5】


## 學(xué)哪一個(gè)?


### https://www.tiobe.com/tiobe-index/


### 【7】


### 底層語言


- C


- (1)操作系統(tǒng)內(nèi)核,如Linux 內(nèi)核。

(2)運(yùn)行速度總是最快的幾種

(3)「中級(jí)語言」,既可以編寫上層應(yīng)用,也可以完成底層內(nèi)存地址操作的任務(wù)。

(4) 32個(gè)key words 容易學(xué)

(5)學(xué)C會(huì)知道地址和指針、字節(jié)這些概念,進(jìn)而對(duì)計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)和指令執(zhí)行有更深的理解。學(xué)了C可以讓你理解計(jì)算機(jī)世界,以及徹徹底底控制計(jì)算機(jī)。


所以對(duì)于學(xué)編程有一定要求的。C 語言在當(dāng)代無疑是第一選擇。

- 應(yīng)用場(chǎng)景


操作系統(tǒng)

加速運(yùn)行效率

理解計(jì)算機(jī)

- 學(xué)習(xí)建議:


聽些經(jīng)典的課程,掌握基本語法。

<<C How To Program>>提供很多可口PROJECT,熟練。


- 匯編語言


- 最接近機(jī)器語言的就是它了


### OOP 面向?qū)ο???/p>


- 學(xué)一類這種語言,是為了理解OOD/OOP。面向?qū)ο笫侵?,這個(gè)語言是基于對(duì)象、數(shù)據(jù)的集合及數(shù)據(jù)的操縱來構(gòu)建的程序的。面向?qū)ο蟮母拍钤谥T如C++,Java, Objective-C, 和PHP廣泛應(yīng)用。


- 不夠理解


- 一個(gè)對(duì)象只承擔(dān)一種責(zé)任,所有服務(wù)接口只通過它來執(zhí)行這種任務(wù)。


程序?qū)嶓w,比如類和對(duì)象,向擴(kuò)展行為開放,向修改行為關(guān)閉。


子類應(yīng)該可以用來替代它所繼承的類。


一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該限制在最小化的接口上。


依賴抽象層(接口),而不是具體類。


- 不夠理解


- Objective-C


- 專門用來開發(fā) iOS 和 Mac 應(yīng)用的語言,雖然是編譯型語言,但它具備動(dòng)態(tài)特性 【5】

- 已經(jīng)有往 Swift 上轉(zhuǎn)型的趨勢(shì),但還是比較流行的(安卓似乎都用 Java,蘋果似乎都用這個(gè))?!?】

- 應(yīng)用場(chǎng)景:


專門用來開發(fā) iOS 和 Mac 應(yīng)用的語言


- JAVA


- 優(yōu)點(diǎn):

(1)被廣泛應(yīng)用在服務(wù)端的開發(fā)中(Android 開發(fā),Web 應(yīng)用程序設(shè)計(jì)等)。Java 入門,便代表可以完成基礎(chǔ)的項(xiàng)目了,基本你就不用擔(dān)心找不到工作?!?】

(2)Java擁有可能是所有語言中最強(qiáng)大的虛擬機(jī)平臺(tái)JVM,在其上誕生了無數(shù)優(yōu)秀的軟件,為了JVM,Java還是值得學(xué)習(xí)一下的,不過這門語言也是實(shí)在太簡(jiǎn)單了,假設(shè)一個(gè)人學(xué)習(xí)Lisp或C需要一個(gè)月,學(xué)習(xí)Python或Ruby或Perl需要一周,那么學(xué)習(xí)Java,也許只需要一天就可以,因?yàn)榫驼Z言本身來說實(shí)在沒那么多可學(xué)的【6】


缺點(diǎn):

(1)環(huán)境配置復(fù)雜,有一定門檻?!?】

(2)我一直認(rèn)為這是一門由聰明的人設(shè)計(jì),用來控制一幫智力平庸的碼農(nóng),讓他們不至于捅出什么簍子的語言,基本上所有的設(shè)計(jì)特性,都是為了壓抑創(chuàng)造力,讓程序員變成按部就班擰螺絲釘?shù)臋C(jī)器來考慮的?!?】

- 應(yīng)用場(chǎng)景和應(yīng)用成果:


Android 開發(fā)

Web 應(yīng)用程序設(shè)計(jì)等

- 學(xué)習(xí)建議:

初期找一個(gè)事無巨細(xì)的老師指導(dǎo),節(jié)省入門時(shí)間?!?】


- C++


- 優(yōu)點(diǎn):

(1)C++ 是目前的主流語言之一,也是一門使用率很高的語言,不用擔(dān)心找工作。(現(xiàn)在的四大主流語言一般理解為C、C++、Python 和 Java)【1】

(2)C++ 幾乎是 C 的超集,C++ 相比較 C 而言,最明顯是引入 面向?qū)ο蟮母拍?【1】

(3)C++ 是一門非常自由的語言,同時(shí)隨著深入的學(xué)習(xí),C++ 可以給你帶來對(duì)棧與堆、內(nèi)存管理等知識(shí)點(diǎn)更深刻的理解【1】。是一種寬容的語言 —— 你可以做一切技術(shù)上可能的事情,即使在邏輯上不正確

(4)C++ 對(duì)指針、變量定義,多態(tài)等定義非常靈活,同時(shí)有大量標(biāo)準(zhǔn)庫(kù),是一門很難讓人在簡(jiǎn)歷上寫上精通二字的語言?!?】

特點(diǎn): 好入門、難精通,同時(shí)也是一門使用率很高的語言,不用擔(dān)心找工作 【1】

(5)跨平臺(tái),性能優(yōu)越。

- 應(yīng)用場(chǎng)景和應(yīng)用成果:


谷歌 Chromium 瀏覽器

摩根斯坦利的金融建模

開發(fā)游戲引擎

瀏覽器引擎這些底層庫(kù)

開發(fā)windows 桌面應(yīng)用

- 學(xué)習(xí)建議:

最好由已經(jīng)有 C 語言編程基礎(chǔ)的人學(xué)習(xí)


### 動(dòng)態(tài)語言


- 學(xué)一類動(dòng)態(tài)語言,也是為了擴(kuò)寬思路,不讓自己思維受到限制。

- Python


- 主旨:“做一件事情只有一種顯而易見的方法”。


優(yōu)點(diǎn):

(1)動(dòng)態(tài)語言,有豐富的庫(kù)作為支持,進(jìn)而非常適合* 數(shù)據(jù)統(tǒng)計(jì)* 面向?qū)ο缶幊? 寫一些幫助到自己生活的腳本* Web 應(yīng)用程序編程【1】

(2)易學(xué),且比較快有產(chǎn)出。學(xué)會(huì)它,新手也可以很快發(fā)揮他的效果【1】。語法簡(jiǎn)單、輪子多、開發(fā)效率高。

(3)除了底層硬件驅(qū)動(dòng)和 極其 追求效率的開發(fā)目前還需要 C 以外,淘汰類 C 語言指日可待?!?】


缺點(diǎn):

(1)動(dòng)態(tài)語言從根本上就決定,程序?qū)懙脑酱螅阈枰白约河涀 钡臇|西就越多。等你“記不住”的時(shí)候,你的程序就寫不下去了。進(jìn)而大型項(xiàng)目使用少?!荆俊?/p>

(2)不推薦通過把Python作為第一語言二區(qū)找工作,除非你是本身需要用到,且學(xué)歷足夠?!??】

- 應(yīng)用場(chǎng)景:


簡(jiǎn)單的爬蟲 到 復(fù)雜的網(wǎng)絡(luò)開發(fā),又或者是與其他語言進(jìn)行協(xié)作,都可以通過調(diào)用庫(kù)很好的完成。

- 學(xué)習(xí)建議:


利用Django平臺(tái)

不追求程序員這個(gè)職業(yè),但希望能利用上編程解決問題的人,可以學(xué)。


- Javascript


- 特點(diǎn):

(1)簡(jiǎn)稱 JS,理解基本原理,就可以使用已經(jīng)編寫好的庫(kù)和方法實(shí)現(xiàn)很炫的動(dòng)畫效果。【1】

(2)web 時(shí)代的王者,動(dòng)態(tài)性,依托于瀏覽器引擎的“跨平臺(tái)”能力 【5】

(3)另一種網(wǎng)頁風(fēng)格。不希望頁面過于 HTML + CSS 或者 BootStrap 風(fēng)格的話,可學(xué)它

- 應(yīng)用場(chǎng)景:


網(wǎng)頁設(shè)計(jì)

表白


### swift


- 特點(diǎn):

用于解決了一個(gè) Objective-C 中最主要的語法問題。

(1)相比較 Objective-C 而言,Swift 將不再嚴(yán)格區(qū)分頭文件(即 .h 和 .m 文件將不再區(qū)分,而是統(tǒng)一被稱為 .swift),避免 #import 的繁瑣。

(2)Swift 還有很多 handy 的語法特性,如模式匹配、更嚴(yán)格的 Optional 類型、強(qiáng)大的范型支持、可 Immutable 的原生類型、更方便的 String、閉包語法的優(yōu)化、元組等,優(yōu)點(diǎn)非常多。[1]

- 應(yīng)用場(chǎng)景


MAC IOS??


### Golang


- 特點(diǎn):


(1)可直接編譯成機(jī)器碼,不依賴其他庫(kù),glibc 的版本有一定要求,部署的話只需要扔一個(gè)文件上去。

(2)內(nèi)置 runtime,有豐富的標(biāo)準(zhǔn)庫(kù),類似 Python,可以通過調(diào)庫(kù)完成許多功能由于以上特性,Golang 便非常適合后端開發(fā),服務(wù)器編程等。[1]

- 應(yīng)用場(chǎng)景:


后端開發(fā)

服務(wù)器編程等


### Rust


- Rust :有替代 C/C++ 的趨勢(shì)【?】


### Flutter


- 前端新語言【?】


### 本質(zhì)還是基于目的 ,以下舉例幾個(gè)目的【7】


- 工作之余,學(xué)個(gè)編程語言實(shí)現(xiàn)自己想要的功能


- PYTHON

- JAVA


- 有志于做優(yōu)秀的程序員


- 每一類語言都要學(xué),此外還要學(xué)習(xí)計(jì)算機(jī)的工作原理


- 制作軟件應(yīng)用程序開發(fā)


- java? C++


- 網(wǎng)頁設(shè)計(jì):JavaScript &&? HTML CSS

- 網(wǎng)絡(luò)安全 : PHP

- 機(jī)器學(xué)習(xí):Python

- ......


## 如何提升我的學(xué)習(xí)效率?


### * 有目標(biāo)的同時(shí),有即時(shí)反饋。


*目標(biāo)最好還是對(duì)你實(shí)際有直接幫助的。比如,我試圖用于加速M(fèi)ATLAB程序,或者編寫個(gè)小游戲。不要盲目為了深入而深入。


最重要還是理解核心思想:本質(zhì)是為了利用計(jì)算機(jī)解決問題。


- 理想情況:利用空余時(shí)間,聽完C。而后去一些靠譜平臺(tái)刷題。差不多熟練。再學(xué)個(gè)C++基本語法。之后再用于MATLAB程序加速。未來再學(xué)Python,用于深度學(xué)習(xí)和當(dāng)下學(xué)科的融合。


### 利用一些學(xué)習(xí)平臺(tái),實(shí)現(xiàn)入門


- MOOC網(wǎng)等網(wǎng)絡(luò)課程資源。


https://www.codecademy.com/ 在線練習(xí)網(wǎng)站 N多人推薦他是學(xué)習(xí)編程的好網(wǎng)站


https://teamtreehouse.com/


https://www.pluralsight.com/codeschool? 存在一些try Ruby訓(xùn)練開闊思維


HackerRank、CodeWars、CoderByte、TopCoder、LeetCode、牛客等其他刷題網(wǎng)站


### 利用工具


- Shell 能夠單步執(zhí)行你的編程語句并給出即時(shí)反饋,這種交互式編程方式非常適合初學(xué)者,所見即所得,所以凡是提供 shell 工具的語言,推薦大家優(yōu)先使用shell學(xué)習(xí)。


如果你在學(xué)習(xí) Python,那么python shell,bpython 和 ipython 都是不錯(cuò)的選擇;

如果你在學(xué)習(xí) Ruby,那么irb就是 ruby 的 shell;

如果你在學(xué)習(xí) Shell,打開終端(Terminal)就是 shell;

如果你在學(xué)習(xí) Java 或Objective-C,對(duì)不起,這些語言沒有 shell。

[10]


### 后期直接看gitHub帶星的開源代碼


- 初期閱讀帶來的困難:當(dāng)你懷著崇敬的心情,打開扔給你的網(wǎng)址,看著滿屏幕的代碼時(shí),你會(huì)對(duì)自己?jiǎn)柍瞿侨齻€(gè)經(jīng)典的哲學(xué)問題。這是什么東西?它是怎么做到的?為什么要這么寫?搞不好某些人還會(huì)因?yàn)轶@嚇過度,從而失去了學(xué)習(xí)下去的信心?!?】

- 看別人代碼,估計(jì)也是為了理解別人的解決問題思路。

- 你在軟件開發(fā)過程中可能會(huì)犯下的最大錯(cuò)誤就是孤軍奮戰(zhàn)。軟件開發(fā)基本上是靠眾包的力量。我們一起制定標(biāo)準(zhǔn),一起去犯錯(cuò)誤,然后慢慢才知道什么東西管用(通過大量失敗)?;〞r(shí)間去看熟練的開發(fā)人員的代碼永遠(yuǎn)都會(huì)有回報(bào)。只需確保它是好的代碼。


我能提供的最好建議就是永遠(yuǎn)不要為因?yàn)樽约哼€不知道的事情而感到羞恥。就像我所提到的那樣,這個(gè)行業(yè)規(guī)模龐大,語言數(shù)的數(shù)量極多,內(nèi)容很密集。要想了解需要花費(fèi)大量的時(shí)間和精力,而要想熟練還需要付出更多,而精通甚至需要付出更多。當(dāng)我達(dá)到那種程度時(shí),我會(huì)告訴你的?!?1】


### 有大牛帶肯定是最快的。


### 輸出:比如做視頻,比如做開源項(xiàng)目


### 輔助技巧


- 善于打斷點(diǎn),從而學(xué)習(xí)代碼的執(zhí)行過程

- 需要學(xué)習(xí)的良好的編程習(xí)慣


- 縮進(jìn)

- 變量命令規(guī)則的一致性

- 代碼注釋


### 假設(shè)未來我有對(duì)計(jì)算機(jī)本身有更多渴望,可以聽些課,《計(jì)算機(jī)基礎(chǔ)》《數(shù)據(jù)結(jié)構(gòu)與算法》《操作系統(tǒng)原理》《編譯原理》《計(jì)算機(jī)圖形學(xué)》


## 總體感悟


### 學(xué)編程核心還是學(xué)思想,如何巧妙的利用計(jì)算機(jī)解決問題。學(xué)會(huì)這種思想,學(xué)不用計(jì)算機(jī)語言也就快了,也就發(fā)覺大同小異了。


### 有一個(gè)明確的目的且能有及時(shí)的反饋,這樣可以及時(shí)獲得成就感,進(jìn)而也能學(xué)的快。比如寫一個(gè)小游戲,并且不斷改進(jìn)。也可以做視頻寫博客輸出啥的。


### 對(duì)于程序員,不斷更換編程語言是種很正常的現(xiàn)象。一方面對(duì)于資深程序員,學(xué)習(xí)其他語言不難。另一方面,擴(kuò)寬解決問題的思路。


## 主要參考資料


### 【1】力扣(LeetCode)(2019)https://www.zhihu.com/question/20252436/answer/760728834

【2】https://www.tiobe.com/tiobe-index/

【3】思否小姐姐 (2018) https://www.zhihu.com/question/20252436/answer/438012009

【4】MD ove(2018)https://www.zhihu.com/question/20252436/answer/338697273

【5】某人Blog (2018) https://shannonchenchn.github.io/2018/09/01/how-to-learn-programming-language/

【6】李路 (2014)https://www.zhihu.com/question/22339358/answer/25488851

[7] Brianna Flavin.(2021) 《我應(yīng)該學(xué)習(xí)哪種編程語言?解碼的基礎(chǔ)知識(shí)》https://www.cho-design.com/degrees/technology/blog/which-programming-language-should-i-learn/

【8】 A閃的BLOG 《如何成為一個(gè)通曉多種編程語言的程序員》https://max2d.com/archives/913(提供了很多學(xué)習(xí)的資源鏈接)

【9】zooboole 《Learning programming is different from learning a programming language我今天才知道:學(xué)習(xí)編程和學(xué)習(xí)編程語言是兩碼事》https://www.cnblogs.com/xueweihan/p/13578261.html

【10】神譯局 (2019)《資深軟件工程師:應(yīng)該學(xué)那種編程語言?怎么學(xué)?》https://www.36kr.com/p/1724246999041

[11] MacTalk《如何學(xué)習(xí)一門編程語言》https://macshuo.com/?p=703

【12】閆令琪《計(jì)算機(jī)圖形學(xué)》https://www.bilibili.com/video/av90798049 (需要C++基本語法基礎(chǔ))

【13】(2021)劉利剛《如何自學(xué)<計(jì)算機(jī)圖形學(xué)>和C++面向?qū)ο缶幊獭穐ttp://staff.ustc.edu.cn/~lgliu/Resources/CG/How_to_Learn_CG&Coding.htm

【14】外刊IT評(píng)論《如何學(xué)會(huì)600多種編程語言》https://www.aqee.net/post/what-it-means-to-know-programming-languages.html


學(xué)習(xí)筆記_我該如何學(xué)好編程 20220418的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
东平县| 藁城市| 泽州县| 夏津县| 合山市| 云阳县| 台东市| 舞钢市| 乐亭县| 榆社县| 山东| 泸西县| 孟津县| 弥勒县| 台东县| 孟连| 海伦市| 中牟县| 平乐县| 吴江市| 庄浪县| 临江市| 镇原县| 新平| 保德县| 那坡县| 广河县| 平顶山市| 进贤县| 互助| 定州市| 临邑县| 开鲁县| 招远市| 开封县| 搜索| 内黄县| 岫岩| 尚志市| 西丰县| 常宁市|