Здравствуйте, goondick, Вы писали:
G>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>достаточно иметь IF, GOTO и LABEL? что-то еще?
Здравствуйте, goondick, Вы писали:
G>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>достаточно иметь IF, GOTO и LABEL? что-то еще?
И сам язык.
А ты написал только операторы управления (и то не все, подпрограмм нет).
И зачем это надо, если ты не разрабатываешь процессоры?
Здравствуйте, goondick, Вы писали:
G>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>достаточно иметь IF, GOTO и LABEL? что-то еще?
Вопрос непонятен — что такое "оператор" вне контекста некоторого языка программирования или класса языков?
Можно взять другую модель исполнения, не имеющую вообще никаких операторов.
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
DM>Одного: DM>http://semarch.linguistics.fas.nyu.edu/barker/Iota/
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
DM>Одного: DM>http://semarch.linguistics.fas.nyu.edu/barker/Iota/
Это надо сначала пыхнуть такой же травы, что и автор этой статьи. У меня к сожалению такой нет.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>>достаточно иметь IF, GOTO и LABEL? что-то еще?
К>недавнюю тему
Здравствуйте, LuciferSingapore, Вы писали:
LS>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>>достаточно иметь IF, GOTO и LABEL? что-то еще?
LS>Вопрос непонятен — что такое "оператор" вне контекста некоторого языка программирования или класса языков? LS>Можно взять другую модель исполнения, не имеющую вообще никаких операторов.
Ну, в таком случае можно взять нормальные алгоритмы Маркова. Там программа — это последовательность формул подстановки. С какой-то точки зрения здесь можно увидеть оператор подстановки, согласно этому определению.
Или, например, частично рекурсивные функции. В них есть понятие оператора, но это другое понятие.
Здравствуйте, D. Mon, Вы писали:
DM>Там есть не меньше двух — стрелки двух видов.
Это называется формулами подстановки, а не операторами. Да, с некоторой точки зрения можно назвать их операторами.
Можно взять, к примеру, частично рекурсивные функции. В них есть понятие оператора, но это другое понятие, не то, на которое дал ссылку топикстартер.
Проблема чисто терминологическая.
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>>достаточно иметь IF, GOTO и LABEL? что-то еще?
A>А ты написал только операторы управления (и то не все, подпрограмм нет).
так можно подпрограмму организовать с GOTO и LABEL
A>И зачем это надо, если ты не разрабатываешь процессоры?
пока не придумал зачем. Может детей в дошколке обучать или пенсионерам там для забавы..
Здравствуйте, goondick, Вы писали:
G>Здравствуйте, alpha21264, Вы писали:
A>>Здравствуйте, goondick, Вы писали:
G>>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>>>достаточно иметь IF, GOTO и LABEL? что-то еще?
A>>А ты написал только операторы управления (и то не все, подпрограмм нет).
G>так можно подпрограмму организовать с GOTO и LABEL
Тогда метка должна быть не простая, а вычислимая.
A>>И зачем это надо, если ты не разрабатываешь процессоры?
G>пока не придумал зачем. Может детей в дошколке обучать или пенсионерам там для забавы..
Начни с постановки задачи. Сразу поймешь куда нужно оптимизировать язык.
PS.
Сейчас язык программирования редко является только языком.
Чаще это платформа — язык, компилятор, ИДЕ, библиотеки.
Это если по взрослому.
Здравствуйте, LuciferSingapore, Вы писали:
LS>Здравствуйте, goondick, Вы писали:
G>>Оператор(программирование)
LS>Ну, в таком случае можно взять нормальные алгоритмы Маркова. Там программа — это последовательность формул подстановки. С какой-то точки зрения здесь можно увидеть оператор подстановки, согласно этому определению. LS>Или, например, частично рекурсивные функции. В них есть понятие оператора, но это другое понятие.
ну это же алгоритм а не программирование.
Тем болле мне надо чтобы еще язык был доступен в понимании например моей продвинутой бабушке. С такой мутью она даже крестики-нолики не напишет: { 0, 1, | } |0 → 0|| 1 → 0| 0 → ""
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, goondick, Вы писали:
G>>Здравствуйте, alpha21264, Вы писали:
A>>>Здравствуйте, goondick, Вы писали:
G>>>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>>>>достаточно иметь IF, GOTO и LABEL? что-то еще?
A>>>А ты написал только операторы управления (и то не все, подпрограмм нет).
G>>так можно подпрограмму организовать с GOTO и LABEL
A>Тогда метка должна быть не простая, а вычислимая.
ну да, так же думаю
A>>>И зачем это надо, если ты не разрабатываешь процессоры?
G>>пока не придумал зачем. Может детей в дошколке обучать или пенсионерам там для забавы..
A>Начни с постановки задачи. Сразу поймешь куда нужно оптимизировать язык.
A>PS. A>Сейчас язык программирования редко является только языком. A>Чаще это платформа — язык, компилятор, ИДЕ, библиотеки. A>Это если по взрослому.
компилятор и ИДЕ не проблема, с библиотеками сложнее, они тоже должны быть с низким порогом вхождения.
Здравствуйте, goondick, Вы писали:
G>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
Основная структурная теорема говорит, что достаточно следования, альтернативы (if) и итерации (while).
Есть также следствие, что достаточно следования и while:
1. if (b) { foo; } else { bar; } эквивалентно if (b) { foo; }; if (!b) { bar; }.
2. if (b) { foo; } эквивалентно __flag = false; while (!__flag && b) { foo; __flag = true; }.
Но это всё в предположении, что работаем в императивной парадигме. В функциональной, например, базис составляют суперпозиция, примитивная рекурсия и минимизация.
Здравствуйте, goondick, Вы писали:
G>Здравствуйте, alpha21264, Вы писали:
A>>PS. A>>Сейчас язык программирования редко является только языком. A>>Чаще это платформа — язык, компилятор, ИДЕ, библиотеки. A>>Это если по взрослому.
G>компилятор и ИДЕ не проблема, с библиотеками сложнее, они тоже должны быть с низким порогом вхождения.
Сейчас делают так — берут уже готовую библиотеку, и придулывают к ней линк (бандл) к языку.
И вообще, я бы на макросах C++ что-нибудь сочинил бы.
Язык предоставляемый пользователю — какой мы сочиним.
А все остальные составляющие платформы — готовые.
У меня один товарищ так радиоаппаратуру описывал.
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, goondick, Вы писали:
G>>Здравствуйте, alpha21264, Вы писали:
A>>>PS. A>>>Сейчас язык программирования редко является только языком. A>>>Чаще это платформа — язык, компилятор, ИДЕ, библиотеки. A>>>Это если по взрослому.
G>>компилятор и ИДЕ не проблема, с библиотеками сложнее, они тоже должны быть с низким порогом вхождения.
A>Сейчас делают так — берут уже готовую библиотеку, и придулывают к ней линк (бандл) к языку.
A>И вообще, я бы на макросах C++ что-нибудь сочинил бы. A>Язык предоставляемый пользователю — какой мы сочиним. A>А все остальные составляющие платформы — готовые. A>У меня один товарищ так радиоаппаратуру описывал.
интересная идея. спасибо! я совсем про такую фишку забыл.
Здравствуйте, Ikemefula, Вы писали:
I>Ни одного, достаточно две цифры 0 и 1. На худой конец, кому сложно работать с 0 и 1, можно сделать 0..9 A..F.
I>Вызов функции будет выглядеть например так: 1100100100100001
Достаточно одной цифры, например 0
возможные программы будут выглядеть так 0, 00, 000, 00000000000 и тд
I>Ни одного, достаточно две цифры 0 и 1. На худой конец, кому сложно работать с 0 и 1, можно сделать 0..9 A..F.
I>Вызов функции будет выглядеть например так: 1100100100100001
Вообще интересный вопрос, кто то обзовет это кодированной записью другого языка,
но почему нельзя назвать именно языком?
со сложной семантикой исполнителя?
Есть формальные критерии?
Здравствуйте, goondick, Вы писали:
G>пока не придумал зачем. Может детей в дошколке обучать или пенсионерам там для забавы..
Насколько я понял нужен некий классический императивный процедурный язык, из достаточно известных
и реально хоть сколько-то живых самый минималистический это Оберон, кстати пенсионеры его как раз обожают
Другие варианты, уже подальше от майнстрима это Scheme и Forth.
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>>достаточно иметь IF, GOTO и LABEL? что-то еще?
A>И сам язык. A>А ты написал только операторы управления (и то не все, подпрограмм нет). A>И зачем это надо, если ты не разрабатываешь процессоры?
И я удивлен. Арифметические операции откуда взялись? Без операции присваивания и прибавления единицы просто никак. Для императивного программирования...
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
I>Ни одного, достаточно две цифры 0 и 1. На худой конец, кому сложно работать с 0 и 1, можно сделать 0..9 A..F.
I>Вызов функции будет выглядеть например так: 1100100100100001
А вызов функции лькуда взялся?
Полная картина будет из присвоения нуля, прибавления единицы и условного перехода. Вот это все.
Здравствуйте, FR, Вы писали:
C>>Достаточно одной цифры, например 0 C>>возможные программы будут выглядеть так 0, 00, 000, 00000000000 и тд
FR>Без разделителя не получится, а это еще один символ.
Получится. Я выше давал ссылку, там произвольную программу (целиком, не один оператор) представляли последовательностью из 0 и 1, начинающуюся с 1, т.е. натуральным числом. А натуральное число в унарной системе счисления можно записать одними нулями.
DM>Получится. Я выше давал ссылку, там произвольную программу (целиком, не один оператор) представляли последовательностью из 0 и 1, начинающуюся с 1, т.е. натуральным числом. А натуральное число в унарной системе счисления можно записать одними нулями.
Натуральными числами можно конечно как в анекдоте про рассказывание анекдотов по номерам.
А вот унарную систему счисления в компьютер по моему никак односимвольно не загнать.
Здравствуйте, FR, Вы писали:
FR>Натуральными числами можно конечно как в анекдоте про рассказывание анекдотов по номерам. FR>А вот унарную систему счисления в компьютер по моему никак односимвольно не загнать.
Здравствуйте, FR, Вы писали:
FR>Натуральными числами можно конечно как в анекдоте про рассказывание анекдотов по номерам.
Там не по номерам, вполне осмысленная кодировка на комбинаторах. Т.е. "анекдот" закодирован в самом номере, а не в посторонней памяти.
FR>А вот унарную систему счисления в компьютер по моему никак односимвольно не загнать.
Каждую программу — в свой файл. Файлы из односимвольного алфавита, просто разной длины. Подразумеваю, что остальная система более человеческая, не весь комп такой.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Chrome, Вы писали:
C>>Достаточно одной цифры, например 0 C>>возможные программы будут выглядеть так 0, 00, 000, 00000000000 и тд
FR>Без разделителя не получится, а это еще один символ.
Разделитель не нужен. Берем двоичный файл любой программы, интерпретируем его как одно число, записываем соответствующее этому числу количество нулей.
Здравствуйте, samius, Вы писали:
S>Здравствуйте, FR, Вы писали:
FR>>Без разделителя не получится, а это еще один символ. S>Разделитель не нужен. Берем двоичный файл любой программы, интерпретируем его как одно число, записываем соответствующее этому числу количество нулей.
Пардон, повторился доо того как дочитал ветку до конца
Здравствуйте, D. Mon, Вы писали:
DM>Каждую программу — в свой файл. Файлы из односимвольного алфавита, просто разной длины. Подразумеваю, что остальная система более человеческая, не весь комп такой.
Ну если рассматривать абстрактно компьютер это машина тьюринга никаких файлов в нем нет, лента же как минимум
двоична все-таки.
Здравствуйте, goondick, Вы писали:
G>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
G>достаточно иметь IF, GOTO и LABEL? что-то еще?
Наводящий вопрос: как с помощью этих операторов мы будем работать, к примеру, с дисплеем, с жёстким диском, или хотя бы с памятью? Или в нашем вычислительном устройстве нет ни того ни другого ни третьего?
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, goondick, Вы писали:
G>>вот задумался вопросом: чтобы создать самый элементарный язык программирования, сколько нужно минимум операторов?
I>Ни одного, достаточно две цифры 0 и 1. На худой конец, кому сложно работать с 0 и 1, можно сделать 0..9 A..F.
I>Вызов функции будет выглядеть например так: 1100100100100001
а одной единицы не хватит? что-то мне подсказывает, что хватит. в конце-концов, любую программу можно представить в виде 0..N единиц.
например,
1 — вывести "привет, мир"
11 -- спросить имя и сказать "привет [как тебя зовут]"
111 -- ...
1111 -- ...
...
111111111111111111...11111111111111111 -- вывести на принтер "войну и мир"
тут правда, возникает вопрос как обозначить конец программы, но это ж не обязательно должен быть символ. допустим, символы записаны на ленту. допустим, эта лента проходит через машину состояний. состояние машины в момент "лента кончилось" трактуется как результат работы программы
кстати, тут был анекдот, дескать в любой системе исчисления ее основание равно десяти. так вот, если основание 1, то ответ неверный. и основание будет равно 1.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, batu, Вы писали:
I>>>Вызов функции будет выглядеть например так: 1100100100100001 B>>А вызов функции лькуда взялся?
I>А ты внимательно посмотри
Я о том, что это тоже оператор
Здравствуйте, batu, Вы писали:
B>Здравствуйте, Ikemefula, Вы писали:
I>>Здравствуйте, batu, Вы писали:
I>>>>Вызов функции будет выглядеть например так: 1100100100100001 B>>>А вызов функции лькуда взялся?
I>>А ты внимательно посмотри B>Я о том, что это тоже оператор
Здравствуйте, Chrome, Вы писали:
I>>Ни одного, достаточно две цифры 0 и 1. На худой конец, кому сложно работать с 0 и 1, можно сделать 0..9 A..F.
I>>Вызов функции будет выглядеть например так: 1100100100100001
C>Вообще интересный вопрос, кто то обзовет это кодированной записью другого языка, C>но почему нельзя назвать именно языком?
C>со сложной семантикой исполнителя? C>Есть формальные критерии?
Это и есть язык. Можно даже одни единицы оставить, ничего не изменится
A>И вообще, я бы на макросах C++ что-нибудь сочинил бы. A>Язык предоставляемый пользователю — какой мы сочиним. A>А все остальные составляющие платформы — готовые. A>У меня один товарищ так радиоаппаратуру описывал.
Если кому интересно http://ru.wikipedia.org/wiki/SystemC