Программа представляет собой набор инструкций, которые предписывают компьютеру выполнить различные действия; иногда действие, которое нужно выполнить, зависит от того, что случилось в результате выполнения предыдущей операции. Этот раздел дает вам обзор двух основных способов, которыми вы можете выдавать инструциии, или "команды", как их обычно называть. В одном способе используется интерпретатор, а в другом компилятор. Так как человеческие языки слишком трудны для недвусмысленного понимания компьютером, команды обычно записываются на одном из специально разработанных языке программирования.
В случае использования интерпретатора язык представляет собой оболочку, в которой вы набираете команды, а оболочка их выполняет. Для более сложных программ вы можете набрать команды в файле и заставить интерпретатор загрузить файл и выполнить команды из него. Если что-то происходит не так, интерпретатор передает управление отладчику, с помощью которого вы решаете возникшую проблему.
Плюсом этого подхода является возможность видеть результаты выполнения ваших команд немедленно, а ошибки могут быть быстро исправлены. Самый большой минус проявляется, когда вы собираетесь поделиться с кем-нибудь вашими программами. Они должны иметь точно такой же интерпретатор или вы должны каким-то образом передать его, а тем нужно понять, как его использовать. Кроме того, пользователям может не понравиться перспектива оказаться в отладчике в случае нажатия не той клавиши! С точки зрения производительности, интерпретаторы могут использовать много памяти, и, как правило, генерируемый ими код не так эффективен, как код, генерируемый компиляторами.
По моему мнению, использование интерпретационных языков являются хорошим началом, если ранее вы не занимлись программированием. Такой способ работы обычно используется с языками типа Lisp, Smalltalk, Perl и Basic. Можно также отметить, что оболочка Unix (sh, csh) является интерпретатором, и многие люди пишут "скрипты" для оболочек для облегчения выполнения различных "доморощенных" задач на своих машинах. На самом деле, частью философии Unix было предоставление множества маленьких вспомогательных программ, которые можно связать вместе в скриптах оболочки для выполнения полезных действий.
Ниже приводится список интепретаторов, которые доступны в виде пакаджей FreeBSD, с кратким обсуждением некоторых самых популярных интерпретационных языков.
Для получения одного из этих пакаджей вам достаточно щелкнуть на ссылке, а затем выполнить команду
# pkg_add package name
пользователем root. Для работы пакаджа, как правило, требуется полнофункциональная система FreeBSD версии 2.1.0 и выше!
Это сокращение от Beginner's All-purpose Symbolic Instruction Code. Разработан в 1950-х годах для обучения студентов университета прграммированию и в 1980-х поставлялся с каждым уважающим себя персональным компьютером; BASIC был первым языком программирования для многих программистов. Он лежит в основе Visual Basic.
Во FreeBSD имеются Bywater Basic Interpreter и Phil Cockroft's Basic Interpreter (ранее Rabbit Basic) в виде пакаджей FreeBSD
Язык, который был разработан в конце 1950-х в качестве альтернативы "вычислительным" языкам, популярным в то время. Вместо того, чтобы опираться на вычисления, List опирается на списки; на самом деле название является сокращением от "List Processing". Очень популярен в области AI (Искуственного Интеллекта).
Lisp является очень мощным и многообразным языком, но он может оказаться достаточно большим и громоздким.
Во FreeBSD имеется GNU Common Lisp в виде пакаджа.
Очень часто используется системными администраторами для написания скриптов; также часто используется на серверах World Wide Web для написания CGI-скриптов.
Самая последняя версия (версия 5) поставляется с FreeBSD.
Диалект языка Lisp, более компактный и понятный, чем Common Lisp. Популярен в университетах, так как достаточно прост для обучения аспирантов в качестве первого языка и имеет достаточно высокий уровень для использования в исследовательской работе.
Во FreeBSD имеются пакаджи для Elk Scheme Interpreter, MIT Scheme Interpreter и SCM Scheme Interpreter.
Компиляторы достаточно сильно отличаются от интерпретаторов. Сначала вы записываете свой код в файл (или файлы), используя редактор. Затем вы запускаете компилятор и смотрите, воспринимает ли он вашу программу. Если она не компилируется, вы скрежещете зубами и возвращаетесь к редактированию; если код компилируется и программа выдается, вы можете запустить ее в приглашении оболочки или в отладчике для проверки правильности работоспособности. [1]
Обычно этот процесс не так непосредственен, как при использовании интерпретатора. Однако он позволяет вам выполнять множество действий, которые затруднительно или невозможно сделать в интерпретаторе, к примеру, написать код, тесно взаимодействуюший с операционной системой--или даже написать собственную операционную систему! Это также полезно, если вам нужно написать очень эффективный код, так как компилятор может затратить время на оптимизацию кода, что может оказаться неудобным для интерпретатора. Кроме того, распространить программу, написанной для компилятора, обычно проще, чем для интерпретатора--вы можете просто предоставить копию выполнимого файла, полагая, что используется та же операционная система, что и у вас.
В число компиляционных языков входят Pascal, C и C++. C и C++ являются непрощающими ошибки языками, и больше подходят для опытных программистов; Pascal, с другой стороны, разрабатывался как язык для обучения, и хорош для начала. К сожалению, во FreeBSD язык Pascal не поддерживается, если не считать конвертера Pascal-в-C в портах.
Так как цикл редактирование-компиляция-запуск-отладка неудобен при использовании отдельных программ, многие производители коммерческих компиляторов предлагают интегрированные среды разработки (сокращенно IDE - Integrated Development Environment). Во FreeBSD нет IDE такого рода; однако для этих целей возможно использование редактора Emacs. Это обсуждается в Section 2.7.
[1] |
Если вы запускаете ее из оболочки, то можете получить аварийный дапм памяти. |