Что такое программирование?¶
Программирование - это процесс превращения алгоритма в нотацию, написанную на языке программирования, которая может быть выполнена компьютером. Несмотря на существование большого количества различных языков программирования и типов компьютеров, самый первый и важный шаг - это иметь решение. Без алгоритма никакой программы быть не может.
Информатика - это не наука о программировании. Однако, программирование - важная часть того, чем занимаются учёные-информатики. Часто программирование для нас - это способ создать представление найденного решения. Вот почему воплощение в языке и процесс его создания являются фундаментальными частями дисциплины.
Алгоритмы описывают решение задачи в терминах данных, необходимых для представления сущностей задачи, и набора шагов, требуемых для получения конечного результата. Язык программирования должен предоставить способ для записи их обоих - данных и процесса. С этой целью в языках предусмотрены типы данных и управляющие конструкции.
Управляющие конструкции позволяют шагам алгоритма воплотиться подходящим и однозначным образом. Как минимум алгоритму требуются конструкции для последовательной обработки, отбора с целью принятия решения и итераций для повторяющегося управления. Пока язык предоставляет эти основные операторы, он может использоваться для реализации алгоритмов.
Все элементы данных представляются в компьютере как последовательности из нулей и единиц. Для того, чтобы придать им смысл, нужны типы данных. Они интерпретируют двоичные последовательности, чтобы мы могли думать о данных в терминах, имеющих смысл для решаемой задачи. Эти низкоуровневые встроенные типы данных (иногда называемые примитивными) обеспечивают строительные блоки для разработки алгоритмов.
Например, большинство языков программирования предлагают тип данных для целых чисел. Строки бинарных цифр в памяти компьютера могут быть интерпретированы как целые числа, с учётом тех характерных смыслов, которые мы обычно с ними ассоциируем (например, 23, 654 или -19). Кроме того, типы данных также предоставляют описание операций, в которых могут принимать участие их элементы. Для целых чисел такими операциями обычно являются сложение, вычитание и умножение. Мы закономерно ожидаем, что числовые типы данных могут участвовать в этих арифметических операциях.
Частые затруднения вызываются тем фактом, что задачи и их решения очень сложны. Простые предлагаемые языком конструкции и типы данных (которых, конечно, бывает достаточно для представления сложного решения) как правило невыгодно использовать в процессе поиска решения. Нам нужны способы управлять этой сложностью и помогать себе с решением поставленных задач.