?

C語言中的哲學思想體現探究

2023-03-24 06:44袁麗華習騰彥
電腦知識與技術 2023年4期
關鍵詞:數據結構世界觀方法論

袁麗華 習騰彥

關鍵詞:算法;數據結構;范式;方法論;世界觀

1 引言

自從賓夕法尼亞大學誕生人類首臺計算機以來,計算機技術得到飛速的發展,同時,計算機技術融入了社會各行業的專業技術之中,推動著各種領域技術的革新和發展。社會各行各業亟需具有專業知識和計算機素養的復合人才。高等院校肩負著培養各類專業大學生在計算機應用方面的知識和素養。C 語言多年來一直是應用領域很廣的計算機語言之一,既可用于編寫操作系統又可用于應用軟件開發,國內絕大多數理工科專業將C語言設置成為本專業的基礎課程,甚至是核心課程??梢?,C 語言在計算機教育與應用以及計算機人才培養方面具有重要的地位和作用。

目前C語言的課程改革主要涉及兩個方面,一是教學方法的改革,二是課堂思政建設。C語言教學改革的新方法新理念層出不窮,引入了任務驅動、線上線下混合教學、課堂翻轉等方法,注重培養學生計算思維能力、編程能力等。例如,劉杰等以OBE 理念制定教學目標,優化教學內容,采用線下線上混合的教學模式,構建可持續改進的考核評價體系,保證教學過程的良性循環[1]。熊啟軍等注重實踐教學,結合多媒體的應用,將微視頻融入C語言程序設計的實驗教學之中[2]。朱新波采用任務驅動方法,運用設計教學機器人,激發學生的學習興趣,增強學生的實踐能力[3]。袁麗華提出采用承上啟下的教學模式幫助學生接受新知識,同時兼顧應用和鞏固已有的知識[4]。

2016年12月習近平總書記在全國高校思想政治工作會議上強調高校思想政治工作關系高校培養什么樣的人、如何培養人以及為誰培養人這個根本問題[5]。習近平總書記指出要堅持把立德樹人作為中心環節,把思想政治工作貫穿教育教學全過程,實現全程育人、全方位育人,努力開創我國高等教育事業發展新局面[5]。近年來,高等院校很重視課堂思政的建設,作為高校人才培養在德育方面的重要手段和環節。各高校C語言課程的思政建設也有條不紊地開展和實施,目前C語言的課程思政建設主要停留在思政元素的挖掘和設計上[6-8],但是C語言蘊含的哲學思想鮮有研究。解放軍國際關系學院的宣克祥指出“計算機教學不但要給學生傳授計算機科學技術,更要給學生講清計算機科學的思想淵源和計算機技術當中豐富的哲學方法。只有這樣,我們才能傳授知識,啟迪智慧,真正培育出屬于我們民族自己的創造能力和精神”[9]。本文將探討C語言的標準、算法、數據結構、結構化語言等中蘊含的哲學思想,將C語言的課程建設提高到哲學層面,引導學生形成正確的世界觀和方法論。

2 C 語言的范式

“范式(Paradigm) ”這一概念是由托馬斯·庫恩在《科學革命的結構》[10]中首先提出來的,他認為每一門科學的發展階段都有其獨特的內在結構,這種結構的模型被定義為“范式”?!胺妒健本哂袣v史性,是科學技術各個發展階段的規則、習慣和工具。C語言的發展史和C語言標準的進化史即為C語言各階段發展的“范式”,成為各個階段采用C語言編程的規則、習慣和工具。

圖1以年代進化的形式非常直觀地呈現出了C語言的發展歷程。跟隨圖1的時間軸,可以了解到C語言的前身是1960年的ALGOL語言,這是一門面向問題的高級語言,偏離硬件遠,因此,基于上述缺點,它并不適合于編寫系統程序。在此基礎上,劍橋大學于1963 年公布了Combined Programing Language(CPL) ,雖然改善了ALGOL離硬件遠的缺點,但CPL存在規模較大的不足,仍然不適合系統軟件的編寫。1967 年,Matin Richards在CPL語言的基礎上將其簡化成了Basic Combined Programming Language(BCPL) ,而且Matin Richards同樣來自劍橋大學。三年后,也就是1970年,來自貝爾實驗室的Ken Thompson又對BCPL 進行了簡化與修改,并將其取名為B語言。1972年,美國貝爾實驗室的Dennis Ritchie在BCPL和B語言的基礎上設計出新的語言,標志C語言的誕生。之后,UNIX的內核和應用程序全部被C語言改寫。從此,C 語言成為UNIX環境下使用最廣泛的主流編程語言。

在C語言誕生之后,圖1時間軸上的后續的年代演示了C語言各個發展階段的C語言標準的進化歷程。1978年,丹尼斯里奇(Dennis Ritchie) 和布萊恩科爾尼干(Brian Kernighan) 合作出版了《The C Program?ming Language》著作,被當作那時期的非正式的C語言標準說明,這一階段的C 語言被譽為“K&R C”。1983年,美國國家標準委員會(American National Stan?dards Committee,ANSC) 下屬計算機與信息處理部(X3)成立了“X3J11技術委員會”負責制定“一個無二義性的硬件無關的C語言標準”,并制定了C語言標準草案。1989年,ANSI正式通過C語言標準草案并且成為美國國家標準,后被稱為C89標準。1990年,在C 語言標準委員會ISO/IEC JTC1/SC22/WG14(ISO/IEC聯合技術第I委員會第22分委員會第14工作組)的努力下,國際標準化組織(ISO) 批準了ANSI C成為國際標準。于是ISO C(又稱為C90) 就這樣誕生了。1995年對C90進行了細微的技術擴充,經過技術擴充后的C90被改稱為C95。1999年,ANSI和ISO又通過了最新版本的C語言標準和技術勘誤文檔,該標準被稱為C99。2011年12月8日,ISO/IEC JTC1/SC22/WG14正式發布了C11標準。C語言標準作為“范式”,推動了C語言在不同領域的應用和發展。圖2歸納了C 語言的一些主要運用,既可用于編寫操作系統又可用于應用軟件開發,應用軟件方面涉及數據庫、辦公軟件、服務器、數據處理等。

3 算法蘊含的哲學思想

“算法+數據結構=程序”這一公式,最早是由瑞士著名計算機科學家尼克勞斯·沃思(Nikiklaus Wirth) 提出的。數據結構的概念是指將兩種數據類型,基本數據類型和復合數據類型,以結構化的組織方式在計算機上對數據進行存儲;而算法就是如何利用這些結構化的數據來解決實際問題的方法,可以理解為詳盡的實施步驟。簡而言之,數據結構是程序處理問題的數據載體,而算法是程序解決“怎樣做”的問題。

算法是編程的方法論,是計算機程序的核心或靈魂。通常有兩種方式來處理較為復雜的問題:第一種是自頂向下,逐步細化的方式;第二種方式則是自下而上,逐步積累。C語言采用的是自頂向下,逐步細化的方法,這個處理方式是C語言編程的方法論。C語言通過模塊化設計將復雜的問題分解為若干個小問題,從而實現逐步細化功能。C語言的模塊化編程依賴于函數,這是C語言的最大特點。C語言是函數化的語言,至少包含一個主函數,即main函數。圖3是C 語言模塊化程序設計示意圖,表達了C語言解決復雜問題的一般思路和方法,解決問題的通用的方法論。主函數是通過調用f1、f2和f3這三個函數來完成總任務要求,換句話來說,對一個復雜問題,細化成了三個功能問題f1、f2和f3;而f1再細化分解成f4和f5,f2則通過調用f6、f7和f8來實現,f3則分解為f8和f9;其中f6調用了f5,f8調用了f7。

圖3充分說明了C程序設計的方法論是采用自頂而下,逐步細化的思想,體現了“分而治之”的策略。C 語言采用結構化的語言實現函數的模塊化,通過順序結構、選擇結構以及循環結構三種基本結構完成結構化編程。三種結構的示意圖如圖4所示,選擇和循環結構還可以派生成其他形式。三種結構有一個共同特點,每種結構都是單入口以及單出口?;谶@一特性,可以依據任務的要求,將不同數量的三種結構,像搭積木似的完成需要的功能。

算法具有以下特點[11]:

(1) 有窮性:算法不能是無限的操作步驟,實際上,“有窮性”是指“在合理的范圍之內”,但是“合理的范圍”通常是由人們的常識和需要而定,并無嚴格標準。

(2) 確定性:算法中不能包含模棱兩可、條件不清晰的步驟,每一個步驟都必須是確定的。

(3) 有零個或多個輸入:執行算法時需要從外界獲取必要的信息,單個輸入或者多個輸入,算法也可以沒有輸入。

(4) 有一個或多個輸出:算法是為了解決實際問題,“解”就是輸出,算法具有至少一個解。沒有輸出的算法是沒有意義的。

(5) 有效性:算法中的每一個步驟都是行之有效的,并得到確定的結果。

算法可用多種形式表示,常用的有用自然語言表達的算法步驟、流程圖、偽代碼和程序的源代碼。以求解5!為例,表1羅列了這四種常用的算法表示方法。

4 C 語言數據結構的哲學思想體現

唯物辯證法認為世界上一切事物都不是孤立存在的,而是和周圍其他事物相互聯系的,整個世界就是一個普遍聯系著的有機整體。C語言有豐富的數據結構,大體可分為基本類型、構造類型、指針類型、枚舉類型和空類型,如圖5所示。C語言的各種數據結構之間的內在聯系能夠充分體現唯物辯證法的聯系觀點:(1) 數組、結構體、共用體等類型的數據都與基本數據類型有著緊密的聯系,它們都是由基本數據類型構造而成;(2) 指針也與基本數據類型密切相關,在定義指針變量時,必須為指針變量指定“基本類型”,其作用是為定義的指針變量指定指向的變量類型;(3) 指針、結構體、共用體也能構造出各自相應的數組數據。

基本類型數據是C語言數據的核心和基礎,有4 種最常用的基本類型數據,它們是整型、字符型、單精度浮點型和雙精度浮點型。每種類型有不同的輸入輸出引用格式,系統為它們分配不同的存儲空間,具體值羅列在表2中[4]。表3匯總了C語言各種數據類型定義的一般形式,一般形式中的類型符與表2中的類型符一致,具體運用時即為表2中羅列的某種基本類型。這表明各類數據之間的關聯性。

基本類型處理的是簡單的單個變量或數據。數組則是處理批量數據,并且同一數組具有相同的數據類型,數據類型仍然為4種基本類型。指針是C語言獨有的數據類型。指針的引入使得數據的訪問除了按變量名的直接訪問方式外,多了一種間接的訪問方式。這種訪問方式能依據變量地址來訪問,大大提高程序運行速度。此外,通過調用以指針變量為參數的函數,實現修改多個變量值的目的,而普通變量作為函數的參數只能得到一個返回值。表3中的前3種數據的類型的種類是固定的,常用表2羅列的4種類型,但是表3羅列的最后兩種數據,結構體和共用體,屬于用戶自定義的數據結構,它們是根據用戶需求自定義生成,因而具有無限種類型。指針和用戶自定義數據也可以定義相應的數組變量處理對應的批量數據??梢?,C語言處理的數據由簡單到復雜,由單個變量到批量數組,由單一類型數據到成員表列的多類型合成數據,由有限種類的數據到自定義無限種類,數據訪問方式由直接訪問到間接訪問。C語言的數據結構體現了唯物辯證法的聯系與發展的世界觀。

5 結構化語言的哲學思想體現

5.1 選擇結構的哲學思想體現

唯物辯證法認為事物是矛盾的統一體,包含著相互矛盾對立的兩個方面,主張“一分為二”全面的觀點分析問題和處理問題。C語言提供了全面分析問題的選擇結構,而選擇控制語句有if語句、條件運算符和switch語句,其中應用面最廣的是if語句。If-else語句具有“一分為二”的哲學理念,對給定的條件進行判斷后,形成兩條分支,條件成立執行if中的語句,相反,如果不成立則執行else中的語句。else為if的對立面,else不帶條件,不能單獨使用,必須和if結合在一起,充分體現了矛盾的對立與統一性。if語句有三種常用的表現形式:

(1) if(表達式)語句

(2) if(表達式)語句1

else 語句2

(3) if(表達式1) 語句1

else if(表達式2) 語句2

else if(表達式3) 語句3

else if(表達式m) 語句m

else 語句m+

形式(1) 只考慮條件成立的分支,形式(2) 是典型的“二選一”模式,而形式(3) 則對應“多選一”的情況。If語句的選擇控制結構把可能遇到的問題情況都考慮到了,有利于我們全面地分析問題。

5.2 循環結構的哲學思想體現

眾所周知唯物辯證法的量變和質變之間的關系,事物的發展和變化始終從量變開始,量變是質變的前提和必要準備。而質變是量變的必然結果。質變又為事物新的量變而開辟道路,使事物在新質的基礎上開始新的量變。事物的發展就是這樣不斷由量變到質變,又在新質的基礎上開始事物新的量變,如此循環往復,不斷變化。計算機語言用循環結構來實現周而復始的變化,到達量變到質變的飛躍。C語言提供了三種循環控制語句,分別是while語句、do-while語句和for語句,三種語句功能相似,但略有不同,可以互相替換。通常引入循環控制變量來控制循環的進程(對應量變)和終止(對應質變)。首先在進入循環結構之前,對循環控制變量設置初值,然后每運行一次循環體,循環變量就會累加一個步長,從而讓循環控制變量的值不斷趨近于循環終止條件,如此循環反復,使循環控制變量形成量變積累,直到循環條件不滿足,跳出循環結構,達到質變,循環終止,執行循環結構的后續語句。在應用循環語句編程時,最忌諱的是“死循環”,死循環產生不了量變到質變的飛躍,循環無休無止,程序無法正常結束,得不到正常的結果。因此,在編程中必須杜絕死循環情況的出現。

6 結論

本文首先回顧了C語言的發展歷程,指出C語言標準的進化史可視為其在各個發展階段的“范式”,推動著C語言的應用。隨后進一步闡述了算法、數據結構和結構化語言蘊含的方法論和世界觀。通過對C 語言哲學思想的剖析,為C語言的課堂思政建設奠定堅實的基礎,有利于培養學生的辯證唯物主義世界觀。C語言具有符號語言的特點,后續將繼續研究C 語言中的語言哲學思想。另外,馮·諾依曼提出了計算機哲學思想,C語言作為一門經典的計算機設計語言,具有計算機哲學思想研究價值和意義,后續也將進一步加以研究。

猜你喜歡
數據結構世界觀方法論
智能化的“世界觀”
漢學方法論值得關注
方法論視角下的制定法解釋
遠洋東方境世界觀售樓處
法本位的方法論闡釋
UAF的方法論意義
走向理性:近代以來中國世界觀的嬗變
“翻轉課堂”教學模式的探討——以《數據結構》課程教學為例
TRIZ理論在“數據結構”多媒體教學中的應用
《數據結構》教學方法創新探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合