Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #53, АПРЕЛЬ 2005 г.

На чем и как

Крис Касперски ака мыщъх

Спецвыпуск: Хакер, номер #053, стр. 053-056-2


Приплюснутый С - это целый мир. Богатый ассортимент языковых возможностей еще не обязывает пользоваться ими. Объектный подход бесполезен в драйверах. Сколько программисты ни пытались найти ему применение - так и не получилось, а вот парадигму "улучшенного С" (объявление переменных по месту использования, а не в начале программы и т.д.) используют многие. Правда, в драйверах (равно как и в модулях сопряжения со средой) жесткая типизация приплюснутого С порождает дикий кастинг (явное преобразование типов), уродуя код и отнимая массу времени. Автоматической сборки мусора в С++ нет, а значит, от утечек памяти он не спасает (даже если используются "умные" указатели и прочие извращения). Механизмы для работы со строками переменной длины как будто бы появились, но переполнения буферов встречаются и до сих пор с завидной регулярностью. Так что С++ - это не панацея от всех бед, а всего лишь объект раздутой рекламной кампании. Страуструп оценивал количество пользователей приплюснутого С в 5 000 программистов по всему миру. Вряд ли он ошибался. Феноменальная популярность плюсов вызвана скорее высокой себестоимостью его компиляторов и вытекающей отсюда раскруткой (надо же как-то возвращать вложенное), чем техническими достоинствами.

Чистых компиляторов языка С уже давно не существует, сейчас они все поставляются вместе с плюсами. На одной лишь x86 платформе их насчитывается более десятка. Среди них есть как бесплатные, так и коммерческие, причем бесплатных значительно больше. По качеству кодогенерации лидируют Microsoft Visual C++ (входящий в состав халявных Platform SDK и Visual C Toolkit) и Intel C++ (версия под Windows условно-бесплатная, а под Linux - бесплатная для некоммерческого использования, однако никто не запрещает нам компилировать системно-независимые куски кода в объектные файлы под Linux и линковать их с Windows-приложениями). WATCOM С++, когда-то оптимизировавший круче всех, прекратил свое существование и теперь развивается в рамках проекта Open WATCOM, который, по свидетельствам очевидцев, больше глючит, чем работает. Borland C++ тоже бесплатен, однако с качеством кодогенерации у него кранты. Это худший оптимизирующий компилятор из всех! В мире *nix большой популярностью пользуется GCC, портированный в том числе и под Windows. Однако под окнами он чувствует себя неуютно, и особого резона в нем нет.

Pascal, получивший второе рождение в среде Delphi, изначально задумывался как "студенческий" язык, который бы демонстрировал основные концепции структурного программирования. ООП в него перетащили уже потом, да и то криво. Получилось что-то вроде морской свинки. И не свинки, и не морской, зато от одного названия сдохнуть можно. Подход, исповедуемый Pascal'ем, находится где-то между Бейсиком и С, поэтому многие называют его "игрушечным" языком программирования. Но именно такой язык и нужен разработчикам интерфейсов! Не зря Borland остановила на нем свой выбор. Delphi намного удобнее появившегося вслед за ним C++ Builder (хотя тут можно и поспорить), но как бы там ни было, это коммерческий продукт, который хочет денежку. Приложения, разработанные в Delphi, с некоторыми ограничениями можно откомпилировать бесплатным транслятором Free Pascal, хотя для разработки с нуля Free Pascal непригоден, так как у него нет соответствующей IDE. То есть пригоден, конечно, но только не при визуальном подходе.

Назад на стр. 053-056-1  Содержание  Вперед на стр. 053-056-3