前端自己的图灵完备编程语言

--- 《H语言》诞生记



王海洋

haiyang5210123@123gmail.com

主要内容   

  • 图灵完备性简介
  • 几种常见的图灵完备语言
  • H语言基本语法介绍
  • H语言简单应用示例

图灵完备性简介

    当代计算机学家和数学家已经证明,任何一门拥有变量赋值基本运算条件判断循环虚拟机的计算机语言都是一个图灵完备系统。何谓图灵完备系统?图灵完备系统是一个资源无限系统,它可以解决任何可计算问题。

几种常见的图灵完备语言

  • C 语言
  • C++ 语言
  • JAVA语言
  • Python语言
  • Ruby语言
  • Javascript语言

图灵完备语言的特性

计算机软硬件架构是基于图灵完备思想建立起来的,因此这些语言在底层原理上都是类似的。从非常严格的理论角度来说,一种语言能实现的东西另一种语言也能够完整实现。

世界上最小的图灵完备语言

Brainfuck是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。 Müller的目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完备思想的编程语言。 这种语言由八种状态构成,为Amiga机器编写的编译器(第二版)只有240字节大小!

H语言基本语法介绍

  • 变量定义
  • 条件分支
  • 循环
  • 片段引用
  • 支持中文自然语言

变量定义

<!--var: name = 'Tom', age = 15.5 -->
#{name} is #{Math.floor(age)} years old.
                        
输出结果:
Tom is 15 years old.
                        

条件分支

<!--var: name = 'Tom', age = 14 -->
<!--if: #{age} < 14 -->
I am younger than 14 years.
<!--elif: #{age} == 14 -->
I am 14 years old.
<!--else:-->
I am older than 14 years.
<!--/if-->
                        
输出结果:
I am 14 years old.
                        

循环

<!--var: persons = [1,2,3,4] -->
<ul>
<!--for: #{p} in #{persons}-->
<li>#{p}</li> 
<!--/for-->
</ul>
                        
输出结果:
<ul><li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul>
                        

片段引用

<p><!-- import: hello --></p>
<!-- target: hello -->Hello, I am #{name}!
                        
输出结果:
<p>Hello, I am Hujiang!</p>
                        

支持中文自然语言

<!-- 设定: 我爸爸是实体, 我爷爷是实体,我是"王海洋",我爷爷的儿子是我爸爸,我爸爸的儿子是我 -->

那么,我是#{我爷爷的儿子的儿子}
                        
输出结果:
那么,我是王海洋
                        

H语言简单应用示例

<!-- 设定: 他是实体,码农是"屌丝", 我 是 "文艺青年" -->
<!-- 如果: 我 不是 码农-->
我是#{我}<br/>
<!-- 又假设: -->
我是一个前端#{码农}
<!--/如果结束-->
其实#{我}也有理想,我喜欢#{公司}
                        

H语言线上Demo地址

http://fetpl.org/

「谢谢」