Форум программистов, компьютерный форум, киберфорум
CoderHuligan
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Что-то давно не писал у себя в блоге

Запись от CoderHuligan размещена 29.01.2022 в 15:16
Показов 4046 Комментарии 31

Давненько сюда не заходил. Активно изучаю ассемблер, подтягиваю знания по компиляторам. Хотелось бы создать минималистичный язык программирования с широкими возможностями, который бы ПООЩРЯЛ НЕструктурный стиль, который ближе всего автоматам. Нечто среднее между basic и oberon, но проще их обоих. Также хотелось бы изолировать его от особенностей ОС, чтобы он имел свою микросреду исполнения, включая в себя свой экран, свои графические функции. Нечто вроде ос в самой ос, где есть ядро, вокруг которого крутятся приложения-модули.
Не знаю, нужно ли это кому либо кроме меня, но в любом случае я уверен, что это то что нужно ради истины. У профи свои языки - пусть ими и занимаются. Я не профи, поэтому буду заниматься тем, что хочу. Может кому либо это и понравится.
ЯП(Язык Программирования) - модульный. Это значит, что каждый модуль может загружаться отдельно по первому требованию (как в среде Black Box).
Примерный синтаксис:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
MOD hhh
PROC ff*
  INT a* , d; // звездочка означает экспорт переменной
  a := 5
REM gjjf gjjjj // это комментраий
40
IF a-2 < b, 20; // если выражение возвращает true, то переход на 20
#40 //переход на метку 40
20
END PROC ff
 
 
END MOD hhh
Здесь нет блоков if then else, while, for, case.
Вместо них переходы из состояния в состояние. Напомню, что сокрытие состояний не позволяет описывать алгоритмы в диаграммах UML. Состояния должны быть явно выделены. В данном диалекте они имеют цифровые метки - номера строк, как в basic. Чтобы поименовать конкретное состояние и защитить его от изменения, когда происходит пересчет меток, то перед меткой-состоянием ставится комментарий. Этот комментарий фигурирует и в тех-документации на приложение.
Это сильно облегчает язык и помогает быстро его освоить. О дальнейших шагах буду сообщать, если решусь на это. Писать будем вместе.
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 31
Комментарии
  1. Старый комментарий
    Аватар для XLAT
    нужно ли это кому либо кроме меня
    послушай была тут недавно тема такая:

    пацан запутался там в бизнес-логике и у него депрессия.

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

    Помоги ему сделать торгового робота,
    он расставит их клоны по биржам.

    они будут рубить бабло, почти уверен, что Лаборант щедро поделится с тем, кто ему вселит такой оптимизм.

    а потом ты сможешь такой яз забабахать, что Маск без работы останется,
    потому что любой дворник сможет на этом язе ракеты прогать....
    Запись от XLAT размещена 29.01.2022 в 15:34 XLAT вне форума
  2. Старый комментарий
    Аватар для CoderHuligan
    Цитата Сообщение от XLAT
    пацан запутался там в бизнес-логике и у него депрессия.
    Мы вчера списались и я ему дал все ссылки. Пусть изучает.
    Запись от CoderHuligan размещена 29.01.2022 в 15:59 CoderHuligan вне форума
  3. Старый комментарий
    Аватар для CoderHuligan
    Добавлю.
    Звездочка после имени переменной означает, что эта переменная видима из вне процедуры. Это исключает поле параметров после имени процедуры при её объявлении. Звездочка после имени процедуры означает, что она видна в других модулях.
    Рекурсия запрещена. Это позволяет иметь свой пул переменных, которые видимы только в данной процедуре. Свой пул переменных позволяет при повторном обращении к процедуре не передавать параметры, которые уже инициализированы и не должны быть переинициализированы. Это ускоряет код. Например, у нас есть функция которая принимает два параметра: первый имя массива, а второй его длину. при повторном вызове данной функции не нужно заново передавать длину массива, так как в пуле переменных это значение уже проинициализировано.
    Также язык включает в себя: строки высшего уровня произвольной длины; обычные массивы произвольной длины, в том числе многомерные; гетерогенные массивы на списках; гетерогенные массивы на массивах(векторах). Кортеж это гетерогенный массив произвольной длины, который состоит из данных любых типов. Это придает мощность языку.
    Запись от CoderHuligan размещена 29.01.2022 в 16:12 CoderHuligan вне форума
  4. Старый комментарий
    Аватар для CoderHuligan
    Цитата Сообщение от XLAT
    а потом ты сможешь такой яз забабахать, что Маск без работы останется,
    потому что любой дворник сможет на этом язе ракеты прогать....
    Маску с Гейтцом и не снилось что мы сотворим. Проект просто ради хохмы но с прицелом на... а кто яхго знает)))
    Запись от CoderHuligan размещена 29.01.2022 в 16:15 CoderHuligan вне форума
  5. Старый комментарий
    Цитата Сообщение от CoderHuligan
    Добавлю.
    Звездочка после имени переменной означает, что эта переменная видима из вне процедуры.
    Метки внутри процедур видны извне?
    Запись от politoto размещена 29.01.2022 в 16:45 politoto вне форума
  6. Старый комментарий
    Аватар для XLAT
    ок, напишу открытым текстом, но кратко:

    Если Лаборант провалит своих роботов,
    то твой яз тоже обречён - ты его просто не сможешь написать,

    почему?

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

    т.е. чо я хочу сказать то:
    ты, я, лаборант это как спутанные фотоны, все мы в одной упряжке.

    ...
    Запись от XLAT размещена 29.01.2022 в 17:03 XLAT вне форума
  7. Старый комментарий
    Аватар для CoderHuligan
    Цитата Сообщение от politoto
    Метки внутри процедур видны извне?
    Можно сделать, чтобы были видны только экспортируемые метки. Это позволяет эмулировать сишные setjmp.
    Запись от CoderHuligan размещена 29.01.2022 в 17:11 CoderHuligan вне форума
  8. Старый комментарий
    Аватар для CoderHuligan
    Цитата Сообщение от XLAT
    экзистенциальные риски будущего имеют причины в настоящем,
    провал локального события в будущем, как свидетельство нестабильной состоятельности системы в целом.

    ...
    Я в курсе, что амеры назначили начало 3 мировой на февраль. Ну, дык и чо - у нас есть еще время. Порезвимся напоследок.
    Запись от CoderHuligan размещена 29.01.2022 в 17:13 CoderHuligan вне форума
  9. Старый комментарий
    Аватар для XLAT
    Цитата Сообщение от CoderHuligan
    амеры назначили начало 3 мировой
    нет - они назначали перекачку капитала из Европы к себе любимым...

    но я не про них, я про БОЛЕЕ ГЛОБАЛЬНЫЕ штуки...
    Запись от XLAT размещена 29.01.2022 в 17:47 XLAT вне форума
  10. Старый комментарий
    Аватар для Hrethgir
    Проблема в том, что название языка программирования, которое видится мне, взирая не тексты тут и в сравнении с собственными соображениями - представляется нечто ...
    да конечно-же case - это не то, то - массив процедур или меток, чтобы так писать - нужно иметь некий склад ума исключающий условности и условия, заменяющий любой их характер и приоритет правилами по принципу - не порождать новых сущностей без необходимости.
    Итак название -
    stalker trail (тропа сталкера)...ну потому что написание кода исходя из таких соображений действительно напоминает движение по узкой тропе...
    а название связанное с даосизмом было-бы не гуд.
    Запись от Hrethgir размещена 29.01.2022 в 23:25 Hrethgir вне форума
  11. Старый комментарий
    Аватар для Hrethgir
    и главное -исходя из диапазона допустимых значений можно приучить нейронку объявлять массивы меток, процедур, предлагать действия с ведущей переменной. Ведущая переменная - та переменная значение которой определяет индекс ячейки в массиве процедур или меток.
    То-есть...можно сделать ассистента и жить кодить припеваючи, не вспоминая особа это...Илон Маска.
    Но опять-же, такое программирование наверное будет не для всех подходяще, так как требует постоянной стандартизации решений везде и во всем. А это многим не нравится. Поэтому да - кодить припеваючи это позволит, а вот по жизни - не подыграет вообще никак.
    Запись от Hrethgir размещена 29.01.2022 в 23:33 Hrethgir вне форума
  12. Старый комментарий
    Аватар для CoderHuligan
    Можно просто - stalker. назвать.. Тут в самом названии есть слово talk, которое по ангийски значит разговор, а по русски толк - значит толковый язык

    и главное -исходя из диапазона допустимых значений можно приучить нейронку объявлять массивы меток, процедур, предлагать действия с ведущей переменной. Ведущая переменная - та переменная значение которой определяет индекс ячейки в массиве процедур или меток.
    Можно просто добавить процедурный тип, как в паскале и присваивать его векторам. при этом можно будет эмулировать ооп. А метки сделать вычислимыми, то есть их можно будет присваивать переменным и вычислять в ран-тайм. Я еще не знаю оставить выражения или избавиться от них.
    Например, вместо x := а + b * a - c, писать * b a; + b a; - x b c; . это префиксная запись без вложений. результат вычисления отдельной команды-операции присваивается первому аргументу. если первый аргумент равен 0, то он не участвует в операции. Таким образом можно вычислять сразу много аргументов: + a b c d e: при этом произойдет сложение всех аргументов, а результат будет помещен в первый аргумент. Такая запись позволяет читать программу слева направо как книгу, так как тут отсутствуют вложенные конструкции благодаря отсутствию выражений. Все делается через регистры-переменные. Тут нет стека - все переменные явные и их можно "потрогать".
    Запись от CoderHuligan размещена 30.01.2022 в 12:06 CoderHuligan вне форума
  13. Старый комментарий
    Аватар для CoderHuligan
    Но такая запись будет слишком неуклюжей и длинной. Гораздо лучше поступить по другому и применить полную скобочную запись, которая позволяет отказаться от запоминания таблицы приоритетов для последующего чтения листингов программ. Например сишное выражение:
    C
    1
    
    a >= 'a' && a <= 'z' || a >= 'A'  &&  a <= 'Z'
    превращается в
    C
    1
    
    ((a >= 'a') && (a <= 'z')) || ((a >= 'A') && (a <= 'Z'))
    при этом мы явно задаем порядок вычисления выражения, а при последующей верификации кода не нужно помнить таблицу приоритетов. Это сильно разгружает мозг программиста. а запись получается не намного длиннее исходной бесскобочной.
    Алгоритм разбора получается очень простым, а значит и быстрым.
    Хотя могут быть возможные подводные камни, о которых хотелось бы услышать.
    Запись от CoderHuligan размещена 30.01.2022 в 15:05 CoderHuligan вне форума
  14. Старый комментарий
    Аватар для COKPOWEHEU
    Без IDE, которая бы рисовала стрелочками переходы, разбираться в этом будет трудно.
    В данном диалекте они имеют цифровые метки - номера строк, как в basic. Чтобы поименовать конкретное состояние и защитить его от изменения, когда происходит пересчет меток, то перед меткой-состоянием ставится комментарий.
    э-э-э... а не проще саму метку поименовать, раз все равно имя используется?
    // звездочка означает экспорт переменной
    Как это должно выглядеть в коде? То есть у нас есть функция FF с глобальной переменной a, есть функция GG с глобальной переменной a и есть функция HH, тоже с глобальной переменной a, которая двух предыдущих вызывает.
    C
    1
    2
    3
    
    int ff(int a){return a+1;}
    int gg(int a){return a*2;}
    int hh(int a){return ff( gg( sin(a) ) );}
    Гораздо лучше поступить по другому и применить полную скобочную запись
    Хотя могут быть возможные подводные камни
    Да в общем-то подводный камень один: большое количество скобок здорово затрудняет чтение и увеличивает риск поставить пятую закрывающую скобку не там.
    Хотя тут тоже IDE с графическим режимом могла бы помочь: разнести группы скобок по вертикали, что-то вроде такого:
    x = ( ( ( (a+1)*b ) + 3) / (c - 5) )
    https://www.cyberforum.ru/cgi-bin/latex.cgi?y = \begin{pmatrix}   &   &   & a+1 &     &     &     &     &   \\    &   & ( &     & )*b &     &     &     &   \\    & ( &   &     &     & )+3 &     & c-5 &   \\ ( &   &   &     &     &     & )/( &     & ) \end{pmatrix}
    Только отступы не такие больше, а на четверть высоты где-то.
    Запись от COKPOWEHEU размещена 03.02.2022 в 10:10 COKPOWEHEU на форуме
  15. Старый комментарий
    Аватар для CoderHuligan
    Отступы - зло, по определению. Экран-то не резиновый.. Но это неизбежная дань привычкам.. Надо Рапиру реанимировать, вот чего не хватает! Там и множества из Setl и кортежи, и записи - всё что надо было. И он гораздо круче, чем паскаль с бейсиком. Но ввести метки и безусловные переходы. отталкивает русский синтаксис? Кого-то обязательно оттолкнет, это неизбежно. К сожалению Рапиру до сих пор никто не реанимировал, а зря.. В общем если приниматься за такое, то это конечно арх-сложная задача. и по идее ей должен заниматься коллектив. Лексер с парсером я допустим сделаю сам. Даже транслятор в виртуальню машину, в её байт-код сделаю. С трансляцией в машинный код сложнее. Надо подключать MASM. Хотя бы под вирт-машину сделать - это уже будет рабочий вариант.
    Запись от CoderHuligan размещена 03.02.2022 в 12:11 CoderHuligan вне форума
  16. Старый комментарий
    Аватар для vantfiles
    x = ( ( ( (a+1)*b ) + 3) / (c - 5) )
    без скобок лучше:

    a 1 + b * 3 + c 5 - / x !
    Запись от vantfiles размещена 03.02.2022 в 13:31 vantfiles вне форума
  17. Старый комментарий
    Аватар для COKPOWEHEU
    Отступы - зло, по определению. Экран-то не резиновый..
    Память и внимание у программиста еще более не резиновые.
    Запись от COKPOWEHEU размещена 03.02.2022 в 13:55 COKPOWEHEU на форуме
  18. Старый комментарий
    Цитата Сообщение от CoderHuligan
    Отступы - зло, по определению. Экран-то не резиновый..
    Зло не отступы, а низкий уровень квалификации. Если у вас с коде отступы заставляют улетать код за границы экрана, это значит одно, вы не доучились, и не умеете грамотно организовывать код.
    Запись от voral размещена 03.02.2022 в 16:13 voral вне форума
  19. Старый комментарий
    Аватар для CoderHuligan
    без скобок лучше:
    И компактней! Чем и привлекает forth! Однако! Меня лично очень напрягают вот эти: rot, dup, over, ведь они ну никак не относятся к смыслу решаемой проблемы, а только стек обслуживают. там все вертится вокруг этого стека, а то и двух. Это было бы хорошо если не было бы так печально.. А компутер это смею напмнить машина-то регистровая, а не стековая. И стек там всего лишь атрибут данности определенной парадигме.. Нет, forth не подходит, увы..
    Разве что под капотом вирт-машины будет крутиться..
    Память и внимание у программиста еще более не резиновые.
    А для этого и создают доки, где все это должно быть прописано.
    Зло не отступы, а низкий уровень квалификации.
    В идеале код должен идти в колонку сверху вниз, statement за statement. Тогда его можно писать в две-три колонки, и редакторы, которые на это способны есть. Говорят что vim на это способен.
    А гуишный редактор можно сделать с подсветкой меток и переходов стрелочками и цветом.
    Запись от CoderHuligan размещена 03.02.2022 в 17:49 CoderHuligan вне форума
  20. Старый комментарий
    Цитата Сообщение от CoderHuligan
    В идеале код должен идти в колонку сверху вниз, statement за statement. Тогда его можно писать в две-три колонки, и редакторы, которые на это способны есть. Говорят что vim на это способен.
    А гуишный редактор можно сделать с подсветкой меток и переходов стрелочками и цветом.
    Вы опять путаете теплое с мягким.
    Отступы ни как вообще не запрещают коду идти снизу вверх... Он всегда так идет. Тут вы опять пытаетесь неумение ограничивать вложенность блоков маскировать под выдуманные проблемы.

    Писать код видя перед глазами несколько колонок.... Хм. Зачем?

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

    Более того вот прямо сейчас перед глазами (по ширине): колонка дерева проекта, код и окно браузера (правда монитор 21:9).
    Вертикальная черта, которой ИДЕ показывает оптимальную длину строк (настраивается, но по умолчанию 80), сейчас по середине поля редактирования кода, т.е. я вообще без каких либо проблем могу разделить на две колонки.
    Запись от voral размещена 03.02.2022 в 18:09 voral вне форума
 
Новые блоги и статьи
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru