Delphi 2009
описание новых фич
Судя по всему, Embarcadero всерьез взялись за дельфи, судя по новой версии. Фичи вроде generics и юникода по умолчанию в win32 - это очень хорошо, счас осталось производителям компонент переползти на это дело и можно будет вслед за ними переходить.
Им бы туда еще метапрограммирование добавить, вообще бы killer feature была бы.
PS: Атомная смерть, они туда и closure добавили. Прозреваю окопавшихся функциональщиков, которым в борланде менеджеры не давали развернуться на всю катушку :)
Судя по всему, Embarcadero всерьез взялись за дельфи, судя по новой версии. Фичи вроде generics и юникода по умолчанию в win32 - это очень хорошо, счас осталось производителям компонент переползти на это дело и можно будет вслед за ними переходить.
Им бы туда еще метапрограммирование добавить, вообще бы killer feature была бы.
PS: Атомная смерть, они туда и closure добавили. Прозреваю окопавшихся функциональщиков, которым в борланде менеджеры не давали развернуться на всю катушку :)
no subject
Жаль, что шансов у дельфей все равно немного.
no subject
Жаль, что шансов у дельфей все равно немного.
Ну, лично мне- ни капельки. Потому что это Pascal/Delphi как язык плетется в сторону к C++ и никак не может дойти, а не наоборот (что в общем-то подтверждает правоту Страуструпа в видении языка).
Ну, дельфовский паскаль по жизни был не так далек от C++
Бось, Страуструп/Александреску/Мейерс и др. с вами бы не согласились. Очень не согласились бы:)
no subject
А то в дельфи я их постоянно использую, а в С# очень дико бесит их отсутствие.
no subject
В стандартном С++ нету. Если нужно - просто делаются руками, например как в COM.
В диалекте от багланда есть для классов унаследованных от TObject.
Кстати, несмотря на то, что на Delphi использовал эти возможности переходя на С++ прекрасно обходился без них. А вот RAII в Delphi типало постоянно.
(с делфи плотно общался с 4ки по 7ку включительно).
no subject
2. Если ты имеешь в виду RTTI, то да. Базовая реализация простейшая. Расширяема, насколько я уяснил. Когда я активно программил на C++, то этим пользоваться как-то не доводилось. Имхо, зависит от приложения. Вероятнее всего, твоя задача, в которой используется RTTI, может быть решена на С++ шаблонами и несколько иным способом. Если, конечно, это не дикий динамический инструментейшен или вызовы функций через нечто наподобие рефлекшен. Тогда, вероятно, сторонние библиотеки и реализации (e.g. IDispatchImpl, или как там эта хрень называлась...)
no subject
no subject
no subject
Нет, ну неужели вы и вправду считаете, что извращения в стиле Александреску (ТЯЖЕЛОЕ "метапрограммирование" на шаблонах) - это нормально? И в реальной жизни годится на то, чтобы быть чем-то большим, чем "proof of concept"? Идите к функциональщикам, они вам объяснят, как это делается более адекватно.
no subject
no subject
Да, возможно, Smalltalk- это более ОО язык, чем С++. Да, возможно, Lisp- это более естественный для FP язык, чем С++. Да, возможно, С позволяет писать более компакный и быстрый код, чем С++. Но что объединяет сильные стороны всех этих языков и парадигм программирования? Именно. Тот самый С++. Уже не говоря про тему топика 'Delphi/Pascal и новые фитчи', которая как-то в приступе ненависти к С++, темплейтам и ФП сразу же позабылась:)
Идите к функциональщикам, они вам объяснят, как это делается более адекватно.
Вот только не рассказывайте пожалуйста про адекват. Как показывает практика, у некоторых особо одаренных людей "адекват" принимает такие неожиданные формы...
no subject
Собственно, C++ при разумном использовании (когда шаблоны, к примеру, используются по своему прямому назначению - для создания универсальных классов/функций) вполне прост и прозрачен. Ну, может, чего-то не хватает (лично мне больше всего не хватает анонимных функций с замыканиями). Беда возникает, когда пытаются делать что-то средствами, не предназначенными для этого. Поэтому я и не люблю А.А.
no subject
Можно сказать "пишите DSL и генерируйте специализации" - встречный вопрос, нахуя козе боян если уже есть плюсовые шаблоны?
Прозрева. вероятность того, что афтар просто ниасилил
no subject
Хотя тьюринг-полнота плюсовых шаблонов делает их подходящими для таких извращений, хотя я не сказал бы что сильно удобными.
no subject
Плюс мы не откажемся до конца от статического метапрограммирования.
Грубо говоря, отдельные кубики что до сих пор рулятся на виртуальных вызовах будут связываться llvm'ом, но внутри себя кубики связываются статически.
Иначе говоря - всё что не слишком долго (с точки зрения компиляции), дорого (с точки зрения объёма бинаря), и стабильно (с точки зрения рабочести компилятора) будет и далее "генерироваться" обобщенным кодом.
no subject
Беда именно в том, что прочитал, понял и изумился - нахуя.
Но, в принципе, верю, что могут попасться проекты, которые на плюсах удобнее делать именно так. Вопрос только - стоит ли их делать на плюсах?
no subject
Построить производительное СУБД требует либо написания кода на языке низкого уровня - С, С++, asm, llvm IR; либо генерации этого низкоуровневого кода из DSL/высокоуровневого языка.
Писать на Си - получается длинней, более чревато ошибками и дольше, чем на плюсах - потому перевели с Сей на плюсы.
Писать на LLVM IR - убьёшься тапком + неявно platform-dependent (чтобы не было platform-dependent - генерить LLVM IR из C/C++ нужно).
Построение DSL, который выполнит такую генерацию - более трудоёмко, чем написать такую систему на С++ целиком.
А метапрограммирование на плюсах является по сути интеграрованным в С++ DSL'ем, что занимается генерацией кода.
Если есть ещё вопросы - задавайте.
no subject
no subject
no subject
А использование метапрограммирования на шаблонах там, где не надо - создает много проблем. Куда больше, чем использование без необходимости виртуальных функций или RTTI. Почему и возникает желание отобрать эту возможность у 99% программистов (90% ее не используют вообще, еще 9 - используют не по делу).
no subject
Таки извраты нужно исключительно из-за производительности.
no subject
Хорошо, что языки потихоньку развиваются. В тот же C++ должны прийти вещи типа closures. В C# и, кажется, яве и D они уже есть. Вообще C# мне нравится больше C++ (хотя бы синтаксис объявления типов переменных) - но осознаю, что неправильное использование кучи может создать жуткие тормоза (так-то по моим тестам managed код уже вышел на уровень производительности native). К сожалению, перейти не так просто - проекты уже на c++, да и для реального использования нового языка надо изучить не сам язык (дел на несколько дней), а библиотеки (причем так, чтобы не задумываться, какой класс/вызов использовать - а это не просто изучение, а тренировка).