На базовом уровне (уровень машинного языка) компьютер может выполнять только очень простые операции. Компьютер выполняет сложные задачи, объединяя большое количество таких операций. Такие задачи должны быть «заскриптованы» программами во всей полноте и мельчайших подробностях. Создание сложных программ никогда не будет по-настоящему легким, но с этой трудностью можно справиться в некоторой степени, если придать программе четкую общую структуру. Разработка общей структуры программы — это то, что я называю «программированием в целом».

Программирование в малых масштабах, которое иногда называют кодированием, означает заполнение деталей этого проекта. Детали представляют собой четкие пошаговые инструкции для выполнения довольно небольших задач. Когда вы программируете, вы работаете довольно близко к машине с некоторыми из тех же понятий, которые вы могли бы использовать в машинном языке: ячейки памяти, арифметические операции, циклы и переходы. В языке высокого уровня, таком как Java, вы можете работать с этими понятиями на уровне, на несколько ступеней выше машинного языка. Тем не менее, вам все равно придется побеспокоиться о том, чтобы точно определить все детали.

В этой и следующей главах рассматриваются возможности программирования в малом на языке программирования Java. Не вводите термин программирование в малом в заблуждение, думая, что этот материал прост или не важен. Этот материал является важной основой для всех видов программирования. Если вы этого не понимаете, вы не сможете писать программы, как бы хорошо вы ни разрабатывали их крупномасштабную структуру.

Базовое Java-приложение

Программа — это последовательность инструкций, которые компьютер может выполнить для выполнения какой-либо задачи. Достаточно простая идея, но для того, чтобы компьютер мог использовать инструкции, они должны быть записаны в форме, которую может использовать компьютер. Это означает, что программы должны быть написаны на языках программирования. Языки программирования отличаются от обычных человеческих языков тем, что они совершенно недвусмысленны и очень строги в отношении того, что разрешено, а что нет в программе. Правила, определяющие, что разрешено, называются синтаксисом языка. Синтаксические правила определяют базовый словарь языка и то, как программы могут быть построены с использованием таких элементов, как циклы, ответвления и подпрограммы. Синтаксически корректная программа — это программа, которая может быть успешно скомпилирована или интерпретирована; программы с синтаксическими ошибками будут отклонены (надеюсь, с полезным сообщением об ошибке, которое поможет вам решить проблему).

Таким образом, чтобы стать успешным программистом, вы должны детально изучить синтаксис языка программирования, который вы используете. Однако синтаксис — это только часть истории. Недостаточно написать программу, которая будет работать — вам нужна программа, которая будет работать и выдавать правильный результат! То есть смысл программы должен быть правильным. Значение программы называется ее семантикой. Семантически корректная программа — это та, которая делает то, что вы от нее хотите.

Кроме того, программа может быть синтаксически и семантически правильной, но все же довольно плохой программой. Правильно использовать язык — это не то же самое, что хорошо им пользоваться. Например, хорошая программа имеет «стиль». Она написана таким образом, чтобы людям было легко ее читать и понимать. Он следует соглашениям, которые будут знакомы другим программистам. И у него есть общий дизайн, который будет понятен читателям. Компьютер совершенно не обращает внимания на такие вещи, но для человека-читателя они имеют первостепенное значение. Эти аспекты программирования иногда называют прагматикой.

Когда я представляю новую языковую функцию, я объясняю синтаксис, семантику и некоторые прагматические аспекты этой функции. Вы должны запомнить синтаксис; это легкая часть. Затем вы должны получить представление о семантике, следуя приведенным примерам, убедившись, что вы понимаете, как они работают, и, возможно, написав собственные короткие программы, чтобы проверить свое понимание. И вы должны попытаться оценить и усвоить прагматику — это означает научиться хорошо использовать языковую функцию со стилем, который вызовет восхищение у других программистов.

Конечно, даже если вы ознакомились со всеми отдельными особенностями языка, это не делает вас программистом. Вам все еще нужно научиться создавать сложные программы для решения конкретных задач. Для этого вам понадобится и опыт, и вкус. В этом учебнике вы найдете советы по разработке программного обеспечения.