编程语言居然是魔法咒语!

1,986 阅读6分钟

作为一个本职是程序员的魔幻爱好人士,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指令与这些逻辑符号组合而成的"汇编语言"元素,左移,右移,存入,复制等

然后再往上一层,就到了我们熟知的高级语言范畴, 变量,数组,对象,循环等等。

暗黑系的破坏类魔法对应黑客,光明系的治愈性魔法对应防御类的白帽子。

专攻药物的魔药师对应插件开发工程师。

这就是现代魔法学,编程开发。

一门可以无中生有并且非常严谨的规则推演学科。

可以制造奇幻,也可以毁天灭地。可以点石成金,也可以瞬息千里。

太过美妙!