С 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.
Перспективы языка Pascal в этом отношении оказались далеко не радужными. К середине 90-х годов он уже находился в довольно запущенном состоянии. Компания Borland начала дорабатывать его, но вскоре стало понятно: изменения и добавления будут настолько серьезными, что результат этой работы можно считать новым языком программирования. Для нового языка была разработана IDE с графическим интерфейсом. Новая среда программирования и язык получили общее название Delphi.
Своё имя новая система (Delphi) получила в честь древнегреческого города Дельфы. Название было выбрано неспроста: город Дельфы связан с именем бога мудрости и покровителем искусств Аполлона. Согласно легенде главное святилище Аполлона находилось именно в этом городе. Его жрицы-сивиллы изрекали пророчества желающим узнать свою судьбу.
«Имя Delphi было предложено Денни Торпом во время мозгового штурма. Мы хотели, чтобы в имени системы отразились уникальные способности продукта к работе с базами данных, и Delphi как нельзя лучше перекликается с таким заслуженным именем в этой области, как Oracle, по крайней мере для тех, кому сочетание «Дельфийский Оракул» о чем-то говорит», рассказывал руководитель исследовательской группы по разработке системы Delphi Чак Язджевски.
В России Borland Delphi появился в конце 1993 года и сразу же завоевал большую популярность.
Основные версии
Версия 1 была предназначена для разработки под 16-разрядную платформу Win16. Начиная со второй версии, была реализована возможность компиляции программы под 32-разрядную платформу Win32.
Delphi 1
В версии 3 появилась поддержка многозвенной технологии (multi-tiered) доступа к данным, что позволило создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.
Delphi 3
Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux.
Версия 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.
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:
Продукт Delphi XE3 является продолжением нового поколения средств быстрой разработки семейства Delphi. Напомню, в 2011 году вышла Delphi XE2 с платформой FireMonkey, которая является альтернативой библиотеки визуальных компонентов VCL.Вышедшая в 2013 году версия Delphi XE5 обеспечила кросс-компиляцию приложений для устройств на платформе ARM/Android.
Она очень похожа на VCL по методам использования и составу компонентов (кнопки, метки, поля ввода, меню и т.д.), но обладает способностью быть перенесенной на другую операционную систему. FireMonkey — кроссплатформенная. Приложения, созданные с помощью FireMonkey, могут компилироваться и под Windows, и под Mac OS. Практически в один-два «клика» мы можем пересобрать проект под принципиально другую операционную систему. Практически все демонстрационные проекты, поставляемые с Delphi на платформе FireMonkey, имеют две версии: одну под Windows, другую — под Mac OS. И для этого не нужно вносить изменения в исходный код приложения
В апреле 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 перманентно «хоронят» или заявляют, что так жить нельзя. Они аргументируют тем, что система стала монструозной, неактуальной, неподдерживаемой, неудобной, какой-то еще…
Но можно вспомнить, что такое мнение чаще встречается в США и Западной Европе, где этот язык бешеной популярности и не имел никогда. Там эти соображения могут быть вполне резонными во многих случаях. Но есть и другие страны, где ситуация может отличаться — страны СНГ и остальные страны Восточной Европы.
С этим согласен Всеволод Леонов:
Небольшой исторический экскурс по поводу стран Восточной Европы. Система образования бывшего СССР была очень сильна во многих аспектах, но не по части прикладного программирования. В начале 90-х как получить доступ к компьютеру, так и научиться что-то делать в современных средах разработки могли лишь те, кто имел определенную специальность.
Целые факультеты «пролетали мимо» фундаментальных курсов по программированию. И наличие Turbo Pascal с низким порогом вхождения, а затем среды Delphi, позволяющей заняться самообразованием в хорошем смысле этого слова, смогли насытить ИТ-отрасль достаточно грамотными разработчиками, а также повысить общенациональный инженерный уровень создания прикладного ПО.
Таким образом, для стран бывшего соцлагеря связка Pascal/Delphi резко выдернула экономику из ИТ-небытия за счет очень простого языка программирования и среды визуальной разработки на основе готовых компонентов.
Новый герой из open source
Наиболее известной свободной реализаций языка Pascal является Free Pascal. Помимо открытости исходного кода, его основным преимуществом является мультиплатформенность, а также поддержка различных диалектов.
На основе 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)
azsx
30.11.2016 11:18+3Данные факторы привели к практически полному исчезновению Delphi из сферы образования.
Интересно, а в каких Российских ВУЗах прекратили использовать Delphi «для образования»?pi07
30.11.2016 11:42-2Во, многих, надо полагать…
azsx
30.11.2016 12:11+1Захожу на сайт МГТУ имени Баумана, в поиске delphi — 751 ответ, pascal 759 ответов.
Всё таки кто не использует?Apatic
30.11.2016 17:20Сейчас вроде нет больше Delphi в Бауманке. Но за все факультеты не скажу
Acuna
30.11.2016 20:35В Бонче и не было даже. Весь курс сидели на Java, пару семестров С++ (но скорее для общего развития). Так что нет.
Apatic
30.11.2016 20:51+1Простите, что такое Бонч? и про какие годы речь.
Acuna
30.11.2016 20:54+1Извиняюсь, думал в представлении не нуждается. «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича», один из ведущих российских вузов. Окончил в 2009-2010.
Acuna
30.11.2016 20:56P. S. Если что — просто продолжал ветку про отсутствие Delphi в вузах)
belkamax05
30.11.2016 21:20+1Ну а мы проходили Delphi в не таких уж далеких 2009-2011 годах. Так же Borland C++ Builder на тот момент был не менее хорош, многие его предпочитали на 1-2 курсе (но речь о языке, а не IDE). А потом появилась бесплатная студия в нашем вузе и про пиратскую Delphi все забыли.
Apatic
30.11.2016 21:24Исходя из комментария, я подумал вы про Бауманку продолжаете.
Насчет ведущего — немного спорно, конечно ;)
Впрочем, тема не об этом.Acuna
02.12.2016 07:04А, нет-нет, я о своем вузе уже, коли речь пошла о непреподавании, так сказать, Delphi в вузах. Ну а насчет ведущего — тут надо уже проверять имеет ли он сейчас такой статус, да. Во всяком случае в его защиту, чтобы наверняка, хочу сказать, что по Питеру он ведущий точно)
MAXInator
13.03.2017 13:39Ванкувер, Канада. Интерактивный голографический дисплей.
Что нужно:
мобильное устройство
HDMI или wifi
пожертвовать 550$ на Кикстартере вот этим ребятам (хотели собрать 50 000$, успешно собрали почти 300 000$).
Или купить на али готовое устройство и, положив сверху телефон/планшет, запустить видео четырех проекций требуемого изображения? От 500 ре, в зависимости от диагонали вашего телефона/планшета.Acuna
02.12.2016 07:37Вы знаете… Честно признаться, я долго думал, стоило ли мне вообще оставлять свой комментарий, ибо такого вопроса боялся, честно признаюсь… Ситуация в нем сложилась, возможно, как и в любом российском вузе, следующая: при весьма ощутимых дотациях (самого вуза) огромные средства вкладываются в модернизацию процесса обучения, взять всем не по наслышке известный современнейший по всем меркам корпус на пр. Большевиков из стекла и бетона, с огромными и обставленными по последнему слову техники аудиториями, электронными досками, комнатами для групповых занятий и прочим, и это при всем при том, что когда я только поступал в него, занятия некоторое время до окончания его постройки проводились в здании детского сада (в прямом смысле, двухэтажный детский сад по типовому советскому проекту). Однако преподавательский состав довольно взрослый. Возможно из-за того, что желающих поступать на нищенскую зарплату, особенно молодежи, впереди которых вся жизнь и которые, разумеется, мечтают получше обустроиться в ней, особенно имея неплохие способности. Это, конечно, сказывается на самих языках и актуальности рассматриваемых технологий (по Линуксу почти истоки, надо сказать). Однако с Java ситуация была весьма неплоха, так как препод был, пожалуй, самым молодым из всех (относительно, конечно. Взрослый мужчина тоже), преподавал весьма неплохо, всегда был готов ответить на вопросы.
Касаемо «многие бы решили» — дело в том, что группа лично у нас (на параллельных курсах, говорят, ситуация аналогичная) собралась на удивление разношерстная, и на всем потоке было только 3 (!) человека, которые действительно хотели идти в разработку. Еще парочка не особо определившихся. Для меня до сих пор загадка почему? Что они все делали на факультете под намекающим названием «Информационных систем и технологий»? Ладно сестра училась в экономическом, дак там ситуация была аналогичная, оно и понятно, ибо до сих пор это считается лакшери и родители считают своим долгом таким образом обеспечить своим чадам безбедное будущее, окей, но на факультете «Информационных систем и технологий»?! Поэтому тут дело не в качестве преподавания, а в качестве… Как-бы… Применения полученных знаний и желании учиться.
Поэтому я мог бы поставить оценку, но, учитывая вышеперечисленные мною факты, это, увы, сложно. Преподаватели честно обрабатывали свой хлеб, я им благодарен (разве что у самого не было возможности эти знания приобретать в дальнейшем, так как вовсю занимался разработкой своей CMS, которую начал писать на 2 курсе, а как известно, поддержка известных продуктов требуют огромного количества времени), ну и плюс, как я уже и говорил, людей, способных решать задачи такого рода, просто не было. Однако скажу честно, даже при всем при этом, большое количество людей на потоке такие задачи в принципе решить были в состоянии наравне в примерами по математике. Позволяли способности, не более. Поэтому возможно знания вуз давать был и в состоянии, было бы желание их получать.
И да, учился на очной, дневной, диплом специалиста (успел в последний год на бакалавра, поэтому теперь полноценный специалист без магистратуры, а не бакалавр по болонской системе, которых преподаватели называли у нас «недоучками»).
aquamakc
30.11.2016 11:54-6В более-менее адекватных. Шараги, как преподавали паскаль с его производными, так и преподают. Заменили правда таки на C#. Как было тяжело найти знающего С или С++ программиста, так и осталось.
geher
30.11.2016 13:25+8Проблема не в языке, а в том, что преподают язык вместо программирования.
А для обучения именно программированию паскаль (особенно объектная версия) вполне годится.leschenko
30.11.2016 16:21Преподают алгоритмизацию, а не «программирование» или язык. Язык тут вообще не важен.
aquamakc
30.11.2016 16:37+4Поправка: должны преподавать, но из-за низкой компетенции преподавательского состава студенты изучают именно язык.
geher
30.11.2016 16:55Если бы алгоритмизацию.
Как правило преподают именно язык. Причем в стиле: «вот вам операторы и функции, а дальше крутитесь, как хотите».
Что же до программирования, то в понимании термина, которое давалось мне, алгоритмизация лишь часть этого понятия.
Pakos
01.12.2016 13:30Шараги — преподают delphi (C# или что там ещё), а преподавать должны базу. Хоть на ПСЯК Сульповар 8.5 (Ц).
PS. У нас Delphi не было в программе, только версию 1.0 показывали как диковинку из будущего.
Tujh
30.11.2016 14:02Есть такие. Вот только выбранные альтернативы не всегда можно похвалить. Обычно это или C# или Python. Учить таких студентов чему-либо низкоуровнему оказывается достаточно сложно, привыкают к сборщикам мусора и всё такое. Как верно заметили — учат именно языку, а не базовым основам программирования.
EmmGold
30.11.2016 16:56-2Дельфи как и паскаль только в школе видел.
В ВУЗах си под дос и нортон коммандер. причем бывает, что это всё крутится на мак мини с двойной загрузков, вин хп-7 и дос. увы.
frol_aleksan
30.11.2016 11:36+4На Delphi как раз таки и обучают. А все потому, что есть компоненты и встроенные функции на все случаи жизни, особенно касаемо баз данных.
И кстати много софта написано именно на Delphi. небезызвестный мессенджер QIP, не менее небезызвестный аудиоплеер AIMP, не менее небезызвестная Victoria 4 версии (хотя там Delphi с ассемблерными вставками), флешеры и дамперы для MTK, RockChip, Spreadtrum и т.д…aquamakc
30.11.2016 14:21Даже SCADA-системы доморощенные на Delphi есть, но язык всё-таки позиции явно сдал.
Darthman
30.11.2016 15:08+2FruttyLoops, WinRar, The Bat, Age of wonders, Skype… Много софта было известного, если что. Я в своё время со своим Battery Eater тоже раскрутился довольно сильно (сотни тысяч даунлоадов можно же считать сильной раскруткой), что стали на авторитетных сайтах использовать.
Фигня это всё, не инструмент важен, а результат.
Apatic
30.11.2016 17:21+3Черт возьми, да сами богоподобные «Космические рейнджеры» были написаны на дельфях!
quwy
01.12.2016 01:25И до сих пор пишутся тонны разномастного корпоративного софта (да, вот прямо в этот момент делаются коммиты в новые проекты на миллионы строк кода)
shapovalov_org
30.11.2016 11:39Я в универе очень жалел что преподы используют программу 5 летней давности и Delphi 7 соответственно. Украткой от них изучал C# и договорился делать все лабы не в Delphi а на C#, о чем не сожалею ))) Плюс последняя версия Visual Studio 2015 Community Edition бесплатна и покрывает 100% моих необходимостей в IDE, и в моем уневере как назло после нашего выпуска все усилено стали переводить учебные программы исключительно под C# )))
frol_aleksan
30.11.2016 17:23-1Бесплатны в том числе и express-версии. Причем специально изучал тему и нашел на сайте MS, что их вполне можно использовать в том числе и для коммерческого использования. Но самое серьезное ограничение у экспресс-версий c# и vb, из тех, с которыми сталкивался я, заключается в том, что нельзя указывать в качестве источника данных сервер БД, а можно только использовать локальные файлы базы данных. К серверу получилось подключиться только через код программы, но в таком виде работать очень геморно.
kryvichh
30.11.2016 11:44Надо уточнить. что в сентябре 2016 года появилась-таки бесплатная версия Delphi Starter. Причем это бесплатное IDE обещают своевременно обновлять одновременно со «взрослыми» версиями Delphi.
Также есть бесплатный C++Builder Starter Edition, InterBase Developer Edition.geher
30.11.2016 13:18В 2007 году вышла абсолютно бесплатная (лицензия вроде никак не ограничивала разработчика) Turbo Delphi, соответствующая по начинке Delphi 2006. Её основным недостатком была невозможность подключать новые компоненты в среду визуальной разработки. Впрочем, данное ограничение достаточно быстро научились обходить.
Darthman
30.11.2016 15:05Пока что это я вижу как некий Special Offer. Взял себе в своё время по нему 10.1. Для дома хватает более чем.
sevocis
30.11.2016 11:45+1Наиболее популярным решением для персональных Windows-компьютеров в 80-е — начале 90 годов стал компилятор и IDE Turbo Pascal фирмы Borland.
Во времена DOS, под DOS — да, называлось Turbo Pascal.
Потом, ближе ко времени Windows, IDE стало называться Borland Pascal, но это было все равно под DOS.sand14
30.11.2016 13:03Borland Pascal, в отличие от «просто» Turbo, имел возможность компиляции программ для защищенного режима процессора x86.
Turbo мог компилировать только для реального режима.
Версия 7.0 IDE была в вариантах Turbo и Borland (последняя включала обе версии).
Причем, если не ошибаюсь, версия BP 7.0 могла собирать Windows-программы из-под DOS-вской оболочки, хотя Windows IDE в комплект тоже входила.
Hint
30.11.2016 13:09Очень много лет писал на Delphi, пока не стал заниматься в основном вебом. Недавно скачал последнюю IDE, чтобы внести небольшие правки в старый проект. Так вот, IDE не поддерживает High DPI, весь интерфейс размыт из-за масштабирования картинки средствами ОС. Формы в получившемся приложении глючат (а там нет ничего сложного). Например, при наведении курсора на крестик (закрытие окна) элемент сразу же теряет фокус (курсор на нем, а фокуса нет). Всё это очень печально, хотя я всегда был сторонником языка и IDE в целом.
Darthman
30.11.2016 15:04+110.1 поддерживает не только HighDPI, но даже многомониторность. Да, долго до этого шли, но пришли же.
Hint
01.12.2016 00:48Приложения скомпилированы на компьютере со стандартным DPI. При запуске на High DPI появляется непонятный отступ справа, если окно небольшой ширины. У элементов Anchors [akLeft,akTop], но это не помогает.
И глючит заголовок окна. Фокус при наведении на элементы управления (свернуть, развернуть, закрыть) появляется на доли секунды, а затем пропадает (курсор на кнопке, а она не подсвечивается).
Плюс различные глюки VCL (не связаны с DPI), когда после hover остаются артефакты и пр.
Проверял всё на Delphi 10 Seattle.
iga2iga
30.11.2016 18:35IDE по умолчанию запускается в 96 DPI вроде. Чтобы в дизайнере формы создавать с таким же DPI. Уж не знаю баг это или фича, но если IDE запускать в 144 DPI (4k), например, то в дизайнере формы вроде как обычные создаются, а при запуске ещё больше увеличиваются, при запуске на FHD мониторе они просто гигантские. То есть масштабирование происходит только в большую сторону. Пока для себя нашел выход — использую IDE на 144 DPI, и у каждой новой формы ставлю вручную 96 DPI и 11ый шрифт. Тогда они отлично масштабируются под 144 DPI и выглядят родными на 96 DPI.
Darthman
30.11.2016 19:27SetProcessDPIAware пробовали?
iga2iga
01.12.2016 03:07MS вроде не рекомендует напрямую вызывать эту функцию, а лучше пользовать ее через манифест, да и даже так она не нужна. Потом проблем-то нет никаких. Я просто думал, что если я создаю форму при 144dpi, то при запуске на 96dpi она уменьшится вместе со шрифтами. А в итоге она умеет только увеличиваться. Поэтому в дизайнере приходится вручную выставлять 96dpi для новых форм и 11ый шрифт… Так конечно немного неудобно работать в самом дизайнере — все достаточно мелкое, зато при запуске и на 96dpi и на 144 выглядит как родное. Даже специально ставил 2 монитора рядом FHD и 4k 27 и 28" соответственно — формы получаются приблизительно одинакового размера у скомпилированного проекта. Ну или второй вариант запускать замыленную IDE в 96dpi так как будто она запущена на FHD мониторе. Но так глаза устают. Зато в дизайнере уже сразу 11ый шрифт и 96 dpi.
iga2iga
01.12.2016 03:15Забыл добавить, что на bds.exe у меня в свойствах — совместимость стоит галочка «отключить масштабирование изображения при высоком разрешении экрана» — работает отлично.
vsabadazh
30.11.2016 13:35Write once, compile anywhere… Напрашивается аналогия с Qt.
aquamakc
30.11.2016 13:48-1Закономерный тренд. Может и у Мелкософта с Net Core получится в кроссплатформенность.
iga2iga
01.12.2016 03:17Немного не так… Это больше к Лазарю относится. Тут скорее будет «Write once, deploy anywhere.» Причем этот write только Windows.
iga2iga
01.12.2016 18:32А вот выше ответил. В свойствах bds.exe поставить галочку на «отключить масштабирование изображения при высоком разрешении экрана». Тогда IDE использует родной dpi экрана родные шрифты, а не просто растягивает изображение… Возможно тоже самое надо сделать и с BDSLauncher.exe
Не туда ответил, это было для vsabadazh
DmitryKoterov
30.11.2016 13:53+2IMHO 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 и перегрузку операторов — а перегрузка операторов ОЧЕНЬ важна, особенно в библиотеках и научной среде — всякие там матрицы-векторы).Tujh
30.11.2016 14:16производные классы лишаются возможности бесшовно вызвать в своем конктрукторе конструктор базового класса!
Inherited(), не?DmitryKoterov
30.11.2016 20:30+1Inherited-то inherited, вы посмотрите, какой он ассемблер генерировал, а также попробуйте ошибиться (не вызвать его, например, вызвать дважды, или вызвать конструктор, как метод, а не через inherited). В ранних версиях (по крайней мере; я не знаю, может, уже сейчас исправили) память выделял самый базовый конструктор в цепочке, и ему через весь стек протаскивался int32 с размером самого производного класса. Если в какой-то момент inherited забывали, получался занятный эффект.
Вообще, я сейчас пишу про то, «как было». Сейчас-то уже и generic-и появились, и вон NewInstance. Но время уже, как мне кажется, упущено, и люди, которые могли много лет назад продолжить писать на Delphi после изучения Паскаля в школе/вузе, увидев все это (и другие нестыковки — например, необходимость вручную вызывать деструктор, в то время как в C++ он вызывался автоматически при выходе объекта за область видимости), могли отвернуться и пойти использовать другой язык.Source
30.11.2016 23:48+1Вы так пишете, как-будто C++ проще и логичнее, чем Delphi. Хотя по факту там своих "особенностей" выше крыши и гораздо больше, чем у Delphi.
DmitryKoterov
01.12.2016 04:26+1Паскаль — мой первый язык с 1991 года, вторым был ассемблер, а первая строчка на C++ написалась в районе 1996. Так что — нет, я не пишу так, как будто бы C++ проще и логичнее. :-) Очень горько видеть, что хороший язык пошел по тем же граблям, которые давно были преодолены в других популярных языках, и, как мне кажется, в результате получил не столь широкое распространение, какое мог бы получить, обойди он эти грабли изначально (а сейчас-то уже поздно, лидерство упущено). Всего-то и надо было аккуратно запилить объектную модель — все равно же ее с нуля делали. Хотя бы вот что: делаете изначально Object по типу Record-а, копирующегося по значению? Ну сделайте тогда, чтобы деструкторы автоматически вызывались при выходе объекта за область видимости, сделайте конструктор копирования — это же неразрывно связанные вещи. Но нет…
Можно только представить, каким прекрасным стал бы мир, если бы большинство софта в нем писалось не на C++ или Java, а на Паскале. (Хотя C++ и Java тоже неплохие языки, но в них нет того изящества Паскаля, что ли...)
aso
01.12.2016 12:19(и другие нестыковки — например, необходимость вручную вызывать деструктор, в то время как в C++ он вызывался автоматически при выходе объекта за область видимости)
Это-то какраз «стыковки» — в Паскале отсутствует инициализация переменных при их объявлении — ну и, соответственно…
Всё-таки жаль, что умерла Модула.
devpony
30.11.2016 14:40+16Бедный Вирт вертелся в гробу, как волчок
Эм, Вирт жив…DmitryKoterov
30.11.2016 20:09Это фигура речи такая. Как говорил Джон Сильвер, "… и живые позавидуют мертвым". :)
masai
01.12.2016 01:00+2Технически это не мешает ему крутиться в гробу. Скорее даже наоборот, живому это сделать проще.
batyrmastyr
02.12.2016 15:43+2На самом деле главная ошибка Борланда в том, что вместо того, чтобы сказать «а давайте перейдём на Оберон / Компонентный Паскаль», над архитектурой которых Вирт с учениками думал лет 30, они делали свои кривые костыли к устаревшей «пробе пера» Вирта.
Vjatcheslav3345
08.12.2016 13:58Жалко, что Оберон или Компонентный Паскаль не прикрутили пока на LLVM или gcc — как яву или аду.
sbnur
30.11.2016 14:51-1Паскаль изчезнет из сферы образования России, когда уйдут (в понятном смысле этого слова) те преподаватели, которые потратили свою молодость на его освоение и заставляют тратить также последующую молодежь.
На мой взгляд (на базе большого преподавательского опыта) в вузах следует освоить за время обучения функциональный язык (типа Lisp), логический (типа Prolog) и процедурный (типа Java).
Но обязательно (в самом начале) C.
А веб программирование факультативом — все равно сами выучатfrol_aleksan
30.11.2016 15:31Я лично двумя руками за этот подход. Сейчас в большинстве вузов на 1 курсе дают Turbo Pascal (и пофиг, что на существующих системах он заводится только после плясок с бубном, типа установки виртуальной машины со старыми версиями Windows или DOS), потом переходят на Delphi, где-то там в процессе вводят C++ с переходом на старших курсах на C# и JAVA. В итоге студент нормально не знает ни одного языка программирования или остается на Delphi, потому что на нем ваять действительно проще всего, а комьюнити за… надцать лет его существования действительно огромное.
Мое мнение — если человек не знает ничего, то и осваивать с нуля любой язык, будь то Pascal или С по сложности примерно одинаково.
P. S. Кстати приставка Turbo это разве не от одноименной псевдографической библиотеки TurboVision?asave
30.11.2016 16:56> Кстати приставка Turbo это разве не от одноименной псевдографической библиотеки TurboVision?
Нет. Он с первой версии назывался Turbo
В 5.0 появилось ООП
В 5.5 была добавлена TurboVisionspeakingfish
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
sbnur
30.11.2016 17:04Приставка турбо означает, что код оптимизирован (в статье неправильно сказано, что самый быстрый компилятор — просто компилятор оптимизирует код в сторону ускорения выполнения, хотя никто особенно замеры не производил насколько код оптимизируется по сравнению с другими компиляторами)
masai
01.12.2016 01:04Сейчас в большинстве вузов на 1 курсе дают Turbo Pascal
Откуда статистика? В вузе, где я учился (весьма провинциальном), на первом курсе дают C, ассемблер и C#. Все так плохо?
aquamakc
30.11.2016 16:25+2Как уже сказали тут в каментах. Проблема не в преподаваемом языке, а в том, что преподаётся именно язык, а не разработка ПО, как таковое.
Паттерны, антипаттерны, архитектура приложения, подходы к разработке, UI/UX дизайн, модульное тестирование и т.д… Этого ничего нет. Как результат на выходе в лучшем случае заготовка джуна, которого надо за уши тянуть и обучать элементарным вещам.sbnur
30.11.2016 16:55В принципе да — но язык первичен, а разработка вторична — то есть все знают русский язык, но не все могут его использовать профессионально
В российских вузах мало преподавателей, которые могут программировать профессиональноaquamakc
30.11.2016 17:01+3язык первичен, а разработка вторична
Позвольте не согласиться. Разработка первична. Умение применять паттерны, избегать антипаттернов, умение строить логичные алгоритмы приветствуются в любом языке.
В российских вузах мало преподавателей, которые могут программировать профессионально
Низкая оплата труда и невысокий престиж профессии преподавателя — основная беда системы образования.sbnur
30.11.2016 17:10-1ну странно — если не знаешь язык, то все паттерны не нужны — кстати и алгоритмы пишутся на языке — поэтому и называются алгоритмические языки
Кстати ( опять же в силу большого преподавательского опыта, включающего советскую эпоху) оплата труда не при чем (в советское время нормально платили преподавателям) — просто. когда возникла массовая потребность в преподавании программирования (начало 70-х прошлого века) советская система преподавания начала сама по себе гнить и в настоящее время разложилась окончательноaquamakc
30.11.2016 17:21алгоритмы пишутся на языке
Алгоритмы рисуются на бумажках, досках или специализированном софте. Алгоритм в общем смысле — как программа вообще должна работать и что делать.
если не знаешь язык, то все паттерны не нужны
) Само-собой синтаксис хоть какого-то языка программирования знать надо. Но я не о том говорил. Самые важные элементы разработки ПО, как таковой практически независимы от языка. Например, архитектура взаимодействия с пользователем или умение распознать антипаттерн «божественный объект».
оплата труда не при чем
Есть условный Иван Иванович, имеющий большой опыт разработки на нескольких языках, под разные платформы. Enterprise, Web, Mobile. Был тимлидом в успешном проекте. Куда он пойдёт работать? Во фриланс, сеньором в крупную компанию, организует свой стартап или в местный вуз обучать раздолбаев за 25 т.р. в месяц?sbnur
30.11.2016 17:30ладно — смысл переубеждения имеет нулевую значимость — вы смотрите на систему образования снаружи, а я ее знаю изнутри на протяжении десятков именно в области преподавания информационных технологий — причем имею также большой профессиональный опыт в создании разных проектов, владея многими языками, зная разные IDE и прочие нужные технологии.
Кстати условный Иван Иванович в настоящее время предпочтет остаться в вузе (догадайтесь почему)aquamakc
30.11.2016 17:34Мне бы в своё время парочку таких Иван Иванычей в качестве преподавателей…
sbnur
30.11.2016 18:30А вот Ричард Фейнман говорил, что учить надо того, кто способен обучиться сам
aquamakc
30.11.2016 19:07) ну вот мне и пришлось самому обучаться, вот только те «полезные знания», которые мне вложили в незамутнённую студенческую голову как минимум нифига не помогли в становлении.
Да, тех, кто случайно попал в профессию учить бесполезно, но для остальных можно значительно сократить путь к развитию.sbnur
30.11.2016 19:17+1значит не те вкладывали — задача педагога не вложить некий объем данных, а создать идеал, к которому надо стремится, являя собой прообраз этого идеала — образование от слова образ и этот образ должен быть и должен быть не безобразным
aso
01.12.2016 12:23просто. когда возникла массовая потребность в преподавании программирования (начало 70-х прошлого века)
Э-ээ?
В начале 70х ещё Фортран был актуальнейшим языком и новьём…sbnur
01.12.2016 12:37в начале 70-х фортран уже не был новьём — это был (и кстати есть до сих пор) язык профессиональной разработки приложенй в области научных иссследований, где требовались научные расчеты. Кстати, тогда мне и пришлось его освоить по работе. В дальнейшем с удовольствием его оставил, перейдя на c (c++), а потом на c#, java и так далее.
aso
01.12.2016 13:12в начале 70-х фортран уже не был новьём
Был, был.
Актуальным был точно — ФОРТРАН-66. %))
А вот более свежие языки — вся «классика», сопсснна, Алгол-66 (так и не взлетевший), Паскаль, Си, Симула (67, емнип), Бейсик — существовали, скорее, ещё «виртуально».sbnur
01.12.2016 14:26можно конечно утверждать что солнце восходит на западе, но Фортран был создан до 1957 года, и к 70-м имел почти 20-летнию историю использования без потери актуальности до наших дней, причиной чему является актуальность научных исследований и значимости накопленных результатов разработки на базе фортрана — естественно он модифицировался, как нетрудно догадаться
Про Алгол 66 ничего не знаю — меня учили на Алголе 60, а потом был действительно канувший в лету Алгол 68
Упомянутый C популярен до сих пор см http://www.tiobe.com/tiobe-index/, как и Basic (в смысле visual)
Pakos
01.12.2016 15:31+2Первичны алгоритмы и понимание. Я могу писать на C, C++, C#, Delphi, Perl, да даже asm под пару процесоров или SQL разных модификаций или VB[A] или какой sh, но это бесполезно, если я не знаю что писать, не могу превратить ТЗ в алгоритм.
Если какому-то сертифицированному Java-программисту требуется объяснять что такое стек, то ему надо было учить не язык (и тут речь не про стек процессора, допустим, из x86-х, а про стек как концепцию).Vnuchok
13.03.2017 23:11с дисплеями телефонов и планшетов при ярком освещении не разобрались ещё… а представьте, насколько тусклой и еле видимой будет голограмма, например, летним днём?
Pakos
01.12.2016 17:17Блок-схемы? Словесное описание алгоритма? Псяк? ER-модель? Бросаться писать код — последнее дело, обычно после такого надо написанное сначала выкинуть. И только вторым этапом происходит выбор конкретного языка, а написание на нём — хорошо, если третьим.
sbnur
01.12.2016 17:22-1А словесное описание не есть ли использование языка — вы как-то узко понимаете слово язык — ясно что понимания у вас нет, так как вы даже не понимаете, что пишете на русском языке (кстати блок схемы и прочее — это просто графический язык диаграмм)
masai
01.12.2016 18:29+2Что вы будете описывать, если у вас будет только язык?
Кроме того важно различать изучение языка программирования в общем — то есть как раз алгоритмов и всего того, чем «думает» программист, — и конкретного языка программирования. Проблема в том, что место первого преподают второе. Да, без языка не выразить мысль. Да, язык программирования накладывает отпечаток на решение. Но первично решение, а не способ выражения.
Если перефразировать известную цитату Дейкстры, программирование — это настолько же наука о языках, насколько астрономия наука о телескопах.
sbnur
01.12.2016 18:34-3В каждом языке содержится своя система понятий — об этом он говорит, а о том чего нет и не говорит
batyrmastyr
02.12.2016 14:55Если хотите научить низкоуровневому программированию — книга «Построение компиляторов» дедушки Вирта на примере языка Оберон покажет как проводить синтаксический анализ, разбор конструкций, расскажет об архитектуре RISC, как надо генерировать код, организовать управление памятью включая сборку мусора.
Если для начального обучения программированию — то тот же Оберон в силу простоты (проще и логичнее Паскаля, есть модули которых нет и не будет в C и C++, легко подменяется на Компонентный Паскаль если нужно полноценное ООП) в разы лучше подходит.
А что могут дать ваши курсы по C или C++, где 30 — 100 страниц уходит на написание поискового дерева и 200 страниц на «как не выстрелить себе в ногу устаревшей адресной арифметикой и прочими причудами языка»? За что первокурсникам такой геморрой?sbnur
02.12.2016 15:38-1Не хочется вас обижать, но вы меня повеселили — мой опыт программирования простирается от начала 70-х годов прошлого века, поэтому ваши советы как-то мимо
Но, к слову, учить программированию нас начинали с простых машинных кодов в течение целого семестраbatyrmastyr
02.12.2016 16:54Так это вас целый семестр учили машинным кодам, а в моё время (13 лет назад) семестр по С++ в далеко не худшем университете ушёл как раз на очередь, стек и пяток поисковых деревьев и 80% текста методички было занято демонстрацией возможностей и дефектов языка, а не чем-то реально полезным.
sbnur
02.12.2016 19:42-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 оказались подзаброшены в эпоху бума планшетов, а конкуренты в это время не дремали и активно развивали облачную, кроссплатформенную и мобильную разработку),
но и благодаря исторической традиции, сформировавшейся, начиная с момента, когда в мир паскаля пришли те кадры, которые пришли, и далее.
Darthman
30.11.2016 15:01+5Про покупку Idera ничего не сказали, да и вообще скомканно как-то. Больше не про язык, а про непонимаю даже про что… Про назнвания?
Хоронят делфи столько, сколько я на ней пишу, тоесть более 15 лет уже.
А еще у нас на стримах очень частый вопрос — почему мы игру пишем на делфи, ведь дельфи же умер. =)sand14
30.11.2016 15:12+3А еще у нас на стримах очень частый вопрос — почему мы игру пишем на делфи, ведь дельфи же умер. =)
В Delphi очень сильная объектная модель, статическая типизация, и возможность компилировать все это в нативный код.
Устаревшие винформы или куча старых и новых технологий доступа к БД, организации многозвенности, и т.д.? — во всех средах (включая более новые) есть куча олдскульных obsolete-фреймворков.
Бинарная несовместимость с объектными моделями других языков/платформ? а где вы видели бинарную совместимость C# и Java, к примеру?
(А вызывать WinAPI и COM в Delphi можно так же, как и в C#).
Да и так ли важна эта совместимость в эпоху (микро)сервисов и REST?
Поэтому причины негативного отношения к Delphi — исторически сложившиеся, а не технически объективные.Darthman
30.11.2016 15:14Да, это понятно и мы уже даже привыкли к этим вопросам. Приходим лишь в очередной раз к тому, что инструмент роли не играет. Примерно так и отвечаем, а на C# уже поздно переходить, много слишком написано.
lgorSL
01.12.2016 16:59Бинарная несовместимость с объектными моделями других языков/платформ? а где вы видели бинарную совместимость C# и Java, к примеру?
java более-менее совместима со Scala/Kotlin/Groovy. Можно вызывать код, наследоваться от классов из другого языка и делать прочие вещи — потому что всё это компилируется в байткод. По той же причине код можно запускать на разных платформах.
Error1024
30.11.2016 16:42+4semen_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»Darthman
30.11.2016 16:46+1Делфи5, 7, 2009, XE2 думается мне были самыми знаковыми и важными в истории. Ну 2006я еще с из-за нового ИДЕ и перегрузки операторов.
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, а также Int64speakingfish
01.12.2016 00:28Cardinal был ещё с 16-битной Delphi 1. И был 16-битным беззнаковым integer. Исторически планировалось использование Cardinal как платформозависимого представления беззнакового числа. Однако сейчас скомпилировать под 16-битную платформу можно только в FPC, в котором Cardinal жёстко гвоздями прибит к 32-битному беззнаковому integer. Да и при компиляции под 64 бит в любых компиляторах Cardinal также останется без изменений — 32 битным.
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, а это вопросы производительности и т.д.)speakingfish
02.12.2016 19:46В C++ таких проблем нет — там есть size_t.
ps. Вообще с delphi уже давно всё грустно и там остаётся в основном мохнатый софт. Поэтому я год-три назад занимался миграциями с windows на linux, с x86 на ARM и с delphi на java/C++ с промежуточной остановкой на кроссплатформенном fpc/lazarus. Миграция по частям с использованием fpc позволяла не тратить время на переписывание всего и сразу.Vjatcheslav3345
08.12.2016 17:09Можно было бы в будущем стандартизировать не конкретный размер строки а требования указания размера строки в битах прямо в названии производного типа.
Но вот вопрос — когда придут квантовые компьютеры ужель не наступим ли на те же грабли, опять где нибудь жестко зафиксировав количество квантовых кубитов?
iga2iga
30.11.2016 16:47+4Люблю Delphi именно за RAD. Мне не важно на каком языке писать, хотя Pascal все равно намного ближе чем любой другой язык, он как бы человечнее что ли. Но ту скорость написания для приложения, которое нужно «уже вчера» может дать только Delphi. Очень расстраивает их политика в отношении единичных разработчиков и слово Enterprise в каждом предложении про Delphi. Delphi в первую очередь — это как раз среда для одного разработчика и не важно удовольствия ради он использует ее или для коммерческой выгоды. Дайте нормальные цены таким разработчикам, как я. Уберите всю работу с БД, если так переживаете за Enterprise, но пусть будет и мобильная разработка и разработка под все платформы. Я готов выкладывать за обновления раз в год адекватную сумму, а не такую как сейчас. Уберите богомерзкую обезьяну или замените её чем-нибудь адекватным или сделайте так чтобы она могла использовать OpenGL под виндой тоже.
azsx
02.12.2016 05:39iga2iga fpc чем не устраивает в виде lazarus? Есть всё Вами перечисленное, в том числе БД. Платформ куча, в том числе андроид или arm.
Вот про видео утверждать не буду, так как не знаю.iga2iga
10.12.2016 08:201 раз вкусив прелесть создания и отладки приложения на мобильнике пусть даже с небольшими багами (ios, android) и положа руку на сердце, могу сказать что лазарь, конечно, это отличная замена для дельфи, но все еще не то. Слишком много телодвижений он требует при мобильной разработке. Но он у меня в обязательном порядке стоит как вторая среда разработки, но я все еще не готов переходить на него окончательно.
turab_guseynov
30.11.2016 16:47В большинстве ВУЗах, СУЗах используют паскаль, Delphi+MSSQL, при этом даже не новые версии
dro1d
30.11.2016 16:47+1Про Delphi 7 ни слова, хотя она, на мой взгляд, была самой популярной версией
Senpos
30.11.2016 16:47Кроме того, отсутствует бесплатная версия Delphi даже для академического использования.
Не знаю как давно это случилось, но сейчас на сайте Embarcadero в разделе Free Tools можно бесплатно получить Delphi Starter. Наверняка там есть какие-то ограничения, которые не позволяет использовать ее на всю мощь, но для учебы она мне сгодилась и отработала отлично.Darthman
30.11.2016 16:50+3Там дофига всего нет. Я уж молчу про 64битный компилятор или что-то такое, там даже сама среда по шорткатам урезана сильно. Не сказать чтобы это было критично, но когда уже привык, туго. Скажем перемещаться между интерфейсом и реализацией по контрол+шифт+вверх можно было бы и не убирать. Нельзя научиться пользоваться средой, если обрубать такие важные шорткаты ИМХО.
Ну и для коммерческого использования она не подходит. БОлее $1000 прибыли в год — покупайте профессиональную редакцию. Таковы лицензионные соглашения.
Apatic
30.11.2016 17:32+2Спасибо за статью. Поностальгировал.
Вспомнил, сколько часов в свое время провел на Королевстве Дельфи/.
Зашел, приятно удивился, что форум довольно активен до сих пор.AdmAlexus
30.11.2016 18:55+3А я больше изучал DelphiWorld. Можно сказать это был мой первый Stack Overflow.
И там была даже офлайн версия сайта (что в диалапные времена было очень актуально, таскать с собой на флешке кучу статей по любимой IDE).Apatic
30.11.2016 18:58О, а еще когда не было у меня интернета, а в школе надо было писать какой-то проект, я ехал в Библио-глобус, искал там книги по Делфи, например Флёнова и выписывал себе нужные функции и приемы.
AdmAlexus
01.12.2016 12:30Тоже читал Фленова. Преподаватель давал PDF-ку «Delphi глазами хакера».
azsx
01.12.2016 12:37Преподаватель давал PDF-ку «Delphi глазами хакера».
Всё таки баловство это… Вот Бакнелл. «Фундаментальные алгоритмы на Delphi» — это вещь! И по БД и ООП на delphi почитать книги стоит.
mikkisse
30.11.2016 20:52+2Delphi World это вообще очень замечательная вещь. Сколько полезного можно было оттуда почерпнуть. Целых 5000 статей :)
Source
01.12.2016 00:07Ещё была классная подборка материала — Delphi Russian Knowledge Base. Помню, как я в интернет-центре целый час скачивал её… хотя она весила всего 3 Mb :-D
Зато потом дома можно было без интернета изучать интересный материал.
Hint
01.12.2016 00:31+2Я еще на диалапе сидел на delphi.mastak.ru (сейчас delphimaster.ru). Замечательное было комьюнити, огромное число профессионалов.
stas404
02.12.2016 06:11+1Да, замечательное было времечко, действительно очень дружные были ребята, а материалы на обозначенных сайтах были просто бесценны.
Еще Delphi у меня ассоциируется с библиотекой KOL — помню, как нравилось смотреть после компиляции на размер программы, который при использовании этой библиотеки был раз в 10-20 меньше по сравнению с использованием стандартных. Вроде бы, что-то около пары килобайт пустая форма весила.
Аж прослезился )
GeMir
30.11.2016 19:34Delphi в начале двухтысячных ещё весьма широко использовался на уроках информатики в немецких гимназиях. Сейчас почти все перешли на Java (Greenfoot, BlueJ).
QtRoS
30.11.2016 22:44Простой пример из жизни — Mail AI Cup, среди доступных инструментариев и языковых пакетов есть Pascal. Еще ни одной стратегии на нем не увидел… Ни одной… Лично пролистал топ 1000. Да, можно контраргументировать меня тем, что люди, которые программируют на делфи уже не интересуются этим, но если молодежи не интересен паскаль (и делфи), то какое у него будущее?
stepanp
30.11.2016 23:09+4Очень жаль что по скорости разработки интерфейсов до Delphi из современных технологий никто так и не допрыгнул. В моду вошла верстка, и теперь приходится руками верстать то что в дельфях еще 20 лет назад можно было накликать мышкой за 5 минут. И это подается как прогрессивность и развитие. Особенно яркий пример Qt с его переходом с виджетов на qml.
Idot
13.03.2017 14:12туман создается не просто каплями воды, а каплями специального вещества
И как оно при попадании в лёгкие? Вода всё таки была бы безопаснее.
Idot
01.12.2016 07:40Почему в статье ни слова о том, что в первой версии был отличный встроенный интерактивный туториал?
То есть сам Delphi рассказывал, то как его использовать, как подключиться к базе и т.п.
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 лет, ни разу туда не возвращался. Ностальгирую, когда читаю такие статьи. И задаюсь одним и тем же вопросом — ну как можно было так все слить. Теперь же, я лично просто не представляю, чтобы заставило вернуться всех бывших разработчиков этой среды обратно. Просто остался такой осадочек ужаса, что потрачено несколько лет жизни на разработку на этом стеке технологий, весьма и весьма неплохом, а местами — революционном даже, и в итоге большая часть этого опыта просто обнулилась.OksikOneC
01.12.2016 16:58Хотелось бы у ныне живущих дельфистов спросить, кто использовал MDA в своей работе: вроде бы бывшие сотрудники BoldSoft, которых купила Borland, потом опять от них ушли? А сама MDA полностью перестала поддерживаться, и существовал лишь порт под Dephi 2007? Насколько я понимаю, следующей вехой в развитии дельфийских ORM, стал ECO. Но судя по официальной конференции там как-то совсем грустно. Единственное, что активно, и вроде бы живо, так это InstantObjects, но как на самом деле дела обстоят — не понятно. Может те, кто в курсе, пояснит — вообще как сейчас с ORM в дельфях? Что актуально, что модно, что на слуху?
safinaskar
04.12.2016 01:40Изначальный Pascal, по мнению его разработчиков, имел самый быстрый компилятор в мире. Более того, вместе с ним была впервые разработана технология создания платформенно-независимых программ, которая нашла широкое применение в таком языке, как Java.
Однако его IDE, если это понятие можно применить к среде разработки того времени, функционировала только на базе операционной системы DOS.В этих двух абзацах вы перепутали всё на свете. Такое чувство, что по-быстрому вычитали где-то разрозненные факты и попытались запихать их в два абзаца. Не вышло.
Давайте разбираться.
Изначальный Pascal, по мнению его разработчиков, имел самый быстрый компилятор в мире
Какой именно компилятор здесь имеется в виду? Из фразы выходит, что вроде как первый компилятор Pascal. Раз вы говорите "изначальный Pascal", значит, получается, первый компилятор Pascal. Но раз он первый, то его разработчикам сравнить-то его было не с чем. :) Как же тогда его разработчики могли утверждать, что он самый быстрый? :)
Более того, вместе с ним была впервые разработана технология создания платформенно-независимых программ, которая нашла широкое применение в таком языке, как Java.
Однако его IDE, если это понятие можно применить к среде разработки того времени, функционировала только на базе операционной системы DOS.Угу. Вот только технология создания платформенно-независимых программ (ну или, может быть, идея таких программ) была придумана Виртом (ну или в команде Вирта). А вот упоминаемый далее IDE был от Turbo Pascal. А вы всё смешали в кучу. Оставив читателя недоумевать, мол, а раз придумана мультиплатформенная технология, зачем тогда только для DOS?
И это я только начал читать вашу статью, не знаю сколько там ещё дальше ляпов. В общем, относитесь лучше к качеству статей. Я вижу у вас уже целая серия статей про историю языков программирования, небось собираетесь ещё несколько штук статей про них написать. Так вот, внимательнее пишите, не допускайте таких ляпов.
masai
04.12.2016 14:34Как же тогда его разработчики могли утверждать, что он самый быстрый? :)
Очевидно, речь идет о скорости компиляции эквивалентных программ на разных языках. Не уверен, правда, так ли это.
Насчет DOS вы правы — ETH Pascal работал на CDC-6000.
Diaskhan
В конце стоило бы добавить C# с сервером веб приложений ))
Какой же молодчик Андерс Хейлсберг Обьединил очень много языков и создал C#
KvanTTT
А потом и TypeScript.
masai
Все же Аннерс, раз уж он датчанин. Хоть имя и пишется через d.