Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Исправляя Википедию-2

Придумал я тут пять случаев употребления слова "тип", нарезав и подрихтовав цитат из википедии:

Типы - 1: Type systems are logical systems and set theories.

Типы - 2: A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to prove or ensure that no type errors can occur.

Типы - 3: Type is a classification identifying one of various types of data, such as real-valued, integer or Boolean, that determines the possible values for that type; the operations that can be done on values of that type; the meaning of the data; and the way values of that type can be stored

Типы - 4: Abstract data types allow for data abstraction in high level languages. ADTs are often implemented as modules: the module's interface declares procedures that correspond to the ADT operations. This information hiding strategy allows the implementation of the module to be changed without disturbing the client programs.

Типы - 5: Programming language implementations use types of values to choose the storage the values need and algorithms for operations on the values.

О типах-1 я не буду говорить, чтобы не позориться.

Далее попробую простым языком рассказать, какие бывают типы.

Когда вы проектируете программу, вы думаете: вот здесь километры, здесь метры, здесь количество ящиков, здесь имена, здесь названия городов - классифицируете значения. Классы значений у вас в голове - это типы-3.

Эти значения в рантайме будут как-то представлены. Названия городов и имена - строками, километры и метры - флоатами, количество ящиков - интами. Это типы-5.

Вы декомпозируете программу на модули, и говорите: это приватное, это публичное. Система модулей и меток "приватное-публичное" - это типы-4. Duck Typing идёт сюда же - по сути, это структурная система модулей (в противоположность номинальной).

Если вы складываете значение, у которого тип-3 километр, и значение, у которого тип-3 количество ящиков, и успешно получаете температуру - это работают типы-5, но с точки зрения типов-2 язык бестиповый.

Динамические типы-2 появляются, если при попытке выполнения операции возникает ошибка - то ли несовпадение типов-5, то ли совпадение типов-5, но несовпадение дополнительно к типам-5 указанных типов-2.

Типы-1 только одного "статического" вида.

Типы-2 могут отсутствовать, быть динамическими или статическими.

К типам-3 неприменимо понятие статичности или динамичности.

Типы-4 можно рассматривать как очень слабую форму типов-2. Соответственно, они тоже могут отсутствовать (приватные члены приватны только по соглашению, но это не энфорсится), быть динамическими или статическими.

Типы-5 "есть всегда", могут быть статическими или динамическими. Статические типы-5, как правило, соседствуют со слабой формой типов-2 (С, Java), но не обязательно (assembler, JIT-компиляторы).
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 7 comments