瀏覽代碼

еще пост

kpmy 9 年之前
父節點
當前提交
bb4f2e86bf
共有 1 個文件被更改,包括 40 次插入0 次删除
  1. 40 0
      _posts/2015-10-05-Некоторые дополнительные мысли.md

+ 40 - 0
_posts/2015-10-05-Некоторые дополнительные мысли.md

@@ -0,0 +1,40 @@
+---
+published: true
+layout: post
+---
+
+* *Почему сначала класс объекта, а потом необязательный идентификатор (имя)?*
+  * Потому что шаблон принципиально работает с объектом еще до его создания, то есть, на самом деле шаблон для разработчика и для шаблонизатора должен формировать новый объект из заданного класса. Зачастую, этого достаточно, а если недостаточно, то уже можно обращаться к конкретному объекту.
+* *Как будет обеспечиваться модульность шаблонов?*
+  * Скорее всего, модульность шаблонов будет обеспечиваться таким же образом, как и в `LOMO`, то есть, вложенных шаблонов не будет, один шаблон - одна импортируемая сущность. Что не исключает возможности группировки шаблонов в подсистемы чисто организационно, на уровне файловой системы и полного квалификатора имени. Так же возможно будут экспортированные константы и объекты внутри сущностей (например, стандартные аттрибуты html).
+* *Шаблоны декларативные или императивные?*
+  * Описание шаблона мультипарадигменное, тут и декларативная часть, и императивная часть и работа с контекстом, который каждый раз меняется под действием самого шаблона.
+* *Процедуры и модульность внутри `LEAF`, импорт юнитов в `LOMO`?*
+  * Так как менять языки не хочется, скорее всего импорт из любого модуля будет возможен на этапе выполнения шаблона. Допустим это будет выглядеть так:
+
+        CORE.TEMPLATE(my-little-tree):
+          CHESS:
+            DO! IMPORT Strings
+
+              PROCEDURE Invert
+                VAR i+, o- STRING
+              BEGIN
+                o := i[\LEN i .. 0] (* range-нотации пока нет в LEAF *)
+              END Invert
+
+            VAR s STRING
+            BEGIN
+              Invert(o: "K F G", i -> s)
+              THIS: move = s;
+            END;
+            CALC!
+              VAR x INTEGER
+            PROCESS
+              2 -> x
+              x ^ 2 -> THIS number;
+            END;
+          ;
+        ;
+
+* *Громоздко!*
+  * императивный код -> декларативный код -> шаблонный код, чем дальше тем хуже. Но попробовать стоит. Конечно, для поддержки инструкций шаблонов внутри встраиваемых языков их компиляторы придётся доработать, но формально это останутся те же языки с полным набором фич. Заодно можно попробовать наконец-то сделать обобщенную кодовую базу для всех языков.