Философы лишь различным образом объясняли мир,
но дело заключается в том, чтобы изменить его.
Карл Маркс, «Тезисы о Фейербахе», 1845 г.
Из всех доступных философских направлений диалектический материализм наиболее полно отражает основную идею проектируемого языка. Как известно, любой язык должен моделировать реально существующие материальные сущности и процессы. Либо скрытые процессы, но имеющие вполне материальную основу. Существует ряд сущностей и процессов, которые не имеют прямой реализации в реальном мире (например игры), но такие процессы смоделированные в виде состояний электронных структур всё-равно в некотором смысле существуют.
Все три закона диалектики создают целостный базис для моделирования языка.
Закон единства и борьбы противоположностей определяет основы форм и содержаний всего сущего. Основными сущностями в языке программирования являются значения и процессы, связывающие значения. Это две ортогональные философские категории наполняют пространство состояний.
Закон отрицания отрицания определяет формы, которые содержатся в общей содержащей форме. Перетекание одной формы в другую форму определяет то внутреннее превращение, которое с ходом времени приводит к превращению объемлющей формы в своё новое представление. Так например, программный код при рефакторинге отрицает своё предыдущее состояние, через развитие новой качественной формы.
Этот закон диалектического материализма определяет переход накопленных количественных характеристик в новое качество. А при утрате качества -- назад в количественное состояние. Язык программирования в рамках диалектического дискурса проявляет такие свойства как, например -- при переводе текста программы из одной формы в другую более низкого уровня. При этом количество кода соответствующего уровня растёт, неявно сохраняя в себе качества более высокого уровня.
Диалектические пары присутствуют в любом языке программирования. Обычно они описаны либо не полно, либо не описаны вообще. Цель настоящего языка программирования явно описать эти диалектические противоречия и решить их в духе диалектического материализма.
Материя первична, сознание вторично.
Язык программирования является продуктом объективной реальности.
Все процессы и явления имеют материальную основу.
Модель должна опираться на объективную реальность, а не на абстрактные идеи.
Все находится в постоянном движении, изменении и развитии.
Состояния не статичны — они трансформируются под действием внутренних и внешних причин.
Развитие происходит через борьбу противоположностей.
Внутренние противоречия — двигатель изменений. Без них — нет развития.
Переход количественных изменений в качественные.
Накопление мелких изменений ведёт к скачку, к новому качеству.
Отрицание отрицания.
Развитие идёт не по прямой, а по спирали: старое отрицается, затем отрицается само отрицание — и возникает что-то более высокое.
Язык программирования не рождается из пустоты, не является плодом субъективной фантазии. Он возникает как ответ на объективные потребности:
Следовательно, материальной основой является:
C, Lisp, Python, Rust и др.).Вывод: язык программирования — производное от производительных сил информационной эпохи.
В основе разработки любого языка — борьба противоположностей. Без противоречий нет движения, нет прогресса.
Ключевые противоречия:
Python (высокоуровневый) vs C (низкоуровневый) )Rust (гарантии владения) vs C++ (управление памятью вручную) )Go (простота) vs Haskell (высокая абстракция))Java vs JavaScript)ECMAScript (стандарт) vs Python (BDFL, потом PEP)Эти противоречия неустранимы полностью, но они разрешаются на новом уровне в каждом новом языке.
Пример: C → Python → Go.
Каждый новый язык отрицает недостатки предыдущего:
C: небезопасное управление памятью → Python добавляет ООП, динамическую типизацию, но усложняет контроль.Python: медленный, динамический → Go предлагает кратно больше безопасности и скорости, но с GC.Go не просто "ещё один Python", он синтезирует
Си, так и исполнение в отличии от Python),Си, и Python),Python),Это не возврат к низкоуровневому, а подъём на ступень выше — безопасное системное программирование.
Закон отрицания отрицания в действии: развитие идёт не по кругу, а по спирали прогресса.
Постепенное накопление улучшений:
В какой-то момент происходит качественный скачок:
Язык перестаёт быть "очередным инструментом" и становится платформой для новых форм практики.
Пример:
Python → стал основой для data science и машинного обучения.JavaScript → из "языка для кнопочек" превратился в полноценную платформу (Node.js, React, Deno).Количественные улучшения → качественное изменение роли языка в производстве.
Диалектический материализм утверждает: не мысли определяют бытие, а наоборот.
Применительно к языку программирования:
Хороший язык не тот, который красиво выглядит в теории, а тот, который:
Пример:
Scala — мощный, но сложный → ограниченное распространение.Go — простой, но эффективный → массовое внедрение в облаках.Практика показывает, что работает.
Хотя материя первична, сознание вторично, но активно.
Гениальные разработчики (как Мао говорил о "героях-массах") — не творят из ничего, но осознают объективные законы и направляют развитие.
Пример:
D),Python),Rust)Все они не изобретали законы, но воплотили диалектику практики в синтезе. Истинный прогресс — когда сознание не отрывается от практики, а руководит ею.
Все языки с точки зрения диалектического материализма можно рассматривать, как идеалистические (такие как brainfuck и им подобные), материалистические (такие как Оберон-7), а также языки занимающие переходное положение (такие как Go или Rust). В рамках текущей работы будет предпринята попытка на новом уровне осмысления создать язык программирования с опорой на диалектический материализм на столько, на сколько это возможно в текущих условиях.