В последнее время - так получилось - пришлось актуализировать свой программистский опыт. Я порылся в разных языках - ruby, elixir, perl, python... Начинал я в эпоху императивных языков типа pascal, потом стали популярны объектно-ориентированные, сейчас волна интереса к функциональным... В общем я слегка освежил знания и в свете всего на свете : ) в моей голове зародились несколько идей.
Во-первых, копаясь в объектно-ориентированных языках я натолкнулся на описания типа: "язык _нужное_вписать_ является объектно-ориентированным, то есть всё в нём - есть объект" и рядом же не редкость (цитирую):
Эта глава рассматривает следующую ступень иерархии:
1. Программы делятся на модули.
2. Модули содержат инструкции.
3. Инструкции состоят из выражений.
4. Выражения создают и обрабатывают объекты.
То есть формально, далеко не всё в декларируемом как полностью объектном языке - "есть объект". В нём вот водятся сущности такие, например, как "Модули", "Инструкции" и прочая. Мне подумалось - а почему бы Модулю в свою очередь не быть Объектом. Даже более того - раз уж пошла такая полностью-объектная-пьянка - сама программа - это тоже должен быть объект. Раз уж "Всё есть объект"!
Далее, еще одно набюдение. Из Python. В нём довольно хороша архитектура, так что работая в интерактивном режиме можно, что называется - заглядывать за "сцену происходящего", в кишки самой среды - видеть сколько ссылок порождено на те или иные объекты, каковы их типы и т.д. "Да ведь это такой росток самосознания" - подумалось мне. В принципе, можно попробовать написать программу, которая может получать знание о самой себе в текущем моменте.
Кстати заметить, на волне обсуждений ИИ многим профессиям пророчат угасание - так как их, де, освоит ИИ. И только прогеры, которые этот ИИ разрабатывают, еще не скоро отойдут от дел. А вот я полагаю, что программирование-то как раз весьма быстро может быть освоено ИИ, едва ли не в первых рядах... но это так - ремарка.
Итак, резюмирую идеи для некоторого гипотетического языка:
1. Идея - ВСЁ, что порождается в некоемом гипотетическом языке - должно быть на самом абстрактном уровне представлять ОДНО. Начиная от примитивов, до собственно самого языка и всех сущностей, выведенных в рамках этого языка, а так же операций. В общем, ВСЁ есть нечто_одно - это и должно значит ВСЁ, без исключений.
2. В виду первого - в таком языке не будет разрыва между так сказать средой разработки и собственно порождаемой ею прикладным ПО - мы просто надстраиваем её.
3. Далее следующее - так как нет резкой границы между исполняющим и исполняемым, тут есть все возможности по "самоосознанию" и рефлексии происходящего.
...Тут я, конечно, весьма сумбурно и нестрого изложил всё, но мне просто захотелось записать это хотя бы на уровне полудогадок.
Что касается некоторых технических деталей - тоже интересных как мне кажется. И связанных - внезапно - с тематикой форума. Порождение кода я думаю начинать следующей инструкцией от абстракции "Ничего" : ) примерно так:
->понятие1
понятие1->понятие2
...
а заканчивать - возвращением в "Ничего":
...
понятиеN->
То есть - из Ничего вышло, Ничем и заканчивается : ))
Из того, что я там показал "код" как порождение понятий, я думаю что имя такому языку будет подходить - Concept. И первым понятием следует вывести (по моей мысли) - понятие "Это" (this), а из него следует - понятие "Не-Это" (not-this). Это такие аналоги 0 и 1, только с предельной дуальностью, тут речь не о нуле и единице, а начальная дихотомия - Это и Не-Это. А далее уже вырисовывается базовый "двоичный код" - основанный на чередовании понятий Это/Не-Это.
Вот.
Продолжение, думаю, следует...
Отредактировано Так (2018-03-01 15:49:16)