9

喜欢 Smalltalk 或 Lisp?

编辑

控制结构如下:

     Java                 Python               
 if( condition ) {     if cond:           
     doSomething           doSomething     
 }                                         

或者

     Java                Python                  
 while( true )  {        while True:            
     print("Hello");        print "Hello"      
 }                                            

和运营商

 Java, Python
 1 + 2  // + operator 
 2 * 5  // * op

在 Smalltalk 中(如果我是正确的)那将是:

condition ifTrue:[
   doSomething
]

True whileTrue:[
   "Hello" print 
]
1 + 2 // + is a method of 1 and the parameter is 2 like 1.add(2) 
2 * 5 // same thing
4

18 回答 18

7

为什么你以前从未听说过 lisp?

于 2010-04-28T19:15:17.267 回答
7

你的意思是没有特殊的语法来实现相同的目标?

许多语言都有控制结构和操作符,它们“真的”是某种形式的消息传递或可以重新定义的功能调用系统。大多数“纯”对象语言和纯函数式语言都符合要求。但是他们仍然会有你的“+”和某种形式的代码块——包括 SmallTalk!——所以你的问题有点误导。

于 2010-04-28T19:20:38.980 回答
6
  1. 集会
  2. 贝芬奇
于 2010-04-28T20:17:11.903 回答
4

序言*

*对于因试图让您了解这项技术而引起的任何挫折和/或头痛,我概不负责,也不对您因上述情况(包括但不限于键盘损坏、打孔)而造成的任何损害负责屏幕和/或办公桌上的头形凹痕。

于 2010-04-28T20:20:11.863 回答
4

纯 lambda 演算?这是整个语言的语法:

e ::= x | e1 e2 | \x . e

您所拥有的只是变量、函数应用程序和函数创建。它的功率相当于图灵机。诸如此类的结构有众所周知的编码(通常是“教堂编码”)

  • If-then-else
  • 边做边做
  • 递归

和这样的数据类型

  • 布尔值
  • 整数
  • 记录
  • 列表、树和其他递归类型

用 lambda 演算编码会很有趣——我们的学生将在明年春天的本科语言课程中进行。

于 2010-04-28T23:45:51.210 回答
3

Forth 可能符合条件,具体取决于您所说的“没有控制结构或操作符”的确切含义。Forth 可能看起来有它们,但实际上它们都只是符号,程序员可以定义(或重新定义)“控制结构”和“操作符”。

于 2010-04-28T19:06:24.443 回答
2

Logo或者更具体地说,Turtle Graphics呢?我相信我们都记得,PEN UP、PEN DOWN、FORWARD 10 等。

于 2010-04-28T19:01:33.657 回答
2

在 Tcl 中,没有控制结构;只有命令,它们可以重新定义。每最后一个。也没有运营商。好吧,除了 in 表达式,但这实际上只是一种导入的外国语法,它不是语言本身的一部分。(我们也可以导入完整的CFortran或其他任何东西。)

于 2010-04-28T20:22:45.190 回答
2

那么我将首先提到大脑****

于 2010-04-28T19:39:14.087 回答
2

史密斯编程语言:

http://esolangs.org/wiki/SMITH

http://catseye.tc/projects/smith/

它没有跳跃并且是图灵完备的。几年前,我还为这个坏男孩做了一个 Haskell 解释器。

于 2010-04-28T20:09:55.580 回答
1

FRACTRAN怎么样?

FRACTRAN是数学家 John Conway 发明的图灵完备的深奥编程语言。FRACTRAN 程序是正分数的有序列表以及初始正整数输入n。该程序通过更新整数 ( n ) 来运行,如下所示:

  1. 对于列表中nf为整数的第一个分数f ,将n替换为nf
  2. 重复此规则,直到列表中没有分数乘以n时产生整数,然后停止。

当然,规则 2 中有一个隐含的控制结构。

于 2010-04-28T19:19:45.767 回答
0

D(在 DTrace 中使用)?

于 2010-04-28T18:59:36.890 回答
0

APT - (自动编程工具)广泛用于对 NC 机床进行编程。该语言也没有 IO 功能。

于 2010-04-28T19:05:50.480 回答
0

何时何地?

程序由“待办事项列表”组成——一系列以随机顺序执行的语句。每个语句都可以包含一个先决条件,如果不满足该先决条件,则会导致该语句被推迟到某个(随机)以后的时间。

于 2010-04-28T20:08:05.973 回答
0

XSLT(或有人说是 XSL)具有类似ifand的控制结构for,但您通常应该避免使用它们并通过编写具有正确特异性级别的规则来处理所有事情。所以控制结构就在那里,但翻译引擎默认做的事情是隐含的:应用潜在递归规则。

Forif(和其他一些)确实存在,但在许多情况下,您可以而且应该解决它们。

于 2010-04-28T19:55:26.217 回答
0

我对这个概念并不完全清楚,但我认为PostScript符合标准,尽管它调用其所有函数操作符(LISP 调用其所有操作符函数的方式)。

于 2010-04-28T22:28:55.963 回答
0

Makefile 语法似乎没有任何运算符或控制结构。我会说它是一种编程语言,但它不是图灵完备的(无论如何都没有对 POSIX 标准的扩展)

于 2010-04-28T23:56:47.957 回答
-1

所以...您正在寻找一种超级简单的语言?批处理编程怎么样?如果您有任何版本的 Windows,那么您可以访问批处理编译器。它也比您想象的更有用,因为您可以执行基本的文件功能(复制、重命名、创建目录、删除文件等)

http://www.csulb.edu/~murdock/dosindex.html

例子

  1. 打开记事本并在您的 Windows 机器上创建一个 .Bat 文件。
  2. 用记事本打开 .bat 文件
  3. 在第一行中,输入“echo off”
  4. 在第二行中,输入“echo hello world”
  5. 在第三行中,输入“暂停”
  6. 保存并运行该文件。

如果您正在寻找一种方法来学习一些非常基本的编程,这是一个很好的开始方式。(请注意删除和格式化命令。不要尝试这些。)

于 2010-04-28T20:04:07.637 回答