Если язык не позволяет создать эффективный и удобный массив как библиотеку, значит он не позволит создать свою структуру данных, эффективную и удобную.
Впрочем, я не до конца согласен с автором поста. 90% объектов-контейнеров использующихся в коде - это одномерный список, который хочется фильтровать, итерироваться, склеивать, надеятся на помощь оптимизатора, использовать сжатый удобный синтаксис для всего этого.
Вам не кажеться, что: "наличие массивов в языке как встроенных типов, а не библиотеки" != "язык не позволяет создать эффективный и удобный массив как библиотеку"?
Если можно без потерь библиотекой, то лучше не встраивать - легче работать с таким, когда всякие множества-очереди-стеки-хешмапы-массивы-двусвязные списки-сортировки отделены от внутренностей транслятора. И автору транслятора (авторам трансляторов), и пользователям транслятора (трансляторов).
Тут можно пойти дальше - наличие в языке встроенной фиксированной системы типов есть жуткая ересь. Т.е. в правильных языках мы всегда можем определить нужную нам систему типов средствами самого языка
( ... )
Без встроенных типов не совсем очевидно, как из этого генерировать эффективный байткод\нейтив код. А вообще, см. коммент про "особенный тип" - основная претензия именно к этому.
Да, еще a must чтобы типы были first-class citizens, вот. Иначе скучно и никакой meta-extensibility
В бекенде нужно что-то подобное typed assembly language с адресной арифметикой. Во фронт-энде - возможность безопасной реализации чего-то (в том числе, скажем, unboxed-unchecked arrays) поверх этого TAL.
Если не делать низкоуровневых фич в языке, то массивы - один из важных (для достижения производительности) встроенных строительных блоков.
Comments 19
Reply
Если язык не позволяет создать эффективный и удобный массив как библиотеку, значит он не позволит создать свою структуру данных, эффективную и удобную.
Впрочем, я не до конца согласен с автором поста. 90% объектов-контейнеров использующихся в коде - это одномерный список, который хочется фильтровать, итерироваться, склеивать, надеятся на помощь оптимизатора, использовать сжатый удобный синтаксис для всего этого.
Reply
Reply
Reply
Reply
Reply
Да, еще a must чтобы типы были first-class citizens, вот. Иначе скучно и никакой meta-extensibility
Reply
отнюдь. В сложных универсальных системах типов пропадают важные свойства - например, principal typing.
> Иначе скучно и никакой meta-extensibility
Meta-extensibility можно достичь и без мудрёной системы типов, путем quoting в стиле лиспа.
Поэтому в принципе для разных задач оптимальны разные системы типов и разные средства метапрограммирования.
Reply
Если не делать низкоуровневых фич в языке, то массивы - один из важных (для достижения производительности) встроенных строительных блоков.
Reply
Reply
Reply
Leave a comment