Спецификации, определяющие набор правил
Программа, языки программирования. Основные понятия
Разработка программы включает два этапа:
– создание алгоритма,
– представление алгоритма в виде программы.
Требования к алгоритму:
– алгоритм записывается на формальном языке, исключающем неоднозначность толкования,
– исполнитель должен быть способен выполнять команды алгоритма автоматически; отдельную операцию, действие по изначально заданным условиям не имеет смысла детализировать,
– описание решения должно быть абсолютно полным и учитывать все возможные ситуации.
Таким образом алгоритм представляет собой детализированный до необходимого уровня способ получения результатов, удовлетворяющих поставленным условиям, по исходным данным.
Программа – это последовательность машинных инструкций, описывающая алгоритм.
Для создания компьютерных программ используются специальные языки программирования.
Алгоритм – основная идея решения, программа – связана с записью алгоритма на конкретном языке программирования.
Язык программирования – формальная знаковая система (искусственный формализованный язык), предназначенная для записи программ.
Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении программы.
Лексика – словарный состав языка, совокупностей слов (частей) языка.
Синтаксис – набор правил по построению программы, комбинации символов языка.
Семантика – описание смысла команд и конструкций языка.
Синтаксис относится к символьному представлению, семантика – к значению, к представляемой концепции.
Спецификации, определяющие набор правил
Вид типизации данных
Тип данных – система, по которой данные организуются в программе.
Данные – информация, представленная в формализованном виде, пригодном для автоматизированной обработки.
Языки можно разделить на типизированные и бестиповые.
По критерию типов данных языки программирования делятся на следующие группы.
Бестиповые языки позволяют осуществлять любую операцию над любыми данными, которые в них представляются цепочками бит произвольной длины. Бестиповыми является большинство языков ассемблера.
Структуры данных
Системы типов в языках высокого уровня позволяют определять сложные, составные типы. Они представлены особыми синтаксическими конструкциями в языках высокого уровня.
Структура данных – множество элементов данных и связей между ними.
Структура данных определяет их семантику, а также способы организации данных и управления ими.
Данные имеют форму чисел, текста, символов, последовательностей и других. Но, компьютер оперирует только с двоичными цифрами в соответствии с набором алгоритмов, определяемых системой команд центрального процессора.
Абстрактная (логическая) структура данных – структура данных без учета при рассмотрении ее представления в машинной памяти.
Физическая структура данных определяет способ физического представления данных в машинной памяти.
В вычислительной системе существуют процедуры, осуществляющие отображение логической структуры в физическую, и обратно.
Пример
Доступ к элементу двумерного массива на логическом уровне реализуется указанием номеров строки и столбца в прямоугольной таблице, на пересечении которых расположен элемент. На физическом уровне к элементу массива доступ осуществляется с помощью функции адресации, которая при известном начальном адресе массива в машинной памяти преобразует номера строки и столбца в адрес соответствующего элемента массива.
Различают простые (базовые, примитивные) структуры данных и интегрированные (структурированные, сложные).
Простыми структуры данных не могут быть разделены на составные части, большие, чем биты.
Для физической структуры важным является то обстоятельство, что в данной машинной архитектуре и в данной системе программирования всегда можно заранее знать, каков будет размер выбранного простого типа и какова структура его размещения в памяти. С логической точки зрения простые данные являются неделимыми единицами.
Сложные структуры данных состоят из частей – простых или сложных структуры данных.
Вид транслятора
Программирование начиналось с записи программ непосредственно в виде машинных команд в двоичном коде. Для этого необходимо знать адреса ячеек памяти, в которых хранятся данные, количество ячеек памяти для вновь сохраняемых данных и др. Этот подход к программированию называется адресным.
Для упрощения программирования был разработан язык ассемблера, который позволяет записывать машинные команды в символическом виде – язык мнемокодов. Мнемокоды или мнемоники (греч. Mnemonikos, mnemon – запомнить) – буквенные обозначения машинных двоичных команд. Для упрощения работы с ячейками памяти было введено понятие переменной.
Определение
Переменная – буквенное обозначение области памяти, в котором хранится некоторое значение.
Обратите внимание, понятие переменной в программировании отличается от математического понятия.
Для перевода мнемокодов в машинные инструкции, имен переменных – в адреса ячеек памяти, использовалась специальная программа – транслятор. Транслятор является средством запуска программы.
Разные типы процессоров имеют разные наборы команд.
Определение
Языком программирования низкого уровня называют язык программирования, ориентированный на конкретный тип процессора и учитывающий его особенности.
В данном определении термин «низкий» означает приближенность к машинному коду и ориентированность на конкретные команды процессора. Язык ассемблера является низкоуровневым языком. Конкретной компьютерной архитектуре соответствует свой язык ассемблера. С помощью таких языков создаются очень эффективные программы, т.к. разработчик имеет доступ ко всем возможностям процессора.
Особенности разработки программ на языке низкого уровня:
– необходимо обладать знаниями об устройстве компьютера,
– затрудняется отладка больших приложений,
– результирующая программа не может быть перенесена на другой тип процессора.
При развитии технологий разработки программ появлялись новые трансляторы, которые преобразовывались в машинные команды более сложные операции:
– ввод данных с различных устройств, либо из файла,
– вывод данных на устройство, либо в файл,
– выполнение определенных операций над числами, строками и другими типами данных,
– реализация выбора при проверке некоторого условия – условный оператор,
– повторение группы действий с изменением параметров.
Такие языки стали называться структурными, или языками высокого уровня.
Особенности разработки программ на языке высокого уровня:
– особенности компьютерных архитектур в них не учитываются, значит тексты программ переносимы на другие платформы, для которых создан транслятор языка программирования,
– разработка программ упрощается созданием понятных и мощных команд.
Выделилось два типа трансляторов, преобразующих исходный текст программ в машинные команды – интерпретаторы и компиляторы.
Ассемблер переводит программу на языке ассемблера в машинный код. Каждой строке исходного текста ставится в соответствие одна команда процессора.
Определение
Интерпретатор – транслятор, который преобразует и исполняет программу на языке высокого уровня строчка за строчкой, напрямую взаимодействуя с операционной системой. Интерпретатор непосредственно выполняет (интерпретирует) исходный текст программы без какого-либо предварительного перевода. Программа при этом остается на исходном языке и не может быть запущена без интерпретатора.
Определение
Компилятор – транслятор, который переводит текст программы на языке высокого уровня в машинный код. В результате одна строка текста программы переходит в тысячи команд процессора. При этом программа преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и записывается в исполнимый модуль, который может быть запущен на исполнение как отдельная программа.
На современном уровне развития языков программирования для компилируемых языков существуют интерпретаторы, и наоборот.
Скомпилированные программы выполняются быстрее и не требуют дополнительного программного обеспечения, т.к. уже переведены на машинный язык. Но, вместе с каждым изменением программы требуется ее перекомпиляция. Кроме того, скомпилированная программа может выполняться на том типе компьютеров, и, как правило, под той операционной системой, на которую был рассчитан компилятор.
Программы на интерпретируемых языках можно запускать сразу, после изменения. Программа может быть запущена на разных типах машин и операционных систем. Однако, интерпретируемые программы выполняются медленнее и не могут быть запущены без установленной программы – интерпретатора.
Концепции программирования
Концепция программирования включает совокупность основополагающих идей и подходов, определяющих модель представления данных и их обработки, а также методологии программирования.
Концепции программирования:
– структурное,
– процедурное,
– объектно-ориентированное.
Программа, языки программирования. Основные понятия
Разработка программы включает два этапа:
– создание алгоритма,
– представление алгоритма в виде программы.
Требования к алгоритму:
– алгоритм записывается на формальном языке, исключающем неоднозначность толкования,
– исполнитель должен быть способен выполнять команды алгоритма автоматически; отдельную операцию, действие по изначально заданным условиям не имеет смысла детализировать,
– описание решения должно быть абсолютно полным и учитывать все возможные ситуации.
Таким образом алгоритм представляет собой детализированный до необходимого уровня способ получения результатов, удовлетворяющих поставленным условиям, по исходным данным.
Программа – это последовательность машинных инструкций, описывающая алгоритм.
Для создания компьютерных программ используются специальные языки программирования.
Алгоритм – основная идея решения, программа – связана с записью алгоритма на конкретном языке программирования.
Язык программирования – формальная знаковая система (искусственный формализованный язык), предназначенная для записи программ.
Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении программы.
Лексика – словарный состав языка, совокупностей слов (частей) языка.
Синтаксис – набор правил по построению программы, комбинации символов языка.
Семантика – описание смысла команд и конструкций языка.
Синтаксис относится к символьному представлению, семантика – к значению, к представляемой концепции.
Спецификации, определяющие набор правил
Вид типизации данных
Тип данных – система, по которой данные организуются в программе.
Данные – информация, представленная в формализованном виде, пригодном для автоматизированной обработки.
Языки можно разделить на типизированные и бестиповые.
По критерию типов данных языки программирования делятся на следующие группы.
Бестиповые языки позволяют осуществлять любую операцию над любыми данными, которые в них представляются цепочками бит произвольной длины. Бестиповыми является большинство языков ассемблера.
Структуры данных
Системы типов в языках высокого уровня позволяют определять сложные, составные типы. Они представлены особыми синтаксическими конструкциями в языках высокого уровня.
Структура данных – множество элементов данных и связей между ними.
Структура данных определяет их семантику, а также способы организации данных и управления ими.
Данные имеют форму чисел, текста, символов, последовательностей и других. Но, компьютер оперирует только с двоичными цифрами в соответствии с набором алгоритмов, определяемых системой команд центрального процессора.
Абстрактная (логическая) структура данных – структура данных без учета при рассмотрении ее представления в машинной памяти.
Физическая структура данных определяет способ физического представления данных в машинной памяти.
В вычислительной системе существуют процедуры, осуществляющие отображение логической структуры в физическую, и обратно.
Пример
Доступ к элементу двумерного массива на логическом уровне реализуется указанием номеров строки и столбца в прямоугольной таблице, на пересечении которых расположен элемент. На физическом уровне к элементу массива доступ осуществляется с помощью функции адресации, которая при известном начальном адресе массива в машинной памяти преобразует номера строки и столбца в адрес соответствующего элемента массива.
Различают простые (базовые, примитивные) структуры данных и интегрированные (структурированные, сложные).
Простыми структуры данных не могут быть разделены на составные части, большие, чем биты.
Для физической структуры важным является то обстоятельство, что в данной машинной архитектуре и в данной системе программирования всегда можно заранее знать, каков будет размер выбранного простого типа и какова структура его размещения в памяти. С логической точки зрения простые данные являются неделимыми единицами.
Сложные структуры данных состоят из частей – простых или сложных структуры данных.
Вид транслятора
Программирование начиналось с записи программ непосредственно в виде машинных команд в двоичном коде. Для этого необходимо знать адреса ячеек памяти, в которых хранятся данные, количество ячеек памяти для вновь сохраняемых данных и др. Этот подход к программированию называется адресным.
Для упрощения программирования был разработан язык ассемблера, который позволяет записывать машинные команды в символическом виде – язык мнемокодов. Мнемокоды или мнемоники (греч. Mnemonikos, mnemon – запомнить) – буквенные обозначения машинных двоичных команд. Для упрощения работы с ячейками памяти было введено понятие переменной.
Определение
Переменная – буквенное обозначение области памяти, в котором хранится некоторое значение.
Обратите внимание, понятие переменной в программировании отличается от математического понятия.
Для перевода мнемокодов в машинные инструкции, имен переменных – в адреса ячеек памяти, использовалась специальная программа – транслятор. Транслятор является средством запуска программы.
Разные типы процессоров имеют разные наборы команд.
Определение
Языком программирования низкого уровня называют язык программирования, ориентированный на конкретный тип процессора и учитывающий его особенности.
В данном определении термин «низкий» означает приближенность к машинному коду и ориентированность на конкретные команды процессора. Язык ассемблера является низкоуровневым языком. Конкретной компьютерной архитектуре соответствует свой язык ассемблера. С помощью таких языков создаются очень эффективные программы, т.к. разработчик имеет доступ ко всем возможностям процессора.
Особенности разработки программ на языке низкого уровня:
– необходимо обладать знаниями об устройстве компьютера,
– затрудняется отладка больших приложений,
– результирующая программа не может быть перенесена на другой тип процессора.
При развитии технологий разработки программ появлялись новые трансляторы, которые преобразовывались в машинные команды более сложные операции:
– ввод данных с различных устройств, либо из файла,
– вывод данных на устройство, либо в файл,
– выполнение определенных операций над числами, строками и другими типами данных,
– реализация выбора при проверке некоторого условия – условный оператор,
– повторение группы действий с изменением параметров.
Такие языки стали называться структурными, или языками высокого уровня.
Особенности разработки программ на языке высокого уровня:
– особенности компьютерных архитектур в них не учитываются, значит тексты программ переносимы на другие платформы, для которых создан транслятор языка программирования,
– разработка программ упрощается созданием понятных и мощных команд.
Выделилось два типа трансляторов, преобразующих исходный текст программ в машинные команды – интерпретаторы и компиляторы.
Ассемблер переводит программу на языке ассемблера в машинный код. Каждой строке исходного текста ставится в соответствие одна команда процессора.
Определение
Интерпретатор – транслятор, который преобразует и исполняет программу на языке высокого уровня строчка за строчкой, напрямую взаимодействуя с операционной системой. Интерпретатор непосредственно выполняет (интерпретирует) исходный текст программы без какого-либо предварительного перевода. Программа при этом остается на исходном языке и не может быть запущена без интерпретатора.
Определение
Компилятор – транслятор, который переводит текст программы на языке высокого уровня в машинный код. В результате одна строка текста программы переходит в тысячи команд процессора. При этом программа преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и записывается в исполнимый модуль, который может быть запущен на исполнение как отдельная программа.
На современном уровне развития языков программирования для компилируемых языков существуют интерпретаторы, и наоборот.
Скомпилированные программы выполняются быстрее и не требуют дополнительного программного обеспечения, т.к. уже переведены на машинный язык. Но, вместе с каждым изменением программы требуется ее перекомпиляция. Кроме того, скомпилированная программа может выполняться на том типе компьютеров, и, как правило, под той операционной системой, на которую был рассчитан компилятор.
Программы на интерпретируемых языках можно запускать сразу, после изменения. Программа может быть запущена на разных типах машин и операционных систем. Однако, интерпретируемые программы выполняются медленнее и не могут быть запущены без установленной программы – интерпретатора.