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 из сферы образования.
Поделиться с друзьями
-->

Комментарии (148)


  1. Diaskhan
    30.11.2016 11:08
    +3

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


    1. KvanTTT
      30.11.2016 13:25
      +1

      А потом и TypeScript.


    1. masai
      01.12.2016 00:53

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

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


  1. azsx
    30.11.2016 11:18
    +3

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

    Интересно, а в каких Российских ВУЗах прекратили использовать Delphi «для образования»?


    1. pi07
      30.11.2016 11:42
      -2

      Во, многих, надо полагать…


      1. azsx
        30.11.2016 12:11
        +1

        Захожу на сайт МГТУ имени Баумана, в поиске delphi — 751 ответ, pascal 759 ответов.
        Всё таки кто не использует?


        1. Apatic
          30.11.2016 17:20

          Сейчас вроде нет больше Delphi в Бауманке. Но за все факультеты не скажу


          1. Acuna
            30.11.2016 20:35

            В Бонче и не было даже. Весь курс сидели на Java, пару семестров С++ (но скорее для общего развития). Так что нет.


            1. Apatic
              30.11.2016 20:51
              +1

              Простите, что такое Бонч? и про какие годы речь.


              1. Acuna
                30.11.2016 20:54
                +1

                Извиняюсь, думал в представлении не нуждается. «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича», один из ведущих российских вузов. Окончил в 2009-2010.


              1. Acuna
                30.11.2016 20:56

                P. S. Если что — просто продолжал ветку про отсутствие Delphi в вузах)


                1. belkamax05
                  30.11.2016 21:20
                  +1

                  Ну а мы проходили Delphi в не таких уж далеких 2009-2011 годах. Так же Borland C++ Builder на тот момент был не менее хорош, многие его предпочитали на 1-2 курсе (но речь о языке, а не IDE). А потом появилась бесплатная студия в нашем вузе и про пиратскую Delphi все забыли.


                1. Apatic
                  30.11.2016 21:24

                  Исходя из комментария, я подумал вы про Бауманку продолжаете.

                  Насчет ведущего — немного спорно, конечно ;)
                  Впрочем, тема не об этом.


                  1. Acuna
                    02.12.2016 07:04

                    А, нет-нет, я о своем вузе уже, коли речь пошла о непреподавании, так сказать, Delphi в вузах. Ну а насчет ведущего — тут надо уже проверять имеет ли он сейчас такой статус, да. Во всяком случае в его защиту, чтобы наверняка, хочу сказать, что по Питеру он ведущий точно)


            1. MAXInator
              13.03.2017 13:39

              Ванкувер, Канада. Интерактивный голографический дисплей.

              Что нужно:
              мобильное устройство
              HDMI или wifi
              пожертвовать 550$ на Кикстартере вот этим ребятам (хотели собрать 50 000$, успешно собрали почти 300 000$).

              Или купить на али готовое устройство и, положив сверху телефон/планшет, запустить видео четырех проекций требуемого изображения? От 500 ре, в зависимости от диагонали вашего телефона/планшета.


              1. Acuna
                02.12.2016 07:37

                Вы знаете… Честно признаться, я долго думал, стоило ли мне вообще оставлять свой комментарий, ибо такого вопроса боялся, честно признаюсь… Ситуация в нем сложилась, возможно, как и в любом российском вузе, следующая: при весьма ощутимых дотациях (самого вуза) огромные средства вкладываются в модернизацию процесса обучения, взять всем не по наслышке известный современнейший по всем меркам корпус на пр. Большевиков из стекла и бетона, с огромными и обставленными по последнему слову техники аудиториями, электронными досками, комнатами для групповых занятий и прочим, и это при всем при том, что когда я только поступал в него, занятия некоторое время до окончания его постройки проводились в здании детского сада (в прямом смысле, двухэтажный детский сад по типовому советскому проекту). Однако преподавательский состав довольно взрослый. Возможно из-за того, что желающих поступать на нищенскую зарплату, особенно молодежи, впереди которых вся жизнь и которые, разумеется, мечтают получше обустроиться в ней, особенно имея неплохие способности. Это, конечно, сказывается на самих языках и актуальности рассматриваемых технологий (по Линуксу почти истоки, надо сказать). Однако с Java ситуация была весьма неплоха, так как препод был, пожалуй, самым молодым из всех (относительно, конечно. Взрослый мужчина тоже), преподавал весьма неплохо, всегда был готов ответить на вопросы.

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

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

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


        1. 0xd34df00d
          03.12.2016 01:12

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


    1. aquamakc
      30.11.2016 11:54
      -6

      В более-менее адекватных. Шараги, как преподавали паскаль с его производными, так и преподают. Заменили правда таки на C#. Как было тяжело найти знающего С или С++ программиста, так и осталось.


      1. geher
        30.11.2016 13:25
        +8

        Проблема не в языке, а в том, что преподают язык вместо программирования.
        А для обучения именно программированию паскаль (особенно объектная версия) вполне годится.


        1. leschenko
          30.11.2016 16:21

          Преподают алгоритмизацию, а не «программирование» или язык. Язык тут вообще не важен.


          1. aquamakc
            30.11.2016 16:37
            +4

            Поправка: должны преподавать, но из-за низкой компетенции преподавательского состава студенты изучают именно язык.


          1. geher
            30.11.2016 16:55

            Если бы алгоритмизацию.
            Как правило преподают именно язык. Причем в стиле: «вот вам операторы и функции, а дальше крутитесь, как хотите».
            Что же до программирования, то в понимании термина, которое давалось мне, алгоритмизация лишь часть этого понятия.


      1. Pakos
        01.12.2016 13:30

        Шараги — преподают delphi (C# или что там ещё), а преподавать должны базу. Хоть на ПСЯК Сульповар 8.5 (Ц).
        PS. У нас Delphi не было в программе, только версию 1.0 показывали как диковинку из будущего.


    1. Tujh
      30.11.2016 14:02

      Есть такие. Вот только выбранные альтернативы не всегда можно похвалить. Обычно это или C# или Python. Учить таких студентов чему-либо низкоуровнему оказывается достаточно сложно, привыкают к сборщикам мусора и всё такое. Как верно заметили — учат именно языку, а не базовым основам программирования.


    1. EmmGold
      30.11.2016 16:56
      -2

      Дельфи как и паскаль только в школе видел.
      В ВУЗах си под дос и нортон коммандер. причем бывает, что это всё крутится на мак мини с двойной загрузков, вин хп-7 и дос. увы.


  1. frol_aleksan
    30.11.2016 11:36
    +4

    На Delphi как раз таки и обучают. А все потому, что есть компоненты и встроенные функции на все случаи жизни, особенно касаемо баз данных.
    И кстати много софта написано именно на Delphi. небезызвестный мессенджер QIP, не менее небезызвестный аудиоплеер AIMP, не менее небезызвестная Victoria 4 версии (хотя там Delphi с ассемблерными вставками), флешеры и дамперы для MTK, RockChip, Spreadtrum и т.д…


    1. Tujh
      30.11.2016 14:02
      +2

      TotalComander же.


    1. EndUser
      30.11.2016 14:19
      +4

      Убеждённо пользуюсь The Bat! молдавским с самых девяностых годов.


    1. aquamakc
      30.11.2016 14:21

      Даже SCADA-системы доморощенные на Delphi есть, но язык всё-таки позиции явно сдал.


    1. Darthman
      30.11.2016 15:08
      +2

      FruttyLoops, WinRar, The Bat, Age of wonders, Skype… Много софта было известного, если что. Я в своё время со своим Battery Eater тоже раскрутился довольно сильно (сотни тысяч даунлоадов можно же считать сильной раскруткой), что стали на авторитетных сайтах использовать.
      Фигня это всё, не инструмент важен, а результат.


    1. Apatic
      30.11.2016 17:21
      +3

      Черт возьми, да сами богоподобные «Космические рейнджеры» были написаны на дельфях!


    1. quwy
      01.12.2016 01:25

      И до сих пор пишутся тонны разномастного корпоративного софта (да, вот прямо в этот момент делаются коммиты в новые проекты на миллионы строк кода)


  1. shapovalov_org
    30.11.2016 11:39

    Я в универе очень жалел что преподы используют программу 5 летней давности и Delphi 7 соответственно. Украткой от них изучал C# и договорился делать все лабы не в Delphi а на C#, о чем не сожалею ))) Плюс последняя версия Visual Studio 2015 Community Edition бесплатна и покрывает 100% моих необходимостей в IDE, и в моем уневере как назло после нашего выпуска все усилено стали переводить учебные программы исключительно под C# )))


    1. frol_aleksan
      30.11.2016 17:23
      -1

      Бесплатны в том числе и express-версии. Причем специально изучал тему и нашел на сайте MS, что их вполне можно использовать в том числе и для коммерческого использования. Но самое серьезное ограничение у экспресс-версий c# и vb, из тех, с которыми сталкивался я, заключается в том, что нельзя указывать в качестве источника данных сервер БД, а можно только использовать локальные файлы базы данных. К серверу получилось подключиться только через код программы, но в таком виде работать очень геморно.


  1. kryvichh
    30.11.2016 11:44

    Надо уточнить. что в сентябре 2016 года появилась-таки бесплатная версия Delphi Starter. Причем это бесплатное IDE обещают своевременно обновлять одновременно со «взрослыми» версиями Delphi.

    Также есть бесплатный C++Builder Starter Edition, InterBase Developer Edition.


    1. geher
      30.11.2016 13:18

      В 2007 году вышла абсолютно бесплатная (лицензия вроде никак не ограничивала разработчика) Turbo Delphi, соответствующая по начинке Delphi 2006. Её основным недостатком была невозможность подключать новые компоненты в среду визуальной разработки. Впрочем, данное ограничение достаточно быстро научились обходить.


    1. Darthman
      30.11.2016 15:05

      Пока что это я вижу как некий Special Offer. Взял себе в своё время по нему 10.1. Для дома хватает более чем.


  1. sevocis
    30.11.2016 11:45
    +1

    Наиболее популярным решением для персональных Windows-компьютеров в 80-е — начале 90 годов стал компилятор и IDE Turbo Pascal фирмы Borland.


    Во времена DOS, под DOS — да, называлось Turbo Pascal.
    Потом, ближе ко времени Windows, IDE стало называться Borland Pascal, но это было все равно под DOS.


    1. sand14
      30.11.2016 13:03

      Borland Pascal, в отличие от «просто» Turbo, имел возможность компиляции программ для защищенного режима процессора x86.
      Turbo мог компилировать только для реального режима.
      Версия 7.0 IDE была в вариантах Turbo и Borland (последняя включала обе версии).
      Причем, если не ошибаюсь, версия BP 7.0 могла собирать Windows-программы из-под DOS-вской оболочки, хотя Windows IDE в комплект тоже входила.


  1. Hint
    30.11.2016 13:09

    Очень много лет писал на Delphi, пока не стал заниматься в основном вебом. Недавно скачал последнюю IDE, чтобы внести небольшие правки в старый проект. Так вот, IDE не поддерживает High DPI, весь интерфейс размыт из-за масштабирования картинки средствами ОС. Формы в получившемся приложении глючат (а там нет ничего сложного). Например, при наведении курсора на крестик (закрытие окна) элемент сразу же теряет фокус (курсор на нем, а фокуса нет). Всё это очень печально, хотя я всегда был сторонником языка и IDE в целом.


    1. Darthman
      30.11.2016 15:04
      +1

      10.1 поддерживает не только HighDPI, но даже многомониторность. Да, долго до этого шли, но пришли же.


      1. Hint
        01.12.2016 00:48

        Приложения скомпилированы на компьютере со стандартным DPI. При запуске на High DPI появляется непонятный отступ справа, если окно небольшой ширины. У элементов Anchors [akLeft,akTop], но это не помогает.
        И глючит заголовок окна. Фокус при наведении на элементы управления (свернуть, развернуть, закрыть) появляется на доли секунды, а затем пропадает (курсор на кнопке, а она не подсвечивается).
        Плюс различные глюки VCL (не связаны с DPI), когда после hover остаются артефакты и пр.
        Проверял всё на Delphi 10 Seattle.

        Картинки
        image
        image


        1. MrShoor
          01.12.2016 05:09

          У элементов Anchors [akLeft,akTop], но это не помогает.
          Чтобы убрать отсуп справа у элементов Anchors должен быть [akLeft,akTop, akRight]


          1. Hint
            01.12.2016 10:50

            Прошу прощения, это опечатка. Конечно там [akLeft,akTop,akRight]. Проблема возникает при запуске на High DPI.


    1. iga2iga
      30.11.2016 18:35

      IDE по умолчанию запускается в 96 DPI вроде. Чтобы в дизайнере формы создавать с таким же DPI. Уж не знаю баг это или фича, но если IDE запускать в 144 DPI (4k), например, то в дизайнере формы вроде как обычные создаются, а при запуске ещё больше увеличиваются, при запуске на FHD мониторе они просто гигантские. То есть масштабирование происходит только в большую сторону. Пока для себя нашел выход — использую IDE на 144 DPI, и у каждой новой формы ставлю вручную 96 DPI и 11ый шрифт. Тогда они отлично масштабируются под 144 DPI и выглядят родными на 96 DPI.


      1. Darthman
        30.11.2016 19:27

        SetProcessDPIAware пробовали?


        1. iga2iga
          01.12.2016 03:07

          MS вроде не рекомендует напрямую вызывать эту функцию, а лучше пользовать ее через манифест, да и даже так она не нужна. Потом проблем-то нет никаких. Я просто думал, что если я создаю форму при 144dpi, то при запуске на 96dpi она уменьшится вместе со шрифтами. А в итоге она умеет только увеличиваться. Поэтому в дизайнере приходится вручную выставлять 96dpi для новых форм и 11ый шрифт… Так конечно немного неудобно работать в самом дизайнере — все достаточно мелкое, зато при запуске и на 96dpi и на 144 выглядит как родное. Даже специально ставил 2 монитора рядом FHD и 4k 27 и 28" соответственно — формы получаются приблизительно одинакового размера у скомпилированного проекта. Ну или второй вариант запускать замыленную IDE в 96dpi так как будто она запущена на FHD мониторе. Но так глаза устают. Зато в дизайнере уже сразу 11ый шрифт и 96 dpi.


        1. iga2iga
          01.12.2016 03:15

          Забыл добавить, что на bds.exe у меня в свойствах — совместимость стоит галочка «отключить масштабирование изображения при высоком разрешении экрана» — работает отлично.


      1. darked
        01.12.2016 08:54

        А как вы среду в 144 dpi запускаете? Уже замаялся биться с этим High DPI.


  1. vsabadazh
    30.11.2016 13:35

    Write once, compile anywhere… Напрашивается аналогия с Qt.


    1. aquamakc
      30.11.2016 13:48
      -1

      Закономерный тренд. Может и у Мелкософта с Net Core получится в кроссплатформенность.


    1. iga2iga
      01.12.2016 03:17

      Немного не так… Это больше к Лазарю относится. Тут скорее будет «Write once, deploy anywhere.» Причем этот write только Windows.


    1. iga2iga
      01.12.2016 18:32

      А вот выше ответил. В свойствах bds.exe поставить галочку на «отключить масштабирование изображения при высоком разрешении экрана». Тогда IDE использует родной dpi экрана родные шрифты, а не просто растягивает изображение… Возможно тоже самое надо сделать и с BDSLauncher.exe
      Не туда ответил, это было для vsabadazh


  1. DmitryKoterov
    30.11.2016 13:53
    +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 и перегрузку операторов — а перегрузка операторов ОЧЕНЬ важна, особенно в библиотеках и научной среде — всякие там матрицы-векторы).


    1. Tujh
      30.11.2016 14:16

      производные классы лишаются возможности бесшовно вызвать в своем конктрукторе конструктор базового класса!
      Inherited(), не?


      1. DmitryKoterov
        30.11.2016 20:30
        +1

        Inherited-то inherited, вы посмотрите, какой он ассемблер генерировал, а также попробуйте ошибиться (не вызвать его, например, вызвать дважды, или вызвать конструктор, как метод, а не через inherited). В ранних версиях (по крайней мере; я не знаю, может, уже сейчас исправили) память выделял самый базовый конструктор в цепочке, и ему через весь стек протаскивался int32 с размером самого производного класса. Если в какой-то момент inherited забывали, получался занятный эффект.

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


        1. Source
          30.11.2016 23:48
          +1

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


          1. DmitryKoterov
            01.12.2016 04:26
            +1

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

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


        1. aso
          01.12.2016 12:19

          (и другие нестыковки — например, необходимость вручную вызывать деструктор, в то время как в C++ он вызывался автоматически при выходе объекта за область видимости)


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


    1. devpony
      30.11.2016 14:40
      +16

      Бедный Вирт вертелся в гробу, как волчок

      Эм, Вирт жив…


      1. DmitryKoterov
        30.11.2016 20:09

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


      1. masai
        01.12.2016 01:00
        +2

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


    1. divanikus
      30.11.2016 14:41
      +3

      Вирт еще жив, если что.


    1. batyrmastyr
      02.12.2016 15:43
      +2

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


      1. Vjatcheslav3345
        08.12.2016 13:58

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


  1. sbnur
    30.11.2016 14:51
    -1

    Паскаль изчезнет из сферы образования России, когда уйдут (в понятном смысле этого слова) те преподаватели, которые потратили свою молодость на его освоение и заставляют тратить также последующую молодежь.
    На мой взгляд (на базе большого преподавательского опыта) в вузах следует освоить за время обучения функциональный язык (типа Lisp), логический (типа Prolog) и процедурный (типа Java).
    Но обязательно (в самом начале) C.
    А веб программирование факультативом — все равно сами выучат


    1. frol_aleksan
      30.11.2016 15:31

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

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


      1. akzhan
        30.11.2016 16:56
        +1

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


      1. asave
        30.11.2016 16:56

        > Кстати приставка Turbo это разве не от одноименной псевдографической библиотеки TurboVision?
        Нет. Он с первой версии назывался Turbo
        В 5.0 появилось ООП
        В 5.5 была добавлена TurboVision


        1. speakingfish
          01.12.2016 00:06
          +2

          ООП появилось в Turbo Pascal 5.5
          Turbo Vision 1.0 появился в Turbo Pascal 6.0
          В Borland Pascal 7.0 Turbo Vision обновился до заключительной версии 2.0


      1. sbnur
        30.11.2016 17:04

        Приставка турбо означает, что код оптимизирован (в статье неправильно сказано, что самый быстрый компилятор — просто компилятор оптимизирует код в сторону ускорения выполнения, хотя никто особенно замеры не производил насколько код оптимизируется по сравнению с другими компиляторами)


      1. masai
        01.12.2016 01:04

        Сейчас в большинстве вузов на 1 курсе дают Turbo Pascal

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


    1. aquamakc
      30.11.2016 16:25
      +2

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


      1. sbnur
        30.11.2016 16:55

        В принципе да — но язык первичен, а разработка вторична — то есть все знают русский язык, но не все могут его использовать профессионально

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


        1. aquamakc
          30.11.2016 17:01
          +3

          язык первичен, а разработка вторична

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

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

          Низкая оплата труда и невысокий престиж профессии преподавателя — основная беда системы образования.


          1. sbnur
            30.11.2016 17:10
            -1

            ну странно — если не знаешь язык, то все паттерны не нужны — кстати и алгоритмы пишутся на языке — поэтому и называются алгоритмические языки

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


            1. aquamakc
              30.11.2016 17:21

              алгоритмы пишутся на языке

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

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

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

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

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


              1. sbnur
                30.11.2016 17:30

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

                Кстати условный Иван Иванович в настоящее время предпочтет остаться в вузе (догадайтесь почему)


                1. aquamakc
                  30.11.2016 17:34

                  Мне бы в своё время парочку таких Иван Иванычей в качестве преподавателей…


                  1. sbnur
                    30.11.2016 18:30

                    А вот Ричард Фейнман говорил, что учить надо того, кто способен обучиться сам


                    1. aquamakc
                      30.11.2016 19:07

                      ) ну вот мне и пришлось самому обучаться, вот только те «полезные знания», которые мне вложили в незамутнённую студенческую голову как минимум нифига не помогли в становлении.
                      Да, тех, кто случайно попал в профессию учить бесполезно, но для остальных можно значительно сократить путь к развитию.


                      1. sbnur
                        30.11.2016 19:17
                        +1

                        значит не те вкладывали — задача педагога не вложить некий объем данных, а создать идеал, к которому надо стремится, являя собой прообраз этого идеала — образование от слова образ и этот образ должен быть и должен быть не безобразным


            1. aso
              01.12.2016 12:23

              просто. когда возникла массовая потребность в преподавании программирования (начало 70-х прошлого века)


              Э-ээ?
              В начале 70х ещё Фортран был актуальнейшим языком и новьём…


              1. sbnur
                01.12.2016 12:37

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


                1. aso
                  01.12.2016 13:12

                  в начале 70-х фортран уже не был новьём


                  Был, был.
                  Актуальным был точно — ФОРТРАН-66. %))
                  А вот более свежие языки — вся «классика», сопсснна, Алгол-66 (так и не взлетевший), Паскаль, Си, Симула (67, емнип), Бейсик — существовали, скорее, ещё «виртуально».


                  1. sbnur
                    01.12.2016 14:26

                    можно конечно утверждать что солнце восходит на западе, но Фортран был создан до 1957 года, и к 70-м имел почти 20-летнию историю использования без потери актуальности до наших дней, причиной чему является актуальность научных исследований и значимости накопленных результатов разработки на базе фортрана — естественно он модифицировался, как нетрудно догадаться
                    Про Алгол 66 ничего не знаю — меня учили на Алголе 60, а потом был действительно канувший в лету Алгол 68
                    Упомянутый C популярен до сих пор см http://www.tiobe.com/tiobe-index/, как и Basic (в смысле visual)


        1. Pakos
          01.12.2016 15:31
          +2

          Первичны алгоритмы и понимание. Я могу писать на C, C++, C#, Delphi, Perl, да даже asm под пару процесоров или SQL разных модификаций или VB[A] или какой sh, но это бесполезно, если я не знаю что писать, не могу превратить ТЗ в алгоритм.
          Если какому-то сертифицированному Java-программисту требуется объяснять что такое стек, то ему надо было учить не язык (и тут речь не про стек процессора, допустим, из x86-х, а про стек как концепцию).


          1. Vnuchok
            13.03.2017 23:11

            с дисплеями телефонов и планшетов при ярком освещении не разобрались ещё… а представьте, насколько тусклой и еле видимой будет голограмма, например, летним днём?


            1. Pakos
              01.12.2016 17:17

              Блок-схемы? Словесное описание алгоритма? Псяк? ER-модель? Бросаться писать код — последнее дело, обычно после такого надо написанное сначала выкинуть. И только вторым этапом происходит выбор конкретного языка, а написание на нём — хорошо, если третьим.


              1. sbnur
                01.12.2016 17:22
                -1

                А словесное описание не есть ли использование языка — вы как-то узко понимаете слово язык — ясно что понимания у вас нет, так как вы даже не понимаете, что пишете на русском языке (кстати блок схемы и прочее — это просто графический язык диаграмм)


            1. masai
              01.12.2016 18:29
              +2

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


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


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


              1. sbnur
                01.12.2016 18:34
                -3

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


                1. masai
                  01.12.2016 21:43
                  +1

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


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


                  1. sbnur
                    02.12.2016 06:48
                    -4

                    почитайте Канта — пока смысла продолжать нет


    1. batyrmastyr
      02.12.2016 14:55

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

      А что могут дать ваши курсы по C или C++, где 30 — 100 страниц уходит на написание поискового дерева и 200 страниц на «как не выстрелить себе в ногу устаревшей адресной арифметикой и прочими причудами языка»? За что первокурсникам такой геморрой?


      1. sbnur
        02.12.2016 15:38
        -1

        Не хочется вас обижать, но вы меня повеселили — мой опыт программирования простирается от начала 70-х годов прошлого века, поэтому ваши советы как-то мимо
        Но, к слову, учить программированию нас начинали с простых машинных кодов в течение целого семестра


        1. batyrmastyr
          02.12.2016 16:54

          Так это вас целый семестр учили машинным кодам, а в моё время (13 лет назад) семестр по С++ в далеко не худшем университете ушёл как раз на очередь, стек и пяток поисковых деревьев и 80% текста методички было занято демонстрацией возможностей и дефектов языка, а не чем-то реально полезным.


          1. sbnur
            02.12.2016 19:42
            -1

            Кодам нас учили, чтобы чувствовали машину, а затем языкам, чтобы формулировать и выражать свои мысли, а остальному учила жизнь по принципу — забудьте, чему вас учили и займитесь наконец делом


  1. sand14
    30.11.2016 14:55
    -1

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

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

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

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

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

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

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

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


  1. Darthman
    30.11.2016 15:01
    +5

    Про покупку Idera ничего не сказали, да и вообще скомканно как-то. Больше не про язык, а про непонимаю даже про что… Про назнвания?

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

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


    1. sand14
      30.11.2016 15:12
      +3

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

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

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

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

      Поэтому причины негативного отношения к Delphi — исторически сложившиеся, а не технически объективные.


      1. Darthman
        30.11.2016 15:14

        Да, это понятно и мы уже даже привыкли к этим вопросам. Приходим лишь в очередной раз к тому, что инструмент роли не играет. Примерно так и отвечаем, а на C# уже поздно переходить, много слишком написано.


      1. lgorSL
        01.12.2016 16:59

        Бинарная несовместимость с объектными моделями других языков/платформ? а где вы видели бинарную совместимость C# и Java, к примеру?

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


    1. Error1024
      30.11.2016 16:29

      оо, а где можно ваши стримы посмотреть? :)


      1. Darthman
        30.11.2016 16:41

        Мои сейчас нигде, я работаю днем, а вечером у меня все спят. А вот коллега мой ZblCoder стримит с сохранением водов тут


  1. Error1024
    30.11.2016 16:42
    +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. Darthman
      30.11.2016 16:46
      +1

      Делфи5, 7, 2009, XE2 думается мне были самыми знаковыми и важными в истории. Ну 2006я еще с из-за нового ИДЕ и перегрузки операторов.


    1. sand14
      30.11.2016 17:02
      +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


      1. speakingfish
        01.12.2016 00:28

        Cardinal был ещё с 16-битной Delphi 1. И был 16-битным беззнаковым integer. Исторически планировалось использование Cardinal как платформозависимого представления беззнакового числа. Однако сейчас скомпилировать под 16-битную платформу можно только в FPC, в котором Cardinal жёстко гвоздями прибит к 32-битному беззнаковому integer. Да и при компиляции под 64 бит в любых компиляторах Cardinal также останется без изменений — 32 битным.


        1. sand14
          01.12.2016 19:37

          Исторически планировалось использование 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, а это вопросы производительности и т.д.)


          1. speakingfish
            02.12.2016 19:46

            В C++ таких проблем нет — там есть size_t.
            ps. Вообще с delphi уже давно всё грустно и там остаётся в основном мохнатый софт. Поэтому я год-три назад занимался миграциями с windows на linux, с x86 на ARM и с delphi на java/C++ с промежуточной остановкой на кроссплатформенном fpc/lazarus. Миграция по частям с использованием fpc позволяла не тратить время на переписывание всего и сразу.


            1. Vjatcheslav3345
              08.12.2016 17:09

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


  1. iga2iga
    30.11.2016 16:47
    +4

    Люблю Delphi именно за RAD. Мне не важно на каком языке писать, хотя Pascal все равно намного ближе чем любой другой язык, он как бы человечнее что ли. Но ту скорость написания для приложения, которое нужно «уже вчера» может дать только Delphi. Очень расстраивает их политика в отношении единичных разработчиков и слово Enterprise в каждом предложении про Delphi. Delphi в первую очередь — это как раз среда для одного разработчика и не важно удовольствия ради он использует ее или для коммерческой выгоды. Дайте нормальные цены таким разработчикам, как я. Уберите всю работу с БД, если так переживаете за Enterprise, но пусть будет и мобильная разработка и разработка под все платформы. Я готов выкладывать за обновления раз в год адекватную сумму, а не такую как сейчас. Уберите богомерзкую обезьяну или замените её чем-нибудь адекватным или сделайте так чтобы она могла использовать OpenGL под виндой тоже.


    1. azsx
      02.12.2016 05:39

      iga2iga fpc чем не устраивает в виде lazarus? Есть всё Вами перечисленное, в том числе БД. Платформ куча, в том числе андроид или arm.
      Вот про видео утверждать не буду, так как не знаю.


      1. iga2iga
        10.12.2016 08:20

        1 раз вкусив прелесть создания и отладки приложения на мобильнике пусть даже с небольшими багами (ios, android) и положа руку на сердце, могу сказать что лазарь, конечно, это отличная замена для дельфи, но все еще не то. Слишком много телодвижений он требует при мобильной разработке. Но он у меня в обязательном порядке стоит как вторая среда разработки, но я все еще не готов переходить на него окончательно.


  1. turab_guseynov
    30.11.2016 16:47

    В большинстве ВУЗах, СУЗах используют паскаль, Delphi+MSSQL, при этом даже не новые версии


    1. frol_aleksan
      30.11.2016 17:11

      mssql это еще терпимо… У большинства как бы не access.


      1. aquamakc
        30.11.2016 17:27
        +1

        ) FoxPro


      1. AdmAlexus
        30.11.2016 18:51
        +1

        Через ADO? А что, а я писал:)


  1. dro1d
    30.11.2016 16:47
    +1

    Про Delphi 7 ни слова, хотя она, на мой взгляд, была самой популярной версией


    1. PaulZi
      30.11.2016 17:54

      Сколько лаб было написано в этой версии…


    1. bopoh13
      01.12.2016 01:04

      Так всегда: заманили знакомой картинкой :) Изучать D7 было весело по инфе с сайта, который написал AdmAlexus (особенно интересно было программно создавать объекты). Настольная книга была из 1-го или 2-х томов — не помню.


  1. awedov
    30.11.2016 16:47
    -1

    Язык основа всех языков


  1. Senpos
    30.11.2016 16:47

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

    Не знаю как давно это случилось, но сейчас на сайте Embarcadero в разделе Free Tools можно бесплатно получить Delphi Starter. Наверняка там есть какие-то ограничения, которые не позволяет использовать ее на всю мощь, но для учебы она мне сгодилась и отработала отлично.


    1. Darthman
      30.11.2016 16:50
      +3

      Там дофига всего нет. Я уж молчу про 64битный компилятор или что-то такое, там даже сама среда по шорткатам урезана сильно. Не сказать чтобы это было критично, но когда уже привык, туго. Скажем перемещаться между интерфейсом и реализацией по контрол+шифт+вверх можно было бы и не убирать. Нельзя научиться пользоваться средой, если обрубать такие важные шорткаты ИМХО.
      Ну и для коммерческого использования она не подходит. БОлее $1000 прибыли в год — покупайте профессиональную редакцию. Таковы лицензионные соглашения.


  1. mikkisse
    30.11.2016 16:54
    +3

    Спасибо за статью! Delphi навсегда в моем сердце :)


  1. Apatic
    30.11.2016 17:32
    +2

    Спасибо за статью. Поностальгировал.
    Вспомнил, сколько часов в свое время провел на Королевстве Дельфи/.
    Зашел, приятно удивился, что форум довольно активен до сих пор.


    1. AdmAlexus
      30.11.2016 18:55
      +3

      А я больше изучал DelphiWorld. Можно сказать это был мой первый Stack Overflow.
      И там была даже офлайн версия сайта (что в диалапные времена было очень актуально, таскать с собой на флешке кучу статей по любимой IDE).


      1. Apatic
        30.11.2016 18:58

        О, а еще когда не было у меня интернета, а в школе надо было писать какой-то проект, я ехал в Библио-глобус, искал там книги по Делфи, например Флёнова и выписывал себе нужные функции и приемы.


        1. AdmAlexus
          01.12.2016 12:30

          Тоже читал Фленова. Преподаватель давал PDF-ку «Delphi глазами хакера».


          1. azsx
            01.12.2016 12:37

            Преподаватель давал PDF-ку «Delphi глазами хакера».

            Всё таки баловство это… Вот Бакнелл. «Фундаментальные алгоритмы на Delphi» — это вещь! И по БД и ООП на delphi почитать книги стоит.


      1. mikkisse
        30.11.2016 20:52
        +2

        Delphi World это вообще очень замечательная вещь. Сколько полезного можно было оттуда почерпнуть. Целых 5000 статей :)


        1. Source
          01.12.2016 00:07

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


    1. Hint
      01.12.2016 00:31
      +2

      Я еще на диалапе сидел на delphi.mastak.ru (сейчас delphimaster.ru). Замечательное было комьюнити, огромное число профессионалов.


      1. stas404
        02.12.2016 06:11
        +1

        Да, замечательное было времечко, действительно очень дружные были ребята, а материалы на обозначенных сайтах были просто бесценны.
        Еще Delphi у меня ассоциируется с библиотекой KOL — помню, как нравилось смотреть после компиляции на размер программы, который при использовании этой библиотеки был раз в 10-20 меньше по сравнению с использованием стандартных. Вроде бы, что-то около пары килобайт пустая форма весила.
        Аж прослезился )


  1. GeMir
    30.11.2016 19:34

    Delphi в начале двухтысячных ещё весьма широко использовался на уроках информатики в немецких гимназиях. Сейчас почти все перешли на Java (Greenfoot, BlueJ).


  1. QtRoS
    30.11.2016 22:44

    Простой пример из жизни — Mail AI Cup, среди доступных инструментариев и языковых пакетов есть Pascal. Еще ни одной стратегии на нем не увидел… Ни одной… Лично пролистал топ 1000. Да, можно контраргументировать меня тем, что люди, которые программируют на делфи уже не интересуются этим, но если молодежи не интересен паскаль (и делфи), то какое у него будущее?


  1. stepanp
    30.11.2016 23:09
    +4

    Очень жаль что по скорости разработки интерфейсов до Delphi из современных технологий никто так и не допрыгнул. В моду вошла верстка, и теперь приходится руками верстать то что в дельфях еще 20 лет назад можно было накликать мышкой за 5 минут. И это подается как прогрессивность и развитие. Особенно яркий пример Qt с его переходом с виджетов на qml.


  1. Idot
    13.03.2017 14:12

    туман создается не просто каплями воды, а каплями специального вещества

    И как оно при попадании в лёгкие? Вода всё таки была бы безопаснее.


  1. Idot
    01.12.2016 07:40

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


  1. Pakos
    01.12.2016 13:24

    Россия — родина слонов, Delphi вышло только в 1995м согласно wiki.


  1. OksikOneC
    01.12.2016 14:41
    +2

    В Delphi 2006 также была реализована технология MDA (Model Driven Architecture) с помощью ECO (Enterprise Core Objects) версии 3.0.

    И ваш покорный слуга, использовал эту технологию в продакшене в составе большой группы разработчиков. Причем, сам Bold for Deplhi был изначально разработан шведской компанией BoldSoft, которую потом просто выкупила Borland. Что могу сказать по итогу использования данной технологии: это был просто прорыв для своего времени. Аналогов на тот момент не было. Но сама Borland просто провафлила на ровном месте, т.к. информационная поддержка, пиар, и хоть какие-то внятные маны отсутствовали напрочь. Я испытал гордость, когда единственную книгу, которую можно было вообще по этой теме достать, я переводил англоязычным коллегам с русского языка, что подтверждает догадки автора статьи о супер-распространенности дельфей в отечественных краях. В итоге, проект был сдан с некоторым опозданием, но заказчик остался доволен.Насколько я понял, сейчас эта технология ушла в бездну? Прямо радуют вот такие вопросы?

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

    И ваш покорный слуга, около года использовал ее в нескольких крупных коммерческих проектов. Заявленная кроссплатформенность была весьма и весьма относительной. Работа по аналогии с BDE отсутствовала. Технология инсталляции отсутствовала, что с учетом сложных зависимостей в самой Kylix, заставило нас выделить одного человека только под технологию развертывания. И это с учетом, что для Win был их же InstallShield, все это кажется весьма непонятным.

    В целом, для 2004-2006 гг. быстрее под Win платформу разрабатывать было негде, если вспомнить, что тогда вообще было. Delphi подкупил тем, что в одном пакете был и BDE, и сама среда, и InstallShield + миллиард компонентов, как платных, так и нет. Но абсолютно все вскоре было промотано в хламину из-за метаний продаем/закрываем/не продаем/развиваем. Сам я тоже из мира дельфи ушел, и вроде бы с тех пор, а уже прошло почти 13 лет, ни разу туда не возвращался. Ностальгирую, когда читаю такие статьи. И задаюсь одним и тем же вопросом — ну как можно было так все слить. Теперь же, я лично просто не представляю, чтобы заставило вернуться всех бывших разработчиков этой среды обратно. Просто остался такой осадочек ужаса, что потрачено несколько лет жизни на разработку на этом стеке технологий, весьма и весьма неплохом, а местами — революционном даже, и в итоге большая часть этого опыта просто обнулилась.


    1. OksikOneC
      01.12.2016 16:58

      Хотелось бы у ныне живущих дельфистов спросить, кто использовал MDA в своей работе: вроде бы бывшие сотрудники BoldSoft, которых купила Borland, потом опять от них ушли? А сама MDA полностью перестала поддерживаться, и существовал лишь порт под Dephi 2007? Насколько я понимаю, следующей вехой в развитии дельфийских ORM, стал ECO. Но судя по официальной конференции там как-то совсем грустно. Единственное, что активно, и вроде бы живо, так это InstantObjects, но как на самом деле дела обстоят — не понятно. Может те, кто в курсе, пояснит — вообще как сейчас с ORM в дельфях? Что актуально, что модно, что на слуху?


      1. serbod
        05.12.2016 10:39

        mORMot


        1. OksikOneC
          09.12.2016 15:16

          Спасибо!

          Сам же по теме ORM нашел еще кое-что тут


  1. safinaskar
    04.12.2016 01:40

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

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

    В этих двух абзацах вы перепутали всё на свете. Такое чувство, что по-быстрому вычитали где-то разрозненные факты и попытались запихать их в два абзаца. Не вышло.


    Давайте разбираться.


    Изначальный Pascal, по мнению его разработчиков, имел самый быстрый компилятор в мире

    Какой именно компилятор здесь имеется в виду? Из фразы выходит, что вроде как первый компилятор Pascal. Раз вы говорите "изначальный Pascal", значит, получается, первый компилятор Pascal. Но раз он первый, то его разработчикам сравнить-то его было не с чем. :) Как же тогда его разработчики могли утверждать, что он самый быстрый? :)


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

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

    Угу. Вот только технология создания платформенно-независимых программ (ну или, может быть, идея таких программ) была придумана Виртом (ну или в команде Вирта). А вот упоминаемый далее IDE был от Turbo Pascal. А вы всё смешали в кучу. Оставив читателя недоумевать, мол, а раз придумана мультиплатформенная технология, зачем тогда только для DOS?


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


    1. masai
      04.12.2016 14:36

      Промахнулся на телефоне. Комментарий ниже.


  1. masai
    04.12.2016 14:34

    Как же тогда его разработчики могли утверждать, что он самый быстрый? :)

    Очевидно, речь идет о скорости компиляции эквивалентных программ на разных языках. Не уверен, правда, так ли это.


    Насчет DOS вы правы — ETH Pascal работал на CDC-6000.