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

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

★★★★★

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

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

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

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от rupert

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

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

anonymous
()

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

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

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

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

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

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

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

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

buddhist ★★★★★
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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
()
Ответ на: комментарий от hlebushek

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

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

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

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

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

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

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

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