вторник, 9 ноября 2010 г.

Почему Delphi?

На Delphi я пишу почти 8 лет. Начиналось все с Turbo Pascal 7.0 в школе. Потом первое знакомство с Delphi 7.0. В свободное время, как и большинство самоучек, занимался формоклепательтсвом и изучением внутренностей VCL. Лишь спустя 2 года пришло понимание Delphi как целостной системы, органичного симбиоза мощной среды разработки и простого языка программирования. А с ним и осознание того, что мои знания лишь вершина огромного айсберга возможностей, которые нужно изучить, что бы грамотно и эффективно создавать приложения в этой “экосистеме”.

Сегодня имидж Delphi, как среды разработки и языка программирования, в глазах публичных масс не так высок, а местами падает ниже уровня плинтуса. Люди, далекие и не очень, от программирования видят результаты проб пера тысяч “программистов на Delphi”: монстров неповоротливых, тупых и неэффективных. И делают совершенно необоснованный вывод о Delphi - сгодиться для кружка рукоделия в школе, не более того. Компьютер удивительная штука, бездушная машина, которая является лишь зеркалом того, кто за ним сидит. На Delphi можно написать почти все, от драйвера ядра до операционной системы. Только вот можно, не значит что нужно. За годы развития от Turbo Pascal 7.0 до Delphi XE (а это 16 новых версий компилятора) язык вырос и сильно расширился. Но он остался простым и сохранил преемственность поколений. Вот несколько причин, почему можно начать изучать Delphi как язык сегодня.

Простота. Pascal был придуман как учебный язык. С тех пор ничего не изменилось. У него такой же простой и понятный синтаксис. Я давно не встречал “ экзотических конструкций” повергающих в ступор, где не знаешь с какой стороны подойти и откуда начать раскручивать карусель. Маленький камушек в сторону си-образных языков, где монструозность шаблонно-на-шаблонных классов, завернутых в два десятка модификаторов и щедро приправленных запредельным количеством директив препроцессора, не такая уж и редкость. Смотришь на такой код и искренне недоумеваешь, кто же написал это “чудо”- гений или полный идиот. В паскале все проще, видишь что-то похожее на глупость - 99% это глупость, и в одном случае и ста это гениальное конструкторское решение проблемы, которой на самом деле нет. Утрирую, конечно, но не сильно.

Гибкость. Любую программу в Delphi можно написать минимум двумя и максимум двумя способами: либо быстро, либо эффективно. К сожалению, в последние лет 5-7 все повально увлечены быстрой и даже экстремальной разработкой программного обеспечения. В результате имеем хроническое пренебрежение созданием продуманных и эффективных приложений, и карму Delphi, неуклонно ползущую вниз по градуснику. А ведь среда не накладывает никаких ограничений даже не парадигму программирования, не говоря о стиле и best practices. В Delphi можно писать по-разному:

  • можно как в Си, процедурно-структурный подход. Да, Delphi сохранил преемственность Turbo Pascal с его суррогатом классов - objects. Можно писать эффективные консольные и оконные приложения, там где нужно скорость и минимальное потребление памяти. И если вам кажется что в 21 веке от такого архаизма надо отказываться, то посмотрите на KOL. будете очень удивлены.

  • можно как в С++, объектно-ориентированный подход. Это наше все, основа Delphi и VCL. Тут даже говорить не о чем. Просто надо научиться грамотно этим пользоваться.

  • а можно как в Objective-C, Java, C# и других языках со сборщиком мусора (GC - Garbage Collector). Для поддержки и обеспечения совместимости с OLE/COM Delphi имеет потрясающе удобный инструмент - интерфейсы. Это не тоже самое, что интерфейсы в других языках программирования (в си-образных языках под интерфейсами обычно понимают протокол соответствия свойств и методов класса). Это как система подсчета ссылок в Objective-C с autorelease объектами, это безумные SmartPointers в С++, это как автоматическое управление временем жизни объекта в дот-нете и яве (жаве, джаве - выбрать по вкусу) . Извращение еще то, но хорошенько подумав, можно создать очень удобную, эффективную и даже модную архитектуру. Потому что она будет соответствовать лучшим паттернам и best practices.

Дерзайте, творите. Только сначала думайте, а потом делайте.

Мощность. В тех редких случаях, когда нужно быстро и можно не эффективно Delphi нет равных. Лучший визуальный редактор форм, необъятное количество компонентов и дополнительных классов. Одна JEDI, кроме VCL чего стоит. Осталось научиться всем этим добром пользоваться. Для меня есть всего два “незаменимых” компонента: VirtualTrees для скорости и PngImage + PngImageList в жертву красоте.

Альтернатива. Альтернатива нужна всегда, без нее никуда, нельзя же полагаться на одно единственное проприетарное решение в таком серьезном вопросе. И она есть - FreePascal Compiler + Lazarus. Вполне себе кошерная альтернатива, в приближении к версии 1.0.0 Lazarus радует все больше и больше. На этом действительно можно работать и писать программы. Приятным бонусом будет неплохой кросс-компилятор для WinCE. Для расширения кругозора в самый раз. C другой стороны, процент лицензионных версий Delphi в нашей стране не слишком высок. Отдать 1000 условных, но очень дорогих, единиц на хобби в нашей стране могут позволить не многие. А хотят еще меньше. Вроде еще есть Turbo Dephi в домашней урезанной версии, но в “лицензионно-девственном” виде он мало подходит для быстрой и удобной разработки. А Lazarus open-source и кросс-платформенный, хотя и условно. Не знаю как на Linux, но на маке, это неповоротливый колосс, выдающий такие же “глиняные” программы. Тем не менее альтернативы есть, даже две.

Перспектива. Куда уж без нее. За годы скитаний Delphi от хозяина к хозяину, многие поставили крест на перспективах. Все таки Delphi это нишевый продукт, под Windows на x86. Но это лучший нишевый продукт, имхо. Сегодня Embarcadero обещает нам x64 под Windows, Linux и MacOS X. Хочется верить, что мы доживем до этого славного события.

Это было актуально вчера, 5, 10 лет назад, это будет актуально и завтра. Delphi это прекрасный полигон для получения, развития и закрепления навыков программирования, разных видов и стилей. Надо изучать все, от элементарных алгоритмов и работы со структурами данных до интерфейсов и баз данных. Важно понять основы и научиться грамотно их применять. И язык программирования тут играет второстепенную роль. Главное, что бы он не мешал. А хороший программист, он на любом языке хороший программист.

Комментариев нет:

Отправить комментарий