Pascal
Материал из Lurkmore
Эта статья должна быть до- или даже полностью переписана. Перед вами — очередная безблагодатная статья. Сия халтура нам не нравится, и только вера в светлое будущее удерживает её на этом свете. На странице обсуждения могут быть подробности. |
Так верстают только мудаки. Эта страница так же ужасна, как и вышеприведенный заголовок. От верстки этой страницы Тема Татьянович Лебедев плачет кровавыми слезами и неудержимо фалломорфирует. Ее следует немедленно привести в кошерный вид согласно гæдлайнам или вёрстке. |
A long time ago, in a galaxy far, far away... События и явления, описанные в этой статье, были давно, и помнит о них разве что пара-другая олдфагов. Но Анонимус не забывает! |
Я нихуя не понял! В этой статье слишком много мусора, что затрудняет её понимание. Данный текст необходимо очистить, |
« |
- Как зовут Паскаля? - Эм… Турбо? | » |
— Анонимус |
Pascal (Паскаль, Пасраль, Пасцал, Пасквиль, Паскакаль, Поцкаль, Трубопаскаль, Трубопоскакаль (устар.), Труба (устар.)) — язык программирования, созданный в 70-х годах прошлого века известным Никлаусом Виртом, чтобы невозбранно дисциплинировать школьников и ступидентов, но позже ВНЕЗАПНО обнаружилось, что сей учебный язык может быть пригоден для написания реальных программ. Когда-то имел весьма солидную популярность, но сейчас ее подрастерял, сохранившись в основном в виде Delphi. Язык невозбранно привлекает возможностью писать почти как на обычном английском языке, а не ломать пальцы о низкоуровневые указатели, фигурные кракозябры, а также прочие извращенные приёмы, принятые в C-подобных языках.
Содержание |
[править] Borland
[править] Что такое было Borland?
В начале 80-х годов прошлого века Филип Канн (Philip Kann) —— математик и саксофонист, основал компанию «Borland». Известно также, что он был учеником Николауса Вирта [1].
«Borland» стал популярным на рынке программного обеспечения именно благодаря своим Turbo-версиям компиляторов языков программирования, выпускаемых для широких масс населения в те годы. А первым компилятором, который они сделали, стал компилятор языка «Turbo Pascal».
Компилятор с языка «Паскаль» в ранних версиях представлял собой диалект на базе UCSD Pascal, использовавшегося в основном на яблоках. Однако, в Turbo Pascal были введены такие расширения, которые позволяли его признать языком системного программирования, наряду с параллельно развивающимся языком «С» (например, передача нетипизированных указателей в функцию, свободное приведение типов, модификатор «absolute», директива «interrupt», ассемблерные вставки и пр). Однако, несмотря на популярность, Паскалю не суждено было стать языком системного программирования. Подробный разбор недостатков паскаля времени можно узреть тут. Это правда слабоактуальный даже на момент выпуска статьи бред из конца 70-х, но все равно кагбе намекает. Вирт по выходу сего сборника пытался вяло отгавкиваться, что он де сторонник идеи о том, что для каждой задачи необходим свой инструмент, и что Паскаль разрабатывался только как учебный продукт и ни для чего более использоваться не должен, но никого не убедил. А потом и вовсе запилил Модулу-2, оказавшуюся таким хтоническим пиздецом, что он аж сам испугался, и, узрев свет энтерпрайза, ушёл писать сборщик мусора для жабки.
Одним из самых удачных решений «Borland» было объединение в одной программе (помимо самой оболочки) редактора кода, компилятора, отладчика и доступа к интерпретатору командной строки ОС (то есть они изобрели всё то, что теперь называется IDE). Кодер мог запускать свою программу непосредственно из среды разработки — это было первое пришествие RAD. Была также возможность компилировать программы в ОЗУ и исполнять (и, главное, отлаживать) их оттуда, а не с диска (в те годы многие пользователи загружались с дискет (НГМД), и подобная отладка через «память» заметно увеличивала скорость работы). Правда, придумано это было не впервые, ибо отладчиком кода в памяти невозбранно пользовались ещё на ТХ-0 и PDP-1, когда для них были только Ассемблер, Фортран и Лисп, и не было никаких дискет. Одни перфоленты, да. Но главное не в этом, там отладчик не был отдельным приложением, как тот же FLIT для упомянутого ТХ-0, поэтому тут у Borland win.
С выходом Turbo Pascal 4, всё программерское сообщество увидело пример построения интерфейса user-friendly программы, который до сих пор остается практически без изменений, а именно: Верхняя строка — меню (menu bar). Ниже — рабочая область — у них там был только редактор. Позже, там стали размещать другие окна, а с эпохой Windows вошёл в применение «docking» — стиль расположения окон в этой (и любой другой) области. Нижняя строка — строка статуса (status bar, в компиляторах «Borland» там была контекстная подсказка по горячим клавишам). Собственно, сам интерфейс и концепция интерфейсных примитив были позаимствованы у IBM CAA/SAA, которые в свою очередь сперли их из HIG, которые разработаны и запатентованы Apple, которые она, в свою очередь, спиздила у Xerox.
Начиная с версии 5.0 у среды радикально сменился диалект. Сохраняя изрядное влияние UCSD-Pascal и все введённые в ранних версиях низкоуровневые плюшки, в основе своей она перешла на разработанный в Apple Object Pascal, чем и послужила его широчайшей популяризации. Тот факт, что под названием Pascal в настоящее время понимается именно Object Pascal, и именно на нём основывается общепринятый стандарт языка — заслуга в первую очередь Borland и трупопоскакаля.
В версии 6.0 среда переписана на Turbo Vision (впрочем, лишь невозбранно спизженном с Mac-ов тех времен). Но те, кому доставляла лишь алгоритмическая часть их задач (то есть школота), а не новомодные понты Turbo Vision (смысл которых они понять не могли в силу слишком юного возраста), как только могли, старались продолжать пользоваться версией 5.0 и даже 3.0. Даже не смотря на тру защищенный режим, появившийся в BP 7.0, и возможность программировать под Форточки 3.11 там-же. Версия 7.0 получила также IDE под Win3.x и, кстати сказать, была первой, где отошли от программирования приложений под Виндус посредством функции Winmain и предложив объектный подход в создании приложений — OWL.
Параллельно «Borland» пыталась выпускать подобные программы-компиляторы для C, Prolog и BASIC. Первым склеил ласты Пролог, потом Филю замучила совесть — выпилил Бейсик (просуществовал до трубо-паскаля 4.0, присутствовал бинарный, в формат EXE, компилятор). Turbo C — представлял собой, на то время, вполне вменяемый скоростной компилятор (в отличие от мелкомягких поделок), но получив в нагрузку два плюса и Трубо Вижен (TV) — потихоньку скурвился.
Скурвился, впрочем, лишь по мнению тех, у кого от неприятия гениального, по тем временам, Turbo Vision наступило окончательное окукливание ФГМ: им казалось, что мелкомягкие стали единственными евангелистами Цэ, во вселенной ДОСа и и даже винDOSа. На самом деле Borland C++ невозбранно имел развитие и в Windows 3.11 (ололол, да да, тот самый легендарный OWL, просто все кто его знал, уже уехали в Лондон), и потом заново выкуклился в весьма популярной в отдельных кругах серии Borland C++ Builder (есть мнение, что лучше бы и не выкукливался), в результате чего на плюсах тоже можно стало кодить мышкой, как в Delphi. Количество быдлокодеров сильно возросло, отправив плюсы в быдлокодерские языки. Правда до тру оптимизации руки у борманов уже так и не дошли, а потом команда и вовсе ушла пилить бюджет, выделенный Бени Гейком под свой мерзкий .NET, гибрид идей визуалбейсика, Delphi и Java в одном лице. Алсо, Borland Builder до сих пор не поддерживает стандарт С++98 (который, в общем-то, полностью почти никто и не поддерживает).
Но то было уже потом. А пока в средине 90-х годов фирма поменяла политику, хитрожопо сменив ориентацию на выпуск фирменной RAD для объектного Pascal-диалекта, спёртого ими у яблока, под ОС Windows — Object Pascal. Тем самым она стала раскручивать продукт под названием «Delphi», и, надо сказать, настолько преуспела, что Бени Гейц впоследствии выкупил команду гениальных разработчиков вместе с их домиками на колесах, чуть более, чем целиком и насовсем. Стоит, впрочем, заметить, что переход на Object Pascal случился ещё в ДОС-эру и ничего, кроме охуевания школоты от Turbo Vision, не вызвал. Скатывание среды в сраное говно началось именно в Дельфях с появлением там возможности «кодить мышкой».
[править] Почему Pascal стал популярен?
В 80-е и 90-е годы прошлого века, в связи с развитием технологий появлением большого числа ленивых кодеров, DOS-программисты желают послать нахуй ассемблер.
В то же самое время, фирмы «Microsoft», «Intel» и «IBM» (i.e. ZOG) проектируют концепт под названием «PC» (писюк), позднее «PS/2», а позднее и вовсе Wintel, и даже выпускают все это (вызывая приступы самоубиения об стены у юниксоидов и не только). Дешевые настольные компьютеры, очевидно, производят промышленную революцию. Теперь пользователем компьютера может стать практически любой человек, а не только нерд в очках. Выпускаемые персоналки имеют спрос среди колхозников, и такой же спрос существует на быдлопрограммистов, готовых говнокодировать под эту платформу. Основное требование к ним — говнокодить быстро и много. Правда, КО намекает, что дешёвые доступные настольные 8-ми битные компьютеры появились гораздо раньше писюков, еще в 75 году, и под них клепали интерпретаторы Basic, на чём поднялся дядюшка Билли из Мелкомягкого.
про Delay() |
---|
Тот самый «Runtime error 200» при запуске программы на машинах старше 386-х, заставлявший срать кирпичами пользователей. Но джедаям было эквипенисуально — они знали, какие 5 байт EXE-файла надо было слегка поправить. Ошибка заключалась в секции инициализации стандартного модуля CRT во время попытки вычисления миллисекундных пауз в тиках процессора. С одной стороны в DOSе этого sleep'a не было, с другой — производители железа (советского в том числе) особенно не заморачивались аппаратной реализацией таймера (хотя вектор 15h для часов и таймера и был заточен (вот только появился он, лишь начиная с биосов для PC-AT, а программы нужно было запускать и на XT)). Хотели сделать универсально — получился фейл. |
Вот тут-то «Borland» и подсуетился. Но компилятор «TP» был-таки выпущен для этой набирающей обороты платформы. И «TP» по возможностям написания кода для процессоров x86 не уступал языку «С», а за счёт поддержки объектов (а также автоматической работы с памятью), даже превосходил. Но ограничение на максимальный размер массива в 64к и безумная реализация функции Delay вызывала повышение ЧСВ у СИонистов. Устранено было только в ТП 7.01.
В результате, в то время:
- Вакантные места программистов для писюков захватывает мафия бывших студентов Вирта (ну им так казалось, на самом деле там было все схвачено вплоть до конца XX-го века ушлыми клипперистами, фокспрошниками и дибейзниками, да да). Но паскалисты (студенты) пишут программы (лабораторные) быстро, решительно, и безошибочно (ибо, среда прерывает компиляцию при любой попытке написать явно школьный код).
- Даже реально тру программисты на «C» делают в это время фатальные ошибки, постоянно забывая, что в этом их языке символ «*» обозначает, в зависимости от контекста, четыре совершенно разные операции (вообще, ошибкам при программировании на «С» посвящён целый раздел в Википедии, из-за чего сессия сдается не вовремя, девки не дают, и все такое разное, ну вы понимаете. Правда, это всё дескать более от ФГМ недокодеров, ибо там чётко написано, что программировать нужно уметь (но мы то знаем!).
- А тем временем GW/Quick/Visual BASIC массово начинают преподавать в школах как язык дрессировки обезьян программированию. И, что характерно и удивительно, обезьяны крайне успешно дрессируются, при всех мыслимых нарушениях азов программирования обычные пользователи, вооруженные VB6, Access и макросами Excel (не говоря уже про FoxPro) до сих пор порой показывают чудеса в написании полезных для бузинеса программ учета товара на складе и не только (но это уже из другой оперы). А программисты на Паcкале, не имея тогда толком возможности ходить в базы данных (чтоб «искаропки»), лишь тупо пялились на свой Turbo Vision; хотя и существовали вполне себе сетевые btrieve и Paradox Engine, масса DBF engines в виде сторонних библиотек (некоторые даже с поддержками индексов и крутых наворотов), но всякие эти ваши гриды и биндинги визуальных контролов еще не были придуманы, и далеко не каждый мог придумать подобное сам. Более-менее поправил эту ситуацию Delphi — там уже появилась полностью нативная поддержка BDE (DBase/Paradox/InterBase/FireBird/Oracle/DB2, впоследствии ADO (Oracle/MSSQL/Access/…) и т. д.
[править] «Привет, мир!»
begin
WriteLn('Hello world!')
end.
Program можно не писать. Всё, кроме глобальных begin и end, необязательно, я гарантирую это! Но не мешало бы во избежание, хотя кому оно там нужно? Дабы избежать рефосрач, анонимус может авторитетно заявить, что вышеприведённый исходник компилируется на Delphi 7, Turbo Pascal 7. При этом компилируется вариант с точкой с запятой после writeln, и точно также и в Delphi и Turbo Pascal.
begin
if true then
begin
WriteLn('Hello world!')
end
end.
Точно также и этот сырец компилируется и в Delphi и Паскале с любым сочетанием точек с запятой после writeln и первого end. Капитан Очевидность: точка с запятой в Поцкалевой грамматике играет роль разделителя; когда разделять нечего, она отделяет пустой оператор.
[править] Появления Borland Delphi
Но с выходом Windows (чуть менее, чем через пять лет после), «Borland» решил таки поддержать своих фанатов, особенно база данных строителей (ибо от фокса можно было только сами знаете что). На любое новое технологическое введение Microsoft (VBX, ODBC, ADO, ActiveX, COM, .NET фейл), среда разработки Delphi и тогда, и сейчас отвечает полной (иногда бездумной) поддержкой всей этой неведомой хуйни.[править] Фейлы Delphi
- «Тупорылый» оптимизатор — правда, в винде и c наплывом этих ваших пентиумов и кордвадуо кодеры оптимизаторами уже не сильно заморачивались — ибо редкий пользователь заметит разницу реакции программы на клик мышки между 0.1 сек и 0.01 сек, вот честно.
- Якобы «тупорылый» компоновщик — минимальное оконное приложение, сделанное на основе стандартных компонентов, весило ненормально много для привыкших к минимализму системщиков (около 300 кб). Причина была в том, что Delphi линкует в приложение ресурсы, не слишком утруждая себя анализом их необходимости. Ну и VCL достаточно тяжела сама по себе. Алсо, вправив Delphi мозги (ну или рисуя окна непосредственно через функции WinAPI), можно заполучить более компактные экзешники. Особенно в этом деле помогает библиотека KOL, с помощью которой можно писать оконные программы весом в несколько десятков килобайт. То есть дело вовсе не в компоновщике, а в библиотеках. Так или иначе — в наше время все это выглядит особенно ржачно, когда внезапно замечаешь, что системный mspaint.exe (наследник pbrush.exe) в Windows 7 весит уже порядка 6376960 байт, а системная библиотека .NET (или Java), будучи скомпилированной и сжатой — весит не менее 20 мегабайт.
- Настоящий фейл был связан с написанием софтинок с кнопочками. Дело в том, что аж до 2008 года (когда вышла Delphi 2009) родная библиотека VCL весьма хреново поддерживала Юникод, что делало локализацию приложений под все возможные языки (в смысле чтоб одновременно все сразу в одной запущенной программе) несколько затруднительной (хотя если язык в момент времени предполагался только один, который системный, то было глубоко пофиг, ибо даже китайский там весьма и весьма неплохо работал). В принципе, еще в 2001-м в эта проблема решалась чуть более, чем полностью сторонними наборами стандартных компонент с поддержкой Юникода, например tntunicode, а начиная с версии Delphi 2009 — решена раз и навсегда сама по себе, «из коробки», но многие кодеры и тогда, и даже сейчас — смутно это знают и понимают
- Асло, фейл на настоящий момент в том, что Delphi пока не осилил платформы, отличные от Windows (x86 и x86-64 поддерживаются нативно, а вот ARM — с привлечением w:FPC, ебаный стыд). Истинные красноглазики вместе с FreePascal, CrossKylix, Delphi Prism могут лабать говнософт и для для других платформ без выебонов вечно недоделанного Qt и убогого SWING.
- Kylix был неплохим начинанием, однако выпилен [по слухам] в угоду микрософту в обмен на .NET-ништяки. Но не смотря на это, скомпилированные в Kylix 3 (или CrossKylix) бинарники вполне неиллюзорно могут работать под CentOS 5.5, OpenSuSE 11 и даже Ubuntu 10.04 LTS — просто редкий школьник способен обнаружить данный факт.
- После рилза Delphi XE в 2011 году, по официальным заявлениям Embarcadero на одной из конференций, снова добавится поддержка Linux, допилят родной компилятор для ARM, и сварганят прочие плюшки на зло этим вашим VS. Однако пока это лишь обещания, да будет превентивно записано в фэйлы.
[править] Что же есть Delphi?
Педивикия о Delphi:
Delphi (по-русски обычно произносят [бо́рланд дэ́льфи] или [бо́рланд дэ́лфи]) — это интегрированная среда разработки ПО фирмы Borland. Delphi является средой RAD (от англ. rapid application development — быстрая разработка приложений).
В 1986 году фирма Apple разработала объектное расширение языка Паскаль, получив в результате Object Pascal. В 1989 году аналогичные объектные средства были добавлены фирмой Borland в систему Turbo Pascal (языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны). Последующие версии Turbo Pascal, который стал затем называться Borland Pascal, дополняли объектное расширение новыми средствами, этот процесс продолжился и в ходе развития языка системы Delphi. Название языка менялось: от Pascal, через Object Pascal до Delphi, в литературе встречалось название Delphi Pascal, в последних версиях Delphi язык именуется так же, как и сама система (любопытный момент: в Delphi 7 пункт системного меню, запускающий справку по языку, как и в более ранних версиях, называется «Object Pascal Reference», а сам запускаемый им модуль помощи имеет заголовок «Delphi Language Manual», в тексте язык также везде называется «Delphi». Автор же языка — расовый швейцар Мыкола Вирт — заявляет, что язык, используемый в Delphi — это Delphi (всегда ваш, К. О.), а не изобретённый им Паскаль. Система типов этого языка включает в себя ссылочные типы, выраженные словом class, и типы-значения, именуемые «записями» (record). Отличие таких типов состоит в том, что, объявляя экземпляр ссылочного типа, вы получаете ссылку на объект в куче, для инициализации которой необходимо явно вызвать конструктор, имеющий вид статического метода с названием Create(), в случае со записями получаем экземпляр, созданный на стеке, либо внедрённого в экземпляр класса, если речь идёт о полях значащего типа. Чуть менее, чем полное незнание предмета порождает среди школоты мифы о «двух моделях ООП», поддерживаемых Delphi, и срачи на тему object vs class. Анон, запомни: Delphi — статически типизированный язык, ни о каких различных моделях ООП касательно этого языка речи быть не может.
[править] Free Pascal
Существует также весьма и весьма православный компилятор Pascal. Поддерживает все возможные диалекты, но с видимым уклоном в сторону подражания Borland. В нем даже есть свой клон Turbo Vision. В процессе развития в него запилили порты библиотек и возможность компиляции кода написаного для Delphi, gpc, hp/ux, МАКовских и ИСОшных стандартов паскаля и вообще всего, что Pascal хотя бы отдаленно напоминает. Также, в отличие от своего старшего собрата, прибитого гвоздями к x86, реально является кроссплатформенным и посему винрарен чуть более, чем полностью. А ещё есть IDE Lazarus, внешне похожее на Delphi, в которое даже можно импортировать некоторые сторонние компоненты для той самой Delphi (ну и встроенные VCL клоны тоже многие уже переписаны, при том реально работают и под Linux и под Maс OS X, ну и под винду — ясен пончик). Правда, крайне тупой анон жалуется на размер получаемых им экзешников — дескать гигантский даже в сравнении с Delphi, не зная про нужные ключики[1].
Применение на практике сего продукта требует готовности к борьбе с сиюминутным недоделками типа несоответствия прототипов библиотечным функциям или полному отсутствию оных в стандартных модулях. Однако при должной осторожности, если не наступишь на мину, можно получить годный бинарник, который будет работать под всеми линуксами вне зависимости от версий этих ваших libc.
[править] PascalABC
Также была разработана действительно труъ (только для обучения) версия Паскалю — PascalABC и PascalABC.Net. Хотя бы встроенный задачник стоит того, чтобы взглянуть эту систему. [ЩИТО?]
[править] Virtual Pascal
В довершение, нельзя не отметить еще один вполне годный компилятор — Virtual Pascal. Представляет из себя 32-битный компилятор с заявкой на кросплатформенность. Имеет встроенную IDE с подробной помощью и отладчик. Может создавать исполнимый код для операционных систем OS/2, Win32 и ограниченной поддержкой линукс через костыли, навроде EMX. Впрочем для линупса никто на нем не писал, а вот для олдфажной OS/2 вполне кодили, пока в Free Pascal глюк на глюке сидел и глюком погонял. Раньше был платный, ныне бесплатен и доступен для свободного скачивания. Увы, проект заброшен с 2005 года. Поговаривают, что он написан чуть менее чем полностью на ассемблере, из-за чего поддержка кода адово затрудненна. Исходники закрыты. С другой стороны, можно сказать, что Virtual Pascal является законченной программой. Реализована полная совместимость с языками Turbo Pascal (v7.0), Borland Delphi (v2.0) и Free Pascal (v1.0.x). Почему именно Virtual Pascal? Размер создаваемого кода — вот главная фишка компилятора. Так, например, консольная программа, выводящая Hello World, скомпилированная Virtual Pascal v 2.1 занимает 11,776 байт. Та-же программа скомпилированная Free Pascal v2.4.0 — 31,548 байт. Delphi v7.0 — 15,350 . С оптимизацией тоже дела обстоят не плохо, иногда получается быстрее Free Pascal. Знакомый всем с детства IDE также доставляет (хотя она-же давно есть и во Freee Pascal).
[править] MIDlet Pascal
Это ещё один занятный компилятор Pascal. Позволяет создавать программы для мобильников под Java ME, причём компилирует сразу с Паскаля в жаба-байткод. Тормозной (впрочем, небольшие программы компилирует довольно быстро, а вот по-настоящему сложные проекты компилит минут по десять, чем эпично сливает NetBeans) и не слишком удобный инструмент для создания приложений и игр для мобилы. Распространяется и работает бесплатно. Имеет бешеную популярность среди школоты, которая только недавно учила Паскаль в школе на информатике, а тут вдруг выяснилось, что на данном языке можно писать и что-то более востребованное для рынка. Увы, из-за отсутствия прямых рук и передней головы неспособны овладеть даже таким элементарным языком и занимаются только тем, что просят помощи у более продвинутых товарищей на одном широко известном в узких кругах форуме. Кроме того, МР имеет возможность подключения библиотек на Java, что более чем актуально, ибо сам по себе язык скуден.
[править] Достоинства языка Паскаль
- Использование вполне понятных английских слов begin, end, or, and, not вместо фигурных скобок и закорючек.
- Строгая типизация — защита от досадной возможности вступить в компост в парадном, выстрелить себе в ногу при этом и от прочих видов мазохизма, так любимых писателями на C/С++. Ну и от дураков алсо (хотя от них помогает обычно плохо, но хоть как-то).
- Элементы массива можно нумеровать начиная хоть с нуля, хоть с единицы, хоть даже с тысячи (а не только с нуля)
- Наличие компиляторов под большинство ОСей — кроссплатформенность. Delphi этого достоинства пока не перенял, но намерение имеет. Был, правда, некий Kylix, но на нём было написано не слишком много известных проектов (хотя, что поразительно, скомпилированные на нем приложения вполне себе могут работать под любыми современными Linux). Ну и Lazarus, конечно (который может компилировать практически под все, что шевелится, и даже под то, что давно уже не живо — см. OS/2 и BeOS).
- Возможность прямой работы с памятью практически полностью приближает Pascal к С/C++.
- Внятные языковые конструкции, то есть «*» — это «умножить», а не «умножить, указатель, разыменовывание указателя, указатель на функцию возврашающую указатель, или вообще поди пойми чего там в C++ перегружено etc». Также в Паскале отсутствуют знаменитые инкременты ++i + ++i(хотя есть аналог в виде процедуры inc()), ввиду чего программер больше времени посвящает собственно решению задачи, а не выносу мозга себе и остальным вида «почему 13, а не 14» или «почему 14, а не 13» (нужное подчеркнуть) — в этом языке напрочь отсутствуют операторы, способные изменять значения переменных внутри выражений, что более чем разумно, а случаев неопределённого поведения нет вовсе.
- Благодаря полной поддержке ООП в паскале (а точнее в некоторых его потомках, да и не полная), можно создать мутанта Процедурного Программирование и Объектно-Ориентированного Программирования. Некоторые языки нервно курят в сторонке.
- Таки язык программирования промышленных контроллеров (ПЛК) - язык ST основан на Паскале и учившему Паскаль освоить его зело легко.
[править] Достоинства формочек Delphi
- Быстрая компиляция по сравнению с любой IDE с C++ — проект на Delphi в миллион строк компилируется и собирается за секунды, тогда как C++ ники обычно тоскливо втыкают в процесс сборки минутами
- Намного более читабельный и даже более лаконичный код, не смотря на чуть более громоздкие ключевые слова языка (достаточно посмотреть на любой код на C++, написанный с использованием MFC, Qt, GTK+, c аналогичным на VCL, чтобы понять истинность данного утверждения) (хотя, в принципе, лаконичность исходников наблюдается только потому, что большая часть функционала уже вшита в родные или купленные сторонние компоненты (однако если даже посмотреть на один и тот-же код, просто написанный на C++ и Pascal, к примеру реализацию yacc, то миф о какой-то особой лаконичности C++ также теряет практический смысл). А стоит попробовать изобрести велосипед, чем обычно занимаются С++ ники (у которых обычно нет компонент и вообще библиотеки недоразвиты, да и использовать чужой код не позволяет ЧСВ), и размер папочки с проектом также начинает невообразно расти. Но вот читабельностью кода Pascal, да, изначально принципиально превосходит Си, ибо на Си накодить «чёрную магию в одну строку, которая непонятно почему работает», гораздо проще (по этой причине даже случился эпичный фейл с переписыванием 7zip под Delphi, когда быдлокодер-портировщик ниасилил код на C++, и реализовал ее по-своему, неоптимизированно, из-за чего в бенчмарках код 7zip, скомпилированный на Delphi — стал проигрывать аналогичному на C++ где-то в раза два-три, правда лень уже искать места с обсуждением этого факта, выловленного профилировщиком).
- В Delphi есть уже готовые и весьма разнообразные средства работы с БД (всякие там ADO, FIB+, ODAC и прочие AnyDAC, за которые нужно выложить приличную сумму), до которых C++нутым еще фапать и фапать (и которые типовому С+±ку в голову вообще не придет использовать в повседневной работе — он сразу-же начнет свои писать, особо
оптимизированныевелосипедные, затратив сразу своего времени на сумму, раз в двадцать превышающую стоимость какого-нибудь AnyDAC, а потом потратив еще по столько-же раз десять, но уже в последующие лет пять исправлений постоянных глюков своего чудного велосипеда, вместо того, чтобы делом заниматься). В результате, пока красноглазики на C++ сидят со своим говнокодом, дельфикодеры обычно сидят уже с гешефтом, правда небольшим, но уже! - Благодаря действительно неплохому (за некоторыми исключениями) редактору форм в Delphi, ровно как и в Borland C++ Builder, можно легко (Use help, Luke!) и быстро наклепать как-то работающий прототип, под пристальным взглядом начальства, без всякого соблюдения минимально разумных правил ООП — просто из собственной лени (однако, открывать такой проект через полгода-год второй раз не захочется). Однако, это и сыграло с продуктом злую шутку (и привлекло over 9000 безруких щкодников) — вместо изучения основ программирования, принципов ООП быдло обычно быстро учится программировать мышкой — клепать элементы управления, втыкать им нужные свойства и писать «код» в обработчики Button1Click, но не более, справедливо аргументируя «А зачем, если и так все работает?»).
[править] Сперва добейся
Тем не менее, на Delphi написано множество кошерных и православных программ, наиболее известные:
- Total Commander (а то!)
- Skype для Windows (только интерфейс)
- Delphi IDE — (от Delphi 1 до Delphi XE, а также все студии под Builder, Rad Studio и даже какие-то ранние версии JBuilder)
- PL/SQL Developer
- TOAD
- PartitionMagic
- PHPEdit
- BS Player
- Inno Setup
- Macromedia Captivate
- Macromedia HomeSite
- AdAware
- FL Studio (ex-Fruity Loops)
- Age of Wonders
- Doom: The Roguelike
- TuneUp Utilities
- Auslogics Disk Defrag (и все их продукты)
- Webroot Spy Sweeper
- Scanner
- Space Rangers 2 (игра 2004)
- Space Empires 4,5 (игра 2000)
- AIMP2 (и AIMP3 же!)
- FastStone Image Viewer
- Spybot — Search & Destroy
- The KMPlayer (не тот w:KMPlayer, который для KDE, а другой, по некоторым данным, нарушающий GPL)
- PE Explorer
- Resource Hacker
- SASPlanet
- тысячи их!
- Ну и да, ненавистный всем QIP. Который, вообще-то, был вполне себе кошерной программкой, прежде чем его автор связался с РБК и скатил проект в сраное говно.
Во избежание срачей следует заметить: вышеприведенный список нужен не для демонстрации превосходства над другими языками, а чтобы показать, что сам по себе Паскаль (и даже его реализация — Delphi) вполне кошерен и годен к использованию.
[править] Недостатки языка Pascal
- Сравнительно громоздкие конструкции языка. Использование длинных английских слов begin и end вместо фигурных скобок. Недостаток при чтении в блокноте, где они сливаются в кучу. В IDE они обычно выделяются шрифтом, и ни у кого проблем не вызывают, кроме тех, кто привык к C-подобным языкам — их мозг упорно пытается воспринять их как названия функций/операторов/объектов. Их дольше набирать (5 и 3 байта вместо двух). Они не создают подсознательного впечатления графических элементов. Что особенно не доставляет, когда begin/end вкладываются друг в друга 3 и более раза — от обилия begin’ов появляется лёгкое головокружение и для любителя С++ код становится неудобочитаемым. (Use code formatting, Luke!) То же самое касается логических и двоичных операторов.
- Статическая типизация — защита от явно ненормальных программистов. Хотя, использование move(..) и явное приведение типов позволяет присвоить что угодно чему угодно (впрочем, во многих языках точно так-же, кроме некоторых особо извращенных с динамической типизацией).
- Слишком низкий порог вхождения, что порождает любовь школьников, студентов, преподов и просто случайных прохожих к этому языку. Однако после небольшого анализа рынка труда оные обычно дружно идут заново осваивать 1С, C# или Java (на самом деле — учиться программировать хоть как-нибудь и что-нибудь полезное), порождая кучи ненависти к Delphi лично и громогласно потрясая «мнением», что Delphi дескать мертв и буржуи на нем, дескать, вообще ничего не пишут, и вакансий и в РФ нет в частности [2].
- Непродуманная система разделения описательной части и реализации. Ни в одном другом языке, кроме C/C++, где это якобы исторически оправдано поставкой header- и obj- файлов без исходников (отметим, что понятие «без исходников» для сообщества Delphi изначально является малоадекватным бредом — все, даже купленные компоненты обычно поставляются с исходными кодами, хотя в мире Java, C# и C++ все с точностью до наоборот. Делфинисты же раздельное описание это оправдывают практической ненужностью JavaDoc тегов (хотя у них есть всякие эти ваши DelphiDoc) и ненужностью фолдинга в их любимом редакторе (то есть отдельное описание — это на самом деле уже такой способ документации интерфейса модуля, о чем любители Javadoc обычно даже и не догадываются. Во всех других таки нормальных средах/языках пишут сразу заголовок метода с модификаторами доступа, его тело и окончание — пользуясь при этом костылями
современными средствами— doc-тегами (и для документации, и для интеллисенса!) или фолдингом, в том числе и на уровне конструкций if/while/ (затрачивая в на эти глупые и малоосмысленные кликания мышкой: фолдинг/анфолдинг, и на javadoc «документацию» просто невероятное количество непродуктивного времени, даже не замечая этого, а лазанье от имплементационной к интерфейсной части — это как бэ гут?). - Локальные переменные нельзя определять в том месте, где они начинают использоваться — это, по мнению профессионалов C/C++/C#/Java — приводит к засорению пространства видимости, проблемам с оптимизацией (привет цикл for!) и нервному тику у кодера, который должен лезть через 2 страницы (впрочем, не обязательно ему это делать самостоятельно — современные средства разработки, в том числе даже бесплатный Lazarus, умеют определять локальную переменную и даже предполагать её тип из операторов присваивания по одной команде) в блок var (да, представьте, какой ужас, переменные в Pascal/Delphi нельзя определять где попало, а только в строго отведенных для того местах, что противоречит принципу «локальные переменные — это не такой дюже важный объект, чтобы ему уделять столько внимания»). При этом, конечно, типичный студент, ненавидящий эти var в Delphi как-то и не догадывается, что писать метод, который не вмещается в экран (то есть больше 10-15 строк) — это признак явного непрофессионализма и непрочитанной книги Refactoring. Однако человек, таки прочитавший Фаулера замечает, что Extract Method применяется уже ПОСЛЕ того как метод разросся на 2-3 экрана.
- Case-insensitive. То есть, begin = Begin = BEGIN = BeGiN. Вот это раздражает, потому что хорошему программисту далеко не пох: хоть он всё равно пишет идентификаторы в правильном регистре, но чужой код, без соблюдения стиля — может довести до рвотных инстинктов (см. исходники Free Pascal).
- Delphi провоцирует быдлокодеров внесение логики во всякие непотребные места: в код обработки событий (w:Магическая кнопка), в обработчики события Button1Click, что есть нарушение модели Model-Controller-View.
- VCL работает по принципу LEGO — пиши из того что есть, а о том, чего нет, без вазелина и не мечтай. Не отследишь, например, отрисовку компонентов — если на форме 100500 кнопок, и каждой в цикле поменять параметр Visible, то каждая же из них и будет перерисовываться (вместо того чтобы потом руками вызвать Repaint всего родительского окна как в MFC). Алсо, TApplication перегрузить не получится.
- Отсутствие нормальной современной среды, окромя поделки Борланда. Хотя есть Lazarus для FreePascal, и еще пяток поделок под него-же, ну и даже в саму Visual Studio можно привинтить Pascal, правда в вариации под .NET (см. Delphi Prism, PascalABC.NET), но все равно нормальных сред нет, ну вы поняли.
- Во Всем Мире малораспространен пруф (ну да, какие-то несчастные 1.6-2.5% на TIOBE [3], с сезонными колебаниями — то есть где-то на уровне Javascript, между Lisp и Perl), да и кол-во вакансий уже лет 10-ть стремится к нулю, к примеру крайне мало вакансий для специалистов на dice.com — 15 и monster.com — 9, для сравнения: Cobol — 90 на dice.com и 34 на monster — nuff said. В России (Yandex.Rabota) — 140 вакансий Delphi против 1781 программист 1С, 900 на C# и 70 на VB.NET. Но старым Delphi программистам (это которым в среднем 25-35 лет, а не 12-16) пока работы хватает.
- Также малая распространенность связана с никакой маркетинговой политикой производителя и его нежеланием и неумением работать с совсем начинающими программистами и выпускать бесплатные (не говоря уже о свободных и кроссплатформенных) версии своего продукта и распространять их среди учебных заведений [2]. До сих пор не существует бесплатной версии Delphi (TD 2006 уже умер — лицензии просто так не раздаются). Выпущенная недавно Starter Edition «по-цене мобильника» вызвала тонны ненависти со стороны самих делфинистов и подбросила тонны еды троллям. Особенно доставляет то, что предоставлена возможность upgrade с Notepad++, Eclipse, Visual Studio. Нувыпонели. A у практически всех других производителей массового ПО (даже 1С!) есть бесплатная полнофункциональная учебная (и не только) версия — Eclipse, Visual Basic CCE, VB 6 Working Model Edition, Visual Studio Express и Access 2007. Embarcadero в этом отношении практически полностью отошел от своего принципа времен ДОС «слон должен стоить 99 долларов» (тогда это было действительно дешево). А ведь нулевая стоимость вхождения является КРИТИЧЕСКИ важной для нищеброда. В Америке и Европе просто НЕТ программистов Delphi, так как он стоит ОХУЕННО МНОГО для их начального обучения (ну да, аж примерно $899, то есть 1/5 месячной средней зарплаты нереднека в США — чуть дороже, чем хорошая стиральная машина[3]), ну а дисков со всеми версиями Delphi и 1000 компонентами в придачу там как бэ нет и про торренты в Европах/США тоже якобы не знают — это-же страны Эльфов, а не Мордор какой-нибудь. Однако КО намекает, что обычный западный студент вряд ли выложит свои кровые 1000 долларов на систему с сомнительными перспективами. А Java/Eclipse и VS Express можно элементарно бесплатно скачать с интернета. Плюс практически полное отсутствие литературы в местной университетской библиотеке [ЩИТО?] и аж 361 книги по Delphi на amazon.com в продаже против 30500 по Java — это как бэ говорит нам, никто не спорит даже). Для сравнения — последняя книга в Германии по турбопаскалю вышла в 93-м году[ЩИТО?], а в России продолжают тратить лес на макулатуру и выпускать чуть ли не каждый год очередную книжку по сабжу (и их постоянно кто-то покупает — вот идиоты, да?).
А вообще, полный разбор недостатков Паскаля был «выполнен» Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (особенно доставляет то, что эта смешная и неадекватная статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, а также более развитые диалекты Паскаля, избавленные от большинства указанных в статье пороков, но которые никому по сути не были известны). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров. Никлаус Вирт понимал недостатки созданного им языка, но, следуя традициям академической среды и собственным принципам, согласно которым «неподходящий инструмент надо не исправлять, а заменять», не стал его самостоятельно развивать дальше, а разработал новые языки семейства: Модула-2 и Оберон, а на Паскаль положил шланг. Вот только Оберон и Модула так и остались популярны в узких кругах (то, что на Модуле написаны модули управления Буран, а также современными спутниками — не считается). При этом типовой Delphi-кун искренне верит, что Вирт после создания Паскаля впал в маразм и перестал понимать разницу между практическим инструментом и академическим упражнением (не верящим — достаточно посмотреть на blackbox, как реализацию Oberon).
[править] Глубинные причины ненависти к Delphi/Pascal
В интернете уже стойко закрепилась ситуация, когда постоянно, буквально уже на третьем или четвертом посте в форумах (да и вообще где-бы то ни было) нет нет и какой-нибудь долбоеб обязательно вставит свои пять копеек про то, что:
- Delphi мертв
- на Delphi никто ничего не пишет в СШA и в Европе
- на Delphi нет приличных вакансий в РФ, а то что есть — платят гроши и заставляют допиливать старые задачи, сидя на коробках из под мониторов перед ЭЛТ-мониторами в госучреждениях
- на Delphi никто не открывает новых проектов
- Delphi давно продан не понятно кому, и уже не развивается (ну… версии 2006, 2007, 2009, 2010 уже не торты, само собой)
- вся команда из Borland ушла в Microsoft
- на Delphi можно только программировать мышкой, ничего сложнее двух кнопок и поля ввода написать дескать нельзя
и тысячи, тысячи подобной ерунды.
Что, как несложно догадаться, не может не вызывать недоумения, ибо вроде как продукт уже мертв, а почему-то и регулярно его новые версии выходят, и работа твоя никуда не девается, и новых проектов на следующий год сейлзы навалили уже пару штук, а нормальных сотрудников с опытом работы даже в Москве просто так не найти, и все нормальные хотят ЗП строго от 80-90 штук на руки (и это еще без бонусов), и почему-то до сих пор ничего в родной фирме (и во всех трех, в которых удалось поработать за последние лет десять) так и не переписали на .NET (хотя все собирались и даже .NET-чиков наняли, аж два отдела). И т. д.
Так стоит ли разобраться в ситуации? Откуда столько мегатонн ненавистей к, в общем-то, вполне обычному коммерческому продукту для сверхбыстрого написания всяких окошек к базам данных и не только?
А причины, наш дорогой читатель, просты и очевидны, лежат, так сказать, на поверхности: человеческий, сука, фактор.
Вернемся в школьные и студенческие годы нашего типового будущего говнокодера, но пока еще такого юного и полного подающих надежд дарования. В чем суть его радужного детства-студенчества? Правильно! Он старательно изучает в школе Pascal (Turbo/Free), и потому что преподаватель информатики ничего особо другого и не знает (да и обучение детей всяким С+±ам, .NET-ам или Perl-ам, в чистом виде — чревато нарушениями в незамутненной детской психике, вплоть до заикания), а будучи помещен в ВУЗ-ик — наше дарование натужно изучает много чего, от C++ и Java, но вот почему-то все курсовые получается писать только на Delphi, да и многие однокурсники, хоть и пускают сопливые пузыри про Ruby и .NET, но курсовой по дискретной математике, с рисованием графов, все равно шпарят на Delphi.
Вот и получается, что отучившись в ВУЗе, наше юное дарование кое-как умеет программировать на Delphi, в теории знает основы .NET и Java (в рамках семестра), ну и туманно помнит, что в результате целой ночи так и не написало лабораторную на C++, ибо блин как-же непонятны эти дурацкие указатели там. Ну и PHP еще, слышал, есть такой язык…
Но… это все хорошо. Но диплом защищен, ура-ура, пора-бы уже устраиваться и на работу, правда (ну или третий курс уже стукнул, и тоже поработать хочется)? И… вот тут и случается Epic-fail! Что имеет и что получает наше дарование?
Во-первых ЧСВ изначально дает себя знать. Ибо или красный диплом получен, или самомнение о себе явно зашкаливает до уровня второго если не Билла Гейца, то Торвальдса
Во-вторых… а вот реалии почему-то говорят строго об обратном. Попытка собеседования вызывает неумолимый, жгучий, и очень даже реальный Butthurt! Дяденька в очках на собеседовании (на всех двадцати фирмах куда была попытка устроиться со знанием любимого Delphi) весьма жестко, непонятными вопросами и задачками показывает, что ты — практически полный d’Bill и программировать умеешь чуть менее, чем вообще не умеешь (а реалии таковы, что на имеющиеся вакансии Delphi действительно нужны прокачанные годами некислые скилы, ступидентов туда уже давно не берут, ибо это чревато совсем неуправляемыми потоками говнокода вплоть до потери бизнеса). А даже те дяденьки, которые говорят «ну хорошо, мы подумаем» — почему-то не перезванивают! А это больно! Это очень больно! А папа, мама настойчиво намекают, что пора, сынок, и на работу устраиваться, не хотят они за комнату съемную в Москве твою платить, кризис, дескать. И за одежду и питание, пивасик — тоже (а это ваще плохо).
В-третьих, посмотрев по сторонам, наше дарование весьма неиллюзорно убеждается, что более расторопные одногрупнички быстренько уже понаустраивались во всякие фирмы, где нужны PHP, Python, .NET и даже Java кодеры. И вообще без опыта работы! Вообще, просто пришли говорят, порешали задачи на сообразительность, и все, взяли. Во как!
И тут наше дарование принимает стратегически верное решение. Покупает книги вида «PHP5 и MySQL», «Программирование на ASP.NET», «Ruby on Rails», «Основы Tomcat», «Python» Лутца и «Django» Головатого изучает их все, и… с пятой попытки устраивается хоть куда-то. WIN! PROFIT!
И… ну короче, надоело уже. Все вы уже поняли. Юное дарование получает какие-то денежки, начинает прилично питаться, потом начинает даже говнокодить (через год) что-то уже самостоятельно, а не под строгим наблюдением рядом сидящего говнокодера чуть постарше (или помладше, но не попавшего под тлетворное влияние говноделфи), даже снимает через года два отдельную квартирку. И… понимает! Что во всем виновата Delphi! Во всем виноваты преподаватели! Которые совали ему мерзкую Delphi, он ее всю изучил, а она не дала ему зарабатывать даже на питание, одежду и съем квартиры…
Впоследствии это тело дорастает даже до тимлида какого-нибудь, в EPAМ-е, процесс окукливания пациента в его ненависти к Delphi окончательно цементируется, и уже вполне половозрелый балбес лет 27 от роду решает донести миру ПРАВДУ!
Ну дальше вы все поняли.
[править] Примеры ПРАВДЫ про Delphi
Народный эпос правды про Delphi сам по себе достоин отдельного изучения и даже, можно сказать, осмысления, потому мы, пожалуй, начнем собирать в этом разделе особенно, аццки доставляющие примеры, которые периодически сюда вносят правками некоторые, особо одаренные и интересные личности (привет Ынтырпрайс!), сохраняя стилистику, орфографию и прочую грамматику аффторов этой вашей ПРАВДЫ практически без изменения, итак:
-
Делфи — это быдлокодерская среда разработки, созданная в недрах быдлофирмы Багланд как запоздалая попытка создать конкурента Visual Basic, который в Цивилизованном Мире уже получил к 95-му году заслуженную популярность благодаря своей простоте и дешивизне.
-
то что ты сейчас пытаешься сделать (использовать ассемблер в программах на Delphi) — ошибка. Генетическая. Российская. Всей образовательной системы страны. Таких преподов надо увольнять сразу же. Если выжигать эту дурь из мозгов каленым железом не получается. Правильно им копейки платят. Они это заслужили.
Но зачем так издеваться над молодыми неокрепшими умами студентов и студенток?
-
Создание любого маломальски сложного приложения БД начинается с очень долгого и мучительного выбора компонент грида, отчетов и для доступа к БД — BDE (этот труп продолжают тащить из версии к версии), dbGo, dbExpress, IBX или покупать сторонние. Но для бедных совковых быдлокодеров сделали исключение — сниженные цены. Особо нищие качают у китайцев. Таким образом рядовой набор патриота-нищеброда состоит как минимум из FIBPlus, FastReports, EhLib. Да, а в Access это все уже есть!
-
Был такой случай, когда американский программист спросил: а что, в России прогеры так много получают, что у каждого есть делфи энтерпрайз дома. у нас Visual Basic Standard только. И он потом долго смеялся над зарплатой прогера в 100 $ и ценой диска в 3$. Причем К. О. как бы намекает, что это высказывание было актуально на начало 2000-х. Анонимус помнит, как декан одного ВУЗа сьязвил по поводу зарплат делфи-программистов: от 4 тысяч и ниже. Другой же почтенного возраста, преподающий «современное программирование» в том же ВУЗе, пошутил, что «программист» в этом городе (а может и всем замкадье?) считатется средним между «водилой» и «охранником». Как по зарплатам, так и по отношению. Такие дела.
-
Вакантные места программистов для писюков захватывает мафия бывших студентов кулинарных техникумов со знанием турбопаскаля
-
а вы что наивно полагаете что дельфи не дёргает кучу при копировании дин масивов? он даже при увеличении размера дёргает кучу.
-
FreePascal — поделие немчика, который даже абитур не сдал и не знает как корректно обрабатывать события окна WM_… , не имеет право использоваться в универах и школах
-
А сейчас политика Багланда — делать деньги на ежегодном выпуске новых версий с минимальными и спорными изменениями, оно и понятно, у Microsoft — есть Windows и Office, у Oracle есть дофига серверного ПО, а у текущего владельца делфи нет ничего, кроме делфи.
-
это следствие того, что компилятор вообще «вываливает огромные портянки ошибок», а не выплевывает их по одной.
-
старые Delphi программисты — это те, которым в среднем 45-55 лет, толстые, каждый час выходят покурить и имеют очень похожую на них собаку.
-
Выпуск под каждую версию отдельного дистрибутива компонентов как бы намекает, что DCU-шки несомместимы между версиями или в случае с поставкой с исходниками делфинисту прийдется ебаца с заточкой исходников под текущую версию компайлера, если об этом не позаботился производитель с опциями условной компляции)
-
на Delphi никто ничего не пишет в СШA и в Европе (ну за исключением Quest, Skype, Allroundautomations, Databacker (интересно, кто же его пишет, и где?) — клепают коробочный софт, который потом никто не покупает — все лежит на прилавках за 1 евро
-
В замкадье Delphi вакансий просто НЕТ, все давным давно свалили на 1Ску, а зарплата «выпускника со знанием делфи» < зарплаты уборщицы. Анонимус помнит, что в миллионном городе в 2003-году не было НИ ОДНОЙ ВАКАНСИИ по делфи, а был один сплошной 1С. Ну ты понел.
А фирмочка, связавшаяся с делфи продолжает искать годами «суперкрутого специалиста по никому не нужной делфи», пока не прийдет новый владелец ис кажет — мы переходим на .NET.
И на самом деле юное дарование на 100% право, делфи — это удел старых пердунов с бородкой, которые сидят на сладком месте с какого нибудь 94-го в фирмочке и обслуживают свою супер-нетленку на каих нибудь делфи 3 + Интербэйс. А айти знаете ли за это время некисло так шагнул вперед и программисты должны решать совсем другие задачи, где делфи ВООБЩЕ нет места.
-
Lazarus для FreePascal на деле оказывается далеко не кроссплатформенным (вы пробовали запускать и компилировать что-то на нем под маки?) и тем более не совместимым с делфи
-
Вирт создавал Оберон вообще под действием сильнодействующих веществ, которыми затарился будучи в командировке в Амстердаме. Осознавая бессмыслие что-то изменить, он стал нападать на мэйнстрим языки типа Java и C# — что мол все идеи у него сперли буквально из головного мозга. Но поезд ушел и дедушке остается сидеть на пенсии и пить пивко вместе с местными пеннерами.
-
В рашке же делфи получил распространение только благодаря дискам с пиратками, купленными на радиорынке за стольник, где вы найдете все версии делфи и еще 1000 крякнутых компонент в придачу. Сейчас варезные версии делфи распространяются через интернет, в том числе и всякие Lite и прочие Edition.
-
for(int i=1;i<10;i+=2); такова в дельфи не сделать стандартным циклом(Use while, Luke!)
-
Когда-то давно пришлось (заставили под страхом смерти делать прогу) писать код на Delphi. Освоившись со средой, начал кодить. Банальнейшая задача по нахождения следующего символа (a->b, e->f и т. д.) на Дельфях обратилась в ад (дельфины: предоставьте, пожалуйста, хороший код, который делает эту задачу, я не осилил (хороший код: AnsiChar(Ord(chSym)+1))). Также доставило странное поведение среды: при возникновении ошибки чтения программа молча, без сообщений закрывалось. For у D — самый топорный из ВСЕХ языков. Даже у Basic есть Step, который развевает грустные мысли. Тут пришлось извращаться, чтобы организовать цикл сложнее «от A до B». Позже доставила таблица импорта у результатов действий компилятора Delphi. Сейчас, возможно, это уже пофиксали — не проверял.
-
так детишки как раз и пишут на паскале, а на промышленных языках с С-like синтаксисом пишут серьезные дяди.
-
Ну не только, конечно, но я недавно смотрел лекцию Степанова, где он ругал Паскаль за то, что в нём нет арифметики указателей. Это означает, что в Set нельзя ложить указатели, так как нельзя вычислить хзш-ключ и прочие полезные штуки нельзя делать, о которых поцкалисты даже не знают.
-
Плюсы вообще можно долго изучать и постоянно будет попадаться что-то новое. А паскаль закостенел уже давно.
-
операции над целыми числами и над отдельными битами… и их отсутствие в паскале это эпический фейл последнего…
-
Ты вообще хоть знаешь, что такое макроассемблер? Это ассемблер с макросами. Если сделать макрос для FOR, который будет принимать три аргумента — начало цикла, условие продолжения и шаг, то получится почти то же, что и в Си, только в Си пошли дальше и получили язык, почти такой же быстрый, как и ассемблер, но гораздо удобнее его и паскаля, заодно. А в паскале такого намутили, что и сами не могут понять, как это нормально компилировать, потому и имеете вы то, что имеете.
-
То что паскаль еще держится говорит о наличии людей которые не могут освоить нормальный язык программирования.
-
Всилу обстоятельств и по просьбе знакомых сегодня кодил на дельфи. Столько матов еще ни разу не сгребал в одно предложение, при каждой попытке высказать свое мнение. МЛЯ, язык, где нельзя управлять счетчиками и приходится юзать while там, где он по смыслу не нужен, УЖААААСНАЯ отладка, убогая система «оптимизации», эксепшены типа «выход за границу массива» выбрасываются ЧЕРЕЗ РАЗ и то не всегда, блин, причем не в НОРМАЛЬНОМ виде типа «IndexOutOfArray», а как крик оперативки типа «Access violation…at x0000» и т. д.
-
помню в школе нам долго объясняли что в паскале = это операция сравнения, а := присвоения… почему-то люди не знавшие ни одного языка этого не понимали…
-
with — костыль.
-
нет, просто на дельфи только такие долбо*бы могут программировать :D :D
сорри всем кодерam дельфи, это чисто мое мнение если что :D :D
-Разве Delphi ,мозг так выносит?
Нет, просто писать на нем можно без наличия мозга.
да вряд-ли, человек который хотя бы один раз работал с поинтерами и с битовыми операциями на C никогда не сьест бабушки :D :D
[править] Учебники Фаронова
Отдельной иконой российских паскаляфагов являются учебники Валерия Васильевич Фаронова. Учебники представляли собой, особенно для того времени, лютейший вин — там просто, понятно и структурировано объяснились как основы программирования, так и собственно язык. По сути, многие программеры девяностых (включая автора правки) учились быдлокодить именно по этим учебникам. Вообще, надо понимать, что вменяемых учебников по любому языку, что у нас, что за бугром, считанные единицы — 95% авторов выебываются и намешивают в текст какой-то романтической пурги, вместо того чтобы планомерно излагать смысл. Фаронов — как раз такой.
На данный момент существуют издания Фаронова для всех версия Паскаля и Делфи. Начинающим хацкерам крайней рекомендуется — там вам на пальцах объяснят, что такое условные операторы, циклы и объекты. Этого вполне достаточно, чтобы понять большинство современных объектных языков. Хотя для прямой работы с памятью все равно придется изучать Си.
Алсо, интервью с автором и его труды.
Противоположная точка зрения. Делфи это Кэнту, Тексейру/Пачеко, но ни как не Фаронов и Архангельский. Про Паскаль хорошо пишет, барабанная дробь, Вирт. Именно труды Фаронова и Архангельского сделали Delphi самой быдло средой.
[править] Вывод
Pascal (Free Pascal/Delphi) — считается расово верным языком программирования (в основном у тех, кто его знает и умеет им пользоваться), но для ряда современных задач (даже большинства, если смотреть со стороны упертого вебкодера) безнадежно устарел (вернее никогда под эти вебзадачи особо и не затачивался, или затачивался, но неудачно). Delphi в текущем виде весьма удобен для быстрого написания относительно несложных оконных приложений под Windows для массового тиража (вроде Skype или Total Commander, всего-то несколько десятков человеко-лет в сумме, ну вы поняли). В этой дисциплине он выигрывает у С++ в скорости написания, а у .NET — в простоте развертывания (однако КО как бы говорит нам, что размер инсталлятара .NET 2.0 составляет всего лишь 23 Мб), ну и в защищенности кода от прямого реинжиниринга (получить исходный код любого скачанного поделия на .NET или Java из его байт кода посредством просто чудных программ вроде Spices.Net Decompiler, .NET Reflector, JAD decompiler, Mocha и прочие тысячи их — обычно проще пареной репы для любого школьника и все тот же КО как бы намекает на использование в диплойменте обфускаторов и защиту сборок цифровой подписью, что делает реинжиниринг бессмысленным). И обфусцированный код, несмотря на его «доступность», читать, понимать и менять мягко говоря довольно сложно, рефакторинги тут как бэ не помогут и что с ними будет делать школота, возомнившая из себя кулхацкеров — не совсем ясно. Для делфи между прочим есть DeDe, с помощью которого можно получить dfm и вполне вменяемые код обработчиков событий (с комментариями на паскале!)
А вот низкоуровневое системное программирование на нем (драйверов каких) — вообще полное исключение — там традиционно правит исключительно С (потому что никто DDK под Delphi даже не пробовал портировать в виду мизерности рынка).
Зато вот уж где Delphi действительно лидирует — так это в различных клиент-серверных приложениях автоматизации делопроизводства и простого учёта в госорганизациях по схеме распил и откат™, ибо можно брать деньги на проекты с пафосными названиями, поручать реализацию дешёвым выпускникам ВУЗов, откатить бухгалтеру и исполнителю, а остальное — распилить. В отличие от этих ваших сешарп и ява, особого знания технологий и методологий программирования в таких системах не требуется абсолютно, что позволяет не переживать за сроки и качества исполнения — этим и объясняется отчаянная любовь престарелых анонимусов к этому инструменту.
Также следует отметить, что Pascal исторически вообще никак не используется для разработки Web приложений, так как совершенно для него не приспособлен (как и для любого типа серверных приложений). Тру-Web-технологии (Java, ASP.NET, Django, Ruby on Rail и таки PHP) используют совершенно другие подходы — автоматическая сборка мусора, JIT компиляция, динамическая/нестрогая типизация, которые в итоге позволяют очень быстро склепать более-менее сносное приложение при предельно минимальных затратах его пишущих. Да и на самом деле причина в том, что типичное Delphi приложение — это незащищенный код (как и С/С++), и типичный чумазый говнокодер, который попытается обратиться по ссылке к уже несуществующему объекту или выйти за границы массива, способен по-тихому разрушить всю память приложения и, пусть не сразу, но таки положить Web-сервер нафиг. В языках вроде Java, C#, PHP, Ruby данная типичная проблема быдлокодеров решена на фундаментальном уровне, то есть запрещена изначально. Ну и само собой хостеры явно будут не в восторге от вашей просьбы разрешить вашему сайтику запускать какое-то CGI приложеньице, да еще и под Wine (не забываем, что Delphi ко всем своим бедам живет только под винду). Впрочем, даже хостеры на Windows тоже пошлют вас на йух с вашим CGI, вы ведь не платите им 300 енотов в месяц, чтоб они исполняли любой ваш каприз.
[править] Типичная прога на Пацкале
if Length(PP.curdir)<36 then
pt:=' '+PP.curdir+' '
else pt:=' \...'+Copy(PP.curdir,Length(PP.curdir)-30,31)+' ';
Ptr:=PP.f_ptr;
if PP.vol='' then PP.vol:='No Label';
WriteString(1,cc+(40-length(pt)) div 2,pt,Pal[8]);
WriteString(22,cc+1+(cc*(34-length(PP.vol))) div 40,'['+PP.vol+']',Pal[7]);
if PP.vol='No Label' then PP.vol:='';
{if PP.empty then exit;}
inc(ptr,sizeof(filrec)*row);
for i:=row to n+row do begin
if (i <PP.files) and (not PP.empty) then begin fname:=ptr^.filename;
{if (ptr^.fileattr and 16) = 0 then StrLwr(fname);}
if (Ptr^.fileattr and 2) <> 0 then fname[1]:=upcase(fname[1]);
if ((Ptr^.fileattr and Hidden) <> 0) and (Pos('.',Fname)>0) then fname[Pos('.',Fname)+1]:=upcase(fname[Pos('.',Fname)+1]);
SortFIle(fname);
for a := length(fname) to 11 do fname:=fname+' ';
fname:=fname+'│';
if (Ptr^.fileattr and 16) = 0 then Str(Ptr^.filesize:10,pt)
else if fname[1]='.' then pt:='�UP──-DIR�'
else pt:='�SUB─-DIR�';
fname:=fname+pt+'│';
DateTimeCnv(pt,Ptr^.filedttm);
fname:=fname+pt; {SetFattr}
if Ptr^.selected then WriteString(2+i-row,cc,fname,Pal[1]) else
WriteString(2+i-row,cc,fname,Pal[2]);
inc(ptr,sizeof(filrec));
end
else WriteString(2+i-row,cc,' │ │ │ ',Pal[1]);
end;
end;
procedure Put_File(PP:Panel;cc,row,x:word;active:boolean);
var
fname,pt:string;
{ptr:P_filrec;}
begin
if PP.empty then exit;
ptr:=PP.F_ptr;
inc(ptr,sizeof(filrec)*(row+x));
fname:=ptr^.filename;
{if (ptr^.fileattr and 16) = 0 then StrLwr(fname);}
if (Ptr^.fileattr and 2) <> 0 then fname[1]:=upcase(fname[1]);
if ((Ptr^.fileattr and Hidden) <> 0) and (Pos('.',Fname)>0) then fname[Pos('.',Fname)+1]:=upcase(fname[Pos('.',Fname)+1]);
SortFile(fname);
for a := length(fname) to 11 do fname:=fname+' ';
fname:=fname+'│';
if (Ptr^.fileattr and 16) = 0 then Str(Ptr^.filesize:10,pt)
else if fname[1]='.' then pt:='�UP──-DIR�'
else pt:='�SUB─-DIR�';
fname:=fname+pt+'│';
DateTimeCnv(pt,Ptr^.filedttm);
fname:=fname+pt;
if active then If Ptr^.selected then WriteString(2+x,cc,fname,Pal[3]) else
WriteString(2+x,cc,fname,Pal[4])
else if Ptr^.selected then WriteString(2+x,cc,fname,Pal[1]) else
WriteString(2+x,cc,fname,Pal[2])
[править] См. также
- Программист
- Индус — имеют отношения к Pascal, так как программу можно растянуть на >9k строчек из за пластичности языка
- Тонны ненависти к дэлфи
[править] Примечания
- ↑ Что излечимо. Например, ключиком -Xg, или постановкой галочки в настройках — «Использовать внешний отладочный файл». Бинарник сразу раз в 7 худеет, хотя из 12Мб получить «всего лишь» 1,7Мб — тоже не самое большое удовольствие :-)
- ↑ в рашке это напоминает скорее распил
- ↑ Тут фишка в том, что обучение в США платное. На обучение чаще всего берут кредит. Так, как у добропорядочного американца еще должен быть кредит на дом, то там становится уже не до дополнительных трат. Впрочем это все уже не актуально, так как теперь Delphi дают для обучения бесплатно.
[ + ] Любой программист без словаря поймёт, что такое Pascal
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|