首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

冒號課堂§2.1:命令式範式——一切行動聽指揮的計算模型

     編輯:Java 相關知識

最原始、最熟悉、最普及的編程範式

冒號開門見山:「命令式編程由命令序列組成——『先做這,再做那』,強調『怎麼做』。學術說:它是馮·諾伊曼機運行機制的抽象,依序從內存獲取指令數據並執行。世界觀:程序是有序指令列表;方法論:用變量存數據,用語句執行指令。」

為何機器語言一定是命令式?

逗號嘀咕:「我們用的語言不都是命令式嗎?」冒號糾正:「絕大多數是,但非命令式也存在。語言演化漸進,多數語言源於匯編升級,匯編與機器語言一一對應,自然是命令式。」

問號窮追:「為何機器語言一定得是命令式?」冒號讚賞追問精神:「理論上可有非命令式機器語言,前提是特殊硬件——非馮·諾伊曼結構的數據流機、歸約機。但這類電腦未流行,相應機器語言自然罕見。」

命令式 ≠ 過程式,但現代語言模糊邊界

引號問:「命令式與過程式是一回事嗎?」冒號答:「嚴格說,過程式是引入過程/函數/子程序的命令式。現代命令式語言均具此特征,故常不加區分。」

結構化編程:從「能跑」到「好維護」的關鍵一步

句號感嘆:「常用語言都是命令式,思想與機器相符,一切似乎自然而然。」冒號承認單純命令式樸素,但必須提結構化編程(SP)——過程式基礎上發展的編程原則,提倡代碼具清晰邏輯結構,保證易讀寫、測試、維護、優化。Pascal 即遵循 SP 設計的教學語言。

流程圖與三大基本控制結構

冒號展示流程圖:用戶輸入算術表達式,程序輸出結果,循環直到輸入 'q'。但按結構化定理,任何程序皆可用順序、選擇、循環三種基本控制結構表示,且滿足「單入口、單出口」(SESE)原則。

引號看出原圖用 break 跳出循環,非標準結構化。冒號要求改造,引號引入 quit 標志保證循環完整性。逗號驚問:「連 break 都不能用?」冒號澄清:break 只是循環內部跳轉,合理用可簡化代碼;goto 可跳程序任意點,造成靜態程序與動態進程差異,影響可讀性,竭力避免。

結構化編程雙重思想

  1. 微觀:循規守矩,用三種邏輯結構,摒棄/限制 goto
  2. 宏觀:分而治之,自頂向下設計,模塊化分解系統至易編碼實現

兩者互為因果、互為保障——基本結構拼裝的系統一定模塊清晰、層次分明;系統逐步分解到最後,一定演化成基本結構。

結構化 vs 非結構化流程圖:視覺上的天壤之別

歎號問能否從流程圖看出差別。冒號誇張形容:結構化流程圖模塊大小適中、關係簡明、線路清晰,視覺給人美感;非結構化如雜草鬆散、迷宮錯綜、線頭剪不斷理還亂,嚴重者導致讀者頭暈目眩乃至抓狂吐血。眾人掩口失聲。


[1] 數據流機支持數據流式語言,歸約機支持函數式語言。
[2] 結構化定理參考文獻【1】。
[3] 1967 年 Dijkstra《Goto statement considered harmful》主張廢除 goto。
[4] 1974 年 Knuth《Structured Programming with Goto Statements》認為 goto 有合理性,應限制非完全摒棄。
[5] 亦稱「自頂向下、逐步求精」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved