naive typing ©

Sep 14, 2009 18:42


тем временем я все более и более прихожу к выводу что наличие массивов в языке как встроенных типов, а не библиотеки, есть жуткая ересь

муравьи, виртуальные машины, meta-development

Leave a comment

dark_aurel September 14 2009, 15:54:51 UTC
Почему?

Reply

_winnie September 14 2009, 19:48:04 UTC
Например, такое рассуждение:

Если язык не позволяет создать эффективный и удобный массив как библиотеку, значит он не позволит создать свою структуру данных, эффективную и удобную.

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

Reply

dark_aurel September 14 2009, 20:39:07 UTC
Вам не кажеться, что: "наличие массивов в языке как встроенных типов, а не библиотеки" != "язык не позволяет создать эффективный и удобный массив как библиотеку"?

Reply

_winnie September 14 2009, 20:48:24 UTC
Если можно без потерь библиотекой, то лучше не встраивать - легче работать с таким, когда всякие множества-очереди-стеки-хешмапы-массивы-двусвязные списки-сортировки отделены от внутренностей транслятора. И автору транслятора (авторам трансляторов), и пользователям транслятора (трансляторов).

Reply

dark_aurel September 14 2009, 21:15:17 UTC
легче работать с таким, когда всякие множества-очереди-стеки-хешмапы-массивы-двусвязные списки-сортировки отделены от внутренностей транслятора

Всё-равно не вижу противоречия. Как изменится реализация от множеств-очереди-etc в зависимости от наличия/отсутствия встроенного типа "массив" (кстати, если будет встроенный список -- тоже нормально)?

Понятно, что наличие такого встроенного типа несколько усложняет транслятор. Но есть мнение что профит от краткого синтаксиса оказажется более весомым, нежели это усложнение.

(with-troll-mode (:fat t)
Хотя в правильных языках мы всегда можем добавить нужную нам языковую конструкцию средствами самого языка... )

Reply

wizzard0 September 15 2009, 07:10:05 UTC
я вообще так далеко не заходил и имел в виду то, что массивы, обычно, это единственный "особенный" тип данных, ака тип с параметрическим полиморфизмом. реализованный как-то сбоку и криво. И еще часто под них забивают спец-операторы вроде квадратных скобок, что все потом очень раздражает т.к. нарушает единообразность системы типов и понятий языка.

Reply

thedeemon September 15 2009, 10:15:37 UTC
А можно примеров таких языков?

Reply

nponeccop September 15 2009, 14:11:33 UTC
lisp, erlang

Reply

thedeemon September 15 2009, 18:20:20 UTC
И в них массивы - "это единственный "особенный" тип данных, ака тип с параметрическим полиморфизмом"?

Reply

nponeccop September 15 2009, 19:58:00 UTC
наоборот - в них массивы реализуются библиотекой и не имеют встроенного синтаксиса. Все остальные языки - языки, в которых массивы - "особенный" тип. Скажем, в традиционных алголообразах есть два особенных типа - структура и массив.

Reply

thedeemon September 16 2009, 04:18:35 UTC
Вот я и просил примеры языков, где массивы - "это единственный "особенный" тип данных". Я таких не знаю. Не вижу, чем массив в этом аспекте отличается от, например, ссылки (полиморфизм присутствует, спец синтаксис тоже). А нередко кроме массивов есть встроенные в язык хэши и списки.

Reply

wizzard0 September 16 2009, 06:24:45 UTC
Ссылки с адресной арифметикой - это и есть пример спец. типа данных. Я, возможно, зря сказал, что "единственный"

Просто смущает, когда у иерархии типов несколько вершин.

Патологический случай - Java, например :) (все value-типы - не обьекты)

В C# вот массивы - это "отдельный" тип данных (там есть concrete types, generic types и arrays)

В питоне списки отдельный тип, но при этом они не претендуют на особое место в системе типов, а вот old-style классы - претендуют.

Reply


Leave a comment

Up