I. Развитие языков программирования
Определения:
ANSI – American National Standards Institute - Национальный Институт Стандартизации США
ISO - International Organization for Standardization - Международная организация по стандартизации
Цель развития языков программирования - более рациональная разработка ПП.
Схема развития:
Коды процессора а assembler аязыки высокого уровня (ЯВУ)
Сначала из истории:
При разработке процессоров(П)/микропроцессоров – для каждого П разрабатывается набор команд, полный набор насчитывает ~150 команд: арифметика, логика, работа с памятью, ввод и вывод.
Команда для процессора – это цифровой код команды и операнд (операнды):
ячейки памяти, регистры, порты ввода/вывода...
Коды процессора – набор в цифровом коде команд процессора и их параметров, например, команды: занесение значения на регистр, вывод с регистра по адресу памяти, сложение, чтение байта из порта ввода, запись байта в порт вывода …
Именно коды процессора содержит исполняемый файл программы файл (*.exe )
Разработка программ в кодах была характерна для самых первых ВМ – это очень неудобно для человека-программиста.
Assembler – низкоуровневый язык программирования, разработанный для конкретного процессора.
Assembler использует мнемоническое обозначение кодов команд процессора и переменных памяти, что облегчает процесс программирования по сравнению с кодированием:
JUMP - переход, ADD - сложение, IN - ввод, OUT – вывод, и т.д. для всех команд процессора.
Assembler позволяет использовать весь набор команд процессора и напрямую работать с регистрами.
Используется там, где необходима высокая эффективность: ядро ОС, драйверы, программы, работающие в реальном времени.
Недостатки – высокая трудоемкость разработки, привязка программы к конкретному типу процессора.
Языки высокого уровня – FORTRAN, ALGOL, COBOL, PL/I, ADA, Prolog, PASCAL, C, C++, Perl, JavaScript, ASP, PHP, Java, С#, SQL…
ЯВУ не зависят от архитектуры компьютера, ориентированы на эффективную разработку ПП, обеспечивают быструю разработку и надежность ПО.
ЯВУ выполняются на любом компьютере, для которого реализован компилятор данного языка программирования.
Среди ЯВУ есть специализация: научные расчеты (FORTRAN), для обучения (ранний Basic, Pascal), экономические рачеты (COBOL), работа с БД (dBase, FoxPRO, SQL) ,
целое семейство сравнительно молодых языков для Internet (JavaScript, ASP, PHP),
языки системного программирования (ранний С, assembler’ы).
Некоторые языки считаются универсальными (поздний Pascal (Delphi), C/C++)
II. Развитие технологий разработки программ
Схема:
Низкоуровневое программирование (коды, Assembler’s) а
аПроцедурное/Cтруктурное программирование (Algol, Pascal, C) а
аООП (C++,Object PASCAL, Java, C#…) а
а…(что дальше?)
Вспоминаем, как обстояло дело с разработкой программ в 60-е – 70-е годы,
технологическая ступенька называлась:
Процедурное программирование
Основная идея – выделение части кода в отдельную процедуру (подпрограмму, функцию) (SUBROUTINE в FORTRAN, PROCEDURE и FUNCTION в PASCAL).
Будем считать для нашего курса понятия процедура, подпрограмма и функция синонимами – так в Си есть только функция.
Функция обозначается именем, при вызове ей передается список параметров (возможно, пустой), после выполнения она возвращает управление в точку вызова и, возможно, возвращает результаты работы (вычисленные значения, код завершения).
Пример:
real sin(real x){
// здесь реализация
}
В процедурных языках поддерживается вызов процедур/подпрограмм/функций, который обычно включает такие механизмы:
передача параметров в процедуру и возврат значений,
рекурсивность, т.е. возможность процедуры вызывать саму себя (известная задача о Ханойской башне),
хранение подпрограмм в отдельных библиотеках.
Далее, технологическая ступенька начала 70-х годов:
Структурное программирование – основные положения:
любую программу можно написать, пользуясь ограниченным набором базовых конструкций (здесь схемы основныхконструкций структурного программирования, Павловская, стр 39):
Последовательность операторов/блоков,
Ветвление или выбор if, if..else, swith-case
Циклы: с постусловием (do while), цикл с предусловием (while)
Каждая из базовых конструкций имеет один вход и один выход.
“Правильная” структура программы (блока программы, подпрограммы), имеет один вход и один выход.
Причем, любую программу можно и нужно писать без использования оператора GoTo, который очень запутывает структуру программы (аналог – команда перехода JMP в assembler).
Для исключения оператора GoTo достаточно применять базо
Одними из наиболее популярных услуг на рынке IT-технологий являются создание и продвижение лендингов. Они способны положительно влиять на деятельность любого бизнес-проекта в интернете. Судя по многочисленным отзывам, заказавшие создание лендингов люди ни разу не пожалели о потраченных деньгах. Они вложили в будущее, которое неразрывно связано с интернетом. Всё больше и больше предпринимателей обращаются к услугам разных агентств, веб-студий, чтобы заказать создание лендинга у профессионалов.