Программа представляет собой набор инструкций, которые предписывают компьютеру выполнить различные действия; иногда действие, которое нужно выполнить, зависит от того, что случилось в результате выполнения предыдущей операции. Этот раздел дает вам обзор двух основных способов, которыми вы можете выдавать инструкции, или ''команды'', как их обычно называть. В одном способе используется интерпретатор, а в другом компилятор. Так как человеческие языки слишком трудны для недвусмысленного понимания компьютером, команды обычно записываются на одном из специально разработанных языке программирования.
В случае использования интерпретатора язык представляет собой оболочку, в которой вы набираете команды, а оболочка их выполняет. Для более сложных программ вы можете набрать команды в файле и заставить интерпретатор загрузить файл и выполнить команды из него. Если что-то происходит не так, интерпретатор передает управление отладчику, с помощью которого вы решаете возникшую проблему.
Плюсом этого подхода является возможность видеть результаты выполнения ваших команд немедленно, а ошибки могут быть быстро исправлены. Самый большой минус проявляется, когда вы собираетесь поделиться с кем-нибудь вашими программами. Они должны иметь точно такой же интерпретатор или вы должны каким-то образом передать его, а тем нужно понять, как его использовать. Кроме того, пользователям может не понравиться перспектива оказаться в отладчике в случае нажатия не той клавиши! С точки зрения производительности, интерпретаторы могут использовать много памяти, и, как правило, генерируемый ими код не так эффективен, как код, генерируемый компиляторами.
По моему мнению, использование интерпретационных языков являются хорошим началом, если ранее вы не занимались программированием. Такой способ работы обычно используется с языками типа Lisp, Smalltalk, Perl и Basic. Можно также отметить, что оболочка Unix (sh, csh) является интерпретатором, и многие люди пишут ''скрипты'' для оболочек для облегчения выполнения различных ''доморощенных'' задач на своих машинах. На самом деле, частью философии Unix было предоставление множества маленьких вспомогательных программ, которые можно связать вместе в скриптах оболочки для выполнения полезных действий.
Ниже приводится список интерпретаторов, которые доступны в виде пакаджей FreeBSD, с кратким обсуждением некоторых самых популярных интерпретационных языков.
Для получения одного из этих пакаджей вам достаточно щёлкнуть по ссылке на него, сгрузить пакадж, а затем установить его, запустив команду:
# pkg_add имя пакаджа
пользователем 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 является очень мощным и многообразным языком, но он может оказаться достаточно большим и громоздким.
Различные реализации Lisp, которые могут работать в UNIX-системах, во FreeBSD доступны в виде пакаджей. GNU Common Lisp, CLISP Бруно Хэйбла (Bruno Haible) и Майкла Столла (Michael Stoll), CMUCL, включающий, кроме всего прочего, и тщательно оптимизированный компилятор, или более простые реализации Lisp, такие как SLisp, в котором большинство конструкций Common Lisp реализовано несколькими сотнями строк кода на языке C.
Очень часто используется системными администраторами для написания скриптов; также часто используется на серверах World Wide Web для написания CGI-скриптов.
Для всех релизов FreeBSD язык Perl доступен в виде пакаджа, а в релизах 4.x включён в базовый комплект системы и устанавливается как /usr/bin/perl.
Диалект языка Lisp, более компактный и понятный, чем Common Lisp. Популярен в университетах, так как достаточно прост для обучения аспирантов в качестве первого языка и имеет достаточно высокий уровень для использования в исследовательской работе.
Во FreeBSD имеются пакаджи для Elk Scheme Interpreter, MIT Scheme Interpreter и SCM Scheme Interpreter.
Icon является языком высокого уровня с расширенными возможностями по обработке строк и структур. Во FreeBSD имеется соответствующий пакадж.
Logo является лёгким для изучения языком, который использовался в различных курсах в качестве языка для ознакомления с программированием. Он является прекрасным инструментом для обучения программированию с ранних лет, так как делает создание интересных геометрических узоров простой задачей, доступной очень маленьким детям.
Пакадж, имеющийся во FreeBSD, содержит интерпретатор LOGO Брайана Хэрви.
Python является объектно-ориентированным интерпретационным языком. Его сторонники настаивают, что он является лучшим языком, с которого стоит начинать программировать, так как он относительно прост, но не является ограниченным, как другие популярные языки-интерпретаторы, которые используются при разработке больших и сложных приложений (Perl и Tcl - примеры языков, часто применяемых для решения подобных задач).
Пакадж с последней версией Python для FreeBSD можно найти здесь.
Tcl является встраиваемым интерпретационным языком, который стал широко использоваться и приобрел популярность благодаря своей переносимости на многие платформы. Он может использоваться как для быстрого создания небольших прототипов приложений, так и (вместе с инструментальным пакетом Tk для разработки GUI) полноценных многофункциональных программ.
Для FreeBSD имеются различные версии Tcl в виде пакаджей. На момент написания этого документа последней была Tcl version 8.3.
Компиляторы достаточно сильно отличаются от интерпретаторов. Сначала вы записываете свой код в файл (или файлы), используя редактор. Затем вы запускаете компилятор и смотрите, воспринимает ли он вашу программу. Если она не компилируется, вы скрежещете зубами и возвращаетесь к редактированию; если код компилируется и программа выдается, вы можете запустить ее в приглашении оболочки или в отладчике для проверки правильности работоспособности. [1]
Обычно этот процесс не так непосредственен, как при использовании интерпретатора. Однако он позволяет вам выполнять множество действий, которые затруднительно или невозможно сделать в интерпретаторе, к примеру, написать код, тесно взаимодействующий с операционной системой--или даже написать собственную операционную систему! Это также полезно, если вам нужно написать очень эффективный код, так как компилятор может затратить время на оптимизацию кода, что может оказаться неудобным для интерпретатора. Более того, распространять программу, написанную для компилятора, обычно проще, чем для интерпретатора--вы можете просто предоставить копию выполнимого файла, полагая, что используется та же операционная система, что и у вас.
В число компиляционных языков входят Pascal, C и C++. C и C++ являются не прощающими ошибки языками, и больше подходят для опытных программистов; Pascal, с другой стороны, разрабатывался как язык для обучения, и хорош для начала. В базовую поставку системы FreeBSD поддержка Pascal не включена, однако в коллекцию портов включён компилятор GNU Pascal Compiler в виде lang/gpc.
Так как цикл редактирование-компиляция-запуск-отладка неудобен при использовании отдельных программ, многие производители коммерческих компиляторов предлагают интегрированные среды разработки (сокращённо IDE - Integrated Development Environment). В базовую поставку FreeBSD IDE не входит, однако в дереве портов имеется evel/kdevelop, и в этих целях многие используют Emacs. Использование Emacs в качестве IDE обсуждается в Разд. 2.7.
[1] |
Если вы запускаете ее из оболочки, то можете получить аварийный дамп памяти. |
Пред. | Начало | След. |
Введение | Уровень выше | Компиляция при помощи cc |
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.