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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
igor:istoria [2020/02/19 04:33] – [Криптография и криптоанализ как движущая сила компьютеростроения] igorigor:istoria [2022/05/01 18:15] (текущий) – [Программирование в средние века] igor
Строка 39: Строка 39:
 ==== Военные вычислительные устройства первой половины XX века ==== ==== Военные вычислительные устройства первой половины XX века ====
 На первых русских линкорах, проектировавшихся около 1910-го года, впервые в нашей истории был внедрен принцип центрального управления стрельбой орудий главного калибра. Вообще-то приборы управления стрельбой были предложены петербургским часовым мастером Н. Гейслером еще в 90-е годы XIX века (фирма Гейслера строила также телеграфные аппараты). Комплекс Гейслера включал //задающие// приборы, установленные в боевой рубке, и //принимающие// приборы, расположенные непосредственно у орудий и соединенные проводами с задающими приборами. Органами отображения информации служили циферблаты со стрелками - ничего другого в те времена не было. Задача наводчика сводилась к тому, чтобы развернуть орудия до совмещения со стрелками выходных данных прибора. Сами же приборы по существу представляли собой сельсины. [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BB%D1%8C%D1%81%D0%B8%D0%BD]] \\ На первых русских линкорах, проектировавшихся около 1910-го года, впервые в нашей истории был внедрен принцип центрального управления стрельбой орудий главного калибра. Вообще-то приборы управления стрельбой были предложены петербургским часовым мастером Н. Гейслером еще в 90-е годы XIX века (фирма Гейслера строила также телеграфные аппараты). Комплекс Гейслера включал //задающие// приборы, установленные в боевой рубке, и //принимающие// приборы, расположенные непосредственно у орудий и соединенные проводами с задающими приборами. Органами отображения информации служили циферблаты со стрелками - ничего другого в те времена не было. Задача наводчика сводилась к тому, чтобы развернуть орудия до совмещения со стрелками выходных данных прибора. Сами же приборы по существу представляли собой сельсины. [[https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BB%D1%8C%D1%81%D0%B8%D0%BD]] \\
-Такая система только передавала данные от командира к орудиям и не содержала каких-либо счетно-решающих элементов. По итогам русско-японской войны стало ясно, что система требует усовершенствования. В Англии были закуплены счетно-решающие приборы конструкции А. Поллена, но что эти приборы собой представляли? Информация крайне скудная. Можно не сомневаться, что устройством ввода данных в этот прибор служил оптический дальномер, установленный на корабле в соответствующей надстройке. А что внутри прибора? Можно только догадываться. \\+Такая система только передавала данные от командира к орудиям и первоначально не содержала каких-либо счетно-решающих элементов. По итогам русско-японской войны стало ясно, что система требует усовершенствования, и в 1911 гтакие усовершенствования были сделаны. Однако всем требованиям времени система Гейслера по-прежнему не удовлетворяла, так что в Англии были закуплены счетно-решающие приборы конструкции А. Поллена. Но что эти приборы собой представляли? Информация крайне скудная. Можно не сомневаться, что устройством ввода данных в этот прибор служил оптический дальномер, установленный на корабле в соответствующей надстройке. А что внутри прибора? Можно только догадываться. \\
 Представим себе валик, закрепленный в подшипниках с возможностью поворота вокруг своей оси. Если валик не трогать, то он сохраняет угол поворота, т. е. представляет собой //запоминающую ячейку//, имитирующую некоторую величину, участвующую в расчетах. Эту величину можно сразу же отображать визуально, если снабдить валик стрелкой и шкалой. Если валик поворачивать с некоторой скоростью, то его угловое положение будет представлять интеграл скорости, и получаем простейший вычислительный элемент - интегратор. Представим, что на валик насажено колесико, но не круглое, а имеющее какую-то криволинейную форму, и к краю колесика прижимается рычаг. Угловое положение этого рычага однозначно связано с угловым положением вала, но связано не непосредственно, а по какой-то зависимости (возможно сложной), определяемой формой колесика - и получаем вычислительный элемент - функциональный преобразователь. Два валика, соединенные системой рычагов, представляют сумматор... \\ Представим себе валик, закрепленный в подшипниках с возможностью поворота вокруг своей оси. Если валик не трогать, то он сохраняет угол поворота, т. е. представляет собой //запоминающую ячейку//, имитирующую некоторую величину, участвующую в расчетах. Эту величину можно сразу же отображать визуально, если снабдить валик стрелкой и шкалой. Если валик поворачивать с некоторой скоростью, то его угловое положение будет представлять интеграл скорости, и получаем простейший вычислительный элемент - интегратор. Представим, что на валик насажено колесико, но не круглое, а имеющее какую-то криволинейную форму, и к краю колесика прижимается рычаг. Угловое положение этого рычага однозначно связано с угловым положением вала, но связано не непосредственно, а по какой-то зависимости (возможно сложной), определяемой формой колесика - и получаем вычислительный элемент - функциональный преобразователь. Два валика, соединенные системой рычагов, представляют сумматор... \\
 Несколькими годами раньше российский инженер Алексей Крылов изобрел дифференциальный интегратор - механическую вычислительную машину, также основанную на валиках, колесиках и рычажках и решающую дифференциальные уравнения (применялась при проектировании кораблей). \\ Несколькими годами раньше российский инженер Алексей Крылов изобрел дифференциальный интегратор - механическую вычислительную машину, также основанную на валиках, колесиках и рычажках и решающую дифференциальные уравнения (применялась при проектировании кораблей). \\
 Примерно в то же самое время был построен эскадренный миноносец "Новик" - быстрейший корабль своего времени. Его главным оружием были не пушки, а торпеды, и для стрельбы ими был построен прибор центрального управления. Информации по этому прибору еще меньше. "Новик" был построен в единственном экземпляре, но почти сразу же было начато серийное строительство эсминцев, достаточно близких к нему. На них устанавливался торпедный прицел М-1 конструкции Михайлова, однако сейчас уже трудно понять, что он собой представлял: прибор управления или просто прицел. А на эсминцах последующих серий устанавливались приборы управления торпедной стрельбой (ПУТС), созданные петербургским филиалом шведской фирмы "Эриксон". Они оказались недостаточно надежны и к 1932 г. были заменены приборами ГАК-1, которые выпускались заводом "Электроприбор" N 212. \\ Примерно в то же самое время был построен эскадренный миноносец "Новик" - быстрейший корабль своего времени. Его главным оружием были не пушки, а торпеды, и для стрельбы ими был построен прибор центрального управления. Информации по этому прибору еще меньше. "Новик" был построен в единственном экземпляре, но почти сразу же было начато серийное строительство эсминцев, достаточно близких к нему. На них устанавливался торпедный прицел М-1 конструкции Михайлова, однако сейчас уже трудно понять, что он собой представлял: прибор управления или просто прицел. А на эсминцах последующих серий устанавливались приборы управления торпедной стрельбой (ПУТС), созданные петербургским филиалом шведской фирмы "Эриксон". Они оказались недостаточно надежны и к 1932 г. были заменены приборами ГАК-1, которые выпускались заводом "Электроприбор" N 212. \\
-В 30-е-40-е годы двадцатого века строились эскадренные миноносцы проекта 7 и 7У - внуки "Новика". На них уже было три прибора управления стрельбой: для орудий главного калибра, для зенитных орудий и для торпед. На кораблях более поздней постройки - лидерах - ставились ПУТС итальянской фирмы "Галилео". Закупка приборов передового технического уровня за рубежом, с одной стороны, не дает отечественным ученым и инженерам расслабляться, а с другой стороны, обогащает их ценным опытом. Так что в целом это нормальная практика, только ею не следует злоупотреблять. И уж совершенно недопустимо навязывать инженерам бездумное "передирание" иностранных образцов вместо создания своих, более совершенных. На лидерах "Минск" и "Ленинград" уже во время Великой Отечественной войны ПУТС "Галилео" были заменены на отечественные "Мина-1", созданные тем же заводом "Электроприбор" еще в 1934 г. \\+В 30-е-40-е годы двадцатого века строились эскадренные миноносцы проекта 7 и 7У - внуки "Новика". На них уже было три прибора управления стрельбой: для орудий главного калибра, для зенитных орудий и для торпед. На кораблях более поздней постройки - лидерах - ставились ПУТС итальянской фирмы "Галилео" образца 1928 г. Закупка приборов передового технического уровня за рубежом, с одной стороны, не дает отечественным ученым и инженерам расслабляться, а с другой стороны, обогащает их ценным опытом. Так что в целом это нормальная практика, только ею не следует злоупотреблять. И уж совершенно недопустимо навязывать инженерам бездумное "передирание" иностранных образцов вместо создания своих, более совершенных. На лидерах "Минск" и "Ленинград" уже во время Великой Отечественной войны ПУТС "Галилео" были заменены на отечественные "Мина-1", созданные тем же заводом "Электроприбор" еще в 1934 г. \\
 Подробнее смотрите вот здесь: [[http://naukarus.com/iz-istorii-sozdaniya-priborov-upravleniya-torpednoy-strelboy-v-otechestvennom-flote]] \\ Подробнее смотрите вот здесь: [[http://naukarus.com/iz-istorii-sozdaniya-priborov-upravleniya-torpednoy-strelboy-v-otechestvennom-flote]] \\
 Прибор управления артиллерийским зенитным огнем (ПУАЗО) можно увидеть как в Артиллерийском музее, так и в Военно-морском, но эти экспонаты дают представление только о внешнем виде прибора: \\ Прибор управления артиллерийским зенитным огнем (ПУАЗО) можно увидеть как в Артиллерийском музее, так и в Военно-морском, но эти экспонаты дают представление только о внешнем виде прибора: \\
Строка 159: Строка 159:
 Так неожиданно для всех возникла профессия **//программиста//**. Возникла как будто на пустом месте - и сразу в полный рост. \\ Так неожиданно для всех возникла профессия **//программиста//**. Возникла как будто на пустом месте - и сразу в полный рост. \\
 Элементной базой первых компьютеров были, как мы уже знаем, электромагнитные реле и электровакуумные лампы. Они не были придуманы на пустом месте - это были серийные промышленные изделия, использовавшиеся в аппаратуре связи. Стало быть, кто-то эти изделия создавал, и кто-то их применял. То есть первые компьютеростроители были обычными инженерами: электриками и электронщиками. А программистов среди них не было. Программирование не преподавалось в институтах, по нему не было книг. Между тем работа программиста требует специальных знаний, которые мало коррелируются с обычной математикой и практически совсем не коррелируются ни с электротехникой, ни с электроникой. Объем же этих знаний находится на пределе того, что доступно человеку с очень высоко развитым интеллектом! То есть программирование - самостоятельная профессия: ты можешь изучить целенаправленно именно эту профессию и работать в ней много лет, не нуждаясь ни в чем другом. \\ Элементной базой первых компьютеров были, как мы уже знаем, электромагнитные реле и электровакуумные лампы. Они не были придуманы на пустом месте - это были серийные промышленные изделия, использовавшиеся в аппаратуре связи. Стало быть, кто-то эти изделия создавал, и кто-то их применял. То есть первые компьютеростроители были обычными инженерами: электриками и электронщиками. А программистов среди них не было. Программирование не преподавалось в институтах, по нему не было книг. Между тем работа программиста требует специальных знаний, которые мало коррелируются с обычной математикой и практически совсем не коррелируются ни с электротехникой, ни с электроникой. Объем же этих знаний находится на пределе того, что доступно человеку с очень высоко развитым интеллектом! То есть программирование - самостоятельная профессия: ты можешь изучить целенаправленно именно эту профессию и работать в ней много лет, не нуждаясь ни в чем другом. \\
-Теперь вспомним, что мы говорили выше о стоимости вычислительной операции в древние времена. Стояло требование: программа должна содержать как можно меньше операций, а профит (польза, прибыль) от каждой операции должен быть максимальным. Таков был категорический императив древнего программирования, который пережил и средние века. В новое время он был пересмотрен, но в ту эпоху, которую мы сейчас обсуждаем, любая попытка игнорировать или обойти этот императив ничем, кроме убытков, закончиться не могла. Мы-то, конечно, понимаем, что задача извлечь максимум профита из ограниченного ресурса никогда и нигде в мире не была слишком простой. Стало быть, и людей, способных эту задачу решать, никогда и нигде в мире не было слишком много. Отсюда очевидна необходимость налаживать профессиональный отбор и подготовку таких специалистов. А теперь прикиньте: допустим, летом 1951 года, предвидя запуск М-1 и МЭСМ, мы объявим прием абитуриентов по специальности "программирование" - к работе они приступят не раньше 1956-го года, а еще потребуется года три, чтобы понять, насколько они годны и насколько годна методика их подготовки... На дворе 1958 год - закончен выпуск "Стрелы", ей на смену пришли другие машины, притом много и разных... \\+Теперь вспомним, что мы говорили выше о стоимости вычислительной операции в древние времена. Стояло требование: программа должна содержать как можно меньше операций, а профит (польза, прибыль) от каждой операции должен быть максимальным. Таков был **категорический императив древнего программирования**, который пережил и средние века. В новое время он был пересмотрен, но в ту эпоху, которую мы сейчас обсуждаем, любая попытка игнорировать или обойти этот императив ничем, кроме убытков, закончиться не могла. Мы-то, конечно, понимаем, что задача извлечь максимум профита из ограниченного ресурса никогда и нигде в мире не была слишком простой. Стало быть, и людей, способных эту задачу решать, никогда и нигде в мире не было слишком много. Отсюда очевидна необходимость налаживать профессиональный отбор и подготовку таких специалистов. А теперь прикиньте: допустим, летом 1951 года, предвидя запуск М-1 и МЭСМ, мы объявим прием абитуриентов по специальности "программирование" - к работе они приступят не раньше 1956-го года, а еще потребуется года три, чтобы понять, насколько они годны и насколько годна методика их подготовки... На дворе 1958 год - закончен выпуск "Стрелы", ей на смену пришли другие машины, притом много и разных... \\
 Программирование в древности было мастерством на грани искусства. Программистов было мало, а для непрограммиста разработка программ представлялась чем-то совершенно запредельным. \\ Программирование в древности было мастерством на грани искусства. Программистов было мало, а для непрограммиста разработка программ представлялась чем-то совершенно запредельным. \\
 === Задачи и особенности применения ЭВМ === === Задачи и особенности применения ЭВМ ===
Строка 189: Строка 189:
 В 50-е-60-е годы язык низкого уровня для каждой новой машины создавался без каких-либо стандартов, так что для программиста попытка хотя бы просто прочитать программу, написанную кем-то для другой машины, могла оказаться непростым делом. К концу древней эпохи стали стихийно складываться представления о том, что команды, общие для разных компьютеров, нужно и записывать как-то единообразно. Примерно тогда же для программы, переводящей мнемокод в машинный язык, утвердилось название **//ассемблер//** (англ. assembler - сборщик), а язык мнемокодов соответственно стали называть языком ассемблера. \\ В 50-е-60-е годы язык низкого уровня для каждой новой машины создавался без каких-либо стандартов, так что для программиста попытка хотя бы просто прочитать программу, написанную кем-то для другой машины, могла оказаться непростым делом. К концу древней эпохи стали стихийно складываться представления о том, что команды, общие для разных компьютеров, нужно и записывать как-то единообразно. Примерно тогда же для программы, переводящей мнемокод в машинный язык, утвердилось название **//ассемблер//** (англ. assembler - сборщик), а язык мнемокодов соответственно стали называть языком ассемблера. \\
 Правильно говорить: я программирую __на языке ассемблера__, но в обиходе чаще говорят просто: программирую __на ассемблере__. \\ Правильно говорить: я программирую __на языке ассемблера__, но в обиходе чаще говорят просто: программирую __на ассемблере__. \\
-Программирование на ассемблере сохраняет все преимущества программирования в кодах, но избавляет от основного недостатка: исходный текст на языке ассемблера хотя и выглядит ужасно сложно, но все же может быть прочитан человеком (а если можно прочитать, то отчего бы не попробовать написать?). И все-таки эта работа сложна и трудоемка, и доступна не всем. Отсюда появилась идея создать **//язык программирования высокого уровня//** (проблемно-ориентированный язык). Транслятор с языка высокого уровня сейчас обычно называют **//компилятором//**, но этот термин утвердился в более поздние времена. \\+Программирование на ассемблере сохраняет все преимущества программирования в кодах, но избавляет от основного недостатка: исходный текст на языке ассемблера хотя и выглядит ужасно сложно, но все же может быть прочитан человеком (а если можно прочитать, то отчего бы не попробовать написать?). И все-таки эта работа сложна и трудоемка, и доступна не всем. Отсюда появилась идея создать **//язык программирования высокого уровня//**. Задумавшись о создании таких языков, люди очень быстро пришли к пониманию, что такой язык, в противоположность языкам низкого уровня, не должен быть привязан к особенностям архитектуры какого-либо конкретного компьютера, т. е. должен быть абстракцией "компьютера вообще", языком межкомпьютерного общения. Такой язык должен обеспечивать программисту удобство решения некоторого широкого множества задач, отсюда возник термин **проблемно-ориентированный язык**. Транслятор с языка высокого уровня сейчас обычно называют **//компилятором//**, но этот термин утвердился в более поздние времена. \\
 Подобные языки - Алгол и Фортран - появились уже в 50-е годы, затем в этой отрасли имело место достаточно долгое и сложное развитие. \\ Подобные языки - Алгол и Фортран - появились уже в 50-е годы, затем в этой отрасли имело место достаточно долгое и сложное развитие. \\
-Язык программирования **Фортран** (англ. FORmula TRANslation - перевод формул) создан в 1954 г. - он современник паровозов! Для программистов того времени он стал тем же, чем были первые крупносерийные тепловозы ТЭ3 для наших железнодорожников: он принес с собой комфорт и скорость, прежде всего за счет исключения самой грязной и утомительной работы, каковой на паровозе была работа кочегара, а в вычислительной технике написание машинных кодов. Программа на Фортране имела вид не кодов, а формул, которые любому программисту привычны по школьной и институтской математике. Фортран превосходен как язык ученых, которые чаще всего сами не являются программистами, но ощущают потребность быстро создавать компактные программы для сложных числовых расчетов. Основной недостаток Фортрана - его непригодность для решения иных задач, кроме вычислений по формулам, поэтому сейчас он имеет ограниченное применение: главным образом там, где от программы требуются учебно-демонстрационные свойства. Будучи ПЕРВЫМ В ИСТОРИИ языком высокого уровня, Фортран жив и сейчас (последняя ревизия стандарта была в 2008 г.). За долгие годы на нем было написано множество программ математического назначения, которые хорошо отлажены, эффективны и доступны в виде исходных текстов - без преувеличения это достояние человечества! \\ +Язык программирования **Фортран** (англ. FORmula TRANslation - перевод формул) создан фирмой ИБМ под руководством Джона Бэкуса  в 1954 г. - он современник паровозов! Для программистов того времени он стал тем же, чем были первые крупносерийные тепловозы ТЭ3 для наших железнодорожников: он принес с собой комфорт и скорость, прежде всего за счет исключения самой грязной и утомительной работы, каковой на паровозе была работа кочегара, а в вычислительной технике написание машинных кодов. Программа на Фортране имела вид не кодов, а формул, которые любому программисту привычны по школьной и институтской математике. Примерно таких: \\ 
-**Кобол** (Common Business-Oriented Language - всеобщий бизнес-ориентированный язык, Грейс Хоппер, 1959 г.), в противоположность Фортрану, предназначен не для математиков и физиков, а для работников финансово-экономической сферы. В западном мире еще в 2000-е годы считалось, что на этом языке написано больше всего строк исходного текстано в СССР эта сфера всегда недооценивалась, так что Кобол у нас остался практически неизвестен. \\ +<code>VES = OBJEM * PLOTNOST</code> 
-Вот еще в качестве информации к размышлению на тему Кобола: [[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, а программисты **Алгол**. Для непосвященного человека разницы нет, но разница весьма ощутима для того, кто каждое утро садится за баранку этого пылесоса. Тепловозы мы сейчас оставим в покое. Они нам нужны лишь для того, чтобы проиллюстрировать одну мысль: различные области техники развиваются по схожим законам. А вот разницу между Алголом и Фортраном хотелось бы рассмотреть более подробно. \\+Основной недостаток Фортрана - его непригодность для решения иных задач, кроме вычислений по формулам, поэтому сейчас он имеет ограниченное применение: главным образом там, где от программы требуются учебно-демонстрационные свойства. Будучи ПЕРВЫМ В ИСТОРИИ официально принятым на вооружение языком высокого уровня, Фортран жив и сейчас (последняя ревизия стандарта была в 2008 г.). За долгие годы на нем было написано множество программ математического назначения, которые хорошо отлажены, эффективны и доступны в виде исходных текстов - без преувеличения это достояние человечества! \\ 
 +Запись арифметических операций в виде формул привычна всем современным программистам и кажется настолько естественной, что ничего другого как будто и быть не может, а между тем альтернативные пути были, и если мы хотим быть хорошими историками, то нам никуда не деться от того, чтобы осветить и эту тему. \\ 
 +Знала ли уже знакомая нам Грейс Хоппер, работая в начале 1950-х годов на фирме "Ремингтон-Рэнд" над разработкой уже знакомого нам UNIVAC I, о разработке Фортрана? Очень возможно, что и не знала, а может быть и знала, но сомневалась в его перспективности, а может сознательно решила идти своим путем... Впрочем, есть еще одна гипотеза, пусть и маловероятная: она элементарно не додумалась до алгоритма трансляции формул в машинные коды, ведь полная научная теория, на основании которой такие задачи решаются, была проработана Бэкусом несколько позже, в начале 1960-х годов. Так это было или не так, но есть одна вещь, которую мы можем утверждать с большой уверенностью: будучи по натуре глубоким ученым, создавая свой Flow-Matic, она не рассчитывала на то, что ее творение сразу овладеет умами всего человечества.  Flow-Matic стал "пробным шаром", остался практически неизвестным за пределами круга разработчиков и к нашему времени совершенно забыт. Однако его влияние на весь путь развития мирового программного искусства колоссально. Даже если бы Грейс Хоппер не создала больше ничего другого, ее вклад в это искусство превышал бы вклад любого из тех ученых и инженеров, которых мы будем вспоминать по ходу нашего исследования. \\ 
 +Во Flow-Matic арифметические операции записываются не формулами, а словесными выражениями. Примерно такими: \\ 
 +<code>MULTIPLY OBJEM BY PLOTNOST GIVING VES</code> 
 +Вероятно в то время считалось, что подобная запись более читаема для работников финансово-экономической сферы, которые не дружат с математикой и физикой. Во всяком случае, такую трактовку мы видим в позднейших руководствах по программированию на языке Кобол. Мнеоднако, сдается, что истинная подоплека здесь несколько другая: подобная запись хорошо "перекликается" не с Фортраном, а с тогдашними языками символического кодирования, которые в те времена только еще складывались. Иначе говоря, Хоппер не конструировала язык высокого уровня на чистом месте, а выращивала его из известного языка низкого уровня путем внесения изменений, направленных (а) на обеспечение кроссплатформенности и (б) на повышение читаемости. \\ 
 +Завершив работу над Flow-Matic, Хоппер на этом не остановиласьпродолжила действия в выбранном направлении... Потом были Math-Matic, AIMACO и COMTRAN - от них практически не осталось следов, что неудивительно - все они были пробными, создавались в ходе поисков "пути истины", и вот в итоге к 1959 г. сформировался-таки второй получивший широкое признание язык программирования - **Кобол** (COBOL - Common Business-Oriented Language - всеобщий бизнес-ориентированный язык). В противоположность Фортрану, Кобол предназначен не для математиков и физиков, а для работников финансово-экономической сферы. В западном мире еще в 2000-е годы считалось, что на этом языке написано больше всего строк исходного текста (по некоторым данным порядка 250 млрд строк - много это или мало - как судить?). В СССР эта сфера всегда недооценивалась, так что Кобол у нас остался практически неизвестен. \\ 
 +Примерно в 1980-е годы Кобол стали считать устаревшим, с тех пор он не преподается в учебных заведениях... Но вот еще в качестве информации к размышлению на тему Кобола: [[https://skillbox.ru/media/code/cobol-zhiv/]]  
 +[[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, а программисты **Алгол**. \\ 
 +Мои сверстники вспоминают ТЭП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, однако, не стал новой ступенью эволюции по отношению к Алголу (а по каким, собственно, основаниям от него этого ожидали?) и сошел со сцены еще раньше своего прототипа. \\ +Язык высокого уровня, в противоположность ассемблеру, всегда - математическая абстракция, описывающая некоторый "компьютер вообще". В нем нет (по крайней мере не должно быть) элементов, связанных с особенностями устройства какой-либо машины. Соответственно от программы, написанной на таком языке, мы ждем //переносимости//, или //кроссплатформенности//, т. е. возможности исполнять ее на любом компьютере, а не только на том, для которого она была изначально написана. На практике переносимость чаще всего бывает лишь частичной, т. к. не все компиляторы и не все операционные системы строго однозначно понимают все, что может быть записано в программе. Переносимость - чрезвычайно важное свойство программы, но оно не бесплатно: при написании программы на языке высокого уровня программист не может использовать тонкие возможности конкретного компьютера, так что программа выполняется медленнее и зачастую требует больше памяти, чем аналогичная программа на ассемблере. \\
-Язык высокого уровня, в противоположность ассемблеру, всегда - математическая абстракция, описывающая некоторый "компьютер вообще". В нем нет (по крайней мере не должно быть) элементов, связанных с особенностями устройства какой-либо машины. Соответственно от программы, написанной на таком языке, мы ждем //переносимости//, т. е. возможности исполнять ее на любом компьютере, а не только на том, для которого она была изначально написана. На практике переносимость чаще всего бывает лишь частичной, т. к. не все компиляторы и не все операционные системы строго однозначно понимают все, что может быть записано в программе. Переносимость - чрезвычайно важное свойство программы, но оно не бесплатно: при написании программы на языке высокого уровня программист не может использовать тонкие возможности конкретного компьютера, так что программа выполняется медленнее и зачастую требует больше памяти, чем аналогичная программа на ассемблере. \\+
 Алгол, Кобол и Фортран знаменуют собой древнекомпьютерную цивилизацию. Вот я это написал и соображаю: не забыл ли чего? Очень похоже, что не забыл. Древние люди отнюдь не стремились к разнообразию языков. Более того: они были ПРОТИВ разнообразия, потому что у них были в жизни другие приоритеты. И если мы серьезные историки, то мы просто обязаны в этих приоритетах разобраться. \\ Алгол, Кобол и Фортран знаменуют собой древнекомпьютерную цивилизацию. Вот я это написал и соображаю: не забыл ли чего? Очень похоже, что не забыл. Древние люди отнюдь не стремились к разнообразию языков. Более того: они были ПРОТИВ разнообразия, потому что у них были в жизни другие приоритеты. И если мы серьезные историки, то мы просто обязаны в этих приоритетах разобраться. \\
-Во-первых, поскольку основные пользователи Фортрана - ученые, то Фортран для них - инструмент научного познания. В науке ни одно достижение не утверждается само собой: оно требует обсуждения, обоснования, доказательств. Соответственно программа должна быть написана так, чтобы была понятна коллегам-ученым. А поскольку большинство коллег - не профессиональные программисты, изучение множества языков для них было бы совершенно непопутно. Нужен такой язык, чтобы один на всех, язык как средство международного общения. Фортран, будучи предельно простым для изучения (в сравнении с другими языками), этому требованию удовлетворял. \\+Во-первых, поскольку основные пользователи Фортрана - ученые, то Фортран для них - инструмент научного познания. В науке ни одно достижение не утверждается само собой: оно требует обсуждения, обоснования, доказательств. Соответственно программа должна быть написана так, чтобы была понятна коллегам-ученым. А поскольку большинство коллег - не профессиональные программисты (да еще и инглиш в школе не все хорошо учили, да и не всем его хорошо преподавали), изучение множества языков для них было бы совершенно непопутно. Нужен такой язык, чтобы один на всех, язык как средство международного общения. Фортран, будучи предельно простым для изучения (в сравнении с другими языками), этому требованию удовлетворял. \\
 Во-вторых, в те времена каждый новый компьютер отличался от прежних. Такого привычного нам сейчас понятия, как аппаратная платформа, тогда просто не существовало! Запуск любой программы на "неродном" железе почти всегда был авантюрой с шансами фифти\фифти. А теперь вообразите, что еще и каждая новая программа написана на своем языке... Разрабатывать для каждого нового компьютера множество компиляторов было технически сложно и экономически нерентабельно. Поэтому, как только создавали новый компьютер, первым делом создавали для него компилятор Фортрана, и в большинстве случаев этого было достаточно. \\ Во-вторых, в те времена каждый новый компьютер отличался от прежних. Такого привычного нам сейчас понятия, как аппаратная платформа, тогда просто не существовало! Запуск любой программы на "неродном" железе почти всегда был авантюрой с шансами фифти\фифти. А теперь вообразите, что еще и каждая новая программа написана на своем языке... Разрабатывать для каждого нового компьютера множество компиляторов было технически сложно и экономически нерентабельно. Поэтому, как только создавали новый компьютер, первым делом создавали для него компилятор Фортрана, и в большинстве случаев этого было достаточно. \\
 Рассмотрим процесс решения задачи на древней ЭВМ. Перфокарты, заложенные в лоток считывателя, представляют собой **//поток данных//**. Поток представляет собой цепь данных, которая не имеет определенного конца и начала, не имеет длины, соответственно местонахождение каждого "звена" цепи может быть определено только относительно предыдущего и последующего звеньев, но не по его месту относительно начала потока. Все данные, содержащиеся в потоке, должны читаться последовательно, в том порядке, как они записаны, и каждый байт можно прочитать только один раз: если упустить его из оперативной памяти, то больше мы его не увидим. Если подготовлено несколько задач, которые нужно решить сегодня, то тексты программ включаются в поток последовательно, а исходные данные для решения каждой задачи либо вставляются прямо в текст программы, либо следуют за ним с соблюдением определенных формальностей. Операционная система читает текст программы и компилирует его. Результат компиляции - машинный код - размещается в оперативной памяти компьютера (больше его размещать, скорее всего, просто негде). По окончании компиляции программа сразу запускается на выполнение. Если какие-то данные нужно вводить, значит, ожидаем увидеть их во входном потоке именно сейчас. Когда задача решена, операционная система читает из входного потока следующие команды. \\ Рассмотрим процесс решения задачи на древней ЭВМ. Перфокарты, заложенные в лоток считывателя, представляют собой **//поток данных//**. Поток представляет собой цепь данных, которая не имеет определенного конца и начала, не имеет длины, соответственно местонахождение каждого "звена" цепи может быть определено только относительно предыдущего и последующего звеньев, но не по его месту относительно начала потока. Все данные, содержащиеся в потоке, должны читаться последовательно, в том порядке, как они записаны, и каждый байт можно прочитать только один раз: если упустить его из оперативной памяти, то больше мы его не увидим. Если подготовлено несколько задач, которые нужно решить сегодня, то тексты программ включаются в поток последовательно, а исходные данные для решения каждой задачи либо вставляются прямо в текст программы, либо следуют за ним с соблюдением определенных формальностей. Операционная система читает текст программы и компилирует его. Результат компиляции - машинный код - размещается в оперативной памяти компьютера (больше его размещать, скорее всего, просто негде). По окончании компиляции программа сразу запускается на выполнение. Если какие-то данные нужно вводить, значит, ожидаем увидеть их во входном потоке именно сейчас. Когда задача решена, операционная система читает из входного потока следующие команды. \\
Строка 220: Строка 230:
 Древняя эпоха отличается тем, что программируемые цифровые вычислительные машины стали электронными (первоначально - ламповыми), стали выпускаться на заводах серийно и начали вытеснять протокомпьютеры и эокомпьютеры, как электромеханические, так и электронные аналоговые. Введенный мною термин "цивилизация" наверняка вызовет возражения у читателей, особенно у тех, кто интересуется "настоящей" историей. Я настаиваю на этом термине, потому что в рассматриваемую эпоху в СССР, США и Великобритании, а чуть позже и в других странах, сформировалась компьютерно-программная __промышленность__, движущей силой развития которой были уже не энтузиасты-одиночки, работавшие в гаражно-коленочных условиях, а инженерные коллективы, вооруженные научными теориями и имеющие серьезную финансовую поддержку. Несмотря на это, компьютеров было мало, и доступ к ним был __ресурсом__, т. е. чем-то таким, чего все хотели, но на всех не хватало. \\ \\ Древняя эпоха отличается тем, что программируемые цифровые вычислительные машины стали электронными (первоначально - ламповыми), стали выпускаться на заводах серийно и начали вытеснять протокомпьютеры и эокомпьютеры, как электромеханические, так и электронные аналоговые. Введенный мною термин "цивилизация" наверняка вызовет возражения у читателей, особенно у тех, кто интересуется "настоящей" историей. Я настаиваю на этом термине, потому что в рассматриваемую эпоху в СССР, США и Великобритании, а чуть позже и в других странах, сформировалась компьютерно-программная __промышленность__, движущей силой развития которой были уже не энтузиасты-одиночки, работавшие в гаражно-коленочных условиях, а инженерные коллективы, вооруженные научными теориями и имеющие серьезную финансовую поддержку. Несмотря на это, компьютеров было мало, и доступ к ним был __ресурсом__, т. е. чем-то таким, чего все хотели, но на всех не хватало. \\ \\
 ===== 70-е-80-е годы ХХ века - компьютерные средние века ===== ===== 70-е-80-е годы ХХ века - компьютерные средние века =====
-С появлением транзисторов стремление проектировщиков ЭВМ создать небольшое, недорогое и энергоэкономичное изделие не только не остановилось - наоборот, оно еще усилилось. В 1960-е годы была изобретена интегральная микросхема - устройство размером с транзистор (порядка 1 см), содержащее несколько десятков транзисторов и представляющее собой целый блок, реализующий некоторую операцию по обработке данных. В наше время уже никого не удивляют микросхемы с миллионами транзисторов. Микроэлектронная технология (основанная на микросхемах) позволила радикально улучшить все основные параметры компьютеров: уменьшить размеры, вес и стоимость, уменьшить потребление электроэнергии и как следствие - облегчить тепловой режим машины, увеличить быстродействие. Так появились ЭВМ //третьего поколения//, к которому относятся и вся наша нынешняя вычислительная техника. Однако новое поколение само по себе не означало смены исторических эпох: прогресс в деле миниатюризации элементов ЭВМ был и раньше, и позже. Смену исторических эпох я увязываю не с микросхемами, а с внедрением в повседневную практику диалогового режима общения пользователей с ЭВМ. \\+С появлением транзисторов стремление проектировщиков ЭВМ создать небольшое, недорогое и энергоэкономичное изделие не только не остановилось - наоборот, оно еще усилилось. В 1960-е годы была изобретена интегральная микросхема - устройство размером с транзистор (порядка 1 см), содержащее несколько десятков транзисторов и представляющее собой целый блок, реализующий некоторую операцию по обработке данных. В наше время уже никого не удивляют микросхемы с миллионами транзисторов. Важнейшее свойство микросхемы состоит в том, что входящие в ее состав транзисторы и соединения между ними не монтируются один за другим, а печатаются подобно гравюре все сразу, так что затраты времени на их создание не зависят от их количества. Микроэлектронная технология (основанная на микросхемах) позволила радикально улучшить все основные параметры компьютеров: уменьшить размеры, вес и стоимость, уменьшить потребление электроэнергии и как следствие - облегчить тепловой режим машины, увеличить быстродействие. Так появились ЭВМ //третьего поколения//, к которому относятся и вся наша нынешняя вычислительная техника. Однако новое поколение само по себе не означало смены исторических эпох: прогресс в деле миниатюризации элементов ЭВМ был и раньше, и позже. Смену исторических эпох я увязываю не с микросхемами, а с внедрением в повседневную практику диалогового режима общения пользователей с ЭВМ. \\
 Термин "средние века" у человека далекого от настоящей истории ассоциируется с рыцарскими междоусобицами и религиозным мракобесием... Наши, компьютерные средние века совершенно другие: это период колоссального расцвета и развития. По итогам этого периода компьютерный и особенно программный мир приобрели в значительной мере тот вид, который привычен нам сейчас. \\ \\ Термин "средние века" у человека далекого от настоящей истории ассоциируется с рыцарскими междоусобицами и религиозным мракобесием... Наши, компьютерные средние века совершенно другие: это период колоссального расцвета и развития. По итогам этого периода компьютерный и особенно программный мир приобрели в значительной мере тот вид, который привычен нам сейчас. \\ \\
 ==== Терминалы, мейнфреймы, серверы и клиенты ==== ==== Терминалы, мейнфреймы, серверы и клиенты ====
Строка 246: Строка 256:
 Эра микропроцессоров по-настоящему начинается с 1974 г., когда эта же фирма выпустила восьмиразрядный микропроцессор 8080 (в нашей стране выпускался клон под марками К580ИК80 или К580ВМ80). Именно этот микропроцессор стал первым практически пригодным для создания полнопрофильного домашнего компьютера, который можно было использовать для обучения программированию (на студенческом уровне и даже выше), для подготовки текстовых деловых документов и для несложных игр. Идея такого компьютера кажется очевидным продолжением идеи видеотерминала, но в 1974 г. видеотерминалы как таковые только начали появляться, и нынешняя концепция персонального компьютера с монитором и клавиатурой еще не сложилась. Я вам скажу больше: это в нашем нынешнем представлении микропроцессор создается с целью построить маленький и дешевый компьютер для использования в качестве персонального, а в ту эпоху, которую мы сейчас рассматриваем, у людей были другие приоритеты. Мейнфреймы с видеотерминалами покрывали потребность людей в вычислительных ресурсах на рабочем месте с гораздо большим успехом, чем "персоналки", по той простой причине, что на мейнфрейме можно реализовать такие функции, которые для тогдашней "персоналки" немыслимы в принципе (да, эти функции придется делить на энное число пользователей, но это все равно лучше, чем совсем ничего). Микропроцессор же виделся как новая элементная база прежде всего для управляющих машин и промышленной автоматики. Поэтому самый первый серийный компьютер на базе микропроцессора 8080 - Альтаир 8800 [[https://vk.com/@myironcomp-komputer-bez-kotorogo-ne-bylo-by-microsoft-i-apple]] - был похож не на привычный нам теперь персональный компьютер, а на привычный нам в 70-е годы процессор обычной мини-ЭВМ. У него не было не то что экрана, но даже однострочного многоразрядного индикатора, как в калькуляторах или в тактических ракетных компьютерах, рассмотренных в главе "На земле, в небесах и на море". Идея подключить к нему клавиатуру и видеомонитор пришла чуть позже. Автором этой идеи считается Стив Возняк (тот самый, который в порядке развития этой идеи построил первый массовый персональный компьютер "Эппл 1"). Именно "Альтаир" стал той машиной, на которой начинали программировать Билл Гейтс и Пол Аллен. \\ Эра микропроцессоров по-настоящему начинается с 1974 г., когда эта же фирма выпустила восьмиразрядный микропроцессор 8080 (в нашей стране выпускался клон под марками К580ИК80 или К580ВМ80). Именно этот микропроцессор стал первым практически пригодным для создания полнопрофильного домашнего компьютера, который можно было использовать для обучения программированию (на студенческом уровне и даже выше), для подготовки текстовых деловых документов и для несложных игр. Идея такого компьютера кажется очевидным продолжением идеи видеотерминала, но в 1974 г. видеотерминалы как таковые только начали появляться, и нынешняя концепция персонального компьютера с монитором и клавиатурой еще не сложилась. Я вам скажу больше: это в нашем нынешнем представлении микропроцессор создается с целью построить маленький и дешевый компьютер для использования в качестве персонального, а в ту эпоху, которую мы сейчас рассматриваем, у людей были другие приоритеты. Мейнфреймы с видеотерминалами покрывали потребность людей в вычислительных ресурсах на рабочем месте с гораздо большим успехом, чем "персоналки", по той простой причине, что на мейнфрейме можно реализовать такие функции, которые для тогдашней "персоналки" немыслимы в принципе (да, эти функции придется делить на энное число пользователей, но это все равно лучше, чем совсем ничего). Микропроцессор же виделся как новая элементная база прежде всего для управляющих машин и промышленной автоматики. Поэтому самый первый серийный компьютер на базе микропроцессора 8080 - Альтаир 8800 [[https://vk.com/@myironcomp-komputer-bez-kotorogo-ne-bylo-by-microsoft-i-apple]] - был похож не на привычный нам теперь персональный компьютер, а на привычный нам в 70-е годы процессор обычной мини-ЭВМ. У него не было не то что экрана, но даже однострочного многоразрядного индикатора, как в калькуляторах или в тактических ракетных компьютерах, рассмотренных в главе "На земле, в небесах и на море". Идея подключить к нему клавиатуру и видеомонитор пришла чуть позже. Автором этой идеи считается Стив Возняк (тот самый, который в порядке развития этой идеи построил первый массовый персональный компьютер "Эппл 1"). Именно "Альтаир" стал той машиной, на которой начинали программировать Билл Гейтс и Пол Аллен. \\
 Еще через 2 года фирма "Зилог" выпустила легендарный Z80, на основе которого фирма "Синклер" изготавливала, вероятно, самый удачный и самый массовый домашний компьютер - ZX Spectrum (1982 г.). По сути Z80 представлял собой не что иное как слегка доработанный 8080 с расширенной системой команд. В 1983 г. появился первый портативный компьютер TRS-80 Model 100 с 8-строчным экраном, 32кБ ПЗУ и 8..32кБ оперативной памяти, способный работать от батареек или аккумулятора. [[https://oldcomputers.net/trs100.html]] А в январе 1984 г. появилась еще одна легенда - "Эппл Макинтош". Компьютеры этой марки строились сначала на 16-разрядных процессорах фирмы "Моторола", последующие модели этого семейства - на 32-разрядных процессорах фирмы "ИБМ", а позже "Интел". \\ Еще через 2 года фирма "Зилог" выпустила легендарный Z80, на основе которого фирма "Синклер" изготавливала, вероятно, самый удачный и самый массовый домашний компьютер - ZX Spectrum (1982 г.). По сути Z80 представлял собой не что иное как слегка доработанный 8080 с расширенной системой команд. В 1983 г. появился первый портативный компьютер TRS-80 Model 100 с 8-строчным экраном, 32кБ ПЗУ и 8..32кБ оперативной памяти, способный работать от батареек или аккумулятора. [[https://oldcomputers.net/trs100.html]] А в январе 1984 г. появилась еще одна легенда - "Эппл Макинтош". Компьютеры этой марки строились сначала на 16-разрядных процессорах фирмы "Моторола", последующие модели этого семейства - на 32-разрядных процессорах фирмы "ИБМ", а позже "Интел". \\
 +Вот еще немного пищи для размышлений на тему персональных компьютеров: [[https://habr.com/ru/company/cloud4y/blog/571014/]] \\
 Компьютеры на базе 8080 и Z80 открыли эру восьмиразрядных машин, которых всего-то 10 лет назад никто и вообразить не мог. Такой компьютер, разумеется, мог производить и точные расчеты, но только за счет т. н. "длинной арифметики", или программной эмуляции арифметических операций с большими числами (в т. ч. и с плавающей запятой). Если же учесть, что тактовая частота таких процессоров достигала 4 МГц, то быстродействие получалось как будто совсем неплохое, где-то на уровне ЕС-1020 или "Минск-32"! Но процессор - лишь одна из составных частей компьютера, а причина недостаточности "умственных способностей" компьютера может скрываться в других его частях или в том, как они взаимодействуют. Нормальный процессор для обращения к ячейкам памяти использует адрес длиной в одно или два машинных слова: идеально - одно, на крайняк соглашаемся на два. Если исхитриться, можно, конечно, и больше, но грамотные инженеры не любят "объездных дорог". Мы сейчас говорим о восьмиразрядном процессоре - значит, адрес длиной в одно машинное слово позволяет обращаться к 256 ячейкам - это безобразно мало. Эта проблема решается через использование спаренных регистров, таких как H и L в процессорах 8080, как DPTR в микроконтроллерах MCS48..51. Адрес в два машинных слова позволяет адресовать 64К ячеек - для домашней игрушки это сойдет, для несложной промышленной управляющей машинки вполне туды-сюды, но для профессиональной работы на уровне 80-х годов этого уже недостаточно. Поэтому, чтобы построить профессиональный персональный компьютер, все та же фирма "Интел" в 1978 г. выпустила 16-разрядный микропроцессор 8086. Он имел замысловатую систему сегментации памяти, благодаря которой мог обращаться к ячейкам с 20-разрядными адресами, т. е. мог работать с памятью емкостью до 1МБ. Это был прорыв, но поначалу этот процессор был встречен специалистами прохладно: казался чересчур переусложненным. На основе этого процессора фирма ИБМ в 1981 г. построила персональный компьютер, получивший незатейливое название IBM PC, т. е. просто "персональный компьютер от международных деловых машин". Этот компьютер, что называется, получил хороший рынок. Выпуск таких процессоров и таких компьютеров давно прекращен, но современные настольные компьютеры и ноутбуки являются потомками PC и Intel 8086 в четвертом или пятом поколении. \\ Компьютеры на базе 8080 и Z80 открыли эру восьмиразрядных машин, которых всего-то 10 лет назад никто и вообразить не мог. Такой компьютер, разумеется, мог производить и точные расчеты, но только за счет т. н. "длинной арифметики", или программной эмуляции арифметических операций с большими числами (в т. ч. и с плавающей запятой). Если же учесть, что тактовая частота таких процессоров достигала 4 МГц, то быстродействие получалось как будто совсем неплохое, где-то на уровне ЕС-1020 или "Минск-32"! Но процессор - лишь одна из составных частей компьютера, а причина недостаточности "умственных способностей" компьютера может скрываться в других его частях или в том, как они взаимодействуют. Нормальный процессор для обращения к ячейкам памяти использует адрес длиной в одно или два машинных слова: идеально - одно, на крайняк соглашаемся на два. Если исхитриться, можно, конечно, и больше, но грамотные инженеры не любят "объездных дорог". Мы сейчас говорим о восьмиразрядном процессоре - значит, адрес длиной в одно машинное слово позволяет обращаться к 256 ячейкам - это безобразно мало. Эта проблема решается через использование спаренных регистров, таких как H и L в процессорах 8080, как DPTR в микроконтроллерах MCS48..51. Адрес в два машинных слова позволяет адресовать 64К ячеек - для домашней игрушки это сойдет, для несложной промышленной управляющей машинки вполне туды-сюды, но для профессиональной работы на уровне 80-х годов этого уже недостаточно. Поэтому, чтобы построить профессиональный персональный компьютер, все та же фирма "Интел" в 1978 г. выпустила 16-разрядный микропроцессор 8086. Он имел замысловатую систему сегментации памяти, благодаря которой мог обращаться к ячейкам с 20-разрядными адресами, т. е. мог работать с памятью емкостью до 1МБ. Это был прорыв, но поначалу этот процессор был встречен специалистами прохладно: казался чересчур переусложненным. На основе этого процессора фирма ИБМ в 1981 г. построила персональный компьютер, получивший незатейливое название IBM PC, т. е. просто "персональный компьютер от международных деловых машин". Этот компьютер, что называется, получил хороший рынок. Выпуск таких процессоров и таких компьютеров давно прекращен, но современные настольные компьютеры и ноутбуки являются потомками PC и Intel 8086 в четвертом или пятом поколении. \\
 Компьютеры IBM PC, как и следующее поколение - PC/XT - не были чем-то революционным. Да, у них была необычно большая для персональных машин емкость памяти, и был цветной монитор, но машины с такими особенностями были и раньше - просто до поры-до времени они были дороговаты. Но общую тенденцию к удешевлению техники никто не отменял, значит такой компьютер по такой цене рано или поздно должен был появиться. Он и появился - один из многих. Убойной фишкой был не сам компьютер, а его программное обеспечение. Основой его была операционная система MS DOS, которая представляла собой великолепный компромисс между функциональностью и сложностью. К тому же она была снабжена подробной и доходчивой документацией, и это не считая "художественных" книг, по которым, даже без документации, можно было изучить ее принципы действия. Никогда в истории - ни до того, ни после - не было операционной системы, которая была бы так хорошо приспособлена для программирования. Прикладные программы для DOS разрабатывались множеством фирм в мире, но и любой грамотный пользователь мог подобрать подходящую для себя среду разработки и создавать программы по своим потребностям. Век DOS оказался недолог (начало разработки в 1981 г., массовое распространение - около 1988 г., начало заката - 1996 г., а последние компьютеры с DOS эксплуатировались примерно до 2002 г.) Ее боевые возможности не успевали за бурным развитием железа, но DOS успела дать мощный толчок развитию мирового программистского искусства и оказала огромное влияние на путь развития этого искусства на десятилетия вперед. \\ Компьютеры IBM PC, как и следующее поколение - PC/XT - не были чем-то революционным. Да, у них была необычно большая для персональных машин емкость памяти, и был цветной монитор, но машины с такими особенностями были и раньше - просто до поры-до времени они были дороговаты. Но общую тенденцию к удешевлению техники никто не отменял, значит такой компьютер по такой цене рано или поздно должен был появиться. Он и появился - один из многих. Убойной фишкой был не сам компьютер, а его программное обеспечение. Основой его была операционная система MS DOS, которая представляла собой великолепный компромисс между функциональностью и сложностью. К тому же она была снабжена подробной и доходчивой документацией, и это не считая "художественных" книг, по которым, даже без документации, можно было изучить ее принципы действия. Никогда в истории - ни до того, ни после - не было операционной системы, которая была бы так хорошо приспособлена для программирования. Прикладные программы для DOS разрабатывались множеством фирм в мире, но и любой грамотный пользователь мог подобрать подходящую для себя среду разработки и создавать программы по своим потребностям. Век DOS оказался недолог (начало разработки в 1981 г., массовое распространение - около 1988 г., начало заката - 1996 г., а последние компьютеры с DOS эксплуатировались примерно до 2002 г.) Ее боевые возможности не успевали за бурным развитием железа, но DOS успела дать мощный толчок развитию мирового программистского искусства и оказала огромное влияние на путь развития этого искусства на десятилетия вперед. \\
Строка 277: Строка 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 раз больше емкости ОЗУ. Ни редакторов, ни компиляторов, ни линковщиков на таких компьютерах не бывает, так что разработка программ может производиться только на //инструментальной машине//, также как для нынешних микроконтроллеров. Средневековые ПЗУ выполнялись на ферритовых сердечниках, и установка новой программы выполнялась вручную путем продевания длинного тонкого провода в отверстия сердечников. Внешне эта работа напоминала шитьё, и с тех пор для этой операции закрепился термин "прошивка". В наше время соответствующая работа производится чисто электрическими методами, легко и быстро, а в то время это была очень трудоемкая работа, и возможна она была только в заводских условиях. \\
Строка 288: Строка 299:
 Я пишу в основном о корабельных ЭВМ, поскольку с ними знаком. На самом деле "Атака" была не первой такой машиной, а ведь были ЭВМ и самолетные, и наземные. \\ \\ Я пишу в основном о корабельных ЭВМ, поскольку с ними знаком. На самом деле "Атака" была не первой такой машиной, а ведь были ЭВМ и самолетные, и наземные. \\ \\
 ==== Программирование в средние века ==== ==== Программирование в средние века ====
-Изучая древнюю компьютерную цивилизацию, мы произнесли фразу: "кто имел хороший компьютер, тот имел наше все". С наступлением средних веков ситуация стала меняться. Выпуск транзисторов и микросхем привел к тому, что компьютеров стало много. Задач для них тоже меньше не стало. Но связующим звеном между Задачей и Компьютером была и остается Программа. Кто имел хорошую программу, тот имел наше все, а кто программы не имел, тот был обречен оставаться лузером. \\+Изучая древнюю компьютерную цивилизацию, мы произнесли фразу: "кто имел хороший компьютер, тот имел наше все". С наступлением средних веков ситуация стала меняться. Выпуск транзисторов и микросхем привел к тому, что компьютеров стало много. Задач для них тоже меньше не стало. Но связующим звеном между Задачей и Компьютером была и остается Программа. Кто имел хорошую программу, тот имел наше все, а кто программы не имел, тот был обречен оставаться лузером. Теперь так (и так осталось до наших дней, и в обозримом будущем вряд ли изменится). \\
 === Задачи === === Задачи ===
 В средние века наметилось разделение некогда единой профессии программиста на несколько специальностей. \\ В средние века наметилось разделение некогда единой профессии программиста на несколько специальностей. \\
 Прежде всего, размежевались системные программисты и прикладные. Важнейшее различие между ними в том, что в прикладном программировании господствовали языки высокого уровня, тогда как системное ПО разрабатывалось преимущественно на языках ассемблера. Но и в лагере прикладных программистов единства тоже больше не было. \\ Прежде всего, размежевались системные программисты и прикладные. Важнейшее различие между ними в том, что в прикладном программировании господствовали языки высокого уровня, тогда как системное ПО разрабатывалось преимущественно на языках ассемблера. Но и в лагере прикладных программистов единства тоже больше не было. \\
-Выше мы уже неоднократно отмечали, что весь древний компьютерный мир, как "железный", так и программный, был "заточен" под сложные физико-математические задачи. Однако ничто не вечно под луной - в 60-е годы ситуация начала меняться. В средние века Большая Математика была уже в основном перемолота, но на смену ей пришла Большая Экономика. Под этим термином я подразумеваю не только экономическую науку (хотя там тоже есть над чем голову поломать), но вообще весь комплекс задач по управлению народным хозяйством: складской и управленческий учет, планирование и управление производством, логистику и, конечно, бухгалтерию, куда же без нее, родимой? \\+Выше мы уже неоднократно отмечали, что весь древний компьютерный мир, как "железный", так и программный, был "заточен" под сложные физико-математические задачи. Однако ничто не вечно под луной - в 60-е годы ситуация начала меняться. В средние века Большая Математика была уже в основном перемолота, но на смену ей пришла Большая Экономика (что в значительной мере было предопределено появлением языка Кобол, созданного, как мы помним, в 1959 г.). Под этим термином я подразумеваю не только экономическую науку (хотя там тоже есть над чем голову поломать), но вообще весь комплекс задач по управлению народным хозяйством: складской и управленческий учет, планирование и управление производством, логистику и, конечно, бухгалтерию, куда же без нее, родимой? \\
 Мы говорим о типичных для того времени прикладных задачах, но никто не отменял инженерных задач, осталось и некоторое количество научных. Про последние, собственно, сейчас уже трудно сказать, стало ли их меньше: очевидно, что с увеличением общемирового объема вычислительных работ доля науки в этом объеме мало-помалу устремилась к нулю. Под инженерными мы понимаем, с одной стороны, расчетные задачи, близкие к научным (в этой отрасли программирования мало что изменилось по сравнению с древними веками), и с другой стороны, задачи, близкие к экономическим: разработка различной документации, например технологической (на заводах) или сметной (на стройках). \\ Мы говорим о типичных для того времени прикладных задачах, но никто не отменял инженерных задач, осталось и некоторое количество научных. Про последние, собственно, сейчас уже трудно сказать, стало ли их меньше: очевидно, что с увеличением общемирового объема вычислительных работ доля науки в этом объеме мало-помалу устремилась к нулю. Под инженерными мы понимаем, с одной стороны, расчетные задачи, близкие к научным (в этой отрасли программирования мало что изменилось по сравнению с древними веками), и с другой стороны, задачи, близкие к экономическим: разработка различной документации, например технологической (на заводах) или сметной (на стройках). \\
 Задачи Большой Экономики отличаются от физико-математических тем, что здесь не бывает сложных алгоритмов. По большому счету основная масса экономических задач сводится к выборке подмножества показателей из некоторого множества и суммированию соответствующих величин. Это операция тотализации, которая еще в первобытные времена успешно решалась с помощью счетно-аналитических машин. Однако отсутствие алгоритма отнюдь не упрощает работу программиста - скорее наоборот. Программы древней эпохи обычно довольно компактны. Грубо говоря, древний программист 360 дней в году размышлял над моделями и методами, а 25 декабря садился-таки за компьютер, и к новому году его размышления воплощались в пару страниц на Фортране или Алголе. Новые задачи часто требовали написания программ непривычно большого объема. Разработка таких программ всегда дело долгое и хлопотное. Однако давайте задумаемся, из каких источников эта работа может финансироваться. \\ Задачи Большой Экономики отличаются от физико-математических тем, что здесь не бывает сложных алгоритмов. По большому счету основная масса экономических задач сводится к выборке подмножества показателей из некоторого множества и суммированию соответствующих величин. Это операция тотализации, которая еще в первобытные времена успешно решалась с помощью счетно-аналитических машин. Однако отсутствие алгоритма отнюдь не упрощает работу программиста - скорее наоборот. Программы древней эпохи обычно довольно компактны. Грубо говоря, древний программист 360 дней в году размышлял над моделями и методами, а 25 декабря садился-таки за компьютер, и к новому году его размышления воплощались в пару страниц на Фортране или Алголе. Новые задачи часто требовали написания программ непривычно большого объема. Разработка таких программ всегда дело долгое и хлопотное. Однако давайте задумаемся, из каких источников эта работа может финансироваться. \\
Строка 328: Строка 339:
 Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\ Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\
 Паскаль - не единственный потомок Алгола: даже если считать только мало-мальски жизнеспособные, то все равно получится довольно много. Остановлюсь на языке **Ада**. Он был создан в 1979-1980 годах в США и сразу стал стандартным языком в Пентагоне и НАСА. Предполагалось, что он станет общемировым, но этого не произошло: даже в гражданских ведомствах США он не нашел признания. В России этот язык практически неизвестен, хотя книжка (переводная с английского, разумеется) мне в руки попадалась. \\ Паскаль - не единственный потомок Алгола: даже если считать только мало-мальски жизнеспособные, то все равно получится довольно много. Остановлюсь на языке **Ада**. Он был создан в 1979-1980 годах в США и сразу стал стандартным языком в Пентагоне и НАСА. Предполагалось, что он станет общемировым, но этого не произошло: даже в гражданских ведомствах США он не нашел признания. В России этот язык практически неизвестен, хотя книжка (переводная с английского, разумеется) мне в руки попадалась. \\
 +Языки, которые мы рассмотрели выше, назовем **классическими языками высокого уровня**. При всех внешних различиях они имеют много общего. Во-первых, они вписываются в категорический императив программирования и, соответственно, обеспечивают максимально возможную (максимально технически достижимую!) скорость выполнения операций. По этому параметру они лишь ненамного уступают языкам ассемблера. Во-вторых, эти языки создавались не с бухты-барахты, а по итогам серьезных научных изысканий. Язык Ада знаменует
 +собой закат эпохи классических языков. Конечно, потом будет еще микропроцессорно-микроконтроллерный язык ST, который и по внешнему виду, и по техническим параметрам безусловно принадлежит к классическим. И языки командных оболочек UNIX-подобных операционных систем тоже могут быть отнесены к классическим, пусть и с некоторыми оговорками. Но после Ады в эволюции языков начался большой поворот, который, похоже, не завершился и до настоящего времени. \\
 Сейчас я хочу акцентировать внимание читателя вот на чем: и Вирт, и Дейкстра, и Грейс Хоппер были учеными отнюдь не шуточного уровня, и их коллеги из Пентагона, НАСА и "ИБМ" тоже были не лыком шиты. Новые языки они придумывали не с бухты-барахты, а по итогам тщательного осмысления опыта эксплуатации языков-прототипов, от которых они отталкивались. Научная мысль обладает свойством воспроизводимости: мало-мальски глубокий специалист, не читавший научных трудов Вирта, может восстановить ход его мыслей, просто сравнивая Паскаль с Алголом. С другими языками ситуация в основном аналогична, но в совершенно иных обстоятельствах родился **язык C (Си)**. \\ Сейчас я хочу акцентировать внимание читателя вот на чем: и Вирт, и Дейкстра, и Грейс Хоппер были учеными отнюдь не шуточного уровня, и их коллеги из Пентагона, НАСА и "ИБМ" тоже были не лыком шиты. Новые языки они придумывали не с бухты-барахты, а по итогам тщательного осмысления опыта эксплуатации языков-прототипов, от которых они отталкивались. Научная мысль обладает свойством воспроизводимости: мало-мальски глубокий специалист, не читавший научных трудов Вирта, может восстановить ход его мыслей, просто сравнивая Паскаль с Алголом. С другими языками ситуация в основном аналогична, но в совершенно иных обстоятельствах родился **язык C (Си)**. \\
 Ходит легенда, что этот язык был создан на основе более старого языка B (Би), но с последним произошло именно то, о чем мы говорили в самом начале нашего исследования: от него не осталось никаких следов (да пОлно, был ли он вообще?). Зато при мало-мальски тщательном рассмотрении очевидно сходство языка Си с другим древним языком, который хотя и выведен уже давно из эксплуатации, но специалистам все же известен - я имею в виду Алгол. Однако, рассматривая различия между Си и Алголом, мы едва ли сможем понять логику людей, создававших Си (особенно если допустить, что они были знакомы с Паскалем, что вообще-то не факт). \\ Ходит легенда, что этот язык был создан на основе более старого языка B (Би), но с последним произошло именно то, о чем мы говорили в самом начале нашего исследования: от него не осталось никаких следов (да пОлно, был ли он вообще?). Зато при мало-мальски тщательном рассмотрении очевидно сходство языка Си с другим древним языком, который хотя и выведен уже давно из эксплуатации, но специалистам все же известен - я имею в виду Алгол. Однако, рассматривая различия между Си и Алголом, мы едва ли сможем понять логику людей, создававших Си (особенно если допустить, что они были знакомы с Паскалем, что вообще-то не факт). \\
igor/istoria.1582075995.txt.bz2 · Последнее изменение: 2020/02/19 04:33 — igor