КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Краткая история развития программирования
С появлением первой вычислительной машины возникла необходимость управлять процессом вычисления, задавать алгоритм решения задачи, т.е. составлять необходимую программу действий (команд) машины. Первые вычислительные машины имели относительно большой набор (десятки) команд, составляющих в общей сложности машинный язык. Все команды были реализованы аппаратно, а программа представляла собой последовательность команд и данных в числовом виде. Рисунок 1(а). Структура взаимодействия узлов вычислительной машины Во время выполнения программы она вместе с обрабатываемыми данными хранилась в памяти вычислительной машины (См. Рис. 1(а)). Команды последовательно выбирались процессором из памяти. Вычислительные команды выполнялись в самом процессоре. Для этого из памяти выбирались данные по адресам, прочитанным из исполняемой команды. Результаты вычислений записывались в память. Если очередная выбранная команда требовала обмена (ввода или вывода) данных, то она передавалась на исполнение в процессор ввода/вывода. Последний активизировал соответствующее внешнее устройство (ВНУ) и обеспечивал пересылку данных либо из памяти машины во внешнее устройство, например, для печати, либо от внешнего устройства в память машины. Подобные процессоры ввода/вывода иногда называли каналами обмена. Различались селекторные каналы, которые, начав обмен с одним ВНУ не прекращали его до полного завершения, и мультиплексорные каналы. Последние могли параллельно поддерживать обмен с несколькими внешними устройствами. Как правило это были относительно медленные устройства, которые уступали по быстродействию каналу и памяти в десятки раз. Позднее широкое распространение получила архитектура вычислительных машин с так называемой «общей шиной». Под этим термином понималась общая для всех устройств линия связи, включающая средства передачи и адресов, и данных. Все блоки вычислительной установки: и память, и процессор, и внешние устройства подключались к этой общей шине (Рис. 1(б)). Каждое такое устройство откликалось на появление на шине «своего» адреса или, правильнее сказать, адреса из своего диапазона. Конечно, диапазоны различных устройств, подключенных к общей шине, не пересекались. Архитектура с общей шиной позволяла проще наращивать периферийные (внешние) устройства вычислительной установки, которые сами брали на себя функции обмена с памятью (взаимодействия с шиной). По пропускной способности подобные вычислительные установки различали «узкие» и «широкие» общие шины.
Рисунок 1(б). Структура с общей шиной
В «узких» шинах и адрес и сами данные последовательно передавались по одним и тем же проводникам. Поэтому возможна была ситуация, при которой для выборки одного 8-ми разрядного символа из оперативной памяти необходимо было затратить 3 такта обмена. Два на передачу 16-ти разрядного адреса символа и еще один на получение самого символа. В «широких» шинах обмен адресной информацией и данными производился по независимым линиям, что позволяло в одном такте выставить на шину и адрес, и значение. При чем шина данных могла позволить пересылать сразу не восемь(один символ), а шестнадцать разрядов (два символа или целое слово), что еще поднимало возможную скорость обмена. Некоторые команды процессора вызывали изменение последовательной выборки команд. В результате их выполнения вырабатывался адрес очередной выполняемой команды. Обычно значение этого адреса зависело от ранее вычисленных в процессоре значений данных. Например, если результат вычислений был нулевой, то вместо выборки следующей по порядку команды, процессор переходил к выполнению команды по заданному в команде адресу. Такие команды часто называли командами условного перехода. Они определяли не только адрес следующей выполняемой команды, но и условие при котором этот адрес должен был быть использован. Например, переход по нулевому значению, переход по отрицательному значению, переход по переполнению и т.п. Исходный код программы чаще всего представлялся на перфорированном носителе (перфокартах или перфоленте), где дырочки — пробивки представляли 1, а отсутствие дырочки соответствовало нулевому значению. Такая программа попадала в память через внешнее устройство ввода перфокарт или перфоленты. Мало-мальски сложная программа становилась трудно читаемой даже для автора и круг пользователей вычислительных машин был невелик. В основном он состоял из самих конструкторов вычислительной техники. Порой «отладка» программы сопровождалась внесением изменений в саму машину. С дальнейшим ростом сложности решаемых задач стало ясно, что «язык» общения человека и машины нуждается в совершенствовании. Изображение машинных команд в виде условных сокращений слов или символов (СЛ — сложить, ВЫЧ — вычесть, УМ — умножить и т.д.) стал первым шагом от кодов машины в сторону человека, а полученный язык кодирования программ называли ассемблером или мнемокодом. Программы стали более читабельными, но понадобился транслятор – для перевода из мнемонического описания программы в машинные коды. Язык ассемблера теперь существует практически для любой машины, и на нем до сих пор пишут системные программы, требующие работы со специфичными аппаратными возможностями вычислителя и в случае серьезных ограничений на быстродействие и память при программировании микроконтроллеров. Параллельно с появлением первых языков программирования появилось разделение пользователей вычислительной техники на классы: программисты, эксплуатационщики и, так называемые, «конечные пользователи». Основной работой программистов стало составление программ. Эксплуатационщики, иногда их называли «электронщики», должны были обеспечивать работоспособность вычислительной техники, надёжность которой оставляла желать лучшего. А конечные пользователи решали с помощью программ прикладные задачи, обеспечивая их для этого необходимыми данными. Необходимость трансляции текста программы в машинный код породила целый класс новых задач. Написание инструментальных (системных) программ стало самостоятельной областью деятельности отдельной группы программистов. Чаще всего их стали называть системными программистами. Силами системных программистов были созданы специализированные редакторы текстов, предназначенные для подготовки программ, трансляторы, переводящие исходные тексты программ в машинный код. Для поддержки коллективной модульной разработки были написаны программы — сборщики, которые позволяют объединить несколько независимо разработанных модулей в одну единую выполняемую программу. Наконец, были созданы управляющие программы — операционные системы, задача которых организовывать совместное выполнение нескольких программ на одной вычислительной установке, перераспределяя вычислительные ресурсы между ними по мере необходимости.
Дата добавления: 2014-12-26; Просмотров: 1768; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |