Глава 3. Языки программирования. Язык С++

Язык программирования, как средство управления компьютером

Теперь мы рассмотрим инструмент, с помощью которого мы и будем управлять компьютером. Т.к. компьютер "не понимает" человеческий язык, то объяснять мы ему будем то, что он должен сделать, с помощью компьютерного языка или языка программирования (как вам удобнее так и называйте). Программисты пишут свои программы на разных языках программирования, некоторые из них непосредственно понятны компьютеру - это машинные языки, другие же требуют промежуточных шагов трансляции (обработка его специальными программами, трансляторами, до уровня, понятного компьютеру). На сегодня существуют сотни языков программирования. Их можно разделить на три основных типа:

  1. Машинные языки
  2. Языки ассемблера
  3. Языки высокого уровня

Предыстория языков программирования

Рассмотрим краткую предысторию развития языков программирования. Итак, любой компьютер может непосредственно понимать лишь свой собственный машинный язык. Машинный язык - это "природный язык" определенного компьютера. Он определяется при проектировании аппаратных средств этого компьютера. Машинные языки в общем случае содержат строки чисел (в конечном счете сокращенные до единиц и нулей), которые являются командами компьютеру на выполнение большинства элементарных операций в тот или иной момент времени. Машинные языки машинно-зависимы, т.е. каждый машинный язык может быть использован только на компьютере одного определенного типа. Машинные языки тяжелы для человеческого восприятия, как это можно видеть из следующего примера программы на машинном языке, которая складывает сверхурочную зарплату с основной и запоминает результат как общую зарплату:

	+1300042774
	+1400593419
	+1200274027

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

	LOAD BASEPAY
	ADD OVERPAY
	STORE GROSSPAY

Хотя такой код более понятен людям, он непонятен компьютеру до тех пор, пока не будет преобразован в компьютерный код (т.е. в машинный язык). Напомню, что преобразование происходит с помощью специальной программы-транслятора, называемой ассемблером.

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

	grossPay = basePay + overTimePay;

Очевидно, что языки высокого уровня гораздо удобнее с точки зрения программистов по сравнению с языками ассемблера и машинными кодами. Языки программирования С и С++ относятся к числу наиболее мощных, гибких и наиболее распространенных языков программирования высокого уровня.

Краткая история С++

В нашем учебнике по программированию для начинающих в процессе обучения программированию мы будем использовать с целью задания команд нашему компьютеру язык программирования С++. Сейчас проведем небольшой экскурс в историю создания и развития этого замечательного языка программирования. Сразу хочу сказать, что некоторые слова вам будут непонятными, в этом нет, конечно же, ничего страшного, т.к. по ходу обучения программированию многое станет на свои места. Многое и должно быть непонятно - вы же только начинаете программировать!

Язык С++ развился из языка С, стал, так называемым, расширенным С (иногда его так и называют). А язык программирования С, в свою очередь, был развит из языка В Деннисом Ритчи. Первоначально С приобрел широкую известность как язык разработки операционной системы Unix. Сегодня фактически все новые операционные системы написаны на С или на С++, в том числе и Windows, которая написана на С++. Язык С++ - расширение С - и он был разработан Бьерном Страустропом (кстати, книгу в его исполнении "Язык программирования С++" вы можете скачать в разделе Скачать -> Книги по программированию) в начале 80-х годов в Bell Laboratories. С++ обеспечивает ряд свойств, которые "приводят в порядок" язык С, но, что более важно, он обеспечивает возможность объектно-ориентированного программирования. Это явилось революционной идеей в мире программного обеспечения. Быстрое, корректное и экономное создание программного обеспечения остается иллюзорной мечтой и это в то время, когда требуется проектирование нового и все более мощного программного обеспечения. Объекты - это эффективные повторно используемые компоненты программного обеспечения, моделирующие элементы реального мира. Разработчики программного обеспечения обнаруживают, что использование достижений модульного, объектно-ориентированного проектирования может значительно повысить продуктивности групп разработки по сравнению с предшествующей популярной технологией программирования, такой, как структурное программирование. Объектно-ориентированные программы легче понимать, корректировать и модифицировать. С++ - это гибридный язык, он предоставляет возможность программировать и в стиле С, и в объектно-ориентированном стиле, и в обоих стилях сразу.

Общие замечания о С++

С++ - является языком тяжелым для изучения (в виду того, что он очень много умеет в различных областях и, соответственно это желательно выучить), очень гибкий, широкий в своих возможностях и могучий язык программирования. Не пугайтесь сразу слова "трудный" - это совсем не значит, что в своих основах он сильно будет отличаться от всем известного Бейсика и Паскаля. Просто там, где Бейсик и Паскаль уже не работают и не могут чего-то сделать, язык С++ трудится на благо программиста. Изучение языка в данном учебнике начинается с простого и постепенно идет на усложнение, поэтому, если не перепрыгивать через главы, а читать и прочтенное закреплять практикой, то вам все будет понятно и никаких сложностей не возникнет.

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

Запомнить:

  1. Язык программирования - это инструмент, с помощью которого мы будем объяснять компьютеру то, что ему нужно сделать.
  2. С++ - это очень мощный и могучий язык программирования. При последовательном изучении и прохождении практики обучение не будет слишком сложным (а наоборот будет приятным и интересным), хотя усидчивость все-таки придется применить. Результаты не заставят себя долго ждать!
  3. Четкость и ясность в написании кода программы превыше всего.