Delphi 2009
Aug. 29th, 2008 02:09 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
описание новых фич
Судя по всему, Embarcadero всерьез взялись за дельфи, судя по новой версии. Фичи вроде generics и юникода по умолчанию в win32 - это очень хорошо, счас осталось производителям компонент переползти на это дело и можно будет вслед за ними переходить.
Им бы туда еще метапрограммирование добавить, вообще бы killer feature была бы.
PS: Атомная смерть, они туда и closure добавили. Прозреваю окопавшихся функциональщиков, которым в борланде менеджеры не давали развернуться на всю катушку :)
Судя по всему, Embarcadero всерьез взялись за дельфи, судя по новой версии. Фичи вроде generics и юникода по умолчанию в win32 - это очень хорошо, счас осталось производителям компонент переползти на это дело и можно будет вслед за ними переходить.
Им бы туда еще метапрограммирование добавить, вообще бы killer feature была бы.
PS: Атомная смерть, они туда и closure добавили. Прозреваю окопавшихся функциональщиков, которым в борланде менеджеры не давали развернуться на всю катушку :)
no subject
Date: 2008-08-29 12:05 pm (UTC)no subject
Date: 2008-08-29 01:21 pm (UTC)Жаль, что шансов у дельфей все равно немного.
no subject
Date: 2008-08-29 02:08 pm (UTC)Жаль, что шансов у дельфей все равно немного.
Ну, лично мне- ни капельки. Потому что это Pascal/Delphi как язык плетется в сторону к C++ и никак не может дойти, а не наоборот (что в общем-то подтверждает правоту Страуструпа в видении языка).
Ну, дельфовский паскаль по жизни был не так далек от C++
Бось, Страуструп/Александреску/Мейерс и др. с вами бы не согласились. Очень не согласились бы:)
no subject
Date: 2008-08-29 03:25 pm (UTC)А то в дельфи я их постоянно использую, а в С# очень дико бесит их отсутствие.
no subject
Date: 2008-08-29 07:03 pm (UTC)В стандартном С++ нету. Если нужно - просто делаются руками, например как в COM.
В диалекте от багланда есть для классов унаследованных от TObject.
Кстати, несмотря на то, что на Delphi использовал эти возможности переходя на С++ прекрасно обходился без них. А вот RAII в Delphi типало постоянно.
(с делфи плотно общался с 4ки по 7ку включительно).
no subject
Date: 2008-08-29 10:25 pm (UTC)2. Если ты имеешь в виду RTTI, то да. Базовая реализация простейшая. Расширяема, насколько я уяснил. Когда я активно программил на C++, то этим пользоваться как-то не доводилось. Имхо, зависит от приложения. Вероятнее всего, твоя задача, в которой используется RTTI, может быть решена на С++ шаблонами и несколько иным способом. Если, конечно, это не дикий динамический инструментейшен или вызовы функций через нечто наподобие рефлекшен. Тогда, вероятно, сторонние библиотеки и реализации (e.g. IDispatchImpl, или как там эта хрень называлась...)
no subject
Date: 2008-10-09 03:03 pm (UTC)no subject
Date: 2008-10-09 03:17 pm (UTC)no subject
Date: 2008-08-29 04:52 pm (UTC)Нет, ну неужели вы и вправду считаете, что извращения в стиле Александреску (ТЯЖЕЛОЕ "метапрограммирование" на шаблонах) - это нормально? И в реальной жизни годится на то, чтобы быть чем-то большим, чем "proof of concept"? Идите к функциональщикам, они вам объяснят, как это делается более адекватно.
no subject
Date: 2008-08-29 04:55 pm (UTC)no subject
Date: 2008-08-29 08:10 pm (UTC)Да, возможно, Smalltalk- это более ОО язык, чем С++. Да, возможно, Lisp- это более естественный для FP язык, чем С++. Да, возможно, С позволяет писать более компакный и быстрый код, чем С++. Но что объединяет сильные стороны всех этих языков и парадигм программирования? Именно. Тот самый С++. Уже не говоря про тему топика 'Delphi/Pascal и новые фитчи', которая как-то в приступе ненависти к С++, темплейтам и ФП сразу же позабылась:)
Идите к функциональщикам, они вам объяснят, как это делается более адекватно.
Вот только не рассказывайте пожалуйста про адекват. Как показывает практика, у некоторых особо одаренных людей "адекват" принимает такие неожиданные формы...
no subject
Date: 2008-08-29 08:48 pm (UTC)Собственно, C++ при разумном использовании (когда шаблоны, к примеру, используются по своему прямому назначению - для создания универсальных классов/функций) вполне прост и прозрачен. Ну, может, чего-то не хватает (лично мне больше всего не хватает анонимных функций с замыканиями). Беда возникает, когда пытаются делать что-то средствами, не предназначенными для этого. Поэтому я и не люблю А.А.
no subject
Date: 2008-09-03 04:14 am (UTC)Можно сказать "пишите DSL и генерируйте специализации" - встречный вопрос, нахуя козе боян если уже есть плюсовые шаблоны?
Прозрева. вероятность того, что афтар просто ниасилил
no subject
Date: 2008-09-03 06:06 am (UTC)Хотя тьюринг-полнота плюсовых шаблонов делает их подходящими для таких извращений, хотя я не сказал бы что сильно удобными.
no subject
Date: 2008-09-03 07:01 am (UTC)Плюс мы не откажемся до конца от статического метапрограммирования.
Грубо говоря, отдельные кубики что до сих пор рулятся на виртуальных вызовах будут связываться llvm'ом, но внутри себя кубики связываются статически.
Иначе говоря - всё что не слишком долго (с точки зрения компиляции), дорого (с точки зрения объёма бинаря), и стабильно (с точки зрения рабочести компилятора) будет и далее "генерироваться" обобщенным кодом.
no subject
Date: 2008-09-03 09:00 am (UTC)Беда именно в том, что прочитал, понял и изумился - нахуя.
Но, в принципе, верю, что могут попасться проекты, которые на плюсах удобнее делать именно так. Вопрос только - стоит ли их делать на плюсах?
no subject
Date: 2008-09-03 09:39 am (UTC)Построить производительное СУБД требует либо написания кода на языке низкого уровня - С, С++, asm, llvm IR; либо генерации этого низкоуровневого кода из DSL/высокоуровневого языка.
Писать на Си - получается длинней, более чревато ошибками и дольше, чем на плюсах - потому перевели с Сей на плюсы.
Писать на LLVM IR - убьёшься тапком + неявно platform-dependent (чтобы не было platform-dependent - генерить LLVM IR из C/C++ нужно).
Построение DSL, который выполнит такую генерацию - более трудоёмко, чем написать такую систему на С++ целиком.
А метапрограммирование на плюсах является по сути интеграрованным в С++ DSL'ем, что занимается генерацией кода.
Если есть ещё вопросы - задавайте.
no subject
Date: 2008-09-03 09:42 am (UTC)no subject
Date: 2008-09-03 09:43 am (UTC)no subject
Date: 2008-09-03 10:21 am (UTC)А использование метапрограммирования на шаблонах там, где не надо - создает много проблем. Куда больше, чем использование без необходимости виртуальных функций или RTTI. Почему и возникает желание отобрать эту возможность у 99% программистов (90% ее не используют вообще, еще 9 - используют не по делу).
no subject
Date: 2008-09-03 10:39 am (UTC)Таки извраты нужно исключительно из-за производительности.
no subject
Date: 2008-09-03 10:59 am (UTC)Хорошо, что языки потихоньку развиваются. В тот же C++ должны прийти вещи типа closures. В C# и, кажется, яве и D они уже есть. Вообще C# мне нравится больше C++ (хотя бы синтаксис объявления типов переменных) - но осознаю, что неправильное использование кучи может создать жуткие тормоза (так-то по моим тестам managed код уже вышел на уровень производительности native). К сожалению, перейти не так просто - проекты уже на c++, да и для реального использования нового языка надо изучить не сам язык (дел на несколько дней), а библиотеки (причем так, чтобы не задумываться, какой класс/вызов использовать - а это не просто изучение, а тренировка).
no subject
Date: 2008-10-17 03:24 am (UTC)no subject
Date: 2008-10-17 06:05 am (UTC)