Существует ли язык программирования без структур средств управления или операторов?

Как 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
9
задан JJJ 31 July 2015 в 12:11
поделиться

18 ответов

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

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

Все, что у вас есть, - это переменные, приложение функции и создание функции. По мощности он эквивалентен машине Тьюринга. Существуют хорошо известные кодировки (обычно «кодировки Чёрча») для таких конструкций, как

  • If-then-else
  • while-do
  • рекурсия

и таких типов данных, как

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

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

4
ответ дан 4 December 2019 в 06:22
поделиться

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

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

7
ответ дан 4 December 2019 в 06:22
поделиться
  1. Assembly
  2. Befunge
7
ответ дан 4 December 2019 в 06:22
поделиться

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

3
ответ дан 4 December 2019 в 06:22
поделиться

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

2
ответ дан 4 December 2019 в 06:22
поделиться

В синтаксисе Makefile нет операторов или управляющих структур. Я бы сказал, что это язык программирования, но это не Turing Complete (в любом случае без расширений стандарта POSIX)

0
ответ дан 4 December 2019 в 06:22
поделиться

Как насчет Anywhere ?

Программы состоят из «списка дел» - серии операторов, которые выполняются в случайном порядке. Каждый оператор может содержать предварительное условие, которое, если оно не выполнено, приводит к тому, что оператор откладывается до некоторого (случайного) более позднего времени.

0
ответ дан 4 December 2019 в 06:22
поделиться

Как насчет FRACTRAN ?

FRACTRAN - это полный по Тьюрингу эзотерический язык программирования, изобретенный математиком Джоном Конвеем. Программа FRACTRAN представляет собой упорядоченный список положительных дробей вместе с исходным положительным целым числом n . Программа запускается путем обновления целого числа ( n ) следующим образом:

  1. для первой дроби f в списке, для которого nf является целым числом, замените n на nf
  2. повторяйте это правило до тех пор, пока ни одна дробь в списке не даст целое число при умножении на n , затем остановитесь.

Конечно, в правиле 2 есть неявная структура управления.

1
ответ дан 4 December 2019 в 06:22
поделиться

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

7
ответ дан 4 December 2019 в 06:22
поделиться

Prolog *

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

3
ответ дан 4 December 2019 в 06:22
поделиться

D (используется в DTrace)?

0
ответ дан 4 December 2019 в 06:22
поделиться

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

2
ответ дан 4 December 2019 в 06:22
поделиться

Я не совсем понимаю концепцию, но я думаю, что PostScript соответствует критериям, хотя он вызывает все свои функции-операторы (так, как LISP вызывает все свои операторы-функции).

0
ответ дан 4 December 2019 в 06:22
поделиться

Тогда я сначала упомяну мозг **** .

2
ответ дан 4 December 2019 в 06:22
поделиться

Итак... вы ищете суперпростой язык? Как насчет пакетного программирования? Если у вас есть любая версия Windows, то у вас есть доступ к компилятору Batch. Он также более полезен, чем вы думаете, поскольку вы можете выполнять основные функции работы с файлами (копирование, переименование, создание каталога, удаление файла и т.д.)

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

Пример

  1. Откройте блокнот и создайте файл .Bat на вашем компьютере с Windows.
  2. Откройте .Bat файл с помощью блокнота
  3. В первой строке введите "echo off"
  4. Во второй строке введите "echo hello world"
  5. В третьей строке введите "pause"
  6. Сохраните и запустите файл.

Если вы ищете способ изучить некоторые очень основы программирования, это хороший способ начать. (Только будьте осторожны с командами Delete и Format. Не экспериментируйте с ними.)

-1
ответ дан 4 December 2019 в 06:22
поделиться

Язык программирования СМИТ:

http://esolangs.org/wiki/SMITH

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

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

2
ответ дан 4 December 2019 в 06:22
поделиться

XSLT (или XSL, некоторые говорят, что) имеет структуры управления, такие как ,if и for,но вы должны в целом избегать их и решать все, написав правила с правильным уровнем специфики. Таким образом, структуры управления существуют, но подразумеваются тем, что делает механизм перевода по умолчанию: применение потенциально рекурсивных правил.

Ибо и , если (и некоторые другие) действительно существуют, но во многих ситуациях вы можете и должны обойти их.

0
ответ дан 4 December 2019 в 06:22
поделиться

APT - (инструмент автоматического программирования), широко используемый для программирования Станки с ЧПУ. Язык также не имеет возможностей ввода-вывода.

0
ответ дан 4 December 2019 в 06:22
поделиться