加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

这个奇葩的语言,代码写完后连作者自己都看不懂了!

发布时间:2019-10-28 14:25:44 所属栏目:建站 来源:刘欣
导读:周末的Hello World咖啡馆依然热闹非凡,Java,Python,Lisp等一伙人坐在一起谈笑风生。这时候Java注意到门口来了一个面色阴郁的老头儿,在咖啡馆门口徘徊着,似乎不愿意进来。 Java上去询问, 老头儿说他叫Forth,被主人设计成了一幅古怪的模样,现在没有
副标题[/!--empirenews.page--]

周末的Hello World咖啡馆依然热闹非凡,Java,Python,Lisp等一伙人坐在一起谈笑风生。这时候Java注意到门口来了一个面色阴郁的老头儿,在咖啡馆门口徘徊着,似乎不愿意进来。

这个奇葩的语言,代码写完后连作者自己都看不懂了!

Java上去询问, 老头儿说他叫Forth,被主人设计成了一幅古怪的模样,现在没有多少程序员愿意用了,失去了往日丰厚的收入,只有流落街头。

Lisp笑道:“你坐什么来的?”

老头儿说:“骑电动车。”

“我们坐的都是奔驰、劳斯莱斯,你骑电动车!你骑电动车Hello World咖啡馆都不让你进来啊!”

Java邀请老头儿入座:“别听Lisp胡扯,你说说,你被设计成了什么古怪模样?”

Forth 说:“我被设计成了一个基于栈的编程语言,你看看,比如你要计算 3 + 4 . ,得这么来......”

Forth说着从怀里掏出了几张漫画。

这个奇葩的语言,代码写完后连作者自己都看不懂了!

(第一步:把数字3入栈)

这个奇葩的语言,代码写完后连作者自己都看不懂了!

(第二步:把数字4入栈)

这个奇葩的语言,代码写完后连作者自己都看不懂了!

这个奇葩的语言,代码写完后连作者自己都看不懂了!

(第三步:从栈中取出4和3, 执行3+4, 把结果7 入栈)

这个奇葩的语言,代码写完后连作者自己都看不懂了!

(第四步:从栈中取出数字7, 在屏幕上显示)

(图片来源:https://www.forth.com/starting-forth/1-forth-stacks-dictionary/)

Java 一看就乐了:“哈哈,漫画不错啊,这不和我Java是一样的吗?我也是基于栈的虚拟机啊。不信你看看码农翻身介绍我的文章《我是一个Java Class》。”

Python也乐了:“没错,我也是基于栈的虚拟机,咱们的工作方式是一样的。”

Forth疑惑的问道:“是吗?难道你们也是如此? 是不是还有很多程序员在雇佣你们啊?我看你们乐呵呵的,穿着光鲜亮丽,开豪车,工资不低吧?”

“一般一般,富裕谈不上,最多是个小康。既然咱们差不多,你怎么这么落魄啊!” Java问道。

“唉,我还没有给你说我的编程语法呢, 比如你要计算(3+4)* 5 ,程序员得这么写:”

3 4 + 5 *

Java和Python都大吃一惊:“难道今天遇到传说中的后缀表达法了? 这种写法可就太让程序员崩溃了。”

只见Lisp撇撇嘴:“小样,这就崩溃了,比我的前缀表达式差远了 (* (+ 3 4) 5 ) ”

Java不动声色:“那你如何定义一个函数呢?比如这个计算平方的函数 ”

  1. public int square(int x){      
  2.     return x * x;  
  3. }  

Forth说:“在我这里不叫函数,叫Word, 程序员需要这么定义。”

  1. : SQUARE DUP * ; 

(注:冒号表示开始定义,分号表示结束定义)

Java看到了熟悉的DUP,说到:“你这里也有DUP啊,我的字节码指令也用到了,它是把栈顶的元素复制一份,再压入栈中, 但是你这里怎么没有参数啊?”

“你这么快就忘了,我是一个基于栈的编程语言啊,参数会被放到栈中啊, 比如你想计算10的平方,需要这么调用:10 SQUARE, 展开后就相当于 10 DUP *”

10 先被压入栈中,DUP会把栈顶的元素复制一份,再压入栈中。这样栈中就有两个数字了,都是10 , 最后再调用乘法。

这个奇葩的语言,代码写完后连作者自己都看不懂了!

看到Java略有惊讶,Forth说:“这还不算什么, 你看看我的IF语句。”

: ?Negative 0 < IF ." less than 0" THEN ;

这是测试一个数字是不是小于0

-3 ?Negative 会输出 less than 0。

这个奇葩的语言,代码写完后连作者自己都看不懂了!

Java忍不住说到:“我去,有点变态啊,我的脑子中得时刻想着有一个栈,所有的操作都是基于这个栈的!”

Forth有点惊讶:“你不是说你是基于栈的虚拟机吗?怎么?和我不一样吗?”

“我们的虚拟机确实是基于栈的,但是我们的语法可是正常的语法啊 !程序员写的时候,用的是最熟悉的中缀表达式。”

( 3 + 4 ) * 5 ;

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读