25 歲的老 Delphi,還值得程序員入手嗎?

Delphi 25歲了!儘管它不再是很多 Windows 開發的明顯選擇,但它的“長壽”證明了其性能之高。回想起來,為什麼 Delphi 當初未能佔領 Windows 開發市場的更多份額呢?本文細數以 Delphi 為首的編程語言以及軟件創作系統所經歷的 25 年風雨,以此祭奠老 Delphi 程序員們已逝的青春。

25 岁的老 Delphi,还值得程序员入手吗?

作者 | Jon Lennart Aasenden

出品 | CSDN(ID:CSDNnews)

我想通過本文細數以Delphi為首的編程語言以及軟件創作系統所經歷的25年風雨。我應該從哪裡開始呢?史無前例的面向對象?事件驅動架構?蓬勃發展的組件市場?還是從x86彙編語言擴展到高性能ARM移動應用程序的技術?

我不想簡單地列出各項技術,而是想以一種更加個人化的方式來撰寫這篇Delphi的文章。畢竟Delphi 25週歲了,人們喜歡在生日這天舉行演講和反思:回顧過往的一切,同時堅定地展望未來。

簡而言之,我只能通過本文傳達在我作為軟件開發人員的一生中Delphi給予我的寶貴价值,而且我相信數百萬的Delphi開發人員感同身受。

我希望通過這篇文章,將我的想法傳給現在剛開始學習Delphi的許多學生。希望為你們的學習提供一些有營養的見解,並希望你們能和我一樣深愛Delphi。

25 岁的老 Delphi,还值得程序员入手吗?

Delphi 的起源

1990年初,計算機市場與今天相比有著截然不同的格局。在斯堪的納維亞半島和北歐,Commodore和IBM等公司仍然佔據著家用臺式機的市場。但是在短短的三年之內,IBM的OS/2就被微軟的Windows淘汰了,而曾經的巨頭Commodore也陷入了其不可避免的痛苦局面,這兩家都無法或不願意適應當時興起的新業務模式。在同樣動盪的1993年,微軟和IBM正式分道揚鑣,IBM轉向了大型機及其PPC芯片組體系結構,後者在接下來的十年甚至更長的時間裡一直是Macintosh計算機的核心。

我提到這些公司的原因是為了讓你瞭解當時市場的混亂狀況。對於像我這樣的年輕學生來說,根本不可能知道應該在哪種技術上投入精力。我的編碼生涯是從Commodore Amiga版本的Turbo Pascal開始的,該版本由英國公司Hi-Soft發佈,稱為High-Speed Pascal。當時,我還是工程系的新生,在學校裡,我們主要使用Turbo Pascal和DBase。可惜當時的PC機非常昂貴,我沒錢花4000美元購買PC,於是花了700美元買了一臺Commodore Amiga。我覺得,Pascal編譯器的價格約為$99,這對於一個努力維持生計的窮學生來說,可以省不少錢。

1994年的時候,我使用的編譯器不能用了,很明顯Commodore再也未能東山再起。值得慶幸的是,我忍無可忍,終於下血本買了第一臺帶有Turbo Pascal的PC機。我很高興買了這臺機器,因為第二年Delphi就發佈了。

每當我提到Delphi曾經以及將來對我的影響,我一點都沒有誇張。Delphi自問世以來,對整個軟件開發行業的影響是巨大的。Delphi以及在此之前的Turbo Pascal,開創了許多當今開發人員認為理所當然的技術,甚至包括快速應用程序開發(Rapid Application Development,即RAD)週期本身。在Delphi之前,人們的目光都聚焦在投資回報率(ROI)和上市時間(TTM)上,編程語言帶來的變化微乎其微。但是,當Delphi出現以後,時間和金錢的投入都非常清晰明確了,因為Delphi帶來了顛覆性的變革(對於其競爭對手來說)。

因此,在90年代初期技術的戰國時代,Delphi成為了最大的贏家。當之無愧。

25 岁的老 Delphi,还值得程序员入手吗?

飛躍發展

思想和觀念的進化概念一直讓我十分著迷。我經常在文章中提到這個概念。

我們總是認為進化是一個緩慢、漸進和線性的過程。但是當涉及到想法,尤其是技術時,我的經驗是,好的技術會以快速、出乎意料的飛躍向前發展。孵化時間可能會有所不同,但最終在某種力量的推動下就會飛速向前。

1995年,Delphi進入市場時遠遠領先於競爭對手,人們發現Delphi很難學。但事件驅動編程的概念已經出現很長時間了(例如Visual Basic),因此Delphi並不是在真空中孵化的。雖然有一些C/C ++編譯器也發展出了Delphi帶進大眾視野的語言功能,但是它們都缺乏Delphi的簡單性和優雅性。

在伴隨我長大的Commodore機器上,有很多軟件支持拖放式表單設計,而且在某種程度上編程也採用了類似的方法(儘管處於更原始的狀態)。但是,Delph的獨特之處在於,沒有公司將這些想法融合為一個連貫的整體。我從未見過VCL框架之類的東西,或能夠與你的代碼如此緊密地集成的IDE。

一款功能強大的編譯器將所有這些元素組合在一起,比其他的編譯器要早很多年。如今的C/C++編譯器(從Pascal開發人員的角度來看)絕對非常強大,但是視覺設計在很大程度上需要獨立完成(Borland C/C++具有類似OWL的框架,因此UI可以通過代碼完成) 。因此,在競爭產品中,例如Wacom(1984~2010)或Storm C++(1995~2016),你需要在一個程序中創建UI,然後將這些設計作為資源文件導入到C/C ++項目中,與如今的蘋果.nib文件沒有什麼不同。只有完成這些,你才可以開始構建程序。有的代碼可能只需5分鐘,而有的代碼中該過程很容易超過5個小時。即使是很小的UI改動,也需要花幾分鐘才能生成代碼和做鏈接。

Delphi強大的編譯器和智能鏈接器可以將這個過程減少到幾秒鐘。這是十多年來世界上最快的編譯器。它的速度如此之快,以至於大多數開發人員將編譯功能當作一種快速檢查繁瑣的語法的方式。這對於其他語言來說都是不可想象的。

25 岁的老 Delphi,还值得程序员入手吗?

面向對象

毫無疑問,Delphi邁入了一個更高層的領域,即真正意義上的面向對象編程。在這之前,Pascal對面向對象還有點三心二意。Turbo Pascal 5.5是一流的DOS工具包(市場上稱為“帶對象的Turbo Pascal”),但其實它的對象只不過是帶有程序的記錄類型。除非你精通C++,否則你必須使用Modula II或Smalltalk之類的語言,才能獲得Delphi提供的那種對象模型。但是,它們都缺乏Delphi擅長的RAD(快速應用程序開發)層。

整個80年代和90年代初期,在Delphi的推動下,所有播種和孵化的技術都飛躍發展成了系統,面向對象成了語言本身基本的特徵,而不是作為附加功能使用。由於Delphi程序在完整的VMT(虛擬方法表)下運行,因此開發人員可以享受繼承、虛擬和抽象方法以及可靠的數據封裝——所有這些均來自於易學、易用和競爭激烈的語言。

錦上添花的是Delphi注重視覺編程。你可以將一個按鈕拽到窗體上,然後雙擊填寫事件處理程序,這個過程無需離開IDE或切換選項卡。之前已有其他編譯器做到了這一點,但Delphi是真正的本地編譯器,而不是通過字節碼或託管系統讓IDE按照自己的規則進行操作(以性能為代價)。Delphi是首個達到C/C ++級別的性能和深度(多虧了Object Pascal的易學和優雅)的語言。你還可以與Pascal並排編寫機器代碼,所以說Delphi與Visual Basic或SmallTalk是完全不同的級別。一夜之間Visual Basic從英雄變成了無名小卒。

25 岁的老 Delphi,还值得程序员入手吗?

現代Delphi與C/C++並肩,但仍非常重視可視化OOP編程

關於這一點,Object Pascal擁有與C/C++並駕齊驅的深度和功能,這是因為Delphi的視覺和非視覺組件庫都是由Delphi製作的。換句話說,你沒有強制依賴第三方提供的組件(這是競爭解決方案的慣用方法)。任何人都可以坐下來編寫自己的組件;然後以可執行文件或源代碼的形式打包出售。因此,組件市場蓬勃發展,導致競爭對手黯然失色。

我甚至想說,如果Delphi是在IBM OS/2上發佈的,那麼就可以拯救這個平臺。意義非凡。

大學最後一年,我們的課程使用了Visual Basic,但其實背後我們都在使用Delphi。實際上,我從未參加過任何微軟認證課程,而且只學習了一些基本知識就考出了好成績。那時,我已經在用Delphi編寫COM組件,遠遠超出了課程範圍。

我至今仍記得有一天老師將課程放在一邊,單獨給我們講起了Delphi。他是一位充滿熱情的開發人員,將Delphi的包裝盒放在我們面前時,他幾乎無法抑制自己的激動心情。我們睜大了眼睛,張著嘴,津津有味地聽著有關這個奇妙的新系統的所有知識。充滿熱情的思想湧現出了很多新想法。那真是一個奇蹟。

大學畢業後,我曾有機會從事教師的工作,但我拒絕了。除了Delphi之外,什麼都不教的想法感覺像是倒退了一步。

25 岁的老 Delphi,还值得程序员入手吗?

Delphi教育

在結束了大學的學習後,頭幾年裡我一直在擔任技術新聞記者,同時也在提高自己的開發技術。當再次回到大學學習時,Delphi已被列入了教學大綱。如今,年輕的開發人員常常在問為什麼RAD Studio同時包含Delphi和C++ Builder,其實這種結合構成了傳統軟件工程學位的骨幹。這種趨勢一直持續到2002年,而且如今世界部分地區仍然如此。

這兩種語言並排發展,而且共同擁有一段1970年代的輝煌歷史。儘管許多開發人員錯誤地認為Object Pascal很老,C/ C++是現代編程語言,但實際上C與Pascal屬於同一個時代。就像Delphi並非憑空發展一樣,C也不是。而BrianKernigan和Dennis Richie的標準也是基於大型機行業已有(且經常相互衝突)的工具。

因此,作為編程語言,Pascal和C以及進一步的Object Pascal和C++都是並排發展起來的,儘管它們之間的正式間隔是三年。

值得慶幸的是,Embarcadero繼續出色地完成了Delphi產品的最新功能。多年來,泛型、匿名方法、輔助類、屬性等功能已發展成為該語言的一部分。在這些工作的推動下,我們看到了Delphi的市場採用非常穩定。無論是使用過其他語言的成熟開發人員,還是新手開發人員都能感受到Delphi的生產力和強大。

振奮人心的一件事是,Delphi和C++ Builder再次在教育領域大展手腳。在擔任Embarcadero的SC期間,我幫助挪威的兩所大學建立了社區版。此外,在蘇格蘭、意大利、葡萄牙、南美和俄羅斯的一些機構Delphi也在蓬勃發展。

挪威的老師都很激動,因為他們在Borland時代教過Delphi。就像一位教授款款而談:“就像問候多年的老朋友一樣。”

上個月Embarcadero宣佈,土耳其將免費向其學生提供Delphi課程。估計有100萬學生參加,這真是個好消息!對於學生而言,最重要的還是領悟可靠、現代和原型編程語言的優勢。這些能讓他們成長為更好的開發人員,就像我與數不盡的其他人一樣。

25 岁的老 Delphi,还值得程序员入手吗?

軟件工程原理

我不想離題太遠,只想簡單地說說原型編程語言。這是一個專屬領域,除了Delphi和C++ Builder之外,該領域只有一個其他的編程語言(儘管Rust絕對應該位列其中)。

原型語言是體現計算基本原理的一種語言。這些原則不受產品和市場變化等因素的影響,因為它們代表了計算機的基礎邏輯,有點像物理定律。在撰寫本文之際,只有彙編語言、C/C ++和Object Pascal才是原型語言。而且彙編語言是其他一切語言的基礎。

另一種語言稱為樂觀語言,這個名字源自數據庫技術的術語(例如,樂觀鎖定模型)。雖然我不打算在本文中討論為何一門語言被稱為樂觀,但總的來說,樂觀描述的是一種語言對於現有基礎結構的依賴性的大小(因此被稱為樂觀,其意思就是認為存在某些特定條件是理所當然的)。彙編、C和Pascal是編寫操作系統或內核的語言。從根本上講,它們對操作系統的依賴性不如Java或JavaScript那麼強。

25 岁的老 Delphi,还值得程序员入手吗?

從低級編程到高級編程,再到高級面向對象,Delphi在廣泛的領域都有出色的表現

有好幾種操作系統都是用Pascal編寫的。最有名的系統莫過於蘋果經典的Macintosh操作系統,該操作系統跨68k和PPC處理器。儘管毫無疑問,C/C++是這類工作的主要語言,但事實上,蘋果一直將Pascal作為核心語言,直到1996年史蒂夫·喬布斯迴歸(喬布斯從NeXT帶來了Objective-C和Unix),這足以證明Pascal的強大和多功能性。自那時以來,Pascal的多功能性得到了極大的擴展。

我還想說說Ultibo,它是當今物聯網設備上非常流行的嵌入式系統。該系統包含一個完全用Object Pascal編寫的內核,以及構建現代嵌入式系統所需的所有基本組件。從USB堆棧到網絡的所有功能全是用Object Pascal編寫的。

雖然該系統使用的是受Delphi啟發的開源編譯器(FreePascal,過去曾被Delphi作為早期的移動支持),但是Ultibo的許多代碼都源自Delphi社區。

坦白來講,對於樂觀一族的語言來說,這種工作是不可能的,或者至少是非常不切實際的。你需要一個能夠覆蓋從彙編語言到高級構造的所有東西,才能真正在這個級別上開展工作。你不能用JavaScript編寫內核,因為它具有大量的依賴關係。

經過25年的發展,Delphi像以往一樣強大且通用。關於Delphi的討論有很多層次,本文到目前為止,我們只說到了一些皮毛。

25 岁的老 Delphi,还值得程序员入手吗?

感言

在生日祝酒之前,我要先講幾句。

Delphi就像我們的家庭成員一樣,這麼多年來,我把Delphi當成了血肉至親,所以過去我曾無數次表示讚賞Delphi,而且我希望告訴別人Delphi仍然很重要的一些原因,也許如今Delphi比過去更重要。

如果想細數Delphi擁有和能夠做到的一切,那麼我可以滔滔不絕地說個沒完沒了。它的功能千千萬,能夠勝任的任務跨度非常大。Delphi帶來的創新源泉永不枯竭,我無法僅在一篇文章中盡數講清楚。

25 岁的老 Delphi,还值得程序员入手吗?

Delphi和C++ Builder涵蓋的技術領域非常廣泛,能夠從各種環境中輕鬆訪問文檔至關重要

在過去的15年中,我全身心投入到了Object Pascal和Delphi。我寫過博客,寫過論文,在學校教過Pascal,並盡我所能讓每一個人都瞭解Pascal。我甚至編寫了自己的開發環境,以方便Object Pascal能夠適應Node.js和HTML5等新平臺,而且全部都是用Delphi編寫的。

多年來,軟件開發界已經接受了大量的折衷方案,現在整個行業的質量和可靠性損失已顯而易見。這也是學術界渴望扭轉這一趨勢,並讓Delphi重返高等教育的原因。

我可以直言不諱:這個世界不需要JavaScript開發人員。我們不需要其他C#程序員。從整體看來,軟件開發需要的是更多的Delphi和C/C ++開發人員,因為質量的需求已經證實了我上面提到的那些基本原理。

那些曾受過Delphi和C++ Builder等經典軟件工程教育的開發人員,如今可以開發定義規範的產品和公司。能夠撼動整個IT行業的人並非畢業於Java,他們是Java的締造者。真正核心的一切都是用原型語言締造的。這是一個無可爭議的事實。如果Linus Torvalds抱著Java不放,那麼這個世界上就沒有Linux了。忠言逆耳,這些話可能很刺耳,但都是大實話。

我們生活在一個很難用一種編程語言謀生的世界裡。我並不是說你只需要選擇一種編程語言。每種語言都有各自的用途,每個開發人員都應該從多方面充實自己。但是我必須強調以原型語言為基礎的重要性。

這與我個人的喜好無關,我也不是狂熱分子。我只是根據35年的開發經驗總結出來的。我覺得至少我有這方面的積累,可以公開談論這個話題。

如果你想成為一名普通的程序員,那麼可以專門研究普通的編程語言。然而,如果你想成為傑出的開發人員,那麼必須學習一種原型語言,而且在我個人看來,Delphi是最有效的。

如果你瞭解Delphi或C++ Builder,那麼學習其他任何語言都易如反掌。因為在你學習Delphi時,就熟練掌握了那些基本原理。就衝著一點,你就比其他人都高一級。

Delphi的優點在於,你可以從各個級別使用它。沒有人期望你編寫內聯彙編程序,或從頭開始創建數據庫引擎。自Turbo Pascal以來,Delphi的覆蓋範圍已非常廣泛,且已經過了時間的考驗,已發展成熟和完善。

因此,你可以按照自己的情況發展和學習語言。只要你充滿好奇心,且願意挑戰自己,那麼Delphi絕對值得一試。

此外,與其他語言不同,無論將來你投身何處,深入Delphi所獲得的知識和見解都會終身受益。Delphi?它是哲學,它是邏輯,它是藝術;它教你思考和提煉出解決方案,而其他人只能看到重重障礙。

本文的核心思想總結起來就一句話:

軟件工程學位不是目的地,而是聰明人一生的起點。

親愛的Delphi,我的老朋友,祝你生日快樂!

原文:https://community.idera.com/developer-tools/b/blog/posts/25-years-of-excellence

本文為 CSDN 翻譯,轉載請註明來源出處。


分享到:


相關文章: