oeasy教您玩轉(zhuǎn)python - 006 - # hello world
Hello World!
回憶上次內(nèi)容
python3
的程序是一個 5.3M 的可執(zhí)行文件objdump -d ~/python3 > python3.asm
python3
里面全都是 cpu 指令可以執(zhí)行的那種指令
我們可以把指令對應(yīng)的匯編找到
匯編語句是和當(dāng)前機(jī)器架構(gòu)的指令集相關(guān)的
uname -a
可以查詢指令集我們執(zhí)行的過程其實就
系統(tǒng)執(zhí)行
python3
這個可執(zhí)行文件給了
python3
一個參數(shù)hello.py
python3
對于hello.py
一句句的解釋執(zhí)行在顯示器輸出了
hello world
python3
執(zhí)行完畢把控制權(quán)交回給 shell
這就是我們執(zhí)行
hello world
的過程為什么我們學(xué)編程總是從
hello world
開始呢???
為啥總是Hello World

奇怪??
不論學(xué)習(xí)什么編程語言
總是從
Hello World
開始為什么呢???

起源
這一切都要從頭說起
目前操作系統(tǒng)的老祖宗
unix
和他對應(yīng)的編程語言
c
是一切的開始

1969 年,由于所在的
Multics
項目失敗無所事事的兩人
Kenneth Thompson
Dennis Ritchie
希望能在 PDP 機(jī)器上繼續(xù)玩一個游戲
這個游戲是
Multics
下的star travel
他們想要做一個操作系統(tǒng)
unix
為了制作操作系統(tǒng)
他們創(chuàng)造了
c
語言的編譯器當(dāng)時
c
是他們?yōu)榱碎_發(fā)unix
而制作的語言unix
是為了能玩star travel
而制作的系統(tǒng)c
和unix
只能運(yùn)行在當(dāng)時的機(jī)器上沒有文檔
沒有書籍
甚至沒有人知道
hello world!

與他們同在 bell 實驗室的
Brian Wilson Kernighan
開始寫 c 語言的類似于文檔說明書的東西
手稿

整體的函數(shù)叫做
main
函數(shù)里面輸出函數(shù)就叫做
printf
函數(shù)不管是
main
,還是printf
都有小括號
小括號
從那個時候就和函數(shù)相關(guān)為什么輸出字符要用
printf
來當(dāng)做函數(shù)名呢?
print 來歷
剛才那 1974 年的手稿??
寫在打字機(jī)用紙的上面
打字機(jī)就是當(dāng)時的顯示器
所以用
print
來表示輸出f
的意思是format
格式printf
是按格式輸出printf函數(shù)
后面有小括號
函數(shù)print
的參數(shù)
是"hello world"
雙引號
引起來意味著hello world
是字符串
輸出的內(nèi)容就是這個字符串
("hello world")
小括號
里面放的是函數(shù)
的參數(shù)
print("hello world")
中從
c語言
開始所有的編程語言第一個例子都是
hello world
是一種規(guī)矩或者文化
最早的入門教學(xué)程序都做一個
hello world
習(xí)慣成自然之后
成書

1978 年,
Kernighan
和Ritchie
出版了這本書不厚,很薄
輕松的語言風(fēng)格
因為
c
的目的就是讓人像玩一樣編程而不是記憶各種 cpu 匯編指令
蓬勃發(fā)展的計算機(jī)技術(shù)
使得
c
語言成為系統(tǒng)語言的老大python
的源代碼就是用純 c 編的linux
內(nèi)核 也是用純 c 編的所以
c
還是非常核心的啊雖說
python
是用純c
編寫的不過
python
一旦出現(xiàn)之后就可以簡化好多東西
內(nèi)置函數(shù)
我們可以看到游樂場上來就自帶一些函數(shù)和模塊

比如 dir() 這個函數(shù)
調(diào)用這個函數(shù)可以知道當(dāng)前游樂場載入了哪些模塊
比如
builtins
這個模塊這
builtins
里面又有些什么呢?
dir()
dir(__builtins__)

buildins
意思是在里面構(gòu)建好的exit()
print()
dir()
這里面有好多內(nèi)置的函數(shù)
包括我們熟悉的
如果我想要查詢更詳細(xì)的信息應(yīng)該如何呢?
help(__builtins__)
help(__builtins__)

我們可以查詢到
__builtins__
模塊的幫助文件返回的這些函數(shù)和子模塊都隸屬于
__builtins
這個模塊除了內(nèi)置的、這些不用引入就可以用的模塊之外
還可以引入外部模塊
導(dǎo)入模塊
import __hello__

這個模塊可以輸出經(jīng)典的一句話
還可以把新模塊導(dǎo)入到游樂場
注意!
導(dǎo)入
__hello__
模塊前后游樂場中的模塊增加了
總結(jié)
hello world
不是從來就有的來自于
unix
和c
雖然我們今天有各種先進(jìn)的學(xué)習(xí)手段
最早的高級語言學(xué)習(xí)是從最早的那張打字機(jī)用紙的手寫代碼起源的
所以輸出用的是
print
打印最早輸出的是字符串是
"hello world"
這就成了一個迷因
等等!
計算機(jī)里面不都是二進(jìn)制的 0 和 1 嗎
哪里來的
hello
中的h
之類的字符呢???我們下次再說!*