| www.it-effect.com.ua |
|
| На центральную | Что нового | Что интересного | Структура сайта... |
| ПРО ЭТО... | Что здесь нового | Что здесь интересного |
Владимир Скоков
Хитрый Фоголь
Только начиная еще изучать программирование под Windows и ничего не зная ни о Delphi, ни о C++, я выбрал среду программирования наобум. Теперь, когда мне известны как "плюсы", так и "минусы" обоих языков, хочу поделиться своими соображениями с начинающими программистами, возможно, стоящими перед тем же выбором.
Начнем с того, что C++ - это язык программирования, а вот Delphi - это среда программирования...
Ну, во-первых, почему именно Delphi и C++? Да потому, что на сегодняшний день это наиболее распространенные средства разработки высокопроизводительных Windows-приложений. Есть также Visual Basic, наряду с Visual C++ входящий в комплект пакета Visual Studio компании Microsoft, но его производительность значительно уступает возможностям обоих языков, да и использование ограничено созданием приложений для MS Office. И большинство программистов во всем мире все же отдают предпочтение одному из двух названных средств разработки приложений.
Ага! Если не считать статистики, которая еще в 1995-м гласила, что большинство программистов пользуется именно Visual Basic...
Итак, C++. Большинство современных операционных систем, а именно Unix, DOS, и, конечно же, Windows, написаны именно на этом языке (или на его разновидности). Программы, написанные на C++, уступают в скорости только созданным на языке Ассемблера. Да и сам C задумывался как некий Ассемблер высокого уровня, поэтому работающему в нем программисту открыты возможности, которых не найти в других языках. Прежде всего это касается управления памятью, адресации и работы с низкоуровневыми функциями. C++ является объектно-ориентированным расширением C, и объектного программирования превратился в наиболее мощное средство для разработки самых разнообразных программ.
Впрочем, сам создатель C++ считает наоборот: C является подмножеством C++...
Поскольку C++ - системный язык Windows, программисту, владеющему этим языком, гораздо легче освоить программирование с помощью API Win32, а значит, получить доступ к огромным возможностям, предоставляемым интерфейсом прикладного программирования (API) Windows 95(98) и Windows NT. За время существования C++ написано огромное количество приложений и программных модулей, доступных к использованию в вашем приложении. На основе этого языка создан Java, а как известно, сетевое программирование относится к наиболее перспективным отраслям, специалисты которых всегда ценятся работодателями. Программирование на C++ закономерно считается признаком высокого класса (хотя при "умелом" обращении, на C++ можно написать программу, работающую хуже, чем написанная на стандартном Бейсике). В общем, если вы всерьез решили посвятить себя работе с компьютером, внесите в свои планы изучение C++.
Не столько работе с компьютером, сколько программированию. Соответственно учитесь программировать, а не просто изучайте C++...
Но все ли так лучезарно? Боюсь, что нет. C++ обладает серьезными недостатками, которые, как это часто бывает, являются продолжением его достоинств. Перечислим их.
Язык чрезмерно сложен. Это признают все без исключения. Он сложен для изучения и в использовании – программист должен точно знать, что и как происходит при выполнении того или иного оператора, иначе беды не оберешься. Множество нюансов, отслеживаемых в других языках автоматически, должен контролировать сам программист. Такова плата за скорость. Кроме того, многие типы данных, максимально просто реализующиеся в Паскале и Бейсике, в C++ реализованы весьма неудобно. В первую очередь, это относится к строкам.
Да что вы говорите! А в Delphi программист не должен точно знать, что происходит при выполнении того или иного оператора? Ню-ню, господа программеры, ню-ню...
Насколько легко и непринужденно можно оперировать строками в Паскале, настолько же это затруднительно в C++. Строки здесь представляются не в виде отдельного типа, а как массивы знаков. Отсюда – сложность с любыми операциями над ними.
В целом это глупо. Один раз проникшись философией работы со строками, как с массивами символов, все дальнейшие операции по их использованию вы видите четко и прозрачно. Да, работать с единым типом в большинстве случаев проще. Пока вы не столкнетесь с необходимостью обойти реализацию этого типа - вот тогда и придется под него подстраиваться...
Характерно, что использование массивов также непросто. В C++ отсутствуют средства для проверки границ массива, и там, где в Паскале вы получили бы предупреждение компилятора, в C++ ничего не произойдет, вплоть до тех пор, пока вместо нужных вам данных вы не получите неизвестный "мусор".
Отладка программы, написанной на C++, занимает больше времени, надежность кода оставляет желать лучшего (особенно, если он написан начинающим). Да и профессионалы зачастую испытывают сложности с отладкой больших и сложных программ. Чего стоят одни проблемы, связанные с Windows 95! Так что, умерив восторги по поводу достоинств этого языка, следует четко уяснить, что легкой жизни от C++ ждать не приходится. Особенно это касается разработки приложений, имеющих графический интерфейс. Программирование окон с набором различных элементов управления весьма трудоемко и требует большого терпения и высокой квалификации.
Да ну? А альтернатива - это Delphi? Да в отладке Delphi сам черт ногу сломит! И какие проблемы связаны с Windows 95? А программирование вообще требует большого терпения и высокой квалификации...
Альтернативой C++ является Delphi. Созданный корпорацией Borland, он вобрал в себя все лучшее, что эта фирма, славящаяся своими средствами разработки, накопила на данный момент. Delphi разительно отличается от всех видов C++.
Во-первых, в его основу положен язык программирования Object Pascal. Да-да, тот самый добрый Паскаль, который мы изучали еще в школе. Кстати, по поводу его возможностей бытовало неправильное мнение. Некоторые считали, что по сравнению с C он недостаточно мощен и гибок. Может, на начальных этапах развития так и было, однако стараниями фирмы Borland Паскаль был серьезно усовершенствован, и уже в версии Турбо Паскаль 5.5 представлял собой весьма мощный инструмент для разработчика. С появлением Windows его позиции серьезно пошатнулись, однако Borland как основной поставщик компиляторов на основе Pascal не собирался мириться с подобной ситуацией. В обстановке глубокой секретности началась разработка нового продукта на основе Паскаля. Так появился Delphi.
Delphi – не просто язык. Это чрезвычайно мощная и удобная интегрированная среда (IDE), заслуживающая самых высоких похвал. Ни один компилятор C++, включая Visual C++, не предоставляет нам столь дружественной, интуитивно понятной, простой в использовании и вместе с тем столь многофункциональной оболочки как Delphi. Что бы не говорили ребята из Microsoft о том, что своим Visual Studio они предоставляют пользователю средства быстрой разработки приложений с графическим интерфейсом, ничего лучше Delphi в плане скорости и удобства, по-моему, просто не существует. Выполнение задания, над которым в C++ вы промучаетесь пару часов, в Delphi отнимет не более минуты. К тому же эффективность кода, сгенерированного компилятором Delphi, в большинстве случаев не хуже, чем у его конкурента C++. Исходя из этих соображений многие программисты отдают предпочтение Delphi.
Да, Delphi - не просто язык! Это своя система! Система в системе!
Object Pascal, лежащий в основе Delphi, обогащен множеством типов и классов, позволяющих полноценно использовать возможности программирования под Windows. Практически все, что можно создать с помощью C++, реализуемо и на Object Pascal, причем, благодаря простоте и лучшей структурированности Паскаля, программа получается более четкой, удобной для восприятия, и, что самое главное, более надежной, чем написанная на C++. Отдельно следует сказать о базах данных. В Delphi введены мощные средства поддержки работы с данными, позволяющие очень просто создавать приложения, связанные с базами данных. В этой области Delphi, пожалуй, вообще не имеет конкурентов. Учитывая то, что работа с базами данных является одной из основных задач программиста, последнее еще более укрепляет положение Delphi как превосходного средства разработки программного обеспечения.
Не столько обогащен, сколько отягощен! Насчет баз данных - это конечно да!
Поскольку Delphi является самым простым и удобным среди всех мощных пакетов, а также из-за того, что Паскаль значительно проще C++ и к тому же изучается в вузах и некоторых школах, я могу рекомендовать его обучения программирования под Windows. В дальнейшем вам будет гораздо легче "справиться" с C++ или каким-либо другим языком. Однако это вовсе не означает, что этот язык пригоден только для начинающих. Совсем наоборот! Даже освоив C++, вы по-прежнему будете использовать Delphi, где это возможно, - настолько он удобен и выгоден в применении. А там, где потребуется высокая надежность, - в приложениях для бизнеса и деловой сферы – Delphi просто незаменим.
То, что Delphi является самым простым - весьма спорно. А удобство - субъективное мнение каждого. И в дальнейшем вам будет никак ни легче, а гораздо тяжелее справиться с C++ (но это мое мнение)...
Но и этот не обошелся без недостатков, как обычно, являющихся продолжением достоинств. Использование удобного Паскаля затрудняет взаимодействие с операционной системой, так как системным языком является C++, а его синтаксис, и, я бы сказал, "философия", серьезно отличаются от аналогичных характеристик Паскаля. Это очень серьезный недостаток. Нельзя сказать, что работать с API невозможно, но все же такое программирование связано с определенными трудностями. Популярный пакет DirectX также не пойдет, так что мечтающим написать собственную компьютерную игру придется огорчиться.
"Использование удобного Паскаля" затрудняет программирование вообще - на взаимодействии с операционной системой это никак не сказывается. В том числе, и на взаимодействии с "популярным пакетом DirectX"...
В общем, языки имеют свои положительные и отрицательные стороны. Мне кажется, стоит изучить оба. Если вы знакомы с Паскалем – начинайте с Delphi, это поможет вам освоиться с нелегким делом создания Windows-приложений. Затем переходите к C++, который поможет освоить "внутренние" возможности Windows и подготовит вас к работе с сетевыми технологиями Java. Удачи!
* * *
Полные комментарии к статье и собственная статья на эту тему чуть позже...
|
|