VOOZH about

URL: https://read01.com/Lde4k6B.html

⇱ 黃金十年,致穿越而來的 Web 開發者 - 壹讀


Sunday, Apr 12, 2026

黃金十年,致穿越而來的 Web 開發者

2017/11/13 來源:開源中國

協作翻譯

原文:How I would explain a decade of web development to a time traveler from 2007

連結:https://medium.freecodecamp.org/web-development-explained-to-a-time-traveler-from-ten-years-ago-600fad81170d

譯者:Tocy, 聖潔之子, 無若, rever4433, 冰糖馨兒

👁 Image
...

你好,朋友們!我希望你喜歡我們的這個新世界。它跟2007年的時候有很大不同。快速提示:如果你有抵押貸款,還是回去把它取消了吧。相信我。

我很高興你還對計算機感興趣!現在,我們有了很多不同於10年前的新情況,這些情況帶來了新的挑戰。我們的手腕和臉上都帶著電腦,把它們放在口袋裡,把它們放在冰箱和水壺裡。

汽車自己駕駛可能比人類更好,我們教會程序去參與各種比賽,在這些方面,它比人類更出色——不過喝酒比賽除外。

(Web) App

在你踏入這個時空之前,你可能已經看到了 iPhone 的發布。蘋果是最大和最富有的科技公司,這主要歸功於 iPhone 及其作業系統 iOS 。 谷歌有個與其競爭的手機作業系統叫做 Android ,微軟則試圖用 Windows Phone 來分一杯羹,但沒有成功。

👁 Image
...

我們開始把應用程式叫做 app,而一些網站則自稱為 web app。 2008年,谷歌發布了一款名為 「Chrome」的新瀏覽器。九年後,它成為了最流行的上網方式。

Chrome 團隊在 JavaScript 方面投入了大量工作,代碼逐月改善。Web app 是使用大量 JavaScript 編寫的,它們類似你的時間的桌面界面。

許多公司也投資於 JavaScript 使其變得更好--它現在支持類和模塊。我們使用可以編譯為 JavaScript 的語言,如 TypeScript (來自微軟,現在很酷)或 Flow。

近來我們寫了很多 JavaScript 代碼,因為沒有人再支持 Flash 。我們甚至在伺服器上運行 JavaScript ,而不是 Perl,使用名為 Node 的技術。當然,實際上沒有聽起來這麼容易。

👁 Image
...

還記得 Swing、 SWT 和 wxWidget 之類嗎?我們不得不在瀏覽器世界重造它們。幾個新的 UI 編程模型出現了,它們主要集中在組件上。

我們必須找到一種方法來設計、構建和測試 app ,同時保持它們的響應能力(我們用這個術語來描述一個在手機上看起來不像垃圾的網站),我們也需要使其保持苗條 —— 不是每個人都有快速的網絡連接,但每個人都有一個瀏覽器在口袋裡。

為了協助所有這些,現在有組件框架。這個術語很含糊,因為它包含了谷歌的 Angular 、臉書的 React 和社區的 Vue 之類。但這是我們擁有的最好的術語。

順便說一下,我不確定你是否記得2007年以來的 Facebook(臉書)。那個時候它在美國愈發壯大,現在它變得更大了,擁有超過十億的用戶,它也是世界上最大的代碼庫之一。

Facebook 開發團隊編寫了許多優秀的代碼並發布於網上。他們有自己的 F8 會議。大多數大公司都有自己的會議。

CSS 也不得不進化,因為新的 app 需要更加複雜的布局。我們不再使用帶有圖像的表格,幀也不見了。取而代之,我們已經創建了新的標準,比如 CSS Float、 Flexbox 和 CSS Grid。

人們必須對這些標準進行疊代,並且他們已經建立了庫來使事情看起來一致,比如 Bootstrap、 Foundation 等等。類似於 JavaScript , 我們已經創建了編譯成 CSS 的語言。它們彌補了 CSS 遺漏的一些東西,比如變量或模塊。這仍然很難。

迷茫不可怕

不要因為迷惑而感到害怕,事實上我們都有點迷惑,但是迷惑不是什麼大不了的事。如今世界上有那麼多開發人員,科技公司也正在變得越來越成功。

我們使用「創業」這個詞來描述那些成長迅速但是不知道接下來該怎麼辦的公司。但是即使是這個詞現在也變得老舊了。

數據

相比以前,現在有更多的程式設計師,更多的程序和更多的設備。我們現在有了更多的數據。計算機必須變得強大到足以處理所有的這些數據,我們已經開發了幾種技術來把這些數據轉化為深刻的認識。

首先,我們創建了一個叫做數據科學的領域。數據科學的目的是從數據中學習和提取信息。

例如,一家名為 Waze 的初創公司讓用戶在他們自己的手機上安裝 App 來追蹤他們駕駛軌跡,因為有很多人安裝 APP ,Waze 有了很多關於汽車行蹤的數據。他們用這些數據開發了一個程序來了解哪裡有交通堵塞。

現在,當你打開你手機上 Waze ,你可以在地圖上看到實時的交通擁堵情況然後選擇另一條路。

Waze 已經被谷歌收購的。這在創業公司里是經常發生的。

👁 Image
...

數據科學領域有三大挑戰——數據存儲、了解數據和利用數據。如今我們在這三個方向上都有所進步。讓我們分別看看這些挑戰如今的現狀。

存儲

現在我們需要存儲更多的信息,然後找出哪個部分是重要的。那麼我們就需要發明出新的資料庫。而像 MySQL 和 PostgreSQL 不能滿足我們存儲 TB 級數據的要求(我們叫它大數據)。

大型的網際網路公司通常都面臨著這些挑戰,因此他們處於開發這些技術的前沿。大多數時候,技術首先在內部使用,然後是開源。

有一場我們稱之為 NoSQL 的運動。這類新的資料庫使用了傳統關係資料庫的一些約定,並將它們進行了轉換。

比如 Hadoop,它處理數據如何存儲在許多硬計算機上。它定義了一種處理稱為 MapReduce 的數據的方法(靈感來自於 Google 的一篇論文——它是大公司近來撰寫的優秀科學論文之一)。

之後,又有了 Cassandra ,它的數據不以表形式存儲,而是一組鍵和列,這些鍵和列可以存儲在不同的計算機上。它還確保這些電腦中的任何一台都能在不造成數據丟失的情況下離線。

再後來,我們有了 MongoDB,一款易於安裝和使用原型應用程式的資料庫。在2017年,我們對待科技的態度和十年前對待流行明星的方式一樣 —— 我們狂熱地捍衛其中的一些人,並強烈地憎恨他人。MongoDB —— 就像樂隊中的「五分錢樂隊」那樣 ——屬於後者。

學習

👁 Image
...

在「理解數據」陣營中,大部分焦點都放在了機器學習領域。現在每個數據科學家的工具箱中都有許多新技術,從樸素分類法到深度學習。他們主要是編寫 Python ,並與開發人員一起工作,使得機器學習幾乎無處不在。

例如,在數據科學家的幫助下,很多 Web 應用程式都使用 A/B 測試。這種技術通過應用程式的兩個稍微不同的版本的方式提供給不同但類似的用戶組。它用於查看哪個版本可以更快地達到我們想要的目標,無論是通過註冊還是購買。

很多像 Airbnb(發音為air-bee-en-bee)、Uber 和 Netflix 這樣的大型公司都在同時運行數百次 A/B 測試,以確保用戶獲得最佳體驗。Netflix 是一款應用程式,通過它用戶可以在所有設備上觀看電視節目。

微服務和雲

像 Netflix 這樣的公司是龐大的。因為他們服務於很多人,他們必須確保他們隨時都在運轉。這意味著他們必須很好地管理他們的電腦。他們可以在需要時添加數百台新伺服器

這在傳統數據中心很難實現,所以 Netflix 中優秀的工程師使用了虛擬機。還記得2006年推出的亞馬遜網絡服務嗎? 當時,他們開始提供了知名的 EC2(Elastic Cloud Compute),以幫助人們在亞馬遜的數據中心獲得虛擬計算機。

今天,他們擁有近80個類似的服務,都是為了幫助企業快速成長而建立的。我們曾有一個時髦的名字 - 「雲」 - 但是這個術語和 NoSQL 一樣難以定義。

👁 Image
...

Google 和 Microsoft 提供了他們自己的雲,用於為雲服務開拓市場。同時在聰明者之間相互競爭之時,諸多類型的瘋狂創新開始出現了。

首先,我們開始更多地像代碼一樣考量我們的基礎設施。以前,你必須購買新的伺服器,插入鍵盤並安裝相關設施。

現在我們使用像 Puppet、Chef 和 Ansible 這樣的配置管理工具來自動化我們的伺服器。你可以使用像 Ruby 這樣的語言編寫實際代碼,並根據配置設置伺服器。如果需要更改,你只要編輯配置,然後更新伺服器即可。不需要 SSH 。

然後我們開始尋找更多的容器。因為可以在 EC2 上配置機器,所以我們需要在與生產相似的環境中進行開發。

我們從虛擬機開始,使用像 Vagrant 這樣的工具來自動化它們。但是,我們最終得到了 Linux 上的容器, Docker 。我們找到了一種在我們的 MacBook 上運行 Linux 而不運行整個虛擬機的方式,共享一些作業系統相關操作的方法。

使用 Docker ,我們可以創建與我們在生產中運行的系統完全匹配的系統描述。開發人員調用這些描述映像,並開始在稱為容器的虛擬實例中運行他們的應用程式。

👁 Image
...

然後,雲供應商意識到這一點,讓我們直接在雲上運行我們的容器。他們給了我們像 Marathon 和 Kubernetes 這樣的工具,稱為編配框架(orchestration)。這些框架可以讓開發人員在容器中運行應用程式,而不用擔心可伸縮性、容錯、監控和發現。伺服器變成一次性的,我們不再需要給他們聰明的名字了。

這也允許開發人員構建小型應用程式(稱為服務或微服務),然後獨立運行它們。由於這些微服務具有很少的外部依賴性,因此我們開始研究使用新的程式語言,如 Go(它是為了使用可並發性而創建的)和 Java。是的,Java 仍在,並且會變得更好。

還有像 Scala 和 Clojure 等語言讓我們可以使用 Java 虛擬機和所有相關的庫。像 AirBnB 這樣的網站使用幾種程式語言和資料庫運行數百種微服務。

由於這些微服務,我們不得不重新審視我們的一些編程模型。我們現在擁有更多,更小的應用程式,這些是我們必須協調的。

因此,有像 Apache Kafka、Google PubSub 和 RabbitMQ 這樣的工具可以幫助愛閒聊的電腦更好的溝通。Kafka 是由 LinkedIn 創建的,一個社交網絡,在此人們可以宣傳自己的職業生涯。它後來變成了開源的。

我們構建軟體的方式

編配框架引入的額外複雜性大部分與大型團隊相關的。記住 - 我們現在比以前有更多的人在構建軟體,每個程式設計師都想馬上發布他們的代碼。如果你的公司有數百位開發人員在網站上一起工作,則需要確保他們不必協同其版本。

所以我們以小團隊來構建軟體。團隊通常擁有一些 DevOps 技巧,並且團隊成員對如何部署軟體的操作有足夠的了解。他們使用某種形式的敏捷過程,其中他們在短時間內持續發布軟體。和 Spotify (這是一個新的音樂流媒體服務)一樣,有些組織也會嘗試其他形式的層次結構,如 Squads、Chapters、Tribes 和Guilds(小分隊、社團、部落和工會)。

所有這些項目(以及之前提到的許多其他項目)都是由一群人公開開發的。有時他們是由一家公司贊助的。大部分情況下,開發工作都在一個名為 GitHub 的網站上。在那裡,人們可以探討軟體,公開地構建,通過回復表情符號來表示讚賞。表情符號是我們現在用來表達情感的特殊字符,比如點讚。 :-)

現在還有更多的社區,他們都在嘗試用開放的方式來構建軟體。例如,名為 EmberJS 的 Web 框架使用社區驅動的6周發布周期。其他程式語言和流行的開源軟體(例如 GitLab 和 Microsoft 的代碼編輯器 Visual Studio Code )使用每月發布周期來確保它們不會完全發生重大更改。這些軟體包在每個發行版中都有一點改動。

哦,編輯器之戰還在。我們在運行在瀏覽器中顯示文本欄位的桌面應用程式中編寫我們的代碼。這非常棒。它表現相當不錯(每個版本都會變得更好),而且可以自定義。它甚至有一些支持 VIM 模式!

👁 Image
...

會議是按照每個主題舉行的。他們是很有趣的,並且他們是無處不在的。參與一個 - 你會看到各種各樣的人!結交一些朋友,逛逛,獲得靈感,說出來。也許可以參與一個 algorave 節目 - 他們對音樂、圖像和代碼所做的事情是驚人的。

還有更多的!

除此之外,還有更多的人、軟體和創新。我希望你仍對電腦技術感到興奮 - 你有諸多理由這麼做。

讓我們去找一個俱樂部伴侶,我會告訴你關於比特幣的事情。另外,美國現在有一個新總統……

如果你喜歡這篇文章,請給我點讚,讓更多的人看到它。謝謝!

您可能感興趣
免責聲明:本文內容來源于開源中國,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM