Так что без нормальной грамматики не обойтись. Или получится что первая колонка в каждой строке определяет, как трактовать строку, что простоты явно не добавляет.
M>Язык настолько ультрапонятен и просот, что одинаковая операция в нем то массив объявляет, то мутабельную переменную
Да нет же. ".." Это бинарная операция, которая определена для двух операндов, целых чисел. И генерит массив от одного числа до другого.
А присваивание массива к мутабельной переменной говорит о как бы о комбинаторике. По какому именно диапазону будет меняться эта переменная в выражении. Тоесть это не массив, это всего лишь переменная. А мутабл переменная может принимать в выражении много значений, всеравно что этот блок заключили в цикл с инкрементом этой переменной. Так понятно ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>Основная цель — это создать очень компактный, черезвычайно легкий в понимании и отладке и при этом мощный язык программирования. На мой взгляд существующие языки в этом классе неоправданно сложны, напоминают шифр и просто мало популярны. PC_>Кодить на нем будет действительно просто и быстро. Ну скажем микро программки вроде реверса, палиндрома, фибоначчи или факториала до 1 минуты. PC_>А закодить шахматы займет ну может 1 час.
самое фиговое, что ты похоже пишешь все это серьезно...
мне, например, понятна такая формулировка данной задачи:
в порядке "нефиг делать", я решил попробовать разработать ультракомпактный язык, где каждый символ будет что-то значит (при этом оставаясь в рамках ascii без использования unicode)
да, при этом я понимаю, что ту же самую задачу решали тысячи людей до меня.
да, я также знаю, про оценку объема информации по колмогорову, и что информацию объемом 1Мb нельзя закодировать меньшим кол-вом бит (и соответственно, в ascii-шных символах, это будет — не меньше 10КB)
да, я ознакомился с опытом предшественников — Васи, Пети и Маши. их наработки активно использую, но как я уже говорил, я хочу пойти дальше — и заюзать действительно каждый символ ascii на всю катушку.
да, я понимаю — что компактность записи программы конфликтует с понятностью, но я все равно хочу сделать код ультракомпактный — может из этого родится что-то интересное.
для начала я решил остановиться на сложных алгоритмических задачах: решения реверси, шахматы и т.д.
и попробовать разработать базис языка для записи решений этих задач.
из такой формулировки видно, что:
1. автор видет стену (конфликт компактность/понятность, теоретический предел компактности)
2. автор не собирается прошибать с разбегу головой эту стену
3. у автора есть цель — поисследовать темную область, и найти там что-нибудь новое
4. автор фиксирует критерии, с помощью которых он будет измерять лучшесть/хужесть текущего достижения цели
5. у автора есть наметки и обоснование почему можно сделать по зафиксированным критериям лучше, чем-то что уже есть,
и почему до этого это не сделали другие
6. автор сформулировал почему его результат будет чем-то новым (отличаться от других), а не еще одним велосипедом.
7. автор фиксирует, как он будет разрешать стандартные конфликты (компактность/понятность)
8. автор явно зафиксировал последовательность развития — от записи простых решений игр (например, крестики/нолики 3x3) до сложных (шахматы) и далее
твоя же заявка, а также дальнейший разговор в теме — дает не очень хорошие ответы на эти вопросы
LVV>Здравствуйте, PC_2, Вы писали: PC_>>Родилась идея создать язык: PC_>>А) Простой PC_>>Б) Ультракороткий LVV>Вы опоздали. LVV>Никлаус Вирт создал подобный язык более 20 лет назад. И называется он Оберон. Описание — на 16 страницах.
НЕЕЕЕЕЕЕЕЕЕТ!!!!
(как вспомню, так вздрогну)
Здравствуйте, maxkar, Вы писали:
M>У кого там есть интерпретатор? Прогоните, плиз:
M>
M>E E:=1
M>E Y:= 3 * ( E + 1 )
M>
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
M>и M>
M>E E:=1
M>E Y:=3*(
M>E + 1
M>)
M>
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
M>
M>Так что без нормальной грамматики не обойтись. Или получится что первая колонка в каждой строке определяет, как трактовать строку, что простоты явно не добавляет.
+1
E:=1
Operators: :=1
Operator: :=
Error: 'Apply' operation for the RS.DOM.Common.Token doesn't support.
=======================
:=1
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, PC_2, Вы писали:
M>>>Ответь на неглупый. Вернее перепиши его так, чтобы он стал эквивалентен приведенному коду — без дикого жора памяти
PC_>>Мамут не стоит настаивать на ерунде. PC_>>Я то напишу, не вопрос и смогу работать с числами которые имеют, например, миллиард разрядов. PC_>>Как это сделал с рациональными числами, архитектура у меня позволяет еще не такое делать,
KV>Мой вопрос был не о максимальной разрядности чисел. Спрошу четче: для итерирования последовательности из n элементов в приведенных примерах создаются массивы для хранения их индексов. Это — единственный способ организации итераций? Если нет, то можно увидеть, как будет выглядеть альтернативный способ?
Это уже детали подкапотной реализации Интерпретатора. Поверьте, можно ото сделать также оптимально как на Си. Но как я задекларировал, в общефилософских происках языкостроения задачи перформанца меня волнуют мало, ибо опять легко приземляют и заставляют строить драйверный велосипед.
PC_>>но зачем, вот например Немерла не обуздает эту проблему никакими макросами, потому что пасется на типах Шарпа, ксате говоря довольно скудных
KV>Немерл не "пасется на типах Шарпа", они вместе с шарпом "пасутся" на системе типов .NET, в 4-ой версии которой есть такой тип как BigInteger, разрядность которого ограничена лишь объемом доступной памяти.
Я искренне радуюсь что в версии 4.0 появится тип BigInt. Также искренне надеюсь что по его аналогии подтянется и BigFloat и также рациональные числа.
Но мне, как вы понимаете, вестей из майкрософта ждать не стоит. Вечерок посидеть и вуаля
KV>"пасется на типах Шарпа, ксате говоря довольно скудных" — довольно красноречиво говорит об уровне вашего знакомства с платформой. Как при этом можно столь уверенно подвергать критике языки, не имея о них даже поверхностного представления — за гранью моего понимания
Если задуматься цепочка Си-Си++Си# не притерпела каких то революционных изменений. Эти все языки "драйверные", тоесть вынуждают программиста "думать" в терминах процессора, стека, байтов и тд.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
KV>>"пасется на типах Шарпа, ксате говоря довольно скудных" — довольно красноречиво говорит об уровне вашего знакомства с платформой. Как при этом можно столь уверенно подвергать критике языки, не имея о них даже поверхностного представления — за гранью моего понимания
PC_>Если задуматься цепочка Си-Си++Си# не притерпела каких то революционных изменений. Эти все языки "драйверные", тоесть вынуждают программиста "думать" в терминах процессора, стека, байтов и тд.
Здравствуйте, Mamut, Вы писали:
L>>А как будет выглядеть правый fold?
M>ну ясен перец
M>
M>*/1..2
M>
M>потому что напоминает слеш, который пытается схлопнуть то, что справа
Я ему выше именно это и предлагал, плюс "|" в качестве символа ФВП Map (потому что и не туда и не сюда) и ":" в качестве ФВП Filter (ибо на решето похоже). Не хочет
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, PC_2, Вы писали:
KV>>>"пасется на типах Шарпа, ксате говоря довольно скудных" — довольно красноречиво говорит об уровне вашего знакомства с платформой. Как при этом можно столь уверенно подвергать критике языки, не имея о них даже поверхностного представления — за гранью моего понимания
PC_>>Если задуматься цепочка Си-Си++Си# не притерпела каких то революционных изменений. Эти все языки "драйверные", тоесть вынуждают программиста "думать" в терминах процессора, стека, байтов и тд.
KV>Вы с Сергеем Зефиром (thesz) часом не знакомы?
Нет, не знаком. А почему вы спрашиваете ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
using System.Console;
using M;
def a = $[1..5] ^/ _*_; // Сила :super:
WriteLine(a);
KV>
KV>mutable X = $[1..5].ToArray();
KV>_= X.IterI((i, _) => X.IterI((j, _) => when (X[i] < X[j]) X[i] <-> X[j]));
KV>WriteLine(X.ToList())
KV>
А так RS может ? ( Я тут умолчу про Pattern Matching )
using System.Console;
mutable X = $[5, 4..1].ToArray();
foreach (_ in X with i)
foreach (_ when X[i] < X[j] in X with j)
X[i] <-> X[j]
WriteLine($"..$X");
P.S.
А почему бы RS не написать на Nemerle ?
Тогда автор и сможет сравнить на практике RS и Nemerle.
P.P.S.
А слабо компилятор Nemerle написать на RS ?
__>using System.Console;
__>using M;
Ну пока нет синтаксических конструкций языка для определения операторов.
Но на уровне интерпретатора это делается за минут 5.
Регексп подредактировать, добавить энумерейшин айтем и еще один иф,
Соверрайдить функции в типах, которые могут работать с этой операцией.
(Последнее может занять больше времени, зависит от количества типов которые могут работать с этой операцией,
например + для строк определен как конкатенация, а для целых как суммирование и тд)
__>def a = $[1..5] ^/ _*_; // Сила :super:
__>WriteLine(a);
__>
KV>>
KV>>mutable X = $[1..5].ToArray();
KV>>_= X.IterI((i, _) => X.IterI((j, _) => when (X[i] < X[j]) X[i] <-> X[j]));
KV>>WriteLine(X.ToList())
KV>>
__>А так RS может ? ( Я тут умолчу про Pattern Matching ) __>
__>using System.Console;
__>mutable X = $[5, 4..1].ToArray();
__>foreach (_ in X with i)
__> foreach (_ when X[i] < X[j] in X with j)
__> X[i] <-> X[j]
__>WriteLine($"..$X");
__>
__>P.S. __>А почему бы RS не написать на Nemerle ? __>Тогда автор и сможет сравнить на практике RS и Nemerle.
__>P.P.S. __>А слабо компилятор Nemerle написать на RS ?
Господа, я не хочу противопостовлять РС Немерле, всетаки РС это экспериментальный а не такой серьезный язык как Немерле, да и до короля Макросов ему далеко. Предлагаю еще раз оставить тему Немерле, пускай себе живет наздоровье, а я буду добиваться 1 кбайтных шахмат с внятным и простым исходником.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Пардон, там с тегами напутал
вот часть верхнего сообщения
Ну пока нет синтаксических конструкций языка для определения операторов.
Но на уровне интерпретатора это делается за минут 5.
Регексп подредактировать, добавить энумерейшин айтем и еще один иф,
Соверрайдить функции в типах, которые могут работать с этой операцией.
(Последнее может занять больше времени, зависит от количества типов которые могут работать с этой операцией,
например + для строк определен как конкатенация, а для целых как суммирование и тд)
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Чего ж ты не закодировал за 1 час? Отвечаю сам за тебя: твой язык не годится для программирования.
Ты зафлудил своим RS форум sql.ru, ничего там не доказал и теперь хочешь охмурить тех, кто тебя ещё не знает.
Ну узнают, дальше что? Лучше займись чем-нибудь полезным.