The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск языка программирования Rust 1.37"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск языка программирования Rust 1.37" –1 +/
Сообщение от Ordu (ok), 19-Авг-19, 21:03 
> Все вами описанное в личпе как раз и является "zero cost", так
> как реализовано естественным для рантайма образом.
> Выравнивание объектов в памяти по границе слова (двойного слова)? Любой язык, кроме
> специально оговоренных программистом случаев, это делает за вас - напомню, что
> обращение к невыровненным словам до сих пор влечет за собой CPU
> пенальти.

К невыравненным байтам тоже пенальти? А в lisp'е байт будет занимать четыре а то и восемь байтов памяти. И будут огромные проблемы сделать упакованный массив байтов или упакованную структуру, потому что будут огромные проблемы со ссылками на эти упакованные байты.


> А в лиспе (и других языках со сборкой мусора) это
> выравнивание дополнительно используется для элегантного 0-cost выделения объектов в куче,
> где выделение объекта, это просто увеличение внутреннего указателя на N слов.

Куча -- это не zero-cost абстракция. Она отъедает процессорное время и изменяет объём расходуемой памяти, причём как именно она будет это делать зависит от реализации этой кучи. Но что самое интересное, ты будешь платить за кучу, вне зависимости от того, хочешь ты её использовать или нет. malloc/free в этом смысле -- это вещь не бесплатная, но если ты их не используешь, ты их не используешь и не платишь за их использование.

> Локальные переменные? Локальные "переменные" еще на этапе компиляции переименовываются
> в вида lvarNNNNN и не требуют поиска по таблице, так как
> даже студенческие лисп-поделки умеют это дело опитимизировать.

А если эта локальная переменная не локальна?

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

Элегантность спорна, абстрактность бесспорна. А вот быстрота в lisp'е достигается огромными геморроями, и то не во всех. Если lisp позволяет аннотации типов переменных функций, если он позволяет выделять память на стеке, если он позволяет работать с машинными типами, то тогда на нём можно писать быстрые программы. Но пока ты будешь это делать, ты поймёшь, что элегантность lisp'а выходит боком. Lisp не для написания быстрых программ, он для быстрого написания программ, которые ты не знаешь заранее как писать. Для тех проблем, которые ты исследуешь "боем" посредством написания программы.

> Настолько отлично, что его каждый
> раз пытаются переизобрести в качестве подмножества того или иного языка (десятое
> правила Гринспена, да).

Ну естественно. Если в язык засунуть всё, то любой другой язык будет его подмножеством. Но засунуть всё -- это очень дорогостоящая вещь. Можно вспомнить историю PL/1. Ещё ты можешь почитать документацию на ANSI Common Lisp. Если от чтения просветления не возникнет, то попробуй взять sbcl и написать на нём что-нибудь. Когда в язык пихают всё на все случаи жизни, это кончается плохо. Jack of all trades, master of none. Он может всё, но сливает любому более специализированному языку в области его специализации. То есть для любой проблемы можно найти более подходящий язык, нежели lisp.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Rust 1.37, opennews, 17-Авг-19, 09:32  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру