![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Устал от того, что люди путают динамическую типизацию со слабой или называют лисп бестиповым.
Поэтому нарисовал вот такую картинку.

(*) Java, C# и Obj-c обладают возможностями динамической типизации. Например, боксинг в Object в Java и C#. Кроме того, в C# 4.0 ввели новое ключевое слово dynamic.
(**) В CL и Clojure присутствуют опциональные декларации типов, так что можно считать, что в них есть немного статической типизации. Современные реализации Common Lisp проводят агрессивный вывод типов при компиляции.
(***) Форт и языки ассемблера принято считать бестиповыми. Но, машинные слова разного размера это ведь тоже типы какие-никакие.
Вообще же, отличия вот в чем - статическая типизация предполагает проверку типов на этапе трансляции кода, динамическая - на этапе его выполнения. Сильная типизация предполагает множество проверок типов и минимум неявных преобразований между данными разных типов, а слабая - минимум проверок и максимум неявных преобразований.
Upd: вот еще
jtootf подкинул ссылку: blogs.perl.org/users/ovid/2010/08/what-to-know-before-debating-type-systems.html
Поэтому нарисовал вот такую картинку.

(*) Java, C# и Obj-c обладают возможностями динамической типизации. Например, боксинг в Object в Java и C#. Кроме того, в C# 4.0 ввели новое ключевое слово dynamic.
(**) В CL и Clojure присутствуют опциональные декларации типов, так что можно считать, что в них есть немного статической типизации. Современные реализации Common Lisp проводят агрессивный вывод типов при компиляции.
(***) Форт и языки ассемблера принято считать бестиповыми. Но, машинные слова разного размера это ведь тоже типы какие-никакие.
Вообще же, отличия вот в чем - статическая типизация предполагает проверку типов на этапе трансляции кода, динамическая - на этапе его выполнения. Сильная типизация предполагает множество проверок типов и минимум неявных преобразований между данными разных типов, а слабая - минимум проверок и максимум неявных преобразований.
Upd: вот еще
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
no subject
Date: 2011-03-25 07:12 pm (UTC)no subject
Date: 2011-03-25 08:29 pm (UTC)no subject
Date: 2011-03-25 08:32 pm (UTC)no subject
Date: 2011-03-25 09:23 pm (UTC)no subject
Date: 2011-03-25 09:34 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-03-25 08:33 pm (UTC)no subject
Date: 2011-03-25 09:21 pm (UTC)no subject
Date: 2011-03-25 09:33 pm (UTC)(no subject)
From:no subject
Date: 2011-03-25 07:28 pm (UTC)no subject
Date: 2011-03-25 07:35 pm (UTC)no subject
Date: 2011-03-25 08:29 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-03-25 07:35 pm (UTC)no subject
Date: 2011-03-25 07:36 pm (UTC)no subject
Date: 2011-03-25 07:58 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-03-25 07:49 pm (UTC)т.е. вот
Date: 2011-03-25 07:51 pm (UTC)no subject
Date: 2011-03-26 12:04 am (UTC)no subject
Date: 2011-03-26 03:35 am (UTC)В нём явно различаются скаляры, массивы и хэши. В том же PHP они все кидаются в одну кучу.
no subject
Date: 2011-03-26 04:49 am (UTC)for example:
➜ ~ perl -e '@a=(1,2,3,4); print 123; print "hello " . (bless {}, "asd") . @a'
123hello asd=HASH(0x112a268)4
no subject
Date: 2011-03-26 07:55 am (UTC)$octopus = [{tentacles => 1}];
print $octopus;
$octopus -> {noses} = 1;
$perl 1.pl
Not a HASH reference at 1.pl line 3.
ARRAY(0xdd9718)
Можно написать пример посложнее, на классах (package octopus; my octopus $found_pearl; ...). Статическая типизация в нём есть, просто она включается ну очень редко.
no subject
Date: 2011-03-26 11:34 am (UTC)мальчик, вернись в школку, и не неси хуйню. даже шаблоны не делают плюсы слаботипизированными.
no subject
Date: 2011-03-26 12:13 pm (UTC)В языке, в котором есть void*, никакой сильно типизации нет и быть не может.
no subject
Date: 2011-03-26 12:41 pm (UTC)(no subject)
From:(no subject)
From: (Anonymous) - Date: 2011-03-26 01:28 pm (UTC) - Expand(no subject)
From:(no subject)
From: (Anonymous) - Date: 2011-03-26 04:42 pm (UTC) - Expand(no subject)
From:(no subject)
From: (Anonymous) - Date: 2011-03-26 06:13 pm (UTC) - Expand(no subject)
From:(no subject)
From: (Anonymous) - Date: 2011-03-26 06:45 pm (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-03-26 04:14 pm (UTC)no subject
Date: 2011-03-26 04:54 pm (UTC)