XPEHOMETP
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Kardinalli PowerBasic - язык, весьма приятный в работе. Не в последнюю очередь это его свойство обусловлено энтузиазмом его пользователей, которые выкладывают на официальном форуме свои наработки по улучшению языка и разные полезные функции, а потом это все включается в очередной релиз. В результате PowerBasic имеет, к примеру, уникальные по удобству функции для работы с текстовыми переменными, которых нет в других коммерческих бейсиках, не говоря уже о бесплатном FreeBasic (хотя это во всех отношениях достойный продукт). Что не очень хорошо - граждане проводят жесткую маркетинговую политику и не раздают пробных шароварных версий. Тут либо покупать, либо пользоваться варезом. Вопрос о "качестве кодогенерации" весьма спорный. Неоспоримый факт, что получаемые экзешники очень малы. При этом компилятор умудряется выдавать весьма запутанный и непричесаный код (оптимизация-то практически никакая, компилятор однопроходной). Стало быть, скорость выполнения хромает. Чтобы не быть голословным, могу привести в пример простенький тест на скорость выполнения цикла. Статейка безбожно старая, но более новых я не нашел. В соответствии с полученными там результатами, PowerBasic по скорости ничуть не лучше последней не .NET-овской версии мелкомягкого Visual Basic 6.0, хотя в своей идеологии в свое время усиленно напирал на то, что переход с Visual Basic на PowerBasic поможет юзерам значительно ускорить их программы. С Visual Basic 4 и 5 это еще было правдой, а вот при сравнении с Visual Basic 6.0 стало понятным, что и сам PowerBasic не больно-то быстро работает. Согласно упомянутому тесту, коммерческий PureBasic, базирующийся на gcc, по скорости превосходит PowerBasic на голову, а бесплатный FreeBasic вообще оказался круче всех. Пунктик "Не требуется никаких дополнительных DLL, весь код помещается в исполняемом файле" тоже требует своего пояснения. Если посмотреть на отчет компилятора после создания ЕХЕ-файла, некоторый объем программы занимает ран-тайм модуль, привариваемый к экзешнику. Т.е. PowerBasic не имеет постоянных ран-тайм модулей на все случаи жизни, обычно выводимых в DLL, а этот модуль формируется в соответствии с потребностями программы и линкуется с ней статически. Если бы он был оформлен в виде DLL, как у Visual Basic, то PowerBasic работал бы еще медленнее. Размер рантайм-модуля определяется подключенными файлами, в которых содержатся описания используемых функций (типа header-файлов в С). При этом все прописанные в них функции будут обязательно задействованы в рантайм-модуле, что, несомненно, вносит свой вклад в тормознутость PowerBasic. С официального сайта PowerBasic можно скачать утилу, которая анализирует программу и метит неиспользуемые функции в подключаемых файлах как комментарии, в результате чего скорость работы заметно повышается. Ну и еще один неприятный момент, ставший для меня критическим: в борьбе за скорость выполнения программ создатели PowerBasic исключили всякую проверку правильности аргументов функций и возложили это дело на программиста. Скажем, если под знаком логарифма окажется отрицательное число, PowerBasic без малейших сомнений бросится вычислять этот логарифм. С совершенно непредсказуемыми последствиями. Программист в PowerBasic обязан сам прописать проверку положительности аргумента и предусмотреть нужные действия, если вдруг аргумент является отрицательным. Во всех нормальных языках программирования за программиста это делает компилятор. Поскольку мои попытки программирования связаны исключительно с вычислительными задачами, я этого переварить не смог. Еще одна неприятность, поджидающая достаточно опытного программиста: PowerBasic не удастся мешать ни с каким другим языком. Если, конечно, не оформлять часть программы, написанную на PowerBasic, в виде DLL - этот способ подойдет всегда. Но подключение DLL - это потеря времени. Когда-то раньше, на стадии консольных 16-битных программ, PowerBasic можно было спокойно мешать с Борландом (ибо вырос он из Борландовского бейсика). Сейчас это невозможно. Упомянутый коммерческий конкурент - PureBasic, основанный на gcc, позволяет это делать, хотя и не без определенных усилий. Бесплатный FreeBasic позволяет получать объектные файлы, вообще без малейших проблем подключаемые к программам, написанным на других языках. В общем, для вычислительных задач PowerBasic не слишком подходит. Но вот если бы мне пришлось программировать нечто гуевое (в смысле - с GUI) под винду для разбора текста - я бы выбрал PowerBasic. Поскольку сооружение GUI в нем, по моему мнению, наиболее простое из языков, основанных на директивном программировании, а работа с текстом вообще превосходит все мыслимое за исключением лиспа и родственных языков. |