做爲一個本職是程序員的魔幻愛好人士,THE DAY,我終於意識到了!css
若是你不懂魔法的麻瓜,不要緊,讓我一點點來揭開這個世紀大奧妙。html
首先咱們從最簡單的HTML 開始,這個在技術上稱之爲「標記語言」,或者叫結構性語言。java
<html><body><h1>召喚惡魔</h1></body></html>
這種標記性語言,由衆多的成對標記組成,這實際上是一種很是偉大的鍊金術魔法!程序員
由簡單的語言標記組成的魔法陣,在魔法陣中的全部物件都會附加特定的魔法效果,或者被轉換成其餘物件。編程
看過鋼之鍊金術師的友人們應該很是理解這種鍊金術。c#
可是鍊金術不是每一個人隨隨便便就能掌握的,須要通過一段不短期熟讀各類咒語。公開的HTML教程設計模式
除此以外,鍊金術的第二個必備條件,就是 「運行環境」 數組
這個其實也是全部魔法都須要具有的條件,就是所在世界的基本運行法則。瀏覽器
衆所周知,在不一樣的魔法體系裏面,都有這不一樣的世界法則,在咱們這個貧瘠的位面,並無那些魔幻體系裏具有的「魔力」「靈力」等基本要素。架構
因此就算你手裏面拿着一本咒語百科,任意一條都不會起做用。
那麼回到HTML,剛纔那段咒語的執行環境什麼?
聰明的小夥伴必定已經猜出來了,沒錯,就是稱之爲「瀏覽器」的東西。
這是一個虛擬容器,只要使用恰當的方式,把剛纔那段咒語放入這個容器中,就會實現它本來的做用。
以下:
沒錯,這是一條把文本加粗放大的功能,固然這是一個無足輕重的小技巧而已。
可是若是你真的要把惡魔召喚出來,固然就複雜程度而言,可能會讓咱們跑題太遠。
接下來讓咱們玩點別的。
讓咱們召喚一隻小白鴿的咒語
<p><img src="https://img2018.cnblogs.com/blog/194179/201902/194179-20190225003028071-1764286030.jpg" alt="" width="190" height="178" /></p>
從虛無之中構建物品,由於如今這個白鴿只能說是紙片白鴿,因此咱們叫靜態「物品」,固然還有動態「物品」。能讓它動起來的咒語,叫「動畫編程」
這裏已經脫離了鍊金術的範疇了,已經不是「等價交換」。
低級別的簡易魔法咒語長度較短,高級別的魔法經常功能強大,可是咒語也會很是冗長。
在實戰中,若是全部的功能都從零開始構建,那麼會耗費很是多的時間,在瞬息萬變的戰爭等同於一個固定靶子。這就是
並且吟唱過程當中很是容易受到干擾,這些干擾可能來自於自身能力不足,對編程技術的熟練度不夠,或者對所要達成功能理解不足,對環境理解不足等等,形成了BUG。
修復BUG的過程會繼續增長吟唱時間,也有來自於外部的干擾,比方說友軍「PM」的對話信息,來自戰場的干擾等。
那麼爲了解決時間上的問題,經驗老道的魔法師會事先準備一些
這些卷軸是在日常空閒之餘花費更大量的時間與精力把一些實用的複雜咒語刻印在卷軸中。
在編程上稱之爲「JDK」 或者工具包 或者API。實際使用時,只須要一句較短的激活咒語就能開啓很複雜的功能。
固然這些卷軸的製做者並不必定是使用者,也可能他人制做,使用者經過購買,或者免費下載。
有一些比較常見的卷軸協會,咱們稱之爲開源平臺,能夠免費得到卷軸,並且這些卷軸的咒語細節也是開放給全部觀看者免費瀏覽,簡直良心。
那麼下面咱們來談另一個話題
魔法陣跟咒語的區別在於一個是圖案,一個是口述語言。
那麼在編程語言中用圖案的方式來實現功能的方法是什麼?
沒錯!就是「可視化編程」,經過特定的工具「IDE」拖拉組件來構建應用。
各類可視化編程工具,VS, Unity3D,dreamWeaver
魔法陣的本質仍是咒語,因此全部可視化編程仍是能夠經過手動寫代碼實現,只是開發效率上會有必定優點。
剛纔咱們提到「口述語言」,實質上編程語言不須要念出來,由剛纔開頭的簡易例子你們已經知道了,是須要放入到一個虛擬容器之中才能生效。
固然不一樣的語言也會有不一樣的容器。
網頁類的 包括html css js 都須要瀏覽器環境,c# 須要「.netframwork」 ,java語言須要「jvm」
還有一種很特別的施法技巧,叫
施法者能夠在內心默唸咒語,就能夠經過不發聲而且很是快速的釋放咒語。
在編程之中,這叫作「ctrl+c ctrl+v」 經過複製粘貼快速使用一些已有代碼片斷。
咱們知道大型的禁咒魔法一般須要
爲了解決多人協做過程,而且複雜度過高的問題。
開發人員想出來一些辦法,好比「面向對象」 「二十三設計模式」 「面向領域」 「面向方面」
這個時候會有另一種職能被劃分出來,「架構師」,大多數時架構師並不在畫面上,而是在看不見地方默默設計,推演。
到這裏,看到這個風陣的畫面可能有些小夥伴就想起一個基本問題了。
那麼對應
如風火水雷等元素系的魔法,在編程上又是如何體現的?
首先在某些魔法體系裏,好比西方魔幻,WOW,魔戒,龍槍系列等,元素系是屬於比較常見魔法。
一般他們的「運行環境」的基本要素就是這些遊離元素「風」「火」「水」「雷」散佈在整個世界,是世界的基本法則。
那麼在編程裏的虛擬世界之中,最最基本固然是「0」「1」 , 基本元素之上還有複合型的元素,好比風+電= 雷暴 ,水+火=霧
0 與 1 會組合出另一些邏輯性元素:「與」「或」「非」「異或」等邏輯概念,再往上一層就是由CPU指令與這些邏輯符號組合而成的"彙編語言"元素,左移,右移,存入,複製等
而後再往上一層,就到了咱們熟知的高級語言範疇, 變量,數組,對象,循環等等。
暗黑系的破壞類魔法對應黑客,光明系的治癒性魔法對應防護類的白帽子。
專攻藥物的魔藥師對應插件開發工程師。
這就是現代魔法學,編程開發。
一門能夠無中生有而且很是嚴謹的規則推演學科。
能夠製造奇幻,也能夠毀天滅地。能夠點石成金,也能夠瞬息千里。
太過美妙!