程式語言居然是魔法咒語!

鬼柒發表於2019-02-25

作為一個本職是程式設計師的魔幻愛好人士,THE DAY,我終於意識到了!

程式語言,本質上就是一種現代魔法咒語!

如果你不懂魔法的麻瓜,沒關係,讓我一點點來揭開這個世紀大奧妙。

首先我們從最簡單的HTML 開始,這個在技術上稱之為“標記語言”,或者叫結構性語言。

<html><body><h1>召喚惡魔</h1></body></html>複製程式碼

鍊金術

這種標記性語言,由眾多的成對標記組成,這其實是一種非常偉大的鍊金術魔法!

由簡單的語言標記組成的魔法陣,在魔法陣中的所有物件都會附加特定的魔法效果,或者被轉換成其他物件。

看過鋼之鍊金術師的友人們應該非常理解這種鍊金術。

但是鍊金術不是每個人隨隨便便就能掌握的,需要經過一段不短時間熟讀各種咒語。公開的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指令與這些邏輯符號組合而成的"組合語言"元素,左移,右移,存入,複製等

然後再往上一層,就到了我們熟知的高階語言範疇, 變數,陣列,物件,迴圈等等。

暗黑系的破壞類魔法對應黑客,光明系的治癒性魔法對應防禦類的白帽子。

專攻藥物的魔藥師對應外掛開發工程師。

這就是現代魔法學,程式設計開發。

一門可以無中生有並且非常嚴謹的規則推演學科。

可以製造奇幻,也可以毀天滅地。可以點石成金,也可以瞬息千里。

太過美妙!


相關文章