1. 程式人生 > >寫一本”錯誤百出”的C語言學習教程(一)

寫一本”錯誤百出”的C語言學習教程(一)

10年前我剛考上心理學研究生。對於學習計算機的熱情反而由於某種原因高漲起來了。於是便草草的複習了一遍C語言的教程。因為大學本科期間喜歡讀課外書,C語言並沒有學好。或許自己笨或者老師沒有教好,總之沒有學會。現在時光是2018年11月1日了,本科畢業也有12年了。研究生畢業也有10年了。創業也有6年了。做了一個和計算機以及心理學沒有關係的美容行業。又幻想成為一名Geek或者一名Hacker,買了一堆堆的書籍,堆放在家裡。沒有時間看。特別是最近看雙十一,又買了一波。偶然翻了一下C語言的書,興趣其實是不大的。因為人生的階段不一樣了。不是準備考C語言二級的時候了,不是讀研的時候了。時間緊迫。家庭責任重。社科類的讀書還在堅持讀,而讀技術書籍就已經是奢望了,抑或很難堅持了。今天開個頭,想重新學一遍C語言。而且應該是這輩子最後一次了。類似Excel的學習一樣。現在也不用顧忌語言的通順與否,純粹是為自己做個記錄吧。之所以是取這個名字是因為學習的過程並不需要精確,很多概念的理解一開始就是錯誤的,哪怕我現在看個幾十本C語言的書,寫的內容和筆記以及理解的東西很多都是錯誤的。人的知識很多是構建的(建構主義心理學)。所以我覺得錯誤百出並不是壞處,恰恰人類學習的一條合適的認知道路。

  1. C語言簡介

C語言概述

20世紀70年代初期,貝爾實驗室開發的一種程式語言。

C語言最早是B語言上進行改進的。B語言本身是基於BCPL語言改進而來的。Basic Combined Programming Language(BCPL),是一種早期的高階語言。而BCPL語言是基於CPL語言上改進而來。CPL語言又基於ALGOL 60語言改進而來。下面是摘抄自百度百科的:

"CPL語言屬於高階語言。CPL語言在ALGOL 60 的基礎上接近硬體一些,但規模比較大,難以實現。1967年英國劍橋大學的 Matin Richards對CPL語言做了簡化,推出了 BCPL (the Basic Combined Programming Language)語言。1970年美國貝爾實驗室的 Ken Thompson 以 BCPL 語言為基礎,又作了進一步的簡化,設計出了很簡單的而且很接近硬體的 B 語言(取BCPL的第一個字母),並用B語言寫出了第一個 UNIX 作業系統。但 B 語言過於簡單,功能有限。1972年至1973年間,貝爾實驗室的 D.M.Ritchie 在 B 語言的基礎上設計出了 C 語言(取BCPL的第二個字母)。C語言即保持 BCPL 語言和 B 語言的優點(精練、接近硬體),又克服了他們的缺點(過於簡單,資料無型別等)。"

是不是很多教材都忽略了這一段歷史呢?沒有無緣無故的愛,也沒有無緣無故的語言。再次捋一下,C基於B語言,B語言基於BCPL,其中B代表Basic,BCPL代表基礎的,C代表混合的,PL就是程式語言。BCPL又基於CPL語言,CPL基於ALGOL 60,當然ALGOL 60 又基於ALOGL 58。B語言取自於BCPL中的第一個字母,C語言改進了B語言,取BCPL中的第二字母。老外取名就是任性!