Pull to refresh

Comments 37

В репе есть дока (ODT) по синтаксису, но из нее я понял только что if-else можно писать как I-E. Почему, зачем — ничего не понятно.

Потому что основой языка является MUMPS. И такая форма команд там исторически сложилась. Это стандарт языка MUMPS.
Не нашёл самого интересного. А именно примеров кода. Или даже Hello World. Или схему принципа разделения кода и данных. Думаю Readme на гитхабе не помешает. Без этого лично мне даже искать дальше лень. Но за труд и открытие кода спасибо.

PS Предложения могут состоять из более, чем нескольких слов. Ато читая текст создаётся ощущение, что он написан для несмышленных, что немного напрягает. Моё личное имхо.
Пример кода в github есть. Принцип разделения кода и данных выбирает сам программист. Лично я выбираю эту грань в зависимости от того насколько настраиваемая программа должна быть. Чем гибче должно быть приложение, тем больше приходится выносить в данные.
Удачный язык программирования может существенно продвинуть всю ИТ отрасль.

Ключевое слово — удачный. Оснований считать ваш язык удачным пока нет.


(особенно учитывая насколько недружелюбна соответствующая репа на гитхабе)

Удачным пока этот язык считаю как минимум я. Остальные не имели счастья с ним познакомиться. Поэтому я и написал эту статью. С наскока понять достоинства и недостатки языка невозможно. В любую среду программирования надо входить, тем более в язык типа MUMPS. Техника программирования в таких языках существенно отличается.
Удачным пока этот язык считаю как минимум я

Это неудивительно.


Остальные не имели счастья с ним познакомиться.

Что тоже неудивительно, учитывая, как вы пишете материалы об этом языке.


Поэтому я и написал эту статью.

Из которой все так же не понятно ни какие преимущества предоставляет этот язык, ни как он выглядит, ни как им пользоваться. Проще говоря, как не было понятно, зачем он и какая от него польза, так и не понятно.

Статья не является описанием языка. Для этого дана ссылка на github. Там есть и пример кода и пример приложения,
Статья не является описанием языка.

Тогда к чему фраза "поэтому я и написал эту статью"?


Там есть и пример кода и пример приложения,

Ну я вот поискал и не нашел.

Выглядит весьма ужасно.

Команды языка выглядят стандартно, мало отличаются от других языков. По другому записывается обращение к переменным, да и то оно мало отличается от обращения к массивам.
Команды языка выглядят стандартно, мало отличаются от других языков.

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


Но если ваши "команды" — это то, с чего начинается каждая строчка, то… Do и Set, серьезно? Это просто мусор, "современные языки" способны отличить вызов функции или присвоение по синтаксису, "команды" для этого не нужны. K и S? Вас клавиатура бьет током за каждый символ?


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

А в тех языках которые знаю я команды все таки есть. Например в Си команды switch, goto, for, while, do while. Они вас не напрягают? В MUMPS системах на команды добавлен дополнительный функционал в виде условия выполнения этой команды и было бы не логично убрав команду потерять функционал. Так что это далеко не мусор. А последовательное решение. А насчет клавиатуры, я уже отвечал в комментариях на этот вопрос. Вопрос читаемости спорный и очень индивидуальный.
Например в Си команды switch, goto, for, while, do while.

Это не команды, это то, что по-английски называется statements, а по-русски — оператор.


Они вас не напрягают?

Неа. Удивительным образом, даже в C для присвоения или вызова функции не нужно ключевое слово.


В MUMPS системах на команды добавлен дополнительный функционал в виде условия выполнения этой команды

Вообще-то, операторы ветвления есть в большей части современных языков. А в Boo (Ruby, Perl, и не думаю, что этот список полон) есть и модификаторы.


Как видим, ни "команды", ни даже отдельные ключевые слова для присвоения или вызова функции для этого не нужны.


Так что это далеко не мусор.

С точки зрения чтения? Мусор.


Вопрос читаемости спорный и очень индивидуальный.

Ну так я и написал: я считаю. Другое дело, что если таких "я" достаточно много, ваш язык сложно считать удачным.

Как бы команды не назывались, это не меняет сути дела. Чем модификаторы лучше решения в MUMPS не понимаю. Наличие команд не является проблемой.
Как бы команды не назывались, это не меняет сути дела.

Конечно, не меняет: фраза "мало отличаются от других языков" как была необоснована, так и осталась.


Чем модификаторы лучше решения в MUMPS не понимаю.

Читаемостью.


Наличие команд не является проблемой.

Проблемой является ужасный код. А "команды", и вообще ваш синтаксис — это одна из причин этого.

Пробовал, там то же самое.

Я уже о нем писал статьи на Habr.

Я взялся за разработку своего языка не для удовлетворения собственных амбиций

Я считаю что удачного языка программирования нет.

Я пробовал размещать всю логику программы в данных.


Не проще ли попробовать попробовать сравнить с существующими решениями и парадигмами языков программирования и написать статью в этом ракурсе, без всяких этих Я?

А, то например, кто то считает и язык блоковых схем Дракон открытием в применении для IT специалистов, вне рассмотрения рамок его подходящего применения.

P.S. Неужели Вам охота ловить минусы в карму при публикации очередной своей статьи может и при рациональных мыслях при разработке своего языка?
Например автор языка Factor при переходе к его разработкe от практики использования Java ясно описал своё видение почему.

Статья написана с целью ознакомить с реализацией языка, а не для поднятия кармы. Я вообще не понимаю как карма подымается или опускается. Мысли других людей мне не доступны. Я пишу Я, потому что это именно мое мнение.
Где в статье с заголовком «Реализация интерпретатора MSH» — представлены детали реализации интерпретатора MSH? (ткните пальцем, если что то проглядел)

P.S. В Ваших публикациях только одна статья имеет положительный рейтинг.
Не пробовали понять почему?
Когда человек пишет часто Я, не подтверждая это значимой кому-то информацией (может и субъективной, но в сравнении с каким то своим описанным частным опытом), то это признак, что корона для головы немного великовата, не зная даже сколько Вам лет в текущем состоянии. :)
И, да этот пост некоторый троллинг для того, чтобы расширить зону восприятия внутреннего Я вашего Эго.
Реализация приведена на github. Какие детали реализации вас заинтересовали?
Ну короны к сожалению у меня нет. Короны носят короли, на плечах которых огромная ответственность за судьбу страны. А вы наверно имели ввиду шизофреников. Спасибо что сравнили меня хотя бы с королем.

Простите за грубость, а почему вы решили, что ваше мнение людям интересно?


Людям интересны они, а не вы. Так что стоило бы посмотреть на людей (не на себя) и рассказать, какую пользу ваш язык принесёт им. Допустим, веб-девелоперу (отдельно бэкэнду, отдельно фронтэнду). Или программисту встраиваемых систем. Или разработчику игр (там может быть несколько разных областей и языков в рамках одной игры). Или… В общем, взяли бы какой-нибудь продукт и показали, как с вашим языком будет лучше. Ну или в процессе написания поняли бы, что лучше не будет, и стали бы искать другую нишу. У MUMPS-то своя ниша была.


Ну и с реализацией вы не ознакомили. Впрочем, реализовать язык – не адски сложная задача, теория сейчас хорошо проработана.

Насчет людей, я надеюсь, что вы не одиноки во вселенной.
Насчет реализации уже написал. Реализация конечно не адская задача, но довольно сложная и теория мало помогает. С идеологией языка намного сложнее. Обычно дальше вариаций на тему Си никто не идет.

"Обычно дальше вариаций на тему Си никто не идет" – Lisp? ML с диалектами? Haskell?


Я вообще несколько удивлён, что вы, говоря про язык с размытой границей между данными и кодом, не сослались на Lisp, как на классику таких языков. Более того: в нём основная структура данных (список) фактически является двоичным деревом (состоит из узлов с двумя указателями CAR и CDR). И реализуется он изумительно просто.


Не менее интересен Хаскель. Тут полноценный компилятор реально сложен, но основы-то (ленивое вычисление) достаточно просты и уже дают возможности для всяких смешных трюков типа того, что if – обычная функция, а не специальная конструкция языка. Ну и есть готовые примеры реализации подобного лямбда-исчисления, только упрощённые до предела.

И Lisp и Haskell наверно прекрасные языки со своей интересной идеологией. Но идей как их улучшить у меня нет. Писать еще один их вариант, какой смысл? MUMPS мощный язык программирования, с хорошим потенциалом языка широкого использования. Но ему не дают вырваться из ограниченной области языка баз данных. Его реализации как языка широкого применения не существует. Идеологию такого языка пришлось проработать. То до чего я додумался и легло в основу языка MSH.

Не надо сразу улучшать, для начала достаточно их понять. Вам всё-таки не 14, чтобы придумывать новый язык, не изучив работы предшественников. Как минимум – не будете писать "Обычно дальше вариаций на тему Си никто не идет" ;-), а если повезёт – почерпнёте идеи.

Обычно дальше вариаций на тему Си никто не идет.

Вы, я так понимаю, про функциональные языки ничего не слышали?

Декларируется минимальное количество строк кода, и минимальное количество ошибок. А потом баааах — GOTO и переменные без объявления. И потом что-то типа «любая переменная может быть списком». Вы точно смотрели на современные языки?
Это проверенные временем и хорошо зарекомендовавшие себя конструкции в MUMPS.

Это как раз и называется "а на современные языки мы смотреть не будем". Я-то из поста подумал, вы хотите сделать удачный язык...


Чтобы язык был удачным, для каждой такой конструкции должно быть обоснование за пределами "это себя зарекомендовало в моем любимом языке" (потому что, как вы уже написали, этот язык почему-то не получил широкого распространения), и аргументированный выбор между такой конструкцией и ее альтернативами.

Sign up to leave a comment.

Articles