oeasy教您玩轉python - 006 - # hello world

 

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 而製作的系統
  • cunix 只能運行在當時的機器上

    • 沒有文檔
    • 沒有書籍
    • 甚至沒有人知道

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 年,KernighanRitchie出版了這本書

    • 不厚,很薄
    • 輕鬆的語言風格
    • 因爲 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 不是從來就有的
  • 來自於unixc
  • 雖然我們今天有各種先進的學習手段
  • 最早的高級語言學習是從最早的那張打字機用紙的手寫代碼起源的

    • 所以輸出用的是 print 打印
    • 最早輸出的是字符串是 "hello world"
    • 這就成了一個迷因
  • 等等!

    • 計算機裏面不都是二進制的 0 和 1 嗎
    • 哪裏來的hello 中的 h 之類的字符呢?🤔
  • 我們下次再說!👋
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章