Есть ли язык программирования без структур управления или операторов? - PullRequest
9 голосов
/ 28 апреля 2010

Как Smalltalk или Lisp?

EDIT

Где структуры управления похожи:

     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

Ответы [ 18 ]

7 голосов
/ 28 апреля 2010

почему ты никогда раньше не слышал о лиспе?

7 голосов
/ 29 апреля 2010
  1. Монтаж
  2. Befunge
7 голосов
/ 28 апреля 2010

Вы имеете в виду без специального синтаксиса для достижения того же?

Многие языки имеют управляющие структуры и операторы, которые «действительно» представляют собой некоторую форму передачи сообщений или функциональную систему вызовов, которую можно переопределить. Большинство «чистых» объектных языков и чисто функциональных языков отвечают всем требованиям. Но они все еще будут иметь ваш «+» и некоторую форму блока кода - включая SmallTalk! - так что ваш вопрос немного вводит в заблуждение.

4 голосов
/ 29 апреля 2010

Чистое лямбда-исчисление? Вот грамматика для всего языка:

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

Все, что у вас есть, это переменные, приложение функций и создание функций. По мощности это эквивалентно машине Тьюринга. Для таких конструкций, как

, существуют хорошо известные кодировки (обычно "церковные кодировки").
  • если-то-иначе
  • во время дел
  • рекурсия

и такие типы данных, как

  • Booleans
  • 1019 * целые числа *
  • запись
  • списки, деревья и другие рекурсивные типы

Кодирование в лямбда-исчислении может быть очень увлекательным - наши студенты сделают это на курсе иностранных языков будущей весной.

3 голосов
/ 29 апреля 2010

Пролог *

* Я не могу быть привлечен к ответственности за любые разочарования и / или головные боли, вызванные попыткой разобраться с этой технологией, а также я не несу ответственности за любой ущерб, причиненный вами в результате вышеупомянутых условий, включая, помимо прочего, , сломанная клавиатура, перфорированный экран и / или вмятины в форме головы на вашем столе.

3 голосов
/ 28 апреля 2010

Forth может быть квалифицирован, в зависимости от того, что именно вы подразумеваете под «нет структур управления или операторов». Может показаться, что они есть у Forth, но на самом деле все они - просто символы, и «управляющие структуры» и «операторы» могут быть определены (или переопределены) программистом.

2 голосов
/ 29 апреля 2010

В Tcl нет управляющих структур; есть только команды, и они могут быть переопределены all . Каждый последний. Там также нет операторов. Ну, за исключением выражений, но на самом деле это просто импортированный иностранный синтаксис, который не является частью самого языка. (Мы также можем импортировать полный C или Fortran или что-нибудь еще.)

2 голосов
/ 29 апреля 2010

Язык программирования SMITH:

http://esolangs.org/wiki/SMITH

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

Он не имеет прыжков и завершен по Тьюрингу. Я также сделал переводчика на Haskell для этого плохого мальчика несколько лет назад.

2 голосов
/ 28 апреля 2010

А как насчет логотипа или, более конкретно, графика черепахи ? Я уверен, что мы все помним это: PEN UP, PEN DOWN, FORWARD 10 и т. Д.

2 голосов
/ 28 апреля 2010

Сначала я упомяну мозг ****, затем.

...