200年前的「電腦之父」巴貝奇(下):「數字魔女」寫下史上第一道電腦程式

200年前的「電腦之父」巴貝奇(下):「數字魔女」寫下史上第一道電腦程式
Photo Credit: Alfred Edward Chalon @ public domain

我們想讓你知道的是

註釋內容中,艾達也詳細寫下了該如何用分析機計算白努利數的「方法」。而這「方法」一說看似平淡,但是卻是一個人類科技史的重要里程碑。艾達所寫下的內容,事實上正是史上第一道「電腦程式」的誕生。

文:Satoman

成為劍橋大學的「盧卡斯教授」

但是巴貝奇並未一蹶不振,他可能也早就料想到計畫無法如此順利。設計差分機和他其他的研究成果讓他成為了當時英國學界的巨頭之一,在1828,劍橋大學因此決定授予他「盧卡斯教授」的榮譽職位。

盧卡斯教授是以二世紀前的大學贊助人亨利.盧卡斯命名,唯有當下最傑出且擁有獨到思想的數理學者才會被授予此榮譽職。巴貝奇為第11任盧卡斯教授,而在他先後則是有牛頓、狄拉克(Paul Dirac)、霍金(Stephen Hawking)等偉人曾擔任此職。

之後他和長子赫歇爾(以摯友的名字命名)參與了布魯內爾大西部鐵路的建設工作。為了幫助布魯內爾向股東爭取鐵道加寬以減少震動的計畫,巴貝奇和兒子設計了一個能紀錄列車速度和震動等數據的儀器,並藉此說服了股東們增資支援布魯內爾。而這項能記錄行車細節的裝置,也就是我們現今稱為黑盒子的紀錄器原型。

在製造差分機的過程中,巴貝奇也經常在宅邸中舉辦茶會或晚宴,他邀請了當時英國——甚至是歐洲各國的名人來參觀他的差分機模型。

發表物競天擇的達爾文(Charles Darwin)、桂冠詩人丁尼生(Alfred,Lord Tennyson)、小說家狄更斯(Charles Dickens)、音樂家孟德爾頌(Felix Mendelssohn)、拿破崙的死敵威靈頓公爵(Duke of Wellington)、義大利統一三傑加富爾(Camillo Benso, Count of Cavour)、電報的發明者惠斯通(Charles Wheatstone)……學界、政界、商界、藝文界——各種不同領域的偉人不約而同為差分機的精巧而讚嘆,這也正是巴貝奇為了未來的研發工作所準備的後盾。

但是就在來往如梭的紳士女士中,巴貝奇注意到一雙前所未有的碧藍雙眼正瞪視著他的模型。在其他人的眼中,那神奇的機械帶來的是驚豔與訝異的新奇感。但是那雙碧眼不同,它們的主人看透了機械本身,和巴貝奇同樣目睹了理想中的事物——「未來」。

與擁有超齡智慧的「聰慧少女」

碧眼的主人回過身,熱切的向機械的主人巴貝奇自我介紹,並開始詢問關於差分機運作的細節問題。那是一名年僅18歲,但卻擁有超齡智慧的「聰慧少女」。艾達.拜倫(Ada Byron),少女如此介紹自己,並說她是在家庭教師的引薦下來到此處參觀。

巴貝奇對於拜倫這個姓氏並不陌生——拜倫勳爵(Lord Byron),那名浪漫多情又滿腔熱血的詩人。他將生命最後的餘光奉獻給了獨立戰爭中的希臘,以灼熱的筆桿和自身的死亡喚起了歐陸諸國對於土耳其統治下希臘的同情。

在巴貝奇眼前正是那名詩人的女兒,更是理性與感性交融而誕生的結晶。講到詩人拜倫,相信不少人都有在歷史課本看過以下這張畫像:

Lord_Byron_in_Albanian_Dress_by_Phillips
Photo Credit: Thomas Phillips @ public domain
拜倫像

這是拜倫仍在英國時穿上希臘傳統服飾,以表明對希臘獨力的支持。之後他也身體力行前往當地參戰並資助物資,最終死於希臘的詩人也讓歐洲諸國重視到希臘反抗土耳其的獨立戰爭。

他的文采與對於民族解放的熱情當然是不容質疑的,但是他的感情生活卻是一團雜亂,用我們現今的說法就是標準的「渣男」。拜倫天生擁有一張俊秀的面孔與豪放的個性,再加上其絢爛的文采,又擁有「拳擊皇帝」的稱號與貴族的身分……嗯,看來一個優秀的渣男該有的屬性他都具備了。

拜倫與「平行四邊形的公主」的戀情

拜倫在結婚前的風流韻事就不少,其中又以他與同父異母的妹妹亂倫生女的傳聞最為著名。但是拜倫在尋找結婚對象時,卻傾心於一名和自己個性截然相反的女性。安妮.伊莎貝拉(Anne Isabella),通常被稱為安娜貝拉,拜倫則是稱她為「平行四邊形的公主」。

安娜貝拉是一名富有的貴族之女,個性沉穩冷靜又飽讀詩書。她的父母注意到安娜貝拉自小就擁有過人的智慧,便從劍橋大學聘請了一流的家教,教導她文學、法律、物理、數學、天文等知識。

也因此,在優秀環境中成長學習的安娜貝拉擁有不遜於劍橋大學畢業生的學識。(當時劍橋大學仍未開放女性入學。)在諸多學習的科目中,安娜貝爾最喜愛的是數學方面的知識,經常沉迷於算式與圖表之中,這也是拜倫給予她「平行四邊形的公主」綽號的原因。

拜倫個性熱情又灑脫;安娜貝拉則是冷靜又沉著。男方以筆桿寫下一篇又一篇的詩篇;女方則是終日與複雜艱困的數學算式為伍。不管怎麼看,雙方都是處於天平兩端般的南轅北轍。但是拜倫卻像是著了魔般的追求安娜貝拉,而安娜貝拉對於拜倫的追求感到尷尬又難以拒絕。

「他是最壞的好人。」安娜貝拉如此評價拜倫,她理解也厭惡拜倫荒唐的生活習慣,但是拜倫本身的善性又讓她難以忽視。最終,安娜貝拉認為她有責任將這個男人導向正軌,便同意了拜倫半強迫式的求婚。

但事與願違,安娜貝拉在婚後還是無法繫住拜倫狂野的內心。拜倫的債務問題、陰晴不定的個性、頻繁的外遇讓夫妻倆婚後不久就相敬如冰,就算是兩人的女兒艾達出生也無法挽回這悲劇的婚姻關係。

在婚後一年、艾達才剛滿月不久,拜倫就與安娜貝拉分居,隨後拜倫便前往了歐陸,義無反顧的投入了那熱血澎湃的革命解放事業。身為一名失敗透頂的丈夫與父親,拜倫釋出的最後善意則是從未爭取過艾達的監護權。(以當時的社會風氣,父方取得監護權的可能性比女方高很多。)

Annabella_Byron_(1792-1860)
Photo Credit: Creator:Charles Hayter @ public domain
「平行四邊形的公主」安妮.伊莎貝拉(Anne Isabella)

「數字魔女」艾達


猜你喜歡


挖掘雲端開放架構優勢!Amazon EKS高可用性叢集快速部署容器

挖掘雲端開放架構優勢!Amazon EKS高可用性叢集快速部署容器

我們想讓你知道的是

企業如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署,減輕人力負擔,提升專案服務運作效率?

所謂現代化智慧 IT,所有工程師最希望的境界,莫過於只要輕鬆點幾下設定,系統就會自動跑起來,管理者再也不用隨時待命在機台旁邊,從此工作悠哉又快樂!儘管這樣情境還沒到來,但隨著敏捷式開發的流行,除了 DevOps 人員,有越來越多開發者將 CI/CD 概念融入到工作流程當中,例如從 build code、執行 unit test、到部署應用程式。

透過 AWS 增加雲端技能 在組織發揮影響力

上述種種反覆步驟自動化執行,也就能提昇服務品質、主動通知開發人員以減輕人力負擔,讓專案服務能持續運作。

其中,GitLab 是執行 CI/CD 常用的工具之一,也是開發者使用程式碼儲存庫的地方。為了讓 GitLab Runner 在雲端快速實踐 CI/CD,《AWS 開發者系列》透過影片分享,如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署。

以下節錄工作坊影音內容,幫助開發者快速理解如何運用 Amazon EKS 的高可用性且安全的叢集,將修補、部署節點、更新等關鍵任務,全部做到自動化設定。同時影片也會示範 Amazon EKS 搭配 GitLab 如何展開自動部署,幫助工程團隊實踐 CI/CD 價值。

Amazon EKS 對容器管理輕鬆簡單、維運省時省力

容器化服務越來越興盛,當容器(Container)越來越多,在複雜的微服務(Microservice)系統環境之下,運維團隊的管理成本可能相對會增加不少,為了有效調度容器部署, 導入Kubernetes 無疑是近年企業熱門的話題之一。

建構 Kubernetes Cluster 流主要可區分兩大塊,一是安排容器調度的Control Plane、另一則是容器運行時需要用到的 Worker Node。

Control Plane 裡面涵蓋有儲存狀態的 ETCD、CoController manager 、Scheduler 的調度管理、甚至是操作時進行互動的 APIServer,若是自己創建 的 Kubernetes Cluster ,需要自己安裝這些元件,後續仍需要對 Control Plane 進行相關管理、維護、升級工作。為了減少上述 Components 的繁複維護,在透過 AWS EKS 代管的 Kubernete Control Plane 部可以獲得以下三大好處。

Amazon EKS 一鍵式部署,展現三大優勢

第一,Amazon EKS代管的 Control Plane實踐了跨AZ的高可用部署,使用者不需要擔心單一節點故障的風險。

第二,Amazon EKS 支持至少四個 Kubernetes版本,持續跟進每季 CNCF 的發佈,同時 EKS 也完全符合上游 CNCF 規範。

第三,部署 Amazon EKS 之後,可直接使用 AWS 平台上現成的服務工具,在安全性管理、網路設定方面,可以做到無縫整合。

最後 AWS 台灣解決方案架構師也提到,若想在容器環境進行 CI/CD 及應用程式的管理,可以進一步透過 IaC 整合部署 Amazon EKS 叢集,透過使用 Console、把 EKS 變成 Cloudformation 的模板、使用 AWS 所開發出來的 eksctl.io、或指令是採用 AWS CDK 可以讓開發者用自身熟悉的語言,在 AWS 平台整合 CI/CD 工具進行維運及部署 EKS。

打造第一個在 AWS 上的應用程式

了解 Amazon EKS 整合 GitLab ,獲得三面向價值

對開發者而言,想把 Amazon EKS 整合到 CI/CD 工具之一的 GitLab 平台上,可以看到那些實際的優勢?

在 DevOps 開發者示範工作坊當中,GitLab 資深解決方案架構師指出,GitLab 使用到 Kubernetes 技術,主要有三種搭配方法,包含 GitLab Server、GitLab Runner、以及創建 Deployment Environment。

本次示範教學會主要聚焦在 GitLab Runner 如何採取 Auto-scaled 方式進行 Build、Test、Package Apps;以及在 Deployment Environment 運用 Kubernetes 技術,做到 Auto Deploy、Review App。

正因為 Amazon EKS 能夠在 DevOps 過程提供所需要的彈性計算資源,幫助開發者在 GitLab 平台上面獲得以下三個層次的優勢:

  • 在 GitLab 內建的部署工作流程當中,自動生成整套 CI/CD 最佳實踐腳本。
  • Review App 過程,從 Merge Request 中可直接訪問應用程式 /App 的 UI 介面,並且根據 Git branch 名稱、專案名稱,自動生成 Review App 的 URL,以及在 Merge 前的最後防線進行 Approval 檢查。
  • 加速 CI/CD 流水線,GitLab Runner 運行時候還可藉由 Amazon EKS Cluster 進行 Auto-scaled 的支援。

Amazon EKS 整合 GitLab ,需要兩大流程

影片最後,GitLab 資深解決方案架構師示範如何把 Amazon EKS 整合至 GitLab 執行 Auto Deploy,主要可分為兩大區塊流程,第一部分聚焦在 Amazon EKS cluster 的設置,第二部分則執行 Auto Deploy 設置。

第一塊可拆分為四個階段,首先教學怎麼創建 EC2 節點的 EKS cluster,第二階段示範把 EKS Cluster 連接到開發者的 GitLab Instance、Group 或 Project,下一步則使用 Cluster Management Project Template 創建一個 Cluster Management Project,以及最後一階段透過 Cluster Management Project 自帶的 Helm Chart,安裝在 Cluster 所需要的內建 App。

第二塊執行 Auto Deploy 設置,針對需要部署的 App 創建一個 GitLab Project,接著再把 gitlab-ci.yml 添加到 Project,並從 Web IDE 選擇及導入 Auto Deploy 的 CI 模版,讓 GitLab 自動生成最佳實踐的整套流水線。

幫助開發者更了解 Amazon EKS 整合 GitLab 的 QA 系列

Q:使用 Amazon EKS 之後,如何更有效率或優化資源去配置 Worker Node 的機器數量,以及如何有效空管開發維運的成本?

A:Kubernetes 除了本身有 HPA(Horizontal Pod Autoscaling)可根據使用程度自動調整資源流量,另外也能延伸使用 AWS Auto Scaling 方案,針對可擴展資源去設定自動擴展管理。另外在成本管控,雖然 Amazon EKS 會收取額外管理費用,但可透過 AWS 平台的 Calculato r計算每個 EKS 的價格,你會發現自動化部署及管理的費用,相對工程師人力的成本更加便宜。

Q:越來越多客戶考慮把現有 Application 變成容器部署,大多是爲了加快部署的效率,那麼變成容器模式之後,對 CI/CD 的工作流程有什麽影響嗎?

A:運用容器技術最直接的效果,可以讓應用程式的環境更一致化,例如 testing 環節、stage production,讓容器避開一些差異問題。至於 CD 部分要 delivery 一些 usage 不太一樣的時候,容器會幫忙做配置,所以 CI/CD 對容器的效益是相輔相成的。

Q: 客戶在開發流程漸漸會把 Infrastructure 變成代碼或文檔,是不是可以把程式碼跟現有的應用程式的 CI/CD 流水線整合在一起,達到一套完整的 CI/CD 部署流程?

A:觀察目前市場作法,主要分成兩個階段去做整體部署。如果規模比較小的團隊,會把 Infrastructure 代碼跟 App 代碼分開,在管理上會比較靈活;如果企業規模比較大,會有另外一個 Infrastructure 團隊來控制部署事情,這種情况之下,APP 的項目會生成一個 APP package,主要做到 delivery 這個階段爲止。而 Infrastructure 的項目會指定把需要版本的文檔,部署到他們的 Kubernetes Cluster。

填寫表單 找到適合的快速上雲服務與工具!


猜你喜歡