我发现了一个非常酷的软件,用自然语言编程!

周六晚上10点半, 张大胖兴冲冲地在微信上找我:“欣哥,我发现一个编程软件,非常酷!”

我:“别烦我!我忙着追剧呢。”

“真的非常酷,这个软件叫MetaCode ,可以用自然语言编程,你看看!”

自然语言编程nbsp;难道我之前故事中杜撰的X语言,Z语言真的实现了nbsp;

X语言: 我在这儿-> 《当世界上只剩下一个Java程序员

Z语言: 我在这儿-> 《Z语言传奇

我放下了《破冰行动》,打开了张大胖发给我的连接:

https://metacode.app/。

(友情提示:横屏播放)

DSL

看了一分钟,不仅哑然失笑:“大胖,这哪里是自然语言编程明是DSL编程!”

“啥是DSL

“就是领域特定语言(Domain Specific Language)

“啥是领域

“领域…… 这个……”  这家伙把我问住了。 

“比如说,UI编程就是一个特定领域,Web自动化测试也是个领域,还有些业务相关的,税务逻辑处理,金融逻辑处理,都是特定的领域。” 我通过举例做了一个解释。

“那这个软件就是针对UI编程领域的DSL喽

“是的,你看这个软件,当你输入 view controller #TestVC的时候,它就会生成一个名称为TestVC的Controller类, 当你输入add stackview #stack constrained的时候,它就会自动加上一个名称为stack的View。 注意这里的关键字, view, controller , add ,stackview,都是人家预先定义好的关键词,还有那个# ,你是不能乱来的。”

“有点明白了,也就是说,这个Metacode自定义了一个更加高层的语言,程序员可以用这个语言中的指令来写程序, 然后Metacode再把他们转化成实际代码。”

“对啊,就是这个意思,但是这个Metacode的DSL并不是一个通用的编程语言,你不能用它来做别的事情,你想想,你还用过哪些DSL

DSL案例

我看到张大胖的微信一直显示“正在输入”, 又捡起了破冰行动。 

过了一会儿,张大胖的消息来了:“Ant算不算

“当然算了,你看Ant中定义的任务,专门是用来做Build的,你只要用XML描述一下Build的过程,根本不用写具体代码, 所以它是Build领域的DSL。”

对类进行打包

把文件从一个地方复制到另外一个地方

运行JUnit

“照欣哥这么说, Maven也算是DSL喽

“对啊,Maven充分利用了约定终于配置的思路, 简化了Ant中很多不必要的Task,只要你把目录结构安排好,Maven就能运行。”

“还有哪些知名的DSL  张大胖继续问。

“Ruby on Rails(简称)中的Active Record是DSL的一个典型。”

“又一个新词!什么是Active Record”  隔着屏幕,我都能感受到张大胖有点儿不满。 

“Active Record是一种数据源架构模式, 一个对象表示数据库表的某一行数据,这个对象不但有领域逻辑,还封装了对数据库的访问。想了解细节的话,可以看看Martin Fowler写的《企业应用架构模式》,这是一本很老,但是又很经典的书了。”

“那RoR是怎么用DSL来实现Active Record的

“当你这么写了以后,神奇的事情发生了,按照约定,RoR会得知在数据库表中下图所示的关系,然后你的Author类突然拥有了很多有用的新方法。”

推荐阅读

  • 吴恩达Drive.ai因经营困难“卖身”苹果

  • 上海交大张拳石:神经 络的可解释性,从经验主义到数学建模

  • 我发现一个新的软件,用自然语言编程!非常酷!

  • 香港的房价真的那么贵吗数据挖掘真相!

  • 我花了 10 年,从工厂妹逆袭为纽约高薪程序员

  • 面试官问你MyBatis中有哪些设计模式,把这篇文章发给他

  • 中本聪的一失之虑让比特币趋于中心化, 那这些问题的严重性, 你了解吗/p>

  • 想换行做 5G 的开发者到底该咋办/p>

  • 如何向妹子解释:为啥 5G 来了需要换 SIM卡!

640x_fmt=png 你点的每个“在看”,我都认真当成了喜欢

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月24日
下一篇 2019年5月24日

相关推荐