精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

編程中花括號的簡史

開發(fā) 前端
大括號,那個標志著代碼塊開始和結束的熟悉符號,什么時候成為編程的一部分?也許更重要的是,代碼塊何時成為程序結構的一部分?

[[349123]]

我們每天都使用它們,但是代碼中的花括號是從哪里來的呢?

大括號,那個標志著代碼塊開始和結束的熟悉符號,什么時候成為編程的一部分?也許更重要的是,代碼塊何時成為程序結構的一部分?

在本文中,我將回答這些問題。

首先,以非塊狀語言為例

所有熟悉C風格編程語法的程序員都熟悉編程塊,用C、C ++、Java、JavaScript和其他語言編寫的所有主要編程結構都是塊結構的。換句話說,這些構造的主體放置在塊中,這些塊由打開和閉合的花括號分隔。

有人可能會說,這并不是完全正確的,因為 if 語句和循環(huán)(這里只提到兩種編程構造),如果它們的主體只有一個語句,就可以不用塊來構造。然而,在過去的幾年里,編程風格專家建議將所有的構造體放在一個塊中(參見Douglas Cockroft的“JavaScript: The Good Parts”中關于將所有if和循環(huán)體放在塊中的論點特別有說服力)

然而,第一批高級編程語言并沒有塊。

我將使用大約在20世紀50年代末的FORTRAN語言來演示這一點。

[[349124]]

Donald Knuth在他關于早期高級編程語言的優(yōu)秀評論文章《編程語言的早期開發(fā)》中比較了幾種早期編程語言的特性,這篇文章轉載在他的書《計算機語言選集》中。他的做法是,演示某個計算機程序如何用不同的語言實現。這個程序實現了一個叫做TPK算法的算法,在現代JavaScript中是這樣的:

  1. function f(t) { 
  2.   return Math.sqrt(Math.abs(t) + 5 * Math.pow(t, 3)); 
  3. let arr = []; 
  4. let y; 
  5. for (let i = 0; i < 11; i++) { 
  6.   putstr("Enter a number: "); 
  7.   arr[i] = parseFloat(readline()); 
  8. for (let i = 10; i >= 0; i--) { 
  9.   y = f(arr[i]) 
  10.   if (y > 400) { 
  11.     print(y,"is too large."); 
  12.   } 
  13.   else { 
  14.     print(i,y) 
  15.   } 

不要擔心程序做什么。重要的一點是,這個程序執(zhí)行了Knuth認為在現代編程語言中對測試很重要的所有特性。

正如我提到的,Knuth將幾種編程語言與該算法進行了比較。他最后看過的一種語言,現在通常被認為是第一種真正的高級編程語言。下面是Knuth編寫的TPK程序在Fortran中的樣子:

  1. C   THE TPK ALGORITHM, FORTRAN STYLE 
  2.     FUNF(T) = SQRTF(ABSF(T))+5.0*T**3 
  3.     DIMENSION A(11) 
  4. 1   FORMAT(6F12.4) 
  5.     READ 1, A 
  6.     DO 10 J = 1, 11 
  7.     I = 11 – J 
  8.     Y = FUNF(A(I+1)) 
  9.     IF (400.0-Y) 4, 8, 8 
  10. 4   PRINT 5, I 
  11. 5   FORMAT(I10, 10H TOO LARGE) 
  12.     GO TO 10 
  13. 8   PRINT 9, I, Y 
  14. 9   FORMAT(I10, F12.7) 
  15. 10  CONTINUE 
  16.     STOP 52525 

Fortran語法的細節(jié)我就不多說了,但你可以清楚地看到,該語言不包含塊。函數定義在一行上,而不是作為代碼塊,DO 循環(huán)使用一個行標簽來控制循環(huán)。當時的高級語言還沒有將復合語句分組成塊的概念,這些語言仍然依靠 goto 來控制程序流。

該代碼由Knuth使用1957年的Fortran版本編寫。1957年至1960年間,一種新的語言ALGOL被開發(fā)出來,它彌補了當時Fortran等語言和其他高級語言的許多缺陷。

Algol中的塊

Algol編程語言首次被描述是在1958年,盡管該語言最流行的版本是Algol 60。Algol的功能之一是將語句分組為復合語句(稱為塊)的能力,每個Algol程序都被視為一個塊,因為一個程序通常包含一個或多個語句(因此為復合語句)。Algol的開發(fā)者認識到,許多編程場景,如條件和循環(huán),需要將語句作為一個單元來考慮。

[[349125]]

Algol使用關鍵字 begin 和 end 標記了塊的開始和結束。一個區(qū)塊可以嵌套在另一個區(qū)塊里面,外區(qū)塊被認為是主導區(qū)塊,內區(qū)塊被認為是從屬區(qū)塊。例如,這里有一個Algol程序,可以嵌套塊:

  1. begin real a; 
  2.      a := 1; 
  3.      begin real a; 
  4.           a := 2; 
  5.           print(a) 
  6.      end
  7.      print(a) 
  8. end 

依次打印數字2和1。

這是在Algol的 if 語句中如何使用塊的示例:

  1. if x > -1 then 
  2.      begin 
  3.           if x ≠ 0 then 
  4.           x := 1/x 
  5.      end

這是Algol中 for 循環(huán)塊的示例:

  1. begin 
  2.      real a0, a1, a2, a3, z, p; 
  3.      integer n, i; 
  4.      read(a0, a1, a2, a3); 
  5.      read(n) 
  6.      for i := 1 step 1 until n do 
  7.           begin 
  8.                read(z); 
  9.                p := ((a3 × z + a2) × z + a1) × z + a0 
  10.                print(p) 
  11.           end i 
  12. end 

現在讓我們看看Algol中的TPK程序,看看與Fortran版本相比,塊結構對該程序有什么幫助:

  1. TPK begin integer i, real y; real a[0:10]; 
  2.      real procedure f(t); real  t; value t; 
  3.      f := sqrt(abs(t)) + 5 × t ↑ 3; 
  4.      for i := 0 step 1 until 10 do read(a[i]); 
  5.      for i := 10 step -1 until 0 do 
  6.           begin y := f(a[i]); 
  7.                if y > 400 then write(I, 'TOO LARGE'
  8.                else write(i, y); 
  9.           end 
  10. end TPK 

你應該能看出來,Algol版本的區(qū)塊結構讓它更像你我今天習慣閱讀的代碼。

轉到BCPL

塊結構語言的語法的下一個變化是1967年由劍橋大學的馬丁·理查茲(Martin Richards)開發(fā)的BCPL語言。在1960年至1967年Algol最初開發(fā)期間,編譯器和系統開發(fā)人員一直在尋找使用機器語言和匯編語言以外的語言開發(fā)系統應用程序(如操作系統)的方法。我之所以強調BCPL,是因為C是通過Ken Thompson開發(fā)的一種名為B的中間語言,作為BCPL的完善和改進而開發(fā)的。

Richards將BCPL開發(fā)為一種系統開發(fā)語言,它與匯編語言一樣高效,但具有更高級別的語法,從而使編碼更簡單、更高效。這意味著高級語言(如Algol)的許多特性需要以更有效的方式包含在BCPL等語言中。

實現這一效率的方法之一是將一個代碼塊的指定從單詞(begin 和 end)簡化為符號。對于復合語句和代碼塊,Richards選擇了符號 $( 代表開頭和 )$ 代表結尾,這些符號稱為節(jié)括號。

在BCPL中,如果 $( 和 )$ 與一個結構體一起使用,比如 if 語句或循環(huán),那么它們就是在限定一個復合語句,如果 $( 包括一些聲明,那么它們就是在給一個塊劃定界限。

例如,下面是BCPL中帶有復合語句的 if 語句的寫法:

  1. IF A < B 
  2.      $( LET T = A 
  3.           A := B; B := T 
  4.      $) 

這是BCPL塊的示例:

  1. GET "LIBHDR" 
  2. LET START() BE 
  3.      $( LET A, B, C, SUM = 1, 2, 3, 0 
  4.           SUM := A + B + C 
  5.           WRITES("Sum is "
  6.           WRITEN(SUM
  7.      $) 

在這里,開始部分方括號是開始一個塊,因為聲明緊跟著方括號。

(和) 在C中成為 { 和 }

大約在1968年或1969年,貝爾實驗室的肯-湯普森和丹尼斯-里奇開始嘗試使用系統編程語言開發(fā)操作系統。湯普森其實一開始就嘗試使用Fortran進行探索,但當他意識到這不可能時,很快就放棄了。他決定要對BCPL進行修改,使其成為一種更符合自己喜好的系統編程語言,于是開發(fā)了B。

B雖然更接近湯普森和里奇想要的系統開發(fā)語言,但仍然不能完全滿足他們的需求,所以里奇開始為新的B開發(fā)另一種語言NB。NB的生命力并不長,最終被一種全新的語言所取代,他們自然而然地稱之為C。如果你對C語言是如何從BCPL、B和NB發(fā)展而來的感興趣,我鼓勵你閱讀丹尼斯-里奇的《C語言的歷史》。

湯普森在B中固定并延續(xù)到NB然后在C中固定的許多事物之一就是縮寫運算符,這些都是為了讓擴展后的語言適應當時計算機的內存限制所必需的。例如,湯普森創(chuàng)造了復合賦值運算符( += 為例)以及增量(++)和減量(-)運算符,作為提高語言效率的方法。此舉是為了提高效率,導致BCPL的其他運算符被簡化——例如,$( 和 $) 被 { 和 } 取代。

我們今天的情況

在許多編程語言中,花括號已經被用作塊的主要符號,特別是那些最接近C風格的語言,包括c++、Java、c#和JavaScript。

更有趣的是,新的語言已經采用了大括號的使用,包括Go和Rust。事實上,Go要求對每個條件或循環(huán)構造都使用花括號,這是遵循編程專家的觀點,即即使語言不需要花括號,程序員也應該對每個可以使用花括號的構造使用花括號。

原文:https://medium.com/better-programming/a-brief-history-of-the-curly-brace-in-programming-5b3eacdc3f7a

 

作者:Michael McMillan

本文轉載自微信公眾號「前端全棧開發(fā)者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發(fā)者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發(fā)者
相關推薦

2018-01-26 14:41:04

編程Python開發(fā)

2019-03-18 15:53:11

BashLinux花括號

2010-03-11 10:34:22

Scala

2013-06-09 09:58:58

2010-07-21 16:10:25

計算機

2013-06-09 09:15:01

2023-01-13 12:37:43

Bashshell花括號

2017-08-24 09:20:07

大數據數據架構范式

2013-02-20 09:33:07

PythonWeb

2019-02-12 15:47:42

Bash尖括號命令

2025-01-03 08:34:40

2014-09-26 09:29:12

Python

2011-11-03 15:55:40

Windows Pho

2011-03-10 14:55:05

JavaScript

2017-06-21 20:54:40

電子技術計算機電子

2010-05-10 17:14:41

Unix系統

2009-06-19 00:05:00

J2EE開發(fā)框架POJO

2022-04-25 15:55:58

C 語言編程語言Java

2022-11-22 15:34:24

物聯網

2013-03-07 10:52:57

點贊
收藏

51CTO技術棧公眾號

一本到12不卡视频在线dvd| 亚洲欧美一区二区三区在线观看| 午夜激情成人网| 中文字幕成人av| 91中文字精品一区二区| 久久精品这里有| 三级电影一区| 亚洲国产精品成人av| 69**夜色精品国产69乱| 久久只有这里有精品| 国产精品视频一区二区三区| 午夜视频在线观看一区二区| 日韩欧美一区二区三区四区五区| a在线观看视频| 久久一区精品| 久久久久久国产免费| 纪美影视在线观看电视版使用方法| 日本99精品| 在线观看亚洲a| 日本熟妇人妻xxxx| 黄色片网站在线| 久久综合九色综合97婷婷女人| 91在线观看免费网站| 日本一区二区免费电影| 国产精品v一区二区三区| 亚洲精品720p| 人妻精品久久久久中文字幕69| 在线国产成人影院| 舔着乳尖日韩一区| 国产欧美精品aaaaaa片| 欧美jizz18hd性欧美| 久久一日本道色综合| 国产精品加勒比| 艳妇乳肉豪妇荡乳av无码福利 | 亚洲色图第三页| 国产伦精品一区二区三区精品| 蜜桃在线一区| 91精品国产综合久久福利软件 | 美女在线免费视频| 午夜看片在线免费| 国产精品网站导航| 日本电影一区二区三区| 深夜福利视频在线免费观看| 国产a久久麻豆| 91丝袜脚交足在线播放| 国产情侣激情自拍| 韩国av一区二区三区| 国产精品专区h在线观看| 久久久久亚洲视频| 日韩精品电影一区亚洲| 国产激情视频一区| 波多野结衣一区二区在线| 免费欧美在线| 国产97在线视频| 免费看一级视频| 亚洲男人影院| 日韩美女中文字幕| 中文字幕在线天堂| 日本亚洲天堂网| 国产精品入口免费视频一| 中国女人真人一级毛片| 另类中文字幕网| 成人精品久久一区二区三区| 97超碰人人草| 国产成人av资源| 国产欧美精品一区二区三区| 无码国产精品一区二区色情男同| 9l国产精品久久久久麻豆| 精品视频一区二区三区四区| 男操女在线观看| 中文天堂在线一区| 日韩第一页在线观看| 亚洲夜夜综合| 午夜亚洲福利老司机| 欧美日韩在线视频一区二区三区| 成人影院入口| 欧美日韩一区二区三区四区五区 | www.亚洲在线| 日本欧美色综合网站免费| 午夜视频在线免费观看| 亚洲精品伦理在线| 免费国产a级片| 日韩色淫视频| 精品福利在线导航| 亚洲精品乱码久久久久久久久久久久| 日韩国产一区二区三区| 欧美老肥婆性猛交视频| 亚洲天堂视频网站| 激情六月婷婷久久| 久久精品aaaaaa毛片| 91欧美在线视频| 亚洲最大成人综合| 毛片一区二区三区四区| 成人永久在线| 国产视频久久网| 天海翼在线视频| 亚洲视频播放| 亚洲尤物视频网| 日本福利片在线| 亚洲精品五月天| www.日日操| 96视频在线观看欧美| 日韩精品黄色网| 国产成人免费在线观看视频| 1024精品一区二区三区| 国产精品一区二区三| 免费观看的毛片| 国产精品福利影院| 亚洲欧洲日产国码无码久久99| 日韩国产91| 亚洲男人天堂久| 精品一区免费观看| 国产一区二区三区视频在线播放| 久久综合色一本| 欧洲一区二区三区| 91精品婷婷国产综合久久| 亚洲av无码一区二区二三区| 欧美激情亚洲| 国产综合福利在线| 国产一区精品| 色综合天天综合在线视频| 亚洲少妇中文字幕| 欧美久色视频| 成人午夜激情免费视频| 国产视频三级在线观看播放| 亚洲成人av资源| 亚欧精品在线视频| 国产精品成人a在线观看| 国产成人精品久久二区二区91| 四虎精品一区二区三区| 亚洲一卡二卡三卡四卡| 亚洲精品中文字幕乱码无线| 大片网站久久| 国产精品久久久久久中文字| 欧美少妇另类| 色综合久久88色综合天天 | 天堂成人娱乐在线视频免费播放网站 | 女人裸体性做爰全过| 久热综合在线亚洲精品| 女同一区二区| 欧美成人精品一区二区男人小说| 日韩成人激情视频| 国语对白永久免费| 26uuu国产日韩综合| 欧美韩国日本在线| 九色精品91| 国产成人在线视频| 国产精品一区二区三区四区色| 色妹子一区二区| 中文字幕 自拍| 青娱乐精品视频在线| 日本在线观看不卡| 精品久久在线| 久久久久北条麻妃免费看| 国产精品区在线观看| 亚洲精品午夜久久久| 中文字幕99页| 欧美一级专区| 亚洲永久一区二区三区在线| 日韩免费大片| 欧美激情精品久久久久| 亚洲精品久久久蜜桃动漫| 亚洲电影第三页| 国产精品jizz| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲精品美女久久7777777| 亚洲色图综合| 午夜精品三级视频福利| 欧美亚洲日本| 欧美日本视频在线| 青娱乐在线视频免费观看| 成人久久18免费网站麻豆 | 亚洲美女视频网站| 亚洲天堂网视频| 一个色妞综合视频在线观看| 国产又粗又长又爽| 日本不卡视频一二三区| 特级西西444| 天海翼亚洲一区二区三区| 国产美女扒开尿口久久久| av色综合久久天堂av色综合在| 精品国精品国产| 国产情侣免费视频| 一区二区三区**美女毛片| 少妇精品一区二区三区| 国内欧美视频一区二区| 欧美 国产 综合| 999国产精品| 激情视频在线观看一区二区三区| 欧美日韩五区| 欧美激情视频一区二区三区不卡| 六十路在线观看| 日韩一区二区电影| 色老头在线视频| 一区二区三区av电影 | 日韩资源在线| 91精品国产一区二区三区| 青青青国产在线| 伊人色综合久久天天| 最近中文字幕免费视频| 国产成人在线视频网址| www.色偷偷.com| 亚洲乱码久久| www.日本三级| 99久久这里只有精品| 欧美xxxx黑人又粗又长精品| 秋霞影院一区| 成人疯狂猛交xxx| 人人视频精品| 97碰碰碰免费色视频| 成人免费看片| 这里只有视频精品| 无码精品视频一区二区三区| 欧美一区二区三区爱爱| 中文字幕网址在线| 日韩欧美亚洲范冰冰与中字| www.av视频| 国产精品久久久久久久久果冻传媒 | 最近2019免费中文字幕视频三 | 日日噜噜噜夜夜爽亚洲精品| 日韩精品系列| 亚洲第一精品电影| 午夜精品无码一区二区三区| 精品婷婷伊人一区三区三| 中文字幕视频网| 亚洲sss视频在线视频| 欧美日韩亚洲国产另类| 亚洲欧美另类小说视频| 日本视频在线免费| 日本一区二区不卡视频| 亚洲精品国产91| 久久综合久久综合九色| 性欧美成人播放77777| av男人天堂一区| 国产+高潮+白浆+无码| 成人一区二区三区在线观看| 亚洲综合av在线播放| 免费观看在线综合| 超碰超碰在线观看| 美国欧美日韩国产在线播放| 狠狠躁狠狠躁视频专区| 日本不卡的三区四区五区| 91色国产在线| 麻豆精品视频在线观看| 一起操在线视频| 国产一区二区三区在线观看精品 | www.亚洲天堂网| 久久久成人网| 国产成人无码av在线播放dvd| 亚洲欧美日本国产专区一区| 白嫩少妇丰满一区二区| 久久在线精品| 香蕉视频禁止18| 国产一区二区三区综合| jjzz黄色片| 91视频.com| 中文字幕伦理片| 亚洲三级视频在线观看| 麻豆一区产品精品蜜桃的特点| 亚洲综合免费观看高清在线观看| 国产一级性生活| 欧美视频精品一区| 无码久久精品国产亚洲av影片| 欧美日韩激情在线| 精品人妻无码一区二区| 日韩精品福利在线| 网友自拍视频在线| 欧美人成在线视频| www.综合| 国产日韩欧美中文在线播放| 国产精选久久| 精品伊人久久大线蕉色首页| 欧美极品中文字幕| 国产精品久久成人免费观看| 亚洲成人直播| 日本久久久久久久久久久久| 国产乱人伦偷精品视频免下载 | 97视频在线观看视频免费视频| 巨茎人妖videos另类| 国产主播精品在线| 久9re热视频这里只有精品| 欧美日韩一区在线观看视频| 999久久久亚洲| 亚洲熟妇无码一区二区三区导航| 老牛影视一区二区三区| 天堂网成人在线| 久久亚洲免费视频| 午夜激情福利网| 色综合中文综合网| 99精品国产99久久久久久97| 日韩精品视频在线观看网址| 日韩伦理在线电影| 午夜伦理精品一区| 国产成人久久精品一区二区三区| 久草一区二区| 亚洲国产精品久久久天堂| 97xxxxx| 国产成人亚洲综合a∨猫咪| 国产精品天天干| 亚洲高清在线精品| 国产精品欧美激情在线| 亚洲欧美激情精品一区二区| 色噜噜狠狠狠综合欧洲色8| 国产91在线播放九色快色| av成人资源网| 黄色www在线观看| 青娱乐精品视频在线| 国产中文字幕一区二区| 亚洲激情校园春色| 亚洲天堂狠狠干| 伊人成人开心激情综合网| 51精品视频| 91av免费看| 999久久久免费精品国产| 成人亚洲视频在线观看| 99久久国产综合色|国产精品| tube国产麻豆| 欧美人狂配大交3d怪物一区| 国产在线色视频| 欧美在线欧美在线| 欧美三级电影在线| 欧美亚洲色图视频| 国产在线麻豆精品观看| 美国黄色特级片| 欧洲生活片亚洲生活在线观看| 亚洲三区在线播放| 97色伦亚洲国产| 久久国产精品免费精品3p| www.亚洲成人网| 丰满白嫩尤物一区二区| 久久久精品视频在线| 日韩亚洲欧美一区二区三区| 国产原创精品视频| 91久久在线视频| 亚洲一级淫片| 香蕉视频xxxx| 亚洲激情成人在线| 亚洲精品97久久中文字幕| 欧美尺度大的性做爰视频| 精品一区二区三区四区五区| 992tv成人免费观看| 狠狠色丁香婷婷综合| 婷婷伊人五月天| 日韩欧美123| 啦啦啦中文在线观看日本| 国产精品青青草| aa国产精品| 泷泽萝拉在线播放| 欧美在线观看视频一区二区| av中文资源在线| 成人黄色中文字幕| 综合久久久久| 50一60岁老妇女毛片| 欧美午夜精品久久久久久浪潮| 欧美大片aaa| 国产拍精品一二三| 欧美激情一区| 人妻丰满熟妇aⅴ无码| 色综合天天视频在线观看| avav免费在线观看| 亚洲xxxx18| 国产亚洲精品久久久久婷婷瑜伽| 一级性生活大片| 欧美久久久久久久久久| 人交獸av完整版在线观看| 国产亚洲精品美女久久久m| 亚洲综合欧美| 神马久久精品综合| 亚洲成人在线网| 欧美黄色网页| 97在线免费视频观看| 99久久综合色| 亚洲性在线观看| 久久久久国色av免费观看性色| 蜜臀av免费一区二区三区| 五月六月丁香婷婷| 欧美日韩黄色大片| 一本一道波多野毛片中文在线| 18成人在线| 丝袜亚洲另类欧美综合| 久久久久99精品成人片试看| 精品视频一区在线视频| 996久久国产精品线观看| 亚洲不卡中文字幕无码| 国产精品成人一区二区艾草 | 99久久精品国产网站| 久久久久久av无码免费看大片| 欧美大秀在线观看| 精品国产a一区二区三区v免费| 国产精品熟女一区二区不卡| 色婷婷综合久久久| 日韩三级免费| 视频在线99re| www.亚洲在线| 国产精品视频一二区| 日韩av123| 亚洲黄网站黄| 国产少妇在线观看| 中文字幕不卡在线视频极品| 加勒比视频一区|