Самые интересные публикации 2009 года о Delphi

    В этом году в русскоязычном Delphi-сообществе было опубликовано огромное количество материалов. Можно было запросто пропустить что-то интересное. Я постарался собрать в одной публикации ссылки на наиболее интересные публикации 2009 года. Все публикации имеют прямое отношение к Delphi. Получилось довольно много. Большое спасибо любезным авторам!



    Михаил Мохов: Аспектно-ориентированное программирование и Delphi – заметка об АОП и Delphi, + ссылки на фреймворки.

    Дмитрий Ларионов: Превращаем главное скрытое окно программы в действительно главное окно программы – как избавится от недостатка невидимого окна TApplication в программах написанных на Delphi версии <= 2006.

    Александр Шарахов: Почему мне не нравится TDateTime – достоинства и недостатки типа данных TDateTime в Delphi.

    Алексей Легкунец: Что нужно знать программисту и пользователю, работающему с программами, строящими графики функций

    Упаковка сложных типов данных в Delphi

    Описание работы с Vista UAC в Delphi от Александра Божко
    1. Часть 1. Введение.
    2. Часть 2. Варианты использования.
    3. Часть 3. Повышение прав по запросу с использованием COM Elevation Moniker.


    Технологии интеллектуального редактирования в D2009 (рефакторинг) – Часть 1. Часть 2. Часть 3. – описание работы с встроенными в Delphi инструментами для рефакторинга.

    Подробное описание Ribbon Controls, появившихся в Delphi 2009 от Влада (webdelphi.ru)
    1. Ribbon Controls шаг за шагом. Шаг 1 – визуальная разработка интерфейса.
    2. Ribbon Controls шаг за шагом. Шаг 2 – дополнительные элементы интерфейса


    Алексей Тимохин: О переводе крупного проекта на Delphi 2009 — перевод статьи: “Upgrading a major project to Delphi 2009”,  Lars B. Dybdahl.

    Алексей Казанцев: Расширенная поддержка интерфейсов для Delphi — пример кода, позволяющего добавить поддержку кастомных интерфейсов для любого класса в Delphi (включая базовые VCL-классы).

    Алексей Тимохин: Сравнительная таблица Delphi-компонентов для работы с СУБД Oracle.

    Дженерики



    Алексей Тимохин: Обобщённое программирование(generics) в Delphi 2009 для Win32. Перевод статьи Sébastien DoeraeneGenerics with Delphi 2009 Win32 (With, as a bonus, anonymous routines and routine references)

    Алексей Тимохин: Сравнивая дженерики в C#, C++ и Delphi(Win32) — Перевод статьи: Comparing C#, C++, and Delphi (Win32) Generics. Автор: Craig Stuntz

    Delphi 2010



    Краткое перечисление новинок в Delphi 2010 от Алексея Тимохина.

    Skiminok: Weaver — первые впечатления

    Обзор механизма естественного ввода в RAD Studio 2010 от Skiminok.



    Описание форматировщика кода в Delphi 2010
    1. Delphi 2010 Formatter. Иллюстрированный справочник. Раздел Indentation
    2. Delphi 2010 Formatter. Иллюстрированный справочник. Раздел Spaces


    Обзор новинок в Delphi 2010 от Александра Божко

    1. Delphi 2010. Что нового? #1
    2. Delphi 2010. Что нового? #2
    3. Delphi 2010. Что нового? #3
    4. Delphi 2010. Что нового? #4": Изменения в компиляторе
    5. Delphi 2010. Что нового? #5: Изменения в отладчике.
    6. Delphi 2010. Что нового? #6: Изменения в VCL.


    RTTI в Delphi 2010:
    1. Delphi 2010 RTTI – Основы.
    2. Delphi 2010. RTTI и атрибуты
    3. Использование атрибутов и наследников TCustomAttribute
    4. Углубленное исследование TRTTIType
    5. Углубленное исследование наследников TRttiMember (часть I), свойства и поля
    6. Углубленное исследование наследников TRttiMember (часть II) Методы
    7. Почему я вызываю TRttiContext.Create() и TRttiContext.Free()
    8. Введение в TValue


    Описание библиотек JCL и JVCL:


    Общее описание библиотеки Jedi Code Library. JCL 3.35.
    Серия постов, описывающих некоторые компоненты из библиотеки Jedi Visual Control Library.

    Серия публикаций от Александра Алексеева.



    Обработка ошибок в Delphi-программах:

    1. Обработка ошибок – фундаментальное исследование по обработке ошибок в Delphi. Сравниваются разные подходы (коды ошибок и исключения), рассматривается механизм возникновения и обработки исключений, средства диагностики исключений (Jcl, FastMM, EurekaLog, Windows Error Reporting), даются советы о том, как правильно обрабатывать ошибки. Подробно описывается работа с отладчиком и многое другое. Из-за огромного размера статьи доступен вариант в PDF.
    2. Access Violation в деталях — подробный разбор самой частой ошибки в Delphi-программах. Что это такое, откуда берётся, возможные причины, как диагностировать, как исправлять.
    3. Ищем утечки памяти – статья о том, как искать утечки памяти в Delphi программах с помощью EurekaLog, FastMM, MemProof/AQTime.
    4. Настройки проектов в Delphi с точки зрения поиска ошибок – как настроить проект, чтобы получить максимум информации в отчёте об ошибке.
    5. Как читать Log-файлы отчётов об ошибках EurekaLog, FastMM, JCL – как проанализировать стек вызовов и найти место возникновения ошибки. Типичные ошибки новичков.
    6. EurekaLog с точки зрения ShareWare-разработчика – обзор EurekaLog с позиции разработчика ShareWare-программ (вопросы защиты кода).
    7. Anti-freeze в EurekaLog – отслеживание зависания программы с помощью EurekaLog.


    Менеджеры памяти в программах – описание устройства менеджера памяти в Delphi. Зачем нужен, как используется, межмодульное взаимодействие.

    Создание приложений для Windows Vista в Delphi (до 2007) 

    1. часть 1 — перевод Creating Windows Vista Ready Applications with Delphi. Автор: Nathanial Woolls.
    2. часть 2 — перевод Creating Windows Vista Ready Applications with Delphi. Update — January 2007. Автор: Nathanial Woolls.


    Работа с указателями в Delphi для Win32. — перевод Addressing pointers. Автор: Rudy Velthuis

    Параметры типа открытый массив и "array of const" — перевод Open array parameters and array of const. Автор: Rudy Velthuis.

    PChars: сами строки не включены — перевод PChars: no strings attached. Автор: Rudy Velthuis

    BOOL, Boolean и Integer — перевод BOOL, Boolean and Integer. Автор: Christian Wimmer.

    Что люди любят делать не так в IUnknown.QueryInterface — перевод The ways people mess up IUnknown::QueryInterface. Автор: Реймон Чен.

    Особенности работы с DllMain с примерами на Delphi:



    Перевод серии статей Реймонда Чена – “Как управлять IContextMenu” с примерами на Delphi.

    1. Как управлять IContextMenu, часть 1 — вступительное слово
    2. Как управлять IContextMenu, часть 2 – показ контекстного меню
    3. Как управлять IContextMenu, часть 3 — место вызова
    4. Как управлять IContextMenu, часть 4 — контекст клавиш
    5. Как управлять IContextMenu, часть 5 — обработка сообщений от меню
    6. Как управлять IContextMenu, часть 6 — отображение подсказок меню
    7. Как управлять IContextMenu, часть 7 — вызов пункта меню по-умолчанию
    8. Как управлять IContextMenu, часть 8 — оптимизируем вызов команды по-умолчанию
    9. Как управлять IContextMenu, часть 9 — добавление своих команд
    10. Как управлять IContextMenu, часть 10 — компоновка расширителей меню — основы
    11. Как управлять IContextMenu, часть 11 — компоновка расширителей меню — компоновка


    Перевод серии статей Реймонда Чена: Dragging a shell object, part 1: Getting the IDataObject с примерами на Delphi.

    1. Перетаскивание объекта оболочки, часть 1: получение IDataObject
    2. Перетаскивание объекта оболочки, часть 2: добавляем перемещение
    3. Перетаскивание объекта оболочки, часть 3: определение "оптимизированного" перемещения
    4. Перетаскивание объекта оболочки, часть 4: добавляем красивую иконку
    5. Перетаскивание объекта оболочки, часть 5: заставляем кого-нибудь делать за нас работу


    Серия заметок от Александра Алексеева о создании системы плагинов на Delphi:

    1. Часть 1. Варианты реализации (DLL, COM, пакеты, использование интерфейсов)
    2. Часть 2. Создание точки входа.
    3. Часть 3. Реализация плагина в пакете, в виде DLL.
    4. Часть 4. Объяснение работы пакета как DLL.
    5. Часть 5. Загрузка пакетов в виде DLL.
    6. Часть 6. Интерфейс IInit.
    7. Часть 7. Обработка ошибок в плагинах.
    8. Часть 8. Объявление дополнительных интерфейсов и передача строк.
    9. Часть 9. Совместимость с другими языками. Обмен данными переменного размера.
    10. Часть 10. Пример реализации.
    11. Часть 11. Исходники.
    Поделиться публикацией

    Похожие публикации

    Комментарии 118
      +2
      Спасибо, ценная подборка.
        +4
        Skiminog: Weaver — первые впечатления

        Обзор механизма естественного ввода в RAD Studio 2010 от Skiminok.
        Мог бы и одним и тем же ником подписать, между прочим. Знаешь ведь, что это я :)
        Ну это так, к слову. А подборка действительно отличная.
          0
          Я не знал какой из ников правильный :)
          Исправил.
            +3
            Как насчет поста «Почему я пишу на Delphi»?
            +23
            о боже, оно еще живо?
              +2
              И даже еще где-то применяется =)
              И правильно, ибо у разработчика всегда должен быть выбор. На Delphi удобно делать маленький, простенький софт, имхо.
                +4
                Skype/FruityLoops на Delphi написаны.
                  –6
                  Skype написан на Qt и C++
                    0
                    Все версии? Или только линуксовая?
                    –1
                    Это всего лишь капля в море, имхо.
                      +5
                      Не стоит про qip забывать, тоже Delphi продукт и ой какой массовый :)
                        –10
                        Какой продукт, такое и средство разработки. Не удивлюсь, если Delphi шлет пароли и делает скриншоты.
                          +1
                          Гениально!
                          А компиляторы ассемблера, портят информацию на диске и занимаются прочим беспределом. Столько вирусов же было написано на них…
                            –5
                            Капитан Очевидность? Можно я пожму вашу руку? :)
                              0
                              Можно прсто Кэп. :)

                              комментарий, на который я ответил, показался серьезным заявлением.
                          0
                          Delphi 7 и Delphi 2010 это «немного» разные вещи.
                        0
                        Вот ещё BlogJet, оказывается, на Delphi написан.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          +4
                          Ленин жив. Ленин жил. Ленин будет жить.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              +2
                              Ох уж этот Ленин!
                                +1
                                Шоб я так жил как этот Ленин!
                                  +2
                                  в мавзолее что ли?=)
                                    +2
                                    в памяти :)
                          +2
                          если с него перешли на что-то другое — это не значит что язык должен умереть
                          как визуальный разработчик виндовс приложений — дельфи еще не переплюнули в удобстве
                          да и глюков там поменьше будет чем во всем остальном — уж очень удобно когда надо быстро что-нибудь сваять
                            0
                            >>дельфи еще не переплюнули в удобстве
                            +
                            >>уж очень удобно когда надо быстро что-нибудь сваять
                            Согласен.
                            >>и глюков там поменьше будет чем во всем остальном
                            А вот тут не согласен, вот прямо сейчас на одном форуме обсуждают то, что проги на делфи не запускаются на некоторых XP.

                              +1
                              Можно ссылку? Ни разу подобного не встречал, за все время использования Delphi.
                                  +6
                                  Классный пример! В программе используется база с форматом .adb. Вот что дает Яндекс: «ADBEngine может использоваться в любом языке программирования так, как представляет собой ActiveX DLL»… Т.е. если нет нужной dll, а в программе это не проверяет — что будет? Верно — runtime error. Но виновата Delphi, верно? =))))
                                –2
                                Если этот и правда, то это глюки в RTL — можно обойти, ежели умеючи. Ну или патча какого-нибудь дождаться.
                                  +3
                                  это ошибка одного конкретного продукта ;) такой можно сделать на любом языке:)
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  –5
                                  первая мысль после прочтения заголовка. как оказывается к всеобщей печали еще живо
                                  –9
                                  Некрафилы)
                                    –2
                                    Как-то проходил собеседование в www.3shape.com, в киевский офис разработчиков. На тот момент у них ВСЕ было на Delphi. Из-за чего, собственно, к ним и не пошел.
                                      +2
                                      Скажу больше — знаю товарищей (далеко не одного), которые умышленно идут на Delphi.
                                        0
                                        А по-подробнее можно, почему?
                                          –1
                                          Можно и подробнее.

                                          Главый довод — лёгкий старт. Все в школе учили Pascal, а Delphi лишь хорошее ему расширение, которое совсем не трудно освоить.

                                          Далее сетуют на «легкочитаемость кода». Мол лучше написать несколько строк в стиле паскаля, когда видно все begin'ы и end'ы, чем решить ту же задачу одной длинной строкой, которую через месяц никто «вновь прочитать» не сможет. (Буквально эту фразу мне выдал один такой «делфи-сотрудник»).

                                          Еще стоит добавить, что Pascal держится в десятке самых быстрых языков (Free Pascal, если быть точным).
                                            –2
                                            Знаете, я писал на делфи 2 года, и щас иногда пишу, и на счет begin-ов и end-ов это фишка для лохов-новичков, т.к. в дальнейшем это очень раздражает и только мешает, а особенно типа этого:

                                            — end else begin
                                            — Дастиш фантастиш одним словом.
                                              +1
                                              Знаете, я пишу на делфи 6 лет, и сейчас пишу, и до сих пор ни разу не раздражало. И да, на языках с сиподобным синтаксисом (а конкретно C# и C) я тоже пишу регулярно.
                                              Как сказали бы на ЛОРе, ЧЯДНТ? :)
                                                –2
                                                ты нашел в нем хвостовую рекурсию(tail recursion) или там есть замыкания(closure)? Настоящие, как в моем любимом Scheme :)
                                                  +2
                                                  «Настоящие»? Покажите мне фальшивые замыкания, я хочу посмотреть, что это такое =)
                                                  Я знаю только про одни замыкания на свете — вот такие. (По ссылке исходник на Делфи, не поленитесь, сходите.)

                                                  По поводу хвостовой рекурсии — да, увы. Но это вы все-таки загнули, я не знаю мэйнстримного императивного языка, в котором она бы присутствовала, все-таки концепция немножко из другой области :)
                                                    –2
                                                    > «Настоящие»? Покажите мне фальшивые замыкания, я хочу посмотреть, что это такое =)

                                                    PHP версий до 5.3

                                                    > Я знаю только про одни замыкания на свете — вот такие. (По ссылке исходник на Делфи, не поленитесь, сходите.)

                                                    Я все равно не пойму загромождение из кучи символов. Можно эквивалент этого на более удобном Ruby или Python?

                                                    > По поводу хвостовой рекурсии — да, увы. Но это вы все-таки загнули, я не знаю мэйнстримного императивного языка, в котором она бы присутствовала, все-таки концепция немножко из другой области :)

                                                    Из какой же?
                                                      +1
                                                      > Ruby
                                                      Не владею.
                                                      > Python
                                                      Не владею.
                                                      > PHP
                                                      Не владею, и слава Богу.

                                                      Могу попробовать переписать на Scheme, но:
                                                      а) это потребует некоторое время, давно не брал его в руки;
                                                      б) получится совершенно ординарный для Scheme код, использующий лямбды и замыкания, как обычно в функциональных языках и принято.
                                                      Цель исходника была — продемонстрировать closure в Делфи как обычное средство языка. Если я продемонстрирую closure в Scheme как обычное средство языка, то Америку этим не открою: все и так знаю, что в Scheme есть замыкания.
                                                      Отсюда вопрос: какого лешего вам сдалось на что-то его переписывать?

                                                      > Из какой же?
                                                      Из функционального программирования и λ-исчисления Черча.
                                                      Всегда ваш, К.О.
                                                        0
                                                        Тьфу. Вторая ветвь разговора же про хвостовую рекурсию, а не про замыкание. А к ней λ-исчисление отношения особо не имеет. Простите, увлекся. Только функциональное программирование.
                                                          –3
                                                          > Могу попробовать переписать на Scheme

                                                          Давай, жду.

                                                          > Отсюда вопрос: какого лешего вам сдалось на что-то его переписывать?

                                                          Давать исходник на Дельфи было как минимум глупо. Последний раз я это видел лет 5 назад, когда получил бумажку о том, что я какой-то там круто программист Дельфи :)

                                                          Т.е. функциональное программирование не мэйнстрим? Erlang уже довольно много где используется, да и Scala тоже.

                                                          З.Ы. за сим жду последнего ответа, т.к. меня скоро хомячки с говном съедят :)
                                                            +4
                                                            > Давать исходник на Дельфи было как минимум глупо.
                                                            О да. Обсуждая тему «замыкания в Делфи», давать исходник, демонстрирующий замыкания в Делфи, однозначно глупо. Поистине, надо давать исходник с замыканиями на Python, он же так прекрасно иллюстрирует замыкания в Делфи!
                                                            Я хренею, дорогая редакция.

                                                            > Т.е. функциональное программирование не мэйнстрим?
                                                            Как показывает хотя бы TIOBE — ни на грамм.
                                                            Проекты на Scala можно пересчитать на пальцах. Серверы на Erlang чуть более популярны и удобны, но все же это не мейнстрим. Про Великий и Могучий Haskell вообще молчу.
                                                            В мейнстрим MS может протолкнуть F#, если будет активно работать, но это еще вилами по воде писано.

                                                            Исходник на Scheme будет вам через энное время отдельным комментом. Раз уж так просите.
                                                              –3
                                                              > Как показывает хотя бы TIOBE — ни на грамм.

                                                              Он ничего не показывает, ибо не имеет такого охвата, что бы хотя бы частично показать действительное положение дел :)

                                                              > Проекты на Scala можно пересчитать на пальцах. Серверы на Erlang чуть более популярны и удобны, но все же это не мейнстрим. Про Великий и Могучий Haskell вообще молчу.

                                                              Наверно, Вы пользователь Windows и пишите только GUI приложения. Ни одного многопоточного парсера не писали?

                                                              > В мейнстрим MS может протолкнуть F#, если будет активно работать, но это еще вилами по воде писано.

                                                              Про .Net и вообще все разработки MS можно даже не начинать разговор. Все это не больше чем маркетойдный высер :)
                                                                +2
                                                                > Ни одного многопоточного парсера не писали?
                                                                Когда у меня возникнет такая нужда — я возьму в руки F# и TPL с PLINQ, а никак не Delphi, C#, Scheme или Python.

                                                                > Про .Net и вообще все разработки MS можно даже не начинать разговор. Все это не больше чем маркетойдный высер :)
                                                                Черт, даже не знаю, что ответить. Никогда не умел адекватно спорить с фанатиками, простите :)
                                                              +2
                                                              Ну вот такой жуткий исходник получился (на DrScheme). Лучше не просите, все-таки не основной мой язык.
                                                              (define (entrypoint)
                                                                (begin
                                                                  (let ((_foo
                                                                    (let ((i 3))
                                                                      (let ((proc (lambda (newValue)
                                                                                    (begin
                                                                                      (print (format "Old: ~a, new: ~a" i newValue))
                                                                                      (newline)
                                                                                      (set! i newValue)
                                                                                      (void)))))
                                                                        (begin
                                                                          (proc 5)
                                                                          (print (format "Current: ~a" i))
                                                                          (newline)          
                                                                          (set! i 8)
                                                                          (proc 13)
                                                                          proc)))))
                                                                 (_foo 21))))


                                                              Итоговой вывод:
                                                              > (entrypoint)
                                                              "Old: 3, new: 5"
                                                              "Current: 5"
                                                              "Old: 8, new: 13"
                                                              "Old: 13, new: 21"
                                                                –2
                                                                вот, так понятнее. Ну плюсик не смогу поставить ;)
                                                    0
                                                    Я писал на delphi очень долго, никогда не раздражали begin..end. Сейчас чаще пишу на php — сильно раздражают {}. Честно.

                                                    P.S.: «end else begin» — впервые вижу, чтобы кто-то написал это в одну строку…
                                                    0
                                                    В школе нужно начинать с алгоритмов и никаких языков. На первом курсе — SICP и никаких Pascal/Delphi/Basic. Тогда уровень образования повыситься.
                                                      0
                                                      У нас в школе жалкие основы Pascal'я шли как-раз после Кенгурёнка и Пылесосика.

                                                      То что «надо», это конечно понятно. Я это понимаю так-же как и вы. Это «им» нужно объснить )
                                                        –1
                                                        Чувак, тиха. Лучше не говорить, «они» уже тут. Теперь мне придется каждые выходные ходить в церковь отмаливать карму :)
                                              +1
                                              На Delphi много где пишут. Но самый существенный недостаток, это цена студии.
                                                0
                                                разве кто-то из пишущих сейчас на Дельфи покупает его?
                                                  +2
                                                  Во всех компаниях, которые я знаю и которые использую Delphi, покупают для каждого программиста отдельную лицензию.
                                                    +1
                                                    Подтверждаю. В России точно стали покупать массово, уже года как три-четыре.
                                                –2
                                                кстати чем оно лучше Qt с его Qt Creator?
                                                  0
                                                  Ничем.
                                                  +1
                                                  отличная подборка! Даешь больше информации о Delphi!
                                                    +4
                                                    А компилятор под x64 и нормальная поддержка UNICODE имеются? На дворе 2010 уже.
                                                      +1
                                                      Unicode — вполне.

                                                      http://ru.wikipedia.org/wiki/Delphi_(среда_разработки)

                                                      Новое в Delphi 2009:
                                                      Полная поддержка Unicode. Все функции Windows API заменены на их unicode аналоги (к примеру, ранее MessageBox определялась как MessageBoxA, теперь — MessageBoxW), тип String теперь на самом деле является UnicodeString, а char — WideChar, PChar теперь объявлен как PWideChar. Старые типы и описания ANSI-вариантов системных функций сохранились, однако теперь потребуется прямое их указание (к примеру, Set of char в Delphi 2009 будет Set of AnsiChar, а MessageBox — MessageBoxA). Delphi 2009 — первая из версий Delphi для Win32, требующая серьезной переработки проектов при переходе на новую версию, что особенно критично для системных программистов, широко использовавших прямую обработку типов данных.
                                                        –2
                                                        Т.е. если мне надо написать xml парсер для UTF8, то делфи будет хранить его как WideChar (на что потребуется в два раза больше памяти, хотя это не так страшно при современных объёмах) и будет давать overhead на приведениях типа UTF8 <-> WideChar?
                                                          0
                                                          Нет. Если вам надо хранить в UTF8, вы используете тип UTF8String (который является старым AnsiString с установленной кодовой страницей 65001).
                                                            0
                                                            Т.е. мне надо писать отдельно парсер для UTF8 и UTF16?
                                                            Я к тому, что в любом из современных языков я могу использовать возможности обобщённого программирования. А в Delphi?
                                                              0
                                                              Да с удовольствием. Дженерики уже два года как в действии.
                                                                0
                                                                Когда-то слышал, что дженерики там обрезанные. Как они реализованы?

                                                                Можете показать пример парсера, где бы я мог написать XmlParser и юзать его без малейшего оверхеда? Или пример ассоциативного контейнера для любого типа?
                                                                  0
                                                                  XmlParser < AnyStringType > 
                                                                    +1
                                                                    В качестве примера ассоциативного контейнера (и не только его) можете взять DeHL. Этот проект, кроме набора контейнеров, реализует для Делфи расширения в стиле LINQ. И еще несколько полезных примочек а-ля nullable.

                                                                    Обрезанные — смотря с чем сравнивать. По сравнению с C#/Java — ничуть, они реализованы (почти) идентично (с поправкой на тему различий нативного кода и IL/bytecode). В сабжевом посте есть сравнение. Если сравнивать с темплейтами С++, то ежу понятно, что перевес будет явно не в сторону Делфи.

                                                                    Пример парсера, к сожалению, прямо с ходу так не выдам.
                                                                      –1
                                                                      У этой библиотеки даже документации нормальной нет. Хотя по краткому описанию выглядит неплохо. Но сколько в ней ещё багов? Её пишет один человек и завтра может бросить. В общем, в production code не включишь. То, что в С++ и C# уже давно отлажено и весь функционал отработан, в делфи только только зарождается на добровольных началах.

                                                                      Ну относительно xml парсера и вовсе получается разочарование. Что, нет их чтоли?

                                                                      Я ушёл с делфи 4 года назад. За это время вроде что-то и изменилось. Ну вот те же дженерики. Вроде и есть и в тоже время как-то всё хреново или просто со стороны так кажется.
                                                                        +1
                                                                        Если вам нужен чисто ассоциативный контейнер с гарантированным качеством, то TDictionary<TKey, TValue> имеется в поставке Делфи =) DeHL я предложил, потому что это хорошая демонстрация возможностей дженериков Делфи для различных целей.

                                                                        То, что я не могу вам предложить хороший XML-парсер на Делфи с дженериками, не значит, что их не существует — и тем более не значит, что его невозможно написать!
                                                                        Это просто значит, что мне лично он доселе не понадобился, и не более) Я точно знаю: если что, TXMLDocument в поставке поддерживает Unicode, любую из существующих кодировок после тотального переписывания в Делфи 2009, так как выдает мне UnicodeString. Но вот внутренностями (есть ли там оверхед) или альтернативными реализациями (с дженериками) не интересовался. Извиняюсь.

                                                                        Я сейчас использую в основном Делфи и C# — в зависимости от потребностей. Могу сказать, что они прекрасно друг другу соответствуют по функционалу и возможностям. Единственное, чего не хватает Делфи — доделанной библиотеки, во что-то человеческое превратить их VCL и RTL. Приходится использовать либы третьих лиц, вроде JCL или того же DeHL.
                                                                        Впрочем, я на это уже жаловался в первой части поста.
                                                                          –3
                                                                          > Я сейчас использую в основном Делфи и C# — в зависимости от потребностей. Могу сказать, что они прекрасно друг другу соответствуют по функционалу и возможностям.

                                                                          Я думаю это не совсем правда. :) По возможностям языка Delphi находится на уровне C# 2.0, а на дворе C# 4.0.

                                                                          По самой библиотеке ситуация та же. NET Framework побогаче будет, мягко говоря.
                                                                            +3
                                                                            Если говорить откровенно, C# 3, совместимый по CLR с C# 2, не принес кардинально нового.
                                                                            Лямбда-выражения и замыкание — серебряная пуля в функциональном программировании. Реально реализуется анонимными методами, которые были и в C# 2. И присутствуют в Делфи 2009.
                                                                            LINQ я вам показал.
                                                                            Параметры по умолчанию из C# 4 в Делфи еще с первых версий были. Равно как и работа с COM — здесь уже C# проигрывает вчистую.

                                                                            Неименованные кортежи в С# 3 были, равно как и var, введены чисто для полномасштабной реализации LINQ. На деле этими кортежами мало кто пользуется — тем более с 2010 студией F# принес в .NET Framework человеческие тупли.

                                                                            Против dynamic выставить нечего, пасую. Останемся на уровне C# 3.

                                                                            Ну а о проблемах стандартной библиотеки я уже говорил, добавить нечего — .NET Framework сильнее. С другой стороны, если взять стандартного Делфи-разработчика, который обычно использует 2-3 открытых библиотеки третьих лиц, еще неизвестно, кто выиграет.
                                                                              0
                                                                              > Реально реализуется анонимными методами, которые были и в C# 2. И присутствуют в Делфи 2009.

                                                                              Это вы про TProc<>? Замыкания и лямбды как минимум более лаконичны по сравнению с анонимными методами. Но я согласен, что функциональные фичи в императивных языках смотрятся иногда коряво. Поэтому теперь есть F#.

                                                                              > LINQ я вам показал.

                                                                              Это несравнимые вещи. Во-первых, я уже говорил, linq-like extension (как автор его называет) написанное человеком в свободное время и часть коммерческого фремйворка разные вещи. Я пока не могу даже документацию и примеры посмотреть, что это вообще такое, а LINQ уже несколько лет используется в production code. Вы сами то им пользовались?

                                                                              > 2010 студией F# принес в .NET Framework человеческие тупли.

                                                                              F# можно поставить и на олее ранние студии. К тому же F# это скорее плюс к C#, чем к Delphi. Потому как мы получили мощный инструмент в рамках одного фреймворка. Прикрутить либу на F# к C# минутное дело.

                                                                              А что насчёт type inference? Generators (yield)? А в Delphi вообще итераторы есть?

                                                                              Остаёмся где-то на уровне C# 2.5 :) В общем-то глупо отрицать отставание Delphi, это объективный факт. Вы не согласны?

                                                                              > С другой стороны, если взять стандартного Делфи-разработчика, который обычно использует 2-3 открытых библиотеки третьих лиц, еще неизвестно, кто выиграет.

                                                                              Я сомневаюсь всё-таки. Что там у делфи с средствами для создания и деплоймента web-services? Когда я пересел с Делфи был голяк, а в .NET (равно как и в Java) всё очень хорошо, за пару дней можно создать простейший сервис и масштабировать его до уровня крупной компании. В области RIA тоже проигрыш.
                                                                              Delphi нечего противопоставить новому WPF.

                                                                              В области 3D визуализации тоже голяк какой-то. DirectX SDK под C++, есть куча библиотек для C#. Есть OpenGL скажете вы, ну хорошо. попробуйте найдите под Delphi библиотеку уровня OpenInventor (есть порты под .NET и Java) или хотя бы Coin3D, в них используется OpenGL.

                                                                              Что насчёт вычислений на GPU? Опять облом. В итоге всё, с чем лично я работаю, оказывает нереализуемо на практике. Вот так чтобы взял и начал разработку. И всё это очень смачно подкрепляется отсутствием поддержки x64 (хотя бы x64).
                                                                                +1
                                                                                > Вы сами то им пользовались?
                                                                                Естественно. Я не кидаю ссылки на то, о чем не имею представления. Именно поэтому я не ответил вам по поводу XML-парсера, хотя мог бы заглянуть на torry.net: там 100% нашлась бы парочка-другая многообещающих либ.
                                                                                Зато за DeHL и его контейнеры могу ручаться: это надежно работающая альтернативная реализация LINQ в полной мере, и отсутствие у нее документации (в конце концов, мы что, не люди, мы исходники читать разучились?) не является поводов поносить проект с ног до головы.

                                                                                > F# можно поставить и на олее ранние студии. К тому же F# это скорее плюс к C#, чем к Delphi. Потому как мы получили мощный инструмент в рамках одного фреймворка. Прикрутить либу на F# к C# минутное дело.
                                                                                Я говорил в этом абзаце про одну конкретную мелочь: тупли, а не про F#. С мощью F# я даже и не заикаюсь спорить, сам поддержу любой холивар в его защиту.
                                                                                А речь шла вообще о System.Tuple<>.

                                                                                > type inference
                                                                                Отсутствует за ненадобностью: все переменные явно типизируются при объявлении в разделе var. Разговор о том, какая система объявления лучше, породит новый холивар, коему черт знает сколько лет. Я придерживаюсь мнения, что объявление в отдельном разделе приучает к дисциплине и большей продуманности кода, зато объявление в любой точке на порядок удобнее и быстрее для написания)

                                                                                > Generators (yield)
                                                                                Нет.

                                                                                > А в Delphi вообще итераторы есть?
                                                                                Здрасте вам с бубликом)
                                                                                const
                                                                                  Fibonacci: array of Integer = (1, 1, 2, 3, 5, 8, 13);
                                                                                var
                                                                                  I: Integer;
                                                                                // ...
                                                                                  for I in Fibonacci do
                                                                                    WriteLn(I);

                                                                                IEnumerator<T> есть, утиная типизация есть, готовые контейнеры есть… что-то вы действительно отстали от жизни =)

                                                                                > В общем-то глупо отрицать отставание Delphi, это объективный факт. Вы не согласны?
                                                                                Если бы я был с этим согласен, я бы уже три поста тут кричал во всю Ивановскую, что C# 4 — унылое индусское поделие и Делфи давно поработил мир)
                                                                                Нет, если серьезно: я сам спокойно приведу вам ряд мест, в которых Делфи как язык проигрывает многим другим языкам. Но я, как и комментаторы ниже, заявляю следующее: ни одно из этих мест не является критичным. Ничто не привносит в разработку кардинального упрощения.
                                                                                С одной стороны баррикад x => x * 2, с другой function (x: Integer) begin Exit(x * 2) end.
                                                                                С одной yield return x, с другой — реализация метода IEnumerator<T>.GetCurrent().
                                                                                И так далее.

                                                                                Заметьте, речь сейчас идет о языке, а не о библиотеке.
                                                                                А на каждую библиотеку надо искать конкретные аналоги.
                                                                                К примеру, известные практически всем Делфи-разработчикам:
                                                                                DelphiX для DirectX.
                                                                                OmniThreadLibrary, очень похожий по идеологии на TPL.

                                                                                С CUDA и им подобными я не работал, поэтому ничего не приведу. Но вообще я не вижу проблемы в том, чтобы скомпилировать на С DLL или объектный файл и спокойно написать на Делфи модуль-обертку для него, как обычно и делаются С++ хедеры.
                                                                                  0
                                                                                  Прошу прощения, описка.
                                                                                  «Если бы я был с этим не согласен...», конечно же.
                                                                                0
                                                                                А что вообще в Delphi с параллельными вычислениями? Почему они не могут реализовать хотя бы OpenMP? В .NET есть ParallelExtension, я уж не говорю про F#.
                                                                                0
                                                                                Покажите, что можно реализовать на C#4.0, чего нельзя на Delphi и я вам поверю. В противном случае — вы лукавите, выдавая желаемое за действительное ;).
                                                                                  0
                                                                                  var source = Enumerable.Range(100, 20000);

                                                                                  // Result sequence might be out of order.
                                                                                  var parallelQuery = from num in source.AsParallel()
                                                                                  where num % 10 == 0
                                                                                  select num;

                                                                                  Вот вам простейший Parallel LINQ запрос. Повторите.
                                                                                    0
                                                                                    Тогда уж объясните, что он делает и когда такое необходимо?
                                                                                      0
                                                                                      Я просил задачу, а не код ;). Объясните, что делает данный код — сделаю тоже самое на Delphi.
                                                                                        0
                                                                                        var parallelQuery = from num in source.AsParallel() where num % 10 == 0 select num;

                                                                                        Данная строчка кода обходит массив и выбирает значения кратные 10. Причём делает это параллельно. Т.е. распределяет все ресурсы на все процессоры.

                                                                                        То, что можно придумать аналог на Delphi я не сомневаюсь (хотя мне интересно как вы параллелизм сделаете). Мы обсуждаем языки.
                                                                                          0
                                                                                          Всего-то… Ну тогда обходим массив с помощью потоков. Код конечно получится значительно больше и менее красив, но вполне рабочий. Что-то подобное решалось тут: forum.vingrad.ru/topic-231619.html в рамках конкурса между Delphi-программистами.

                                                                                          >То, что можно придумать аналог на Delphi я не сомневаюсь (хотя мне интересно как вы параллелизм сделаете). Мы обсуждаем языки.

                                                                                          Я про это и говорю. Не знаю, пока еще, ни одной задачи, которую можно решить с помощью одного языка программирования и нельзя решить с помощью другого. Да, код будет разный, объем работы, объем занимаемого времени и места, время получения результата тоже. Но результат будет одинаков. Поэтому, нет смысла говорить, что какой-то язык сильнее/слабее другого — разница в степени и качестве использования… Хотя я и сам не так давно грешил подобным — очень рьянно защищал Delphi, доказывая всем и вся его «крутость» =)
                                                                                            0
                                                                                            Да, всего-то то, что записывается одной строчкой в C# требует 50 на Delphi. Ассемблер и brainfuck обладают Тьюринг полнотой, следовательно на них тоже можно реализовать всё. Только для меня язык прогрммирование — это средство решения задач, а не клавиатурный тренажёр.
                                                                                              0
                                                                                              Фанатизм… Ок, в вашем же ключе — покажите аналог VirtualTreeView на C#. А потом потестим, кому сколько кода понадобится, чтобы реализовать одно и то же =)
                                                                                                +1
                                                                                                C выходом WPF .NET ушёл далеко вперёд по части программирования продвинутых интерфейсов. Тут глупо тягаться.

                                                                                                Что особенного в VirtualTreeView? Всё это есть в .NET и всё расширяется в WPF.
                                                                                                Есть даже экзотика типа: www.devcomponents.com/treegx/img/TreeGXComp.png

                                                                                                  –1
                                                                                                  И снова фанатизм… Вы знаете возможности VT? Нет? тогда почему утверждаете, что «тягаться глупо»?

                                                                                                  >Всё это есть в .NET и всё расширяется в WPF.

                                                                                                  Серьезно? Видимо я очень давно не трогал .Net. Подскажите, сколько строк надо будет написать, чтобы каждой ячейке дерева, в любой ветке которой неограниченное количество столбцов, назначить свой редактор (текст, дата, время, выпадающий список, чекбокс и т.д… вплоть до экзотики, наподобии эквалайзера)? В Delphi — 2-3 строки, не считая самого редактора. Реализация редактора зависит только от фантазии…
                                                                                                    0
                                                                                                    Хоть я на этом празднике жизни и представляю Делфи-сторону, но позвольте все-таки подтвердить: с WPF по части удобства использования мало какой графический тулкит сравнится.
                                                                                                      0
                                                                                                      Ну так я дал пример и задал вопрос. Ответа только пока не вижу ;)
                                                                              0
                                                                              Не совсем — собственно дженерики в Delphi куда лучше плюсовых ввиду нетипизированности последних.
                                                                              Другое дело, что средств метапрограммирования общего назначения в Delphi нет.
                                                                              Но и тут у плюсов особых дивидендов нет: там, где кровь из носу требуется метапрограммирование — будут использовать LISP, Nemmerle и т.п.
                                                                      0
                                                                      Как будет хранить программа — это уже ваша проблема. Хоть в AnsiString, хоть в UTF8String, хоть в виде байтов…
                                                                      0
                                                                      >>Новое в Delphi 2009: Полная поддержка Unicode.
                                                                      Молодцы! И главное- как вовремя!!!
                                                                        +1
                                                                        некоторых разработчиков это не смущает, ибо можно писать и на основе WideString ;)
                                                                      0
                                                                      Недавно был на семинаре от Embarcadero, обещали сделать компилятор в следующей, или через одну версию делфей.

                                                                      Поддержка юникода с 2006й студии, кажется.
                                                                        +1
                                                                        2009
                                                                          0
                                                                          До 2012 успеют? :)
                                                                            0
                                                                            Пожалуй, нужно до 2011, чтобы ну хоть годик под 64 покодить :-)
                                                                        –3
                                                                        К сожалению то, что на Delphi до сих пор пишут, ещё не говорит о том, что оно не устарело…
                                                                        На мой взгляд, главная беда в в том, что его до сих пор преподают в некоторых ВУЗах.
                                                                          +2
                                                                          Проблема это когда MS DOS и Basic изучают год, а Дельфя — терпимо.
                                                                            –1
                                                                            В моем университете на первом курсе многим привили полное отвращение к Delphi.
                                                                            +13
                                                                            Delphi — отличный инструмент для создания windows-приложений, запускающихся на всех версиях Windows и не требующих скачки-установки фреймворков на сотню мегабайт. Плюс к этому огромная база готового кода, библиотек и компонентов, а также сильное русскоязычное делфи-сообщество.
                                                                              +1
                                                                              спасибо, ценный пост. Многое уже читал, но нашлось кое-что новое.
                                                                                0
                                                                                Я надеялся, что каждый сможет найти в этом посте что-то новое для себя.
                                                                                +1
                                                                                К сожалению, заметил, что последние версии среды какие-то перегруженные, кучу всяких пакетов и фремворков хотят при установке…
                                                                                но вот для создания программок для построения простых графиков вполне годится, а, главное, умение, инструмент уже есть, ничего придумывать не надо.
                                                                                Всему своё место.
                                                                                Для меня дельфи — дверь в мир программирования, позволившая потом научиться базису и на php и программированию на asm для микроконтроллеров, и это все было проще понимать к тому моменту.
                                                                                  +1
                                                                                  Если вам нравился Delphi, то вам понравится FreePascal и IDE Lazarus для него. Очень интересный инструментарий для разработки высокопроизводительных кроссплатформенных приложений.
                                                                                    0
                                                                                    Не всегда. Мне нравится Delphi, но вот FreePascal не понравился.
                                                                                    Правда, я очееень давно смотрел, может уже многое поменялось. Надо будет еще раз потестить.
                                                                                      +1
                                                                                      Нормальные билды FreePascal не так давно появились. А раньше его использовать нереально было. Сейчас вполне можно собирать приложения с переносимостью на другие платформы. И да, в IDE Lazarus на данный момент повторили почти весь Delphi 7.
                                                                                        0
                                                                                        thx, посмотрю. жаль только, что нет аналога virtualtreeview для лазаруса =(
                                                                                          0
                                                                                          Одна из старых версий была портирована: wiki.lazarus.freepascal.org/VirtualTreeview
                                                                                            0
                                                                                            это очень слабый порт. там нет и половины того, что можно сделать в делфи =\
                                                                                      0
                                                                                      Бесспорно интересный. Но я пока что предпочитаю удобство в работе высокопроизводительности.
                                                                                        0
                                                                                        В данном случае меня больше интересует кроссплаторфменность.
                                                                                      +3
                                                                                      детский сад, ей богу!

                                                                                      может хватит уже пиписьками мериться? пусть каждый пользуется тем что ему больше нравится, главное чтоб был результат, обязательно надо в кого-нибудь или чего-нибудь грязью кинуть…
                                                                                        +1
                                                                                        Мерятся инструментами полезно для общего развития. =) Иногда что-то новое узнаешь.
                                                                                          +1
                                                                                          Не знаю как с другими языками, но когда на Хабре речь заходит о Delphi — появляется масса людей, которые в своём стремлении доказать, что Delphi умер, или отстал в развитии, сравнивают его сразу со всеми существующими языками программирования. Это, конечно, очень познавательно, но едва ли такой разговор можно назвать конструктивным.
                                                                                        0
                                                                                        большое спасибо!

                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                        Самое читаемое