LINUX.ORG.RU

Дарую вам свою гениальную мысль о MetaTXTprog!

 , , ,


1

3

Так как текстовые языки надежно закрепились в умах нынешних программистов, я решил продумать идеальный текстовый язык для тех кто не захочет переходить на графику.

И так, для начала нужно выбрать хороший язык для основы, смысл делать велосипед? Раньше хорошим выбором был бы С, на нем как раз базируются многие успешные языки, но так как уже появился и получил популярность С++, у которого возможностей больше, нужно взять его! Можно конечно взять и С, для прототипа...

И так, какие проблемы имеются у С++? Ограниченность, Qt даже пришлось делать свой MOC, поэтому нужна расширяемость! А у кого лучшая расширяемость? Многие борщехлебы скажут что у Lisp'a, но это не так, он ограничен своими списками, а вот Forth нет, он ограничен разве что платформой на которой был запущен.

А какие проблемы есть у Forth? Это очень низкоуровневый язык, еще например в нем нет структур, их можно реализовать самому, но каждый реализует свои структуры которые не совместимы с другими! А даже если совместимы, нельзя улучшить ВСЕ структуры в Forth сразу, добавить им выравнивание к примеру, нужно улучшать каждую библиотеку по отдельности... Ужас.

Как же решить проблему Forth? А она сама решится, так как у нас будет база в виде C++ или C! Надо только дать удобный интерфейс ко всему этому, что бы можно было просто взять и пройти по полям структуры, добавить свои конструкции, юзать свои лексеры-парсеры... Тот же Forth, тольео вместо слов будут функции! Так же нужно обязательно взять идею с «одновременно компилятор и интерпретатор», многие удивятся, а зачем интерпретатор? Все просто, он нужен для расширяемости, что бы во время компиляции использовался код MegaTXTprog, а не какого нибудь препроцессора, как в Rust'овых макросах. Потом уже интерпретатор и всю ненужную среду можно будет выкинуть, главное что бы интерпретируемый код все настроил и расширил во время компиляции... Причем выкидывание нужно сделать опциональным, а вдруг понадобится eval? Его даже не нужно будет как то сложно реализовывать, Forth нам его подарит...

Жду такой язык уже джва года.

Домашнее задание:

  • Реализовать вычисление SEXP выражений на Forth для лучшего понимания сути языка.
  • Поиграться с Factor, попробовать собрать минимальную программу без среды.
  • Узнать что есть у конкурентов https://docs.racket-lang.org/guide/languages.html
Deleted
Ответ на: комментарий от iluha16

Да ты просто не понял идеи, хотя ничего революционного нету, просто удобство повысится, и не нужно будет городить костыли. Революционного ничего давно не появлялось вообще, просто качество растет скорей.

Deleted
()
Ответ на: комментарий от Deleted

Революционного ничего давно не появлялось вообще

как не появлялось. а метапрог.

просто удобство повысится, и не нужно будет городить костыли

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

iluha16
()
Ответ на: комментарий от Deleted

по сути хочешь ты JSON внутри source файла (очень странное желание на мой взгляд). включи в Makefile питоноскрипт запускаемый перед компилятором.

iluha16
()

Вот обратите внимание на различие в диалоге об Metaprog и вашей идей.
Там все время обсуждают ЖОПУ, а здесь хоть что-то.

Владимир

anonymous
()
Ответ на: комментарий от iluha16

как не появлялось. а метапрог.

Был же labview.

практического применения так же не видно, все примеры какие то исскусственные.

Это constexpr адекватный, он тоже нинужен? Ну мне самому C && Perl хватает.

Deleted
()
Ответ на: комментарий от Deleted

Да вообщем то к вам претензий и нет.
Ни в одном посте не старался вас обидеть.
Высказали мысль?
Спасибо /не скажу, что она «отменна» или что она «плоха». Скорее тема к обсуждению .../.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Ды окей. Это вообще широковещательное сообщение %)

Deleted
()
Ответ на: комментарий от anonymous

«Война - войной, а обед по расписанию».

Владимир

anonymous
()

для начала нужно выбрать хороший язык для основы

Закапывай. Язык — это инструмент, а не вещь в себе. Любой нормальный инструмент создаётся под задачу, исходя из имеющегося опыта и условий. Ты же, вместо анализа области применения, проблем существующих языков, выработки решений и постановки вменяемой задачи, собираешься делать «тяп-ляп — и готово». Не надо так

XMs ★★★★★
()
Ответ на: комментарий от XMs

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

Deleted
()
Ответ на: комментарий от Deleted

По мне так качество софта чаще падает, чем растет. Но это в основном в продукции корпораций типа гугла (с хромом и вебом) и M$ с виндой 10. Опенсорс все же становится лучше.

metaprog
()
Ответ на: комментарий от metaprog

Опенсурс тоже хужеет, имхо, но есть и нормальные проекты. Ну и я не про софт.

Deleted
()
Ответ на: комментарий от Deleted

Для hobbit.

Название Metaprog ассоциируется с системой программирования, использующей мета данные.
Но Metaprog не использует мета данные /и более того .../.
Название программы - «УкрEnglish» /meta с украинского переводится - цель/.

Владимир

anonymous
()
Ответ на: комментарий от Deleted

а еще у него не сишный синтаксис и ФП...

Будто что-то плохое.

LongLiveUbuntu ★★★★★
()

Для metaprog.

Жаль, что а-ля LabView вы не хотите разработать.
Речь идет не об повторении всего API LabView ... и 100% клона.
Или добавить в какой-либо GUI а-ля LabView диаграммы.

А затем уже бы между делом на основе этого API Metaprog разработали.
И все бы плакали от счастья /шутка/.

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Добавочка.

А что касаемо названия программы, то велика ли беда? Было бы что называть ... /в русском языке 32 буквы .../

Владимир

anonymous
()
Ответ на: комментарий от anonymous

Шутка.

Да и зубов 32 /по одному зубу на букву/.

Владимир

anonymous
()
Ответ на: комментарий от LongLiveUbuntu

Там же даже перегрузок (втчсл и операторов) нету, типов всяких: атомиков, int128, еще ирисок, итд. Зачем нужно?

Deleted
()
Ответ на: комментарий от LongLiveUbuntu

Так ничего нормально не реализуется, только асмовставками какими нибудь, но на что мне компилятор?

Deleted
()
Ответ на: комментарий от LongLiveUbuntu

перегрузка операторов

Для матриц, векторов, bigint... Много чего.

Deleted
()

Ты, кошатина, про метапрограммирование не слахал? Ruby, Вам о чём-нибудь говорит? Аллах Акбар. Это всё в итоге приводит к перегруженности, причём с множеством одинаковых операторов и функций, но с различными сторонними эффектами. Что ещё сильнее всё усложняет и в итоге приводит к стандартам поверх языка, типа именования. Это адок ещё похлеще чем Плюсы и КуТэ с его грёбанным моком.

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

Давайте взглянем не это вот дерьмо, сложившееся в мире, а точнее условные группы языков по Анону из Залупенберга:

  1. Низкоуровневое дерьмо
  • Низкоуровневое дерьмо (Си)
  • Низкоуровневое дерьмо обмазанное генераторами (Си++, и так далее)
  • Низкоуровневое дерьмо со статическим анализом времени жизни переменных (Ви, Раст, ещё всякие говны)
  1. Низкоуровневое дерьмо со сборкой мусора (компилируемое и нет)
  • Низкоуровневое медленное дерьмо со сборкой мусора (Котлин, Ява, Го)
  1. Скриптовое дерьмо
  • Яваскрипты всякие, Питоны, Пёрлы
  1. Вспомогательное скриптовое дерьмо
  • Луа, Квейк Си.
  1. Дерьмо для баз данных
  • ЭсКуЭль, Ка
  1. Дерьмо для декларативной разметки интерфейсов
  2. Ещё всякое дерьмо (стили, конфиги)
  3. Дерьмо типа Мэйк
  4. Дерьмо типа Баш, Бат, Повер Шелл

Из всех этих дёрьм ни одно не подходит на роль другого лучше. Как итог: есть выбор только внутри одной группы говна.

Но есть один пример, дерьмовый, но зато реальный – это Ruby on Rails. А точнее его экосистема: Coffescript, SASS, HAML, Ruby, Rake и т.д. Т.е. каждая группа говна прогнулась под систему и морфировала. Это феноменальное дерьмо, но факт остаётся фактом – экосистема стала связкой между группами говна, тем самым делая порог вхождения в каждое из ни, для изучившего хоть что-то одно – минимальным.

В том и прикол С, С++ и остальных языков с Си-подобным синтаксисом – они просто похожи. Нет ничего хорошего в плюсах или в яваскрипте, просто они похожи на Си и в своё время это сыграло роль, а потом просто на них написали уже слишком много софта, чтобы просто выкинуть нах. Си вообще говно, каких поискать, но на него множество долбоящеров дрочит и молится.

Т.е. нет смысла городить огород – будь он хоть самым пресамым отменьнейшим – у него нет ни экосистемы из дёрьм, ни порога вхождения ни чего. Если Вы прекрасно знаете русский и японский, то всё равно Вам будет трудно переключаться с одного языка на другой и, вероятно, нарушение порядка слов в предложениях стоит ожидать. Если Вы знаете Раст, то любая другая группа говна для Вас станет более трудной в освоении. И труднее будет переключиться на неё и обратно на Раст. Ибо это инопланетное поделие вообще не от мира сего.

Думаю дальше объяснять не нужно.

anonymous
()
Ответ на: комментарий от anonymous

Си вообще говно, каких поискать, но на него множество долбоящеров дрочит и молится.

На ассемблере донные мк будешь пограммировать?

Это всё в итоге приводит к перегруженности

А язык на задачу к недогруженности. Мой вариант это заодно и фреймворк для создания DSL.

Deleted
()
Ответ на: комментарий от anonymous

да будет здрав Анон из Залупенберга!

схоронил

Дерьмо типа Мэйк

не просто дерьмо, а дерьмище, которое можно генерировать из другого подвида дерьма, особями которого являются cmake, premake, и.т.д.

anonymous
()
Ответ на: комментарий от Deleted

При чём тут ассемблер? Ассемблер нужен только компилер-мейкерам в современном мире на асм всем насрать пару раз и больше. Выходи на улицу что ли иногда.

А язык на задачу к недогруженности.

Нет задачи надогруженности, есть задача связки разных групп дерьма между собой без лишнего геморя. И похожести этих групп дерьма. Си и Луа, например. Хотя и это пример довольно дерьмовый. Нормальной связки по сути нет нигде.

Простыми словами, Вы не туда смотрите.

anonymous
()
Ответ на: комментарий от anonymous

Шутка /настроение хорошее. Уж простите/.

Лучше - MetaWindows /пока не занято/.

Лучше - «Ы» /и пусть буржуины попробуют догадаться почему «Ы»/.

PS: А если серьезно - к разработке нужно подходить так, «Чтобы не было мучительно стыдно за бесцельно прожитые годы».

Владимир

anonymous
()
Ответ на: комментарий от anonymous

При чём тут ассемблер?

Хз. Так на чем пограммировать будешь еще?

Нет задачи надогруженности

А? Недогруженность языка проявляется, делают с нуля постоянно какого то.

Deleted
()
Ответ на: комментарий от Deleted

А? Недогруженность языка проявляется, делают с нуля постоянно какого то.

Ну так олени, у меня спросить забыли как оно в мире-то реально всё устроено.

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

Если не будет разделения, то получится перегруз. Ruby нахрен никому не нужен, там `a && b` от `a and b` отличается и мелочей подобных тьма. Хотя он довольно гибкий в плане метапрограммирования. Это его не спасает.

Если будет разделение, но не будет хорошей связки, то хипсторы начнут тащить туда своё говно а не использовать нативное. Как итог — 9 групп станут разрозненными языками, которые никому не нужны.

P.S. ещё ещё адовая 10-ая группа — шейдеры.

anonymous
()
Ответ на: комментарий от anonymous

ещё ещё адовая 10-ая группа — шейдеры.

это ж та же группа 1. низкоуровневого дерьма, на уровне микрух

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

Моя язык это позволяет же.

Deleted
()
Ответ на: комментарий от Deleted

Моя язык это позволяет же.

Твой язык слишком много треплется без хорошей на то причины. Перечитай мое сообщение и пойми это.

anonymous
()
Ответ на: комментарий от anonymous

это ж та же группа 1. низкоуровневого дерьма, на уровне микрух

В плане связывания с другими языками шейдеры выделяются в отдельную группу полного говна и ада. Юниформ матрикс бла бла бла. Думать не хочеться. Ни импортируешь толком, ни скомпилируешь толком, ничего хорошего. Как ВебАсм только ещё черезжопнее. В ВебАсм, чтобы сделать вызов нужно тыркать Яваскрипт. В шейдерах даже яваскрипт не спасёт. Юниформ устанавливается отдельно, и на этапе компиляции отловить ошибки связывания практически не реально (даже в теории). В итоге программист должен всё это в своей голове держать, а она срачами на ЛОРе забита.

anonymous
()
Ответ на: комментарий от Deleted

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.