- 給孩子的計(jì)算思維書:圖形化編程及數(shù)學(xué)素養(yǎng)課(基礎(chǔ)篇)
- 昍爸
- 996字
- 2023-06-29 17:06:31
1.2 編程語(yǔ)言的發(fā)展
自從1946年第一臺(tái)通用電子計(jì)算機(jī)問世,人類與計(jì)算機(jī)交流的編程語(yǔ)言經(jīng)過了機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言3個(gè)階段的發(fā)展。隨著時(shí)代發(fā)展,編程語(yǔ)言對(duì)人類越來(lái)越友好。
第一代程序設(shè)計(jì)語(yǔ)言被稱為機(jī)器語(yǔ)言。用這種語(yǔ)言寫出來(lái)的程序是一串0和1組成的數(shù)字,機(jī)器直接就能理解,但對(duì)于人來(lái)說就太難理解了。下面是計(jì)算1+2+3+…+100的機(jī)器語(yǔ)言代碼(冒號(hào)左邊是內(nèi)存地址,可忽略),看上去像不像天書?
400526: 01010101 400527: 01001000 10001001 11100101 40052a: 01001000 10000011 11101100 00010000 40052e: 11000111 01000101 11111000 00000000 00000000 00000000 00000000 400535: 11000111 01000101 11111100 00000000 00000000 00000000 00000000 40053c: 11101011 00001010 40053e: 10001011 01000101 11111100 400541: 00000001 01000101 11111000 400544: 10000011 01000101 11111100 00000001 400548: 10000011 01111101 11111100 01100100 40054c: 01111110 11110000 40054e: 10001011 01000101 11111000 400551: 10001001 11000110 400553: 10111111 11110100 00000101 01000000 00000000 400558: 10111000 00000000 00000000 00000000 00000000 40055d: 11101000 10011110 11111110 11111111 11111111 400562: 10010000 400563: 11001001 400564: 11000011
事實(shí)上,上面代碼左邊的內(nèi)存地址是無(wú)須存儲(chǔ)的,而且代碼也不會(huì)一行一行清晰排列。計(jì)算機(jī)里的代碼是下面這樣的。
01010101 01001000 10001001 11100101 01001000 10000011 11101100 00010000 11000111 01000101 11111000 00000000 00000000 00000000 00000000 11000111 01000101 11111100 00000000 00000000 00000000 00000000 11101011 00001010 10001011 01000101 11111100 00000001 01000101 11111000 10000011 01000101 11111100 00000001 10000011 01111101 11111100 01100100 01111110 11110000 10001011 01000101 11111000 10001001 11000110 10111111 11110100 00000101 01000000 00000000 10111000 00000000 00000000 00000000 00000000 11101000 10011110 11111110 11111111 11111111 10010000 11001001 11000011
世界上第一臺(tái)通用電子計(jì)算機(jī)ENIAC使用的是最原始的穿孔卡片,這種卡片所使用的語(yǔ)言就是機(jī)器語(yǔ)言。

穿孔卡片示例圖
歷史上最大的穿孔卡片程序是20世紀(jì)50年代的SAGE防空系統(tǒng),這個(gè)程序使用了62 500張穿孔卡片(大約5MB的數(shù)據(jù))。
匯編語(yǔ)言被稱為第二代程序設(shè)計(jì)語(yǔ)言,它使用一組幫助記憶的符號(hào)(助記符)來(lái)表示每條命令。下頁(yè)圖是計(jì)算1+2+3+…+100的匯編代碼(最左側(cè)的數(shù)字表示內(nèi)存地址,<>內(nèi)是注解)。相比于看上去像天書的機(jī)器代碼,匯編代碼友好了不少,但門檻依然比較高。
400526: push %rbp 400527: mov %rsp, %rbp 40052a: sub $0x10, %rsp 40052e: movl $0x0, -0x8(%rbp) 400535: movl $0x1, -0x4(%rbp) 40053c: jmp 400548 <main+0x22> 40053e: mov -0x4(%rbp), %eax 400541: add %eax, -0x8(%rbp) 400544: addl $0x1, -0x4(%rbp) 400548: cmpl $0x64, -0x4(%rbp) 40054c: jle 40053e <main+0x18> 40054e: mov -0x8(%rbp), %eax 400551: mov %eax, %esi 400553: mov $0x4005f4, %edi 400558: mov $0x0, %eax 40055d: callq 400400 <printf@plt> 400562: nop 400563: leaveq 400564: retq
再后來(lái),就有了被稱為第三代程序設(shè)計(jì)語(yǔ)言的高級(jí)語(yǔ)言,如C語(yǔ)言和Python語(yǔ)言。同樣是計(jì)算1+2+3+…+100的值,用高級(jí)語(yǔ)言寫出來(lái)的程序看上去就友好多了。
#include <stdio.h> void main() { int sum=0; for (int i=1; i <=100; i++) sum=sum + i; printf ("1+2+3+…+100=%d\n", sum); }
用C語(yǔ)言寫出的計(jì)算1+2+3+…+100的程序
n=0 for x in range (101): n=x+n
用Python寫出的計(jì)算1+2+3+…+100的程序
最后,我們來(lái)看本書的主角——Scratch。下面這段程序是用Scratch編寫的計(jì)算1+2+3+…+100的程序,看上去是不是很親切?可以說,以Scratch為代表的圖形化編程工具對(duì)大家已經(jīng)非常友好了,搭積木搭得溜的小朋友很快就能上手。

當(dāng)然,計(jì)算機(jī)是無(wú)法直接執(zhí)行高級(jí)語(yǔ)言編寫的程序的。用高級(jí)語(yǔ)言編寫的程序首先要經(jīng)過編譯或解釋成計(jì)算機(jī)能理解的機(jī)器語(yǔ)言后,計(jì)算機(jī)才能一條條地執(zhí)行指令。在這里,編譯器或解釋器就充當(dāng)了人和機(jī)器之間的翻譯,把人易于理解的高級(jí)語(yǔ)言程序翻譯成機(jī)器易于理解的機(jī)器程序。
- 有趣得讓人睡不著的數(shù)學(xué)
- 上帝與新物理學(xué)
- 物理世界奇遇記
- 張朝陽(yáng)的物理課(第二卷)
- 古代數(shù)學(xué)與算學(xué)
- 視覺之旅:神奇的化學(xué)元素(彩色典藏版)
- 物理世界奇遇記(少年讀經(jīng)典·第一輯)
- 數(shù)學(xué)原來(lái)這么好玩:因數(shù)和因式
- 代數(shù)有意思
- 瘋狂STEM·化學(xué)(全5冊(cè))
- 我們?cè)谒木S空間可以做什么:不用計(jì)算的18堂數(shù)學(xué)課
- 數(shù)學(xué)的故事
- 無(wú)處不在的化學(xué)
- 我的第一本趣味數(shù)學(xué)書(第2版)
- 數(shù)學(xué)那些事:偉大的問題與非凡的人