为什么需要这么奇妙的语言呢?

作为掉入IT坑的不幸者,还要研究IT考古学。。。有前瞻的先锋去玩AI,自然也要有后进的老头子去挖坟。

先进的语言很无厘头,看了半天不懂每个细节,而功能一目了然。
落后的语言很逻辑,一眼看穿每个细节,而功能一头雾水。

历史沉淀的太久,太庞大,每个人都知道万里长城就是一块一块砖在那垒,可人人都觉得了不起,而且除了秦始皇帝,以后就是有唐城,汉城,明城,也不会有第二枚徽章颁发出去。

Forth,就是久远历史中的长城基石,在长城自身都成为古董的时代,非刨坟掘墓不可窥其究竟。

tutorial
http://www.forth.org/tutorials.html

forth语言IDE
https://www.forth.com

Forth的开发者很酷,在他的书里面有这么几句话:那谁就要问了,既然forth这么有效,为什么我没有使用它?这是因为你不知道有Forth!

Forth是一种高级语言
Forth是一种汇编语言
Forth是一个操作系统
Forth是一系列开发工具
Forth是软件设计哲学

如果说“那谁”还没镇住我,这后面几句话确实把我雷到了,如今是2019年,通过考古挖坟我才知道有Forth。当然,更不可思议的是如今,当今最核心的机器中完成最重要控制的东西竟然是Forth写的,而且从开发到现在少说也有30多年了,这是什么鬼?简直是IT界的p53基因啊!不由得让我想起了人类胚胎发育过程的反演现象,真的是从走了一遍IT长征。

长征开始。

/ 后面都是注释

ASCII 字符(8位)
Binary 二进制数
Byte 8位数
Cell 16位数
Decimal 10进制数
Hexadicimal 16进制数
Octal 8进制数

冒号如果在行首表示定义,用:后面跟的标记定义后续到;结尾的所有动作/内容。我理解等同于宏定义
:表示行首
; 表示行尾(与:配合)
" xxxx" 表示文本串
. 表示从栈中弹出并显示

3 4 + . stack push 3,stack push 4, 弹出4和3执行+,结果push进stack,.弹出stack并显示(也就是结果7)。为甚么是3,4,+而不是3,+,4呢?这是由于机器真正在执行的时候真的是先把数字压栈,最后才统一考虑运算器问题,否则运算器准备好,待计算的东西还不ready,岂不是要等?Forth还是机器语言嘛。

DUP 在stack中再copy出个副本

OVER,与DUP类似,但跳一格,把stack前一个cell里的东西dup出来

ROT,堆栈里cell转一下(rote),bottom的cell翻到最顶,其它依次下沉

DROP,这个不用说了,干掉堆栈里最后一个

.S 把stack里的东西全搞出来。(最后一个一定是0)

SWAP,交换堆栈内的两个单元

DABS,返回双位数的绝对值

n 1 DO balabala LOOP from 1 to n do balabala loop

很奇怪的表达方式:
数字中间的,./-:没什么切实的含义,仅仅分隔数字 / -放在数字开头当然表达负数,和在中间不同)。将数字分割为两个数字之后有啥用?数字最大值只有65535啊,要更大,那就要分割了,例如:
200,000 会压到堆栈两个数,200和0,显示出来呢?用D.就打印双长度了。与此同时需要使用到的是数字转换过程标记<# #> /分别是开始和结束,其中的#S则将数字转为ASCII, #表示一个数字,例如<# #S ### #>
我们做这种定义:
: UD. <# #S #> TYPE ; /TYPE表示打印出来
12,345 UD. 12345ok
12. UD. 12ok
0 UD. 0ok

: .PH# <# # # # # 45 HOLD #S #> TYPE SPACE ; / 其中#是一个数字, 4个#就是4个数字(从右边/栈底数?!),45 HOLD代表ASCII字符,对应的是-,#S是堆栈里剩余的数字,然后打印出来以上,最后加上空格。

!代表store,把xx存到变量,@表示提取到堆栈
VARIABLE DATE
12 DATE ! /表示定义变量DATE,把12保存(赋值)到DATE
DATE @ /表示提取出DATE的数值并保存到堆栈

EXECUTE 调用子程序
R> 表示返回上一层调用

用了一周时间终于读完一本入门小册子,按我的读书法和理解程度,估计还要读个五七八遍才行。欲知后事如何,且听下一遍继续。

Forth?什么鬼?相关推荐

  1. [译] Bob,函数式编程是什么鬼?

    原文地址:Intro to Swift Functional Programming with Bob 原文作者:Bob Lee 译文出自:掘金翻译计划 译者:Deepmissea 校对者:thank ...

  2. 前端测试 karma mocha should 都是什么鬼?

    测试TDD和BDD的区别 TDD是测试驱动开发,通过用测试用例来规范约束开发者,编写出质量更高的代码 BDD是行为驱动开发,描述行为路径,就像描述故事,产品和前线业务人员可参与到开发流程中,减轻测试和 ...

  3. Python的GIL是什么鬼,多线程性能究竟如何

    2019独角兽企业重金招聘Python工程师标准>>> #Python的GIL是什么鬼,多线程性能究竟如何 前言:博主在刚接触Python的时候时常听到GIL这个词,并且发现这个词经 ...

  4. CTF---Web入门第一题 what a fuck!这是什么鬼东西?

    what a fuck!这是什么鬼东西?分值:10 来源: DUTCTF 难度:易 参与人数:7942人 Get Flag:3358人 答题人数:3475人 解题通过率:97% what a fuck ...

  5. python是个啥-Python是个什么鬼?师兄用它一年发表5篇SCI!

    原标题:Python是个什么鬼?师兄用它一年发表5篇SCI! 发表论文,是每个科研人的必经之路! 说到论文,我读博的朋友小玮就被论文折磨得快崩溃了,甚至念叨着要放弃. 他把改了第八次的论文交上去,结果 ...

  6. 开课吧python好吗-Python是个什么鬼?求职为何这么难

    原标题:Python是个什么鬼?求职为何这么难 最近有一位读者准备实习开始找工作,来跟我交流他目前找工作遇到的一些情况: "我被找工作弄得满头包,觉得好像自己学的专业很没有市场,也没有很好的 ...

  7. 章磊回答: 姚期智提出的百万富翁难题被破解? 多方安全计算MPC到底是个什么鬼?

    姚期智提出的"百万富翁"难题被破解? 多方安全计算MPC到底是个什么鬼? 作者 | 章磊 责编 | Aholiab 出品 | CSDN.ARPA 在越来越多对数据隐私的担忧声中,政 ...

  8. To Noob Json是什么鬼?

    转载请注明出处王亟亟的大牛之路 供应商A:那我们数据怎么交互啊?HTTP吧?那内容呢?JSON?XML? 小菜鸟B:JSON什么鬼? 为了菜鸟们避免以上情况楼主写一发JSON的博文,废话不多!開始! ...

  9. 【干货】CRM大牛告诉你,Salesforce到底是个什么鬼?

    本期主题 | Salesforce到底是个什么鬼 分享嘉宾 | 裘思博 Celnet雨花石创始人&合伙人 文字整理 | 莜筱 入群请联系管理员 37℃ 微信号:erhuoyimei 裘思博 本 ...

  10. 【算法与数据结构】堆排序是什么鬼?

    排序算法相必大家都见过很多种,例如快速排序.归并排序.冒泡排序等等.今天,我们就来简单讲讲堆排序. 在上一篇中,我们讲解了二叉堆,今天的堆排序算法主要就是依赖于二叉堆来完成的,不清楚二叉堆是什么鬼的, ...

最新文章

  1. SendMessage、PostMessage原理
  2. 跨源资源共享(CORS)漏洞修复
  3. 非涉密计算机检查的通知,关于开展非涉密计算机及可移动存储介质专项清理活动的紧急通知...
  4. 如何发送html email,如何发送HTML电子邮件?
  5. Java IO学习--(五)字节和字符数组
  6. [算法]有趣算法合辑[21-30]
  7. Python写数据结构:单向循环链表
  8. 详解数据库锁机制和原理
  9. android 支付宝第三方支付
  10. Android单点触摸与多点触摸
  11. -转载-我要我们在一起故事原著
  12. 移动端抓包工具spy-debugger使用
  13. 基本流水线与记分牌算法和Tomasulo算法
  14. 展讯sprd_battery.c 充电驱动
  15. DS18B20读取温度并显示在数码管上
  16. 微型计算机系统原理接口与EDA设计技术,微型计算机系统与接口
  17. matlab中bwmorph函数的作用,Matlab中的bwmorph函数解释
  18. 哈工大焊接/电封材料科学基础B期末个人复习梳理
  19. 工信部印发《工业互联网专项工作组2021年工作计划》,关于5G如何部署?
  20. 打开Excel,原有的数字内容都自动转换成日期格式的问题(亲自实践)

热门文章

  1. 【交易架构day10】阿里双十一交易核心数据及其它公司调研
  2. 电力电子 中英 对照
  3. Win10-C盘清理方法全攻略(从剩余9G到剩49G)
  4. 易语言 文件捆绑机的原理【转载】
  5. Python3 多种方式爬取最新30期双色球历史数据存入csv
  6. Win11复制粘贴不了怎么办?Win11无法复制粘贴的解决方法
  7. 微信小程序实现路线规划demo
  8. 基站定位(Google API)
  9. 电子计算机的发展经历了四代
  10. 【转载】Android系统裁剪方法