linux编程入门教程(linux 编程 入门)
linux入門基礎(三)Gcc編譯編程?
【希望對你有幫助】
建議你看看編程的一些基礎知識
- 經典hello word 程序
#include <stdio.h>
int mian()
{
printf("hello world!n");
return 0;
}
- 編譯
-進入終端
-進入源文件所在的目錄
$ gcc hello.c -o hello
- 運行
$ ./hello
如何學編程?
編程是編定程序的中文簡稱,就是讓計算機代碼解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,并最終得到相應結果的過程。編程能提高邏輯思維能力,加強計算能力。
編程語言
Python
Python是一種面向對象有著代碼簡潔、可讀性強特點的解釋型計算機程序設計語言。代碼簡潔是因為它把許多的復雜的操作封裝起來,將C語言中麻煩的指針和內存管理對開發者隱藏起來,使得在開發過程中,無須在意這部分的細節。另外Python這門語言強制用戶用縮進進行排版,若不好好排版,則代碼編譯無法通過,或者運行過程會出現錯誤。
C語言
C語言是一門面向過程的、抽象化的廣泛應用于底層開發的通用程序設計語言,能以簡易的方式編譯和處理低級存儲器。C語言既具有高級語言的特點,又具有匯編語言的特點,是僅產生少量機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
是有簡潔的語言、具有結構化的控制語句、豐富的數據類型、豐富的運算符、可對物理地址進行直接操作、代碼具有較好的可移植性、可生成高質量、目標代碼執行效率高的程序。
Java
Java通過面向作為靜態對象的編程語言的代表,可以充分的實現面向的對象理論的編程語言,有簡單性、功能強大、分布式、健壯性、安全性、平臺獨立與可移植性、多線程及動態性的特點。
Java支持在網絡上應用,Java既支持各種層次的網絡連接,又以Socket類支持可靠的流(stream)網絡連接,它是分布式語言。所以用戶可以產生分布式的客戶機和服務器。網絡變成軟件應用的分布運載工具。Java程序只要編寫一次,就可到處運行。
PHP
PHP是一種被廣泛應用的開放源代碼的多用途腳本語言,它可嵌入到 HTML中,尤其適合 web 開發。
使用 PHP 的最大的好處是它對于初學者來說極其簡單,同時也給專業的程序員提供了各種高級的特性,只需幾個小時就可以自己寫一些簡單的腳本。盡管 PHP 的開發是以服務端腳本為目的,但事實上其功能遠不局限于此。
GO
Go語言(又稱 Golang)是一種靜態強類型、編譯型語言,是一個開源編程環境,可以輕松構建簡單、可靠和高效的軟件。Go 語言語法與 C 相近,但功能上有:內存安全,GC(垃圾回收),結構形態及 CSP-style 并發計算。Go 內嵌了關聯數組(也稱為哈希表(Hashes)或字典(Dictionaries)),就像字符串類型一樣。
對比
python和c語言的區別主要體現在:語言類型、內存管理、速度、應用、運行、對象、聲明、測試和調試難度、復雜度、學習程度。 測試和調試難度不同:Python相對其他語言而言是非常簡單的語言,高度集成,代碼量少。Python中的測試和調試更容易;C中測試和調試更難。 學習難度不同:Python:Python程序更易于學習,編寫和閱讀;C語言:C程序語法比Python更難。
python 跟 java 一樣是強類型語言,也就是說它不會根據環境變化自動改變數據類型。python 是動態語言,而 java 是靜態語言。也就是說 python 在編程時,永遠不用給任何變量指定數據類型,而 java 寫程序時必須聲明所有變量的數據類型。
python 的模塊類似于 java 的 class,不過python模塊導入會執行 代碼的內容,而 java 不會。python 與 java 的執行方式還是蠻像的,都是將源碼編譯成 byte code 然后交給相應的虛擬機去執行。
Python的框架數量較少,而PHP中成熟的框架比較多;PHP是面向web的語言,而Python是多用途語言,也可以用于web開發;Python使用非常嚴格的縮進強制執行,使它比PHP更具可讀性。
學習思路
認識編程
編程語言(programming language)又稱程序設計語言,是一組用特定語言編寫的用于執行特定任務的指令。主要用于開發桌面應用、操作系統、網站、移動應用等。
低級編程語言
它基于二進制數 0 和 1 工作,處理器直接運行低級程序,不需要編譯器或解釋器,因此用低級語言編寫的程序可以運行得非常快。
低級語言進一步分為兩部分
機器語言
機器語言也稱為機器代碼或目標代碼,更容易閱讀,因為它通常以二進制或十六進制形式(基數 16)形式顯示。
它不需要翻譯器來轉換程序,因為計算機直接理解機器語言程序。
匯編語言
匯編語言是為特定處理器設計的,它以象征性和人類可理解的形式表示一組指令。它使用匯編程序將匯編語言轉換為機器語言。
中級編程語言
中級編程語言介于低級編程語言和高級編程語言之間。
它也被稱為中間程序語言和偽語言。
中級編程語言的優點是支持高級編程的特性,是一種用戶友好的語言,與機器語言和人類語言密切相關。
例如:C、C++
高級編程語言
高級編程語言 (HLL) 旨在開發用戶友好的軟件程序和網站。
這種編程語言需要編譯器或解釋器將程序翻譯成機器語言(執行程序)。
示例:Python、Java、JavaScript、PHP、C#、C++ 等。
編程實踐
學習編程語言的過程簡單描述為:過、抄、仿、改、調、看、練、創、悟。
過
基礎知識點不求深解,語言什么樣的,適用場合、基本語法格式
抄代碼
從書上抄、例子中抄、邊抄邊想邊想邊回憶語法
模仿改
仿照給出的代碼寫出自己的代碼
勤調試
不斷調試驗證自己想法,繼續思考,再次驗證。熟悉調試工具調試方法
看n遍
出錯或者遇到問題時,將代碼從頭到尾看n遍直到快記住,找出問題原因
練
2-5步三遍以上
創新
拿出一個沒有寫過的根據要求,一步一步寫出來,寫不出來參考6
悟
主動找到寫代碼的感覺和成就感,保持下去。
選擇大于努力,只有切入一個適合自己的開發方向,才能持續進步。關于開發方向,我有以下兩個選擇標準。
興趣
學習編程是一個非常枯燥的過程,內容多,時間長,成本高,即使報名了培訓班也學不會,所以,我們首先要選擇自己感興趣的一個開發方向,這樣不但能快速學習,以后還能持續進步。學習編程的過程是比較艱苦的,沒有興趣很難硬抗下來,此處的興趣,是指別人無法撼動的熱愛,是工作之余讓你放松的事情。如果你只是有過某種想法,別人告訴你這個想法不靠譜,你就放棄了,這頂多是一時的雞血。
學習方式
費曼學習法
在學完一個東西之后去給別人講明白,注意是講給別人聽,當你寫成文章發表在網上的時候,你自然會去用更通俗的語言,更清晰的邏輯去講述這個事物背后的邏輯。這個過程是對自己學習的一個檢驗,也是加深映像整理思路的重要過程。
那么如果你是去記筆記的話,很有可能你會傾向于去照抄,或是不完全照抄,以“提綱”或是“知識點”的形式抄在本子上。說句實話,照抄的筆記真的沒用,因為現在搜索引擎的能力已經可以讓你把大多數東西快速找到,你為什么還要照抄到筆記本上呢?
從功利的角度考慮,技術文章的寫作,別人可以直接訪問,也可以逐漸累積你的影響力,一個好的個人技術博客,會給你的簡歷加分很多,而一個厚厚的筆記本,沒有人會管你記了什么。
做好筆記
大多數人沒有過目不忘的神技,學了也不一定馬上掌握,需要過后花時間慢慢領悟,而且還有忘掉的風險,所以對于重要的知識點都要做好筆記。編程的過程中總會遇到各種各樣的問題,比如編程環境的配置,常用的快捷鍵,編程過程中的錯誤、異常,軟件更新問題等等。面對這些問題都是如何解決的,一定要記錄下來,一是增加自己解決問題的經驗,而是以防下次出現。
多看官方文檔
外文資料互聯網是一個更新迭代很快的行業,所有編程語言都會不斷的更新新功能和修復舊Bug,網上查的資料很有可能是舊的解決方案,現在已經不適用了。所以最好最快的方法就是查看官方文檔。
進入行業圈子
只有進入行業圈子與其他人交流,你才了解最新的行業動態,才知道自己需要更新哪些技能。
動手做項目
學習編程的最終目的就是用所學的做出具有一定功能的項目,而做項目又是最好的學習和鞏固知識的方式。如果前期能力不足就先做一些簡單的功能模塊,一步一步慢慢來,不要一開始就要實現各種酷炫炸天功能,遇到不會的就在網上查, 現在互聯網這么發達,獲取資源也及其方便。而且開發前也最好在網上查一下有沒有已經成型的框架或模板,什么都自己做一是很耗費時間,二是自己技術能力不足還可能留下不少坑。
學習Python
安裝編程環境
第一步:訪問Python官網,獲取最新安裝程序。
第二步:運行下載的安裝程序,注意勾選“Add Python3.7 to PATH”,然后選擇個性化安裝,即“Customize installation”。
第三步:確保“pip”被勾選上,之后安裝各種庫需要用到pip。
第四步:高級選項,需要的可以修改安裝目錄,通常沒有需要修改的,直接點“Install”。
第五步:等待程序自動安裝完成。
第六步:出現如下界面,說明安裝已完成。
第七步:驗證方法,Windows+R 鍵打開“運行”窗口,輸入cmd運行,進入命令提示窗口,再輸入python,進入Python的命令模式,輸入 print("Hello"),結果輸出了 Hello,如下圖所示,確定開發環境已安裝完成。
運行環境
Hello World!
命令行
在Linux命令行輸入:$python
將直接進入python。然后在命令行提示符>>>后面輸入:>>>print('Hello World!')
可以看到,隨后在屏幕上輸出:
Hello World!
print是一個常用函數,其功能就是輸出括號中得字符串。
(在Python 2.x中,print還可以是一個關鍵字,可寫成print 'Hello World!',但這在3.x中行不通 )
小程序
另一個使用Python的方法,是寫一個Python程序。用文本編輯器寫一個.py結尾的文件,比如說hello.py
在hello.py中寫入如下,并保存:print('Hello World!')
退出文本編輯器,然后在命令行輸入:$python hello.py
來運行hello.py。可以看到Python隨后輸出Hello World!
腳本
我們還可以把Python程序hello.py改成一個可執行的腳本,直接執行:#!/usr/bin/env python
print('Hello World!')
需要修改上面程序的權限為可執行:chmod 755 hello.py
然后再命令行中,輸入./hello.py
就可以直接運行了。
基本數據類型
變量不聲明
Python的變量不需要聲明,你可以直接輸入:>>>a = 10
那么你的內存里就有了一個變量a, 它的值是10,它的類型是integer (整數)。 在此之前你不需要做什么特別的聲明,而數據類型是Python自動決定的。
>>>print(a)
>>>print(type(a))
那么會有如下輸出:
10
這里,我們學到一個內置函數type(),用以查詢變量的類型。
回收變量名
如果你想讓a存儲不同的數據,你不需要刪除原有變量就可以直接賦值。
>>>a = 1.3
>>>print(a,type(a))
會有如下輸出
1.3
序列
sequence(序列)是一組有順序的元素的集合,(嚴格的說,是對象的集合,但鑒于我們還沒有引入“對象”概念,暫時說元素)序列可以包含一個或多個元素,也可以沒有任何元素。
我們之前所說的基本數據類型,都可以作為序列的元素。元素還可以是另一個序列,以及我們以后要介紹的其他對象。
序列有兩種:tuple(定值表; 也有翻譯為元組) 和 list (表)
>>>s1 = (2, 1.3, 'love', 5.6, 9, 12, False) # s1是一個tuple
>>>s2 = # s2是一個list
>>>print(s1,type(s1))
>>>print(s2,type(s2))
tuple和list的主要區別在于,一旦建立,tuple的各個元素不可再變更,而list的各個元素可以再變更。
一個序列作為另一個序列的元素
>>>s3 = ]
空序列
>>>s4 =
自學
網站
菜鳥網站
這個python教程很適合小白學習,沒有高深的原理,照著教程學就完事了。
菜鳥教程是一個提供免費編程學習的網站,里面不但能學到編程知識,還能運用在線編程工具,使你在學習的過程中得到發揮,實踐得真理,邊學邊做中讓基礎打得更穩,讓自己的知識更加穩固。在自己有不明白不理解的地方可以在網站的用戶筆記中尋找大佬們的筆記,把自己所學和技術大佬的經驗所融合,使自己更好地提升自己的能力。
菜鳥教程內容豐富,例如前端熱門語言HTML5、CSS3、JavaScript、Vue等它該有的都有,都會從最基礎的開始教,讓剛學編程的小白由淺及深,一看就懂。每個知識點都有實例可以動手,直接在頁面內做你想要的效果真的非常棒。菜鳥的排版簡潔清晰有序,內容一針見血,讓你一看就能明白其知識點的含義。
菜鳥教程不僅前端教程語言豐富,后端的Java、PHP、Python更是一應俱全,當然數據庫、移動端、XML、ASP.NET、Web Service、開發工具和網站建設也是應有盡有,菜鳥教程有學到的知識如此之多,奮斗吧少年。
廖雪峰的官方網站
廖雪峰的官方網站比較推薦新手程序員學習前端,這個網站的教學視頻的講解相對來說會比較生動,沒有其他教程那么死板,看起來也不至于那么犯困,也更便于新手去理解。總的來說,廖雪峰的官方網站作為一款啟蒙類的前端學習網站還是相當不錯的。
Python官方教程
這是Python官方出品的教程,可搭配Python標準庫一起學。
書籍
《Python編程從入門到實踐(第2版)》
作者:埃里克·馬瑟斯 (EricMatthes)袁國忠 譯
ISBN:9787115546081
出版:人民郵電出版社
本書是針對所有層次Python讀者而作的Python門書。全書分兩部分:部分介紹用Python編程所必須了解的基本概念,包括強大的Python庫和工具,以及列表、字典、if語句、類、文件與異常、代碼測試等內容;第二部分將理論付諸實踐,講解如何發三個項目,包括簡單的2D游戲、利用數據生成交互式的信息圖以及創建和定制簡單的Web應用,并幫助讀者解決常見編程問題和困惑。
《像計算機科學家一樣學Python》
ISBN:9787115425515
作者:艾倫 B. 唐尼(Allen B. Downey)
出版:人民郵電出版社
本書以培養讀者以計算機科學家一樣的思維方式來理解Python語言編程。貫穿全書的主體是如何思考、設計、發的方法,而具體的編程語言,只是提供了一個具體場景方便介紹的媒介。全書共21章,詳細介紹Python語言編程的方方面面。本書從基本的編程概念始講起,包括語言的語法和語義,而且每個編程概念都有清晰的定義,引領讀者循序漸地學習變量、表達式、語句、函數和數據結構。書中還探討了如何處理文件和數據庫,如何理解對象、方法和面向對象編程,如何使用調試技巧來修正語法錯誤、運行時錯誤和語義錯誤。
《計算機科學叢書:Java編程思想》
ISBN:9787111213826
作者: Bruce Eckel
出版:機械工業出版社
本書的作者擁有多年教學經驗,對C、C++以及Java語言都有獨到、深入的見解,以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念。本書共22章,包括操作符、控制執行流程、訪問權限控制、復用類、多態、接口、通過異常處理錯誤、字符串、泛型、數組、容器深入研究、JavaI/O系統、枚舉類型、并發以及圖形化用戶界面等內容。這些豐富的內容,包含了Java語言基礎語法以及高級特性,適合各個層次的Java程序員閱讀,同時也是高等院校講授面向對象程序設計語言以及Java語言的好教材和參考書。
《瘋狂Java講義》
ISBN:9787121361586
作者:李剛
出版:電子工業出版社
《瘋狂Java講義(第4版)》深入介紹了Java編程的相關方面,《瘋狂Java講義(第4版)》內容覆蓋了Java的基本語法結構、Java的面向對象特征、Java集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC數據庫編程、Java注釋、Java的IO流體系、Java多線程編程、Java網絡通信編程和Java反射機制。覆蓋了java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax.swing包下絕大部分類和接口。本書重點介紹了Java 9的模塊化系統,還詳細介紹了Java 9的jshell工具、多版本JAR包、匿名內部類的菱形語法、增強的try語句、私有接口方法,以及Java 9新增的各種API功能。
%3Chowto_content%3E,"text":"","id":"WceadiusyoyOwaxoNSsceBGjnVd"},{"type":"heading","attrs":{"level":1},"children":,"text":"","id":"Oqa2diWSioCqoexAhV7cd5qbnLd"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"RYCIdicsYoyiUgx6drTcXYVMn4d"},{"type":"paragraph","children":,"text":"","id":"SeiEdQ4GAoc8Koxm6Oucd3MonOb"},{"type":"image","attrs":{"height":701,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/aeaa7b58948c4124bd69b6417e51906a","width":1563},"text":"","id":"DSA6demiCo8YmgxGYDmcdbmenQf"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"RKKodkW2Wo0muoxaYdScS9gDnse"},{"type":"paragraph","children":,"text":"","id":"WkgAdki6koYcsSxzF93csMeynCk"},{"type":"paragraph","children":,"text":"","id":"FkCQdiCsmo40iqxg7ujcPBy9nHe"},{"type":"image","attrs":{"height":806,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/6f859719f77941aea4a29e7119f20a7f","width":1603},"text":"","id":"ME8ad6QuAoiWo2xe8zCc3gXrnog"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"FWK8d2GSUoMME2xUxHzc8kMYnQR"},{"type":"paragraph","children":,"text":"","id":"TeIod6souoE4EkxgjEfcOZkLnoc"},{"type":"paragraph","children":,"text":"","id":"Te4udsisCoK44gxMpuPcDy11nfd"},{"type":"image","attrs":{"height":839,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/0e1656925be54be393b49dc2e2ac7b80","width":1893},"text":"","id":"SUW6d0aw2oskC4x2FMSc3WhNnRg"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"Ic6kdo08aoY4GuxeY6Qc3Z8nnNe"},{"type":"paragraph","children":,"text":"","id":"IwQ8dKQCeoGAmixqM7BcXdgUnAd"},{"type":"paragraph","children":,"text":"","id":"DW0Odakc6ouW6Kxu6kPcdPF3nZd"},{"type":"image","attrs":{"height":648,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/300a2e3c7e954e7b8def92163c3f3673","width":1828},"text":"","id":"Naq2duscgogQ2oxYjg2cosy1nEe"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"CwWwdCYeAoMuMuxCiNpcqJKpnRg"},{"type":"paragraph","children":,"text":"","id":"SIY6dO8ecoGoOOxmUVPcViIAnxb"},{"type":"image","attrs":{"height":772,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/3a879bbdd4b64d2b9b54d3f7358e7ed3","width":1522},"text":"","id":"GuiUdc6UCoKUWGxaCogc2jcrnFe"},{"type":"heading","attrs":{"level":1},"children":,"text":"","id":"EGqmdKMsGogUeexukQ5cA2wTnQf"},{"type":"paragraph","children":,"text":"","id":"HEyKduA4Iow6Kwx8ZiCcPQaVnHd"},{"type":"paragraph","children":,"text":"","id":"I6yAdOUQqoQSIYxs7XVcPwlSnMe"},{"type":"paragraph","children":,"text":"","id":"VmgOds4Ceoi0KoxGa8nc0GLDneb"},{"type":"paragraph","children":,"text":"","id":"MW22d02SsoU2oYxesy1cIEfsnYb"},{"type":"paragraph","children":,"text":"","id":"SA4kdwiSIoMW42xCGzDcMMyXnfe"},{"type":"heading","attrs":{"level":1},"children":,"text":"","id":"ECkydGqiIoEmKoxQzshckC4rncd"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"IkSQdA02Ko64KKxoHAGc6cEwnIb"},{"type":"paragraph","children":,"text":"","id":"HM2udQ0giowuekxoV1kchShynhc"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"CkEQdgiGooaKGaxesABch5T1nlh"},{"type":"paragraph","children":,"text":"","id":"UgoMde6QIou8yAxambScEu1vnOb"},{"type":"paragraph","children":,"text":"","id":"ASy6dMoGooWsKaxeCDAcTUajnde"},{"type":"paragraph","children":,"text":"機器語言","id":""}],"text":"","id":"Z8MKdYOOmoucO0xai2uc1TUKnTd"},{"type":"paragraph","children":,"text":"","id":"RIgMdsykeoaykIxawjVcRE7HnXf"},{"type":"paragraph","children":,"text":"","id":"LMsSdcWGsooA00xgzJUcR80Inuf"},{"type":"paragraph","children":,"text":" 匯編語言","id":""}],"text":"","id":"Xi0gdKkgGo0oKYxE0vacrHAtngb"},{"type":"paragraph","children":,"text":"","id":"GYOQdMKQuoGkoExyYdkcuU2anIf"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"RGmIdsSwmoY8A2x89NUcdbWbnjg"},{"type":"paragraph","children":,"text":"","id":"Q822d2sssoQQGYxAzK6c9GqFnbd"},{"type":"paragraph","children":,"text":"","id":"BuG2d8s6AoiIWCxGQt1cGdbgneg"},{"type":"paragraph","children":,"text":"","id":"FIg6dMMGaoYSu0xSyhpcKu46nPh"},{"type":"paragraph","children":,"text":"","id":"LK8sduKWaoa0oUxQXspcudVbnid"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"FaYsdG0KqoOGW6xa4u0c0UQVn9c"},{"type":"paragraph","children":,"text":"","id":"Rsi4dE64WoykEkxzYAIcCNc8nbH"},{"type":"paragraph","children":,"text":"","id":"IOqmdGCEcoeC2wxXJElc68FsnvL"},{"type":"paragraph","children":,"text":"","id":"CgagdYoyyoQMCwxJ65zcUJF6ntC"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"KGCQdQuyyoIu8Cx8DxYcWwFGnXf"},{"type":"paragraph","children":,"text":"學習編程語言的過程簡單描述為:過、抄、仿、改、調、看、練、創、悟。","id":""}],"text":"","id":"JUUOdqi2Ko6mSix0qMBcv94pnAb"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"HqSsduwsUoqSamxyGKWcWlLqnDd"},{"type":"paragraph","children":,"text":"","id":"XO0mdIAcMoOisgxuAb6cTIvHn9I"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"ZwqWdC2AioWsWGxNBikcRf0unBf"},{"type":"paragraph","children":,"text":"","id":"XQWmdmoMcoQ82axuI6Lcjb6knDe"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"WOc0dUWuAogWYAx8vZycJ1OYnfd"},{"type":"paragraph","children":,"text":"","id":"Iokkd0EewoMSMuxqCAKch8tRnZf"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"CCIsd2secoIAiOxUXGhcQ55Mncc"},{"type":"paragraph","children":,"text":"","id":"Sg8CdMOy8oMyysxC0jyc1mzunff"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"UW4Id0cOooa6EAxIro7c3bT5nle"},{"type":"paragraph","children":,"text":"","id":"ROsUdMEyQoewGUxB0JWcntn7nh6"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"Ag2EdIGQQowSOOxRfD2cRMnOnNl"},{"type":"paragraph","children":,"text":"","id":"D8eod4eqmoEUcQx0XNVcgNE9n7Z"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"JqU2damiUoQm4CxUSSDcpg16nAn"},{"type":"paragraph","children":,"text":"","id":"DIeidUEkooIGGWxmAUQcWltanhh"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"V4ikdSQY4oacQWxQ3RocOJTbnQc"},{"type":"paragraph","children":,"text":"","id":"ZOCqd80k8oi8GgxkFcUcGuxan6b"},{"type":"paragraph","children":,"text":"","id":"R620d6Qwko6O4gxeS37cRQxjnwd"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"WCkGd64Gwo6UcqxoV8Icg1G8nCf"},{"type":"paragraph","children":,"text":"","id":"BgqEdSkuMoqmqExFM9Dc7lBYnmk"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"FG6OdgEWAosIcexYLUecc900nLd"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"FOYAdYUk6oEk4gx7u0ycaoPsnEy"},{"type":"paragraph","children":,"text":"","id":"EyYWdScu2o0ca2xIRdgcR5k2nnd"},{"type":"paragraph","children":,"text":"","id":"HSu4dusiqoIcCcxCOhTccQL5n3e"},{"type":"paragraph","children":,"text":"","id":"SOUSdQWIoo6OMYxIldZcuIU9nKh"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"SUoEdyCk0oOa2Ux2lGlcxcJKnXd"},{"type":"paragraph","children":,"text":"","id":"OGGwdgoU0oca0gxamqlcZ7HVnCf"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"HqyKdYYu8oU6QCxKmzicQi2qnxb"},{"type":"paragraph","children":,"text":"","id":"FGkAdKUGioyu6OxiQ7pcForVnXc"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"OEwIdSQ4EoK0U8xHbsJcVXchnCw"},{"type":"paragraph","children":,"text":"","id":"XqkadOImEoakm4xCGrscdtHOnrg"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"SMIQdeS4Qo60gKxSE1qcpjf9n1b"},{"type":"paragraph","children":,"text":"","id":"E8SSdsQksoOykkxq8qhc2D9UnPh"},{"type":"heading","attrs":{"level":1},"children":,"text":"","id":"Noeodu46Eoyg4Oxcz2Lcvsh6nWf"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"Ucwad8wU0omK2YxUmNnc76Pjneb"},{"type":"paragraph","children":,"text":"","id":"CIWwdiUucoGM4Axe1XscufX4npb"},{"type":"image","attrs":{"height":253,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/6243e00debbc4a70b8dc277fa202d4e3","width":500},"text":"","id":"ZAUEdiiUoockeYx4FwFcKNmVnsb"},{"type":"paragraph","children":,"text":"","id":"DikMdkUMeoIIwOxEFNjcgKC8nfb"},{"type":"image","attrs":{"height":308,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/61c8842e690b42fc8de3ab3bce410252","width":500},"text":"","id":"VeISdQwCcogI8yxKqjrcxkXBnXf"},{"type":"paragraph","children":,"text":"","id":"JakkdcOG8omkoCxUt62cPMoinKb"},{"type":"image","attrs":{"height":308,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/257a0f4181604843b6b89e1ab0d338fc","width":500},"text":"","id":"HQUGdykoMoSUmGxymgjcOwounzg"},{"type":"paragraph","children":,"text":"","id":"U8gUdO22So4GWMxk5AAcYxhgnwd"},{"type":"image","attrs":{"height":308,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/a0bb9ea7ffad45d5aeef1f09f1dde2a4","width":500},"text":"","id":"IGQwdQag4oi06uxWuyacQYQAnwe"},{"type":"paragraph","children":,"text":"","id":"ZqiadCqiEoWewYx0AC8cBcnTneh"},{"type":"image","attrs":{"height":308,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/a46cba8c1cc64627a6bcb5bf991fe3f9","width":500},"text":"","id":"EmCWd0sMaoowOIxuA2lctZeXn8e"},{"type":"paragraph","children":,"text":"","id":"CSiudKqaqomAkcx2B6tcVnpGnPd"},{"type":"image","attrs":{"height":308,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/379805f0786b447583f0a32c4d573b32","width":500},"text":"","id":"UiCYdig0KoeIUWx049tcMB6bn6f"},{"type":"paragraph","children":,"text":"","id":"Lmoede4cuoEwQKxmabGcMLaXnXf"},{"type":"image","attrs":{"height":261,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/f84920cc98b14ad9beb9aae12c2e06f7","width":500},"text":"","id":"MsIgduUaEosaG6xSunHcnIm8nvf"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"Lqiwde2SYoKEoOxquyEcgRRLnLd"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"IIgSdccwkoeaG8xmadlcUw6Bnbh"},{"type":"paragraph","children":,"text":"命令行","id":""}],"text":"","id":"JAaKdcMMUoSaKcxW4c1ccXeGnPb"},{"type":"paragraph","children":,"text":"","id":"Ac0Udg8sKoo64WxKUEpcVHc9ngc"},{"type":"paragraph","children":,"text":"","id":"C6OwdcCKao0kG8x4u6bchmSwn9e"},{"type":"paragraph","children":,"text":"","id":"HMyIdGao0omCcMxyu1Kc9DyFnQJ"},{"type":"paragraph","children":,"text":"","id":"HCWydoCIKo02yMxOy7GcZ1MBnkc"},{"type":"paragraph","children":,"text":"","id":"K4gYdSoiuo00icxAHmpc1eimnGc"},{"type":"paragraph","children":,"text":"","id":"BQACduGE6oCgSOx2fvYcEcbPn4f"},{"type":"paragraph","children":,"text":"小程序","id":""}],"text":"","id":"NGqsdeUKwoewYQx3zgdcf4Q4nsb"},{"type":"paragraph","children":,"text":"","id":"LkWEdeSkSosWMexWc7PcjpdvnJg"},{"type":"paragraph","children":,"text":"","id":"JgOsdAKe4ogmyExYHgLcTmQunyg"},{"type":"paragraph","children":,"text":"","id":"So08dE2imoYYQCxQ2QFcO82cnJL"},{"type":"paragraph","children":,"text":"","id":"AIKCdsmeYoCwwUx0su3cHkHqnvb"},{"type":"paragraph","children":,"text":"腳本","id":""}],"text":"","id":"ZsEMdwYWcoQOsQxSSv6cYylLn5e"},{"type":"paragraph","children":,"text":"","id":"LqUgd8CeQoCIeux81qFc7h69nHE"},{"type":"paragraph","children":,"text":"","id":"ASc8d6YmkoASeOxcNArcGC3Anbc"},{"type":"paragraph","children":,"text":"","id":"SY4Sd2aEMoy8E2x8moScAd5Gnbc"},{"type":"paragraph","children":,"text":"","id":"KcuSdKiEGomYGmxcxZ9cfAzwn9d"},{"type":"paragraph","children":,"text":"","id":"WoeudWqOAosyosx8vdLcVyTQnre"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"PCwKdMoS2oKi4gxFAqZctL2XnJp"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"HsuQdOC6kosCkax4ML4cAJ8Dnje"},{"type":"paragraph","children":,"text":"","id":"SoA0dk2IKogMgOxewwVc4LkKnMe"},{"type":"paragraph","children":,"text":"","id":"KuuidCs4SooqGex6ZITcthxHnHc"},{"type":"paragraph","children":,"text":"","id":"VUaadIGOqoYYS4xwFOLcR1CVnEh"},{"type":"paragraph","children":,"text":"","id":"K2uYdIgSwoIaKexCWFvc3GZnnIe"},{"type":"paragraph","children":,"text":"","id":"VYCKdqwy4oWG6Ux2xQjcXvipnzV"},{"type":"paragraph","children":,"text":"","id":"FukWdMmaAoceg4xCaJ5c8ktfnuf"},{"type":"paragraph","children":,"text":"","id":"Mo4IdywqgoqKI8xSBu7cFmLyndb"},{"type":"paragraph","children":,"text":"","id":"C8yKdI8amoWwssxaEpQcGuK7nTf"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"LmgCdYeiuoIWgWxOon3c3P1Hncd"},{"type":"paragraph","children":,"text":"","id":"J0C0dc8UWo4CESx4m4jceRTAn4e"},{"type":"paragraph","children":,"text":"","id":"Tme6dEUG8ogECYxMrZOcjBzCnfg"},{"type":"paragraph","children":,"text":"","id":"Xo8mdWieio2ayqxYvCqcNNnKnac"},{"type":"paragraph","children":,"text":"","id":"HEQgdWU6so2EW0x2pYGc8Up6nLf"},{"type":"paragraph","children":,"text":"","id":"Xe0Qd0YkEoWcUixQxzNcsc7BnQc"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"K4sIdyYiaooeSKx0ENocBIlknzb"},{"type":"paragraph","children":,"text":"","id":"NKG2d8UMAokU4mxs9Snc667DnQf"},{"type":"paragraph","children":,"text":"","id":"SIe2duU4WoQEuMxUTXrcAmmKn2f"},{"type":"paragraph","children":,"text":"","id":"RmMwdgGU4oqywAxIZbQcqQHjnNe"},{"type":"paragraph","children":,"text":"","id":"WOaCdYes4o2k8yxWsrqckvlxnDd"},{"type":"paragraph","children": # s2是一個list","id":""}],"text":"","id":"De8ydgYi2o0ciixAjmgcINQnnzd"},{"type":"paragraph","children":,"text":"","id":"IMqQdWcKEogyGuxORI4cXDm9n5N"},{"type":"paragraph","children":,"text":"","id":"EY6idcQaooqaaGx0o8HcNZcmnHc"},{"type":"paragraph","children":,"text":"","id":"A8A0d4wsEoQM6gxy8wfczcPunJg"},{"type":"paragraph","children":,"text":"","id":"BiqUdsI6Koks4gxyig4ckRhgnGd"},{"type":"paragraph","children":]","id":""}],"text":"","id":"YoyEdOKywoYs8Ax4E1ic6uIan3c"},{"type":"paragraph","children":,"text":"","id":"OWykdUkeWo4UOQxWiu3cKYkDnAd"},{"type":"paragraph","children":","id":""}],"text":"","id":"VWEIdSqWooyg40xMpeYcDMo9nbd"},{"type":"heading","attrs":{"level":1},"children":,"text":"","id":"KW4Odiy8Eo4QyMxmAKFciGS8n4f"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"G4AadueAIoa4o8xs9gwcSrAxnme"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"KqWid0A6UoAOIAxIlTWcxC9Nnsd"},{"type":"paragraph","children":,"text":"","id":"UiaCdQGKyo6Wg2xwxHoc2Dxmnxt"},{"type":"paragraph","children":,"text":"","id":"ZEgwdWWSsoq682x8f5wchxAynZe"},{"type":"paragraph","children":,"text":"","id":"WiU8de84coa6cQxcTG1chmmunkh"},{"type":"paragraph","children":,"text":"","id":"RggwdQ6uqoSiQWxI1ENck2ktnYe"},{"type":"image","attrs":{"height":383,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/0798ab45151c4bd0ad7d0b1c1b4f9566","width":720},"text":"","id":"NI2SdAC2QosicOxQ9YxcHeSknnh"},{"type":"paragraph","children":,"text":"","id":"DsoCdsMcuoAoi0x8BarcCb3Sn3f"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"CwsqdmSY6os00wxdcNSctzmwnHH"},{"type":"paragraph","children":,"text":"","id":"SimcdEA4mo2QwExkXoAcSn0RnEh"},{"type":"image","attrs":{"height":750,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/b21b64b7b6c74706ab17469ccbf6b14b","width":1783},"text":"","id":"NWWwdMy2AoWIwgxI10pcF9jJnhh"},{"type":"heading","attrs":{"level":3},"children":,"text":"","id":"M0cGdIGsSoAYA8xaOKYcPxMInuf"},{"type":"paragraph","children":,"text":"","id":"QCUKde0YCoe4aixMp6mc34NynAf"},{"type":"image","attrs":{"height":810,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/4871398dc75d4de4ab867263607d7048","width":1445},"text":"","id":"NQI2dc86io4EgwxgVEXcl1svnae"},{"type":"heading","attrs":{"level":2},"children":,"text":"","id":"ZYEAdMaCaoY8mSxGJFecEcpannb"},{"type":"paragraph","children":,"text":"《Python編程從入門到實踐(第2版)》","id":""}],"text":"","id":"OKe4diK4goU4Swxg9Edc2CcjnQZ"},{"type":"paragraph","children":,"text":"","id":"PKQcdAAcGoUoC0xOqEocFhTCnlh"},{"type":"paragraph","children":,"text":"","id":"DyUWd4aUio4a60xu6ogcPj1Bn2d"},{"type":"paragraph","children":,"text":"","id":"Rs42dYymGoSIuUxWU7RctjUznMe"},{"type":"paragraph","children":,"text":"","id":"HoQodykKqo8COCxqyqwccoimnKh"},{"type":"image","attrs":{"height":619,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/f952cca888c0454e838c59d17090daf7","width":501},"text":"","id":"ZU6qdUUScoCUA4x46jtchHQIndf"},{"type":"paragraph","children":,"text":"《像計算機科學家一樣學Python》","id":""}],"text":"","id":"E28edua0koSygsxnyHBcIkeznGk"},{"type":"paragraph","children":,"text":"","id":"N44Udusiso2siQx61owcIo13n6d"},{"type":"paragraph","children":,"text":"","id":"RkEudeuIsoy2CmxW6NxcCRV1nfh"},{"type":"paragraph","children":,"text":"","id":"WYKKdki4WoSykmx6OJVcqWOunDg"},{"type":"paragraph","children":,"text":"","id":"BK6ydyYuaouyusx4pJfcnzCvnPh"},{"type":"image","attrs":{"height":701,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/2fcdba851350469c8f20a6fd2e54a3f8","width":526},"text":"","id":"Gukwd8S6oo0uMKxNGdKcgvECnCz"},{"type":"paragraph","children":,"text":"《計算機科學叢書:Java編程思想》","id":""}],"text":"","id":"Qyk4dmCKMouoUwxDv4BcZSonnv6"},{"type":"paragraph","children":,"text":"","id":"LOyCdEOUeo0MSixsRQOcsCACn1A"},{"type":"paragraph","children": Bruce Eckel","id":""}],"text":"","id":"NY06d6MISoicmMxkpXAcDYjwnxe"},{"type":"paragraph","children":,"text":"","id":"SASYdyGwMoMiMqx6Cn3c7fPfnFf"},{"type":"paragraph","children":,"text":"","id":"DmCwdc4UWo8kIyxkrbKcGAPFn3S"},{"type":"image","attrs":{"height":603,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/58be17df22694f249be5f539f0f12cbf","width":436},"text":"","id":"NuusdkO0KoEuqcxkhDUcaHIinNd"},{"type":"paragraph","children":,"text":"《瘋狂Java講義》","id":""}],"text":"","id":"Za0CdW40komg2KxiOCtcsN4pnNf"},{"type":"paragraph","children":,"text":"","id":"XAcQd6qs0oWqqGxUFeAcY2danZe"},{"type":"paragraph","children":,"text":"","id":"HImOdIWASoK8YGxkvUZcJhCHnrh"},{"type":"paragraph","children":,"text":"","id":"P0s8dmIUioYcsIxE13WcCFIgnJc"},{"type":"paragraph","children":,"text":"","id":"HqYKdqMICoW6Iexk7uecKI1ZnNb"},{"type":"image","attrs":{"height":685,"note":,"url":"https://p3.douyinpic.com/large/tos-cn-i-qvj2lq49k0/73f9b8449be24d31b0eb1b31f5d545fa","width":528},"text":"","id":"Nosid8Yukoa0aOxA54IcivKanue"},{"type":"paragraph","children":,"text":"","id":"ESKMd2eyCoKUQmxCgyCcBWYbn6f"}]%3C%2Fhowto_content%3E
如何從零開始學編程?
You can code. They cannot. That is pretty damn cool.– Learn Python The Hard Way
在你學習編程之前思考一下你的目標,當你有最終目標時道路會更加的清晰。那么,你想要寫什么?網站?游戲?iOS或者Android應用?或是你是想自動化完成一些乏味的任務讓你有更多的時間看窗外的風景?也許你只是想更具有就業競爭力找個好工作。所有的這些都是有價值的目標,這些目標都是你編程學習推動力的一部分,沒有推動力的人,是無法在略顯枯燥的漫長學習之旅中走遠的。
不要浮躁
Bad programming is easy. Even Dummies can learn it in 21 days. Good programming requires thought, but everyone can do it and everyone can experience the extreme satisfaction that comes with it.
不管是在線下還是線上的書店,滿目都是《21天學通Java》這種速成書目,它們都承諾在很短一段時間內就讓你能夠學會相關技術。Matthias Felleisen在他的著作 How to Design Programs, Second Edition 一書中明確指出了這種「速成」的趨勢并予以了以上的諷刺。
所謂的「捷徑」或者說「銀彈」是不存在的,智者說過,精通某個東西需要10年或10000個小時,也就是漢語中的「十年磨一劍」,所以不用著急,功不唐捐。
培養興趣
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
– Linus Torvalds
沉醉于編程,編程更是為了興趣。興趣是推動力的不竭源泉,保持這種充滿興趣的感覺,以便于你能將其投入到你的10年/10000小時的編程時間中。編程很有趣,那是探索的喜悅。那是創造的喜悅。看到自己親手完成的作品顯示在屏幕上很有趣。有人為你的代碼而驚嘆很有趣。有人在公共場合稱贊你的產品、鄰居使用你的產品、以及在媒體上討論你的產品很有趣。編程應該十分有趣,若并非如此,就找出導致編程無趣的問題,然后解決之。
這幅圖取自 Douglas Hofstadter 的著作G?del, Escher, Bach。圖中的每一個字母都由其他更小的字母組成。在最高層級,我們看的是"MU",M 這個字母由三個HOLISM(整全觀)構成,U則是由一個REDUCTIONISM(還原論)構成,前者的每一個字母都包含后者的后者整個詞,反之亦然。而在最低層級,你會發現最小的字母又是由重復的"MU"組成的。
每一層次的抽象都蘊含著信息,如果你只是幼稚地單一運用整體論在最高層級觀察,或運用還原論觀察最低層級,你所得到的只有"MU"(在一些地區的方言中mu意味著什么都沒有)。問題來了,怎樣才能盡可能多的獲取每個層級的信息?或者換句話說,該怎樣學習復雜領域(諸如編程)包含的眾多知識?
教育與學習過程中普遍存在一個關鍵問題:初學者們的目標經常過于傾向整全觀而忽略了基礎,舉個常見的例子,學生們非常想做一個機器人,卻對背后的
理解物理模型 → 理解電子工程基礎 → 理解伺服系統與傳感器 → 讓機器人動起來
這一過程完全提不起興趣。
在這里對于初學者有兩個大坑:
如果初學者們只與預先構建好的「發動機和組件」接觸(沒有理解和思考它們構造的原理),這會嚴重限制他們在將來構建這些東西的能力,并且在診斷解決問題時無從下手。
第二個坑沒有第一個那么明顯:幼稚的「整體論」方法有些時候會顯得很有效,這有一定的隱蔽性與誤導性,但是一兩年過后(也許沒那么長),當你在學習路上走遠時,再想回過頭來「補足基礎」會有巨大的心理障礙,你得拋棄之前自己狹隘的觀念,耐心地緩步前進,這比你初學時學習基礎知識困難得多。
但也不能矯枉過正,陷入還原論的大坑,初學時便一心試圖做宏大的理論,這樣不僅有一切流于理論的危險,枯燥和乏味還會讓你失去推動力。這種情況經常發生在計算機科班生身上。
為了更好理解,可以將學習編程類比為學習廚藝:你為了燒得一手好菜買了一些關于菜譜的書,如果你只是想為家人做菜,這會是一個不錯的主意,你重復菜譜上的步驟也能做出不賴的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些獨一無二的美味佳肴,甚至成為「大廚」,你必須理解這些菜譜背后大師的想法,理解其中的理論,而不僅僅是一味地實踐。但是如果你每天唯一的工作就是閱讀那些厚重的理論書籍,因為缺乏實踐,你只會成為一個糟糕的廚子,甚至永遠成為不了廚子,因為看了幾天書后你就因為枯燥放棄了廚藝的學習。
總之,編程是連接理論與實踐的紐帶,是計算機科學與計算機應用技術相交融的領域。正確的編程學習方法應該是:通過自頂而下的探索與項目實踐,獲得編程直覺與推動力;從自底向上的打基礎過程中,獲得最重要的通用方法并鞏固編程思想的理解。
作為初學者,應以后者為主,前者為輔。
啟蒙
「學編程應該學哪門語言?」這經常是初學者問的第一個問題,但這是一個錯誤的問題,你最先考慮的問題應該是「哪些東西構成了編程學習的基礎」?
編程知識的金字塔底部有三個關鍵的部分:
算法思想:例如怎樣找出一組數中最大的那個數?首先你得有一個 maxSoFar 變量,之后對于每個數…
語法:我怎樣用某種編程語言表達這些算法,讓計算機能夠理解。
系統基礎:為什么 while(1) 時線程永遠無法結束?為什么 int *foo() { int x = 0; return &x; } 是不可行的?
啟蒙階段的初學者若選擇C語言作為第一門語言會很困難并且枯燥,這是因為他們被迫要同時學習這三個部分,在能做出東西前要花費很多時間。
因此,為了盡量最小化「語法」與「系統基礎」這兩部分,建議使用 Python 作為學習的第一門語言,雖然Python對初學者很友好,但這并不意味著它只是一個「玩具」,在大型項目中你也能見到它強大而靈活的身影。熟悉Python后,學習C語言是便是一個不錯的選擇了:學習C語言會幫助你以靠近底層的視角思考問題,并且在后期幫助你理解操作系統層級的一些原理,如果你只想成為一個普通(平庸)的開發者你可以不學習它。
下面給出了一個可供參考的啟蒙階段導引,完成后你會在頭腦中構建起一個整體框架,幫助你進行自頂向下的探索。
完成 Codecademy 的 Python 部分。這只是熱身部分,盡快完成它,因為你永遠只是在瀏覽器里,你不會學到如何搭建開發環境。在 Codecademy 這類的編程學習網站學到的那點兒東西,哪怕你只想做一個小的不能再小的項目,你都不知道該從哪兒開始。
完成 MIT 6.00.1x(中文化)(如果你英語不過關,完成麻省理工學院公開課:計算機科學及編程導論。MOOC 是學習編程的一個有效途徑。雖然該課程的教學語言為Python,但作為一門優秀的導論課,它強調學習計算機科學領域里的重要概念和范式,而不僅僅是教你特定的語言。如果你不是科班生,這能讓你在自學時開闊眼界;課程內容:計算概念,python編程語言,一些簡單的數據結構與算法,測試與調試。支線任務:
完成Python核心編程
完成 Harvard CS50 (如果你英語不過關:完成哈佛大學公開課:計算機科學 cs50 。同樣是導論課,但這門課與MIT的導論課互補。教學語言涉及 C, PHP, JavaScript + SQL, HTML + CSS,內容的廣度與深度十分合理,還能夠了解到最新的一些科技成果,可以很好激發學習計算機的興趣。支線任務:
閱讀《編碼的奧秘》
完成《C語言編程》
如果你的目標是成為一名 Hacker:閱讀 Hacker's Delight
PS:如果教育對象還是一個孩子,以下的資源會很有幫助:
5-8歲: Turtle Academy
8-12歲:Python for Kids
12歲以上: MIT Scratch 或 KhanAcademy
入門
結束啟蒙階段后,初學者積累了一定的代碼量,對編程也有了一定的了解。這時你可能想去學一門具體的技術,諸如Web開發,Android開發,iOS開發什么的,你可以去嘗試做一些盡可能簡單的東西,給自己一些正反饋,補充自己的推動力。但記住別深入,這些技術有無數的細節,將來會有時間去學習;同樣的,這時候也別過于深入特定的框架和語言,現在是學習計算機科學通用基礎知識的時候,不要試圖去抄近路直接學你現在想學的東西,這是注定會失敗的。
那么入門階段具體該做些什么呢?這時候你需要做的是反思自己曾經寫過的程序,去思考程序為什么(Why)要這樣設計?,思考怎樣(How)寫出更好的程序?試圖去探尋理解編程的本質:利用計算機解決問題。
設想 :
X = 用于思考解決方案的時間,即「解決問題」 部分
Y = 用于實現代碼的時間,即「利用計算機」部分」
編程能力 = F(X, Y) (X>Y)
要想提高編程能力,就得優化 X,Y 與函數 F(X, Y),很少有書的內容能同時著重集中在這三點上,但有一本書做到了——Structure and Interpretation of Computer Programs(SICP)《計算機程序的構造和解釋》,它為你指明了這三個變量的方向。在閱讀SICP之前,你也許能通過調用幾個函數解決一個簡單問題。但閱讀完SICP之后,你會學會如何將問題抽象并且分解,從而處理更復雜更龐大的問題,這是編程能力巨大的飛躍,這會在本質上改變你思考問題以及用代碼解決問題的方式。此外,SICP的教學語言為 Scheme,可以讓你初步了解函數式編程。更重要的是,他的語法十分簡單,你可以很快學會它,從而把更多的時間用于學習書中的編程思想以及復雜問題的解決之道上。
Peter Norvig 曾經寫過一篇非常精彩的SICP書評,其中有這樣一段:
To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else.
如果你是文中的前者,閱讀SICP將成為你銜接啟蒙與入門階段的關鍵點
雖然SICP是一本「入門書」,但對于初學者還是有一定的難度,以下是一些十分有用的輔助資源:
Udacity CS212 Design of Computer Program): 由上文提到的Google研究主管Peter Norvig 主講,教學語言為 Python,內容有一定難度。
How to Design Programs, Second Edition:HtDP的起點比SICP低,書中的內容循循善誘,對初學者很友好,如果覺得完成SICP過于困難,可以考慮先讀一讀HtDP。
UC Berkeley SICP授課視頻以及 SICP 的兩位作者給 Hewlett-Packard 公司員工培訓時的錄像(中文化項目)
Composing Programs:一個繼承了SICP思想但使用Python作為教學語言的編程導論(其中包含了一些小項目)
SICP 解題集:對于書后的習題,作為初學者應盡力并量力完成。
完成了這部分學習后,你會逐步建立起一個自己的程序設計模型,你的腦子里不再是一團亂麻,你會意識到記住庫和語法并不會教你如何解決編程問題,接下來要學些什么,在你心里也會明朗了很多。這時候才是真正開始進行項目實踐,補充推動力的好時機。
關于項目實踐:對于入門階段的初學者,參與開源項目還為時過早,這時候應該開始一些簡單的項目,諸如搭建一個網站并維護它,或是編寫一個小游戲再不斷進行擴展,如果你自己的想法不明確,Mega Project List 中選取項目。總之,務必在這時拿下你項目實踐的第一滴血。
與此同時,別忘了繼續打好根基。為了將來的厚積薄發,在下面這幾個方面你還要繼續做足功課(注意:下面的內容沒有絕對意義上的先后順序):
計算機系統基礎
有了之前程序設計的基礎后,想更加深入地把握計算機科學的脈絡,不妨看看這本書:《深入理解計算機系統》 Computer Systems A Programmer's Perspective。這里點名批評這本書的中譯名,其實根本談不上什么深入啦,這本書只是 CMU的「計算機系統導論」的教材而已。CMU的計算機科學專業相對較偏軟件,該書就是從一個程序員的視角觀察計算機系統,以「程序在計算機中如何執
總結
以上是生活随笔為你收集整理的linux编程入门教程(linux 编程 入门)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [3.3训练赛]One-Dimensio
- 下一篇: 迎开学水题狂欢赛(舞踏会[dp+三叉树]