Hello World!
回憶上次內容
-
python3
的程序是一個 5.3M 的可執行文件python3
裏面全都是 cpu 指令- 可以執行的那種指令
-
我們可以把指令對應的彙編找到
objdump -d ~/python3 > python3.asm
-
彙編語句是和當前機器架構的指令集相關的
uname -a
可以查詢指令集
-
我們執行的過程其實就
- 系統執行
python3
這個可執行文件 - 給了
python3
一個參數hello.py
python3
對於hello.py
一句句的解釋執行- 在顯示器輸出了
hello world
python3
執行完畢- 把控制權交回給 shell
- 系統執行
- 這就是我們執行
hello world
的過程 - 爲什麼我們學編程總是從
hello world
開始呢?🤔
爲啥總是Hello World
奇怪🧐
- 不論學習什麼編程語言
- 總是從
Hello World
開始 - 爲什麼呢?🤔
正在上傳…重新上傳取消
起源
-
這一切都要從頭說起
- 目前操作系統的老祖宗
unix
- 和他對應的編程語言
c
- 是一切的開始
- 目前操作系統的老祖宗
- 1969 年,由於所在的
Multics
項目失敗 -
無所事事的兩人
Kenneth Thompson
Dennis Ritchie
-
希望能在 PDP 機器上繼續玩一個遊戲
- 這個遊戲是
Multics
下的star travel
- 他們想要做一個操作系統
unix
- 這個遊戲是
-
爲了製作操作系統
- 他們創造了
c
語言的編譯器
- 他們創造了
-
當時
c
是他們爲了開發unix
而製作的語言unix
是爲了能玩star travel
而製作的系統
-
c
和unix
只能運行在當時的機器上- 沒有文檔
- 沒有書籍
- 甚至沒有人知道
hello world!
-
與他們同在 bell 實驗室的
Brian Wilson Kernighan
- 開始寫 c 語言的類似於文檔說明書的東西
手稿
-
整體的函數叫做
main
函數- 裏面輸出函數就叫做
printf
函數
- 裏面輸出函數就叫做
-
不管是
main
,還是printf
都有小括號
小括號
從那個時候就和函數相關
- 爲什麼輸出字符要用
printf
來當做函數名呢?
print 來歷
-
剛纔那 1974 年的手稿😱
- 寫在打字機用紙的上面
- 打字機就是當時的顯示器
- 所以用
print
來表示輸出 f
的意思是format
格式printf
是按格式輸出
-
printf函數
後面有小括號
小括號
裏面放的是函數
的參數
-
print("hello world")
中函數print
的參數
是"hello world"
雙引號
引起來意味着hello world
是字符串
- 輸出的內容就是這個字符串
("hello world")
-
從
c語言
開始- 最早的入門教學程序都做一個
hello world
- 習慣成自然之後
- 所有的編程語言第一個例子都是
hello world
- 是一種規矩或者文化
- 最早的入門教學程序都做一個
成書
-
1978 年,
Kernighan
和Ritchie
出版了這本書- 不厚,很薄
- 輕鬆的語言風格
- 因爲
c
的目的就是讓人像玩一樣編程 - 而不是記憶各種 cpu 彙編指令
-
蓬勃發展的計算機技術
- 使得
c
語言成爲系統語言的老大 python
的源代碼就是用純 c 編的linux
內核 也是用純 c 編的- 所以
c
還是非常核心的啊
- 使得
-
雖說
python
是用純c
編寫的- 不過
python
一旦出現之後就可以簡化好多東西
- 不過
內置函數
- 我們可以看到遊樂場上來就自帶一些函數和模塊
- 比如 dir() 這個函數
- 調用這個函數可以知道當前遊樂場載入了哪些模塊
- 比如
builtins
這個模塊 - 這
builtins
裏面又有些什麼呢?
dir()
dir(__builtins__)
-
buildins
意思是在裏面構建好的- 這裏面有好多內置的函數
-
包括我們熟悉的
- exit()
- print()
- dir()
- 如果我想要查詢更詳細的信息應該如何呢?
help(__builtins__)
help(__builtins__)
- 我們可以查詢到
__builtins__
模塊的幫助文件 - 返回的這些函數和子模塊都隸屬於
__builtins
這個模塊 -
除了內置的、這些不用引入就可以用的模塊之外
- 還可以引入外部模塊
導入模塊
import __hello__
- 這個模塊可以輸出經典的一句話
- 還可以把新模塊導入到遊樂場
-
注意!
- 導入
__hello__
模塊前後遊樂場中的模塊增加了
- 導入
總結
hello world
不是從來就有的- 來自於
unix
和c
- 雖然我們今天有各種先進的學習手段
-
最早的高級語言學習是從最早的那張打字機用紙的手寫代碼起源的
- 所以輸出用的是
print
打印 - 最早輸出的是字符串是
"hello world"
- 這就成了一個迷因
- 所以輸出用的是
-
等等!
- 計算機裏面不都是二進制的 0 和 1 嗎
- 哪裏來的
hello
中的h
之類的字符呢?🤔
- 我們下次再說!👋