一起學習C語言:C語言發展歷程以及定製學習計劃

如何才能學好一門語言? 這個問題始終伴隨着不同的答案。

從本篇開始,作者定期發佈<一起學習C語言>系列文章,本系列文章指引着您翱翔C語言世界,在這浩瀚的知識海洋裏,您將會感受到學好一門語言應具備哪些條件。

前言

初接觸編程那會兒,編程世界充滿了神祕感覺,對於我來說是那麼的遙不可及。也許您會問,爲什麼這麼說呢?由我慢慢道來…
學生時期,我比較癡迷於遊戲,導致各項成績都不太好,癡迷到什麼程度呢?就拿“xx西遊xx”來說,有時候爲了完成本週所有副本可以晚上不睡覺,爲了帶上喜愛的神獸,連續2個月帶小號掙錢(大概在暑假時期…)…
雖然玩遊戲既浪費時間,又浪費精力,但是那時候取得成績數不勝數,幾乎每款遊戲都接近職業玩家的水平。基於那時候酷愛計算機的原因,大學也是選擇的計算機專業,就這樣玩物喪志的生活一直到接近工作前5個月,我的父母比較擔心我的未來發展(現在想起來也比較愧疚~),特意讓我哥做我的思想工作,大致就是讓我重新學習編程把重心轉移到學習及工作上…
我正式學習的第一門語言是C語言,當時花了3天時間完成了入門(瞭解基本語法使用)學習,也許是那時候態度比較堅定得到我哥的認可(也是在那時候建立的自信),從此在編程的道路上漸行漸遠。
對於我來說,學好編程必要條件有以下三點:
1. 相信自己:
找到適合自己的方向一直走下去,不要回頭。
2. 學會領悟:
學習是一段繁瑣並枯燥的過程,默默忍受這段過程所帶來的壓力並領悟出自己的學習(記憶)方式。
3. 循環漸進:
每當學習新的知識點時,結合以往所學知識可以更快融入新的知識領域,並擁有自己的學習思想。

每當學習新知識時,迷茫屬於不可缺失的一部分,如何把迷茫轉化爲動力這個應該也是需要百分之九十九的努力加百分之一的天賦,當然天賦也是通過後天努力所積累的。

正文

1. 瞭解C語言

“世間沒有一種具有真正價值的東西,可以不經過艱苦辛勤勞動而能夠得到的。” ——愛迪生

每個人對“學習”有着不同的看法,有人說學習是簡單的,也有人說學習是複雜、痛苦的,在作者看來“學習”是一種過程,痛苦伴隨着快樂,它分爲三個階段:瞭解、認知和運用。本章節作者與大家一起了解C語言的發展歷程,爲我們接下來的學習提供一個龐大的想象空間。

1.1 C語言發展歷程

正式接觸C語言之前,我們先來了解一下C語言的發展歷程:
1972年貝爾實驗室的Dennis M.Ritchie在B語言的基礎上進行改良,最終以C命名這個新誕生的語言。
C語言的設計初衷是爲了重複利用及可移植性,在C語言之前,項目的移植是困難、昂貴的(技術方面),早期的程序員在做着一些重複的工作,C語言的問世改變了這種局面。
C語言初期,沒有統一的標準,各大廠商編寫的編譯器獨具一格,編寫方式也沒有明文規範,從移植性來講,這點是不可取的。
1978年,Bran W.Kernighan和Dennis M.Ritchie編寫的 The C Programming Language正式出版,這本書成爲第一個非正式的C語言標準參照。
1983年,美國國家標準協會(ANSI)成立了一個委員會X3J11,根據C語言問世以來的各種版本的發展與擴充,制定了第一個C語言標準草案(’83 ANSI C)。
1989年,美國國家標準協會(ANSI)公佈了一個完整的標準 ANSI X3.159-1989,簡稱爲C89標準,也可以稱爲ANSI C。
1990年,國際標準化組織(ISO)認證C89作爲國際標準ISO/IEC 9899:1990,簡稱爲C90標準。
1995年,國際標準化組織(ISO)對C90進行修訂,名爲ISO/IEC 9899:1990/Amd 1:1995,簡稱C95標準。
1999年,國際標準化組織(ISO)在C95的基礎上進行修訂,增加了一些功能,名爲ISO/IEC 9899:1999,簡稱爲C99標準。
2011年,國際標準化組織(ISO)在C99的基礎上再次進行修訂,新的標準提高對C++的兼容性,並增加一些新特徵,簡稱爲C11標準。

1.2 C語言擁有特性

“知彼知己者,百戰不殆”。 ——《孫子·謀攻》。

1.2.1 高效性

C語言既有接近彙編語言的執行效率,又具有高級語言的易用性。在設計上,語法清晰易懂並充分利用了當前計算機在執行能力上的優點。經過多年發展,C語言的應用場景也變得非常廣泛,從操作系統到上層應用程序皆可使用。

1.2.2 移植性

目前主流C、C++編譯器或多或少支持着GNU相關許可(GNU全稱GNU is Not Unix),當我們使用C標準庫編寫的程序移植到別的系統時,基本不會出現不兼容問題。當然,也需要對系統平臺相關引用定義做一些修改。

1.3 C語言適用場景

C語言的用途非常廣泛,用一句話形容就是“上天入地,無所不能”。C語言的黃金時期是在二十世紀八十年代左右,UNIX系統用C語言進行了重寫,從那時開始,C語言成爲系統開發首選語言。
C語言在嵌入式、數據庫、服務器、單片機、編譯器等都取得了巨大成功,使用C語言編寫這些程序可以極大程度縮小程序體積。

1.4 爲自己定製學習目標

學習知識的過程是枯燥乏味的,編程也是如此。作者本人學習編程的時候,情緒比較複雜,可以說是興趣伴隨着迷茫。
興趣:計算機太神奇啦!可以做到人類無法做到的事情,如果學好編程也許可以像那些大神一樣,在計算機界叱吒風雲,無所不能。
迷茫:編程對於我來說太陌生,我是否能學會其中的知識,是否可以堅持下來,學會之後是否可以找到工作?
大多數初學者或多或少會有這些情緒波動,對於不瞭解的領域,我們非常謹慎,這是人之常情。
作者作爲一位過來者,或多或少經過一些坎坷,每到情緒低沉時期便向身邊的親戚朋友請教:從事編程工作的朋友給予的答案大部分是再堅持一下,再試試看。而從事另外行業工作的朋友偶爾支持學習,大部分是一起迷茫……(作者和朋友一臉懵逼的情況)。
作者現在看待編程的感覺:入門比較容易,想要到達中級或更高級別需要的是耐心。工作後一星期保持3天或以上時間每天抽出一到兩個小時查看資料或源碼,一個月就可以感受到明顯變化,比如思維上的提升,遇到問題查找資料更快捷等。
在這裏作者提供自己的學習定製計劃供大家參考:
入門期:順序學習每一章知識,遇到不理解的問題應溫習前一章內容並分析當前困境,三思而後行可以幫助我們更快走出困境進入新的知識點。
編程初期:認真編寫每一個示例並學會記錄筆記,知識一般按照循環漸進方式逐步增加難度,每當忘記學過的知識時可以通過查看筆記更快進入新的知識點。
編程中期:擁有基本編程技術與思想爲前提。首先學會尋找新的知識點,分析經典示例中的設計風格以及設計背景(比如在什麼情況下設計這個程序),每當有新的領悟時,可以採用博客的方式編寫屬於自己的程序或示例,國內的博客平臺有很多,其中CSDN就是作者常用的一個寫作平臺。
編程後期(高手):記錄生活中的研發技術知識點,編寫大型項目中的核心模塊,日常有博客發佈。
學習編程過程中,或多或少都會遇到困境,堅持初心才能在這條道路上越走越遠。

1.5 學會解決問題

在上小節中,我們瞭解到學習編程的基本方法,遇到複雜問題的時候,僅僅瞭解學習方法還是有些相形見絀。
遇到問題時,我們至少有四種解決方案:

  1. 請教編程高手或老師
    通常情況下,編程經驗比我們豐富的人統稱爲高手。首先,他們擁有更廣闊的編程思想領域,即使有些複雜問題他們沒有接觸過,但也能提供基本解決思路。另外,他們認爲思路走不通的情況下,可以提供別的實現方式。

  2. 網絡搜索資料
    在一些特定情況下,比如難以啓齒或身邊沒有更深資的編程人員(偏向中高級編程人員),網絡搜索資料或許是個不錯的選擇。
    網絡搜索資料分爲以下幾種:
    2.1 官方資料
    遇到問題時,查找官方資料是比較直接的一種方式,但要求基礎稍高,不適合入門或初級編程人員。
    2.2 門戶網站搜索
    國內的門戶網站主要有百度、新浪、騰訊、網易、搜狐等,推薦使用百度。
    國外的門戶網站主要有谷歌(Google)、雅虎(Yahoo)等,推薦使用谷歌,但需要翻牆工具。
    2.3 託管平臺
    全球開源項目用的比較多的是Github,在Github上主要用來訪問這些開源項目,可以參考、下載源碼或者參考它們項目中的文檔,一般用於偏向於高級編程人員。

  3. 閱讀書籍
    如果遇到的問題多而複雜,並需要了解其中的原理,閱讀相關書籍可以提升全方面的理解,當然閱讀書籍也是最耗時的一種方式。

  4. 發帖求助
    在CSDN論壇中心,可以看到大量的求助文貼,註冊賬號後,我們也可以使用這個功能。

發佈了97 篇原創文章 · 獲贊 218 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章