История языков программирования: Delphi — больше, чем просто язык

    image

    С Delphi обычно ассоциируется среда разработки приложений на основе языка Object Pascal, разработанного фирмой Borland. Этот язык является наследником Turbo Pascal с объектно-ориентированными расширениями, который в свою очередь ведет свою историю от «чистого» Pascal, созданного Никлаусом Виртом в 1970 году.

    Впоследствии, в 2002 году, разработчики из компании Borland официально поставили знак равенства между языками Delphi и Object Pascal.

    Предыстория


    Изначальный Pascal, по мнению его разработчиков, имел самый быстрый компилятор в мире. Более того, вместе с ним была впервые разработана технология создания платформенно-независимых программ, которая нашла широкое применение в таком языке, как Java.

    Однако его IDE, если это понятие можно применить к среде разработки того времени, функционировала только на базе операционной системы DOS.

    С появлением Windows возникла необходимость в создании среды разработки ПО для этой платформы. Наиболее популярным решением для персональных Windows-компьютеров в 80-е — начале 90 годов стал компилятор и IDE Turbo Pascal фирмы Borland. Встроенный компилятор обеспечивал высокую скорость компиляции и высокое качество кода (отсюда приставка Turbo). Среда Turbo Pascal обеспечивала также отладку кода, содержала богатый набор примеров. Все эти качества на какое-то время позволили Turbo Pascal стать стандартом языка Pascal.

    Вызов времени


    В Windows довольно быстро начал развиваться графический интерфейс, а в IDE Turbo Pascal по-прежнему использовался DOS-подобный интерфейс. Постепенно в Microsoft поняли, что нужно двигаться в сторону «визуализации» программирования.

    Чтобы создать простую программу, разработчикам приходилось писать по несколько страниц кода: прописывать объемные блоки кода для меню и окон, шрифтов, очищать память, «рисовать» кнопки и т.д. Однако преимущества графического интерфейса Windows были довольно сильны, поэтому нужно было поддержать развитие операционной системы. В Microsoft понимали, что необходимо как-то облегчить жизнь разработчиков. Поэтому в 90-х годах компания запустила несколько параллельных проектов по созданию нового языка программирования и среды разработки для Windows. Первой ласточкой стал Visual Basic.

    image

    Перспективы языка Pascal в этом отношении оказались далеко не радужными. К середине 90-х годов он уже находился в довольно запущенном состоянии. Компания Borland начала дорабатывать его, но вскоре стало понятно: изменения и добавления будут настолько серьезными, что результат этой работы можно считать новым языком программирования. Для нового языка была разработана IDE с графическим интерфейсом. Новая среда программирования и язык получили общее название Delphi.

    Своё имя новая система (Delphi) получила в честь древнегреческого города Дельфы. Название было выбрано неспроста: город Дельфы связан с именем бога мудрости и покровителем искусств Аполлона. Согласно легенде главное святилище Аполлона находилось именно в этом городе. Его жрицы-сивиллы изрекали пророчества желающим узнать свою судьбу.

    «Имя Delphi было предложено Денни Торпом во время мозгового штурма. Мы хотели, чтобы в имени системы отразились уникальные способности продукта к работе с базами данных, и Delphi как нельзя лучше перекликается с таким заслуженным именем в этой области, как Oracle, по крайней мере для тех, кому сочетание «Дельфийский Оракул» о чем-то говорит», рассказывал руководитель исследовательской группы по разработке системы Delphi Чак Язджевски.

    В России Borland Delphi появился в конце 1993 года и сразу же завоевал большую популярность.

    Основные версии


    image

    Версия 1 была предназначена для разработки под 16-разрядную платформу Win16. Начиная со второй версии, была реализована возможность компиляции программы под 32-разрядную платформу Win32.

    image
    Delphi 1

    В версии 3 появилась поддержка многозвенной технологии (multi-tiered) доступа к данным, что позволило создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

    image
    Delphi 3

    Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux.

    image

    Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET). Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) позволили создавать как приложения Win32, так и .NET-приложения.

    В Delphi 2006, появилась возможность писать приложения для .NET используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволила писать .NET-приложения на C# и Win32-приложения на C++. В Delphi 2006 также была реализована технология MDA (Model Driven Architecture) с помощью ECO (Enterprise Core Objects) версии 3.0.

    За что боролись


    Процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Достаточно просто перетащить нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки.

    Разработчик получил в распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом.

    Стало возможным создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP.

    Появилась возможность создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO.

    В Delphi разработчикам дали возможность создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать шаблоны проектов и мастеров, генерирующих заготовки проектов. Более того, авторы предоставили разработчику интерфейс для связи других приложений (или внешних программ) с Delphi IDE.

    Перемены


    Новая версия Delphi выходила каждый год, но после пятой как будто что-то произошло… Позже выяснилось, что параллельно с работой над новой версией Delphi велась разработка Delphi-подобного языка программирования для Linux. Новый продукт получил название Kylix. Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Delphi, из компании Borland Ltd. в Microsoft Corp.

    В марте 2006 года компания Borland приняла решение о прекращении дальнейшего развития интегрированных сред разработки JBuilder, Delphi и C++Builder по причине убыточности этого направления. Была запланирована продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор. Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса.

    После этого разработкой IDE-продуктов стала заниматься новая компания — CodeGear, которая была финансово полностью подконтрольна Borland.

    В марте 2007 года CodeGear порадовала пользователей обновлённой линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

    image

    25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. В этой версии появилось множество нововведений на уровне языка:

    • По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL;
    • Замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).
    • Обобщённые типы, они же generics.
    • Анонимные методы.
    • Новая директива компилятора $POINTERMATH [ON|OFF].
    • Функция Exit теперь может принимать параметры в соответствии с типом функции.

    В версии Delphi XE2 (2011 год) был добавлен компилятор Win64 и кросс-компиляция для операционных систем фирмы Apple (MacOS X, iOS).

    Про следующую версию в своем интервью рассказывал Всеволод Леонов, российский евангелист Delphi из компании Embarcadero Technologies:

    image
    Продукт Delphi XE3 является продолжением нового поколения средств быстрой разработки семейства Delphi. Напомню, в 2011 году вышла Delphi XE2 с платформой FireMonkey, которая является альтернативой библиотеки визуальных компонентов VCL.

    Она очень похожа на VCL по методам использования и составу компонентов (кнопки, метки, поля ввода, меню и т.д.), но обладает способностью быть перенесенной на другую операционную систему. FireMonkey — кроссплатформенная. Приложения, созданные с помощью FireMonkey, могут компилироваться и под Windows, и под Mac OS. Практически в один-два «клика» мы можем пересобрать проект под принципиально другую операционную систему. Практически все демонстрационные проекты, поставляемые с Delphi на платформе FireMonkey, имеют две версии: одну под Windows, другую — под Mac OS. И для этого не нужно вносить изменения в исходный код приложения
    Вышедшая в 2013 году версия Delphi XE5 обеспечила кросс-компиляцию приложений для устройств на платформе ARM/Android.

    image

    В апреле 2016 года появилась Delphi 10.1 berlin. Нововведения:

    • Компилятор и набор инструментов Object Pascal для 64-разрядной iOS;
    • Поддержка универсальных приложений iOS (включение 32- и 64-разрядных двоичных файлов в пакет приложения);
    • Предпросмотр FireUI на мобильных платформах;
    • Предпросмотр на разных устройствах;
    • Расширенные возможности работы со стилями в дизайнере единого интерфейса, в том числе универсальные стили и настройка стилей Windows;
    • Диспетчер устройств FireUI позволяет изменять спецификации доступных устройств и добавлять новые устройства;
    • Элементы управления Memo, ListView, Calendar, Switch для платформы iOS;
    • Компонент MapView для мобильных платформ (iOS и Android), поддерживающий специализированные библиотеки интерактивных карт для каждой платформы (разработанные соответственно Apple и Google).

    Ни жив, ни мертв


    Известно, что Delphi перманентно «хоронят» или заявляют, что так жить нельзя. Они аргументируют тем, что система стала монструозной, неактуальной, неподдерживаемой, неудобной, какой-то еще…

    Но можно вспомнить, что такое мнение чаще встречается в США и Западной Европе, где этот язык бешеной популярности и не имел никогда. Там эти соображения могут быть вполне резонными во многих случаях. Но есть и другие страны, где ситуация может отличаться — страны СНГ и остальные страны Восточной Европы.

    image

    С этим согласен Всеволод Леонов:
    Небольшой исторический экскурс по поводу стран Восточной Европы. Система образования бывшего СССР была очень сильна во многих аспектах, но не по части прикладного программирования. В начале 90-х как получить доступ к компьютеру, так и научиться что-то делать в современных средах разработки могли лишь те, кто имел определенную специальность.

    Целые факультеты «пролетали мимо» фундаментальных курсов по программированию. И наличие Turbo Pascal с низким порогом вхождения, а затем среды Delphi, позволяющей заняться самообразованием в хорошем смысле этого слова, смогли насытить ИТ-отрасль достаточно грамотными разработчиками, а также повысить общенациональный инженерный уровень создания прикладного ПО.

    Таким образом, для стран бывшего соцлагеря связка Pascal/Delphi резко выдернула экономику из ИТ-небытия за счет очень простого языка программирования и среды визуальной разработки на основе готовых компонентов.

    Новый герой из open source


    Наиболее известной свободной реализаций языка Pascal является Free Pascal. Помимо открытости исходного кода, его основным преимуществом является мультиплатформенность, а также поддержка различных диалектов.

    image

    На основе FreePascal создана свободная мультиплатформенная IDE Lazarus, позволяющая работать с проектами Delphi. Она основана на библиотеке визуальных компонентов Lazarus Component Library (LCL).

    Список заявленных поддерживаемых платформ:

    • Windows: 98, 2k, XP, Vista, 7, 32 и 64bit;
    • FreeBSD/Linux: gtk 2.8 и qt4.5, 32 и 64bit;
    • Mac OS X: 10.4, LCL только 32bit, не-LCL могут быть 64bit.

    С другой стороны, среда Delphi по мере развития действительно становилась все более громоздкой и малопригодной для обучения программированию. Кроме того, отсутствует бесплатная версия Delphi даже для академического использования. Данные факторы привели к практически полному исчезновению Delphi из сферы образования.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 153
    • +3

      В конце стоило бы добавить C# с сервером веб приложений ))
      Какой же молодчик Андерс Хейлсберг Обьединил очень много языков и создал C#

      • +1

        А потом и TypeScript.

        • 0
          Андерс Хейлсберг

          Все же Аннерс, раз уж он датчанин. Хоть имя и пишется через d.

        • +3
          Данные факторы привели к практически полному исчезновению Delphi из сферы образования.

          Интересно, а в каких Российских ВУЗах прекратили использовать Delphi «для образования»?
          • –2
            Во, многих, надо полагать…
            • +1
              Захожу на сайт МГТУ имени Баумана, в поиске delphi — 751 ответ, pascal 759 ответов.
              Всё таки кто не использует?
              • 0
                Сейчас вроде нет больше Delphi в Бауманке. Но за все факультеты не скажу
                • 0
                  В Бонче и не было даже. Весь курс сидели на Java, пару семестров С++ (но скорее для общего развития). Так что нет.
                  • +1
                    Простите, что такое Бонч? и про какие годы речь.
                    • +1
                      Извиняюсь, думал в представлении не нуждается. «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича», один из ведущих российских вузов. Окончил в 2009-2010.
                      • 0
                        P. S. Если что — просто продолжал ветку про отсутствие Delphi в вузах)
                        • +1
                          Ну а мы проходили Delphi в не таких уж далеких 2009-2011 годах. Так же Borland C++ Builder на тот момент был не менее хорош, многие его предпочитали на 1-2 курсе (но речь о языке, а не IDE). А потом появилась бесплатная студия в нашем вузе и про пиратскую Delphi все забыли.
                          • 0
                            Исходя из комментария, я подумал вы про Бауманку продолжаете.

                            Насчет ведущего — немного спорно, конечно ;)
                            Впрочем, тема не об этом.
                            • 0
                              А, нет-нет, я о своем вузе уже, коли речь пошла о непреподавании, так сказать, Delphi в вузах. Ну а насчет ведущего — тут надо уже проверять имеет ли он сейчас такой статус, да. Во всяком случае в его защиту, чтобы наверняка, хочу сказать, что по Питеру он ведущий точно)
                        • 0
                          Скажите, Вы учились на дневной или заочной форме обучения? Также, как бы Вы в 5 бальной шкале оценили обучение алгоритмам и логике в своём университете?
                          Например, задачу: дан текстовой файл на 100 гб, отсортировать данные при условиях (список ограничений) в Вашей группе многие бы решили?
                          • 0
                            Вы знаете… Честно признаться, я долго думал, стоило ли мне вообще оставлять свой комментарий, ибо такого вопроса боялся, честно признаюсь… Ситуация в нем сложилась, возможно, как и в любом российском вузе, следующая: при весьма ощутимых дотациях (самого вуза) огромные средства вкладываются в модернизацию процесса обучения, взять всем не по наслышке известный современнейший по всем меркам корпус на пр. Большевиков из стекла и бетона, с огромными и обставленными по последнему слову техники аудиториями, электронными досками, комнатами для групповых занятий и прочим, и это при всем при том, что когда я только поступал в него, занятия некоторое время до окончания его постройки проводились в здании детского сада (в прямом смысле, двухэтажный детский сад по типовому советскому проекту). Однако преподавательский состав довольно взрослый. Возможно из-за того, что желающих поступать на нищенскую зарплату, особенно молодежи, впереди которых вся жизнь и которые, разумеется, мечтают получше обустроиться в ней, особенно имея неплохие способности. Это, конечно, сказывается на самих языках и актуальности рассматриваемых технологий (по Линуксу почти истоки, надо сказать). Однако с Java ситуация была весьма неплоха, так как препод был, пожалуй, самым молодым из всех (относительно, конечно. Взрослый мужчина тоже), преподавал весьма неплохо, всегда был готов ответить на вопросы.

                            Касаемо «многие бы решили» — дело в том, что группа лично у нас (на параллельных курсах, говорят, ситуация аналогичная) собралась на удивление разношерстная, и на всем потоке было только 3 (!) человека, которые действительно хотели идти в разработку. Еще парочка не особо определившихся. Для меня до сих пор загадка почему? Что они все делали на факультете под намекающим названием «Информационных систем и технологий»? Ладно сестра училась в экономическом, дак там ситуация была аналогичная, оно и понятно, ибо до сих пор это считается лакшери и родители считают своим долгом таким образом обеспечить своим чадам безбедное будущее, окей, но на факультете «Информационных систем и технологий»?! Поэтому тут дело не в качестве преподавания, а в качестве… Как-бы… Применения полученных знаний и желании учиться.

                            Поэтому я мог бы поставить оценку, но, учитывая вышеперечисленные мною факты, это, увы, сложно. Преподаватели честно обрабатывали свой хлеб, я им благодарен (разве что у самого не было возможности эти знания приобретать в дальнейшем, так как вовсю занимался разработкой своей CMS, которую начал писать на 2 курсе, а как известно, поддержка известных продуктов требуют огромного количества времени), ну и плюс, как я уже и говорил, людей, способных решать задачи такого рода, просто не было. Однако скажу честно, даже при всем при этом, большое количество людей на потоке такие задачи в принципе решить были в состоянии наравне в примерами по математике. Позволяли способности, не более. Поэтому возможно знания вуз давать был и в состоянии, было бы желание их получать.

                            И да, учился на очной, дневной, диплом специалиста (успел в последний год на бакалавра, поэтому теперь полноценный специалист без магистратуры, а не бакалавр по болонской системе, которых преподаватели называли у нас «недоучками»).
                      • 0

                        В Физтехе нет.

                    • –6
                      В более-менее адекватных. Шараги, как преподавали паскаль с его производными, так и преподают. Заменили правда таки на C#. Как было тяжело найти знающего С или С++ программиста, так и осталось.
                      • +8
                        Проблема не в языке, а в том, что преподают язык вместо программирования.
                        А для обучения именно программированию паскаль (особенно объектная версия) вполне годится.
                        • 0
                          Преподают алгоритмизацию, а не «программирование» или язык. Язык тут вообще не важен.
                          • +4
                            Поправка: должны преподавать, но из-за низкой компетенции преподавательского состава студенты изучают именно язык.
                            • 0
                              Если бы алгоритмизацию.
                              Как правило преподают именно язык. Причем в стиле: «вот вам операторы и функции, а дальше крутитесь, как хотите».
                              Что же до программирования, то в понимании термина, которое давалось мне, алгоритмизация лишь часть этого понятия.
                          • 0
                            Шараги — преподают delphi (C# или что там ещё), а преподавать должны базу. Хоть на ПСЯК Сульповар 8.5 (Ц).
                            PS. У нас Delphi не было в программе, только версию 1.0 показывали как диковинку из будущего.
                          • 0
                            Есть такие. Вот только выбранные альтернативы не всегда можно похвалить. Обычно это или C# или Python. Учить таких студентов чему-либо низкоуровнему оказывается достаточно сложно, привыкают к сборщикам мусора и всё такое. Как верно заметили — учат именно языку, а не базовым основам программирования.
                            • –2
                              Дельфи как и паскаль только в школе видел.
                              В ВУЗах си под дос и нортон коммандер. причем бывает, что это всё крутится на мак мини с двойной загрузков, вин хп-7 и дос. увы.
                            • +4
                              На Delphi как раз таки и обучают. А все потому, что есть компоненты и встроенные функции на все случаи жизни, особенно касаемо баз данных.
                              И кстати много софта написано именно на Delphi. небезызвестный мессенджер QIP, не менее небезызвестный аудиоплеер AIMP, не менее небезызвестная Victoria 4 версии (хотя там Delphi с ассемблерными вставками), флешеры и дамперы для MTK, RockChip, Spreadtrum и т.д…
                              • +2
                                TotalComander же.
                                • +4
                                  Убеждённо пользуюсь The Bat! молдавским с самых девяностых годов.
                                  • 0
                                    Даже SCADA-системы доморощенные на Delphi есть, но язык всё-таки позиции явно сдал.
                                    • +2
                                      FruttyLoops, WinRar, The Bat, Age of wonders, Skype… Много софта было известного, если что. Я в своё время со своим Battery Eater тоже раскрутился довольно сильно (сотни тысяч даунлоадов можно же считать сильной раскруткой), что стали на авторитетных сайтах использовать.
                                      Фигня это всё, не инструмент важен, а результат.
                                      • +3
                                        Черт возьми, да сами богоподобные «Космические рейнджеры» были написаны на дельфях!
                                        • 0
                                          И до сих пор пишутся тонны разномастного корпоративного софта (да, вот прямо в этот момент делаются коммиты в новые проекты на миллионы строк кода)
                                        • 0
                                          Я в универе очень жалел что преподы используют программу 5 летней давности и Delphi 7 соответственно. Украткой от них изучал C# и договорился делать все лабы не в Delphi а на C#, о чем не сожалею ))) Плюс последняя версия Visual Studio 2015 Community Edition бесплатна и покрывает 100% моих необходимостей в IDE, и в моем уневере как назло после нашего выпуска все усилено стали переводить учебные программы исключительно под C# )))
                                          • –1
                                            Бесплатны в том числе и express-версии. Причем специально изучал тему и нашел на сайте MS, что их вполне можно использовать в том числе и для коммерческого использования. Но самое серьезное ограничение у экспресс-версий c# и vb, из тех, с которыми сталкивался я, заключается в том, что нельзя указывать в качестве источника данных сервер БД, а можно только использовать локальные файлы базы данных. К серверу получилось подключиться только через код программы, но в таком виде работать очень геморно.
                                          • 0
                                            Надо уточнить. что в сентябре 2016 года появилась-таки бесплатная версия Delphi Starter. Причем это бесплатное IDE обещают своевременно обновлять одновременно со «взрослыми» версиями Delphi.

                                            Также есть бесплатный C++Builder Starter Edition, InterBase Developer Edition.
                                            • 0
                                              В 2007 году вышла абсолютно бесплатная (лицензия вроде никак не ограничивала разработчика) Turbo Delphi, соответствующая по начинке Delphi 2006. Её основным недостатком была невозможность подключать новые компоненты в среду визуальной разработки. Впрочем, данное ограничение достаточно быстро научились обходить.
                                              • 0
                                                Пока что это я вижу как некий Special Offer. Взял себе в своё время по нему 10.1. Для дома хватает более чем.
                                              • +1
                                                Наиболее популярным решением для персональных Windows-компьютеров в 80-е — начале 90 годов стал компилятор и IDE Turbo Pascal фирмы Borland.


                                                Во времена DOS, под DOS — да, называлось Turbo Pascal.
                                                Потом, ближе ко времени Windows, IDE стало называться Borland Pascal, но это было все равно под DOS.
                                                • 0
                                                  Borland Pascal, в отличие от «просто» Turbo, имел возможность компиляции программ для защищенного режима процессора x86.
                                                  Turbo мог компилировать только для реального режима.
                                                  Версия 7.0 IDE была в вариантах Turbo и Borland (последняя включала обе версии).
                                                  Причем, если не ошибаюсь, версия BP 7.0 могла собирать Windows-программы из-под DOS-вской оболочки, хотя Windows IDE в комплект тоже входила.
                                                • 0
                                                  Очень много лет писал на Delphi, пока не стал заниматься в основном вебом. Недавно скачал последнюю IDE, чтобы внести небольшие правки в старый проект. Так вот, IDE не поддерживает High DPI, весь интерфейс размыт из-за масштабирования картинки средствами ОС. Формы в получившемся приложении глючат (а там нет ничего сложного). Например, при наведении курсора на крестик (закрытие окна) элемент сразу же теряет фокус (курсор на нем, а фокуса нет). Всё это очень печально, хотя я всегда был сторонником языка и IDE в целом.
                                                  • +1
                                                    10.1 поддерживает не только HighDPI, но даже многомониторность. Да, долго до этого шли, но пришли же.
                                                    • 0
                                                      Приложения скомпилированы на компьютере со стандартным DPI. При запуске на High DPI появляется непонятный отступ справа, если окно небольшой ширины. У элементов Anchors [akLeft,akTop], но это не помогает.
                                                      И глючит заголовок окна. Фокус при наведении на элементы управления (свернуть, развернуть, закрыть) появляется на доли секунды, а затем пропадает (курсор на кнопке, а она не подсвечивается).
                                                      Плюс различные глюки VCL (не связаны с DPI), когда после hover остаются артефакты и пр.
                                                      Проверял всё на Delphi 10 Seattle.
                                                      Картинки
                                                      image
                                                      image
                                                      • 0
                                                        У элементов Anchors [akLeft,akTop], но это не помогает.
                                                        Чтобы убрать отсуп справа у элементов Anchors должен быть [akLeft,akTop, akRight]
                                                        • 0
                                                          Прошу прощения, это опечатка. Конечно там [akLeft,akTop,akRight]. Проблема возникает при запуске на High DPI.
                                                    • 0
                                                      IDE по умолчанию запускается в 96 DPI вроде. Чтобы в дизайнере формы создавать с таким же DPI. Уж не знаю баг это или фича, но если IDE запускать в 144 DPI (4k), например, то в дизайнере формы вроде как обычные создаются, а при запуске ещё больше увеличиваются, при запуске на FHD мониторе они просто гигантские. То есть масштабирование происходит только в большую сторону. Пока для себя нашел выход — использую IDE на 144 DPI, и у каждой новой формы ставлю вручную 96 DPI и 11ый шрифт. Тогда они отлично масштабируются под 144 DPI и выглядят родными на 96 DPI.
                                                      • 0
                                                        SetProcessDPIAware пробовали?
                                                        • 0
                                                          MS вроде не рекомендует напрямую вызывать эту функцию, а лучше пользовать ее через манифест, да и даже так она не нужна. Потом проблем-то нет никаких. Я просто думал, что если я создаю форму при 144dpi, то при запуске на 96dpi она уменьшится вместе со шрифтами. А в итоге она умеет только увеличиваться. Поэтому в дизайнере приходится вручную выставлять 96dpi для новых форм и 11ый шрифт… Так конечно немного неудобно работать в самом дизайнере — все достаточно мелкое, зато при запуске и на 96dpi и на 144 выглядит как родное. Даже специально ставил 2 монитора рядом FHD и 4k 27 и 28" соответственно — формы получаются приблизительно одинакового размера у скомпилированного проекта. Ну или второй вариант запускать замыленную IDE в 96dpi так как будто она запущена на FHD мониторе. Но так глаза устают. Зато в дизайнере уже сразу 11ый шрифт и 96 dpi.
                                                          • 0
                                                            Забыл добавить, что на bds.exe у меня в свойствах — совместимость стоит галочка «отключить масштабирование изображения при высоком разрешении экрана» — работает отлично.
                                                          • 0
                                                            А как вы среду в 144 dpi запускаете? Уже замаялся биться с этим High DPI.
                                                          • 0
                                                            Write once, compile anywhere… Напрашивается аналогия с Qt.
                                                            • –1
                                                              Закономерный тренд. Может и у Мелкософта с Net Core получится в кроссплатформенность.
                                                              • 0
                                                                Немного не так… Это больше к Лазарю относится. Тут скорее будет «Write once, deploy anywhere.» Причем этот write только Windows.
                                                                • 0
                                                                  А вот выше ответил. В свойствах bds.exe поставить галочку на «отключить масштабирование изображения при высоком разрешении экрана». Тогда IDE использует родной dpi экрана родные шрифты, а не просто растягивает изображение… Возможно тоже самое надо сделать и с BDSLauncher.exe
                                                                  Не туда ответил, это было для vsabadazh
                                                                • +2
                                                                  IMHO Borland, когда создавала объектно-ориентированное расширение Паскаля, допустила несколько достаточно серьезных архитектурных ошибок, которые и не позволили Паскалю пробиться по популярности (хотя он имел все шансы, потому что язык-то хороший). Из того, что сейчас вспоминается:
                                                                  1. Добавили, по сути, расширение рекордов в виде Object (еще в турбо-паскале образца 198x) вместо того, чтобы сразу же ввести новый тип (Class). Разница Object и Class в том, что экземпляры Object-ов копируются по умолчанию по значению, в то время как экземпляры Class-ов — сразу ссылки. В итоге ранний код (когда уже были Object-ы, но еще не было Class-ов) пестрит «крышками» (указатели в Паскале обозначаются ^) и выглядит очень уродливо. К слову, ранний PHP4 совершил ровно ту же ошибку — там экземпляры классов тоже копировались по значению, что было совершенно бессмысленно, — но, к счастью, в PHP5 они успели это исправить прежде, чем язык коллапсировал.
                                                                  2. Полная неразбериха с тем, как работают конструкторы и деструкторы в object-ах и class-ах. Например, есть возможность вызвать dispose() на ссылке без вызова деструктора object-а! При том что в C++ деструктор вызывался автоматически испокон веков. Также нужно было указывать имя конструктора при создании объекта или даже вызывать его явно.
                                                                  3. Но главное — ситуация не улучшилась, когда на место мертворожденного object-а пришли class-ы. Те, кто смотрел в ассемблерный код, который генерируется для конструкторов и деструкторов в class-ах, поймет, о чем речь. Дело в том, что в Delphi конструктор выделяет память под объект, а деструктор — ее освобождает. Т.е. авторы языка решили: раз мы пишем a := TClass.create(1234), то пусть этот create и выделит память внутри себя, инициализирует ее и в конце вернет на нее ссылку. И эта ошибка фатальная: конструктор не может выделать память и возвращать ссылку, потому что иначе производные классы лишаются возможности бесшовно вызвать в своем конктрукторе конструктор базового класса! В итоге Delphi передает в конструктор (и деструктор) скрытый фдаг, который говорит ему: нужно ли выделать (или освобождать) память, или вместо этого использовать ту, что уже есть. Опять же, данная проблема лежала на поверхности изначально: с C++ конструктор и оператор new (а также единственный и безусловнотвызываемый деструктор и оператор delete) испокон века разделены. Даже в python, где синтаксис похожий — a = SomeClass(1234) — стадия инициализации __init__ четко и мудро отделена от стадии выделения памяти __new__.

                                                                  В общем (опять же IMHO), напортачили они знатно. Бедный Вирт вертелся в гробу, как волчок. Были и другие, менее серьезные ляпы (например, введя object-ы, не ваели public-protected-private и перегрузку операторов — а перегрузка операторов ОЧЕНЬ важна, особенно в библиотеках и научной среде — всякие там матрицы-векторы).
                                                                  • 0
                                                                    производные классы лишаются возможности бесшовно вызвать в своем конктрукторе конструктор базового класса!
                                                                    Inherited(), не?
                                                                    • +1
                                                                      Inherited-то inherited, вы посмотрите, какой он ассемблер генерировал, а также попробуйте ошибиться (не вызвать его, например, вызвать дважды, или вызвать конструктор, как метод, а не через inherited). В ранних версиях (по крайней мере; я не знаю, может, уже сейчас исправили) память выделял самый базовый конструктор в цепочке, и ему через весь стек протаскивался int32 с размером самого производного класса. Если в какой-то момент inherited забывали, получался занятный эффект.

                                                                      Вообще, я сейчас пишу про то, «как было». Сейчас-то уже и generic-и появились, и вон NewInstance. Но время уже, как мне кажется, упущено, и люди, которые могли много лет назад продолжить писать на Delphi после изучения Паскаля в школе/вузе, увидев все это (и другие нестыковки — например, необходимость вручную вызывать деструктор, в то время как в C++ он вызывался автоматически при выходе объекта за область видимости), могли отвернуться и пойти использовать другой язык.
                                                                      • +1

                                                                        Вы так пишете, как-будто C++ проще и логичнее, чем Delphi. Хотя по факту там своих "особенностей" выше крыши и гораздо больше, чем у Delphi.

                                                                        • +1
                                                                          Паскаль — мой первый язык с 1991 года, вторым был ассемблер, а первая строчка на C++ написалась в районе 1996. Так что — нет, я не пишу так, как будто бы C++ проще и логичнее. :-) Очень горько видеть, что хороший язык пошел по тем же граблям, которые давно были преодолены в других популярных языках, и, как мне кажется, в результате получил не столь широкое распространение, какое мог бы получить, обойди он эти грабли изначально (а сейчас-то уже поздно, лидерство упущено). Всего-то и надо было аккуратно запилить объектную модель — все равно же ее с нуля делали. Хотя бы вот что: делаете изначально Object по типу Record-а, копирующегося по значению? Ну сделайте тогда, чтобы деструкторы автоматически вызывались при выходе объекта за область видимости, сделайте конструктор копирования — это же неразрывно связанные вещи. Но нет…

                                                                          Можно только представить, каким прекрасным стал бы мир, если бы большинство софта в нем писалось не на C++ или Java, а на Паскале. (Хотя C++ и Java тоже неплохие языки, но в них нет того изящества Паскаля, что ли...)
                                                                        • 0
                                                                          (и другие нестыковки — например, необходимость вручную вызывать деструктор, в то время как в C++ он вызывался автоматически при выходе объекта за область видимости)


                                                                          Это-то какраз «стыковки» — в Паскале отсутствует инициализация переменных при их объявлении — ну и, соответственно…
                                                                          Всё-таки жаль, что умерла Модула.
                                                                      • +16
                                                                        Бедный Вирт вертелся в гробу, как волчок

                                                                        Эм, Вирт жив…
                                                                        • 0
                                                                          Это фигура речи такая. Как говорил Джон Сильвер, "… и живые позавидуют мертвым". :)
                                                                          • +2

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

                                                                          • +3
                                                                            Вирт еще жив, если что.
                                                                            • +2
                                                                              На самом деле главная ошибка Борланда в том, что вместо того, чтобы сказать «а давайте перейдём на Оберон / Компонентный Паскаль», над архитектурой которых Вирт с учениками думал лет 30, они делали свои кривые костыли к устаревшей «пробе пера» Вирта.
                                                                              • 0

                                                                                Жалко, что Оберон или Компонентный Паскаль не прикрутили пока на LLVM или gcc — как яву или аду.

                                                                            • –1
                                                                              Паскаль изчезнет из сферы образования России, когда уйдут (в понятном смысле этого слова) те преподаватели, которые потратили свою молодость на его освоение и заставляют тратить также последующую молодежь.
                                                                              На мой взгляд (на базе большого преподавательского опыта) в вузах следует освоить за время обучения функциональный язык (типа Lisp), логический (типа Prolog) и процедурный (типа Java).
                                                                              Но обязательно (в самом начале) C.
                                                                              А веб программирование факультативом — все равно сами выучат
                                                                              • 0
                                                                                Я лично двумя руками за этот подход. Сейчас в большинстве вузов на 1 курсе дают Turbo Pascal (и пофиг, что на существующих системах он заводится только после плясок с бубном, типа установки виртуальной машины со старыми версиями Windows или DOS), потом переходят на Delphi, где-то там в процессе вводят C++ с переходом на старших курсах на C# и JAVA. В итоге студент нормально не знает ни одного языка программирования или остается на Delphi, потому что на нем ваять действительно проще всего, а комьюнити за… надцать лет его существования действительно огромное.
                                                                                Мое мнение — если человек не знает ничего, то и осваивать с нуля любой язык, будь то Pascal или С по сложности примерно одинаково.

                                                                                P. S. Кстати приставка Turbo это разве не от одноименной псевдографической библиотеки TurboVision?
                                                                                • +1

                                                                                  TurboVision появилась только в TurboPascal 6.0.

                                                                                  • 0
                                                                                    > Кстати приставка Turbo это разве не от одноименной псевдографической библиотеки TurboVision?
                                                                                    Нет. Он с первой версии назывался Turbo
                                                                                    В 5.0 появилось ООП
                                                                                    В 5.5 была добавлена TurboVision
                                                                                    • +2
                                                                                      ООП появилось в Turbo Pascal 5.5
                                                                                      Turbo Vision 1.0 появился в Turbo Pascal 6.0
                                                                                      В Borland Pascal 7.0 Turbo Vision обновился до заключительной версии 2.0
                                                                                    • 0
                                                                                      Приставка турбо означает, что код оптимизирован (в статье неправильно сказано, что самый быстрый компилятор — просто компилятор оптимизирует код в сторону ускорения выполнения, хотя никто особенно замеры не производил насколько код оптимизируется по сравнению с другими компиляторами)
                                                                                      • 0
                                                                                        Сейчас в большинстве вузов на 1 курсе дают Turbo Pascal

                                                                                        Откуда статистика? В вузе, где я учился (весьма провинциальном), на первом курсе дают C, ассемблер и C#. Все так плохо?

                                                                                      • +2
                                                                                        Как уже сказали тут в каментах. Проблема не в преподаваемом языке, а в том, что преподаётся именно язык, а не разработка ПО, как таковое.
                                                                                        Паттерны, антипаттерны, архитектура приложения, подходы к разработке, UI/UX дизайн, модульное тестирование и т.д… Этого ничего нет. Как результат на выходе в лучшем случае заготовка джуна, которого надо за уши тянуть и обучать элементарным вещам.
                                                                                        • 0
                                                                                          В принципе да — но язык первичен, а разработка вторична — то есть все знают русский язык, но не все могут его использовать профессионально

                                                                                          В российских вузах мало преподавателей, которые могут программировать профессионально
                                                                                          • +3
                                                                                            язык первичен, а разработка вторична

                                                                                            Позвольте не согласиться. Разработка первична. Умение применять паттерны, избегать антипаттернов, умение строить логичные алгоритмы приветствуются в любом языке.

                                                                                            В российских вузах мало преподавателей, которые могут программировать профессионально

                                                                                            Низкая оплата труда и невысокий престиж профессии преподавателя — основная беда системы образования.
                                                                                            • –1
                                                                                              ну странно — если не знаешь язык, то все паттерны не нужны — кстати и алгоритмы пишутся на языке — поэтому и называются алгоритмические языки

                                                                                              Кстати ( опять же в силу большого преподавательского опыта, включающего советскую эпоху) оплата труда не при чем (в советское время нормально платили преподавателям) — просто. когда возникла массовая потребность в преподавании программирования (начало 70-х прошлого века) советская система преподавания начала сама по себе гнить и в настоящее время разложилась окончательно
                                                                                              • 0
                                                                                                алгоритмы пишутся на языке

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

                                                                                                если не знаешь язык, то все паттерны не нужны

                                                                                                ) Само-собой синтаксис хоть какого-то языка программирования знать надо. Но я не о том говорил. Самые важные элементы разработки ПО, как таковой практически независимы от языка. Например, архитектура взаимодействия с пользователем или умение распознать антипаттерн «божественный объект».

                                                                                                оплата труда не при чем

                                                                                                Есть условный Иван Иванович, имеющий большой опыт разработки на нескольких языках, под разные платформы. Enterprise, Web, Mobile. Был тимлидом в успешном проекте. Куда он пойдёт работать? Во фриланс, сеньором в крупную компанию, организует свой стартап или в местный вуз обучать раздолбаев за 25 т.р. в месяц?
                                                                                                • 0
                                                                                                  ладно — смысл переубеждения имеет нулевую значимость — вы смотрите на систему образования снаружи, а я ее знаю изнутри на протяжении десятков именно в области преподавания информационных технологий — причем имею также большой профессиональный опыт в создании разных проектов, владея многими языками, зная разные IDE и прочие нужные технологии.

                                                                                                  Кстати условный Иван Иванович в настоящее время предпочтет остаться в вузе (догадайтесь почему)
                                                                                                  • 0
                                                                                                    Мне бы в своё время парочку таких Иван Иванычей в качестве преподавателей…
                                                                                                    • 0
                                                                                                      А вот Ричард Фейнман говорил, что учить надо того, кто способен обучиться сам
                                                                                                      • 0
                                                                                                        ) ну вот мне и пришлось самому обучаться, вот только те «полезные знания», которые мне вложили в незамутнённую студенческую голову как минимум нифига не помогли в становлении.
                                                                                                        Да, тех, кто случайно попал в профессию учить бесполезно, но для остальных можно значительно сократить путь к развитию.
                                                                                                        • +1
                                                                                                          значит не те вкладывали — задача педагога не вложить некий объем данных, а создать идеал, к которому надо стремится, являя собой прообраз этого идеала — образование от слова образ и этот образ должен быть и должен быть не безобразным
                                                                                                • 0
                                                                                                  просто. когда возникла массовая потребность в преподавании программирования (начало 70-х прошлого века)


                                                                                                  Э-ээ?
                                                                                                  В начале 70х ещё Фортран был актуальнейшим языком и новьём…
                                                                                                  • 0
                                                                                                    в начале 70-х фортран уже не был новьём — это был (и кстати есть до сих пор) язык профессиональной разработки приложенй в области научных иссследований, где требовались научные расчеты. Кстати, тогда мне и пришлось его освоить по работе. В дальнейшем с удовольствием его оставил, перейдя на c (c++), а потом на c#, java и так далее.
                                                                                                    • 0
                                                                                                      в начале 70-х фортран уже не был новьём


                                                                                                      Был, был.
                                                                                                      Актуальным был точно — ФОРТРАН-66. %))
                                                                                                      А вот более свежие языки — вся «классика», сопсснна, Алгол-66 (так и не взлетевший), Паскаль, Си, Симула (67, емнип), Бейсик — существовали, скорее, ещё «виртуально».
                                                                                                      • 0
                                                                                                        можно конечно утверждать что солнце восходит на западе, но Фортран был создан до 1957 года, и к 70-м имел почти 20-летнию историю использования без потери актуальности до наших дней, причиной чему является актуальность научных исследований и значимости накопленных результатов разработки на базе фортрана — естественно он модифицировался, как нетрудно догадаться
                                                                                                        Про Алгол 66 ничего не знаю — меня учили на Алголе 60, а потом был действительно канувший в лету Алгол 68
                                                                                                        Упомянутый C популярен до сих пор см http://www.tiobe.com/tiobe-index/, как и Basic (в смысле visual)
                                                                                              • +2
                                                                                                Первичны алгоритмы и понимание. Я могу писать на C, C++, C#, Delphi, Perl, да даже asm под пару процесоров или SQL разных модификаций или VB[A] или какой sh, но это бесполезно, если я не знаю что писать, не могу превратить ТЗ в алгоритм.
                                                                                                Если какому-то сертифицированному Java-программисту требуется объяснять что такое стек, то ему надо было учить не язык (и тут речь не про стек процессора, допустим, из x86-х, а про стек как концепцию).
                                                                                                • 0
                                                                                                  Попробуйте что-нибудь понять, не используя некий язык
                                                                                                  • 0
                                                                                                    Блок-схемы? Словесное описание алгоритма? Псяк? ER-модель? Бросаться писать код — последнее дело, обычно после такого надо написанное сначала выкинуть. И только вторым этапом происходит выбор конкретного языка, а написание на нём — хорошо, если третьим.
                                                                                                    • –1
                                                                                                      А словесное описание не есть ли использование языка — вы как-то узко понимаете слово язык — ясно что понимания у вас нет, так как вы даже не понимаете, что пишете на русском языке (кстати блок схемы и прочее — это просто графический язык диаграмм)
                                                                                                    • +2

                                                                                                      Что вы будете описывать, если у вас будет только язык?


                                                                                                      Кроме того важно различать изучение языка программирования в общем — то есть как раз алгоритмов и всего того, чем «думает» программист, — и конкретного языка программирования. Проблема в том, что место первого преподают второе. Да, без языка не выразить мысль. Да, язык программирования накладывает отпечаток на решение. Но первично решение, а не способ выражения.


                                                                                                      Если перефразировать известную цитату Дейкстры, программирование — это настолько же наука о языках, насколько астрономия наука о телескопах.

                                                                                                      • –3
                                                                                                        В каждом языке содержится своя система понятий — об этом он говорит, а о том чего нет и не говорит
                                                                                                        • +1

                                                                                                          А откуда эти понятия там берутся? Как они вообще появились, если до этого их в языке не было?


                                                                                                          Что-то вас в философию потянуло. Предлагаю завершить этот спор.

                                                                                                          • –4
                                                                                                            почитайте Канта — пока смысла продолжать нет
                                                                                              • 0
                                                                                                Если хотите научить низкоуровневому программированию — книга «Построение компиляторов» дедушки Вирта на примере языка Оберон покажет как проводить синтаксический анализ, разбор конструкций, расскажет об архитектуре RISC, как надо генерировать код, организовать управление памятью включая сборку мусора.
                                                                                                Если для начального обучения программированию — то тот же Оберон в силу простоты (проще и логичнее Паскаля, есть модули которых нет и не будет в C и C++, легко подменяется на Компонентный Паскаль если нужно полноценное ООП) в разы лучше подходит.

                                                                                                А что могут дать ваши курсы по C или C++, где 30 — 100 страниц уходит на написание поискового дерева и 200 страниц на «как не выстрелить себе в ногу устаревшей адресной арифметикой и прочими причудами языка»? За что первокурсникам такой геморрой?
                                                                                                • –1
                                                                                                  Не хочется вас обижать, но вы меня повеселили — мой опыт программирования простирается от начала 70-х годов прошлого века, поэтому ваши советы как-то мимо
                                                                                                  Но, к слову, учить программированию нас начинали с простых машинных кодов в течение целого семестра
                                                                                                  • 0
                                                                                                    Так это вас целый семестр учили машинным кодам, а в моё время (13 лет назад) семестр по С++ в далеко не худшем университете ушёл как раз на очередь, стек и пяток поисковых деревьев и 80% текста методички было занято демонстрацией возможностей и дефектов языка, а не чем-то реально полезным.
                                                                                                    • –1
                                                                                                      Кодам нас учили, чтобы чувствовали машину, а затем языкам, чтобы формулировать и выражать свои мысли, а остальному учила жизнь по принципу — забудьте, чему вас учили и займитесь наконец делом
                                                                                              • –1
                                                                                                Целые факультеты «пролетали мимо» фундаментальных курсов по программированию. И наличие Turbo Pascal с низким порогом вхождения, а затем среды Delphi, позволяющей заняться самообразованием в хорошем смысле этого слова, смогли насытить ИТ-отрасль достаточно грамотными разработчиками

                                                                                                Однако, в средне- и долгосрочной перспективе это привело к «беде»:

                                                                                                Вначале новоиспеченные разработчики не научились толком структурировать код и хорошо процедурно «кодить» на Турбо Паскале, не говоря уже о том, что почти никто не использовал ООП — тогдашние так называемые object (не class).

                                                                                                Затем паскалисты перешли на Delphi, в большинстве своем, по старой памяти, программировали процедурно (и довольно грязно), ООП тоже мало кто использовал — несмотря на все его богатство в Object Pascal.
                                                                                                И главное, совсем мало кто заботился о выделении логики в отдельные модули (units) c классами/процедурами — обычно вся логика «кодилась» в обработчиках событий форм, а сам код форм был наводнен множеством вспомогательных процедур, не имеющих отношения к форме.
                                                                                                И тем более ничего подобного не было, чтобы организовать некое подобие MVC при работе с формами.

                                                                                                Когда Delphi стал «всё», то большинство дельфистов двинули в C#, и, не все, но многие продолжили программировать в паскалевско-дельфийскоми стиле, делая довольно грязный неструктурированный и по факту необъекто-ориентированный код (хотя формально и с использованием классов).

                                                                                                И даже сейчас, даже у начинающих разработчиков можно увидеть даже не дельфийский, а турбопаскалевский стиль разработки — а все потому, что уже культурная традиция такая прижилась.
                                                                                                Хотя в C# сделано очень много, чтобы программировать иначе, чем даже в хорошем стиле на Delphi.

                                                                                                На мой взгляд, Delphi так и не взлетел — написанные на нем это или небольшие программы типа уже неподдерживаемого толком мессенджера или тяжелые энтерпрайзные разработки, актуальные версии которых в большинстве уже перенесены на C#, Java или вообще в облако.

                                                                                                Представляется, что C# тоже не взлетел (или взлетел — но не в соответствии со своим огромным потенциалом).
                                                                                                И произошло это, на мой взгляд, не только благодаря политике Майкрософт в определенный период (когда C# и .NET оказались подзаброшены в эпоху бума планшетов, а конкуренты в это время не дремали и активно развивали облачную, кроссплатформенную и мобильную разработку),
                                                                                                но и благодаря исторической традиции, сформировавшейся, начиная с момента, когда в мир паскаля пришли те кадры, которые пришли, и далее.
                                                                                                • +5
                                                                                                  Про покупку Idera ничего не сказали, да и вообще скомканно как-то. Больше не про язык, а про непонимаю даже про что… Про назнвания?

                                                                                                  Хоронят делфи столько, сколько я на ней пишу, тоесть более 15 лет уже.

                                                                                                  А еще у нас на стримах очень частый вопрос — почему мы игру пишем на делфи, ведь дельфи же умер. =)
                                                                                                  • +3
                                                                                                    А еще у нас на стримах очень частый вопрос — почему мы игру пишем на делфи, ведь дельфи же умер. =)

                                                                                                    В Delphi очень сильная объектная модель, статическая типизация, и возможность компилировать все это в нативный код.

                                                                                                    Устаревшие винформы или куча старых и новых технологий доступа к БД, организации многозвенности, и т.д.? — во всех средах (включая более новые) есть куча олдскульных obsolete-фреймворков.

                                                                                                    Бинарная несовместимость с объектными моделями других языков/платформ? а где вы видели бинарную совместимость C# и Java, к примеру?
                                                                                                    (А вызывать WinAPI и COM в Delphi можно так же, как и в C#).
                                                                                                    Да и так ли важна эта совместимость в эпоху (микро)сервисов и REST?

                                                                                                    Поэтому причины негативного отношения к Delphi — исторически сложившиеся, а не технически объективные.
                                                                                                    • 0
                                                                                                      Да, это понятно и мы уже даже привыкли к этим вопросам. Приходим лишь в очередной раз к тому, что инструмент роли не играет. Примерно так и отвечаем, а на C# уже поздно переходить, много слишком написано.
                                                                                                      • 0
                                                                                                        Бинарная несовместимость с объектными моделями других языков/платформ? а где вы видели бинарную совместимость C# и Java, к примеру?

                                                                                                        java более-менее совместима со Scala/Kotlin/Groovy. Можно вызывать код, наследоваться от классов из другого языка и делать прочие вещи — потому что всё это компилируется в байткод. По той же причине код можно запускать на разных платформах.

                                                                                                      • 0
                                                                                                        оо, а где можно ваши стримы посмотреть? :)
                                                                                                        • 0
                                                                                                          Мои сейчас нигде, я работаю днем, а вечером у меня все спят. А вот коллега мой ZblCoder стримит с сохранением водов тут
                                                                                                      • +4
                                                                                                        semen_grinshtein, я считаю, что если не разбираетесь в теме, то лучше не писать.

                                                                                                        Упоминать «Основные версии» и не упомянуть Delphi7?

                                                                                                        С другой стороны, среда Delphi по мере развития действительно становилась все более громоздкой и малопригодной для обучения программированию.

                                                                                                        Нет все еще, создание и запуск нового проекта — пару кликов мышкой.

                                                                                                        Кроме того, отсутствует бесплатная версия Delphi даже для академического использования. Данные факторы привели к практически полному исчезновению Delphi из сферы образования.

                                                                                                        Бесплатная редакция все таки появилась:
                                                                                                        https://www.embarcadero.com/ru/products/delphi/starter/promotional-download
                                                                                                        А для вузов Embarcadero предлагает отдельную программу…

                                                                                                        Не упомянуть об покупке Embarcadero компанией Idera? И проблемами от этого?

                                                                                                        Элементы управления Memo, ListView, Calendar, Switch для платформы iOS;

                                                                                                        Тут должно быть «Нативные, а не отрисовываемые Memo, ListView, Calendar, Switch для платформы iOS»
                                                                                                        • +1
                                                                                                          Делфи5, 7, 2009, XE2 думается мне были самыми знаковыми и важными в истории. Ну 2006я еще с из-за нового ИДЕ и перегрузки операторов.
                                                                                                          • +2
                                                                                                            Упоминать «Основные версии» и не упомянуть Delphi7?

                                                                                                            Самыми знаковыми и важными были Delphi 1 и 3.
                                                                                                            Первая — показала, что такое RAD-разработка для Windows, и потеснила VB
                                                                                                            3-я — показала RAD-разработку для 32-битных Windows (95 на тот момент, с поддержкой всех специфичных для Win95 технологий — Delphi 2 в этом смысле оказалась переходной версией)

                                                                                                            А Delphi 5 и 7 действительно были самыми популярными, когда в отечественной разработке укоренилась традиция энтерпрайз решения писать на Delphi.
                                                                                                            Но нельзя сказать, что Delphi 5 была более прорывной, чем 4, а Delphi 7, чем 6.

                                                                                                            С точки зрения языка, в тот период более прорывной можно считать Delphi 4, когда появилась перегрузка (overload) методов и набор целых типов стал полным — добавлен тип Cardinal как беззнаковый аналог знакового зависимого от платформы типа Integer, и тип Longword как беззнаковый аналог знакового независимого от платформы Longint, а также Int64
                                                                                                            • 0
                                                                                                              Cardinal был ещё с 16-битной Delphi 1. И был 16-битным беззнаковым integer. Исторически планировалось использование Cardinal как платформозависимого представления беззнакового числа. Однако сейчас скомпилировать под 16-битную платформу можно только в FPC, в котором Cardinal жёстко гвоздями прибит к 32-битному беззнаковому integer. Да и при компиляции под 64 бит в любых компиляторах Cardinal также останется без изменений — 32 битным.
                                                                                                              • 0
                                                                                                                Исторически планировалось использование Cardinal как платформозависимого представления беззнакового числа.
                                                                                                                Да, об этом и была речь.

                                                                                                                Насчет наличия Cardinal начиная с Delphi 1, верно, припоминаю (но фиксированный 32-битный беззнаковый Longword — как пара Longint — появился именно в Delphi 4).

                                                                                                                А вот то, что вы рассказываете про Cardinal в нынешних версиях, печально
                                                                                                                — это уже похоже на C/C++ (int, long, long long, int32_t, int64_t) и WinAPI-стайл, когда есть огромная мешанина целочисленных типов, среди которых есть синонимы/дубли, есть типы с задекларированным Undefinded Behaviour (без привязки к размерности платформы, именно Undefined), есть типы с названиями, указывающие в имени на размер, отличный от задекларированного, и т.д.

                                                                                                                И, да, действительно, все сильно изменилось в Delphi в эту сторону.

                                                                                                                C# и Java пока держатся в смысле стандартизованности набора целых типов.
                                                                                                                Но что будет, когда 32/64-битная архитектура устареет, и на смену придут 64/128 бит?

                                                                                                                Какой тогда размер будет у int/long?

                                                                                                                С одной стороны, менять их размер нельзя, т.к. они задокументированы как типы с фиксированным 32/64-бит размером.
                                                                                                                С другой — если оставить типы прежнего размера, то миллионы строк кода, использующие int, превратятся в строки, как если бы они сейчас использовали тип short (сейчас он поддерживается в этих платформах «не нативно», т.е. при использовании все равно расширяется до int, а это вопросы производительности и т.д.)
                                                                                                                • 0
                                                                                                                  В C++ таких проблем нет — там есть size_t.
                                                                                                                  ps. Вообще с delphi уже давно всё грустно и там остаётся в основном мохнатый софт. Поэтому я год-три назад занимался миграциями с windows на linux, с x86 на ARM и с delphi на java/C++ с промежуточной остановкой на кроссплатформенном fpc/lazarus. Миграция по частям с использованием fpc позволяла не тратить время на переписывание всего и сразу.
                                                                                                                  • 0

                                                                                                                    Можно было бы в будущем стандартизировать не конкретный размер строки а требования указания размера строки в битах прямо в названии производного типа.
                                                                                                                    Но вот вопрос — когда придут квантовые компьютеры ужель не наступим ли на те же грабли, опять где нибудь жестко зафиксировав количество квантовых кубитов?

                                                                                                                  • 0
                                                                                                                    Есть разные ключи и режимы компилятора, определяющие поведение базовых типов. Но лучше сразу проставить платформо-независимые типы в исходниках, а не полагаться на компилятор. Особенно это актуально для экспортируемых библиотек и структур.
                                                                                                            • +4
                                                                                                              Люблю Delphi именно за RAD. Мне не важно на каком языке писать, хотя Pascal все равно намного ближе чем любой другой язык, он как бы человечнее что ли. Но ту скорость написания для приложения, которое нужно «уже вчера» может дать только Delphi. Очень расстраивает их политика в отношении единичных разработчиков и слово Enterprise в каждом предложении про Delphi. Delphi в первую очередь — это как раз среда для одного разработчика и не важно удовольствия ради он использует ее или для коммерческой выгоды. Дайте нормальные цены таким разработчикам, как я. Уберите всю работу с БД, если так переживаете за Enterprise, но пусть будет и мобильная разработка и разработка под все платформы. Я готов выкладывать за обновления раз в год адекватную сумму, а не такую как сейчас. Уберите богомерзкую обезьяну или замените её чем-нибудь адекватным или сделайте так чтобы она могла использовать OpenGL под виндой тоже.
                                                                                                              • 0
                                                                                                                iga2iga fpc чем не устраивает в виде lazarus? Есть всё Вами перечисленное, в том числе БД. Платформ куча, в том числе андроид или arm.
                                                                                                                Вот про видео утверждать не буду, так как не знаю.
                                                                                                                • 0
                                                                                                                  1 раз вкусив прелесть создания и отладки приложения на мобильнике пусть даже с небольшими багами (ios, android) и положа руку на сердце, могу сказать что лазарь, конечно, это отличная замена для дельфи, но все еще не то. Слишком много телодвижений он требует при мобильной разработке. Но он у меня в обязательном порядке стоит как вторая среда разработки, но я все еще не готов переходить на него окончательно.
                                                                                                                  • 0
                                                                                                                    Для бесплатного проекта кучки энтузиастов все не так уж плохо. laz4android потихоньку развивается, уже не надо пол-дня тратить только на установку и настройку NDK по огромной инструкции, есть визуальные компоненты для нативных виджетов, отладка вроде бы тоже есть. Чем больше людей пользуются лазарем и пишут багрепорты, тем заметнее изменения.
                                                                                                              • 0
                                                                                                                В большинстве ВУЗах, СУЗах используют паскаль, Delphi+MSSQL, при этом даже не новые версии
                                                                                                                • 0
                                                                                                                  mssql это еще терпимо… У большинства как бы не access.
                                                                                                              • +1
                                                                                                                Про Delphi 7 ни слова, хотя она, на мой взгляд, была самой популярной версией
                                                                                                                • 0
                                                                                                                  Сколько лаб было написано в этой версии…
                                                                                                                  • 0
                                                                                                                    Так всегда: заманили знакомой картинкой :) Изучать D7 было весело по инфе с сайта, который написал AdmAlexus (особенно интересно было программно создавать объекты). Настольная книга была из 1-го или 2-х томов — не помню.
                                                                                                                  • –1
                                                                                                                    Язык основа всех языков
                                                                                                                    • 0
                                                                                                                      Кроме того, отсутствует бесплатная версия Delphi даже для академического использования.

                                                                                                                      Не знаю как давно это случилось, но сейчас на сайте Embarcadero в разделе Free Tools можно бесплатно получить Delphi Starter. Наверняка там есть какие-то ограничения, которые не позволяет использовать ее на всю мощь, но для учебы она мне сгодилась и отработала отлично.
                                                                                                                      • +3
                                                                                                                        Там дофига всего нет. Я уж молчу про 64битный компилятор или что-то такое, там даже сама среда по шорткатам урезана сильно. Не сказать чтобы это было критично, но когда уже привык, туго. Скажем перемещаться между интерфейсом и реализацией по контрол+шифт+вверх можно было бы и не убирать. Нельзя научиться пользоваться средой, если обрубать такие важные шорткаты ИМХО.
                                                                                                                        Ну и для коммерческого использования она не подходит. БОлее $1000 прибыли в год — покупайте профессиональную редакцию. Таковы лицензионные соглашения.
                                                                                                                      • +3
                                                                                                                        Спасибо за статью! Delphi навсегда в моем сердце :)
                                                                                                                        • +2
                                                                                                                          Спасибо за статью. Поностальгировал.
                                                                                                                          Вспомнил, сколько часов в свое время провел на Королевстве Дельфи/.
                                                                                                                          Зашел, приятно удивился, что форум довольно активен до сих пор.
                                                                                                                          • +3
                                                                                                                            А я больше изучал DelphiWorld. Можно сказать это был мой первый Stack Overflow.
                                                                                                                            И там была даже офлайн версия сайта (что в диалапные времена было очень актуально, таскать с собой на флешке кучу статей по любимой IDE).
                                                                                                                            • 0
                                                                                                                              О, а еще когда не было у меня интернета, а в школе надо было писать какой-то проект, я ехал в Библио-глобус, искал там книги по Делфи, например Флёнова и выписывал себе нужные функции и приемы.
                                                                                                                              • 0
                                                                                                                                Тоже читал Фленова. Преподаватель давал PDF-ку «Delphi глазами хакера».
                                                                                                                                • 0
                                                                                                                                  Преподаватель давал PDF-ку «Delphi глазами хакера».

                                                                                                                                  Всё таки баловство это… Вот Бакнелл. «Фундаментальные алгоритмы на Delphi» — это вещь! И по БД и ООП на delphi почитать книги стоит.
                                                                                                                              • +2
                                                                                                                                Delphi World это вообще очень замечательная вещь. Сколько полезного можно было оттуда почерпнуть. Целых 5000 статей :)
                                                                                                                                • 0

                                                                                                                                  Ещё была классная подборка материала — Delphi Russian Knowledge Base. Помню, как я в интернет-центре целый час скачивал её… хотя она весила всего 3 Mb :-D
                                                                                                                                  Зато потом дома можно было без интернета изучать интересный материал.

                                                                                                                              • +2
                                                                                                                                Я еще на диалапе сидел на delphi.mastak.ru (сейчас delphimaster.ru). Замечательное было комьюнити, огромное число профессионалов.
                                                                                                                                • +1
                                                                                                                                  Да, замечательное было времечко, действительно очень дружные были ребята, а материалы на обозначенных сайтах были просто бесценны.
                                                                                                                                  Еще Delphi у меня ассоциируется с библиотекой KOL — помню, как нравилось смотреть после компиляции на размер программы, который при использовании этой библиотеки был раз в 10-20 меньше по сравнению с использованием стандартных. Вроде бы, что-то около пары килобайт пустая форма весила.
                                                                                                                                  Аж прослезился )
                                                                                                                              • 0
                                                                                                                                Delphi в начале двухтысячных ещё весьма широко использовался на уроках информатики в немецких гимназиях. Сейчас почти все перешли на Java (Greenfoot, BlueJ).
                                                                                                                                • 0
                                                                                                                                  Простой пример из жизни — Mail AI Cup, среди доступных инструментариев и языковых пакетов есть Pascal. Еще ни одной стратегии на нем не увидел… Ни одной… Лично пролистал топ 1000. Да, можно контраргументировать меня тем, что люди, которые программируют на делфи уже не интересуются этим, но если молодежи не интересен паскаль (и делфи), то какое у него будущее?