LINUX.ORG.RU

Alexandrescu: generic programming must go

 , , ,


0

3

Наткнулся тут на выступление Андрея Александреску на DConf 2015, где он вещает, что обобщённое программирование - это на самом деле плохо, и ведёт к лишнему геморрою.

Это весьма забавно слушать в контексте выступлений Страуструпа на тему Concepts в свежем стандарте C++.

Видео: https://www.youtube.com/watch?v=mCrVYYlFTrA

Слайды: http://dconf.org/2015/talks/alexandrescu.pdf

Видео со Страуструпом: https://www.youtube.com/watch?v=xcpSLRpOMJM

Кто что думает по этому поводу?

Static introspection + CTFE + Boolean constraints + static if = WIN

эскобар.жпг

tailgunner ★★★★★ ()

На какой минуте он там говорит про эти Concepts? Лень всё мотать

yoghurt ★★★★★ ()
Ответ на: комментарий от tailgunner

Я, честно говоря, так и не понял до конца его проблемы с параметризованными типами. Возможно, в D они как-то особенно через задницу сделаны, и потому Андрей так бесится. Я не знаю.

yoghurt, в районе 29 минуты.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от yoghurt

Мм, занятно. С первого взгляда как тайпклассы в хаскеле, но для шаблонов

yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

Короч и без того монструозный сипласплас становится ещё монструозней.

yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

Мм, занятно. С первого взгляда как тайпклассы в хаскеле, но для шаблонов

Да, это по сути оно и есть. Бьярн множество раз ссылался на хаскелл в этом плане. Его библиотека с паттерн-матчингом для C++ тоже во многом вдохновлена хаскеллом.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Чует моё сердце (а может и не только оно), что это трехэтажное зашаблонивание на практикте ведет вовсе не к гибкости, а, скорее, к костности :)

Когда куча контрактов прописана и зашита в типах/иерархии, это возможно безопасно и предсказуемо и все дела, но может значительно сократить пространство для возможного последующего манёвра.

yoghurt ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Я, честно говоря, так и не понял до конца его проблемы с параметризованными типами

Я думаю, он хотел сказать «вычисления на шаблонах - говно, CTFE рулит». Но, ИМХО, и то, и то - слишком низкоуровневые инструменты (хотя по сравнению с шаблонами CTFE, естественно, просто пришелец из будущего).

tailgunner ★★★★★ ()

Eating your own dog food

Кстати, мне вот что интересно. Есть ли запротоколированные случаи использования Бьярном своего детища по-назначению? Ну там, серьезное что-нибудь написать, большое, а не очередную книжку или абстрактный хелловорлд с демонстрацией очередного концепта.

Беглый обзор сайта ответа не дал

yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

Сложный вопрос. Mach7 действительно позволяет писать более простой и чистый код. Ещё есть довольно неплохая библиотека с монадами (ftl). К сожалению, две эти библиотеки не слишком совместимы друг с другом, и я не слишком уверен, что они будут хорошо работать хотя бы с STL (молчу про Boost).

Можно сказать, что в C++ слишком много старого кода, чтоб вот так кардинально менять язык.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от tailgunner

Я думаю, он хотел сказать «вычисления на шаблонах - говно, CTFE рулит». Но, ИМХО, и то, и то - слишком низкоуровневые инструменты (хотя по сравнению с шаблонами CTFE, естественно, просто пришелец из будущего).

Это-то да, но вычисления в compile time - далеко не единственная и даже не главная функция шаблонов в C++.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

вычисления в compile time - далеко не единственная и даже не главная функция шаблонов в C++

Насколько я понял этого акробата, ему нужны средства метапрограммирования (фактически, анализа программы и генерации кода на основе этого анализа), которые плохо выражаются шаблонами Си++ даже с учетом вычислений на шаблонах, и он хочет вместо них CTFE. В общем, лисперы сейчас набегут глумиться %)

tailgunner ★★★★★ ()

Плюсовые шаблоны - это ад кромешный. А тут ещё и новенькое. Да ну нафиг.

Solace ★★ ()

Кто что думает по этому поводу?

Александреску полностью с катушек съехал. Рассказывает про какие-то тупые аллокаторы, а презентацию обозвал «generic programming must go». Назвал бы он её честно, никто бы слушать не пришёл.

rupert ★★★ ()
Ответ на: комментарий от tailgunner

В общем, лисперы сейчас набегут глумиться %)

Чего глумиться над убогим?

anonymous ()
Ответ на: комментарий от rupert

Александреску полностью с катушек съехал.

Он несъехавшим и не был никогда.

anonymous ()

Гммм. Думал что будет про Generic Programming который Generics, а оказалось про параметрический полиморфизм.

zinfandel ★★ ()
Ответ на: комментарий от anonymous

Чего глумиться над убогим?

10 правило гринспуна же. Опять. Все там будете.

Oxdeadbeef ★★★ ()
Ответ на: комментарий от zinfandel

Generics - это и есть параметирческий полиморфизм, в отличии от шаблонов.

anonymous ()
Ответ на: комментарий от anonymous

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

zinfandel ★★ ()
Ответ на: комментарий от hateyoufeel

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

buddhist ★★★★★ ()

И это говорит человек, чьё имя в контексте C++ давно стало синонимом «шаблонной магии».

Gvidon ★★★★ ()

generic programming must go

это он намекает, что в Go все сделали правильно?

umren ★★★★★ ()
Ответ на: комментарий от umren

Да, там вообще нет нормального обобщённого программирования.

Gvidon ★★★★ ()
Ответ на: комментарий от yoghurt

Концепты хороши уже тем, что позволяют выдавать читаемые сообщения об ошибках при проблемах в шаблонах. Только за одно это я готов приветствовать их обеими руками.

Gvidon ★★★★ ()
Ответ на: комментарий от yoghurt

Когда куча контрактов прописана и зашита в типах/иерархии, это возможно безопасно и предсказуемо и все дела, но может значительно сократить пространство для возможного последующего манёвра.

Дык, в случае плюсов контракты будут опциональными - иначе ведь никак, для совместимости с существующим кодом.

DarkEld3r ★★★★★ ()
Ответ на: Eating your own dog food от yoghurt

Re: Eating your own dog food

Кстати, мне вот что интересно. Есть ли запротоколированные случаи использования Бьярном своего детища по-назначению?

Хз, но ведь он там (в комитете стандартизации) не один далеко. Есть и вполне «практикующие программисты».

DarkEld3r ★★★★★ ()
Ответ на: Eating your own dog food от yoghurt

Re: Eating your own dog food

Он больше теоретик. Практика на фьючерсных биржах и в игровых движках.

anonymous ()

Static introspection + CTFE + Boolean constraints + static if = WIN

Значит ли это, что из D уберут шаблоны? Или несмотря на все доводы по ссылке? D останется C++++?

anonymous ()
Ответ на: комментарий от buddhist

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

Хаскель еще не труп и будет сопротивляться.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Хаскель еще не труп

Он еще и не родился. Вопрос только в том, помрет ли ребенок еще до родов или нет.

anonymous ()
Ответ на: Eating your own dog food от yoghurt

Есть ли запротоколированные случаи использования Бьярном своего детища по-назначению?

само его детище?

shty ★★★★★ ()
Ответ на: комментарий от tailgunner

В общем, лисперы сейчас набегут глумиться %)

Да тут не только лисперы будут глумиться. Но вообще, чувак вместо этого мегаонанизма мог бы сделать что-то типа Template Haskell для D. Или вообще стороннюю тулзу для кодогенерации и анализа разработать.

hateyoufeel ★★★★★ ()

Александреску тот еще упорок, я его писанину стараюсь не читать.

x0r ★★★★★ ()

появление компьютеров позволило нам решать проблемы, которые до появления компьютеров не существовали =\

unt1tled ★★★★ ()
Ответ на: комментарий от umren

Нет, он о другом. В Go нет того, что он предлагает взамен.

anonymous ()

Я ничего не понял. Там в слайдах язык D что ли?

hlebushek ()
Ответ на: комментарий от hlebushek

Ага. Александреску уволился из Facebook и сейчас целиком и полностью занимается разработкой и продвижением D.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

надеюсь, кто-то от такого продвижения получает удовольствие

anonymous ()
Ответ на: комментарий от cherry-pick

Я где-то короткий вариант вроде видел? Этот опус разрастается с каждой новой версией.

rupert ★★★ ()
Ответ на: комментарий от cherry-pick

Надо коллегам любителям Александреску подарить скрепки.

hateyoufeel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.