Инструменты пользователя

Инструменты сайта


igor:istoria

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
igor:istoria [2022/03/18 12:23] – [Программирование в древние времена] igorigor:istoria [2022/05/01 18:15] (текущий) – [Программирование в средние века] igor
Строка 191: Строка 191:
 Программирование на ассемблере сохраняет все преимущества программирования в кодах, но избавляет от основного недостатка: исходный текст на языке ассемблера хотя и выглядит ужасно сложно, но все же может быть прочитан человеком (а если можно прочитать, то отчего бы не попробовать написать?). И все-таки эта работа сложна и трудоемка, и доступна не всем. Отсюда появилась идея создать **//язык программирования высокого уровня//**. Задумавшись о создании таких языков, люди очень быстро пришли к пониманию, что такой язык, в противоположность языкам низкого уровня, не должен быть привязан к особенностям архитектуры какого-либо конкретного компьютера, т. е. должен быть абстракцией "компьютера вообще", языком межкомпьютерного общения. Такой язык должен обеспечивать программисту удобство решения некоторого широкого множества задач, отсюда возник термин **проблемно-ориентированный язык**. Транслятор с языка высокого уровня сейчас обычно называют **//компилятором//**, но этот термин утвердился в более поздние времена. \\ Программирование на ассемблере сохраняет все преимущества программирования в кодах, но избавляет от основного недостатка: исходный текст на языке ассемблера хотя и выглядит ужасно сложно, но все же может быть прочитан человеком (а если можно прочитать, то отчего бы не попробовать написать?). И все-таки эта работа сложна и трудоемка, и доступна не всем. Отсюда появилась идея создать **//язык программирования высокого уровня//**. Задумавшись о создании таких языков, люди очень быстро пришли к пониманию, что такой язык, в противоположность языкам низкого уровня, не должен быть привязан к особенностям архитектуры какого-либо конкретного компьютера, т. е. должен быть абстракцией "компьютера вообще", языком межкомпьютерного общения. Такой язык должен обеспечивать программисту удобство решения некоторого широкого множества задач, отсюда возник термин **проблемно-ориентированный язык**. Транслятор с языка высокого уровня сейчас обычно называют **//компилятором//**, но этот термин утвердился в более поздние времена. \\
 Подобные языки - Алгол и Фортран - появились уже в 50-е годы, затем в этой отрасли имело место достаточно долгое и сложное развитие. \\ Подобные языки - Алгол и Фортран - появились уже в 50-е годы, затем в этой отрасли имело место достаточно долгое и сложное развитие. \\
-Язык программирования **Фортран** (англ. FORmula TRANslation - перевод формул) создан в 1954 г. - он современник паровозов! Для программистов того времени он стал тем же, чем были первые крупносерийные тепловозы ТЭ3 для наших железнодорожников: он принес с собой комфорт и скорость, прежде всего за счет исключения самой грязной и утомительной работы, каковой на паровозе была работа кочегара, а в вычислительной технике написание машинных кодов. Программа на Фортране имела вид не кодов, а формул, которые любому программисту привычны по школьной и институтской математике. Примерно таких: \\+Язык программирования **Фортран** (англ. FORmula TRANslation - перевод формул) создан фирмой ИБМ под руководством Джона Бэкуса  в 1954 г. - он современник паровозов! Для программистов того времени он стал тем же, чем были первые крупносерийные тепловозы ТЭ3 для наших железнодорожников: он принес с собой комфорт и скорость, прежде всего за счет исключения самой грязной и утомительной работы, каковой на паровозе была работа кочегара, а в вычислительной технике написание машинных кодов. Программа на Фортране имела вид не кодов, а формул, которые любому программисту привычны по школьной и институтской математике. Примерно таких: \\
 <code>VES = OBJEM * PLOTNOST</code> <code>VES = OBJEM * PLOTNOST</code>
 Фортран превосходен как язык ученых, которые чаще всего сами не являются программистами, но ощущают потребность быстро создавать компактные программы для сложных числовых расчетов. Важная черта Фортрана: хотя запись формул в нем и отличается от принятой ранее в научных книгах и на занятиях в учебных заведениях, она ИНТЕРНАЦИОНАЛЬНА, т. е. освоение Фортрана не требует знания какого-либо конкретного человеческого языка, например английского. \\ Фортран превосходен как язык ученых, которые чаще всего сами не являются программистами, но ощущают потребность быстро создавать компактные программы для сложных числовых расчетов. Важная черта Фортрана: хотя запись формул в нем и отличается от принятой ранее в научных книгах и на занятиях в учебных заведениях, она ИНТЕРНАЦИОНАЛЬНА, т. е. освоение Фортрана не требует знания какого-либо конкретного человеческого языка, например английского. \\
 Основной недостаток Фортрана - его непригодность для решения иных задач, кроме вычислений по формулам, поэтому сейчас он имеет ограниченное применение: главным образом там, где от программы требуются учебно-демонстрационные свойства. Будучи ПЕРВЫМ В ИСТОРИИ официально принятым на вооружение языком высокого уровня, Фортран жив и сейчас (последняя ревизия стандарта была в 2008 г.). За долгие годы на нем было написано множество программ математического назначения, которые хорошо отлажены, эффективны и доступны в виде исходных текстов - без преувеличения это достояние человечества! \\ Основной недостаток Фортрана - его непригодность для решения иных задач, кроме вычислений по формулам, поэтому сейчас он имеет ограниченное применение: главным образом там, где от программы требуются учебно-демонстрационные свойства. Будучи ПЕРВЫМ В ИСТОРИИ официально принятым на вооружение языком высокого уровня, Фортран жив и сейчас (последняя ревизия стандарта была в 2008 г.). За долгие годы на нем было написано множество программ математического назначения, которые хорошо отлажены, эффективны и доступны в виде исходных текстов - без преувеличения это достояние человечества! \\
 Запись арифметических операций в виде формул привычна всем современным программистам и кажется настолько естественной, что ничего другого как будто и быть не может, а между тем альтернативные пути были, и если мы хотим быть хорошими историками, то нам никуда не деться от того, чтобы осветить и эту тему. \\ Запись арифметических операций в виде формул привычна всем современным программистам и кажется настолько естественной, что ничего другого как будто и быть не может, а между тем альтернативные пути были, и если мы хотим быть хорошими историками, то нам никуда не деться от того, чтобы осветить и эту тему. \\
-Знала ли уже знакомая нам Грейс Хоппер о разработке Фортрана? Очень возможно, что и не знала, а может быть и знала, но сомневалась в его перспективности, а может сознательно решила идти своим путем... Что мы можем утверждать с большой уверенностью: будучи по натуре глубоким ученым, создавая свой Flow-Matic, она не ставила себе амбициозной задачи создать с нуля что-то такое, что сразу овладеет умами всего человечества.  Flow-Matic стал "пробным шаром", остался практически неизвестным за пределами круга разработчиков и к нашему времени совершенно забыт. Однако его влияние на весь путь развития мирового программного искусства колоссально. Даже если бы Грейс Хоппер не создала больше ничего другого, ее вклад в это искусство превышал бы вклад любого из тех ученых и инженеров, которых мы будем вспоминать по ходу нашего исследования. \\+Знала ли уже знакомая нам Грейс Хоппер, работая в начале 1950-х годов на фирме "Ремингтон-Рэнд" над разработкой уже знакомого нам UNIVAC I, о разработке Фортрана? Очень возможно, что и не знала, а может быть и знала, но сомневалась в его перспективности, а может сознательно решила идти своим путем... Впрочем, есть еще одна гипотеза, пусть и маловероятная: она элементарно не додумалась до алгоритма трансляции формул в машинные коды, ведь полная научная теория, на основании которой такие задачи решаются, была проработана Бэкусом несколько позже, в начале 1960-х годов. Так это было или не так, но есть одна вещь, которую мы можем утверждать с большой уверенностью: будучи по натуре глубоким ученым, создавая свой Flow-Matic, она не рассчитывала на точто ее творение сразу овладеет умами всего человечества.  Flow-Matic стал "пробным шаром", остался практически неизвестным за пределами круга разработчиков и к нашему времени совершенно забыт. Однако его влияние на весь путь развития мирового программного искусства колоссально. Даже если бы Грейс Хоппер не создала больше ничего другого, ее вклад в это искусство превышал бы вклад любого из тех ученых и инженеров, которых мы будем вспоминать по ходу нашего исследования. \\
 Во Flow-Matic арифметические операции записываются не формулами, а словесными выражениями. Примерно такими: \\ Во Flow-Matic арифметические операции записываются не формулами, а словесными выражениями. Примерно такими: \\
 <code>MULTIPLY OBJEM BY PLOTNOST GIVING VES</code> <code>MULTIPLY OBJEM BY PLOTNOST GIVING VES</code>
Строка 204: Строка 204:
 [[https://zen.yandex.ru/media/habr/75letnii-programmist-osnoval-kompaniiu-po-obslujivaniiu-kompiuternyh-sistem-na-cobol-5de5fe9a5ba2b500adf0a001?&secdata=CL3P39jsLSABMIKAAQ%3D%3D]] \\ [[https://zen.yandex.ru/media/habr/75letnii-programmist-osnoval-kompaniiu-po-obslujivaniiu-kompiuternyh-sistem-na-cobol-5de5fe9a5ba2b500adf0a001?&secdata=CL3P39jsLSABMIKAAQ%3D%3D]] \\
 Технический прогресс никогда не задерживается на какой-либо ступени - он развивается согласно присущей ему логике, которую нам совсем не трудно понять. Время от времени в интересующей нас области техники появляется изделие (машина, инструмент..), ломающий все наши прежние представления о данной работе: как ТЭ3 в сравнении с паровозами, как Фортран и Кобол в сравнении с машинными кодами... Но когда это изделие вступает в повседневную эксплуатацию, мы начинаем замечать, что оно не лишено определенных недостатков, и испытываем труднопреодолимое желание эти недостатки исправить. Так __революция__ сменяется __эволюцией__. Чуть позже, рассматривая языки программирования Паскаль и Си, мы увидим, что эта тенденция иногда нарушается. Но это будет другая история - история средних веков, а сейчас мы вернемся на рубеж 50-х-60-х годов XX века: в эти годы железнодорожники получили ТЭП60, а программисты **Алгол**. \\ Технический прогресс никогда не задерживается на какой-либо ступени - он развивается согласно присущей ему логике, которую нам совсем не трудно понять. Время от времени в интересующей нас области техники появляется изделие (машина, инструмент..), ломающий все наши прежние представления о данной работе: как ТЭ3 в сравнении с паровозами, как Фортран и Кобол в сравнении с машинными кодами... Но когда это изделие вступает в повседневную эксплуатацию, мы начинаем замечать, что оно не лишено определенных недостатков, и испытываем труднопреодолимое желание эти недостатки исправить. Так __революция__ сменяется __эволюцией__. Чуть позже, рассматривая языки программирования Паскаль и Си, мы увидим, что эта тенденция иногда нарушается. Но это будет другая история - история средних веков, а сейчас мы вернемся на рубеж 50-х-60-х годов XX века: в эти годы железнодорожники получили ТЭП60, а программисты **Алгол**. \\
-Мои сверстники вспоминают ТЭП60 как самый красивый отечественный тепловоз (да и в мировом масштабе вероятно тоже), но создавался он, конечно, не ради этого. Решение о его проектировании принято из соображений прежде всего экономических: с одной стороны, уменьшить эксплуатационные расходы, и с другой стороны - увеличить скорость. По этим показателям ТЭП60 опережал ТЭ3 на какие-то вроде бы ничтожные проценты, но тысячи таких локомотивов, год за годом бороздящие просторы огромной страны, обеспечили бы многомиллионную прибыль. Это понятно каждому, кто хоть раз в жизни вставлял бензозаправочный пистолет в бензобак автомобиля. Экономика Алгола не столь очевидна, но мы сможем ее понять, если поднимемся на более высокий уровень абстракции. Поэтому тепловозы мы сейчас оставим в покое (они нам нужны лишь для того, чтобы проиллюстрировать одну мысль: различные области техники развиваются по схожим законам), а разницу между Алголом и Фортраном рассмотрим более подробно. \\+Мои сверстники вспоминают ТЭП60 как самый красивый отечественный тепловоз (да и в мировом масштабе вероятно тоже), и хотя техническим изделиям красота отнюдь не чужда, но создавался он, конечно, не ради этого. Решение о его проектировании принято из соображений прежде всего экономических: с одной стороны, уменьшить эксплуатационные расходы, и с другой стороны - увеличить скорость. По этим показателям ТЭП60 опережал ТЭ3 на какие-то вроде бы ничтожные проценты, но тысячи таких локомотивов, год за годом бороздящие просторы огромной страны, обеспечили бы многомиллионную прибыль. Это понятно каждому, кто хоть раз в жизни вставлял бензозаправочный пистолет в бензобак автомобиля. Экономика Алгола не столь очевидна, но мы сможем ее понять, если поднимемся на более высокий уровень абстракции. Поэтому тепловозы мы сейчас оставим в покое (они нам нужны лишь для того, чтобы проиллюстрировать одну мысль: различные области техники развиваются по схожим законам), а разницу между Алголом и Фортраном рассмотрим более подробно. \\
 Фортран в его классическом виде - //бесструктурный// язык. Для условных переходов в нем используется запись типа: \\ Фортран в его классическом виде - //бесструктурный// язык. Для условных переходов в нем используется запись типа: \\
 <code>IF X<0 THEN GOTO 5</code> <code>IF X<0 THEN GOTO 5</code>
-где 5 - метка оператора, к которому совершается переход. И оператор GOTO, и метка, на которую он нацелен, могут находиться в любом месте программы. Это не важно, если программа не очень большая. По мере разработки сложной программы множество условных переходов может создать нешуточную путаницу. На это еще около 1958 г. (т. е. почти сразу после массового внедрения Фортранаобратил внимание голландец Э. Дейкстра, ставший идейным вдохновителем разработки Алгола. В Алголе, в отличие от Фортрана, меток вообще нет, а условные переходы и циклы программируются в виде //структур//, содержащих то или иное количество блоков: условный переход возможен только по правилам структуры и только в пределах "своего" блока, а "далекие" переходы, создающие наибольшую опасность путаницы, отменены вообще как класс. Это позволяет сделать программу более логичной и ясной и, как следствие, несколько уменьшить трудоемкость разработки. Вроде бы мелочь, но если структурному принципу следует множество программистов, работающих год за годом, то экономический эффект может быть весьма значительным. Во что это выльется "в тугриках", никто не считал и считать не собирается, да это и непринципиально. Для нас принципиально то, что древние люди к таким вещам относились серьезно и принимали грамотные инженерные решения, не дожидаясь подсчета прибылей и убытков. \\+где 5 - метка оператора, к которому совершается переход. И оператор GOTO, и метка, на которую он нацелен, могут находиться в любом месте программы. Это не важно, если программа не очень большая. По мере разработки сложной программы множество условных переходов может создать нешуточную путаницу. На это почти сразу после массового внедрения Фортрана обратил внимание голландец Э. Дейкстра, ставший идейным вдохновителем разработки Алгола. Решение о начале разработки Алгола было принято в мае 1958 г. на конференции в федеральном техническом университете города Цюриха. В ней, в частности, участвовали Бэкус от имени Фортрана и Джозеф Уэгстен от Кобола. Разработка шла медленнее, чем хотелось бы, а потом еще трудности возникли с внедрением... В 1962 г. состоялась новая конференция, среди участников которой были уже и Дейкстра, и Никлаус Вирт - впоследствии (ближе к 1970 г.) создатель языка Паскаль, в котором были реализованы идеи Вирта, не принятые другими участниками. В общем, единодушия на обеих конференциях не было, и неудивительно, что разработка затянулась. Так постепенно оформился язык Алгол-68, который получил распространение на всем европейском континенте, включая СССР. В средние века Алгол-68 станет базовым языком МПВК "Эльбрус". А вот в США этот язык встретил серьезное противодействие со стороны ИБМ, которая активно продвигала свои разработки: сначала Фортран, а к концу 1960-х годов ПЛ-1. \\ 
 +В Алголе и ПЛ-1, в отличие от Фортрана, меток вообще нет, а условные переходы и циклы программируются в виде //структур//, содержащих то или иное количество блоков: условный переход возможен только по правилам структуры и только в пределах "своего" блока, а "далекие" переходы, создающие наибольшую опасность путаницы, отменены вообще как класс. Это позволяет сделать программу более логичной и ясной и, как следствие, несколько уменьшить трудоемкость разработки. Вроде бы мелочь, но если структурному принципу следует множество программистов, работающих год за годом, то экономический эффект может быть весьма значительным. Во что это выльется "в тугриках", никто не считал и считать не собирается, да это и непринципиально. Для нас принципиально то, что древние люди к таким вещам относились серьезно и принимали грамотные инженерные решения, не дожидаясь подсчета прибылей и убытков. \\
 Заметим, что при программировании на бесструктурных языках типа Фортрана нам никто не запрещает придерживаться структурного принципа (в современных версиях языка введены даже соответствующие операторы). Но на Фортране это вопрос самодисциплины. В конечном счете - вопрос культуры каждого конкретного программиста. А на Алголе этот принцип возведен в ранг обязательного, поэтому все мало-мальски современные языки, начиная со средневекового Паскаля, построены на структурном принципе и таким образом являются потомками Алгола. \\ Заметим, что при программировании на бесструктурных языках типа Фортрана нам никто не запрещает придерживаться структурного принципа (в современных версиях языка введены даже соответствующие операторы). Но на Фортране это вопрос самодисциплины. В конечном счете - вопрос культуры каждого конкретного программиста. А на Алголе этот принцип возведен в ранг обязательного, поэтому все мало-мальски современные языки, начиная со средневекового Паскаля, построены на структурном принципе и таким образом являются потомками Алгола. \\
 На смену Алголу был предложен **ПЛ-1** (PL/1, 1964 г., фирма "ИБМ" в рамках проекта IBM/360), затем появилось множество других языков. "Иных уж нет, а те далече"... \\ На смену Алголу был предложен **ПЛ-1** (PL/1, 1964 г., фирма "ИБМ" в рамках проекта IBM/360), затем появилось множество других языков. "Иных уж нет, а те далече"... \\
-Появление PL-1 поначалу было принято программистами, мягко говоря, прохладно: они думали, что теперь их заставят все прежние программы переписывать на новый язык. Однако этот психологический барьер был преодолен, и новые языки стали создаваться один за другим, как новые сорта тюльпанов. Аналогия с тюльпанами особенно уместна потому, что большинство вновь создаваемых языков не представляло собой ничего принципиально нового. \\ +Появление ПЛ-1 поначалу было принято программистами, мягко говоря, прохладно: они думали, что теперь их заставят все прежние программы переписывать на новый язык. Однако этот психологический барьер был преодолен, и новые языки стали создаваться один за другим, как новые сорта тюльпанов. Аналогия с тюльпанами особенно уместна потому, что большинство вновь создаваемых языков не представляло собой ничего принципиально нового. Вот и ПЛ-1 не стал новой ступенью эволюции по отношению к Алголу (а по каким, собственно, основаниям от него этого ожидали?) и сошел со сцены еще раньше своего прототипа. И поделом: с запозданием осознав преимущества Алгола, ИБМ, вместо того чтобы признать свою неправоту и скорректировать курс, затеяла разработку чисто конкурентного языка, не предлагавшего ничего нового в сравнении с прототипом. В средние века ИБМ повторит эту стратегическую ошибку: будет разрабатывать операционную систему ОС-2 (OS/2), которая была призвана заменить ДОС, по сути не предлагая ничего нового взамен... \\ 
-ПЛ-1, однако, не стал новой ступенью эволюции по отношению к Алголу (а по каким, собственно, основаниям от него этого ожидали?) и сошел со сцены еще раньше своего прототипа. \\ +Язык высокого уровня, в противоположность ассемблеру, всегда - математическая абстракция, описывающая некоторый "компьютер вообще". В нем нет (по крайней мере не должно быть) элементов, связанных с особенностями устройства какой-либо машины. Соответственно от программы, написанной на таком языке, мы ждем //переносимости//, или //кроссплатформенности//, т. е. возможности исполнять ее на любом компьютере, а не только на том, для которого она была изначально написана. На практике переносимость чаще всего бывает лишь частичной, т. к. не все компиляторы и не все операционные системы строго однозначно понимают все, что может быть записано в программе. Переносимость - чрезвычайно важное свойство программы, но оно не бесплатно: при написании программы на языке высокого уровня программист не может использовать тонкие возможности конкретного компьютера, так что программа выполняется медленнее и зачастую требует больше памяти, чем аналогичная программа на ассемблере. \\
-Язык высокого уровня, в противоположность ассемблеру, всегда - математическая абстракция, описывающая некоторый "компьютер вообще". В нем нет (по крайней мере не должно быть) элементов, связанных с особенностями устройства какой-либо машины. Соответственно от программы, написанной на таком языке, мы ждем //переносимости//, т. е. возможности исполнять ее на любом компьютере, а не только на том, для которого она была изначально написана. На практике переносимость чаще всего бывает лишь частичной, т. к. не все компиляторы и не все операционные системы строго однозначно понимают все, что может быть записано в программе. Переносимость - чрезвычайно важное свойство программы, но оно не бесплатно: при написании программы на языке высокого уровня программист не может использовать тонкие возможности конкретного компьютера, так что программа выполняется медленнее и зачастую требует больше памяти, чем аналогичная программа на ассемблере. \\+
 Алгол, Кобол и Фортран знаменуют собой древнекомпьютерную цивилизацию. Вот я это написал и соображаю: не забыл ли чего? Очень похоже, что не забыл. Древние люди отнюдь не стремились к разнообразию языков. Более того: они были ПРОТИВ разнообразия, потому что у них были в жизни другие приоритеты. И если мы серьезные историки, то мы просто обязаны в этих приоритетах разобраться. \\ Алгол, Кобол и Фортран знаменуют собой древнекомпьютерную цивилизацию. Вот я это написал и соображаю: не забыл ли чего? Очень похоже, что не забыл. Древние люди отнюдь не стремились к разнообразию языков. Более того: они были ПРОТИВ разнообразия, потому что у них были в жизни другие приоритеты. И если мы серьезные историки, то мы просто обязаны в этих приоритетах разобраться. \\
 Во-первых, поскольку основные пользователи Фортрана - ученые, то Фортран для них - инструмент научного познания. В науке ни одно достижение не утверждается само собой: оно требует обсуждения, обоснования, доказательств. Соответственно программа должна быть написана так, чтобы была понятна коллегам-ученым. А поскольку большинство коллег - не профессиональные программисты (да еще и инглиш в школе не все хорошо учили, да и не всем его хорошо преподавали), изучение множества языков для них было бы совершенно непопутно. Нужен такой язык, чтобы один на всех, язык как средство международного общения. Фортран, будучи предельно простым для изучения (в сравнении с другими языками), этому требованию удовлетворял. \\ Во-первых, поскольку основные пользователи Фортрана - ученые, то Фортран для них - инструмент научного познания. В науке ни одно достижение не утверждается само собой: оно требует обсуждения, обоснования, доказательств. Соответственно программа должна быть написана так, чтобы была понятна коллегам-ученым. А поскольку большинство коллег - не профессиональные программисты (да еще и инглиш в школе не все хорошо учили, да и не всем его хорошо преподавали), изучение множества языков для них было бы совершенно непопутно. Нужен такой язык, чтобы один на всех, язык как средство международного общения. Фортран, будучи предельно простым для изучения (в сравнении с другими языками), этому требованию удовлетворял. \\
Строка 288: Строка 288:
 {{igor:korabli_-_s189_-_scvm_klejster.jpg?400}} \\ {{igor:korabli_-_s189_-_scvm_klejster.jpg?400}} \\
 На этой лодке эта машина неродная: она датируется концом 1970-х годов, тогда как сама лодка построена в 1950-е. По сути "Клейстер-Н" - это калькулятор, предназначенный в основном для штурманских вычислений. "Клейстер" - ближайший родственник 15-ВСМ-5, о которой мы уже говорили. \\ На этой лодке эта машина неродная: она датируется концом 1970-х годов, тогда как сама лодка построена в 1950-е. По сути "Клейстер-Н" - это калькулятор, предназначенный в основном для штурманских вычислений. "Клейстер" - ближайший родственник 15-ВСМ-5, о которой мы уже говорили. \\
-В 70-е годы в нашей стране построена серия ракетных крейсеров проекта 1164 (в интернете чаще всего можно встретить "Москву" - бывшую "Славу"). На этих кораблях был установлен централизованный вычислительный комплекс, который у моряков получил название БИУС - боевая информационно-управляющая система. "Сердцем" БИУС является ЦВМ "Атака" (строилась серийно на НПО "Агат" в 1976-1990 г., построено 255 шт.). БИУС могла решать несколько десятков типовых задач: как по управлению кораблем, так и по наведению оружия. Круг задач, которые должны были решаться на этой машине, был четко оговорен к началу ее проектирования, поэтому создатели БИУС "заточили" свое изделие под эти задачи, трезво сознавая, что попытка приспособить машину для решения "неродных" задач может оказаться неудачной. Компьютер, проектируемый по такому принципу, называется //специализированным//. Для древней эпохи такие компьютеры были совершенно нехарактерны, а средневековье отмечено их появлением и развитием. С тех давних времен и до наших дней бортовые компьютеры на кораблях и самолетах - всегда специализированные, хотя в наше время они на 3/4 и более собираются из деталей от универсальных компьютеров. \\+В 70-е годы в нашей стране построена серия ракетных крейсеров проекта 1164 (в интернете чаще всего можно встретить "Москву" - бывшую "Славу", увы, погибшую 14 апреля 2022 г.). На этих кораблях был установлен централизованный вычислительный комплекс, который у моряков получил название БИУС - боевая информационно-управляющая система. "Сердцем" БИУС является ЦВМ "Атака" (строилась серийно на НПО "Агат" в 1976-1990 г., построено 255 шт.). БИУС могла решать несколько десятков типовых задач: как по управлению кораблем, так и по наведению оружия. Круг задач, которые должны были решаться на этой машине, был четко оговорен к началу ее проектирования, поэтому создатели БИУС "заточили" свое изделие под эти задачи, трезво сознавая, что попытка приспособить машину для решения "неродных" задач может оказаться неудачной. Компьютер, проектируемый по такому принципу, называется //специализированным//. Для древней эпохи такие компьютеры были совершенно нехарактерны, а средневековье отмечено их появлением и развитием. С тех давних времен и до наших дней бортовые компьютеры на кораблях и самолетах - всегда специализированные, хотя в наше время они на 3/4 и более собираются из деталей от универсальных компьютеров. \\
 Семейство корабельных ЭВМ "Карат" еще даже более интересно, чем "Атака". Разработка была начата еще в 1963 г. в Киевском НИИ радиоэлектроники, но шла небыстро, т. к. требование создать максимально компактную, экономичную и при этом быстродействующую машину было на пределе того, что позволяла тогдашняя элементная база. "Карат" остается едва ли не единственным представителем ЭВМ на больших гибридных микросхемах (нечто похожее было в первых американских IBM/360, но сейчас уже трудно сказать, насколько они были сходны или различны). Машины были 24-разрядные с фиксированной запятой и имели весьма высокое для своего времени быстродействие: позднейшие представители семейства достигали 2.5 миллионов операций в секунду. \\ Семейство корабельных ЭВМ "Карат" еще даже более интересно, чем "Атака". Разработка была начата еще в 1963 г. в Киевском НИИ радиоэлектроники, но шла небыстро, т. к. требование создать максимально компактную, экономичную и при этом быстродействующую машину было на пределе того, что позволяла тогдашняя элементная база. "Карат" остается едва ли не единственным представителем ЭВМ на больших гибридных микросхемах (нечто похожее было в первых американских IBM/360, но сейчас уже трудно сказать, насколько они были сходны или различны). Машины были 24-разрядные с фиксированной запятой и имели весьма высокое для своего времени быстродействие: позднейшие представители семейства достигали 2.5 миллионов операций в секунду. \\
 Характерная черта средневековых бортовых компьютеров - их программное обеспечение. Операционной системы как таковой в них нет. Вместо ОС может быть небольшая программа - диспетчер, функции которой сводятся к запуску прикладных программ на выполнение по команде пользователя. Все программы, нужные для работы, не хранятся на перфокартах и т. п., а записываются в постоянное запоминающее устройство (ПЗУ), емкость которого (так уж по жизни сложилось) обычно в 4..16 раз больше емкости ОЗУ. Ни редакторов, ни компиляторов, ни линковщиков на таких компьютерах не бывает, так что разработка программ может производиться только на //инструментальной машине//, также как для нынешних микроконтроллеров. Средневековые ПЗУ выполнялись на ферритовых сердечниках, и установка новой программы выполнялась вручную путем продевания длинного тонкого провода в отверстия сердечников. Внешне эта работа напоминала шитьё, и с тех пор для этой операции закрепился термин "прошивка". В наше время соответствующая работа производится чисто электрическими методами, легко и быстро, а в то время это была очень трудоемкая работа, и возможна она была только в заводских условиях. \\ Характерная черта средневековых бортовых компьютеров - их программное обеспечение. Операционной системы как таковой в них нет. Вместо ОС может быть небольшая программа - диспетчер, функции которой сводятся к запуску прикладных программ на выполнение по команде пользователя. Все программы, нужные для работы, не хранятся на перфокартах и т. п., а записываются в постоянное запоминающее устройство (ПЗУ), емкость которого (так уж по жизни сложилось) обычно в 4..16 раз больше емкости ОЗУ. Ни редакторов, ни компиляторов, ни линковщиков на таких компьютерах не бывает, так что разработка программ может производиться только на //инструментальной машине//, также как для нынешних микроконтроллеров. Средневековые ПЗУ выполнялись на ферритовых сердечниках, и установка новой программы выполнялась вручную путем продевания длинного тонкого провода в отверстия сердечников. Внешне эта работа напоминала шитьё, и с тех пор для этой операции закрепился термин "прошивка". В наше время соответствующая работа производится чисто электрическими методами, легко и быстро, а в то время это была очень трудоемкая работа, и возможна она была только в заводских условиях. \\
Строка 339: Строка 339:
 Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\ Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\
 Паскаль - не единственный потомок Алгола: даже если считать только мало-мальски жизнеспособные, то все равно получится довольно много. Остановлюсь на языке **Ада**. Он был создан в 1979-1980 годах в США и сразу стал стандартным языком в Пентагоне и НАСА. Предполагалось, что он станет общемировым, но этого не произошло: даже в гражданских ведомствах США он не нашел признания. В России этот язык практически неизвестен, хотя книжка (переводная с английского, разумеется) мне в руки попадалась. \\ Паскаль - не единственный потомок Алгола: даже если считать только мало-мальски жизнеспособные, то все равно получится довольно много. Остановлюсь на языке **Ада**. Он был создан в 1979-1980 годах в США и сразу стал стандартным языком в Пентагоне и НАСА. Предполагалось, что он станет общемировым, но этого не произошло: даже в гражданских ведомствах США он не нашел признания. В России этот язык практически неизвестен, хотя книжка (переводная с английского, разумеется) мне в руки попадалась. \\
 +Языки, которые мы рассмотрели выше, назовем **классическими языками высокого уровня**. При всех внешних различиях они имеют много общего. Во-первых, они вписываются в категорический императив программирования и, соответственно, обеспечивают максимально возможную (максимально технически достижимую!) скорость выполнения операций. По этому параметру они лишь ненамного уступают языкам ассемблера. Во-вторых, эти языки создавались не с бухты-барахты, а по итогам серьезных научных изысканий. Язык Ада знаменует
 +собой закат эпохи классических языков. Конечно, потом будет еще микропроцессорно-микроконтроллерный язык ST, который и по внешнему виду, и по техническим параметрам безусловно принадлежит к классическим. И языки командных оболочек UNIX-подобных операционных систем тоже могут быть отнесены к классическим, пусть и с некоторыми оговорками. Но после Ады в эволюции языков начался большой поворот, который, похоже, не завершился и до настоящего времени. \\
 Сейчас я хочу акцентировать внимание читателя вот на чем: и Вирт, и Дейкстра, и Грейс Хоппер были учеными отнюдь не шуточного уровня, и их коллеги из Пентагона, НАСА и "ИБМ" тоже были не лыком шиты. Новые языки они придумывали не с бухты-барахты, а по итогам тщательного осмысления опыта эксплуатации языков-прототипов, от которых они отталкивались. Научная мысль обладает свойством воспроизводимости: мало-мальски глубокий специалист, не читавший научных трудов Вирта, может восстановить ход его мыслей, просто сравнивая Паскаль с Алголом. С другими языками ситуация в основном аналогична, но в совершенно иных обстоятельствах родился **язык C (Си)**. \\ Сейчас я хочу акцентировать внимание читателя вот на чем: и Вирт, и Дейкстра, и Грейс Хоппер были учеными отнюдь не шуточного уровня, и их коллеги из Пентагона, НАСА и "ИБМ" тоже были не лыком шиты. Новые языки они придумывали не с бухты-барахты, а по итогам тщательного осмысления опыта эксплуатации языков-прототипов, от которых они отталкивались. Научная мысль обладает свойством воспроизводимости: мало-мальски глубокий специалист, не читавший научных трудов Вирта, может восстановить ход его мыслей, просто сравнивая Паскаль с Алголом. С другими языками ситуация в основном аналогична, но в совершенно иных обстоятельствах родился **язык C (Си)**. \\
 Ходит легенда, что этот язык был создан на основе более старого языка B (Би), но с последним произошло именно то, о чем мы говорили в самом начале нашего исследования: от него не осталось никаких следов (да пОлно, был ли он вообще?). Зато при мало-мальски тщательном рассмотрении очевидно сходство языка Си с другим древним языком, который хотя и выведен уже давно из эксплуатации, но специалистам все же известен - я имею в виду Алгол. Однако, рассматривая различия между Си и Алголом, мы едва ли сможем понять логику людей, создававших Си (особенно если допустить, что они были знакомы с Паскалем, что вообще-то не факт). \\ Ходит легенда, что этот язык был создан на основе более старого языка B (Би), но с последним произошло именно то, о чем мы говорили в самом начале нашего исследования: от него не осталось никаких следов (да пОлно, был ли он вообще?). Зато при мало-мальски тщательном рассмотрении очевидно сходство языка Си с другим древним языком, который хотя и выведен уже давно из эксплуатации, но специалистам все же известен - я имею в виду Алгол. Однако, рассматривая различия между Си и Алголом, мы едва ли сможем понять логику людей, создававших Си (особенно если допустить, что они были знакомы с Паскалем, что вообще-то не факт). \\
igor/istoria.1647595418.txt.bz2 · Последнее изменение: 2022/03/18 12:23 — igor