自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

六年之后:回到底層編程

開(kāi)發(fā) 前端
我本來(lái)不想再花時(shí)間寫(xiě)一篇相關(guān)的文章。只是呢,最近發(fā)生的一些事情,或許和每個(gè) IT 人息息相關(guān)。我便想著,再花點(diǎn)時(shí)間思考一下:我們的行業(yè)以及行業(yè)背后的 IT 體系。

[[338208]]

一個(gè)月以前,我加入到 ThoughtWorks 已經(jīng)進(jìn)入了第 7 個(gè)年頭。我本來(lái)不想再花時(shí)間寫(xiě)一篇相關(guān)的文章。只是呢,最近發(fā)生的一些事情,或許和每個(gè) IT 人息息相關(guān)。我便想著,再花點(diǎn)時(shí)間思考一下:我們的行業(yè)以及行業(yè)背后的 IT 體系。

從某種程度上來(lái)說(shuō),我更可能是在彌補(bǔ)一塊重要的短板 —— 一來(lái),不是從事相關(guān)的領(lǐng)域;二來(lái),平時(shí)的開(kāi)發(fā)中真的用得少。

Web 開(kāi)發(fā)的核心:CRUD?

在我先前的文章《項(xiàng)目初期的最優(yōu)技術(shù)實(shí)踐》里,我把產(chǎn)品開(kāi)發(fā)的生命周期分為了:

  1. 技術(shù)準(zhǔn)備期
  2. 業(yè)務(wù)回補(bǔ)期
  3. 成長(zhǎng)優(yōu)化期

從技術(shù)維度來(lái)看待的話,我們會(huì)發(fā)現(xiàn)隨著時(shí)間的推移,整個(gè)項(xiàng)目對(duì)于人能力的要求會(huì)越來(lái)越低,直至大家都變成 CRUD、Copy/Paste 程序員。唯一經(jīng)常還被提及的難點(diǎn)就是:對(duì)于數(shù)據(jù)庫(kù)的各種優(yōu)化,又或者是對(duì)于遺留系統(tǒng)的遷移,又或者是對(duì)于某個(gè)開(kāi)源軟件的優(yōu)化。

所以啊,我們聽(tīng)過(guò)別人提及一個(gè)明確的大公司技術(shù)發(fā)展路線:成為一個(gè)技術(shù) + 業(yè)務(wù)專(zhuān)家?;剡^(guò)頭來(lái)看,事實(shí)也是如此 —— 在大部分的公司里,成為一個(gè)技術(shù)專(zhuān)家,是一個(gè)投入大收益低的事情。對(duì)于個(gè)人來(lái)說(shuō),不一定有足夠的回報(bào),不一定有用武之地,不一定能找到相匹配的工作;對(duì)于組織來(lái)說(shuō),難以創(chuàng)造更高的價(jià)值。

可是呢?對(duì)于多數(shù)人來(lái)說(shuō),他們真的還是技術(shù)專(zhuān)家嗎?如果不寫(xiě)代碼的話,他們只是一個(gè)技術(shù)決策者,而技術(shù)決策者和技術(shù)專(zhuān)家是兩種不同的發(fā)展路徑,只是他們做的某些事情是重疊的。

所以,在 CRUD 之外,我們的一個(gè)側(cè)重點(diǎn)還在于對(duì)基礎(chǔ)設(shè)施的優(yōu)化,而這些基礎(chǔ)設(shè)施大多數(shù)是開(kāi)源的。

開(kāi)源是否在扼殺技術(shù)創(chuàng)造力?

自由軟件和開(kāi)源軟件運(yùn)動(dòng),解放了我們?cè)谡麄€(gè)行業(yè)的生產(chǎn)力。過(guò)去,我們關(guān)注于如何實(shí)現(xiàn)某個(gè)功能,現(xiàn)在我們可以轉(zhuǎn)而關(guān)注于某個(gè)業(yè)務(wù)的具體實(shí)現(xiàn)。

不可避免地,在國(guó)內(nèi)的一些大公司里,受過(guò)訓(xùn)練的、編程能力極強(qiáng)的程序員,變成了一個(gè)會(huì)寫(xiě)代碼的業(yè)務(wù)專(zhuān)家。他們帶領(lǐng)著大量的平均水平一般的外包程序員,一起編寫(xiě)著業(yè)務(wù)價(jià)值巨大的低質(zhì)量代碼。

這一切看上去似乎非常合理,但是行業(yè)總體的創(chuàng)造力在下降。特別是,如果中國(guó)的 IT 公司在開(kāi)源領(lǐng)域的影響力過(guò)小時(shí),整個(gè)市場(chǎng)都將充斥在水平一般的程序員。

所以,這樣一來(lái),我們又不得不考慮一個(gè)問(wèn)題,開(kāi)源是否在不斷降低組織的技術(shù)創(chuàng)造力?對(duì)于個(gè)人來(lái)說(shuō),可以通過(guò)學(xué)習(xí)造輪子來(lái)提升,對(duì)于組織呢?

閱讀源碼的本質(zhì):解析字符串?

這一年里,受項(xiàng)目及公司大佬的熏陶,我開(kāi)始尋求以半自動(dòng)化的方式來(lái)理解代碼。這其中的一個(gè)過(guò)程產(chǎn)物就是 Coca,以及 Chapi。往往復(fù)復(fù)的練習(xí)之后,對(duì)于類(lèi)似工作的自動(dòng)化,有了更充足的把握。

在機(jī)器執(zhí)行一段代碼之前,我們要進(jìn)行一系列的前端轉(zhuǎn)換:詞法解析、語(yǔ)法解析、語(yǔ)義分析、生成中間代碼,隨后再交由編譯器后端處理,直至目標(biāo)程序。而對(duì)于人類(lèi)來(lái)說(shuō),我們理解的過(guò)程是相似的,稍有區(qū)別的是,生成的中間代碼是人類(lèi)語(yǔ)言。

而對(duì)于一個(gè)新的項(xiàng)目來(lái)說(shuō),我們要做的就是把理解匯制成架構(gòu)圖,又或者是它們之間的調(diào)用關(guān)系。于是,Coca 和 Chapi 就是用來(lái)做這部分工作的自動(dòng)化 —— 解析字符串。

所以,我一直想寫(xiě)一個(gè)工具,用于自動(dòng)化生成不同語(yǔ)言的代碼結(jié)構(gòu)。只是吧,一直缺乏一個(gè)明確地用戶場(chǎng)景,理論有了,技術(shù)有了,就差有人買(mǎi)單了。

可執(zhí)行的背后:二進(jìn)制?

起先,因?yàn)樵谕瓿芍暗囊粋€(gè) Todo 列表,我便開(kāi)始折騰寫(xiě)一個(gè) TLV 編碼、解碼器。TLV,即標(biāo)識(shí)域(Tag/Type)+ 長(zhǎng)度域(Length)+ 值域(Value),它是用在通信協(xié)議的一種編碼格式。

隨后,我便開(kāi)始嘗試解析 Java 生成的 class 文件,嗯,我發(fā)現(xiàn)做的事情和 TLV 解析,又或者是 Coca 做的語(yǔ)法解析有些類(lèi)似。Java .class 文件畢竟有固定的格式,所以反而比直接字符串處理更加簡(jiǎn)單。

緊接著,我繼續(xù)擴(kuò)展對(duì)于 Java 虛擬機(jī)的理解,嘗試模仿造一個(gè)簡(jiǎn)單的 JVM,理解整個(gè) Java 應(yīng)用是如何運(yùn)行起來(lái)的。

直到了,我發(fā)現(xiàn)有一個(gè)新的領(lǐng)域:Android 對(duì)于 Java 二進(jìn)制的各種騷操作:class 轉(zhuǎn)換為 dex,對(duì) dex 進(jìn)行優(yōu)化,dex 轉(zhuǎn) oat 二進(jìn)制……。

生活就是這么充滿樂(lè)趣。

Go、Rust 成為編程語(yǔ)言的新希望?

作為一個(gè)浪漫的程序員,我們無(wú)不時(shí)刻想著創(chuàng)建一個(gè)新的語(yǔ)言/DSL,以豐富我們的業(yè)余生活,調(diào)節(jié)一下 copy/paste 的乏味感。

在陸陸續(xù)續(xù)地學(xué)習(xí) Go 和 Rust,并用它們創(chuàng)造了一系列的工具。我對(duì)于創(chuàng)建領(lǐng)域特定語(yǔ)言的事情,又有了一定的感悟 —— 適合的時(shí)機(jī),適合的場(chǎng)景,便容易產(chǎn)生適合的語(yǔ)言。

特定的語(yǔ)言解決某一類(lèi)特定的問(wèn)題。當(dāng)然了,新的編程語(yǔ)言還需要有一定體量的公司才能支撐起來(lái)。不過(guò),領(lǐng)域特定語(yǔ)言就不需要了,你想干些什么,你就可以輕松上手了。

回到底層編程和基礎(chǔ)設(shè)施

所以,既然大部分 Web 開(kāi)發(fā)都是重復(fù)性 CRUD 的。那么回到底層編程、系統(tǒng)編程,偶爾造造系統(tǒng)軟件,也是相當(dāng)?shù)牟诲e(cuò)。特別是當(dāng)前,整個(gè)市場(chǎng)的大環(huán)境對(duì)于基礎(chǔ)設(shè)施的需求,一直在持續(xù)不斷地提升。

創(chuàng)造和學(xué)習(xí)是一種樂(lè)趣。

 

嗯,我打算業(yè)余生活寫(xiě)寫(xiě)底層代碼,進(jìn)行進(jìn)行系統(tǒng)編碼。

本文轉(zhuǎn)載自微信公眾號(hào)「phodal」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系phodal公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Phodal
相關(guān)推薦

2012-08-27 13:42:07

軟件測(cè)試

2013-03-08 10:02:17

開(kāi)發(fā)人員程序員

2023-05-17 00:13:48

2019-02-26 08:14:41

大數(shù)據(jù)HadoopSpark

2021-07-30 11:56:28

華為大數(shù)據(jù)

2018-12-04 15:12:07

NFV網(wǎng)絡(luò)功能虛擬化網(wǎng)絡(luò)

2024-08-30 10:02:06

事務(wù)HTTP編碼

2025-04-18 09:31:19

2015-11-05 11:45:35

物聯(lián)網(wǎng)復(fù)合增長(zhǎng)率

2018-05-10 14:22:49

大數(shù)據(jù)AI人工智能

2009-02-23 11:22:29

系統(tǒng)架構(gòu)師軟件開(kāi)發(fā)經(jīng)驗(yàn)

2013-12-24 16:06:04

移動(dòng)蘋(píng)果談判

2024-10-12 13:50:00

圖像合成AI數(shù)據(jù)

2024-11-04 15:42:49

2017-06-29 09:17:43

建行信息技術(shù)互聯(lián)網(wǎng)

2011-01-28 09:25:49

2015-11-03 10:20:08

2012-10-16 10:01:40

碼農(nóng)程序員編程

2025-03-03 00:07:00

Spring項(xiàng)目部署
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)