320 likes | 812 Views
Информа́тика ( нем. Informatik , фр. Informatique , англ. computer science — компьютерная наука — в США, computing science — вычислительная наука — в Великобритании) — наука о способах получения, накопления, хранения, преобразования, передачи и использовании информации.
E N D
Информа́тика (нем.Informatik, фр.Informatique, англ.computer science — компьютерная наука — в США, computing science — вычислительная наука — в Великобритании) — наука о способах получения, накопления, хранения, преобразования, передачи и использовании информации. Она включает дисциплины, относящиеся к обработке информации в вычислительных машинах и вычислительных сетях
Структура информатики (Д.А. Поспелов) • теория алгоритмов (формальные модели алгоритмов, проблемы вычислимости, сложность вычислений и т. п.); • базы данных (структуры данных, поиск ответов на запросы, логический вывод в базах данных, активные базы и т. п.); • искусственный интеллект (представление знаний, вывод на знаниях, обучение, экспертные системы и т. п.); • бионика (математические модели в биологии, модели поведения, генетические системы и алгоритмы и т. п.); • распознавание образов и обработка зрительных сцен (статистические методы распознавания, использование призначных пространств, теория распознающих алгоритмов, трехмерные сцены и т. п.); • инженерия математического обеспечения (языки программирования, технологии создания программных систем, инструментальные системы и т. п.); • теория компьютеров и вычислительных сетей (архитектурные решения, многоагентные системы, новые принципы переработки информации и т. п.); • компьютерная лингвистика (модели языка, анализ и синтез текстов, машинный перевод и т. п.); • системы человеко-машинного взаимодействия (распределение работ в смешанных системах, организация коллективных процедур, деятельность в телекоммуникационных системах и т. п.); • нейроматематика и нейросистемы (теория формальных нейронных сетей, использование нейронных сетей для обучения, нейрокомпьютеры и т.п.).
Информационные технологии (ИТ, от англ.information technology, IT) — широкий класс дисциплин и областей деятельности, относящихся к технологиям управления данными и обработки данных. • ИТ имеют дело с использованием компьютеров и программного обеспечения для хранения, преобразования, защиты, обработки, передачи и получения информации. Специалистов по компьютерной технике и программированию часто называют ИТ-специалистами.
Определение ЮНЕСКО: • ИТ — это комплекс взаимосвязанных научных, технологических, инженерных дисциплин, изучающих методы эффективной организации труда людей, занятых обработкой и хранением информации; вычислительную технику и методы организации и взаимодействия с людьми и производственным оборудованием, их практические приложения, а также связанные со всем этим социальные, экономические и культурные проблемы.
От программирующих программ к системам программирования (российский опыт) • Трансляция - это область, с которой начиналось системное программирование. • Первыми программами, принадлежащими системному программному обеспечению, • были трансляторы - ассемблеры на Западе, программирующие программы (ПП) у нас. • Возникновение первых идей по трансляции обязано простому соображению: так как программа хранима, как и данные, то она может быть аргументом или результатом работы алгоритмов, которые реализуют те или иные аспекты конструирования программ.
Начальные идеи по трансляции были выдвинуты в 1952 году, на самом раннем этапе развития программирования. В этом году Рутисхаузер опубликовал работу, в которой изложил идею о том, что по естественной записи арифметического выражения можно построить эквивалентный ей фрагмент машинного кода. А.А.Ляпунов в те же годы заметил, что структура программы включает в себя операторы из небольшого набора типовых операторов и может быть представлена формально. На языке операторных схем программа представляется как схема, соответствующая управляющему графу программы, и совокупность спецификаций каждого оператора. Эти идеи А.А.Ляпунов положил в основу курса по программированию, читавшегося им в Московском Университете. Понятие программы как некоторой операторной структуры, было революционной идеей, которая практически сразу же легла в основу первых отечественных трансляторов.
ПРОГРАММИРУЮЩИЕ ПРОГРАММЫ Первые отечественные трансляторы носили название программирующих программ. В основе входного языка каждой из программирующих программ лежал общий концептуальный базис, фиксирующий типы операторов и их спецификации. Типы операторов соответствовали подавляющему большинству решаемых тогда задач, а именно - вычислительным задачам. Выделялись арифметические операторы, ведущие вычисление по формулам, логические операторы, осуществляющие управление счетом, операторы переадресации, позволяющие переходить к следующему значению индекса, все неарифметические вычисления объединялись в так называемые нестандартные операторы, для которых спецификацией был их машинный код. Специального подъязыка описания данных, зачатки которого появились в более поздних ФОРТРАНе и Алголе, не существовало.
Начиналось все с ПП-1. Молодые тогда программисты С.С.Камынин и Э.З.Любимский исследовали реализуемость операторных схем и возможность автоматического построения соответствующих машинных программ. Законченная в 1954 году программирующая программа ПП-1 являлась одним из первых в мировой практике трансляторов и, по-видимому, имела самый высокий уровень входного языка. Успешное решение проблемы реализуемости операторных схем как входного языка программирующих программ, осуществленное в ПП-1, дало толчок для двух проектов, разработанных для двух основных тогда отечественных машин - Стрела и БЭСМ-1. Программирующая программа ПП-2, созданная под руководством М.Р.Шура-Буры в 1955 г. для машины Стрела, основывалась на ПП-1 как прототипе. В ПП-2 были усовершенствованы алгоритмы трансляции и было уделено заметное внимание оптимизации программ - оптимальному отведению памяти для рабочих ячеек. Это был, по-видимому, первый оптимизирующий транслятор.
ПП для БЭСМ-1, разработанная А.П.Ершовым, Л.Н.Королевым, В.М.Курочкиным и другими, развивала входной язык программирующих программ. Во-первых, она объединяла схему и спецификацию операторов в одном тексте, во-вторых, был введен структурный оператор цикла. В этих двух системах была проделана большая работа по созданию фундаментальных алгоритмов трансляции - программирование арифметических выражений, реализация условий переходами и т.п. С использованием идей и алгоритмов этих работ была развернута деятельность по созданию следующего слоя программирующих программ. . Как некоторый итог этого начального этапа представляется вышедшая в 1958 году первая в мировой науке монография А.П.Ершова, посвященная проблемам трансляции. Монография практически сразу была переведена и издана за рубежом.
Нужно заметить, что с трансляции начиналось не только системное, но и теоретическое программирование. Именно работы по входным языкам (операторным схемам) и трансляторам (программирующим программам) послужили толчком к созданию первой математической модели программ --- схемам Янова. ТРАНСЛЯТОРЫ С АЛГОЛА Советские работы 1953 - 1958 гг. развивались независимо от мирового опыта. Практически параллельно с отечественными работами появились серьезные труды по трансляции и в США. Сопоставимый по уровню входного языка известный транслятор с ФОРТРАНа был описан в статье Дж. Бэкуса, появившейся в 1957г. Реальное привлечение мирового опыта к отечественным разработкам по трансляторам началось с возникновением Алгола.
БИБЛИОТЕКИ СТАНДАРТНЫХ ПРОГРАММ Параллельно с работами по программирующим программам развивался и подход к автоматизации программирования с помощью библиотек стандартных программ. Е.А. Жоголевым была разработана стандартная составляющая программа --- ССП, которая осуществляла статическую загрузку и связывание стандартных программ из библиотеки. Ккульминацией этого подхода было создание под руководством М.Р. Шура-Бура интерпретирующей системы ИС-2, которая использовалась повсеместно на новых машинах М-20 и учитывалась всеми трансляторами нового поколения. В ИС-2 был реализован способ динамического подключения библиотечных подпрограмм. ИС-2 реализовывала некоторые функции будущих операционных систем, осуществляя динамическое связывание, подкачку и смену используемых подпрограмм. Высокая эффективность ИС-2 и хорошо продуманный интерфейс с основной программой сделали ее (как и положено операционной системе) неотъемлемой частью комплекта поставки ЭВМ.
Существенно новым шагом в развитии направления трансляции стало создание совокупности трансляторов с АЛГОЛа для появившейся массовой машины М-20. Хотя язык операторных схем имел уже достаточно высокий уровень, вполне сопоставимый с уровнем тогдашней версии ФОРТРАНа, Алгол-60 был качественно новым языком. Вместе с тем в стране уже был накоплен багаж базовых идей и созданы коллективы высокопрофессиональных специалистов в области трансляции, что привело к возникновению оригинальных и широко использовавшихся систем программирования. При всех достоинствах программирующих программ доля программирования непосредственно в машинном языке была преобладающей. Переход к современному стилю программирования на языках программирования высокого уровня был осуществлен благодаря созданию первых «алголовских» трансляторов.
Работы над этими трансляторами (ТА-1, ТА-2 и АЛЬФА ) начались практически сразу после публикации завершенного международной рабочей группой описания языка Алгол-60. ТА-1, и ТА-2 были завершены в 1963г., практически одновременно с другими известными западными работами - П.Наура и Э.Дейкстры. Транслятор АЛЬФА ввиду объемности реализации был завершен годом позже. _____ Транслятор ТА-1, разработанный под руководством С.С.Лаврова, основывался на быстрой и простой схеме трансляции (в частности, был разработан стековый подход к программированию выражений). Для достижения такой схемы авторы отказались от ряда средств Алгола-60: рекурсивности процедур, наличия статических (собственных - own) объектов в блоках, от возможности введения параметров процедур без их типизации и пр. Вместе с тем, особое внимание было уделено простоте и удобству эксплуатации.
Работы над этими трансляторами (ТА-1, ТА-2 и АЛЬФА ) начались практически сразу после публикации завершенного международной рабочей группой описания языка. ТА-1, и ТА-2 были завершены в 1963г., т.е. практически одновременно с другими известными западными работами --- П.Наура и Э.Дейкстры. Транслятор АЛЬФА ввиду объемности реализации был завершен годом позже. _____ Транслятор ТА-1, разработанный под руководством С.С.Лаврова, основывался на быстрой и простой схеме трансляции (в частности, был разработан стековый подход к программированию выражений). Для достижения такой схемы авторы отказались от ряда средств Алгола-60: рекурсивности процедур, наличия статических (собственных - own) объектов в блоках, от возможности введения параметров процедур без их типизации и пр. Вместе с тем, что существенно для современных систем, особое внимание было уделено простоте и удобству эксплуатации.
Транслятор ТА-2, разработанный под руководством М.Р.Шуры-Буры, не вводил практически ограничений ни на язык, ни на размеры входных программ. В трансляторе был разработан оригинальный алгоритм программирования процедур (понимаемых как потенциально рекурсивные), механизмы управления памятью как единства оперативной и внешней памяти. В мае 1963 г. первым из всех трех этот транслятор уже демонстрировался на международной конференции по автоматизации программирования в Киеве. В АЛЬФА-трансляторе, разработанном под руководством А.П.Ершова, особое внимание уделялось эффективности получаемых программ. Большой набор оптимизирующих возможностей (изощренное программирование процедур, циклов и индексных вычислений, глобальная экономия памяти и пр.) давал возможность получать объектные программы, мало отличающиеся по времени исполнения от созданных вручную программ. Платить за это приходилось большим объемом транслятора, большим числом проходов (24 прохода), отказом от некоторых средств Алгола, оптимальная реализация которых не была найдена (в частности, как и в ТА-1, рекурсивность была запрещена).
Вместе с тем входной язык являлся расширением Алгола, включавшим операции над многомерными значениями. В целом в АЛЬФА-трансляторе начала складываться современная методология оптимизирующей трансляции с такими ее понятиями, как внутренний язык, многопроходная реализация оптимизирующих преобразований. В целом, эта совокупность трансляторов покрывала разнообразные запросы пользователей. В отличие от программирующих программ все алголовские системы были уже настоящими системами программирования, близкими к современным системам, - они включали в себя не только собственно транслятор, но также отладочные и некоторые редактирующие средства.
В ТА-1 и АЛЬФА-систему входили отладочные редакторы, которые по заданию на отладку создавали отладочную версию программ. Платформой для всех систем была ИС-2, все системы включали ее средства в свой входной язык и строили программы, ориентированные на использование ИС-2. ЯЗЫКИ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ Инициированное созданием трансляторов появление системного программирования поставило задачу создания адекватных языков программирования. Все языки, появившиеся к началу 60-х годов -- Фортран, Кобол, Алгол-60 и др. - не учитывали этой области программистской деятельности, и алголовские системы, будучи достаточно большими программными системами, писались еще в машинных кодах вручную.
Адекватные языки нужны были не только для трансляторов, но и для всей возникающей области системного программирования: начали появляться и другие языковые процессоры, первые операционные системы, информационные системы. В связи с этим и у нас, и на Западе начали появляться специальные языки, предназначенные для системного программирования. Характерной особенностью первого поколения этих языков (связанной с необходимостью хорошо учитывать архитектуру и машинное представление данных) была машинная ориентированность. Разрабатывались эти языки, как правило, в коллективах, имевших большой опыт в создании системных программ - таковыми в тот период были системы программирования. Отечественные языки Алмо, Эпсилон, Сигма, которые были одними из первых в мире языками системного программирования, создавались поэтому в коллективах трансляторщиков, только что завершивших большие программные проекты и почувствовавших, каково сапожнику обходиться без сапог.
Язык АЛМО имел в своей основе некоторую абстрактную машину, отражавшую особенность существовавшего тогда класса машин. Помимо того, что этот язык был языком реализации для системного программирования, он предназначался быть языком-посредником при трансляции с различных языков. Идея была в том, чтобы заменить трансляцию с m входных языков в n машинных языков трансляцией "из m в один" и "из одного в n". Важно заметить, что в языке существовали средства определения многопроцессности (типа fork и joint). Были созданы реализации языка для основных отечественных машин того времени (М-20, Минск 2, Урал 11, БЭСМ-6) и трансляторы с Алгола-60 и ФОРТРАНа в АЛМО, причем все трансляторы также были написаны на АЛМО и "раскручены" на всех этих машинах. ------
К 1941 г. успел закончить в Ленинградском университете два курса матмеха. Во время учебы в ЛГУ интересовался теорией вычислений, хотя в ту пору в университете ее более основательно преподавали не матмеховцам, а астрономам. Они часто работали на арифмометрах, выдававшихся в читальном зале. Пошел в ленинградское народное ополчение. Был направлен в Ленинградскую военно-воздушную академию. Окончил ее с дипломом военного инженера-механика и попал по распределению техником звена в истребительный авиационный полк. В начале 1947 г. был демобилизован из армии и принят на работу на должность начальника группы баллистики в подмосковное ОКБ в отдел Главного конструктора Сергея Павловича Королева. Однако продолжал осваивать математику и даже поступил заочно на мехмат МГУ.
С решением задач ядерной физики, баллистических задач, задач управления динамикой полетов в Советском Союзе связано начало применения вычислительной техники и развитие нового научного направления - программирования, разработка различных алгоритмических языков. С.С. Лавров принял решение посвятить себя впредь уже не баллистике, а программированию. В это время работы под управлением С. П. Королева по подготовке полета Юрия Гагарина шли полным ходом и сектор баллистики и С.С. Лавров принимали в этих работах самое непосредственное участие. «Сергей Павлович, вероятно, не мог не заметить, насколько я был поглощен и увлечен проблемами использования вычислительной техники. Поэтому одобрил мой переход из отдела динамики на заведование вычислительным центром, насчитывавшим примерно 300 человек и включавшим в себя и группу программирования (создан в ОКБ в конце 50-х годов)».
«Язык Алгол 60 мне сразу очень понравился, и я написал о нем книгу. Существовавшие уже языки Фортран, Кобол страдали большими недостатками. По сравнению с ними главным достоинством языков Алгол 60 и позже Паскаля было то, что они вобрали в себя все самое лучшее и необходимое, в отличие, скажем, от языка PL1, в котором авторы постарались воплотить чуть ли не все возможности, известные на тот момент в мире». «Мы решили принять участие в создании транслятора с Алгола 60. На тот момент две группы уже приступили к разработке своих трансляторов: Михаил Романович Шура-Бура и Эдуард Зиновьевич Любимский в Институте прикладной математики АН СССР и А. П. Ершов - в отделе ВЦ Сибирского отделения АН (ВЦ возглавлял тогда Г. И. Марчук). Обе группы вежливо отказались от предложения о сотрудничестве с отделом программирования ОКБ, поэтому мы начали действовать самостоятельно». «Наша группа закончила разработку транслятора в октябре 1962 года раньше, чем другие две группы. На заседании Президиума АН, которое проводил Мстислав Всеволодович Келдыш, были зачитаны доклады от каждой из групп, и наши общие результаты получили весьма высокую оценку».
«В 1966 году после смерти Сергея Павловича я перешел из ОКБ в систему Академии наук и приступил к заведованию лабораторией программирования в Вычислительном центре, который возглавлял Анатолий Алексеевич Дородницын. Он считал, что мне следовало заняться координацией разработки программного обеспечения для главной вычислительной машины страны того времени - БЭСМ-6. Сначала диспетчер - зародыш операционной системы, потом и другие программы для БЭСМ-6 создавали разные организации: "родитель" - Институт точной механики и вычислительной техники, МГУ, наш ВЦ, группа в Свердловске и др. Честно говоря, скоординировать действия этих разработчиков не удалось, так как каждый считался только со своими взглядами, и в этом смысле я не оправдал надежд Дородницына». «Одной из самых удачных своих работ в ВЦ считаю реализацию языка ЛИСП для БЭСМ-6. До этого существовали реализации ЛИСПа, но более скромные и менее распространившиеся, чем наша. Мы работали вдвоем: я и мой аспирант Гиви Сергеевич Силагадзе, с которым в 1978 году была написана книга "Автоматическая обработка данных. Язык Лисп и его реализация»
«Сегодня существует много новых реализаций ЛИСПа. Так я работаю на CLISP (Common LISP). В языке ЛИСП учтен опыт построения языков программирования для компьютеров, накопленный за 20 лет после появления машины Тьюринга - одной из первых абстрактных моделей, ставшей наиболее популярной в теории вычислимости. Обработка формул, автоматическое доказательство теорем, математические выкладки - сфера применения ЛИСПа в отличие от вычислительных задач, которые лучше решать с применением таких языков, как Паскаль, Алгол и др». • Какие бывают языки программирования «Наиболее распространенные и известные языки программирования: Фортран, Алгол, Кобол, ПЛ-1, Алгол-68, Паскаль, ныне забытая Ада, которую сменили языки семейства C, Java и др, - принадлежат фактически к одному семейству, которое проделало заметную эволюцию, но в основе осталось классом языков операторного, процедурного типа. Это - типичные языки для описания и представления алгоритмического знания. Было два главных события, каждое из которых ознаменовало для меня начало нового этапа в развитии алгоритмических языков: появление Алгола 60 (авторы - интернациональная группа специалистов) и разработка Никлаусом Виртом языка Паскаль».
«Существует еще одно семейство языков, ведущих в основном свое начало от языка ЛИСП (1960 г.) и характеризующихся по-разному: языки для обработки символьной информации, языки обработки списков (LISP - List Processing), языки искусственного интеллекта, языки управления роботами, языки логического программирования или же функциональные непроцедурные языки. Некоторые их черты, такие, как списки свойств и ассоциативные списки, прямо ориентированы на представление знаний, другие (использование списочных структур, рекурсивность, механизм возвратов) - на решение логических задач типа автоматического доказательства теорем». «Семейство очень важно для создания и использования баз знаний. В него входят различные версии ЛИСПа (автор языка - Джон Маккарти), язык Плэнер и др. Примыкает к ним язык Пролог, интерес к которому возрос после того, как японцы в своем проекте "ЭВМ пятого поколения" отвели Прологу одно из центральных мест».
Транслятор ТА-1М Транслятор ТА-1М создан коллективом исполнителей под руководством члена-корр. АН СССР С. С. Лаврова и канд. техн. наук В. А. Степанова; этот транслятор представляет собой модернизированный вариант разработанного в 1963 г. транслятора ТА-1. Транслятор может быть использован на машинах М-20, М-220, М-220М, БЭСМ-4. При переходе от одной машины к другой из-за различия устройств вывода приходится изменять некоторые блоки. Входной язык транслятора ТА-1М является конкретным представлением языка АЛГОЛ-60.
Программа, полученная при помощи ТА-1М, приблизительно в 1,5–2,5 раза длиннее такой же программы, составленной в кодах машины программистом среднего уровня, и выполняется примерно в 1,5–2,5 раза дольше. TA-1M позволяет отлаживать программы в ходе их выполнения: для этого используется специальный режим трансляции, при котором в рабочую программу вставляются группы команд, обеспечивающих проверку в ходе вычислений правильности работы программы. При возникновении в процессе работы программы аварийных ситуаций производится анализ ошибки с выдачей сведений о месте и причинах ошибки. Выдаются на печать значения величин и их идентификаторы из зоны программы, содержащей ошибку. Это позволяет анализировать программу, написанную на АЛГОЛе, без анализа программы в коде машины.
Входной язык транслятора позволяет использовать любую стандартную программу (СП) библиотеки ИС-2 и после трансляции формирует на магнитном барабане библиотеку СП, к которым имеются обращения в программе. Таким образом исключаются обращения к ленте за СП и уменьшается время выполнения программы. ТА-1М оформляет процедуры, как СП в системе ИС-2. Это позволяет получать достаточно большие программы. Предусмотрен режим автономной трансляции процедур, что позволяет организовать большую библиотеку СП. К недостаткам следует отнести то, что полученные после трансляции программы используют только один куб оперативной памяти. Большие программы с отладочными вставками часто не помещаются в МОЗУ.