軟件技術(shù)及相關(guān)問題的變化是發(fā)明創(chuàng)新、公司產(chǎn)品運(yùn)作、社會(huì)市場(chǎng)需求消費(fèi)、人才資金循環(huán)、政策法律等等整體運(yùn)行中的一個(gè)小部分,其發(fā)展過程將受諸多因素的影響,但其自身也是有一定規(guī)律的。作為行業(yè)中具體干活的人,面對(duì)這個(gè)技術(shù)日新月異的行業(yè),琢磨一下行業(yè)未來 30 年的某些事情。
30 年后的事情不用考慮了,就算想清楚也沒用了。
30 年內(nèi)的軟件技術(shù)及相關(guān)問題分為變化不大的和變化可能比較大的。變化不大的學(xué)會(huì)了用熟了會(huì)終身收益,變化大的要及時(shí)把握參與深度。
一、變化不大的
1. Intel x86 的指令集
原因很簡(jiǎn)單,如果這些指令集發(fā)生重大變化,那這行業(yè)開發(fā)、積累的軟件都不能運(yùn)行了,變化成本太高。
即使從32位發(fā)展到64位、128位,指令集的兼容是可以預(yù)見的。
2. 操作系統(tǒng) - 啟動(dòng)過程
系統(tǒng)加電復(fù)位、硬件自檢、操作系統(tǒng)引導(dǎo)、內(nèi)存管理、進(jìn)程管理、硬件中斷處理、操作系統(tǒng)其它部分引導(dǎo)、用戶 Shell 引導(dǎo)等這一套流程應(yīng)該不會(huì)有大的變化。
3. 操作系統(tǒng) - 內(nèi)存管理
i386 的三層內(nèi)存管理模式現(xiàn)在還看不出有多大的變化趨勢(shì)。操作系統(tǒng)的內(nèi)存管理模式、API也不會(huì)有大變化。
4. 操作系統(tǒng) - 進(jìn)程(線程)及其調(diào)度
只要操作系統(tǒng)內(nèi)程序的運(yùn)行是通過時(shí)鐘中斷或其它軟硬件中斷進(jìn)行調(diào)度,那么進(jìn)程是操作系統(tǒng)調(diào)度的基本單位。如從某一天開始“獨(dú)立的二進(jìn)制組件”成為操作系統(tǒng)的基本調(diào)度單位,那可能更多的是進(jìn)程控制塊的變化。“獨(dú)立的二進(jìn)制組件”的加載本身很可能就是進(jìn)程。
5. 操作系統(tǒng) - 文件系統(tǒng) API
文件系統(tǒng)可能會(huì)不斷變化,但文件系統(tǒng)的 API 應(yīng)該不會(huì)有多大變化。
6. 數(shù)據(jù)庫 - SQL 語言
關(guān)系數(shù)據(jù)庫的理論與產(chǎn)品技術(shù)已經(jīng)非常成熟,對(duì)維護(hù)到現(xiàn)在已經(jīng)保存的大量數(shù)據(jù)而言,SQL 語言是很難被替換的,XML 可能將會(huì)與 SQL 合作而不是替換。即使對(duì)象數(shù)據(jù)庫理論及產(chǎn)品成熟了,SQL 肯定將被兼容。
7. 網(wǎng)絡(luò)瀏覽的協(xié)議與格式 - HTTP、HTML、Javascript
就算大家對(duì) HTML 再不滿意,其修改、進(jìn)步的步伐也不會(huì)很快,太多的信息內(nèi)容保存成這種格式了,變化的成本太高。
HTTP 是與 HTML 相伴的,變化不會(huì)太大。Javascript 更是如此。
8. 電子郵件的協(xié)議與格式 - POP3、SMTP、MIME
POP3、SMTP、MIME 也已成大規(guī)模,變化的成本很高。
9. 網(wǎng)絡(luò)協(xié)議 - TCP/IP 族
IPv4 到 IPv6 是可以看到的,但 TCP/IP 的基本結(jié)構(gòu)及 API 應(yīng)該不會(huì)有多大變化。變化的成本太高。
10. 微軟的Windows - Windows
除非連續(xù)發(fā)生重大經(jīng)營失誤,否則微軟是不會(huì)簡(jiǎn)單倒下去的,關(guān)于這個(gè)主要不是技術(shù)的問題,不多說。簡(jiǎn)單認(rèn)為 Windows 會(huì)存在很長(zhǎng)的時(shí)間。
Windows(產(chǎn)品) 中的 Windows(窗口技術(shù))是精華,已經(jīng)很成熟,其相關(guān)的 API,包括 GDI、消息機(jī)制、Common Controls等不會(huì)有太大變化。就算以后以組件的形式出現(xiàn),那也只是 API 的另外一種形式。
11. 微軟的Windows - DirectX
只要老百姓還在用 Windows,那么 DirectX 作為游戲的開發(fā)平臺(tái)會(huì)長(zhǎng)期的保持下去。
12. 開源組織與 IBM 的 Linux - Shell、XWindow
開源組織現(xiàn)在看不出任何的前景衰落,IBM 已經(jīng)發(fā)展了百年,他們聯(lián)合推動(dòng)的 Linux 再活 30 年應(yīng)該沒問題。其基本的 Shell 與 XWindow 結(jié)構(gòu)不會(huì)有太大變化。
13. OOP 語法與思想
編程語言是編寫邏輯、調(diào)用 API、解決問題的工具。其中的 OOP 語法現(xiàn)在方興未艾,引導(dǎo)了編譯器、虛擬機(jī)、API 都向其轉(zhuǎn)變。若干年后,即使編程語言又發(fā)展革命了,OOP 很可能將作為其基礎(chǔ)。
14. 算法
可以說是數(shù)學(xué)的一部分,包括純數(shù)學(xué)算法與應(yīng)用業(yè)務(wù)邏輯或應(yīng)用算法。解決問題的算法的生命力是永遠(yuǎn)的,獨(dú)立于系統(tǒng)、編程語言。即使我們研究不出來新算法,但掌握某些算法是應(yīng)該的,這是掌握基本軟件開發(fā)知識(shí)后的長(zhǎng)遠(yuǎn)競(jìng)爭(zhēng)力之所在。
二、變化比較大且影響比較大的
1. 產(chǎn)品外觀、用戶操作界面與交互方式
產(chǎn)品外觀、界面與交互方式的變化永無止境。像微軟這樣的公司在這方面投入巨大精力。實(shí)際上這是給老百姓看的,不是給開發(fā)人員的,但在很大程度上會(huì)影響開發(fā)人員的產(chǎn)品外觀設(shè)計(jì)、界面設(shè)計(jì)及交互設(shè)計(jì)。
2. 編程語言、編譯器及其支持庫、虛擬機(jī)
具體的編程語言與編譯工具的選擇使用是程序員、開發(fā)部門自己的內(nèi)部事務(wù),一般與系統(tǒng)API、產(chǎn)品市場(chǎng)需求、開發(fā)結(jié)果等無關(guān)。影響編程語言與編譯工具的選擇使用的因素非常多,變化性很大。就算一個(gè)編程語言或其相關(guān)的編譯工具的生命周期很長(zhǎng),但也很難保證被一個(gè)開發(fā)團(tuán)隊(duì)長(zhǎng)期固定使用。過度沉迷進(jìn)而局限于某個(gè)編譯工具的風(fēng)險(xiǎn)很大,但不鉆研到一定深度很難做出來好東西。
3. 開發(fā)管理模式
不同的產(chǎn)品、項(xiàng)目,不同的應(yīng)用平臺(tái),不同的編程序語言,需要針對(duì)性的開發(fā)管理模式。即使使用相同的 OOP 語法的編程語言,針對(duì)不同的產(chǎn)品或編譯工具其開發(fā)管理也是不同的。開發(fā)管理其實(shí)是組織開發(fā)人員利用編程語言寫出結(jié)果的過程,當(dāng)然應(yīng)該不斷地進(jìn)行調(diào)整。有一些粗線條的管理理論只能進(jìn)行指導(dǎo),真正的實(shí)踐是另一回事兒。
4. 開發(fā)技術(shù)的應(yīng)用需求
隨著軟件應(yīng)用平臺(tái)廠商、開發(fā)工具廠商的不斷的產(chǎn)品升級(jí)、市場(chǎng)推廣活動(dòng),以及社會(huì)消費(fèi)熱點(diǎn)不斷的變化,市場(chǎng)客戶對(duì)開發(fā)技術(shù)的需求不斷地進(jìn)行調(diào)整。