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

(*) 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

Date: 2011-03-25 07:12 pm (UTC)
From: [identity profile] jtootf.livejournal.com
знания теории типов теорминимум не предполагает :)

Date: 2011-03-25 08:29 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
ггг. это лишнее. надо учить дополнительные ключевые слова VC++.

Date: 2011-03-25 09:23 pm (UTC)
From: [identity profile] jtootf.livejournal.com
и правда; однако почему она в "функциональном программировании", правда, откровенно непонятно

Date: 2011-03-25 09:34 pm (UTC)
From: [identity profile] udpn.livejournal.com
а где же она ещё должна быть? отдельный раздел "основания ЯП"?

(no subject)

From: [identity profile] jtootf.livejournal.com - Date: 2011-03-25 09:37 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2011-03-25 10:02 pm (UTC) - Expand

(no subject)

From: [identity profile] jtootf.livejournal.com - Date: 2011-03-25 10:32 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2011-03-25 10:54 pm (UTC) - Expand

Date: 2011-03-25 08:33 pm (UTC)
From: [identity profile] udpn.livejournal.com
иногда лучше читать, чем писать

Date: 2011-03-25 07:28 pm (UTC)
From: [identity profile] udpn.livejournal.com
Visual Basic в клетке со слабой типизацией. Нехуево пошутил.

Date: 2011-03-25 07:35 pm (UTC)
From: [identity profile] love5an.livejournal.com
там неявные преобразования на каждом шагу

Date: 2011-03-25 08:29 pm (UTC)
From: [identity profile] udpn.livejournal.com
Вы хорошо подумали, прежде чем сморозить эту хуйню?
Option Explicit

Private Sub Main()
    Dim i As String
    Dim j As Integer
    i = "a"
    j = 5
    j = j + i ' 13: Type mismatch
End Sub

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2011-03-25 08:33 pm (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 12:33 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2011-03-26 03:51 pm (UTC) - Expand

Date: 2011-03-25 07:35 pm (UTC)
From: [identity profile] xentronium.mp (from livejournal.com)
Это как руби у тебя в сильную типизацию попал?

Date: 2011-03-25 07:36 pm (UTC)
From: [identity profile] love5an.livejournal.com
сильная типизация у него, вот и попал

Date: 2011-03-25 07:58 pm (UTC)
From: [identity profile] xentronium.mp (from livejournal.com)
И доказать ты это в состоянии?

(no subject)

From: [identity profile] alex bubnoff - Date: 2011-03-25 09:26 pm (UTC) - Expand

(no subject)

From: [identity profile] xentronium.mp - Date: 2011-03-25 09:48 pm (UTC) - Expand

(no subject)

From: [identity profile] alex bubnoff - Date: 2011-03-26 01:29 am (UTC) - Expand

(no subject)

From: [identity profile] xentronium.mp - Date: 2011-03-26 01:51 am (UTC) - Expand

(no subject)

From: [identity profile] xentronium.mp - Date: 2011-03-26 01:54 am (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 12:16 pm (UTC) - Expand

(no subject)

From: [identity profile] xentronium.mp - Date: 2011-03-26 05:25 pm (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 06:09 pm (UTC) - Expand

(no subject)

From: [identity profile] oreolek.ru - Date: 2011-03-26 03:58 am (UTC) - Expand

Date: 2011-03-25 07:49 pm (UTC)
From: [identity profile] zw0rk.blogspot.com (from livejournal.com)
В кложуре декларации типов не всегда ведут к "статичной типизации". Например, указание типа для record-а не означает, что в него нельзя запихать совсем другой тип. Это вызовет просто варнинг на этапе объявления (если попросить такие варнинги выводить).

т.е. вот

Date: 2011-03-25 07:51 pm (UTC)
From: [identity profile] zw0rk.blogspot.com (from livejournal.com)
http://stackoverflow.com/questions/3344872/type-hinting-not-enforced-in-defrecord-constructors

Date: 2011-03-26 12:04 am (UTC)
From: [identity profile] ander-skirnir.blogspot.com (from livejournal.com)
Плюсую всё, кроме VB. Насчёт замечания про форт и асм - у меня всегда возникали такие-же мысли. Кстати, в C#5 будет eval и repl.

Date: 2011-03-26 03:35 am (UTC)
From: [identity profile] oreolek.ru (from livejournal.com)
Почему Perl так явно отнесён к динамической типизации?
В нём явно различаются скаляры, массивы и хэши. В том же PHP они все кидаются в одну кучу.

Date: 2011-03-26 04:49 am (UTC)
From: (Anonymous)
прочитай определение, вывод типов происходит на этапе выполнения. да и все неявно преобразуется ко всему, в перле очень непросто создать конфликт типов
for example:
➜ ~ perl -e '@a=(1,2,3,4); print 123; print "hello " . (bless {}, "asd") . @a'
123hello asd=HASH(0x112a268)4

Date: 2011-03-26 07:55 am (UTC)
From: [identity profile] oreolek.ru (from livejournal.com)
Это разве что пример того, как происходит неявное преобразование в строки. Да, неявных преобразований там тьма-тьмущая, и Perl предпочитает не выдавать ошибок, но компилятор в нём всё-таки есть, и он следит за типами — по-своему. Без use strict!

$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; ...). Статическая типизация в нём есть, просто она включается ну очень редко.

Date: 2011-03-26 11:34 am (UTC)
From: (Anonymous)
блядь, плюсы слаботипизированы. ОЯЕБУ
мальчик, вернись в школку, и не неси хуйню. даже шаблоны не делают плюсы слаботипизированными.

Date: 2011-03-26 12:13 pm (UTC)
From: [identity profile] love5an.livejournal.com
хуи сосешь?

В языке, в котором есть void*, никакой сильно типизации нет и быть не может.

Date: 2011-03-26 12:41 pm (UTC)
From: (Anonymous)
ты идиот и ассемблер у тебя типизированный. для начала поинтересуйся, что такое слабая типизация и вообще типизация, школоло.

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 01:14 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2011-03-26 01:28 pm (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 02:31 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2011-03-26 04:42 pm (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 04:54 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2011-03-26 06:13 pm (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2011-03-26 06:26 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2011-03-26 06:45 pm (UTC) - Expand

(no subject)

From: [identity profile] http://apps.breds.ru/k.pierre.k - Date: 2011-03-26 07:41 pm (UTC) - Expand

(no subject)

From: [identity profile] http://apps.breds.ru/k.pierre.k - Date: 2011-03-26 08:11 pm (UTC) - Expand

(no subject)

From: [identity profile] geniepro.livejournal.com - Date: 2011-03-27 12:42 pm (UTC) - Expand

(no subject)

From: [identity profile] http://apps.breds.ru/k.pierre.k - Date: 2011-03-27 08:52 pm (UTC) - Expand

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2011-03-27 09:22 pm (UTC) - Expand

(no subject)

From: [identity profile] http://apps.breds.ru/k.pierre.k - Date: 2011-03-27 09:31 pm (UTC) - Expand

Date: 2011-03-26 04:14 pm (UTC)
From: [identity profile] ddzhus.ya.ru (from livejournal.com)
И не только в CL, в Racket тоже есть диалект со статической типизацией (Typed Scheme).

Date: 2011-03-26 04:54 pm (UTC)
From: [identity profile] love5an.livejournal.com
да, все так

Profile

love5an: (Default)
Dmitry Ignatiev

June 2020

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2025 07:49 pm
Powered by Dreamwidth Studios