love5an: (Default)
Устал от того, что люди путают динамическую типизацию со слабой или называют лисп бестиповым.
Поэтому нарисовал вот такую картинку.
Виды типизации

(*) Java, C# и Obj-c обладают возможностями динамической типизации. Например, боксинг в Object в Java и C#. Кроме того, в C# 4.0 ввели новое ключевое слово dynamic.
(**) В CL и Clojure присутствуют опциональные декларации типов, так что можно считать, что в них есть немного статической типизации. Современные реализации Common Lisp проводят агрессивный вывод типов при компиляции.
(***) Форт и языки ассемблера принято считать бестиповыми. Но, машинные слова разного размера это ведь тоже типы какие-никакие.

Вообще же, отличия вот в чем - статическая типизация предполагает проверку типов на этапе трансляции кода, динамическая - на этапе его выполнения. Сильная типизация предполагает множество проверок типов и минимум неявных преобразований между данными разных типов, а слабая - минимум проверок и максимум неявных преобразований.

Upd: вот еще [livejournal.com profile] jtootf подкинул ссылку: blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html
love5an: (Default)
Написал сейчас интерфейс битовых векторов для своего нового проекта на CL (библиотека различных алгоритмов сжатия/распаковки. Сейчас для CL, насколько я понимаю, есть только salza2, и там только DEFLATE и она только архивирует)(примерный набросок кода: http://paste.lisp.org/display/113332).

И задумался, в очередной раз, о статической типизации.
Read more... )

Profile

love5an: (Default)
Dmitry Ignatiev

December 2016

S M T W T F S
    123
45678910
11121314 151617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2017 03:48 am
Powered by Dreamwidth Studios