這裡記錄每週值得分享的科技內容,週五發佈。
本雜誌開源,歡迎投稿。另有《誰在招人》服務,發佈程序員招聘信息。合作請郵件聯繫([email protected])。
封面圖

正在舉行的第26屆舟山國際沙雕節,主題是"海上音樂城"。海灘上50多座沙雕,組成了一把吉他。(via)
Java 三十週年
上週是 Java 語言誕生三十週年。1995年5月23日,Sun 公司正式發佈了這種語言。

三十年了,大家覺得 Java 算不算老語言?
說實話,我一直以為,Java 跟 C++ 是同一時期的語言。但是實際上,Java 與 Python、JavaScript、PHP 同時期,屬於年富力強的年輕語言。

全世界的計算機語言有幾千種,Java 是特別、特別成功的那一類。從發佈的第一天起,它就很成功,一直保持到今天。
Java 的成功體現在兩方面。
(1)它無所不在。日常生活中,我們接觸到的軟件服務,尤其是企業級服務,後端的開發語言大部分都是 Java。
Java 在服務端是霸主地位,在桌面端也有廣泛應用,很多人用它寫桌面軟件。至於手機端,就更不用說了,安卓系統就基於 Java。
(2)它的工作崗位最多。
如果你問我,學習什麼編程語言,最容易找工作?
沒有其他前提的情況下,我會建議學習 Java,它的工作崗位最多,最容易找。
Python 語言雖然也很熱門,但是工作崗位往往要求高級程序員,中級和低級的崗位並不多。不像 Java,你只要具有一般水平,就可以去應聘,需要普通 Java 程序員的地方非常多。
國外有一條經驗法則,叫做林迪效應(Lindy effect),說的是一種事物的預期壽命與它已經存在的時間成正比。它已經存在多久,你可以預期,它還會存在這麼久。
那麼,Java 已經流行了30年,接下來30年,很可能還會繼續流行。
高斯林口述歷史
Java 語言的發明人是高斯林(James Gosling,1955-)。他在 Sun 公司時,發明了 Java。

2019年,美國的計算機歷史博物館採訪他,一連兩天,每天三個小時,後來製作了一個節目《高斯林口述歷史》(Oral History of James Gosling)。
網上有視頻 + 文字稿(PDF 上,下),他談了很多東西。下面,我摘錄跟 Java 有關的部分,非常有意思。
問:你什麼時候開始研究字節碼?
答:我在卡內基梅隆大學讀研究生時,開始從事字節碼方面的工作。
當時,我的導師要求我,將一些軟件從一種計算機移植到另一種計算機。我不知道他怎麼想的,移植軟件非常困難。
但是我發現,寫一個字節碼到彙編代碼的編譯器卻很容易,得到的代碼質量比原生的 C 編譯器還要好,能夠順利運行。
這件事讓我記住了,只要生成軟件的字節碼,然後為不同平臺寫一個字節碼到彙編語言的編譯器,就能讓軟件在不同架構的計算機上運行。
問:你怎麼在 Sun 公司開始搞 Java?
答:Sun 公司的產品是服務器,在消費電子領域錯過了很多機會。
我們當時有一群人,核心小組大概只有四個人,想探索消費電子領域。首席執行官同意了,給了我們一筆錢,那時是1991年。
我們決定做一個原型設備,項目名叫 Star7。這個設備相當古怪,有點像後來的 iPad。事實上,我們團隊後來有幾個人,確實繼續從事 iPad 的研發。

我們並不想做那種特定功能的設備,而是想要一個網絡設備,可以跟其他設備相互通信,並進行遠程控制。
我們設想的一個用途是,當時的電視和錄像機都有各自的遙控器,我們想用一個設備同時遙控多種其他設備,不僅能夠控制電視,還能控制燈光,並且可以互動。
當然,Star7 沒有成功。但是過了30年,人們竟然還在打造這樣的設備,感覺有點奇怪。
問:你怎麼想到要為這個設備,發明一種新的編程語言?
答:我們最初的目標不是發明一種編程語言,但是我們意識到,很多問題都源於編程工具。
我們想改進一下 C 和 C++,讓它們更適合我們的環境。我自願承擔了這項任務,因為我是小組裡唯一一個之前開發過編譯器的人。
隨著時間的推移,我改動的部分越來越不像 C++ 了,開始像一種獨立的語言。
問:這種語言最初命名為 Oak?
答:是的,它最初被命名為 Oak(橡樹)。這純粹是偷懶,我當時需要新建一個文件夾,存放代碼。我坐在辦公桌前,望著窗外,看到一棵橡樹,就為文件夾起了這個名字。
問:一開始,該語言就被設計為獨立於特定平臺?
答:是的。平臺獨立性是我們從一開始就考慮的事情之一。
這其實來自那些消費電子公司,他們是這種語言的使用者。他們非常不樂意受制於特定供應商,如果某個供應商有問題,他們希望可以更換供應商。CPU 也是如此,他們不希望受制於特定的 CPU。
問題就來了:如何才能讓他們輕鬆地從一種芯片切換到另一種呢?這不就是我在卡內基梅隆大學移植字節碼時遇到的問題嗎。
所以,新語言的核心特性就是字節碼,這樣才能輕鬆地針對不同的 CPU 指令集進行開發。
如果廠商要為某個芯片製造一些東西,比如下一代錄像機或電視機,即使處理器架構發生變化,也不用重寫大量代碼。現有的代碼可以有把握地在尚未發明的機器上運行。
問:Java 的口號"一次編寫,隨處運行"(Write once, run anywhere)是這樣來的嗎?
答:我完全不知道這句話是誰想出來的,它是公司的營銷用語。這句話說得很棒,但把事情過分簡化了。
問:Java 是什麼時候從機頂盒轉向互聯網?
答:應該是94年或95年,我們決定放棄機頂盒。因為我們發現,大型媒體公司內心深處,並不想要一款強大的新設備,而是想要控制用戶的眼球,多吸引廣告商。
我們決定轉向更廣闊的領域,讓新語言可以用在互聯網開發。
問:Java 是怎麼贏得軟件開發商的?
答:我們發現,Java 與平臺隔離的特性很有吸引力,它不關心你使用哪種瀏覽器,因此你可以把平臺問題與應用程序的問題隔離開來。
我們不再以消費者和嵌入式為中心了,而是思考這種語言怎麼幫助更廣大的軟件開發者。
如果你是一個軟件開發者,你不必考慮在誰的平臺上開發軟件,Sun、微軟的 Windows NT 或者惠普。如果你用 Java 開發,你可以把軟件賣給使用不同平臺的客戶。
問:你們發現 Oak 被另一家公司佔用後,才想到了 Java 這個名字?
答:是的。你要發佈一款產品,必須給它起個名字。Oak 已經被其他公司註冊成商標了,我們被迫選擇一個新名字。
那時,我們已經準備好發佈軟件了,就是缺一個名字。我們組織了一場命名會議,詢問大家的意見,列出一張大家感覺可以的單詞列表,然後發給律師,讓他們從上到下檢查有沒有商標問題,哪個單詞第一個通過檢查,我們就用那個。
問:Java 是第四個單詞?
答:是的。我個人最喜歡的是排名第三的 Lyric,但它沒通過檢查。排名第一的單詞,也就是項目組大多數人最喜歡的名字,是 Silk。我不喜歡這個詞,覺得它有點嚇人,讓我想起了蜘蛛。儘管喜歡它的人說,它象徵互聯網。我忘了排名第二是什麼詞,但是第四是 Java,我們就用了它。
科技動態
(1)內蒙古一煤礦,實現了100臺無人卡車的編組運行,操作人員僅僅6人。

注意,無人卡車的駕駛艙位置是電池。

(2)戴森公司創始人,發佈世界最薄吸塵器,機身僅高95毫米。

(3)杭州舉行人形機器人格鬥賽。

比賽機器人採用遙控操作。

(4)丹麥繼日本之後,成為全世界第二個國家,將退休年齡提高到70歲。
(5)阿聯酋成為全球首個國家,為全體公民和居民免費提供 ChatGPT Plus,該服務目前的月費為20美元。
文章
1、CAPTCHA 沒用了(英文)

作者在一家票務網站工作。他提出,各種識別機器人的驗證機制,要麼可以被 AI 繞過,要麼不適用於出票,難以找到有效的解決方案。
2、我的同步備份方案(英文)

作者的備份方案分成兩部分。(1)使用開源軟件 Syncthing 在多臺電腦之間同步目錄,(2)使用 TrueNAS 將本地內容同步到雲存儲。
3、Bash 腳本執行心跳測試的寫法(英文)

本文教你一種簡單的寫法,使用 Bash 腳本執行心跳測試(驗證服務器是否正常在線)。
4、虛擬主機加固指南(英文)

開通虛擬主機(VPS)後,應該如何設置,提高安全性,本文給出基本步驟。
5、自解釋的代碼(英文)

本文通過一個例子,演示應該怎麼寫,才能讓代碼清晰易懂,自己解釋自己。
工具
1、Defuddle

一個 JS 庫,從 HTML 網頁代碼提取內容,轉成文本。
Cloudflare Tunnel 的開源管理工具。

如果內網有多個 Docker 容器,通過 Cloudflare Tunnel 向外網開放,DockFlare 可以對它們進行統一管理,參見介紹文章。
3、f2

一個命令行的文件批量改名工具,功能較強,參見介紹文章。
4、TypeID
唯一身份識別碼 UUIDv7 的改進版,加上了類型前綴。

基於 Astro 框架的文檔網站生成工具。
6、ntfy.sh

消息推送工具,向手機和桌面電腦推送消息,可以自搭建,也可以使用官方服務器,參見介紹文章。

開源的電子郵件營銷平臺,幫助企業和個人管理電子郵件營銷活動,可以發送新聞通訊、促銷郵件、消息。(@aaPanel 投稿)

開源服務器,代理 HTTP/HTTPS 和 WebSocket 流量,內置 Web 管理界面。(@suxin2017 投稿)

字體轉 SVG 的工具網站,可以用來製作文字 Logo。(@JiuRanYa 投稿)
10、DualPiP

Chrome 插件,提供增強版的畫中畫播放器,支持主流視頻網站一鍵彈出。(@ymlluo 投稿)
AI 相關

將文本轉為 Mermaid 格式的可視化圖表,省去手動編寫 Mermaid 代碼。(@liujuntao123 投稿)

一個與代碼庫對話的 Web 應用,可以掃描本地文件夾,對其建立本地索引,從而用自然語言庫對話。(@oldjs 投稿)
3、Ainee

AI 開源筆記工具,將音頻、文字、文件以及 YouTube 視頻等轉換為筆記。(@luyu0279 投稿)

開源的 AI 運維助手,對線上系統提供 AI管家,與真人協同處理運維問題。(@csunny 投稿)
資源

AI 提煉的每一期週刊重點內容,代碼開源。(@ronething 投稿)
2、日本語文章解析器

日語句子分析的網站。(@cokice 投稿)
Computex 的奇特 PC
上週閉幕的臺北 Computex 2025 電腦展,出現了很多奇特的 PC(來源1,2)。
1、招財進寶

你以為這是金元寶嗎?錯了它是一臺電腦。

它的背後就是機箱,金元寶上方的流水裝置就是循環的液冷。

2、變形金剛

這個變形金剛也是一臺電腦,頭部會旋轉,眼睛會變色,還能播放語音。
它胸部發亮的地方,就是電源按鈕。

腿部就是放置顯卡的地方。

3、水族館

這個水族館是真正的海景房電腦,裡面有水母和金魚的飾品。

風扇的 RGB 燈效,做得像燈籠一樣,晚上亮起來肯定很漂亮。

4、黃貂魚

這臺電腦模仿了黃貂魚,但是又好像一架飛機。

它的兩側前翼,可以用胸前的齒輪,調節移動。

5、咖啡機

這個咖啡機機箱是概念產品,應該不能用來衝咖啡。
6、跑車

這臺跑車機箱,顯卡插在車尾,引擎蓋下面是主板和散熱風扇。

7、黑神話悟空

黑神話主題機箱,外面包了一層"牛王鎧甲"。

8、河馬

河馬機箱走可愛路線,下面的水盆好像是標配。
9、茅草屋

茅草屋機箱無敵了,上面真的覆蓋了一層稻草,放在家裡可以做盆景了。
言論
1、
我從來不喜歡內容收費,我的所有寫作和研究成果都免費發佈,這帶給我巨大的價值。
現在,我想嘗試一種不一樣的訂閱:你付錢給我,我會少給你發送一些東西。
我會推出一份僅限贊助者的月度郵件,裡面都是我精心選擇的重點內容,你就不用每天看我的大量更新了。
-- Simon Willison,著名開發者
2、
AI 是比真人更好的老師,但是以後的學校還會需要真人老師,他們的主要職責是看管孩子。
-- 路易斯·馮·安 (Luis von Ahn) ,Duolingo 的首席執行官
3、
把 AI 當作工具,而不是柺杖,那些2019年時被認為有價值的基礎工程技能,值得你繼續投資。
4、
最有害的建議之一就是不要重新發明輪子。
這種建議會導致一種抑制好奇心和探索的氛圍。現代生活的很多重要發明,都來自那些不聽從這個建議的人們。
重新發明輪子就是一種學習,並且學習過程中,你可能會做出更好的版本。
-- 《重新發明輪子》
往年回顧
技術封建主義(#303)
訓練材料用完之日(#253)
英國的名校簽證,伯克利的計算機教育(#203)
機器翻譯是對譯者的侮辱嗎?(#153)
(完)












