快轉到主要內容

do-while, while, for

·476 字·1 分鐘·
討論 軟體 批兔

while 跟 for 能做到的事一樣嗎?
剛接觸程式的人心中多半曾蒙生此問,然後大概花幾分鐘想一下,就會發現一樣。
這想法跟了我都快十年了,昨天才驚覺其中竟有蹊蹺。

while 不能使用區域變數做為判斷條件。
即是說,若非借助 if 或 break 或雙層,while 迴圈執行有限次之前後,必有狀態改變。

回過頭看,這才是我們需要 for 語法的原因吧,我們需要一個執行完不留雲彩的操作。

讓我來腦補一個故事:
很久很久以前,在人類還會寫組合語言的時代──流程控制全靠 conditional branch。
其順執行方向跳便是 if not (unless),逆向跳則是 do-while。
於是 do-while 以人盡皆用之姿,躋身程式語言必備語法。
但馬上大家就發現,迴圈一定要執行一次很不方便,所以有了前測的 while;
隨著語言變得高階,變數的範圍開始受到重視,由此產生了 for;
再來是平行處理和 iterator pattern 的加持,而催生各種流派的 range loop。

真是越長大越覺得,程式語言就是人造語言的一種。
它的演化不會通往無極,而是會走向高熵。


※ 發信站: 批踢踢兔(ptt2.cc), 來自: xxx.xxx.xxx.xxx (臺灣)
Re: 好有道理,有符合 for 這個字的本意~
Re: 嗯,況且在自然語言中,for 的這個 range 甚至不需要是可列舉地。