[oeasy]python00134_[趣味拓展]python起源_歷史_Guido人生_ABC編程語言_Tanenbaum
python 歷史
回憶上次內(nèi)容
顏文字是kaomoji
把字符變成一種圖畫的方法
一層疊一層
很多好玩兒的kaomoji是一層層堆疊起來的meme
虛擬的表情也在真實(shí)世界有巨大影響
一步步地影響
字符編碼就是這樣一步步發(fā)展過來的
python也是 一步步 發(fā)展到今天的
python究竟是
怎么
發(fā)展的呢???
緣起
python 這門語言怎么來的呢?
還要從從荷蘭說起
在荷蘭首都 阿姆斯特丹
荷蘭城市中的丹(dam)特別多
阿姆斯特丹就是 阿姆斯特河上 大壩的意思
因?yàn)檎麄€(gè)荷蘭都是圍海造田出來的
而且城市以各方面開放的態(tài)度著稱
畢竟世界馬車夫
飛翔的荷蘭人
童年
Guido van Rossum
Guido 很像 聽起來 Guide
把 e 變成了 o
常見的名字
意大利、德國、荷蘭都有應(yīng)該翻譯成圭多
土生土長荷蘭人
這也是他github中id的來源
van 的意思是 from
從羅森來的圭多
有點(diǎn) 燕人張飛 這個(gè)意思
羅森在哪里呢?
羅森
從日德蘭半島南邊Gelderland and Overijssel地區(qū)來的
1920年有本科幻小說叫做
R.U.R.
Rossum's Universal Robots
羅素姆萬能機(jī)器人
劇名中「robota」一詞
源于捷克語
意思是「苦力」
也是robots一詞的來源
家庭
母親是教師、父親是職員
也喜歡荷蘭文學(xué)
不喜歡歷史
理科里面不喜歡化學(xué)
因?yàn)橛幸淮蠖驯砀褚?/p>
朋友很少
一個(gè)弟弟
一個(gè)妹妹
下面有
認(rèn)為自己是一個(gè) nerd
喜歡數(shù)學(xué)物理課程
喜歡那種從基本原則推導(dǎo)的東西
電子
觀鳥
周末喜歡和同好在一起
大學(xué)
大學(xué)去的是阿姆斯特丹大學(xué)
荷蘭最好的大學(xué)
學(xué)習(xí)數(shù)學(xué)
可以用 Algol68 操作 mainframe
當(dāng)時(shí) Algol68 和 fortran 也有語言之爭
不過數(shù)學(xué)系只是研究算算數(shù)
沒有啥意思
阿姆斯特丹還有個(gè)自由大學(xué)
那里的計(jì)算機(jī)更發(fā)達(dá)
那里研究操作系統(tǒng)、數(shù)據(jù)庫、編程語言
當(dāng)時(shí)阿姆斯特丹有三個(gè)地方可以用計(jì)算機(jī)
兩個(gè)大學(xué)和一個(gè)數(shù)學(xué)中心
當(dāng)時(shí)湊錢買了一個(gè)計(jì)算機(jī)
放在自由大學(xué)
因?yàn)槟抢镉?Tanenbaum
Tanenbaum
Tanenbaum 是那邊的大玩家
研發(fā)了一個(gè) minix
啟發(fā)了后來的 linus 開發(fā)出 linux
兩個(gè)學(xué)校可以互信學(xué)分
Guido 迷上了 Tanenbaum 的課程
研究中心
畢業(yè)之后,Guido 就加入了本地的計(jì)算中心
阿姆斯特丹的 cwi
CWI 是 荷蘭語簡稱
Centrum Wiskunde & Informatica
英語叫
National Research Institute for Mathematics and Computer Science
國家數(shù)學(xué)和計(jì)算機(jī)研究中心
那里研究些什么呢?
前輩
算法!
Edsger Dijkstra
Dijkstra算法的作者
在 CWI 的研究員期間
開發(fā)了同名的最短路徑算法
發(fā)展了堆棧概念
互斥、死鎖、信號(hào)量
Dijkstra和 Hoare、Dahl 合著的《結(jié)構(gòu)化程序設(shè)計(jì)》很厲害
他主張不用 goto
能和這些先進(jìn)的人學(xué)習(xí)實(shí)在是很棒
Guido 負(fù)責(zé)一些應(yīng)用程序的開發(fā)
寫了 BSD 支持通配符的一個(gè)算法
ABC 編程
首先是開發(fā)一種 ABC 編程語言
這個(gè)語言的名字可真好記啊
小朋友都能記住
沒錯(cuò)就是讓小朋友能記住
能讓小白能輕松學(xué)習(xí)的一種語言
ABC 也是交互性的
可以一邊打一邊互動(dòng)的
就像 python 游樂場那種 REPL 環(huán)境
當(dāng)然那個(gè)時(shí)代是 1980 年左右
根本沒有 python
當(dāng)時(shí)主要的問題是
科學(xué)家不會(huì)編程
搞不懂溢出、數(shù)字存儲(chǔ)模式
總之就是無法用計(jì)算機(jī)真正解決問題
結(jié)構(gòu)化的高級的交互式的語言
不用自己分配內(nèi)存
替代 basic、pascal、awk 的 一種語言
不是一種難以入手的系統(tǒng)編程語言
就是給初學(xué)者玩著學(xué)習(xí)用的、
Guido加入了 ABC 的開發(fā)
肩負(fù)了主要的開發(fā)任務(wù)
和組里面人對于 ABC 進(jìn)行各種爭論
ABC語言具體啥樣呢?
語言細(xì)節(jié)
ABC 語言
使用冒號(hào)和縮進(jìn)來表示程序塊
行尾沒有分號(hào)
for 和 if 結(jié)構(gòu)中也沒有括號(hào)()
賦值采用的是 PUT
而不是更常見的等號(hào)
這些改動(dòng)讓 ABC 程序讀起來像一段文字
盡管已經(jīng)具備了良好的可讀性和易用性
關(guān)鍵字都用大寫字母
ABC 語言最終沒有流行起來
那這個(gè)語言這么好記 、這么方便
為什么就不流行呢???
起名的學(xué)問
太過注重初學(xué)者了
但是沒有上升的階梯
只能搞一些小玩鬧
不能做真正的工作
上手快但是沒有后續(xù)的成就感
而且這個(gè)名字起的就是傻瓜化
純傻瓜化
你學(xué)什么編程語言呢?
我學(xué)的是 ABC
聽起來就很幼稚 兒童玩具嗎
人家那邊的名字叫 pascal 帕斯卡
數(shù)學(xué)家、哲學(xué)家,多有文化
這邊叫 ABC
你會(huì) ABC 么?
會(huì)啊
我還會(huì)唱字母歌呢!
不能做復(fù)雜工作還有個(gè)原因
就連簡單的讀文件都沒辦法做 ??
可擴(kuò)展性
缺乏可擴(kuò)展性
需要結(jié)構(gòu)性的改變
新加一個(gè)功能
整個(gè)新東西就得傷筋動(dòng)骨
拓展性非常重要
說白了就是人人都可以自己編寫插件
編寫模版
人人都能玩
打一場人民戰(zhàn)爭
就可以把這個(gè)軟件的功能和豐富性極大提高
這樣用眾包的方式
都能添磚加瓦
除此之外,還有個(gè)最重要的原因
失敗原因
沒有錢了
后來這個(gè)項(xiàng)目部就黃了么
主角
Guido仍然在這個(gè) cwi 里面工作
1989 年閑的沒事
想寫一個(gè)腳本解釋器
就像一個(gè) shell
csh bash zsh 那種腳本解釋器
不為了錢就為了好玩
他對于雞尾酒會(huì)和 acm 論文不感興趣
想做一些實(shí)際的東西
他已經(jīng)從 abc 語言吸取了很多經(jīng)驗(yàn)
詞法分析對他來說已經(jīng)沒有什么難度了
難的是起名字
這回的新語言叫什么名字呢?
python
guido 當(dāng)時(shí)是在看短劇腳本
短劇是英國劇團(tuán) monty python‘s flying circus 的
成天看 入迷了
起名就叫 python
還有點(diǎn)神秘感
短劇
這個(gè)劇今天還能搜到
1970 年代開始
逆向思維發(fā)散思維的短視頻
當(dāng)時(shí)還是傳統(tǒng)電視劇的天下
這個(gè)英國劇團(tuán)影響力很大
就像是戲劇屆的 Beatles
回憶過程
guido 本人回憶
當(dāng)時(shí)需要一個(gè)簡短、獨(dú)特、還有點(diǎn)神秘的名字
正在讀劇本
然后就這么定了
logo 演化
最早的 logo 是他的弟弟 Just von Rossum 做的
后來出現(xiàn)了兩只大蟒蛇的樣子
語言細(xì)節(jié)
1991 年 2 月 發(fā)布了 0.9.0
最早是一種解釋型的語言
程序是在解釋器里面運(yùn)行的
當(dāng)時(shí)的 slogan
python 是 c 與系統(tǒng)腳本語言之間的橋梁
python bridges the cap between c and shell programming
發(fā)布在 operating system amoeba 系統(tǒng)上
組織風(fēng)格
兼職的開始
Guido 業(yè)余做的這個(gè) python
當(dāng)時(shí)還沒有網(wǎng)頁服務(wù)器
有一個(gè)郵件列表
Guido 并不是孤軍奮戰(zhàn)
Guido 是仁慈的獨(dú)裁者
社區(qū)里面的人提各種各樣的建議
社區(qū)氛圍是有趣的
Tim Peter 等很厲害的人逐漸加入
解決了很多實(shí)際問題
Python 社區(qū)是自組織的
第一次的線下聚會(huì)不是由 Guido 發(fā)起的
第二、三次也不是
慢慢形成了 PyCon 的氛圍
總結(jié)
這次回顧了一下歷史
python 是如何從無到有的
看到 Guido 長期的堅(jiān)持和努力
再復(fù)雜的編程也是從定義變量開始的
python 如何定義變量呢?
python 是
如何定義變量的呢?
我們下次再說!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython