пятница, августа 24, 2007

Скриптовые языки — оно вам надо?

Вот Вы, да, Вы. Зачем Вы используете скриптовые языки? У Вас есть большая программа и хочется добавить в нее гибкости, сделать расширяемой, менять что-то отдельно, не трогая основы? А как это сделать — конечно же, добавить скриптовую обвязку: Lua, Python, Tcl, Lisp, да что угодно. Некоторые даже придумывают собственные языки.

Что характерно — скриптовый язык практически никогда не является языком, на котором написана основная программа. Правильно, зачем делать скрипты сложными. Нужен язык попроще, специально заточенный под нашу задачу.

Однако, использование скриптового языка влечет за собой определенные проблемы: надо писать обвязку, скриптовый язык медленнее основного и, зачастую, не такой мощный. Да еще, в придачу, получаем геморрой с отладкой.

Тем не менее, скрипты «со скрипом» прикручиваются. Ведь на них все пишется короче и быстрее, а программа становится расширяемой — игра стоит свеч!

СТОП. А теперь задумаемся. Не потому ли мы используем скриптовые языки, что наш основной язык (например, С++) является слишком сложным и низкоуровневым для простых, «скриптовых» задач?

Не только — скажете Вы:

  • скрипты экономят время на компиляцию;


  • скрипты можно хранить отдельно от основной программы;


  • и, наверное, еще что-то.

Только вот время, сэкономленное на компиляции, с лихвой потратится на отладку. А хранить отдельно от основной программы можно многое. Как минимум OCaml и Haskell умеют загружать отдельные модули в основную программу. Причем модули, скомпилированные в нативный, а не в байт-код.

Более того, практически на любом языке можно сделать динамически загружаемый модуль (.dll или .so), который хранится отдельно от основной программы. А если не использовать в качестве языка С++ с морем template-ов, то время компиляции такого модуля становится несущественным.

Все-таки, я прихожу к выводу, что скрипты используют исключительно из-за сложности и неприспособленности для решения простых задач основного языка (да-да, С++).

Может быть, стоит сменить основной язык разработки? И тогда Вы забудете про множество глупых проблем (ошибки в скриптах и обвязке; тормоза при загрузке и работе), а заодно начнете использовать гораздо более продуктивные инструменты.

Поверьте, OCaml и Haskell — лучшие скриптовые языки, которые я знаю. А уж то, что они хороши и как основной язык, думаю знают все.

Короче. К черту скрипты, пишем все на одном мощном, удобном, кратком и продуктивном языке.