kpmy преди 9 години
родител
ревизия
3126ac775b
променени са 1 файла, в които са добавени 27 реда и са изтрити 0 реда
  1. 27 0
      _posts/2016-05-29-О-системе-типов.md

+ 27 - 0
_posts/2016-05-29-О-системе-типов.md

@@ -0,0 +1,27 @@
+---
+published: true
+layout: post
+---
+
+Развитие `Own/L` встало на стабильные рельсы. Каждый элемент цепочки (компилятор, кодогенератор, рантайм) сейчас позволяют в рабочем режиме добавить новую фичу языка без проблем.
+
+Появилось время подумать, куда двигаться дальше. Наибольшие опасения вызывает этап выбора системы типов. Про системы типов написано много умных слов, чем дальше, тем сильнее все эти слова сводятся к описанию имплементации системы типов в языке haskell, как будто ничего лучше человечество не придумало.
+
+Если не брать от безысходности готовую систему типов Оберона, а немного подумать, то ситуация ещё больше ухудшается. Во-первых, есть определённый провал между простым определением типа и его математическим развитием, все эти декартовы произведения, мощности и прочее.
+Отдельная проблема это обратный переход, так как математику развили хорошо, уже непонятно, как спуститься на землю, к числам, спискам и объектам.
+Взять, например, дескрипционную логику, которая является формальной основой для систем онтологий.
+Да, концепции, роли, индивиды, это похоже на типы, свойства и объекты. Но как именно перейти к тому, что будет понятно говнокодеру - не сказано.
+
+Опять же, Вирт в AD предлагает простые понятия, но он это всё предлагает с послезнанием, он уже знает всё это и говорит сразу правду, что не оставляет шанса дойти до всего самому.
+
+Надо думать.
+
+Пока что принимаем за отправную точку определение: *тип данных — допустимое множество значений объекта*.
+
+Данное определение сразу предъявляет ряд требований ко всей системе - наличие объектов и значений, возможность определить множество этих значений.
+
+Допустим, объекты это переменные и параметры процедур. Значения - это литералы и результат вычисления выражений, а так же константы (пока отсутствуют в языке).
+
+Первый вывод - могут быть объекты, которые принимают любое значение, точнее, значение любого типа. То есть, формально это будет объект с нулевым типом, без типа, но в языке со строгой типизацией это будет объект с типом `ANY`. При этом, предполагается, что значение так же может быть не установлено, чему соответствует значение `NONE`.
+
+Пока всё :(