Использовать русскую версию языка предполагается [если говорить серьёзно] в основном в отечественных военных разработках. (Я как раз думаю над тем, как сформулировать предложение для военных.)
Ладно, согласен. Пусть стиль для хранения файлов выбирается большинством голосов. Но я бы попробовал попрограммировать в предложенном мной однобуквенном стиле.
Ну хорошо. А если посмотреть с точки зрения не вас, как уже имеющего опыт программирования человека, а точки зрения нового поколения детей. Какому языку программирования вы бы стали их учить?
Я понимаю, что операция возведения в степень используется крайне редко, но… если и вводить в язык оператор для её обозначения, то это должно быть соответствующее обозначение (и я предполагаю, что основной причиной отказа от ^ в качестве оператора возведения в степень является использование этого символа для операции поразрядного XOR (исключающего ИЛИ), что я считаю неудачной идеей — ну, во всяком случае новичков в программировании это точно сбивает с толку)
Хотя я могу понять разработчиков языка Си… у них просто не было времени на качественный выбор символов для операторов языка [другими словами, в их время это была неприоритетная операция, гораздо важнее были другие задачи]. Но я бы взял обозначение операции исключающего ИЛИ как (+), так как эти три символа похожи на символ ⊕, который используется в алгебре логики\Boolean algebra для обозначения операции ‘исключающего или’/сложения по модулю 2: . И хотя ⊕ используется чаще для одноразрядных значений, в Википедии встречается его применение для указателей и для массивов из байт
Как вы оцениваете сложность операции чего-то вроде replace_all('F', 'function', WHOLE_WORD).replace_all('S', 'switch', WHOLE_WORD)...?
Предполагается, что новая среда разработки будет позволять показывать код в удобном пользователю виде.
Однако ж они не реализовали формат отладочной информации, обеспечивающий "обратное вычисление". Как вы думаете, почему?
Legacy code.
Призовой вопрос: почему вы не сможете сделать это в одиночку?
Я верю, что смогу собрать команду профессионалов (и да, это не смотря на тот факт, что в данный момент времени над этим языком работаю я один), причём, надеюсь, что Хабр в этом сыграет не последнюю роль. :)(:
Как без этого, к примеру, выносить код из цикла?
Выносить код из цикла можно не нарушая порядок.
Можете привести конкретный пример?
Есть замечательная фраза ‘‘критикуешь — предлагай’’. Какой конкретно язык вы предлагаете взять за пример образцового синтаксиса?
И к тому же, предполагается поддержка русского языка хотя бы на уровне проверки жизнеспособности идеи о том, что ‘Программирование на кириллице может повысить производительность [труда [русских программистов]]’.
Вам не обидно, что
и при этом нет ни одного достойного языка программирования с русскими ключевыми словами?
А на русском многие ключевые слова при прямом переводе с английского звучат не очень. Как бы вы перевели, к примеру, this на русский? этот?
В данный момент проект находится на очень ранней стадии и до полноценного компилятора [тем более в бинарник (планируется поддержка только двух архитектур: x86-64 и ARM)] ещё далеко. Лично я отвечаю за трансляцию нового языка в C++17. Данный код странслируется в:
while (true)
{
switch (instr[i])
{
case '[':
nesting_level++;
break;
case ']':
if (--nesting_level == 0)
goto break_;
break;
}
i++;
Чем сложно написать fun, def или что то в этом роде?
< используйте полные версии зарезервированных слов, представленные в 3 и 4 столбцах таблицы базовых слов.
(Вариант fn[‘как в Rust’] обсуждается [возможные варианты: fun[‘как в Kotlin’], func[‘как в Swift’], function[‘как в JavaScript’]]. Вообще такие возможности языка будут отданы на откуп сообществу в процессе его разработки. И определятся результат будет простым большинством голосов. Я уже давно планирую систему голосования через GitHub (один коммит — один голос), но боюсь, что GitHub не выдержит "хабраэффекта".)
есть новые концепции, которые хочется реализовать.
А если нет новых концепций [не лично у меня, а вообще/‘в принципе’ не осталось больше новых концепций (вы ведь допускаете такой вариант в будущем?)], но хочется структурировать уже имеющиеся концепции.
Можно просто взять знакомый всем си-подобный или питоно-подобный и немного изменить/докинуть ключевых слов. Это вполне может увеличить аудиторию заинтересованных (хотя бы на процент тех людей, которые закрыли статью, ужаснувшись от кода на первой картинке)
Верно, можно. Но это могут[/должны] делать разработчики соответствующего языка программирования (того же Python). А что делать мне и тем, кто хочет создать новый язык программирования?
как выглядит сигнатура функции, которая принимает в себя один аргумент, являющийся перечислимым (enumerable) множеством от любого типа, на котором определена операция сложения?
Не очень понял о чём именно вы спросили, можете привести пример кода?
Я смог изобразить только вот этот код пиша ответ на ваш вопрос
T.enum Shape // or T.enum Shape {BOX, CUBE; SPHERE} (`BOX, CUBE` means here that BOX = CUBE and CUBE = BOX)
BOX, CUBE
SPHERE
F func(Shape s)
...
func(BOX)
F +(Shape s1, Shape s2) // just like in Ruby def +(...)
Shape r
...
R r
Вы и правда не понимаете. Или притворяетесь, что непонимаете? :)(:
Скрытый текст
Вы предлагаете:
пять вложенных циклов (ну по пятимерному массиву я хожу), и в каждом из них индексация по i.
‘Индексация по i в каждом’ означает ‘индексация по i во всех пяти массивах’, а именно:
foreach(var i in someArray)
foreach(var i in i)
foreach(var i in i)
foreach(var i in i)
foreach(var i in i)
{
DoSomethingTo(i); // как здесь обратиться ‘к индексу второго массива сверху’
}
В предлагаемом языке ваш код можно записать так:
L(i) someArray
L(i) i
L(i) i
L(i) i
L(i) i
DoSomethingTo(^^^i)
А можно так:
L(i) someArray
L(j) i
L(k) j
L(l) k
L(m) l
DoSomethingTo(j)
Что успешно реализовано?
Type inference для словаря и массива.
Я предлагаю взять реализацию из Nemerle, поэтому ваши вопросы следует задавать разработчикам Nemerle.
По первому вопросу: прошу назовите хотя бы один язык программирования, в котором возможно ‘обратиться к индексу второго массива сверху’ или приведите код на любом (в том числе несуществующем) языке программирования более красивый, чем в предложенном в статье языке.
Это что, какой-то эзотерический язык, чтобы усложнить разработку в команде?
Это дело вкуса. Чтож, вам не понравилась такая запись. Кому-то может понравится…
Для меня скорее Perl — эзотерический язык, но это [моё мнение о Perl] не помешало ему завоевать популярность и найти своих сторонников.
Я вдохновлялся языками программирования Python и C++.
А какой язык программирования вы считаете образцом для подражания?
Вообще глобальная задумка такова, чтобы вместо букв были символы (большие).
Насчёт
увеличивать количество опечаток
прошу, приведите хотя бы один пример кода, где возможно перепутать символы (то есть, вместо одного зарезервированного словосимвола использовать другой, и при этом код останется корректным с точки зрения синтаксиса).
Это привлечёт дополнительное внимание к языку у патриотично настроенных граждан, особенно незнающих/‘плохо знающих’ английский язык.
Лично я считаю, что многие обозначения операторов языков выбраны неправильно, например ^ у новичков в программировании ассоциируется с операцией возведения в степень.
Я понимаю, что операция возведения в степень используется крайне редко, но… если и вводить в язык оператор для её обозначения, то это должно быть соответствующее обозначение (и я предполагаю, что основной причиной отказа от
^
в качестве оператора возведения в степень является использование этого символа для операции поразрядного XOR (исключающего ИЛИ), что я считаю неудачной идеей — ну, во всяком случае новичков в программировании это точно сбивает с толку)Хотя я могу понять разработчиков языка Си… у них просто не было времени на качественный выбор символов для операторов языка [другими словами, в их время это была неприоритетная операция, гораздо важнее были другие задачи]. Но я бы взял обозначение операции исключающего ИЛИ как (+), так как эти три символа похожи на символ ⊕, который используется в алгебре логики\Boolean algebra для обозначения операции ‘исключающего или’/сложения по модулю 2:
Как вы оцениваете сложность операции чего-то вроде
replace_all('F', 'function', WHOLE_WORD).replace_all('S', 'switch', WHOLE_WORD)...
?Предполагается, что новая среда разработки будет позволять показывать код в удобном пользователю виде.
Legacy code.
Я верю, что смогу собрать команду профессионалов (и да, это не смотря на тот факт, что в данный момент времени над этим языком работаю я один), причём, надеюсь, что Хабр в этом сыграет не последнюю роль. :)(:
Выносить код из цикла можно не нарушая порядок.
Можете привести конкретный пример?
И к тому же, предполагается поддержка русского языка хотя бы на уровне проверки жизнеспособности идеи о том, что ‘Программирование на кириллице может повысить производительность [труда [русских программистов]]’.
Вам не обидно, что
и при этом нет ни одного достойного языка программирования с русскими ключевыми словами?
А на русском многие ключевые слова при прямом переводе с английского звучат не очень. Как бы вы перевели, к примеру,
this
на русский?этот
?В данный момент проект находится на очень ранней стадии и до полноценного компилятора [тем более в бинарник (планируется поддержка только двух архитектур: x86-64 и ARM)] ещё далеко. Лично я отвечаю за трансляцию нового языка в C++17. Данный код странслируется в:
< используйте полные версии зарезервированных слов, представленные в 3 и 4 столбцах таблицы базовых слов.
(Вариант fn[‘как в Rust’] обсуждается [возможные варианты: fun[‘как в Kotlin’], func[‘как в Swift’], function[‘как в JavaScript’]]. Вообще такие возможности языка будут отданы на откуп сообществу в процессе его разработки. И определятся результат будет простым большинством голосов. Я уже давно планирую систему голосования через GitHub (один коммит — один голос), но боюсь, что GitHub не выдержит "хабраэффекта".)
А если нет новых концепций [не лично у меня, а вообще/‘в принципе’ не осталось больше новых концепций (вы ведь допускаете такой вариант в будущем?)], но хочется структурировать уже имеющиеся концепции.
Верно, можно. Но это могут[/должны] делать разработчики соответствующего языка программирования (того же Python). А что делать мне и тем, кто хочет создать новый язык программирования?
Не очень понял о чём именно вы спросили, можете привести пример кода?
Вы и правда не понимаете. Или притворяетесь, что непонимаете? :)(:
Вы предлагаете:
‘Индексация поi
в каждом’ означает ‘индексация по i во всех пяти массивах’, а именно:В предлагаемом языке ваш код можно записать так:
А можно так:
Type inference для словаря и массива.
Я предлагаю взять реализацию из Nemerle, поэтому ваши вопросы следует задавать разработчикам Nemerle.
Это будет очень полезно для новичков[‘новых пользователей IDE/‘среды разработки’’].
По первому вопросу: прошу назовите хотя бы один язык программирования, в котором возможно ‘обратиться к индексу второго массива сверху’ или приведите код на любом (в том числе несуществующем) языке программирования более красивый, чем в предложенном в статье языке.
По второму вопросу: это успешно реализовано в языке Nemerle, о чём я уже говорил в статье:
< также как тип массива или словаря в Nemerle определяется по типу первого добавленного в него элемента
Это дело вкуса. Чтож, вам не понравилась такая запись. Кому-то может понравится…
Для меня скорее Perl — эзотерический язык, но это [моё мнение о Perl] не помешало ему завоевать популярность и найти своих сторонников.
Ответ ‘заменить L.break на S.break’ прошу не предлагать, так как я считаю, что следует заменить одно из этих подслов на другое (например: L.exit).
А какой язык программирования вы считаете образцом для подражания?
Вообще глобальная задумка такова, чтобы вместо букв были символы (большие).
Насчёт
прошу, приведите хотя бы один пример кода, где возможно перепутать символы (то есть, вместо одного зарезервированного словосимвола использовать другой, и при этом код останется корректным с точки зрения синтаксиса).
Оставлю ваши вопросы [пока] без ответа.
Не знаю, что вам ответить. На ум приходит только такой [мной собранный] стишок:
Hardware and software
Require each other
And neither can be
Without the other.
Вот также программист и машина — не могут друг без друга. :)(: