軟件發(fā)展歷史(時間軸)
1、“計算機(jī)"理論階段:20 世紀(jì)三、 四十年代——理論
計算機(jī)出現(xiàn)之前,就已經(jīng)有很多數(shù)學(xué)家為計算機(jī)軟件的出現(xiàn)打下了堅實的數(shù)學(xué)理論基礎(chǔ),最著名的是“阿蘭. 圖靈”,在 20 世紀(jì)三、 四十年代就創(chuàng)建立了“圖靈機(jī)”理論, 從理論上解決了計算機(jī)軟件和核心——“計算復(fù)雜性”以及“算法表示”問題。

正是有了這樣的數(shù)學(xué)理論作為基礎(chǔ),加上當(dāng)時電子技術(shù)的突飛猛進(jìn),二者相結(jié)合,才產(chǎn)生了計算機(jī)這樣一個劃時代的偉大產(chǎn)物。
2、第一臺電子管計算機(jī):1946 年——硬件
美國賓夕法尼亞大學(xué)經(jīng)過幾年的艱苦努力,研制出世界上第一臺電子計算機(jī),是電子管計算機(jī),結(jié)構(gòu)上以CPU為中心,使用機(jī)器語言,速度慢、存儲量小,主要用于數(shù)值計算。
計算機(jī)都是按照“馮 . 諾依曼”體系設(shè)計的, 其運(yùn)行的基本原理, 可以簡單概括為“程序存儲、集中控制”,“約翰 . 馮. 諾依曼”被稱為“計算機(jī)之父”。
3、打孔紙帶“編程”——語言
計算機(jī)的內(nèi)部處理的全都是1 和 0 的二進(jìn)制數(shù)字, 表示“開”和“關(guān)”.
而計算機(jī)剛剛發(fā)明出來的時候, 操作人員就必須用很多真正的“開關(guān)”來操作計算機(jī),進(jìn)步一點(diǎn)以后, 出現(xiàn)了“機(jī)器語言”的概念,使用例如在紙帶上打孔的方式,把一些原來需要人手工撥動開關(guān)的操作序列,變成按照某種規(guī)則在紙帶上的一系列孔的序列。
這種打著孔的紙帶可以被看作是今天的鼠標(biāo)、鍵盤、打印機(jī)、顯示器、磁盤這些東西的總和,這些東西在當(dāng)年,“打孔紙帶”一個人就全包了。
今天我們分分鐘編好一個程序,并且可以多語言混合編寫。然而你能想象最初的編程竟然是通過打控紙寫程序。
打孔卡(punch card)編程時期:20 世紀(jì) 60 年代,IBM 并為打孔卡設(shè)立了標(biāo)準(zhǔn)。
基本原理是通過打孔紙帶上的圓孔或方孔,透光,則表示1,其他表示0。通過紙帶輸入老式計算機(jī)中,進(jìn)行程序控制。

4、早期的“程序猿”
伴隨著第一臺電子計算機(jī)的問世誕生了。以寫軟件為職業(yè)的人也開始出現(xiàn),他們多是經(jīng)過訓(xùn)練的數(shù)學(xué)家和電子工程師,硬件通常用來執(zhí)行一個單一的程序,而這個程序又是為一個特定的目的而編制的。
早期當(dāng)通用硬件成為平常事情的時候,軟件的通用性卻是很有限的。大多數(shù)軟件是由使用該軟件的個人或機(jī)構(gòu)研制的,軟件往往帶有強(qiáng)烈的個人色彩。
早期的軟件開發(fā)也沒有什么系統(tǒng)的方法可以遵循,軟件設(shè)計是在某個人的頭腦中完成的一個隱藏的過程。而且, 除了源代碼往往沒有軟件說明書等文檔。
5、機(jī)器語言——>“匯編語言”
機(jī)器語言通常稱為“第一代語言”,其后又產(chǎn)生了“匯編語言”,即“第二代語言”。
匯編語言實際上就是機(jī)器語言,區(qū)別就是匯編語言中用一些符號代替0 和1 的序列, 僅僅是便于記憶。
此外,有少量的擴(kuò)展功能,比如可以通過定義“宏”來產(chǎn)生類似于“子程序”這樣的邏輯概念,通過編寫匯編語言程序產(chǎn)生機(jī)器代碼,效率提高了很多, 但是它依然是緊密依賴于機(jī)器的,和后來被廣泛使用的高級語言是完全不同的。
6、Fortran——第一個高級語言:1954 年
1954 年,“約翰 . 巴科斯”建立了高級語言的思想,并設(shè)計出了世界上第一個真正意義上(至今廣泛應(yīng)用)的高級語言,第一個完全脫離機(jī)器硬件的高級語言—Fortran問世。
7、典型的操作系統(tǒng)FMS:1955
1955-,典型的操作系統(tǒng)是FMS (FORTRAN Monitor SystemFORTRAN 監(jiān)控系統(tǒng))和IBSYS (IBM為7094機(jī)配備的操作系統(tǒng))。
8、晶體管計算機(jī):1958年
1958年晶體管計算機(jī),結(jié)構(gòu)上以存儲器為中心,使用高級語言應(yīng)用范圍擴(kuò)大到數(shù)據(jù)處理和工業(yè)控制。
9、第一個數(shù)據(jù)庫管理系統(tǒng)-IDS:1961年
1961年第一個數(shù)據(jù)庫管理系統(tǒng)- -IDS由通用電氣(GE)公司的Charles Bachmar開發(fā)出 。.
10、小規(guī)模集成電路計算機(jī):1964年
1964年中小規(guī)模集成電路計算機(jī),結(jié)構(gòu)上仍以存儲器為中心,增加了多種外部設(shè)備, 軟件得到一定發(fā)展,計算機(jī)處理圖像、文字和資料功能加強(qiáng)。
11、遠(yuǎn)程聯(lián)機(jī)系統(tǒng):60 年代中期之前
60 年代中期之前的第一代計算機(jī)網(wǎng)絡(luò)是以單個計算機(jī)為中心的遠(yuǎn)程聯(lián)機(jī)系統(tǒng)。
典型應(yīng)用是由一臺計算機(jī)和全美范圍內(nèi)2 000 多個終端組成的飛機(jī)定票系統(tǒng)。
終端是一臺計算機(jī)的外部設(shè)備包括顯示器和鍵盤,無CPU和內(nèi)存。
12、“軟件危機(jī)"與”軟件工程“:60 年代中期
“軟件危機(jī)”于60年代中期軟件開始作為- -種產(chǎn)品被廣泛使用,出現(xiàn)了“軟件作坊”專職應(yīng)別人的需求寫軟件。
這一軟件開發(fā)的方法基本上仍然沿用早期的個體化軟件開發(fā)方式,但軟件的數(shù)量急劇膨脹,軟件需求日趨復(fù)雜,維護(hù)的難度越來越大,開發(fā)成本令人吃驚地高,而失敗的軟件開發(fā)項目卻屢見不鮮。
“軟件危機(jī)” 就這樣開始了!
1968年北大西洋公約組織的計算機(jī)科學(xué)家在聯(lián)邦德國召開的國際學(xué)術(shù)會議_上第一次提出了“軟件危機(jī)”(software crisis)這個名詞。
概括來說, 軟件危機(jī)包含兩方面問題:
一、如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的需求;
二、如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。
同年秋季,NATO (北約)的科技委員會召集了近50名一流的編程人員、計算機(jī)科學(xué)家和工業(yè)界巨頭,討論和制定擺脫“軟件危機(jī)”的對策。
在那次會議上第一次提出了軟件工程(software engineering)這個概念。軟件工程是一門研究如何用系統(tǒng)化、規(guī)范、數(shù)量化等工程原則和方法去進(jìn)行軟件的開發(fā)和維護(hù)的學(xué)科。
軟件工程包括兩方面內(nèi)容:軟件開發(fā)技術(shù)和軟件項目管理。軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、軟件工具和軟件工程環(huán)境。軟件項目管理包括軟件度量、項目估算、進(jìn)度控制、人員組織、配置管理、項目計劃等。
13、“生命周期模型“五步走:60 年代末
60年代末“軟件危機(jī)”后出現(xiàn)的第一個生命周期模型。如下所示:分析→設(shè)計→編碼→測試→維護(hù),使人們認(rèn)識到了文檔的標(biāo)準(zhǔn)以及開發(fā)者之間、開發(fā)者與用戶之間的交流方式的重要性。
一些重要文檔格式的標(biāo)準(zhǔn)被確定下來,包括變量、符號的命名規(guī)則以及原代碼的規(guī)范式。
14、1969年UNIX出現(xiàn)
1969年12月,Internet的前身--美國的ARPA網(wǎng)投入運(yùn)行,它標(biāo)志著我們常稱的計算機(jī)網(wǎng)絡(luò)的興起。.
1969年,提出了結(jié)構(gòu)化程序設(shè)計方法。
15、1970年之后
1970年,第一個結(jié)構(gòu)化程序設(shè)計語言- Pascal 語言出現(xiàn)。標(biāo)志著結(jié)構(gòu)化程序設(shè)計時期的開始,即PO (面向過程的開發(fā)或結(jié)構(gòu)化方法)以及結(jié)構(gòu)化的分析、設(shè)計和相應(yīng)的測試方法。
1971年.大、超大規(guī)模集成電路計算機(jī),應(yīng)用更加廣泛,出現(xiàn)了微型計算機(jī)。
1972 C語言 出現(xiàn)
1975年的第六版UNIX 才開始走出貝爾實驗室
1979年0racle公司引入了第一個商用SQL關(guān)系數(shù)據(jù)庫管理系統(tǒng)。
1983年C+出現(xiàn)
1983年IBMDB數(shù)據(jù)庫產(chǎn)品推出的。
由于各種各樣的應(yīng)用軟件需要在各種平臺之間進(jìn)行移植,或者一個平臺需要支持多種應(yīng)用軟件和管理多種應(yīng)用系統(tǒng),軟、硬件平臺和應(yīng)用系統(tǒng)之間需要可靠和高效的數(shù)據(jù)傳遞或轉(zhuǎn)換,使系統(tǒng)的協(xié)同性得以保證。
這些,都需要一種構(gòu)筑于軟、 硬件平臺之上,同時對更上層的應(yīng)用軟件提供支持的軟件系統(tǒng),而中間件正是在這個環(huán)境下應(yīng)運(yùn)而生。
1984年Tuxedo作為第-一個嚴(yán)格意義上的中間件產(chǎn)品由AT&T的貝爾實驗室開發(fā)完成
1985年Windows 1. 0正式推出。之前軟件結(jié)構(gòu)體系也是Mainframe結(jié)構(gòu),該結(jié)構(gòu)下客戶、數(shù)據(jù)和程序被集中在主機(jī)上。
隨著PC個人微機(jī)應(yīng)用的推廣,PC 聯(lián)網(wǎng)的需求也隨之增大,各種基于PC互聯(lián)的微機(jī)局域網(wǎng)紛紛出臺。
16、20世紀(jì)80年代
20世紀(jì)80年代中期出現(xiàn)了Client/Server結(jié)構(gòu)。此結(jié)構(gòu)把數(shù)據(jù)庫內(nèi)容放在遠(yuǎn)程的服務(wù)器上,而在客戶機(jī)上安裝相應(yīng)軟件。C/S軟件一般采用兩層結(jié)構(gòu)。
1986年Eiffel出現(xiàn)。
80年代末面向?qū)ο?/span>的分析、設(shè)計方法(00A和00D)的出現(xiàn),隨之而來的是面向?qū)ο蠼UZ言(以UML為代表)、軟件復(fù)用、基于組件的軟件開發(fā)等新的方法和領(lǐng)域。與之相應(yīng)的是從企業(yè)管理的角度提出的軟件過程管理。
17、20世紀(jì)90年代
90年代,中間件技術(shù)才開始迅速發(fā)展,建立在計算機(jī)和網(wǎng)絡(luò)技術(shù)基礎(chǔ)上的計算機(jī)網(wǎng)絡(luò)技術(shù)得到了迅猛的發(fā)展。
1993年美國宣布建立國家信息基礎(chǔ)設(shè)施NII后,全世界許多國家紛紛制定和建立本國的NII,從而極大地推動了計算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,使計算機(jī)網(wǎng)絡(luò)進(jìn)入了一個嶄新的階段。
目前,全球以美國為核心的高速計算機(jī)互聯(lián)網(wǎng)絡(luò)即Internet已經(jīng)形成。
1994年P(guān)HP出現(xiàn)
1995年Java出現(xiàn)
1996年JavaScript出現(xiàn)
18、2000年之后
2000年C#出現(xiàn)
業(yè)務(wù)基礎(chǔ)平臺作為一個新的軟件層級尤為引人注目。業(yè)務(wù)基礎(chǔ)平臺是以業(yè)務(wù)導(dǎo)向和驅(qū)動的、可快速構(gòu)建應(yīng)用系統(tǒng)的軟件平臺。
2005年,ERP廠商再度引發(fā)“平臺熱”,金碟、SAP都在此時高調(diào)推出平臺戰(zhàn)略。
2006年被炒得沸沸揚(yáng)揚(yáng)的SOA (Service-0riented Architecture 作為下一代軟件架構(gòu),主要用于解決傳統(tǒng)對象模型中無法解決的異構(gòu)和耦合問題。
……
總結(jié)
軟件的發(fā)展史其實就是在裸機(jī)(硬件)和終端用戶之間不斷沉淀(平臺化)的過程。
當(dāng)與裸機(jī)接近的某個層次發(fā)展成熟后,與這個層次相關(guān)的創(chuàng)新和成果會明顯減少,而從這個層次更靠近終端用戶業(yè)務(wù)的層次的創(chuàng)新和成果會增多。就這樣不斷不斷的沉淀形成平臺,不斷的向用戶和業(yè)務(wù)領(lǐng)域靠攏。
電商商品搜索:需求方案和實現(xiàn)原理(“搜索產(chǎn)品經(jīng)理”傳送門)
B端產(chǎn)品經(jīng)理 對接第三方API,可能有多坑!
