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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2019/04/29 23:51] – [Программирование в средние века] igorigor:istoria [2020/02/14 15:28] – [Специализированные и проблемно-ориентированные компьютеры] igor
Строка 12: Строка 12:
 Леонардо да Винчи около 1500 года предложил счетную машинку с колесами. В последующие века было создано множество моделей машин, которые содержали колеса с нанесенными на них цифрами и по сути были потомками машинки Леонардо да Винчи. В XVII веке немец В. Шиккард, француз Б. Паскаль, голландец Г. Лейбниц предложили свои образцы механических калькуляторов, способных выполнять арифметические действия с многоразрядными числами. \\ Леонардо да Винчи около 1500 года предложил счетную машинку с колесами. В последующие века было создано множество моделей машин, которые содержали колеса с нанесенными на них цифрами и по сути были потомками машинки Леонардо да Винчи. В XVII веке немец В. Шиккард, француз Б. Паскаль, голландец Г. Лейбниц предложили свои образцы механических калькуляторов, способных выполнять арифметические действия с многоразрядными числами. \\
 Сейчас я хочу подвести читателя к мысли, которая будет лейтмотивом всей этой статьи. Эта мысль кажется очевидной для экономически грамотного человека, но раньше ни в каких книгах и статьях по вычислительной технике мне не встречалась. Мысль такая: вычислительная техника не живет в каком-то своем, отдельном, замкнутом мирке - она существует в мире, населенном людьми. А людям свойственно совершать поступки, руководствуясь не хочуками-нехочуками, а __коммерческим интересом__. В истории человечества новая техника появлялась много раз, и каждый раз она появлялась там и тогда, где и когда совпадали два условия: у людей накапливался для этой техники значительный объем работы, и за эту работу они были готовы платить. Так в XIX веке пароходы и железные дороги появились потому, что лошади больше не справлялись с возросшим объемом торговых грузоперевозок. А в XX веке автомобили и самолеты появились потому, что уже пароходы и железные дороги не справлялись... Но мы сейчас говорим о XVII веке, когда люди ездили на лошадях, дрались на шпагах, мололи хлеб на водяных мельницах, а по морю ходили под парусами. 90% населения голубого шарика были совершенно неграмотны, стало быть считать не умели, но жили без этого спокойно и ни в какой вычислительной технике не ощущали нужды. И замысловатые машинки с множеством прецизионных металлических деталей смотрелись как курьезы и могли заинтересовать только таких же чудаков, как и их создатели. Мы увидим, что и позже уровень развития вычислительной техники и ее распространенность на планете прямо коррелируются с уровнем грамотности населения. \\ Сейчас я хочу подвести читателя к мысли, которая будет лейтмотивом всей этой статьи. Эта мысль кажется очевидной для экономически грамотного человека, но раньше ни в каких книгах и статьях по вычислительной технике мне не встречалась. Мысль такая: вычислительная техника не живет в каком-то своем, отдельном, замкнутом мирке - она существует в мире, населенном людьми. А людям свойственно совершать поступки, руководствуясь не хочуками-нехочуками, а __коммерческим интересом__. В истории человечества новая техника появлялась много раз, и каждый раз она появлялась там и тогда, где и когда совпадали два условия: у людей накапливался для этой техники значительный объем работы, и за эту работу они были готовы платить. Так в XIX веке пароходы и железные дороги появились потому, что лошади больше не справлялись с возросшим объемом торговых грузоперевозок. А в XX веке автомобили и самолеты появились потому, что уже пароходы и железные дороги не справлялись... Но мы сейчас говорим о XVII веке, когда люди ездили на лошадях, дрались на шпагах, мололи хлеб на водяных мельницах, а по морю ходили под парусами. 90% населения голубого шарика были совершенно неграмотны, стало быть считать не умели, но жили без этого спокойно и ни в какой вычислительной технике не ощущали нужды. И замысловатые машинки с множеством прецизионных металлических деталей смотрелись как курьезы и могли заинтересовать только таких же чудаков, как и их создатели. Мы увидим, что и позже уровень развития вычислительной техники и ее распространенность на планете прямо коррелируются с уровнем грамотности населения. \\
-**//Компьютерный палеолит//** - эпоха, когда никакие вычислительные устройства не имели перспектив ни промышленного производства, ни промышленного применения. Эта эпоха продолжалась до 1820 г., пока Т. де Кальмар во Франции не наладил промышленный выпуск колесных вычислительных машин, получивших название арифмометров. Основной областью применения арифмометров до самого окончания их выпуска была и осталась бухгалтерия. Позже арифмометры стали строиться и в других странах. В нашей стране новейшая модель "Феликс" производилась миллионными тиражами и продавалась года примерно до 1980-го. А вот любопытный экспонат петербургского Музея связи - счетно-суммирующая машина СДУ-138, датируемая серединой XX века. По большому счету, тот же арифмометр: \\+**//Компьютерный палеолит//** - эпоха, когда никакие вычислительные устройства не имели перспектив ни промышленного производства, ни промышленного применения. Эта эпоха продолжалась до 1820 г., пока Т. де Кальмар во Франции не наладил промышленный выпуск колесных вычислительных машин, получивших название арифмометров. Основной областью применения арифмометров до самого окончания их выпуска была и осталась бухгалтерия. Позже арифмометры стали строиться и в других странах. В нашей стране новейшая модель "Феликс" (с множеством модификаций) производилась миллионными тиражами с 1929 по 1978 гг на заводах в Курске и Пензе\\ 
 +А вот любопытный экспонат петербургского Музея связи - счетно-суммирующая машина СДУ-138, датируемая серединой XX века. По большому счету, тот же арифмометр: \\
 {{igor:istoria-sdu138.jpg?400}} \\ {{igor:istoria-sdu138.jpg?400}} \\
 +Подобные машины (с возможностью вывода результатов на печать) строились во многих странах. Их изготовлением, кстати, занимались в том числе и знаменитые оружейные фирмы, например "Вальтер" и "Ремингтон". \\
 Среди арифмометров были немногочисленные "умные" образцы, но большинство было попроще: они могли выполнять только сложение и вычитание. \\ Среди арифмометров были немногочисленные "умные" образцы, но большинство было попроще: они могли выполнять только сложение и вычитание. \\
 В XVII веке была изобретена логарифмическая линейка - прибор, позволявший выполнять поначалу только умножение и деление, а чуть позже "научившийся" и многим другим действиям. У меня хранится логарифмическая линейка, на которой еще отец считал студенческие курсовики, и я ею даже изредка пользуюсь. Это обычная прямая линейка, а у отца была еще круглая, похожая на карманные часы - довольно редкий экземпляр даже для своего времени, но она у нас не сохранилась. \\ В XVII веке была изобретена логарифмическая линейка - прибор, позволявший выполнять поначалу только умножение и деление, а чуть позже "научившийся" и многим другим действиям. У меня хранится логарифмическая линейка, на которой еще отец считал студенческие курсовики, и я ею даже изредка пользуюсь. Это обычная прямая линейка, а у отца была еще круглая, похожая на карманные часы - довольно редкий экземпляр даже для своего времени, но она у нас не сохранилась. \\
Строка 22: Строка 24:
 В 80-е годы XIX века американец Г. Холлерит (в старых книгах может встретиться написание фамилии Голлерит) изобрел табулятор. По большому счету это шкаф с множеством счетчиков (первоначально 40, у следующих образцов могло быть по-разному), каждый из которых может увеличивать свое значение на единицу при замыкании электрической цепи. Носителем информации для табулятора служили картонные перфокарты наподобие тех, которые раньше использовались в жаккардовых ткацких станках. Перфокарта была разделена на позиции (числом таким же, как число счетчиков в табуляторе), и в каждой позиции можно было пробить отверстие. Когда перфокарта вводилась в табулятор, каждый из его счетчиков либо сохранял прежнее значение, либо плюсовал единицу, если соответствующее отверстие пробито. \\ В 80-е годы XIX века американец Г. Холлерит (в старых книгах может встретиться написание фамилии Голлерит) изобрел табулятор. По большому счету это шкаф с множеством счетчиков (первоначально 40, у следующих образцов могло быть по-разному), каждый из которых может увеличивать свое значение на единицу при замыкании электрической цепи. Носителем информации для табулятора служили картонные перфокарты наподобие тех, которые раньше использовались в жаккардовых ткацких станках. Перфокарта была разделена на позиции (числом таким же, как число счетчиков в табуляторе), и в каждой позиции можно было пробить отверстие. Когда перфокарта вводилась в табулятор, каждый из его счетчиков либо сохранял прежнее значение, либо плюсовал единицу, если соответствующее отверстие пробито. \\
 Для чего была нужна такая машина? Табулятор был впервые применен в 1890-м году для обработки результатов переписи населения США. Сведения о каждом жителе страны записывались на перфокарту путем пробивки отверстий в нужных позициях перфокарты. Например для сведений об образовании могли отвести 4 позиции: "неграмотный", "начальное", "среднее" или "высшее". По завершении переписи все перфокарты были пропущены через табулятор, и каждый из счетчиков показал количество перфокарт, в которых имелось отверстие в соответствующей позиции, т. е. можно было увидеть прямо в цифрах, сколько в стране людей неграмотных, сколько с начальным образованием и т. д. В последующие десятилетия табулятор был усовершенствован, "научился" новым действиям. Подобные устройства выпускались до середины XX века, а в 1986 году на студенческой практике мне довелось видеть немецкий трофейный табулятор постройки, кажется, 1937 года: он стоял рядом с ЭВМ "Минск-32" и находился в повседневной эксплуатации! \\ Для чего была нужна такая машина? Табулятор был впервые применен в 1890-м году для обработки результатов переписи населения США. Сведения о каждом жителе страны записывались на перфокарту путем пробивки отверстий в нужных позициях перфокарты. Например для сведений об образовании могли отвести 4 позиции: "неграмотный", "начальное", "среднее" или "высшее". По завершении переписи все перфокарты были пропущены через табулятор, и каждый из счетчиков показал количество перфокарт, в которых имелось отверстие в соответствующей позиции, т. е. можно было увидеть прямо в цифрах, сколько в стране людей неграмотных, сколько с начальным образованием и т. д. В последующие десятилетия табулятор был усовершенствован, "научился" новым действиям. Подобные устройства выпускались до середины XX века, а в 1986 году на студенческой практике мне довелось видеть немецкий трофейный табулятор постройки, кажется, 1937 года: он стоял рядом с ЭВМ "Минск-32" и находился в повседневной эксплуатации! \\
-Именно табуляторы были первой продукцией знаменитой американской фирмы IBM. Это были громоздкие, тяжелые (почти в тонну весом) агрегаты из нескольких тысяч деталей. При работе они издавали шум, напоминающий пулеметную стрельбу. \\+Именно табуляторы были первой продукцией знаменитой американской фирмы IBM (International Business Machines, основана в 1911 г. как CTR, переименована в IBM в 1924 г.). Это были громоздкие, тяжелые (почти в тонну весом) агрегаты из нескольких тысяч деталей. При работе они издавали шум, напоминающий пулеметную стрельбу. \\
 Табулятор представляет собой просто набор счетчиков, хотя и собранных в общем корпусе, но действующих по отдельности и выполняющих одну простейшую операцию: увеличение на 1. Компьютером такая машина считаться не может. \\ Табулятор представляет собой просто набор счетчиков, хотя и собранных в общем корпусе, но действующих по отдельности и выполняющих одну простейшую операцию: увеличение на 1. Компьютером такая машина считаться не может. \\
 Вам, вероятно, знакомо слово тотализатор? В представлении советского/российского человека, читавшего романы английского писателя Дика Френсиса, это слово прочно ассоциируется с преступными играми на ипподроме. С играми, ради которых людей порой убивают... Но давайте попробуем разобраться беспристрастно, что представляет собой тотализатор с чисто технической точки зрения. А представляет он не что иное как машину, выполняющую операцию тотализации, т. е. подведения постатейных подытогов. Это гибрид табулятора и арифмометра, или несколько арифмометров в одном: каждый из них, кроме одного, суммирует вводимые в него числа, а один счетчик - последний - суммирует все, что введено в прибор. То есть мы для множества чисел (ставок разных игроков на разных лошадей) подсчитываем постатейные подытоги (ставку на каждую лошадь) и общий итог. Когда все ставки приняты, владелец тотализатора сопоставляет полученные итоги и вычисляет процент выигрыша, приходящийся на каждую ставку. Машина подобного типа существовала и вне ипподрома, называлась она счетно-аналитической машиной и использовалась в бухгалтерии для решения задачи аналитического учета (то, что у бухгалтеров называется аналитическим учетом, как раз типичная задача тотализации). В СССР первые такие машины (импортные) появились в 1925 г. А десятью годами позже в Москве был открыт Первый государственный завод счетно-аналитических машин. На нем с 1939 г. под маркой "Т-4" выпускались сальдирующие табуляторы конструкции В. Н. Рязанкина, способные не только складывать, но и вычитать (термины "табулятор" и "счетно-аналитическая машина" тогда уже стали практически синонимами). И еще один родственник табулятора и тотализатора - механический кассовый аппарат, предложенный в 1875 г. Такой аппарат, как на следующем фото слева (КИМ-3-СП), можно было увидеть в любом магазине на протяжении большей части XX века, а теперь - только в Музее связи. Правда, этот аппарат более поздний (1978 г.), но конструктивно он мало отличается от аппаратов конца XIX - начала XX в. Справа - кассовый аппарат "Онега-III" (1969 г.), предназначенный для использования на почте. \\ Вам, вероятно, знакомо слово тотализатор? В представлении советского/российского человека, читавшего романы английского писателя Дика Френсиса, это слово прочно ассоциируется с преступными играми на ипподроме. С играми, ради которых людей порой убивают... Но давайте попробуем разобраться беспристрастно, что представляет собой тотализатор с чисто технической точки зрения. А представляет он не что иное как машину, выполняющую операцию тотализации, т. е. подведения постатейных подытогов. Это гибрид табулятора и арифмометра, или несколько арифмометров в одном: каждый из них, кроме одного, суммирует вводимые в него числа, а один счетчик - последний - суммирует все, что введено в прибор. То есть мы для множества чисел (ставок разных игроков на разных лошадей) подсчитываем постатейные подытоги (ставку на каждую лошадь) и общий итог. Когда все ставки приняты, владелец тотализатора сопоставляет полученные итоги и вычисляет процент выигрыша, приходящийся на каждую ставку. Машина подобного типа существовала и вне ипподрома, называлась она счетно-аналитической машиной и использовалась в бухгалтерии для решения задачи аналитического учета (то, что у бухгалтеров называется аналитическим учетом, как раз типичная задача тотализации). В СССР первые такие машины (импортные) появились в 1925 г. А десятью годами позже в Москве был открыт Первый государственный завод счетно-аналитических машин. На нем с 1939 г. под маркой "Т-4" выпускались сальдирующие табуляторы конструкции В. Н. Рязанкина, способные не только складывать, но и вычитать (термины "табулятор" и "счетно-аналитическая машина" тогда уже стали практически синонимами). И еще один родственник табулятора и тотализатора - механический кассовый аппарат, предложенный в 1875 г. Такой аппарат, как на следующем фото слева (КИМ-3-СП), можно было увидеть в любом магазине на протяжении большей части XX века, а теперь - только в Музее связи. Правда, этот аппарат более поздний (1978 г.), но конструктивно он мало отличается от аппаратов конца XIX - начала XX в. Справа - кассовый аппарат "Онега-III" (1969 г.), предназначенный для использования на почте. \\
Строка 56: Строка 58:
 Чтобы прибор мог считаться компьютером, он должен обладать, как минимум, одной из двух способностей: (а) выполнять не одну какую-то математическую операцию, как например арифмометр, а расчеты с множеством действий, когда результат какого-то действия используется в последующих действиях, т. е. реализовать //алгоритм//, и (б) решать задачу многократно для изменяющихся исходных данных. Прибор, о котором пишет Инрайт, обоим этим требованиям удовлетворяет... \\ Чтобы прибор мог считаться компьютером, он должен обладать, как минимум, одной из двух способностей: (а) выполнять не одну какую-то математическую операцию, как например арифмометр, а расчеты с множеством действий, когда результат какого-то действия используется в последующих действиях, т. е. реализовать //алгоритм//, и (б) решать задачу многократно для изменяющихся исходных данных. Прибор, о котором пишет Инрайт, обоим этим требованиям удовлетворяет... \\
 Еще один аргумент "ЗА": состояние устройств вывода описанных выше приборов неоднозначно зависит от входных данных на текущий момент: оно зависит также и от того, что было на входе раньше. Иными словами, эти приборы обладают //памятью//. Однако есть и аргумент "ПРОТИВ": алгоритм, реализованный в этих приборах, целиком определяется их конструкцией и не может быть изменен, т. е. такие приборы не программируются. \\ Еще один аргумент "ЗА": состояние устройств вывода описанных выше приборов неоднозначно зависит от входных данных на текущий момент: оно зависит также и от того, что было на входе раньше. Иными словами, эти приборы обладают //памятью//. Однако есть и аргумент "ПРОТИВ": алгоритм, реализованный в этих приборах, целиком определяется их конструкцией и не может быть изменен, т. е. такие приборы не программируются. \\
-Рассматривая приборы управления стрельбой первой половины и середины XX века, любой нормальный ученый-историк на этом поставил бы точку. Я ставлю не точку, а запятую. Прибор центральной наводки орудий выдавал на свой выход углы наводки по вертикали и горизонтали - во времена Первой мировой войны ни о чем другом думать не приходилось. На самом деле __вычислить__ углы наводки - половина дела. Вторая половина дела состоит в том, чтобы развернуть многотонное орудие на нужные углы быстро и точно (от быстроты и точности зависит победа в бою!). Для решения этой задачи в середине XX века была разработана специальная физико-математическая дисциплина: //теория следящих систем//, или теория автоматического регулирования. Решающий вклад в эту науку внесли ученые из Великобритании. Когда же теория была создана, очевидно, не заставил себя ждать и прибор, основанный на этой теории, - пропорционально-интегрально-дифференциальный регулятор (ПИД-регулятор). Без ПИД-регуляторов немыслима современная промышленная автоматика (да и военная тоже). Принципиально важно: такой регулятор НЕ МОГ появиться раньше, чем была разработана теория. В нынешних учебных заведениях изучается принцип устройства и действия таких регуляторов (современных!), но ни в какой литературе мне не встречалось ни малейшее упоминание о том, где и когда такие приборы впервые использовались, как выглядели, кем строились... И уж подавно ни один историк военного кораблестроения ни слова не скажет о том, что корабль, оснащенный ПИД-регуляторами, имеет все шансы на победу в бою над противником, не имеющим таких регуляторов. \\+Рассматривая приборы управления стрельбой первой половины и середины XX века, любой нормальный ученый-историк на этом поставил бы точку. Я ставлю не точку, а запятую. Прибор центральной наводки орудий выдавал на свой выход углы наводки по вертикали и горизонтали - во времена Первой мировой войны ни о чем другом думать не приходилось. На самом деле __вычислить__ углы наводки - половина дела. Вторая половина дела состоит в том, чтобы развернуть многотонное орудие на нужные углы быстро и точно (от быстроты и точности зависит победа в бою!). Для решения этой задачи в середине XX века была разработана специальная физико-математическая дисциплина: //теория следящих систем//, или теория автоматического регулирования. Решающий вклад в эту науку внесли ученые из Великобритании. Когда же теория была создана, очевидно, не заставил себя ждать и прибор, основанный на этой теории, - пропорционально-интегрально-дифференциальный регулятор (ПИД-регулятор). Без ПИД-регуляторов немыслима современная промышленная автоматика (да и военная тоже). Правда, в современной технике мы редко видим ПИД-регулятор как отдельный прибор: сама функция ПИД-регулирования не так уж сложна и чаще всего возлагается на любой имеющийся поблизости компьютер. Принципиально важно: такой регулятор НЕ МОГ появиться раньше, чем была разработана теория. В нынешних учебных заведениях изучается принцип устройства и действия таких регуляторов (современных!), но ни в какой литературе мне не встречалось ни малейшее упоминание о том, где и когда такие приборы впервые использовались, как выглядели, кем строились... И уж подавно ни один историк военного кораблестроения ни слова не скажет о том, что корабль, оснащенный ПИД-регуляторами, имеет все шансы на победу в бою над противником, не имеющим таких регуляторов. \\
 Я пишу о морских вычислительных приборах, поскольку с ними хоть как-то знаком. Свои вычислительные средства были и в авиации: штурманские приборы, бомбовые и стрелково-пушечные прицелы... Так получилось, что до середины XX века военная вычислительная техника развивалась бурно, а гражданская заметно от нее отставала. \\ Я пишу о морских вычислительных приборах, поскольку с ними хоть как-то знаком. Свои вычислительные средства были и в авиации: штурманские приборы, бомбовые и стрелково-пушечные прицелы... Так получилось, что до середины XX века военная вычислительная техника развивалась бурно, а гражданская заметно от нее отставала. \\
 === *** === === *** ===
Строка 76: Строка 78:
 Математическая криптография первой половины XX века шла по пути наименьшего сопротивления: создавала шифрсистемы __с закрытым ключом__. Смысл в том, что алгоритм шифрования либо вообще открытый, либо существует вероятность, что он станет известен врагу. Но для расшифровки наших посланий алгоритм знать недостаточно: нужен //ключ//, который известен только отправителю и получателю. Два субъекта, желающие установить связь друг с другом, предварительно должны обменяться ключами, и сделать это нужно так, чтобы ключ не попал в чужие руки. Пока субъектами были военные и государственные учреждения, такой подход всех устраивал. Но история имеет свойство повторяться. В начале XXI века задача установления засекреченной связи стояла уже перед простыми гражданами, для которых обмен закрытыми ключами был сопряжен с определенными трудностями, а то и вовсе невозможен. Ответом на эту задачу стали шифрсистемы __с открытым ключом__, но это уже совсем другая история. \\ Математическая криптография первой половины XX века шла по пути наименьшего сопротивления: создавала шифрсистемы __с закрытым ключом__. Смысл в том, что алгоритм шифрования либо вообще открытый, либо существует вероятность, что он станет известен врагу. Но для расшифровки наших посланий алгоритм знать недостаточно: нужен //ключ//, который известен только отправителю и получателю. Два субъекта, желающие установить связь друг с другом, предварительно должны обменяться ключами, и сделать это нужно так, чтобы ключ не попал в чужие руки. Пока субъектами были военные и государственные учреждения, такой подход всех устраивал. Но история имеет свойство повторяться. В начале XXI века задача установления засекреченной связи стояла уже перед простыми гражданами, для которых обмен закрытыми ключами был сопряжен с определенными трудностями, а то и вовсе невозможен. Ответом на эту задачу стали шифрсистемы __с открытым ключом__, но это уже совсем другая история. \\
 Можно ли считать "Энигму" компьютером? По-моему, нет. В лучшем случае она тянет на специализированный гаждет. Зато машина "Бомба", которую англичане построили для раскрытия шифра "Энигмы", к компьютерам приближается вплотную. Когда же вместо "Энигмы" немцы построили более хитрую машину "Лоренц", англичане ответили им своим "Колоссусом" (1943 г.). В создании "Бомбы" участвовал математик Алан Тьюринг. "Бомба" была __специализированным__ устройством, но, работая над ней, Тьюринг уже задумывался о том, что делать дальше, и выдвинул принципы построения __универсальных__ машин: (1) машина должна иметь множество одинаковых запоминающих ячеек, (2) любая математическая операция может быть выполнена с данными из любых ячеек, (3) чтобы указать машине, какие операции нужно выполнять и над какими данными, пишется //программа//, которая не "ввинчивается" в машину намертво, а помещается опять-таки в запоминающие ячейки, где она может быть быстро и легко заменена без ущерба для "железа". Идейное наследие Тьюринга этим отнюдь не исчерпывается. В учебниках рассматривается //машина Тьюринга// - это математическая абстракция, которая никогда не воплощалась в металле и никогда не будет воплощаться, потому что менее эффективна, чем обычные компьютеры. \\ Можно ли считать "Энигму" компьютером? По-моему, нет. В лучшем случае она тянет на специализированный гаждет. Зато машина "Бомба", которую англичане построили для раскрытия шифра "Энигмы", к компьютерам приближается вплотную. Когда же вместо "Энигмы" немцы построили более хитрую машину "Лоренц", англичане ответили им своим "Колоссусом" (1943 г.). В создании "Бомбы" участвовал математик Алан Тьюринг. "Бомба" была __специализированным__ устройством, но, работая над ней, Тьюринг уже задумывался о том, что делать дальше, и выдвинул принципы построения __универсальных__ машин: (1) машина должна иметь множество одинаковых запоминающих ячеек, (2) любая математическая операция может быть выполнена с данными из любых ячеек, (3) чтобы указать машине, какие операции нужно выполнять и над какими данными, пишется //программа//, которая не "ввинчивается" в машину намертво, а помещается опять-таки в запоминающие ячейки, где она может быть быстро и легко заменена без ущерба для "железа". Идейное наследие Тьюринга этим отнюдь не исчерпывается. В учебниках рассматривается //машина Тьюринга// - это математическая абстракция, которая никогда не воплощалась в металле и никогда не будет воплощаться, потому что менее эффективна, чем обычные компьютеры. \\
-Как мы теперь видим, Тьюринг был не первый, кто додумался до теоретических принципов построения компьютера (за исключением того, что в машинах Цузе программа не хранилась в запоминающих ячейках, а читалась с перфоленты). Тьюринг был первым, кто заявил эти принципы вслух, и первым, кого услышали, в итоге получилось так, что он считается основоположником современной архитектуры компьютеров. В рамках принципов, выдвинутых Тьюрингом, были построены машины: в Англии - EDSAC (1949 г.), в США - ENIAC (1944 г.) и EDVAC (1949 г.), которые уже без всякой натяжки могут считаться настоящими компьютерами. Эти машины знаменуют собой конец первобытной эпохи и начало компьютерной цивилизации. \\ \\+Как мы теперь видим, Тьюринг был не первый, кто додумался до теоретических принципов построения компьютера (за исключением того, что в машинах Цузе программа не хранилась в запоминающих ячейках, а читалась с перфоленты). Тьюринг был первым, кто заявил эти принципы вслух, и первым, кого услышали, в итоге получилось так, что он считается основоположником современной архитектуры компьютеров. В рамках принципов, выдвинутых Тьюрингом, были построены машины: в Англии - EDSAC (1949 г.), в США - ENIAC (строился в 1944-1946 гг., работал до 1955 г.) и EDVAC (1949 г.), которые уже без всякой натяжки могут считаться настоящими компьютерами. Эти машины знаменуют собой конец первобытной эпохи и начало компьютерной цивилизации. \\ \\
 ==== Характеристика эпохи ==== ==== Характеристика эпохи ====
 Первобытная эпоха в компьютерном мире продолжалась до середины XX века и характеризовалась следующим: \\ Первобытная эпоха в компьютерном мире продолжалась до середины XX века и характеризовалась следующим: \\
Строка 83: Строка 85:
 * Хотя к концу эпохи уже налаживалось серийное производство вычислительных устройств на заводах, основной движущей силой прогресса были одиночные гении-изобретатели, многие из которых остались непонятыми и непризнанными. Что же касается программирования, то его по сути не было, если не считать той самой первой программы, которую якобы составила Ада Лавлейс. \\ \\ * Хотя к концу эпохи уже налаживалось серийное производство вычислительных устройств на заводах, основной движущей силой прогресса были одиночные гении-изобретатели, многие из которых остались непонятыми и непризнанными. Что же касается программирования, то его по сути не было, если не считать той самой первой программы, которую якобы составила Ада Лавлейс. \\ \\
 ===== 50-е-60-е годы ХХ века - эпоха древней компьютерной цивилизации ===== ===== 50-е-60-е годы ХХ века - эпоха древней компьютерной цивилизации =====
-В годы Второй мировой войны и после нее наметился коренной пересмотр взглядов человечества на вычислительную технику. Развивалось кораблестроение, авиация, ракетная техника, энергетика (в т. ч. атомная). На повестке дня стояло освоение космоса. Стало ясно, что современные технические изделия невозможно создавать, полагаясь только на интуицию мастеров - нужны подробные и точные расчеты. Произошло именно то, о чем мы говорили в предыдущей главе: людям нужно было очень много считать, и это невозможно было делать бесплатно. Кто имел хороший компьютер, тот имел наше все, а кто компьютера не имел, был обречен оставаться лузером - не важно, просто человек, или завод, или целое государство. Но кто мог построить хороший компьютер? Стало ясно, что время энтузиастов прошло и к делу пора подключать бюджет. \\+В годы Второй мировой войны и после нее наметился коренной пересмотр взглядов человечества на вычислительную технику. Развивалось кораблестроение, авиация, ракетная техника, энергетика (в т. ч. атомная). На повестке дня стояло освоение космоса. Стало ясно, что современные технические изделия невозможно создавать, полагаясь только на интуицию мастеров - нужны подробные и точные расчеты. Произошло именно то, о чем мы говорили в предыдущей главе: людям нужно было очень много считать, и это невозможно было делать бесплатно. Кто имел хороший компьютер, тот имел наше все, а кто компьютера не имел, был обречен оставаться лузером - не важно, просто человек, или завод, или целое государство. Но кто мог построить хороший компьютер? Стало ясно, что время энтузиастов прошло и к делу пора подключать бюджет. \\ \\
 ==== Советские цифровые ЭВМ 1950-х-1960-х годов ==== ==== Советские цифровые ЭВМ 1950-х-1960-х годов ====
 В нашей стране из-за потерь, причиненных войной, работы по созданию новой техники замедлились. Работа над малой электронно-счетной машиной - МЭСМ - была начата в конце 1948 года в Киевском институте электротехники АН УССР, а чуть позже в Энергетическом институте АН СССР (Москва) - над машиной М-1. В регулярную эксплуатацию обе машины были приняты почти одновременно - в декабре 1951 года. Так наши инженеры вступили в мировую "компьютерную гонку", в которой очень скоро достигли впечатляющих результатов. Нам не нужно было догонять Америку - Америка догоняла нас. \\ В нашей стране из-за потерь, причиненных войной, работы по созданию новой техники замедлились. Работа над малой электронно-счетной машиной - МЭСМ - была начата в конце 1948 года в Киевском институте электротехники АН УССР, а чуть позже в Энергетическом институте АН СССР (Москва) - над машиной М-1. В регулярную эксплуатацию обе машины были приняты почти одновременно - в декабре 1951 года. Так наши инженеры вступили в мировую "компьютерную гонку", в которой очень скоро достигли впечатляющих результатов. Нам не нужно было догонять Америку - Америка догоняла нас. \\
Строка 95: Строка 97:
 "Наири-3", созданная уже в 70-е годы, была построена на микросхемах эмиттерно-связной логики и считается первой оригинальной отечественной машиной третьего поколения (о поколениях ЭВМ, в традиционном понимании этого термина, поговорим чуть ниже). \\ "Наири-3", созданная уже в 70-е годы, была построена на микросхемах эмиттерно-связной логики и считается первой оригинальной отечественной машиной третьего поколения (о поколениях ЭВМ, в традиционном понимании этого термина, поговорим чуть ниже). \\
 Эстафету разработки советских персональных компьютеров подхватили в Киеве, в Институте кибернетики Академии наук УССР. Там еще в 1958 г. была начата разработка машин семейства "Проминь" (серийное производство с 1963 г.). Эта ЭВМ впервые в отечественной практике позволяла ввод данных с клавиатуры и вывод на однострочный индикатор, как в нынешних калькуляторах (по большому счету эта машина и была первым программируемым калькулятором). Следующим этапом стала МИР - Машина Инженерных Расчетов (1965 г.). На ней был реализован командный язык высокого уровня Алмир (АЛгоритмический язык для МИР), позволявший производить сложные математические и физические расчеты с минимумом трудозатрат на программирование. В этой машине были воплощены новые для того времени технические решения (некоторые из них были впоследствии забыты), позволявшие решать сложные численно-расчетные задачи практически с такой же скоростью, как на гораздо более мощных машинах. По сути, МИР и язык Алмир стали бабушкой и дедушкой нынешнего "Матлаба". \\ Эстафету разработки советских персональных компьютеров подхватили в Киеве, в Институте кибернетики Академии наук УССР. Там еще в 1958 г. была начата разработка машин семейства "Проминь" (серийное производство с 1963 г.). Эта ЭВМ впервые в отечественной практике позволяла ввод данных с клавиатуры и вывод на однострочный индикатор, как в нынешних калькуляторах (по большому счету эта машина и была первым программируемым калькулятором). Следующим этапом стала МИР - Машина Инженерных Расчетов (1965 г.). На ней был реализован командный язык высокого уровня Алмир (АЛгоритмический язык для МИР), позволявший производить сложные математические и физические расчеты с минимумом трудозатрат на программирование. В этой машине были воплощены новые для того времени технические решения (некоторые из них были впоследствии забыты), позволявшие решать сложные численно-расчетные задачи практически с такой же скоростью, как на гораздо более мощных машинах. По сути, МИР и язык Алмир стали бабушкой и дедушкой нынешнего "Матлаба". \\
-В городе Пенза на предприятии п/я 24 проектировались с 1955 г., а на заводе счетно-аналитических машин строились до 1975 г. ЭВМ семейства "Урал". Первые 4 машины были ламповыми, последующие - полупроводниковыми. Они интересны тем, что представляли именно семейство машин, программно совместимых между собой. \\+Советские персональные компьютеры 1960-х годов опережали свое время. Они не могли обеспечить экономических показателей, сравнимых с соответствующими показателями больших ЭВМ. Причин для этого много. Во-первых, существует фундаментальный общетехничесий закон: при прочих равных условиях более мощное изделие обычно более экономично, чем маломощное. Во-вторых, из-за недостаточного объема оперативной памяти эти машинки просто не могли решать многие задачи из тех, которые стояли на повестке дня. В-третьих, до появления МИР на этих машинах не удавалось использовать сколько-нибудь приличный компилятор, что затрудняло разработку программ. В-четвертых, вокруг каждого большого компьютера в те времена складывалась инфраструктура подготовки данных: решение о создании такой инфраструктуры автоматически влекло бы за собой решение о замене маленького компьютера большим, а без такой инфраструктуры машина не могла быть постоянно занята работой. \\ 
 +В городе Пенза на предприятии п/я 24 проектировались с 1955 г., а на заводе счетно-аналитических машин строились до 1975 г. ЭВМ семейства "Урал" [[https://isu.ru/ru/news/newsitem.html?action=show&id=832]] [[https://1500py470.livejournal.com/359855.html]] Первые 4 машины были ламповыми, последующие - полупроводниковыми. Они интересны тем, что представляли именно семейство машин, программно совместимых между собой. \\
 В Минске в конце 1950-х годов были одновременно построены Конструкторское бюро НИИЭВМ (СКБ) и завод ЭВМ им. Орджоникидзе. Создававшиеся там машины вполне логично получили название "Минск". Первая машина "Минск-1" (1959 г.) была построена на лампах, "Минск-2" и ее модификации - на полупроводниковых потенциально-импульсных логических элементах. "Минск-32" стала самой массовой отечественной ЭВМ (1968-1975 гг., выпущено 2889 шт.). \\ В Минске в конце 1950-х годов были одновременно построены Конструкторское бюро НИИЭВМ (СКБ) и завод ЭВМ им. Орджоникидзе. Создававшиеся там машины вполне логично получили название "Минск". Первая машина "Минск-1" (1959 г.) была построена на лампах, "Минск-2" и ее модификации - на полупроводниковых потенциально-импульсных логических элементах. "Минск-32" стала самой массовой отечественной ЭВМ (1968-1975 гг., выпущено 2889 шт.). \\
 Там же, в Минске, в 1959-1964 гг. разрабатывались и выпускались примерно до 1972 г. ЭВМ "Весна" и "Снег" (последний представлял собой упрощенную "Весну"), но они выпускались малыми сериями (всего 19 и 20 шт. соответственно). \\ Там же, в Минске, в 1959-1964 гг. разрабатывались и выпускались примерно до 1972 г. ЭВМ "Весна" и "Снег" (последний представлял собой упрощенную "Весну"), но они выпускались малыми сериями (всего 19 и 20 шт. соответственно). \\
Строка 112: Строка 115:
 Несколько слов о ЕС ЭВМ. ЕС расшифровывается: Единая Серия. Предыдущие наши компьютеры, даже те, что имели сходные названия, не образовывали серий. Чаще всего они были несовместимы ни программно, ни хотя бы конструктивно: для каждой новой машины создавались заново все периферийные устройства и даже чисто конструктивные элементы вплоть до последней дверцы шкафа. Это замедляло проектирование и усложняло эксплуатацию. Очевидно назрела задача унификации: для всех машин сделать общий набор периферийных устройств, унифицированные модули оперативной памяти, которые можно было бы подключать по одному или несколько, и ряд процессоров, различающихся только количественно, но программно совместимых и выполненных в едином конструктивном стиле. Тогда, если ранее купленная машина перестанет вас удовлетворять, ее можно будет апгрейдить путем замены процессора или добавления памяти, как мы делаем сейчас с нашими настольными компьютерами. Идея, как мы видим, вполне здравая. Плоха была не идея - плоха была реализация: вместо того чтобы воплотить в новых процессорах все лучшее, что было наработано отечественными специалистами, использовали далеко не лучший американский образец. \\ Несколько слов о ЕС ЭВМ. ЕС расшифровывается: Единая Серия. Предыдущие наши компьютеры, даже те, что имели сходные названия, не образовывали серий. Чаще всего они были несовместимы ни программно, ни хотя бы конструктивно: для каждой новой машины создавались заново все периферийные устройства и даже чисто конструктивные элементы вплоть до последней дверцы шкафа. Это замедляло проектирование и усложняло эксплуатацию. Очевидно назрела задача унификации: для всех машин сделать общий набор периферийных устройств, унифицированные модули оперативной памяти, которые можно было бы подключать по одному или несколько, и ряд процессоров, различающихся только количественно, но программно совместимых и выполненных в едином конструктивном стиле. Тогда, если ранее купленная машина перестанет вас удовлетворять, ее можно будет апгрейдить путем замены процессора или добавления памяти, как мы делаем сейчас с нашими настольными компьютерами. Идея, как мы видим, вполне здравая. Плоха была не идея - плоха была реализация: вместо того чтобы воплотить в новых процессорах все лучшее, что было наработано отечественными специалистами, использовали далеко не лучший американский образец. \\
 Очень важный и интересный вопрос: разрядность древних ЭВМ. У современных машин разрядность принимает значение из ряда: 8, 16, 32 или 64, но так было не всегда. В 50-е годы представление о том, что разрядность должна быть равна целой степени двух, еще не сформировалась. В машинах 50-х годов вся информация была организована в виде //машинных слов//, длина которых (она же разрядность) была достаточна для представления числа с плавающей запятой. Так, например, "Стрела" имела машинное слово длиной 43 бит, из которых 35 - мантисса и 6 - порядок, а БЭСМ-6 - 48 бит. Ни шестнадцатиразрядных, ни тем более восьмиразрядных машин в те времена никто не строил: ведь машины были нужны для научных и инженерных расчетов, а такие расчеты требуют точности. Ячейки памяти имели размер машинного слова, а система команд процессора продумывалась так, чтобы каждая команда также вписывалась в машинное слово. \\ Очень важный и интересный вопрос: разрядность древних ЭВМ. У современных машин разрядность принимает значение из ряда: 8, 16, 32 или 64, но так было не всегда. В 50-е годы представление о том, что разрядность должна быть равна целой степени двух, еще не сформировалась. В машинах 50-х годов вся информация была организована в виде //машинных слов//, длина которых (она же разрядность) была достаточна для представления числа с плавающей запятой. Так, например, "Стрела" имела машинное слово длиной 43 бит, из которых 35 - мантисса и 6 - порядок, а БЭСМ-6 - 48 бит. Ни шестнадцатиразрядных, ни тем более восьмиразрядных машин в те времена никто не строил: ведь машины были нужны для научных и инженерных расчетов, а такие расчеты требуют точности. Ячейки памяти имели размер машинного слова, а система команд процессора продумывалась так, чтобы каждая команда также вписывалась в машинное слово. \\
-Смешной вопрос: а какова разрядность ЕС ЭВМ? Из десяти современных специалистов десять ответят: 32. Ответ неверный. Ширина выборки из оперативной памяти, она же разрядность машинного слова, действительно, была равна 32, но разрядность арифметико-логического устройства у первых машин серии могла быть 16 и даже 8. Но это не главное. Оперативная память этих машин имела //байтовую организацию//, так что чтение и запись в память могли производиться байтами, полусловами (2 байта - 16 бит) и словами (4 байта - 32 бит). Процессор же, помимо этого, мог обрабатывать и числа с плавающей запятой в формате двойного слова (8 байт - 64 бита). Такая структура памяти, удобная для решения как физико-математических, так и планово-экономических задач, унаследована всеми компьютерами последующих эпох, так что IBM-360 и соответственно ЕС можно считать частично древними машинами, а частично средневековыми. \\ \\+Смешной вопрос: а какова разрядность ЕС ЭВМ? Из десяти современных специалистов десять ответят: 32. Ответ неверный. Ширина выборки из оперативной памяти, она же разрядность машинного слова, действительно, была равна 32, но разрядность арифметико-логического устройства у первых машин серии могла быть 16 и даже 8. Но это не главное. Оперативная память этих машин имела //байтовую организацию//, так что чтение и запись в память могли производиться байтами, полусловами (2 байта - 16 бит) и словами (4 байта - 32 бит). Процессор же, помимо этого, мог обрабатывать и числа с плавающей запятой в формате двойного слова (8 байт - 64 бита). Такая структура памяти, удобная для решения как физико-математических, так и планово-экономических задач, унаследована всеми компьютерами последующих эпох. \\ \\
 ==== Аналоговая техника во второй половине XX века ==== ==== Аналоговая техника во второй половине XX века ====
 Мы говорим в основном про цифровую вычислительную технику, однако давайте вспомним и аналоговую. В середине XX века она отказалась от валиков, колесиков и рычажков, перешла полностью на электрический, а затем на электронный принцип действия. Это позволило во-первых, увеличить быстродействие, и во вторых, придать машинам способность к программированию (программирование чаще всего осуществлялось путем вставки проводов со штекерами в нужные гнезда на лицевой панели прибора). Но ценой ускорения работы стала возросшая погрешность вычислений. (Для несведущего в технике читателя последнее утверждение может показаться диким, но это действительно так). \\ Мы говорим в основном про цифровую вычислительную технику, однако давайте вспомним и аналоговую. В середине XX века она отказалась от валиков, колесиков и рычажков, перешла полностью на электрический, а затем на электронный принцип действия. Это позволило во-первых, увеличить быстродействие, и во вторых, придать машинам способность к программированию (программирование чаще всего осуществлялось путем вставки проводов со штекерами в нужные гнезда на лицевой панели прибора). Но ценой ускорения работы стала возросшая погрешность вычислений. (Для несведущего в технике читателя последнее утверждение может показаться диким, но это действительно так). \\
Строка 151: Строка 154:
 Вот мы и подошли к вопросам, которые в большинстве книг и статей по истории вычислительной техники либо совсем не затрагиваются, либо рассматриваются очень поверхностно. \\ Вот мы и подошли к вопросам, которые в большинстве книг и статей по истории вычислительной техники либо совсем не затрагиваются, либо рассматриваются очень поверхностно. \\
 Рассматривая первобытные компьютерные времена, мы заметили, что никакого программирования тогда не существовало. Протокомпьютер или эокомпьютер, выезжая за ворота родного завода, уже нес внутри себя все, что было нужно для решения задачи. Люди так жили и к этому привыкли, кое-кто и до сих пор не избавился от этого стереотипа мышления. И вот нате вам здрассьте: новейший цифровой компьютер, который все называют не иначе как чудом техники, на поверку оказывается никчемной кучей железа - сам по себе он даже 2+2 сложить не может! Чтобы решить хоть какую-то задачу, нужна, оказывается, ПРОГРАММА. А что за программа, зачем и почему, где ее взять? (и кстати почём, если не секрет?) \\ Рассматривая первобытные компьютерные времена, мы заметили, что никакого программирования тогда не существовало. Протокомпьютер или эокомпьютер, выезжая за ворота родного завода, уже нес внутри себя все, что было нужно для решения задачи. Люди так жили и к этому привыкли, кое-кто и до сих пор не избавился от этого стереотипа мышления. И вот нате вам здрассьте: новейший цифровой компьютер, который все называют не иначе как чудом техники, на поверку оказывается никчемной кучей железа - сам по себе он даже 2+2 сложить не может! Чтобы решить хоть какую-то задачу, нужна, оказывается, ПРОГРАММА. А что за программа, зачем и почему, где ее взять? (и кстати почём, если не секрет?) \\
-Так неожиданно для всех возникла профессия программиста. Возникла как будто на пустом месте - и сразу в полный рост. \\+Так неожиданно для всех возникла профессия **//программиста//**. Возникла как будто на пустом месте - и сразу в полный рост. \\
 Элементной базой первых компьютеров были, как мы уже знаем, электромагнитные реле и электровакуумные лампы. Они не были придуманы на пустом месте - это были серийные промышленные изделия, использовавшиеся в аппаратуре связи. Стало быть, кто-то эти изделия создавал, и кто-то их применял. То есть первые компьютеростроители были обычными инженерами: электриками и электронщиками. А программистов среди них не было. Программирование не преподавалось в институтах, по нему не было книг. Между тем работа программиста требует специальных знаний, которые мало коррелируются с обычной математикой и практически совсем не коррелируются ни с электротехникой, ни с электроникой. Объем же этих знаний находится на пределе того, что доступно человеку с очень высоко развитым интеллектом! То есть программирование - самостоятельная профессия: ты можешь изучить целенаправленно именно эту профессию и работать в ней много лет, не нуждаясь ни в чем другом. \\ Элементной базой первых компьютеров были, как мы уже знаем, электромагнитные реле и электровакуумные лампы. Они не были придуманы на пустом месте - это были серийные промышленные изделия, использовавшиеся в аппаратуре связи. Стало быть, кто-то эти изделия создавал, и кто-то их применял. То есть первые компьютеростроители были обычными инженерами: электриками и электронщиками. А программистов среди них не было. Программирование не преподавалось в институтах, по нему не было книг. Между тем работа программиста требует специальных знаний, которые мало коррелируются с обычной математикой и практически совсем не коррелируются ни с электротехникой, ни с электроникой. Объем же этих знаний находится на пределе того, что доступно человеку с очень высоко развитым интеллектом! То есть программирование - самостоятельная профессия: ты можешь изучить целенаправленно именно эту профессию и работать в ней много лет, не нуждаясь ни в чем другом. \\
-Теперь вспомним, что мы говорили выше о стоимости вычислительной операции в древние времена. Стояло требование: программа должна содержать как можно меньше операций, а профит (польза, прибыль) от каждой операции должен быть максимальным. Таков был категорический императив древнего программирования (да и в средние века мало что изменилось). Любая попытка игнорировать или обойти этот императив ничем, кроме убытков, закончиться не могла. Но мы-то, конечно, понимаем, что задача извлечь максимум профита из ограниченного ресурса никогда и нигде в мире не была слишком простой. Стало быть, и людей, способных эту задачу решать, никогда и нигде в мире не было слишком много. Отсюда очевидна необходимость налаживать профессиональный отбор и подготовку таких специалистов. А теперь прикиньте: допустим, летом 1951 года, предвидя запуск М-1 и МЭСМ, мы объявим прием абитуриентов по специальности "программирование" - к работе они приступят не раньше 1956-го года, а еще потребуется года три, чтобы понять, насколько они годны и насколько годна методика их подготовки... На дворе 1958 год - закончен выпуск "Стрелы", ей на смену пришли другие машины, притом много и разных... \\+Теперь вспомним, что мы говорили выше о стоимости вычислительной операции в древние времена. Стояло требование: программа должна содержать как можно меньше операций, а профит (польза, прибыль) от каждой операции должен быть максимальным. Таков был категорический императив древнего программирования, который пережил и средние века. В новое время он был пересмотрен, но в ту эпоху, которую мы сейчас обсуждаем, любая попытка игнорировать или обойти этот императив ничем, кроме убытков, закончиться не могла. Мы-то, конечно, понимаем, что задача извлечь максимум профита из ограниченного ресурса никогда и нигде в мире не была слишком простой. Стало быть, и людей, способных эту задачу решать, никогда и нигде в мире не было слишком много. Отсюда очевидна необходимость налаживать профессиональный отбор и подготовку таких специалистов. А теперь прикиньте: допустим, летом 1951 года, предвидя запуск М-1 и МЭСМ, мы объявим прием абитуриентов по специальности "программирование" - к работе они приступят не раньше 1956-го года, а еще потребуется года три, чтобы понять, насколько они годны и насколько годна методика их подготовки... На дворе 1958 год - закончен выпуск "Стрелы", ей на смену пришли другие машины, притом много и разных... \\
 Программирование в древности было мастерством на грани искусства. Программистов было мало, а для непрограммиста разработка программ представлялась чем-то совершенно запредельным. \\ Программирование в древности было мастерством на грани искусства. Программистов было мало, а для непрограммиста разработка программ представлялась чем-то совершенно запредельным. \\
 === Задачи и особенности применения ЭВМ === === Задачи и особенности применения ЭВМ ===
Строка 167: Строка 170:
 === Прикладные программы и операционные системы === === Прикладные программы и операционные системы ===
 В программировании немало вопросов, которые трудно понять и еще труднее объяснять. Но кажется я нащупал подход, который приближает нас к пониманию. Вообразим, что программа - живое существо, которое обитает в некоторой внешней среде. Чтобы организм мог жить, он, очевидно, должен быть приспособлен к той среде, в которой живет, но невозможно представить такой организм, который мог бы жить в любых условиях и мог бы приспособиться к любому их изменению. \\ В программировании немало вопросов, которые трудно понять и еще труднее объяснять. Но кажется я нащупал подход, который приближает нас к пониманию. Вообразим, что программа - живое существо, которое обитает в некоторой внешней среде. Чтобы организм мог жить, он, очевидно, должен быть приспособлен к той среде, в которой живет, но невозможно представить такой организм, который мог бы жить в любых условиях и мог бы приспособиться к любому их изменению. \\
-**//Прикладная программа//** создается для решения какой-то жизненной, практической задачи. Применительно к эпохе, которую мы сейчас рассматриваем, - научной или инженерной, потому что других почти не было. Прикладная программа 1950-х годов предназначалась для конкретного компьютера и обитала в нем подобно раку-отшельнику в своей раковине: все, что надо, она вынуждена была делать своими вот этими клешнями, не надеясь на чью-либо помощь. Такой образ жизни не способствует быстрому умственному развитию: попросту говоря, прикладной программист был вынужден тратить много сил на всевозможные вспомогательные действия, прежде всего на ввод и вывод данных. Программы для микроконтроллеров - скетчи - и сейчас живут так. Но настоящие проблемы начинаются, когда старая "раковина" разваливается и "раку" приходится переселяться в новую. Это процесс непростой и небыстрый, и вообще не факт что с шансами на успех: при переносе программы со старого компьютера на новый что-то в программе наверняка потребуется переделать. Только что, в 40-е-50-е годы XX века, мы наблюдали переход от первобытности к цивилизации в компьютеростроении, а чуть позже, в 50-е-60-е годы, аналогичный процесс имел место в программировании. Люди пришли к пониманию, что вместо создания программ, с трудом приспосабливающихся к изменениям условий внешней среды, гораздо эффективнее будет создать для них искусственную среду обитания - "цивилизованную", более комфортную, чем "дикая природа". Такой средой стали операционные системы (ОС). \\+**//Прикладная программа//** создается для решения какой-то жизненной, практической задачи. Применительно к эпохе, которую мы сейчас рассматриваем, - научной или инженерной, потому что других почти не было. Прикладная программа 1950-х годов предназначалась для конкретного компьютера и обитала в нем подобно раку-отшельнику в своей раковине: все, что надо, она вынуждена была делать своими вот этими клешнями, не надеясь на чью-либо помощь. Такой образ жизни не способствует быстрому умственному развитию: попросту говоря, прикладной программист был вынужден тратить много сил на всевозможные вспомогательные действия, прежде всего на ввод и вывод данных. Программы для микроконтроллеров - скетчи - и сейчас живут так. Но настоящие проблемы начинаются, когда старая "раковина" разваливается и "раку" приходится переселяться в новую. Это процесс непростой и небыстрый, и вообще не факт что с шансами на успех: при переносе программы со старого компьютера на новый что-то в программе наверняка потребуется переделать. Только что, в 40-е-50-е годы XX века, мы наблюдали переход от первобытности к цивилизации в компьютеростроении, а чуть позже, в 50-е-60-е годы, аналогичный процесс имел место в программировании. Люди пришли к пониманию, что вместо создания программ, с трудом приспосабливающихся к изменениям условий внешней среды, гораздо эффективнее будет создать для них искусственную среду обитания - "цивилизованную", более комфортную, чем "дикая природа". Такой средой стали операционные системы (ОС), но их становление не было одномоментным процессом. \\ 
 +На первых компьютерах каждая прикладная программа выполнялась от начала и до конца, после чего компьютер останавливался. Чтобы обеспечить эффективную эксплуатацию машины, в ее "экипаж" включались два человека: оператор, готовивший задачи (не путать с операторами подготовки данных) и инженер, который, нажимая соответствующие кнопки на инженерном пульте управления машины, заставлял ее загрузить и выполнить следующую задачу. На самых ранних компьютерах других вариантов работы просто не было. Однако, по мере того как промышленность осваивала изготовление ОЗУ увеличенной емкости, появилась идея отвести в памяти некоторый участок и разместить там определенные команды. Во время выполнения прикладной программы эти команды ждут своего часа и ничем себя не проявляют, но когда прикладная программа закончена, компьютер не останавливается: эти команды вступают в работу, обеспечивая в автоматическом режиме загрузку и запуск следующей задачи. Все это очень напоминает загрузчик-bootloader в нынешних устройствах на микроконтроллерах. По мере дальнейшего прогресса в технологии производства оперативной памяти загрузчик обрастал новыми функциями, в том числе направленными на обслуживание прикладной программы. Так из загрузчика постепенно выросли операционные системы. \\
 **//Операционная система //** - программное изделие, обеспечивающее работоспособность компьютера и возможность выполнения на нем прикладных программ по командам пользователя или оператора. Сама она не решает никаких прикладных задач. \\ **//Операционная система //** - программное изделие, обеспечивающее работоспособность компьютера и возможность выполнения на нем прикладных программ по командам пользователя или оператора. Сама она не решает никаких прикладных задач. \\
 Операционная система древней эпохи являлась принадлежностью конкретного компьютера и могла рассматриваться как подставка-подкладка под прикладную программу, которая позволяет нашей зверюшке жить, ни в чем не нуждаясь: если требуется какое-то типовое вспомогательное действие, то прикладному программисту не нужно программировать его самому - он программирует лишь //системный вызов//, все остальное операционная система сделает как надо. Теперь, если мы создаем новый, более совершенный компьютер на замену старому, нам нет необходимости переделывать все имеющееся программное обеспечение: достаточно сделать новую операционную систему, в которой наши прикладные программы будут жить с комфортом, не подозревая о том, что компьютер уже другой. \\ Операционная система древней эпохи являлась принадлежностью конкретного компьютера и могла рассматриваться как подставка-подкладка под прикладную программу, которая позволяет нашей зверюшке жить, ни в чем не нуждаясь: если требуется какое-то типовое вспомогательное действие, то прикладному программисту не нужно программировать его самому - он программирует лишь //системный вызов//, все остальное операционная система сделает как надо. Теперь, если мы создаем новый, более совершенный компьютер на замену старому, нам нет необходимости переделывать все имеющееся программное обеспечение: достаточно сделать новую операционную систему, в которой наши прикладные программы будут жить с комфортом, не подозревая о том, что компьютер уже другой. \\
 Хотя первые операционные системы появились практически одновременно с первыми электронными цифровыми компьютерами, термин "операционная система" вошел в употребление не сразу. Например, на ЭВМ "Минск-32" (1968-1975 гг.) использовалось название "организующая система", а на БЭСМ-6 - "Диспетчер". \\ Хотя первые операционные системы появились практически одновременно с первыми электронными цифровыми компьютерами, термин "операционная система" вошел в употребление не сразу. Например, на ЭВМ "Минск-32" (1968-1975 гг.) использовалось название "организующая система", а на БЭСМ-6 - "Диспетчер". \\
-**Операционная система древней эпохи - однозадачная**. Она загружает в компьютер прикладную программу и обеспечивает ее выполнение от начала до концапосле чего компьютер либо останавливается совсемлибо возвращается в исходное состояние, с тем чтобы загрузить и выполнить следующую программу. Многозадачные "Диспетчеры" БЭСМ-6, создававшиеся в 1967-1968 гг., как и сама машина, одной ногой стояли в древности, а другой - уже в средних веках. В 50-е годы никакого взаимодействия между программами не предусматривалось. Если какие-то данные, выданные программой А, должны били использоваться программой Б, то максимум, на что можно было рассчитывать, это программе А вывести эти данные на перфокарты или перфоленту, а затем при исполнении программы Б вводить их. С появлением магнитных лент и дисков это проблема несколько упростилась, но людям потребовалось еще несколько лет, чтобы прийти к идее //файловой системы//, о которой чуть ниже (хотя, в принципе, это уже другая история). \\+В 1960-е годы в области операционных систем имел место огромный прогресс. И хотя в техническом плане ОС конца древней эпохи еще сильно отличались от нынешних, идеология их уже приобрела ряд черт, близких к нынешним. В частности, сформировалось представление о том, что комплект поставки операционной системы должен включать следующие компоненты: \\ 
 +**//Ядро//** - это часть ОС, которая постоянно находится в оперативной памяти машины и обеспечивает две группы функций: общее управление процессом решения задач на машине и предоставление прикладным программам определенных услуг, прежде всего по вводу-выводу данных. \\ 
 +**//Оболочка//** во время решения прикладной задачи отдыхает, а по окончании прикладной программы вступает в работу, принимает от пользователя или оператора очередную команду и передает ее ядру для выполнения. Термин "оболочка" отражает тот факт, что команды оператора не принимаются ядром напрямую - ядро как бы скрыто под оболочкой. \\ 
 +**//Утилиты//** - программы, не имеющие прикладного назначения, а нужные для обслуживания компьютера. Как хороший моряк имеет на корабле запасные якоря, тросы, шлюпки и пластырь для заделки пробоин, как справный автомобилист возит с собой домкрат, насос, буксирный канат и бензошланг с "грушей", так и грамотный компьютерщик всегда имеет при себе "инструментальный чемоданчик" для устранения аварийных ситуаций и для оптимизации работы компьютера в повседневной обстановке. В отличие от ядра, которое бессменно-круглосуточно на посту, и от оболочки, которая постоянно в готовности вступить в работу, утилиты используются эпизодически и только по явной команде оператора. \\ 
 +**Операционная система древней эпохи - однозадачная**. Она загружает в компьютер прикладную программу и обеспечивает ее выполнение от начала до концапока программа не выполнена, следующую не начинаем. Около 1964 г. люди начали задумываться над темой, которая в англоязычной литературе называется мультипограммированием, а в русскоязычной - многозадачностью. Применительно к рассматриваемой эпохе вопрос стоял так: допустим, программа выполнила какие-то действия и ждет ввода новых данных, а пока их нет, сделать ничего нельзя - значитчтобы процессор не простаивал, надо занять его чем-то другим. Однако эта идея могла быть воплощена в металл только с повсеместным внедрением накопителей на магнитных дисках, т. е. ближе к концу 1960-х годов. Многозадачные "Диспетчеры" БЭСМ-6, создававшиеся в 1967-1968 гг., как и сама машина, одной ногой стояли в древности, а другой - уже в средних веках. Примерно тогда же, с появлением мейнфреймов и терминалов, встал вопрос о создании операционных систем с разделением времени - это были уже по-настоящему многозадачные системы, но разговор о них пойдет уже в главе "Средние века". \\ 
 +В 50-е годы никакого взаимодействия между программами не предусматривалось. Если какие-то данные, выданные программой А, должны били использоваться программой Б, то максимум, на что можно было рассчитывать, это программе А вывести эти данные на перфокарты или перфоленту, а затем при исполнении программы Б вводить их. С появлением магнитных лент и дисков это проблема несколько упростилась, но людям потребовалось еще несколько лет, чтобы прийти к идее //файловой системы//, о которой чуть ниже (хотя, в принципе, это уже другая история). \\
 === Языки и технологии программирования === === Языки и технологии программирования ===
 Когда появились первые ЭВМ и программирование только начиналось, программисты составляли непосредственно машинный код. Это так и называлось: программирование в кодах. Программа при такой технологии получалась практически нечитаемой для человека. Это казалось приемлемым, пока создается новая программа "с нуля". Однако по мере развития отрасли все чаще возникала необходимость что-то изменить в программе, написанной когда-то давно (и возможно, другим человеком). Очевидно, это была задача абсолютно нереальная. Так народ пришел к решению писать не сразу машинный код, а //исходный текст//, который может быть прочитан человеком и, с другой стороны, может быть преобразован в машинный код по известному алгоритму. Первоначально это преобразование приходилось делать вручную. Я еще застал те времена (1980-е годы), когда программирование для микропроцессора серии К580 (единственного доступного нам тогда настоящего микропроцессора) приходилось выполнять именно по такой первобытной технологии. Однако уже в 1950-е годы пришло понимание того, что это преобразование представляет собой абсолютно машинную работу и должно выполняться не человеком, а самим компьютером по программе, которую назвали **//транслятором//** (англ. translator - переводчик). \\ Когда появились первые ЭВМ и программирование только начиналось, программисты составляли непосредственно машинный код. Это так и называлось: программирование в кодах. Программа при такой технологии получалась практически нечитаемой для человека. Это казалось приемлемым, пока создается новая программа "с нуля". Однако по мере развития отрасли все чаще возникала необходимость что-то изменить в программе, написанной когда-то давно (и возможно, другим человеком). Очевидно, это была задача абсолютно нереальная. Так народ пришел к решению писать не сразу машинный код, а //исходный текст//, который может быть прочитан человеком и, с другой стороны, может быть преобразован в машинный код по известному алгоритму. Первоначально это преобразование приходилось делать вручную. Я еще застал те времена (1980-е годы), когда программирование для микропроцессора серии К580 (единственного доступного нам тогда настоящего микропроцессора) приходилось выполнять именно по такой первобытной технологии. Однако уже в 1950-е годы пришло понимание того, что это преобразование представляет собой абсолютно машинную работу и должно выполняться не человеком, а самим компьютером по программе, которую назвали **//транслятором//** (англ. translator - переводчик). \\
-Программирование в кодах было дело хотя и нудное и трудоемкое, но имело важное преимущество: программист "держал в руках" каждую команду, что позволяло создавать продукт высокого качества: не допускать лишних действий, оптимизировать "тормозные" места, устранять аварийно-опасные участки... Чтобы не терять это преимущество, был создан способ передачи информации - //язык//, в котором каждая машинная команда представлена буквенно-цифровыми обозначениями, понятными человеку. Например add - сложить, mul - от слова multiply - умножить... В старых книгах можно встретить термин мнемокод (мнемонический, т. е. легко запоминающийся). Для перевода мнемокода в машинный язык была создана программа, которую назвали **//ассемблер//** (англ. assembler сборщик)а язык мнемокодов соответственно стали называть языком ассемблера. Термин "ассемблерутвердился окончательно не ранее 70-х годов, до этого были в ходу термины "язык символического кодирования""автокоди др. Такие языки могли называться машинно-ориентированными или языками низкого уровня. \\+Программирование в кодах было дело хотя и нудное и трудоемкое, но имело важное преимущество: программист "держал в руках" каждую команду, что позволяло создавать продукт высокого качества: не допускать лишних действий, оптимизировать "тормозные" места, устранять аварийно-опасные участки... Чтобы не терять это преимущество, был создан способ передачи информации - //язык//, в котором каждая машинная команда представлена буквенно-цифровыми обозначениями, понятными человеку. Например add - сложить, mul - от слова multiply - умножить... В старых книгах можно встретить термин мнемокод (мнемонический, т. е. легко запоминающийся). Язык мнемокодов мог также называться "язык символического кодирования""автокод" и др. Такие языки классифицируются  как машинно-ориентированные языкиили языки низкого уровня. Их общая черта: программирование на них требует от программиста детального знания логической структуры ("архитектуры") конкретной машины, на которой он работает. Использование такой программы на какой-то иной машине может быть сопряжено с определенными трудностями: как максимум, всю программу придется переписывать. \\ 
 +В 50-е-60-е годы язык низкого уровня для каждой новой машины создавался без каких-либо стандартов, так что для программиста попытка хотя бы просто прочитать программу, написанную кем-то для другой машинымогла оказаться непростым делом. К концу древней эпохи стали стихийно складываться представления о томчто команды, общие для разных компьютеров, нужно и записывать как-то единообразно. Примерно тогда же для программы, переводящей мнемокод в машинный язык, утвердилось название **//ассемблер//** (англ. assembler - сборщик), а язык мнемокодов соответственно стали называть языком ассемблера. \\
 Правильно говорить: я программирую __на языке ассемблера__, но в обиходе чаще говорят просто: программирую __на ассемблере__. \\ Правильно говорить: я программирую __на языке ассемблера__, но в обиходе чаще говорят просто: программирую __на ассемблере__. \\
-Программирование на ассемблере сохраняет все преимущества программирования в кодах, но избавляет от основного недостатка: исходный текст на языке ассемблера хотя и выглядит ужасно сложно, но все же может быть прочитан человеком (а если можно прочитать, то отчего бы не попробовать написать?). И все-таки программирование на ассемблере было сложно и трудоемко и доступно не всем. Так появилась идея создать **//язык программирования высокого уровня//** (проблемно-ориентированный язык). Транслятор с языка высокого уровня сейчас обычно называют **//компилятором//**, но этот термин утвердился в более поздние времена. \\+Программирование на ассемблере сохраняет все преимущества программирования в кодах, но избавляет от основного недостатка: исходный текст на языке ассемблера хотя и выглядит ужасно сложно, но все же может быть прочитан человеком (а если можно прочитать, то отчего бы не попробовать написать?). И все-таки эта работа сложна и трудоемка, и доступна не всем. Отсюда появилась идея создать **//язык программирования высокого уровня//** (проблемно-ориентированный язык). Транслятор с языка высокого уровня сейчас обычно называют **//компилятором//**, но этот термин утвердился в более поздние времена. \\
 Подобные языки - Алгол и Фортран - появились уже в 50-е годы, затем в этой отрасли имело место достаточно долгое и сложное развитие. \\ Подобные языки - Алгол и Фортран - появились уже в 50-е годы, затем в этой отрасли имело место достаточно долгое и сложное развитие. \\
 Язык программирования **Фортран** (англ. FORmula TRANslation - перевод формул) создан в 1954 г. - он современник паровозов! Для программистов того времени он стал тем же, чем были первые крупносерийные тепловозы ТЭ3 для наших железнодорожников: он принес с собой комфорт и скорость, прежде всего за счет исключения самой грязной и утомительной работы, каковой на паровозе была работа кочегара, а в вычислительной технике написание машинных кодов. Программа на Фортране имела вид не кодов, а формул, которые любому программисту привычны по школьной и институтской математике. Фортран превосходен как язык ученых, которые чаще всего сами не являются программистами, но ощущают потребность быстро создавать компактные программы для сложных числовых расчетов. Основной недостаток Фортрана - его непригодность для решения иных задач, кроме вычислений по формулам, поэтому сейчас он имеет ограниченное применение: главным образом там, где от программы требуются учебно-демонстрационные свойства. Будучи ПЕРВЫМ В ИСТОРИИ языком высокого уровня, Фортран жив и сейчас (последняя ревизия стандарта была в 2008 г.). За долгие годы на нем было написано множество программ математического назначения, которые хорошо отлажены, эффективны и доступны в виде исходных текстов - без преувеличения это достояние человечества! \\ Язык программирования **Фортран** (англ. FORmula TRANslation - перевод формул) создан в 1954 г. - он современник паровозов! Для программистов того времени он стал тем же, чем были первые крупносерийные тепловозы ТЭ3 для наших железнодорожников: он принес с собой комфорт и скорость, прежде всего за счет исключения самой грязной и утомительной работы, каковой на паровозе была работа кочегара, а в вычислительной технике написание машинных кодов. Программа на Фортране имела вид не кодов, а формул, которые любому программисту привычны по школьной и институтской математике. Фортран превосходен как язык ученых, которые чаще всего сами не являются программистами, но ощущают потребность быстро создавать компактные программы для сложных числовых расчетов. Основной недостаток Фортрана - его непригодность для решения иных задач, кроме вычислений по формулам, поэтому сейчас он имеет ограниченное применение: главным образом там, где от программы требуются учебно-демонстрационные свойства. Будучи ПЕРВЫМ В ИСТОРИИ языком высокого уровня, Фортран жив и сейчас (последняя ревизия стандарта была в 2008 г.). За долгие годы на нем было написано множество программ математического назначения, которые хорошо отлажены, эффективны и доступны в виде исходных текстов - без преувеличения это достояние человечества! \\
 **Кобол** (Common Business-Oriented Language - всеобщий бизнес-ориентированный язык, Грейс Хоппер, 1959 г.), в противоположность Фортрану, предназначен не для математиков и физиков, а для работников финансово-экономической сферы. В западном мире еще в 2000-е годы считалось, что на этом языке написано больше всего строк исходного текста, но в СССР эта сфера всегда недооценивалась, так что Кобол у нас остался практически неизвестен. \\ **Кобол** (Common Business-Oriented Language - всеобщий бизнес-ориентированный язык, Грейс Хоппер, 1959 г.), в противоположность Фортрану, предназначен не для математиков и физиков, а для работников финансово-экономической сферы. В западном мире еще в 2000-е годы считалось, что на этом языке написано больше всего строк исходного текста, но в СССР эта сфера всегда недооценивалась, так что Кобол у нас остался практически неизвестен. \\
 +Вот еще в качестве информации к размышлению на тему Кобола: [[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, а программисты **Алгол**. Для непосвященного человека разницы нет, но разница весьма ощутима для того, кто каждое утро садится за баранку этого пылесоса. Тепловозы мы сейчас оставим в покое. Они нам нужны лишь для того, чтобы проиллюстрировать одну мысль: различные области техники развиваются по схожим законам. А вот разницу между Алголом и Фортраном хотелось бы рассмотреть более подробно. \\
 Фортран в его классическом виде - //бесструктурный// язык. Для условных переходов в нем используется запись типа: \\ Фортран в его классическом виде - //бесструктурный// язык. Для условных переходов в нем используется запись типа: \\
Строка 188: Строка 199:
 Появление PL-1 поначалу было принято программистами, мягко говоря, прохладно: они думали, что теперь их заставят все прежние программы переписывать на новый язык. Однако этот психологический барьер был преодолен, и новые языки стали создаваться один за другим, как новые сорта тюльпанов. Аналогия с тюльпанами особенно уместна потому, что большинство вновь создаваемых языков не представляло собой ничего принципиально нового. \\ Появление PL-1 поначалу было принято программистами, мягко говоря, прохладно: они думали, что теперь их заставят все прежние программы переписывать на новый язык. Однако этот психологический барьер был преодолен, и новые языки стали создаваться один за другим, как новые сорта тюльпанов. Аналогия с тюльпанами особенно уместна потому, что большинство вновь создаваемых языков не представляло собой ничего принципиально нового. \\
 ПЛ-1, однако, не стал новой ступенью эволюции по отношению к Алголу (а по каким, собственно, основаниям от него этого ожидали?) и сошел со сцены еще раньше своего прототипа. \\ ПЛ-1, однако, не стал новой ступенью эволюции по отношению к Алголу (а по каким, собственно, основаниям от него этого ожидали?) и сошел со сцены еще раньше своего прототипа. \\
 +Язык высокого уровня, в противоположность ассемблеру, всегда - математическая абстракция, описывающая некоторый "компьютер вообще". В нем нет (по крайней мере не должно быть) элементов, связанных с особенностями устройства какой-либо машины. Соответственно от программы, написанной на таком языке, мы ждем //переносимости//, т. е. возможности исполнять ее на любом компьютере, а не только на том, для которого она была изначально написана. На практике переносимость чаще всего бывает лишь частичной, т. к. не все компиляторы и не все операционные системы строго однозначно понимают все, что может быть записано в программе. Переносимость - чрезвычайно важное свойство программы, но оно не бесплатно: при написании программы на языке высокого уровня программист не может использовать тонкие возможности конкретного компьютера, так что программа выполняется медленнее и зачастую требует больше памяти, чем аналогичная программа на ассемблере. \\
 Алгол, Кобол и Фортран знаменуют собой древнекомпьютерную цивилизацию. Вот я это написал и соображаю: не забыл ли чего? Очень похоже, что не забыл. Древние люди отнюдь не стремились к разнообразию языков. Более того: они были ПРОТИВ разнообразия, потому что у них были в жизни другие приоритеты. И если мы серьезные историки, то мы просто обязаны в этих приоритетах разобраться. \\ Алгол, Кобол и Фортран знаменуют собой древнекомпьютерную цивилизацию. Вот я это написал и соображаю: не забыл ли чего? Очень похоже, что не забыл. Древние люди отнюдь не стремились к разнообразию языков. Более того: они были ПРОТИВ разнообразия, потому что у них были в жизни другие приоритеты. И если мы серьезные историки, то мы просто обязаны в этих приоритетах разобраться. \\
 Во-первых, поскольку основные пользователи Фортрана - ученые, то Фортран для них - инструмент научного познания. В науке ни одно достижение не утверждается само собой: оно требует обсуждения, обоснования, доказательств. Соответственно программа должна быть написана так, чтобы была понятна коллегам-ученым. А поскольку большинство коллег - не профессиональные программисты, изучение множества языков для них было бы совершенно непопутно. Нужен такой язык, чтобы один на всех, язык как средство международного общения. Фортран, будучи предельно простым для изучения (в сравнении с другими языками), этому требованию удовлетворял. \\ Во-первых, поскольку основные пользователи Фортрана - ученые, то Фортран для них - инструмент научного познания. В науке ни одно достижение не утверждается само собой: оно требует обсуждения, обоснования, доказательств. Соответственно программа должна быть написана так, чтобы была понятна коллегам-ученым. А поскольку большинство коллег - не профессиональные программисты, изучение множества языков для них было бы совершенно непопутно. Нужен такой язык, чтобы один на всех, язык как средство международного общения. Фортран, будучи предельно простым для изучения (в сравнении с другими языками), этому требованию удовлетворял. \\
Строка 216: Строка 228:
 Рабочее место, соединенное с мейнфреймом или сервером, называется **//клиентом//**. В современном компьютерном мире под этим словом чаще подразумевается не машина, а программа, образ действия которой состоит в том, чтобы не решать сложную задачу своими силами, а послать соответствующую команду на другой компьютер, и полученный от него ответ предъявить пользователю. Интернет-браузер, например, представляет собой не что иное как WEB-клиент. Вам может встретиться выражение //тонкий клиент// - это устройство (или опять-таки программа), полностью зависимое от мейнфрейма, не способное работать автономно. Видеотерминалы 70-х годов, как и телетайпы и пишущие машинки более ранней эпохи, - типичные тонкие клиенты. \\ Рабочее место, соединенное с мейнфреймом или сервером, называется **//клиентом//**. В современном компьютерном мире под этим словом чаще подразумевается не машина, а программа, образ действия которой состоит в том, чтобы не решать сложную задачу своими силами, а послать соответствующую команду на другой компьютер, и полученный от него ответ предъявить пользователю. Интернет-браузер, например, представляет собой не что иное как WEB-клиент. Вам может встретиться выражение //тонкий клиент// - это устройство (или опять-таки программа), полностью зависимое от мейнфрейма, не способное работать автономно. Видеотерминалы 70-х годов, как и телетайпы и пишущие машинки более ранней эпохи, - типичные тонкие клиенты. \\
 //Рабочая станция//, в отличие от клиента и сервера, - компьютер, выполняющий работу по команде пользователя, сидящего непосредственно за этим самым компьютером. Очевидно, что все наши настольные компьютеры и ноутбуки представляют собой рабочие станции. \\ //Рабочая станция//, в отличие от клиента и сервера, - компьютер, выполняющий работу по команде пользователя, сидящего непосредственно за этим самым компьютером. Очевидно, что все наши настольные компьютеры и ноутбуки представляют собой рабочие станции. \\
-Хорошим примером клиент-серверной системы является АСУ "Экспресс-1", внедренная на Московском железнодорожном узле в 1972-1974 г. с целью автоматизации продажи пассажирских билетов на поезда. Серверная часть АСУ была построена на ЭВМ "Маршрут-1", которые создавались в ЕрНИИММ на основе машины "Раздан-3". Рабочие места кассиров были оборудованы видеомониторами и принтерами. Аналогичная система "Сирена" на основе машины М-3000 примерно в те же годы была создана для продажи билетов на самолеты. В 1982 г. начато развертывание системы "Экспресс-2", серверная часть которой строилась на ЕС ЭВМ. В 1986-1987 гг. мы с женой ездили к родственникам в город Киров: билеты из Ленинграда в Киров мы приобретали уже через "Экспресс-2", по виду они уже были близки к нынешним, а билеты из Кирова в Ленинград покупали обычным порядком, и выглядели они традиционно для того времени: маленькие, толстые и твердые. Система "Экспресс-2" работала до 2005 г., пока не была заменена на "Экспресс-3". \\ \\+Хорошим примером средневековой клиент-серверной системы является АСУ "Экспресс-1", внедренная на Московском железнодорожном узле в 1972-1974 г. с целью автоматизации продажи пассажирских билетов на поезда. Серверная часть АСУ была построена на ЭВМ "Маршрут-1", которые создавались в ЕрНИИММ на основе машины "Раздан-3". Рабочие места кассиров были оборудованы видеомониторами и принтерами. Аналогичная система "Сирена" на основе машины М-3000 примерно в те же годы была создана для продажи билетов на самолеты. В 1982 г. начато развертывание системы "Экспресс-2", серверная часть которой строилась на ЕС ЭВМ. В 1986-1987 гг. мы с женой ездили к родственникам в город Киров: билеты из Ленинграда в Киров мы приобретали уже через "Экспресс-2", и по виду они уже были близки к нынешним, а билеты из Кирова в Ленинград покупали обычным порядком, и выглядели они традиционно для того времени: маленькие, толстые и твердые. Система "Экспресс-2" работала до 2005 г., пока не была заменена на "Экспресс-3"В Японии подобные системы "Марс-1".."Марс-202" строились начиная с 1960 г. [[https://studfile.net/preview/4553098/]] \\ \\
 ==== Суперкомпьютеры и многопроцессорные комплексы ==== ==== Суперкомпьютеры и многопроцессорные комплексы ====
 В предыдущей главе мы рассмотрели ЭВМ БЭСМ-6 как серийную машину, одну из быстрейших в мире в конце 1960-х годов. Кстати, куратор музея вычислительной техники в Блетчли Парк (Великобритания) Д. Свейд называл БЭСМ-6 суперкомпьютером [[https://www.kramola.info/vesti/protivostojanie/sovetskaja-vychislitelnaja-tehnika-istorija-vzleta-i-zabvenija]]. К сожалению, эта машина оказалась "лебединой песней" советского компьютерстроя. В 1970-е годы расстановка сил в мировой компьютерной гонке начала меняться: Великобритания, еще недавно внесшая такой большой вклад в становление компьютерной отрасли, практически "сошла с дистанции", но и соотношение сил между СССР и США уже не было прежним. Рассматривая американское компьютеростроение древней эпохи, я просто не нахожу сколько-нибудь выдающихся образцов... Но вот в начале 1970-х годов Сеймур Крей затеял амбициозный проект по созданию //суперкомпьютера//, который был назван по фамилии создателя. Первый такой компьютер был построен в 1974 году, и в последующие десятилетия Крей построил несколько машин, каждая следующая их которых была мощнее и совершеннее предыдущих. \\ В предыдущей главе мы рассмотрели ЭВМ БЭСМ-6 как серийную машину, одну из быстрейших в мире в конце 1960-х годов. Кстати, куратор музея вычислительной техники в Блетчли Парк (Великобритания) Д. Свейд называл БЭСМ-6 суперкомпьютером [[https://www.kramola.info/vesti/protivostojanie/sovetskaja-vychislitelnaja-tehnika-istorija-vzleta-i-zabvenija]]. К сожалению, эта машина оказалась "лебединой песней" советского компьютерстроя. В 1970-е годы расстановка сил в мировой компьютерной гонке начала меняться: Великобритания, еще недавно внесшая такой большой вклад в становление компьютерной отрасли, практически "сошла с дистанции", но и соотношение сил между СССР и США уже не было прежним. Рассматривая американское компьютеростроение древней эпохи, я просто не нахожу сколько-нибудь выдающихся образцов... Но вот в начале 1970-х годов Сеймур Крей затеял амбициозный проект по созданию //суперкомпьютера//, который был назван по фамилии создателя. Первый такой компьютер был построен в 1974 году, и в последующие десятилетия Крей построил несколько машин, каждая следующая их которых была мощнее и совершеннее предыдущих. \\
Строка 230: Строка 242:
 Первый микропроцессор 4004 был создан фирмой "Интел" (США) около 1970 г. По совокупности тактико-технических характеристик он был сравним с ENIACом, однако такие "умственные способности" в 70-е годы воспринимались уже как крайне ограниченные. Соответственно, он имел и ограниченную область применения, например в светофорах. Этот микропроцессор имел совершенно непривычную разрядность: 4 и, похоже, навсегда остался единственным в мире серийным представителем четырехразрядных процессоров. \\ Первый микропроцессор 4004 был создан фирмой "Интел" (США) около 1970 г. По совокупности тактико-технических характеристик он был сравним с ENIACом, однако такие "умственные способности" в 70-е годы воспринимались уже как крайне ограниченные. Соответственно, он имел и ограниченную область применения, например в светофорах. Этот микропроцессор имел совершенно непривычную разрядность: 4 и, похоже, навсегда остался единственным в мире серийным представителем четырехразрядных процессоров. \\
 Эра микропроцессоров по-настоящему начинается с 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кБ оперативной памяти, способный работать от батареек или аккумулятора. А в январе 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-разрядных процессорах фирмы "ИБМ", а позже "Интел". \\ 
-Компьютеры на базе 8080 и Z80 открыли эру восьмиразрядных машин, которых всего-то 10 лет назад никто и вообразить не мог. Такой компьютер, разумеется, мог производить и точные расчеты, но только за счет т. н. "длинной арифметики", или программной эмуляции арифметических операций с большими числами (в т. ч. и с плавающей запятой). Если же учесть, что тактовая частота таких процессоров достигала 4 МГц, то быстродействие получалось как будто совсем неплохое, где-то на уровне ЕС-1020 или "Минск-32"! Но процессор - лишь одна из составных частей компьютера, а причина недостаточности "умственных способностей" компьютера может скрываться в других его частях или в том, как они взаимодействуют. Нормальный процессор для обращения к ячейкам памяти использует адрес длиной в одно или два машинных слова: идеально - одно, на крайняк соглашаемся на два. Если исхитриться, можно, конечно, и больше, но грамотные инженеры не любят "объездных дорог". Мы сейчас говорим о восьмиразрядном процессоре - значит, адрес длиной в одно машинное слово позволяет обращаться к 256 ячейкам - это безобразно мало. Адрес в два машинных слова позволяет адресовать 64К ячеек - для домашней игрушки это сойдет, но для профессиональной работы уже недостаточно.  +Компьютеры на базе 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 в четвертом или пятом поколении. \\ 
-Поэтому, чтобы построить профессиональный персональный компьютер, все та же фирма "Интел" в 1978 г. выпустила 16-разрядный микропроцессор 8086. Он имел замысловатую систему сегментации памяти, благодаря которой мог обращаться к ячейкам с 20-разрядными адресами. Неудивительно, что поначалу он был встречен специалистами прохладно: казался чересчур переусложненным. Но на основе этого процессора фирма ИБМ в 1981 г. построила персональный компьютер, получивший незатейливое название IBM PC, т. е. просто "персональный компьютер от международных деловых машин". Этот компьютер, что называется, "получил хороший рынок". Выпуск таких процессоров и таких компьютеров давно прекращен, но современные настольные компьютеры и ноутбуки являются потомками PC и Intel 8086 в четвертом или пятом поколении. \\ +Компьютеры IBM PC, как и следующее поколение PC/XT - не были чем-то революционным. Да, у них была необычно большая для персональных машин емкость памяти, и был цветной монитор, но машины с такими особенностями были и раньше - просто до поры-до времени они были дороговаты. Но общую тенденцию к удешевлению техники никто не отменял, значит такой компьютер по такой цене рано или поздно должен был появиться. Он и появился - один из многих. Убойной фишкой был не сам компьютер, а его программное обеспечение. Основой его была операционная система MS DOS, которая представляла собой великолепный компромисс между функциональностью и сложностью. К тому же она была снабжена подробной и доходчивой документацией, и это не считая "художественных" книг, по которым, даже без документации, можно было изучить ее принципы действия. Никогда в истории - ни до того, ни после - не было операционной системы, которая была бы так хорошо приспособлена для программирования. Прикладные программы для DOS разрабатывались множеством фирм в мире, но и любой грамотный пользователь мог подобрать подходящую для себя среду разработки и создавать программы по своим потребностям. Век DOS оказался недолог (начало разработки в 1981 г., массовое распространение - около 1988 г., начало заката - 1996 г., а последние компьютеры с DOS эксплуатировались примерно до 2002 г.) Ее боевые возможности не успевали за бурным развитием железа, но DOS успела дать мощный толчок развитию мирового программистского искусства и оказала огромное влияние на путь развития этого искусства на десятилетия вперед. \\
-Компьютеры IBM PC (и PC/XT - следующее поколение после PCне были чем-то революционным. Да, у них была необычно большая для персональных машин емкость памяти, и был цветной монитор, но машины с такими особенностями были и раньше - просто до поры-до времени они были дороговаты. Но общую тенденцию к удешевлению техники никто не отменял, значит такой компьютер по такой цене рано или поздно должен был появиться. Он и появился - один из многих. Убойной фишкой был не сам компьютер, а его программное обеспечение. Основой его была операционная система MS DOS, которая представляла собой великолепный компромисс между функциональностью и сложностью. К тому же она была снабжена подробной и доходчивой документацией, и это не считая "художественных" книг, по которым, даже без документации, можно было изучить ее принципы действия. Никогда в истории - ни до того, ни после - не было операционной системы, которая была бы так хорошо приспособлена для программирования. Прикладные программы для DOS разрабатывались множеством фирм в мире, но и любой грамотный пользователь мог подобрать подходящую для себя среду разработки и создавать программы по своим потребностям. Век DOS оказался недолог (начало разработки в 1981 г., массовое распространение - около 1988 г., начало заката - 1996 г., а последние компьютеры с DOS эксплуатировались примерно до 2002 г.) Ее боевые возможности не успевали за бурным развитием железа, но DOS успела дать мощный толчок развитию мирового программистского искусства и оказала огромное влияние на путь развития этого искусства на десятилетия вперед. \\+
 В 1980-е годы в США уже имелись персональные компьютеры (ПК), по своим вычислительным возможностям близкие к нашим СМ и ЕС (а порой и превосходящие их), и продавались они по цене легкового автомобиля, т. е. были доступны представителям среднего класса. В других странах подобная техника не производилась, на поставки ПК из США в СССР было наложено эмбарго, а советские разработки в этой области в то время уже существенно отставали от американских. Хуже всего то, что персональный компьютер для любого советского предприятия был "социальной нагрузкой", а не основной продукцией, поэтому наращивать их выпуск никто и не стремился, "и даже планов таких не было". Отставание в области "железа" могло бы быть не такой большой проблемой, если бы его компенсировать опережающим развитием программирования, но этого тоже не произошло. \\ В 1980-е годы в США уже имелись персональные компьютеры (ПК), по своим вычислительным возможностям близкие к нашим СМ и ЕС (а порой и превосходящие их), и продавались они по цене легкового автомобиля, т. е. были доступны представителям среднего класса. В других странах подобная техника не производилась, на поставки ПК из США в СССР было наложено эмбарго, а советские разработки в этой области в то время уже существенно отставали от американских. Хуже всего то, что персональный компьютер для любого советского предприятия был "социальной нагрузкой", а не основной продукцией, поэтому наращивать их выпуск никто и не стремился, "и даже планов таких не было". Отставание в области "железа" могло бы быть не такой большой проблемой, если бы его компенсировать опережающим развитием программирования, но этого тоже не произошло. \\
 Во-первых, хотя счет моделей советских персональных компьютеров идет на десятки (и это едва ли не больше, чем в США), выпускались они мизерными тиражами и не имели программной совместимости даже друг с другом, не говоря уж про иностранные образцы. Разработка сколько-нибудь богатого "джентльменского набора" программ в таких условиях не может быть дешевой в принципе. Если же учесть, что в СССР не могло быть коммерческой разработки ПО, то станет понятно, почему ситуация зашла в тупик. \\ Во-первых, хотя счет моделей советских персональных компьютеров идет на десятки (и это едва ли не больше, чем в США), выпускались они мизерными тиражами и не имели программной совместимости даже друг с другом, не говоря уж про иностранные образцы. Разработка сколько-нибудь богатого "джентльменского набора" программ в таких условиях не может быть дешевой в принципе. Если же учесть, что в СССР не могло быть коммерческой разработки ПО, то станет понятно, почему ситуация зашла в тупик. \\
Строка 239: Строка 250:
 В-третьих, программистов просто физически не хватало, а те немногие, что были, в основном имели такой уровень подготовки, который позволял в лучшем случае "передирать" американские программы. СССР уже много лет как прекратил существование, но советский менталитет в области компьютеров и программирования отнюдь не изжит, и последствия этого мы будем ощущать на своих шкурах еще долго. \\ В-третьих, программистов просто физически не хватало, а те немногие, что были, в основном имели такой уровень подготовки, который позволял в лучшем случае "передирать" американские программы. СССР уже много лет как прекратил существование, но советский менталитет в области компьютеров и программирования отнюдь не изжит, и последствия этого мы будем ощущать на своих шкурах еще долго. \\
 Хотя персональные компьютеры и появились в начале 80-х, их эпоха, которую мы назовем новым компьютерным временем, наступила не сразу. Пока такие компьютеры выпускались только в США, Европе и СССР, их было мало, они были недешевы, и погоды они не делали. Эпоха персональных компьютеров настанет тогда, когда американские компании перенесут свое производство в страны Азии, где многочисленные и крайне низкооплачиваемые рабочие начнут штамповать компьютеры миллионными тиражами. \\ Хотя персональные компьютеры и появились в начале 80-х, их эпоха, которую мы назовем новым компьютерным временем, наступила не сразу. Пока такие компьютеры выпускались только в США, Европе и СССР, их было мало, они были недешевы, и погоды они не делали. Эпоха персональных компьютеров настанет тогда, когда американские компании перенесут свое производство в страны Азии, где многочисленные и крайне низкооплачиваемые рабочие начнут штамповать компьютеры миллионными тиражами. \\
-Компьютерное средневековье не началось в один день, и заканчивалось оно тоже постепенно. Если в США и других индустриально развитых странах предвестниками новой эпохи были "персоналки", то в СССР - программируемые калькуляторы. Первые такие машины - 15-ВСМ-5 и Электроника Д3-28 - были спроектированы в 1977-1979 гг. и выпускались в 80-е годы. Эти машины были прямыми потомками МИР, отличаясь от нее тем, что имели режим калькулятора, позволявший решать самые простые задачи без программирования. Таким образом, они были промежуточной ступенью эволюции между МИР и следующим поколением калькуляторов, выпускавшимся во второй половине 1980-х годов. На таких машинах мы учились программировать на первом курсе института (1983 г.) - затем они были заменены на СМ-4 с видеотерминалами. \\+Компьютерное средневековье не началось в один день, и заканчивалось оно тоже постепенно. Если в США и других индустриально развитых странах предвестниками новой эпохи были "персоналки", то в СССР - программируемые калькуляторы. Первые такие машины - 15-ВСМ-5 и Электроника Д3-28 - были спроектированы в 1977-1979 гг. и выпускались в 80-е годы. Эти машины были прямыми потомками МИР, отличаясь от нее тем, что имели режим калькулятора, позволявший решать самые простые задачи в ручном режиме, не прибегая к программированию. Таким образом, они были промежуточной ступенью эволюции между МИР и следующим поколением калькуляторов, выпускавшимся во второй половине 1980-х годов. На таких машинах мы учились программировать на первом курсе института (1983 г.) - затем они были заменены на СМ-4 с видеотерминалами. \\
 15-ВСМ-5 и Д3-28 были довольно большие, размером почти как нынешний настольный системный блок, очень тяжелые и уж точно недешевые. Если бы кто-то захотел убрать из такой машины все, что было связано с программированием, то получился бы в чистом виде калькулятор, но выигрыш в размерах, весе и стоимости оказался бы невелик - такой калькулятор был бы мало кому нужен (тем не менее, такие калькуляторы под маркой "Вега" выпускались в небольшом количестве еще в начале 60-х годов). Поэтому миниатюризация машин этого класса осуществлялась не за счет "отсекания лишнего", а за счет совершенствования элементной базы: вместо сотен простейших логических микросхем поставить одну большую. Так в первой половине 80-х годов появились миниатюрные программируемые калькуляторы (на следующем фото - калькулятор МК-52): \\ 15-ВСМ-5 и Д3-28 были довольно большие, размером почти как нынешний настольный системный блок, очень тяжелые и уж точно недешевые. Если бы кто-то захотел убрать из такой машины все, что было связано с программированием, то получился бы в чистом виде калькулятор, но выигрыш в размерах, весе и стоимости оказался бы невелик - такой калькулятор был бы мало кому нужен (тем не менее, такие калькуляторы под маркой "Вега" выпускались в небольшом количестве еще в начале 60-х годов). Поэтому миниатюризация машин этого класса осуществлялась не за счет "отсекания лишнего", а за счет совершенствования элементной базы: вместо сотен простейших логических микросхем поставить одну большую. Так в первой половине 80-х годов появились миниатюрные программируемые калькуляторы (на следующем фото - калькулятор МК-52): \\
 {{igor:istoria-mk52.jpg?400}} \\ {{igor:istoria-mk52.jpg?400}} \\
Строка 265: Строка 276:
 В 70-е годы в нашей стране построена серия ракетных крейсеров проекта 1164 (в интернете чаще всего можно встретить "Москву" - бывшую "Славу"). На этих кораблях был установлен централизованный вычислительный комплекс, который у моряков получил название БИУС - боевая информационно-управляющая система. "Сердцем" БИУС является ЦВМ "Атака" (строилась серийно на НПО "Агат" в 1976-1990 г., построено 255 шт.). БИУС могла решать несколько десятков типовых задач: как по управлению кораблем, так и по наведению оружия. Круг задач, которые должны были решаться на этой машине, был четко оговорен к началу ее проектирования, поэтому создатели БИУС "заточили" свое изделие под эти задачи, трезво сознавая, что попытка приспособить машину для решения "неродных" задач может оказаться неудачной. Компьютер, проектируемый по такому принципу, называется //специализированным//. Для древней эпохи такие компьютеры были совершенно нехарактерны, а средневековье отмечено их появлением и развитием. С тех давних времен и до наших дней бортовые компьютеры на кораблях и самолетах - всегда специализированные, хотя в наше время они на 3/4 и более собираются из деталей от универсальных компьютеров. \\ В 70-е годы в нашей стране построена серия ракетных крейсеров проекта 1164 (в интернете чаще всего можно встретить "Москву" - бывшую "Славу"). На этих кораблях был установлен централизованный вычислительный комплекс, который у моряков получил название БИУС - боевая информационно-управляющая система. "Сердцем" БИУС является ЦВМ "Атака" (строилась серийно на НПО "Агат" в 1976-1990 г., построено 255 шт.). БИУС могла решать несколько десятков типовых задач: как по управлению кораблем, так и по наведению оружия. Круг задач, которые должны были решаться на этой машине, был четко оговорен к началу ее проектирования, поэтому создатели БИУС "заточили" свое изделие под эти задачи, трезво сознавая, что попытка приспособить машину для решения "неродных" задач может оказаться неудачной. Компьютер, проектируемый по такому принципу, называется //специализированным//. Для древней эпохи такие компьютеры были совершенно нехарактерны, а средневековье отмечено их появлением и развитием. С тех давних времен и до наших дней бортовые компьютеры на кораблях и самолетах - всегда специализированные, хотя в наше время они на 3/4 и более собираются из деталей от универсальных компьютеров. \\
 Семейство корабельных ЭВМ "Карат" еще даже более интересно, чем "Атака". Разработка была начата еще в 1963 г. в Киевском НИИ радиоэлектроники, но шла небыстро, т. к. требование создать максимально компактную, экономичную и при этом быстродействующую машину было на пределе того, что позволяла тогдашняя элементная база. "Карат" остается едва ли не единственным представителем ЭВМ на больших гибридных микросхемах (нечто похожее было в первых американских IBM/360, но сейчас уже трудно сказать, насколько они были сходны или различны). Машины были 24-разрядные с фиксированной запятой и имели весьма высокое для своего времени быстродействие: позднейшие представители семейства достигали 2.5 миллионов операций в секунду. \\ Семейство корабельных ЭВМ "Карат" еще даже более интересно, чем "Атака". Разработка была начата еще в 1963 г. в Киевском НИИ радиоэлектроники, но шла небыстро, т. к. требование создать максимально компактную, экономичную и при этом быстродействующую машину было на пределе того, что позволяла тогдашняя элементная база. "Карат" остается едва ли не единственным представителем ЭВМ на больших гибридных микросхемах (нечто похожее было в первых американских IBM/360, но сейчас уже трудно сказать, насколько они были сходны или различны). Машины были 24-разрядные с фиксированной запятой и имели весьма высокое для своего времени быстродействие: позднейшие представители семейства достигали 2.5 миллионов операций в секунду. \\
-Характерная черта средневековых бортовых компьютеров - их программное обеспечение. Операционной системы как таковой в них нет. Вместо ОС может быть небольшая программа - диспетчер, функции которой сводятся к запуску прикладных программ на выполнение по команде пользователя. Все программы, нужные для работы, не хранятся на перфокартах и т. п., а записываются в постоянное запоминающее устройство (ПЗУ), емкость которого (так уж по жизни сложилось) обычно в 4..16 раз больше емкости ОЗУ. Ни редакторов, ни компиляторов, ни линковщиков на таких компьютерах не бывает, так что разработка программ может производиться только на //инструментальной машине//, также как для нынешних микроконтроллеров. Средневековые ПЗУ выполнялись на ферритовых сердечниках, и установка новой программы ("прошивка"выполнялась вручную - это была очень трудоемкая работа, возможная только в заводских условиях. Такое решение, во-первых, гарантирует сохранность программ, и во-вторых, исключает потери времени на загрузку программ в память (на обычных компьютерах при каждом включении, а также после устранения сбоя, производится загрузка ОС, которая может занимать несколько минут). Так обеспечивается готовность машины решать любую задачу немедленно, как только в этом возникнет необходимость. \\+Характерная черта средневековых бортовых компьютеров - их программное обеспечение. Операционной системы как таковой в них нет. Вместо ОС может быть небольшая программа - диспетчер, функции которой сводятся к запуску прикладных программ на выполнение по команде пользователя. Все программы, нужные для работы, не хранятся на перфокартах и т. п., а записываются в постоянное запоминающее устройство (ПЗУ), емкость которого (так уж по жизни сложилось) обычно в 4..16 раз больше емкости ОЗУ. Ни редакторов, ни компиляторов, ни линковщиков на таких компьютерах не бывает, так что разработка программ может производиться только на //инструментальной машине//, также как для нынешних микроконтроллеров. Средневековые ПЗУ выполнялись на ферритовых сердечниках, и установка новой программы выполнялась вручную путем продевания длинного тонкого провода в отверстия сердечников. Внешне эта работа напоминала шитьё, и с тех пор для этой операции закрепился термин "прошивка". В наше время соответствующая работа производится чисто электрическими методами, легко и быстро, а в то время это была очень трудоемкая работа, и возможна она была только в заводских условиях. \\ 
 +Размещение программ в ПЗУ, во-первых, гарантирует сохранность программ, и во-вторых, исключает потери времени на загрузку программ в память (на обычных компьютерах при каждом включении, а также после устранения сбоя, производится загрузка ОС, которая может занимать несколько минут). Так обеспечивается готовность машины решать любую задачу немедленно, как только в этом возникнет необходимость. \\
 На берегу, на гражданской службе более типична несколько другая ситуация: круг задач, которые предстоит решать на компьютере, не определен как исчерпывающий список. Разработчик такого компьютера вынужден "пройти между Сциллой и Харибдой": сосредоточить максимум усилий на нужных задачах и в то же время обеспечить приспосабливаемость машины к решению новых задач, которые могут появиться в будущем. Такой компьютер называется //проблемно-ориентированным//. Малые ЭВМ серии СМ, которые строились в нашей стране в 70-е годы, как и их американские прототипы, относятся к проблемно-ориентированным: они могут решать много разных задач, однако есть такие задачи, которые им не под силу. Структура программного обеспечения проблемно-ориентированных машин практически такая же, как и у "больших", и включает операционную систему и инструментарий для разработки программ. \\ На берегу, на гражданской службе более типична несколько другая ситуация: круг задач, которые предстоит решать на компьютере, не определен как исчерпывающий список. Разработчик такого компьютера вынужден "пройти между Сциллой и Харибдой": сосредоточить максимум усилий на нужных задачах и в то же время обеспечить приспосабливаемость машины к решению новых задач, которые могут появиться в будущем. Такой компьютер называется //проблемно-ориентированным//. Малые ЭВМ серии СМ, которые строились в нашей стране в 70-е годы, как и их американские прототипы, относятся к проблемно-ориентированным: они могут решать много разных задач, однако есть такие задачи, которые им не под силу. Структура программного обеспечения проблемно-ориентированных машин практически такая же, как и у "больших", и включает операционную систему и инструментарий для разработки программ. \\
 +Вот еще кое-какая информация к размышлению на тему СМ ЭВМ: \\
 +[[https://habr.com/ru/company/dataart/blog/484124/]] \\
 +[[https://habr.com/ru/company/dataart/blog/488274/]] \\
 Специализированные компьютеры для гражданского применения в средние века тоже существовали: они применялись в промышленных роботах, станках с ЧПУ и автоматизированных системах управления технологическими процессами. \\ Специализированные компьютеры для гражданского применения в средние века тоже существовали: они применялись в промышленных роботах, станках с ЧПУ и автоматизированных системах управления технологическими процессами. \\
 Я пишу в основном о корабельных ЭВМ, поскольку с ними знаком. На самом деле "Атака" была не первой такой машиной, а ведь были ЭВМ и самолетные, и наземные. \\ \\ Я пишу в основном о корабельных ЭВМ, поскольку с ними знаком. На самом деле "Атака" была не первой такой машиной, а ведь были ЭВМ и самолетные, и наземные. \\ \\
Строка 302: Строка 317:
 Во-вторых, средневековый компилятор не имеет встроенных функций. Фирма, разрабатывающая такой компилятор, поставляет его на рынок, конечно, не "голышом", а в комплекте с достаточно богатым набором уже скомпилированных типовых процедур на самые разные случаи жизни, но эти процедуры более не являются встроенными - программист может делать с ними что угодно, как со своими. Собственно, для него теперь вообще нет разницы, откуда взялась та или иная подпрограмма: сам он ее написал, или получил у коллег, или приобрел на стороне. Так у программиста формируется //библиотека// подпрограмм, которая имеет самостоятельную ценность, не привязанную к какому-либо компилятору. Соответственно теперь большой проект может разрабатываться коллективом программистов, возможно даже использующих разные компиляторы и даже разные языки. \\  Во-вторых, средневековый компилятор не имеет встроенных функций. Фирма, разрабатывающая такой компилятор, поставляет его на рынок, конечно, не "голышом", а в комплекте с достаточно богатым набором уже скомпилированных типовых процедур на самые разные случаи жизни, но эти процедуры более не являются встроенными - программист может делать с ними что угодно, как со своими. Собственно, для него теперь вообще нет разницы, откуда взялась та или иная подпрограмма: сам он ее написал, или получил у коллег, или приобрел на стороне. Так у программиста формируется //библиотека// подпрограмм, которая имеет самостоятельную ценность, не привязанную к какому-либо компилятору. Соответственно теперь большой проект может разрабатываться коллективом программистов, возможно даже использующих разные компиляторы и даже разные языки. \\ 
 Для поддержания библиотеки в рабочем состоянии используется служебная программа - библиотекарь. В юниксоидных системах эта программа называется lib. \\ Для поддержания библиотеки в рабочем состоянии используется служебная программа - библиотекарь. В юниксоидных системах эта программа называется lib. \\
-Что же касается исходных данных для решения задачи, то теперь можно было (а) заготовить их в виде отдельного файла или (б) вводить по мере потребности в них, в ответ на запрос машины. Вставка исходных данных прямо в текст программы, практиковавшаяся в древние времена, стала бессмысленной, сейчас так уже никто не делает. \\+Что же касается исходных данных для решения задачи, то теперь можно было (а) заготовить их в виде отдельного файла или (б) вводить по мере потребности в них, в ответ на запрос машины. Вставка исходных данных прямо в текст программы, практиковавшаяся в древние времена, стала бессмысленной, сейчас так уже никто не делает. Файловый принцип организации данных на дисках стал универсальным инструментом для обеспечения совместной работы нескольких программ при решении смежных задач. Теперь программное обеспечение чаще всего выпускается не в виде отдельных программ, каждая из которых решает свою задачу, а в виде программных пакетов, каждый из которых обеспечивает целый комплекс задач, оставляя пользователю свободу замены любой отдельной программы на что-то более новое или просто другое. \\
 С появлением понятия библиотеки произошло размежевание таких понятий, как язык программирования, система программирования, инструментальные средства программирования. Если в древнюю эпоху программист работал на некотором языке и этим определялся весь его стиль работы (а кто-то и до сих пор так думает), то начиная со средних веков язык уже не значит ничего. Способность программиста решать то или иное множество задач с той или иной эффективностью теперь определяется, прежде всего, теми библиотеками, которые он имеет, и в какой-то мере теми программными инструментами, которыми пользуется. \\ С появлением понятия библиотеки произошло размежевание таких понятий, как язык программирования, система программирования, инструментальные средства программирования. Если в древнюю эпоху программист работал на некотором языке и этим определялся весь его стиль работы (а кто-то и до сих пор так думает), то начиная со средних веков язык уже не значит ничего. Способность программиста решать то или иное множество задач с той или иной эффективностью теперь определяется, прежде всего, теми библиотеками, которые он имеет, и в какой-то мере теми программными инструментами, которыми пользуется. \\
 +С другой стороны, применение линковщиков изменило наши взгляды на подпрограммы вообще. Если раньше любая подпрограмма рассматривалась только как принадлежность какой-то одной прикладной программы, то теперь она приобрела самостоятельную ценность. Библиотеки подпрограмм стали ПРОДУКТОМ, и зародилась (а в новое время вошла в полную силу) целая отрасль программирования, поставляющая на рынок не готовые прикладные программы, а полуфабрикаты (называемые платформами или фреймворками), на основе которых программисты "на местах" строили свои изделия. Программирование с использованием фреймворков менее трудоемко, чем без них, и доступно программисту не очень высокой квалификации. Это конечно хорошо, но никакое хорошо в нашем мире не бесплатно: возрастает "ресурсоемкость" готовых программ. \\
 В предыдущей главе мы обсудили Алгол как структурный язык и Фортран как бесструктурный. Именно по причине бесструктурности Фортран оказался тупиковой ветвью эволюции, а на место Алгола пришли его потомки. \\ В предыдущей главе мы обсудили Алгол как структурный язык и Фортран как бесструктурный. Именно по причине бесструктурности Фортран оказался тупиковой ветвью эволюции, а на место Алгола пришли его потомки. \\
-В конце 60-х - начале 70-х годов Н. Вирт из Швейцарской высшей технической школы Цюриха (ETHZ) создал язык **Паскаль**, в котором воплотился многолетний опыт эксплуатации Алгола. Вирт не планировал революции в программировании - он хотел создать хороший учебно-боевой язык, и с этой задачей он справился блестяще. Новый язык содержал все полезное, что было в его прототипах, и многое, чего в них не хватало, но не прощал «лишних вольностей». Его правила строги и прозрачны, поэтому изучение Паскаля по плечу даже школьнику, а освоив его однажды, вы сможете работать на нем всю жизнь, не испытывая нужды ни в чем другом. \\ +В конце 60-х - начале 70-х годов Н. Вирт из Швейцарской высшей технической школы Цюриха (ETHZ) создал язык **Паскаль**, в котором воплотился многолетний опыт эксплуатации Алгола. Вирт не планировал революции в программировании - он хотел создать хороший учебно-боевой язык, и с этой задачей он справился блестяще. Новый язык содержал все полезное, что было в его прототипах, и многое, чего в них не хватало, но не прощал «лишних вольностей». Его правила строги и прозрачны, поэтому изучение Паскаля по плечу даже школьнику, а освоив его однажды, вы сможете работать на нем всю жизнь, не испытывая нужды ни в чем другом. Исходя из этого я рассматриваю Паскаль как очередную маленькую эволюционную ступень по отношению к Алголу. \\ 
-Почему Паскаль оказался заброшен и забыт? Я бы сказалему просто не повезло. Он не вписался в какой-либо глобальный проект, не стал официальным языком крупного программного консорциума, и когда толпа закричала: "долой!", не нашлось желающих его защищать. \\+Для нас чрезвычайно важен вопрос производительности труда программиста. В то время, о котором мы сейчас говорим, вопрос о создании новой технологии программирования, существенно более производительной, чем технология Фортрана и Алгола, по идее, уже должен был витать в атмосфере... но до меня не доходила информация о том, что этот вопрос кто-то хотя бы заявил вслух. Паскаль, по сравнению с Алголом, обещал некоторую прибавку производительности за счет более ясных правил (что исключает мелкую, но досадную путаницу, которая каждый день тормозит работу программиста). Эта прибавка, однако, не могла сыграть существенной роли. В итоге Паскалю просто не повезло: он не вписался в какой-либо глобальный проект, не стал официальным языком крупного программного консорциума... Когда толпа закричала: "долой!", не нашлось желающих его защищать, и он оказался заброшен и забыт. \\
 Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\ Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\
 Паскаль - не единственный потомок Алгола: даже если считать только мало-мальски жизнеспособные, то все равно получится довольно много. Остановлюсь на языке **Ада**. Он был создан в 1979-1980 годах в США и сразу стал стандартным языком в Пентагоне и НАСА. Предполагалось, что он станет общемировым, но этого не произошло: даже в гражданских ведомствах США он не нашел признания. В России этот язык практически неизвестен, хотя книжка (переводная с английского, разумеется) мне в руки попадалась. \\ Паскаль - не единственный потомок Алгола: даже если считать только мало-мальски жизнеспособные, то все равно получится довольно много. Остановлюсь на языке **Ада**. Он был создан в 1979-1980 годах в США и сразу стал стандартным языком в Пентагоне и НАСА. Предполагалось, что он станет общемировым, но этого не произошло: даже в гражданских ведомствах США он не нашел признания. В России этот язык практически неизвестен, хотя книжка (переводная с английского, разумеется) мне в руки попадалась. \\
-**Язык C (Си)** - не что иное как основательно испорченные Алгол и Паскаль. Кто их испортил? - Дэннис Ритчи и его команда, которая в конце 1960-х годов в гаражно-коленочных условиях создавала компьютер VAX и операционную систему UNIX. У них не было не только нормального экранного монитора, но даже и нормального принтера. Был телетайп - буквопечатающий телеграфный аппарат, который теперь можно увидеть разве что в музее: \\+Сейчас я хочу акцентировать внимание читателя вот на чем: и Вирт, и Дейкстра, и Грейс Хоппер были учеными отнюдь не шуточного уровня, и их коллеги из Пентагона, НАСА и "ИБМ" тоже были не лыком шиты. Новые языки они придумывали не с бухты-барахты, а по итогам тщательного осмысления опыта эксплуатации языков-прототипов, от которых они отталкивались. Научная мысль обладает свойством воспроизводимости: мало-мальски глубокий специалист, не читавший научных трудов Вирта, может восстановить ход его мыслей, просто сравнивая Паскаль с Алголом. С другими языками ситуация в основном аналогична, но в совершенно иных обстоятельствах родился **язык C (Си)**. \\ 
 +Ходит легенда, что этот язык был создан на основе более старого языка B (Би), но с последним произошло именно то, о чем мы говорили в самом начале нашего исследования: от него не осталось никаких следов (да пОлно, был ли он вообще?). Зато при мало-мальски тщательном рассмотрении очевидно сходство языка Си с другим древним языком, который хотя и выведен уже давно из эксплуатации, но специалистам все же известен - я имею в виду Алгол. Однако, рассматривая различия между Си и Алголом, мы едва ли сможем понять логику людей, создававших Си (особенно если допустить, что они были знакомы с Паскалем, что вообще-то не факт). \\ 
 +Си - не что иное как основательно испорченный Алгол. Кто его испортил? - Дэннис Ритчи и его команда, которая в конце 1960-х годов в гаражно-коленочных условиях создавала компьютер VAX и операционную систему UNIX. У них не было не только нормального экранного монитора, но даже и нормального принтера. Был телетайп - буквопечатающий телеграфный аппарат, который теперь можно увидеть разве что в музее: \\
 {{igor:istoria-teletype.jpg?400}} \\ {{igor:istoria-teletype.jpg?400}} \\
 (на этом фото телетайп - советский, а у них был, конечно, американский, но в общем примерно такой). Он выводил данные на узкую бумажную ленту: катушка с лентой видна на правой стенке телетайпа. Ленты вечно не хватало, и была она недешева, значит приходилось экономить. И вот Ритчи решил придумать такой язык, чтобы каждое действие записывалось максимально коротко. В качестве прототипа выбрали Алгол, что в общем-то вполне логично. Нос вытащили - хвост увяз: исходный текст стал трудно читаемым, а это не замедлило сказаться на трудоемкости разработки больших программ. Акцентирую внимание на том, что Ритчи и его храбрые ребята не были глубокими учеными, как создатели Фортрана и Алгола - они были просто практикующими программистами. Профессионалами, как мы бы сказали сейчас. Никаких революций они не планировали и на мировое господство не претендовали - им был нужен всего лишь инструмент, обеспечивавший решение задачи здесь и сейчас, и они его получили. Ни об экономической эффективности этого инструмента, ни о грамотности заложенных в него инженерных решений они не задумывались в принципе. А потом, когда их разработка «пошла» и люди обзавелись мониторами, оказалось, что на новоизобретенном языке написано уже очень много, и возврат к настоящему Алголу сочли нецелесообразным. Так началось триумфальное шествие языка Cи по планете и ее окрестностям. Последующий результат этого шествия оказался, в общем-то, закономерным и предсказуемым. Считать его в тугриках я, извините, пас. Мне достаточно того, что дело пахнет не миллионами и не миллиардами, а чем-то гораздо большим. \\ (на этом фото телетайп - советский, а у них был, конечно, американский, но в общем примерно такой). Он выводил данные на узкую бумажную ленту: катушка с лентой видна на правой стенке телетайпа. Ленты вечно не хватало, и была она недешева, значит приходилось экономить. И вот Ритчи решил придумать такой язык, чтобы каждое действие записывалось максимально коротко. В качестве прототипа выбрали Алгол, что в общем-то вполне логично. Нос вытащили - хвост увяз: исходный текст стал трудно читаемым, а это не замедлило сказаться на трудоемкости разработки больших программ. Акцентирую внимание на том, что Ритчи и его храбрые ребята не были глубокими учеными, как создатели Фортрана и Алгола - они были просто практикующими программистами. Профессионалами, как мы бы сказали сейчас. Никаких революций они не планировали и на мировое господство не претендовали - им был нужен всего лишь инструмент, обеспечивавший решение задачи здесь и сейчас, и они его получили. Ни об экономической эффективности этого инструмента, ни о грамотности заложенных в него инженерных решений они не задумывались в принципе. А потом, когда их разработка «пошла» и люди обзавелись мониторами, оказалось, что на новоизобретенном языке написано уже очень много, и возврат к настоящему Алголу сочли нецелесообразным. Так началось триумфальное шествие языка Cи по планете и ее окрестностям. Последующий результат этого шествия оказался, в общем-то, закономерным и предсказуемым. Считать его в тугриках я, извините, пас. Мне достаточно того, что дело пахнет не миллионами и не миллиардами, а чем-то гораздо большим. \\
-В древние века программист на Фортране или Алголе работал чаще всего один, и затрачивал на создание программы энное количество человеко-лет в пределах времени существования этих языков. Это теоретически. На практике сроки разработки программ исчислялись сплошь и рядом не годами, а месяцами. Я имею в виду именно написание и отладку текста программы, научная подготовка сюда не включается. Да, древние программы были небольшие. Сейчас объемы исходных текстов программ увеличились многократно, но тогда хотелось бы иметь инструмент, обеспечивающий разработку таких программ в сроки, близкие к тем, что были в древности. А сколько человеко-лет надо, чтобы разработать планово-управленческую программу? Сто? Тысячу? А сколько человеко-лет затрачено на разработку операционных систем UNIX, BSD и Linux в сумме? Миллионы. Но тогда получается, что по важнейшему экономическому показателю, каковым является трудоемкость разработки программ, Си не опережает свой прототип, а уступает ему. Революция наоборот. \\+В древние века программист на Фортране или Алголе работал чаще всего один, и затрачивал на создание программы энное количество человеко-лет в пределах времени существования этих языков. Это теоретически. На практике сроки разработки программ исчислялись сплошь и рядом не годами, а месяцами. Я имею в виду именно написание и отладку текста программы, научная подготовка сюда не включается. Да, древние программы были небольшие. Сейчас объемы исходных текстов программ увеличились многократно, но тогда хотелось бы иметь инструмент, обеспечивающий соответствующее повышение производительности труда. Чтобы разработка таких программ укладывалась в сроки, близкие к тем, к которым мы привыкли в древности. В языке Си многие видели такой инструмент... совершенно необосновано. Сколько человеко-лет надо, чтобы разработать планово-управленческую программу на уровне 80-х-90-х годов? Сто? Тысячу? А сколько человеко-лет затрачено на разработку операционных систем UNIX, BSD и Linux в сумме? Миллионы. Но тогда получается, что по важнейшему экономическому показателю, каковым является трудоемкость разработки программ, Си не опережает свой прототип, а уступает ему. Революция наоборот. \\
 В последующие годы из языка Cи выросло целое семейство языков, как универсальных (C++, C#), так и специализированных (PHP, Java/JavaScript). Языки этого семейства в основном используются сейчас, так что говорить о новой или новейшей эпохе применительно к языкам программирования не приходится. \\ В последующие годы из языка Cи выросло целое семейство языков, как универсальных (C++, C#), так и специализированных (PHP, Java/JavaScript). Языки этого семейства в основном используются сейчас, так что говорить о новой или новейшей эпохе применительно к языкам программирования не приходится. \\
 Итак, повторяю еще раз: чудес от языка Си ждали не те, кто его создавал, - ждет нынешняя программирующая молодежь. Как любят говорить поэты или просто авторы книг по психологии: если очень хочешь чуда, а оно долго не происходит, - значит когда-нибудь оно обязательно произойдет... (или еще вариант: если очень хочешь чуда, а оно долго не происходит, - сделай чудо сам). Я, однако, не поэт и не психолог - я суровый технарь, и отвечаю на это так: если очень хочешь чуда, а оно долго не происходит, то на свет появляются мифы. \\ Итак, повторяю еще раз: чудес от языка Си ждали не те, кто его создавал, - ждет нынешняя программирующая молодежь. Как любят говорить поэты или просто авторы книг по психологии: если очень хочешь чуда, а оно долго не происходит, - значит когда-нибудь оно обязательно произойдет... (или еще вариант: если очень хочешь чуда, а оно долго не происходит, - сделай чудо сам). Я, однако, не поэт и не психолог - я суровый технарь, и отвечаю на это так: если очень хочешь чуда, а оно долго не происходит, то на свет появляются мифы. \\
Строка 323: Строка 341:
 Программисты моего поколения вспоминают Бэйсик как кошмар, хотя, если вдуматься, в нем не было ничего такого ужасного. Возвращаюсь к мысли о том, что программа - техническое изделие, а техническим изделиям отнюдь не чужды понятия о красоте. У нас был старый верный Фортран: брутальный, как швейцарский электровоз, и крепкий, как ледокол "Красин". Его раздербанили на запчасти, 80% деталей слегка перекрасили, чтобы создать видимость обновления, еще 10% допилили напильником на коленке для обеспечения работы в режиме интерпретации, и добавили множество подпорок, подставок и подкладок, обеспечивающих работу на абонентских терминалах. Какой же красоты можно было ожидать от такого изделия? \\ Программисты моего поколения вспоминают Бэйсик как кошмар, хотя, если вдуматься, в нем не было ничего такого ужасного. Возвращаюсь к мысли о том, что программа - техническое изделие, а техническим изделиям отнюдь не чужды понятия о красоте. У нас был старый верный Фортран: брутальный, как швейцарский электровоз, и крепкий, как ледокол "Красин". Его раздербанили на запчасти, 80% деталей слегка перекрасили, чтобы создать видимость обновления, еще 10% допилили напильником на коленке для обеспечения работы в режиме интерпретации, и добавили множество подпорок, подставок и подкладок, обеспечивающих работу на абонентских терминалах. Какой же красоты можно было ожидать от такого изделия? \\
 Мы договорились изучать историю серьезно, а история учит, что все новое в этом мире не возникает просто так: если какая-то вещь появилась, значит она кому-то для чего-то была нужна. Кому и для чего был нужен Бэйсик? Ответ на этот вопрос кроется в названии языка: BASIC - Beginners All-purpose Symbolic Instruction Code - многоцелевой символический командный код для начинающих. То есть Бэйсик не рассматривался как боевой язык - только как учебный, да не просто учебный, а для студентов младших курсов. В те времена еще господствовали перфокарточные технологии. Они были более-менее приемлемы для практикующих программистов, но крайне неудобны для обучения: даже совсем простую программу из 10 строк невозможно было отладить за время одного учебного занятия. Нужен был диалоговый режим. Телетайпы тогда уже существовали, но мейнфреймы, к которым их можно было бы подключить, если и были, то были большой редкостью. Да и не всякий вычислительный центр предоставил бы машинное время первоклашкам-промакашкам. Еще были маленькие машины в калибре нашей "Наири" - диалоговый режим они могли обеспечить, но полнопрофильный компилятор типа Фортрана или Алгола они бы не потянули. Если же из языка выкинуть по максимуму все то, что изучается на старших курсах, то транслятор можно "укоротить" до 4 КБайт, а то и меньше... Вот вам и решение. \\  Мы договорились изучать историю серьезно, а история учит, что все новое в этом мире не возникает просто так: если какая-то вещь появилась, значит она кому-то для чего-то была нужна. Кому и для чего был нужен Бэйсик? Ответ на этот вопрос кроется в названии языка: BASIC - Beginners All-purpose Symbolic Instruction Code - многоцелевой символический командный код для начинающих. То есть Бэйсик не рассматривался как боевой язык - только как учебный, да не просто учебный, а для студентов младших курсов. В те времена еще господствовали перфокарточные технологии. Они были более-менее приемлемы для практикующих программистов, но крайне неудобны для обучения: даже совсем простую программу из 10 строк невозможно было отладить за время одного учебного занятия. Нужен был диалоговый режим. Телетайпы тогда уже существовали, но мейнфреймы, к которым их можно было бы подключить, если и были, то были большой редкостью. Да и не всякий вычислительный центр предоставил бы машинное время первоклашкам-промакашкам. Еще были маленькие машины в калибре нашей "Наири" - диалоговый режим они могли обеспечить, но полнопрофильный компилятор типа Фортрана или Алгола они бы не потянули. Если же из языка выкинуть по максимуму все то, что изучается на старших курсах, то транслятор можно "укоротить" до 4 КБайт, а то и меньше... Вот вам и решение. \\ 
-Чем жертвовали создатели Бэйсика и ради чего? Боевыми возможностями языка? Но поскольку язык для начального обучения, то это не считается. То, что язык получился кривой и некрасивый, - это хуже, потому что отрицательно влияет на интеллектуальное становление будущих специалистов. Зато получили первый в истории диалоговый язык, и он же был первым широко распространенным **//интерпретационным//** языком. Компиляторы Фортрана, Алгола и других языков преобразовывали исходный текст программы в машинный код, который затем запускался на выполнение. Бэйсик работает иначе. Интерпретатор просматривает исходный текст строка за строкой и сам выполняет описанные в строке действия. Поскольку каждую строку приходится обрабатывать отдельно, выполнение всей программы происходит намного медленнее, чем выполнение машинного кода, зато отпадает необходимость в компиляции как отдельном этапе работы. Что лучше? Если бы что-то было лучше, все поступали бы только так. Большая и сложная программа, особенно если она обрабатывает большие массивы данных, гораздо эффективнее выполняется с участием компилятора. Но в ряде случаев, особенно при выполнении учебных заданий, выполнение программы "на лету", без компиляции, может быть даже быстрее. И еще одно преимущество интерпретатора: поскольку он не вырабатывает никакого машинного кода, а выполняет все действия сам, неправильно написанная прикладная программа ничего не может испортить. Впрочем, в те годы это преимущество никому не казалось существенным. \\+Чем жертвовали создатели Бэйсика и ради чего? Боевыми возможностями языка? Но поскольку язык для начального обучения, то это не считается. То, что язык получился кривой и некрасивый, - это хуже, потому что отрицательно влияет на интеллектуальное становление будущих специалистов. Уже знакомый нам Э. Дейкстра, известный как своими научными трудами, так и весьма резкими высказываниями в адрес оппонентов, писал про Бэйсик: "Этот язык калечит мозг, преподавание его - преступление" (хотя по другим источникам, это было написано про Кобол, но в данном случае это не суть: применительно к Бэйсику это по-любому справедливо). Зато получили первый в истории диалоговый язык, и он же был первым широко распространенным **//интерпретационным//** языком. Компиляторы Фортрана, Алгола и других языков преобразовывали исходный текст программы в машинный код, который затем запускался на выполнение. Бэйсик работает иначе. Интерпретатор просматривает исходный текст строка за строкой и сам выполняет описанные в строке действия. Поскольку каждую строку приходится обрабатывать отдельно, выполнение всей программы происходит намного медленнее, чем выполнение машинного кода, зато отпадает необходимость в компиляции как отдельном этапе работы. Что лучше? Если бы что-то было лучше, все поступали бы только так. Большая и сложная программа, особенно если она обрабатывает большие массивы данных, гораздо эффективнее выполняется с участием компилятора. Но в ряде случаев, особенно при выполнении учебных заданий, выполнение программы "на лету", без компиляции, может быть даже быстрее. И еще одно преимущество интерпретатора: поскольку он не вырабатывает никакого машинного кода, а выполняет все действия сам, неправильно написанная прикладная программа ничего не может испортить. Впрочем, в те годы это преимущество никому не казалось существенным. \\
 Поскольку интерпретатор не порождает машинного кода, автор программы, написанной на Бэйсике, может передавать ее другим лицам ТОЛЬКО в виде исходного кода. Это с какой-то стороны хорошо, а с какой-то плохо (это кому как!) - ну не бывает на свете идеальных инженерных решений. Безусловно хорошо то, что такая программа может быть запущена на любом компьютере, на котором имеется соответствующий интерпретатор. В какой-то мере интерпретатор Бэйсика (и любого другого языка из тех, что появились позже) может рассматриваться как виртуальная машина - доступная владельцу мелкого компьютера альтернатива СВМ больших мейнфреймов. В предыдущей главе мы отметили, что разработчики __древних__ компьютеров первым делом оснащали свои детища компилятором Фортрана - точно так же в __средние века__ разработчики 16-разрядных мини-ЭВМ (PDP-11, они же СМ-3, СМ-4) оснащали свои операционные системы интерпретатором Бэйсика, хотя для таких машин он уже должен был считаться устаревшим. А разработчики восьмиразрядных домашне-игровых компьютеров своей жизни без Бэйсика не мыслили, потому что написать для такой слабой машины мало-мальски приличный компилятор было весьма непростой задачей, стоимость которой свела бы к нулю всю привлекательность таких машинок. А на советских ПК обычно вообще никакого другого программного обеспечения не было. Более серьезные программисты не жаловали Бэйсик, считали его //суррогатной технологией//. Однако в средние века проблема суррогатных технологий не ощущалась так остро, поэтому к ней я надеюсь вернуться, когда наша история дойдет до нового времени. \\ Поскольку интерпретатор не порождает машинного кода, автор программы, написанной на Бэйсике, может передавать ее другим лицам ТОЛЬКО в виде исходного кода. Это с какой-то стороны хорошо, а с какой-то плохо (это кому как!) - ну не бывает на свете идеальных инженерных решений. Безусловно хорошо то, что такая программа может быть запущена на любом компьютере, на котором имеется соответствующий интерпретатор. В какой-то мере интерпретатор Бэйсика (и любого другого языка из тех, что появились позже) может рассматриваться как виртуальная машина - доступная владельцу мелкого компьютера альтернатива СВМ больших мейнфреймов. В предыдущей главе мы отметили, что разработчики __древних__ компьютеров первым делом оснащали свои детища компилятором Фортрана - точно так же в __средние века__ разработчики 16-разрядных мини-ЭВМ (PDP-11, они же СМ-3, СМ-4) оснащали свои операционные системы интерпретатором Бэйсика, хотя для таких машин он уже должен был считаться устаревшим. А разработчики восьмиразрядных домашне-игровых компьютеров своей жизни без Бэйсика не мыслили, потому что написать для такой слабой машины мало-мальски приличный компилятор было весьма непростой задачей, стоимость которой свела бы к нулю всю привлекательность таких машинок. А на советских ПК обычно вообще никакого другого программного обеспечения не было. Более серьезные программисты не жаловали Бэйсик, считали его //суррогатной технологией//. Однако в средние века проблема суррогатных технологий не ощущалась так остро, поэтому к ней я надеюсь вернуться, когда наша история дойдет до нового времени. \\
 На замену Бэйсику был придуман Фокал, но он не обещал ни чудес, ни революций и в итоге оказался мертворожденным. Несмотря на критику, которой Бэйсик подвергался с "молодости", он пережил несколько реинкарнаций. Однако будущего у него нет. \\ \\ На замену Бэйсику был придуман Фокал, но он не обещал ни чудес, ни революций и в итоге оказался мертворожденным. Несмотря на критику, которой Бэйсик подвергался с "молодости", он пережил несколько реинкарнаций. Однако будущего у него нет. \\ \\
Строка 353: Строка 371:
 Новое время небогато на революционные решения в области компьютерного "железа", поэтому в этой главе мы уделим основное внимание программной стороне дела. \\ Новое время небогато на революционные решения в области компьютерного "железа", поэтому в этой главе мы уделим основное внимание программной стороне дела. \\
 Мы говорим: "персональный компьютер", но что это были за компьютеры? Основная масса ПК в то время изготавливалась на Тайване и в Сингапуре по американской технологии. Некоторое количество компьютеров производилось в Европе, но их было немного, стоили они дороже, и в нашу страну почти не попадали. Торговых марок компьютеров было очень много, но архитектура и основные параметры были практически одинаковы: это PC/AT Мы говорим: "персональный компьютер", но что это были за компьютеры? Основная масса ПК в то время изготавливалась на Тайване и в Сингапуре по американской технологии. Некоторое количество компьютеров производилось в Европе, но их было немного, стоили они дороже, и в нашу страну почти не попадали. Торговых марок компьютеров было очень много, но архитектура и основные параметры были практически одинаковы: это PC/AT
-на 16-разрядных процессорах 80286 от фирмы "Интел" с тактовой частотой 12 МГц и емкостью оперативной памяти от 640 кБайт до 2 МБайт. Многие компьютеры комплектовались сопроцессорами, которые обеспечивали арифметику с плавающей точкой, с разрядностью 32 или 64, а некоторые - даже 80. Это мы говорим о годах с 1989 примерно по 1993, а позже стали появляться компьютеры на 32-разрядных процессорах "Интелили (реже"АМД" 80386 и 80486. Многие из них также имели арифметические сопроцессоры. Обычный компьютер представлял собой настольный системный блок в виде ящика размером примерно 40х40х10 см, к которому подключались клавиатура и монитор. Существовали портативные компьютеры - ноутбуки \\+на процессорах 80286 от фирмы "Интел" с тактовой частотой 12 МГц и емкостью оперативной памяти от 640 кБайт до 2 МБайт. Процессор 80286 (или по-простому 286) был следующим поколением после 8086, и соответственно компьютер PC/AT - следующим поколением после PC/XT. Многие компьютеры комплектовались сопроцессорами, которые обеспечивали арифметику с плавающей точкой, с разрядностью 32 или 64, а некоторые - даже 80, но сам процессор остался 16-разрядным. 80286 предлагал несколько новшеств: защищенный режим (который, правда, так и не нашел применения в тогдашних операционных системах) и возможность адресации бОльших пространств памяти по сравнению с предшественником. Это мы говорим о годах с 1989 примерно по 1993, а позже стали появляться компьютеры на 32-разрядных процессорах 80386 и 80486, которые очевидно являлись следующим поколением по отношению к 80286. Такие же процессоры, очень похожие на интеловские, выпускались также фирмой "АМД". Многие из них также имели арифметические сопроцессоры. Обычный компьютер представлял собой настольный системный блок в виде ящика размером примерно 40х40х10 см, к которому подключались клавиатура и монитор. Существовали портативные компьютеры - ноутбуки \\
 {{igor:istoria-notebook-1.jpg?400}} \\ {{igor:istoria-notebook-1.jpg?400}} \\
 (на этом фото экспонат Музея связи - "Тошиба Т1600", Япония, около 1990 г.), а также настольные компьютеры типа "моноблок" (в них вся компьютерная "начинка" встроена в корпус монитора, что характерно для продукции фирмы "Эппл"), но в нашей стране практически до конца XX века они были редкостью. \\ (на этом фото экспонат Музея связи - "Тошиба Т1600", Япония, около 1990 г.), а также настольные компьютеры типа "моноблок" (в них вся компьютерная "начинка" встроена в корпус монитора, что характерно для продукции фирмы "Эппл"), но в нашей стране практически до конца XX века они были редкостью. \\
-Процессор 80286 был прямым потомком Intel 8086, который мы рассмотрели в главе икропроцессоры, калькуляторы и персональные компьютеры". Этот процессор предлагал несколько новшеств: защищенный режим (который, правда, так и не нашел применения в тогдашних операционных системах) и возможность адресации бОльших пространств памяти по сравнению с предшественником. Сам же процессор остался шестнадцатиразрядным, а вот процессоры 80386 и 80486 были уже 32-разрядными. (такие процессоры, очень похожие на интеловские, выпускались также фирмой "АМД"). Эволюция процессоров шла по пути усложнения, что не могло не отразиться и на их цене, и на энергопотреблении. А последнее не могло не отразиться на температурном режиме процессора. Если 486-й процессор еще мог работать при естественном охлаждении, то следующее поколение - "Пентиум" - уже не обходилось без вентилятора. Усложнялось и программирование компьютеров, и все эти обстоятельства не давали покоя конкурентам "Интела" - они в противовес интеловской архитектуре разрабатывали свои процессоры, свободные от рассмотренных здесь недостатков. В те века уже был известен принцип RISC - Reduced Instruction Set Computer - компьютер с сокращенной системой команд. Фокус RISC отнюдь не сводится к экономии бумаги при печати мануала по системе команд: такие процессоры дешевле, потребляют меньше энергии и соответственно меньше греются, и при этом работают зачастую быстрее обычных процессоров со сложной системой команд. Однако во времена операционной системы ДОС в мире было наработано огромное количество программ для компьютеров на интеловских процессорах, и хотя ДОС давно уже выведена из эксплуатации, эти программы до нашего времени позволяют процессорам "Интел"/"АМД" не только преодолевать конкурентное давление, но и развиваться дальше. \\ +Как видим, персональный компьютер нового времени радикально отличается от средневекового. Если средневековый ПК был маленькой и дешевой машинкой с ограниченным кругом решаемых задач, то ПК нового времени приобрел все основные архитектурные черты, ранее свойственные мейнфреймам, а по быстродействию даже превосходил их. По цене же такой компьютер быстро сравнялся с ПК прежнего поколения. Неудивительно, что "эйтишки" быстро захватили весь компьютерный рынок, вытеснив с него как мейнфреймы, так и восьмиразрядные машины. Спираль истории завершила круг: деление компьютеров на большие и малыенаметившееся на исходе древней эпохи и достигшее апогея в средние века, сошло на нет: теперь все устройства, называемые компьютерами, были "большими", а малыми остались микропроцессоры и микроконтроллеры - наследники УМ-1-НХ. Термин "управляющая машина" постепенно вышел из употребления, уступив место термину "промышленная автоматика". Впрочем, это различие - не более чем просто терминология. \\ 
-Еще несколько слов про ДОС. Выше мы отмечали, что в древнюю эпоху как пользователь, так и программист общались с компьютером через посредника - оператора подготовки данных, а в средние века преобладающим способом общения стал диалог через видеотерминал. Суть диалогового режима в том, что человек набирает на клавиатуре команды в виде цифробуквенных последовательностей, иногда напоминающих обычные человеческие слова. Каждую команду нужно было "разжевать и в рот компьютеру положить". Новое время - новые порядки: ДОС предлагала //полноэкранный// режим взаимодействия человека с машиной. Теперь, чтобы запустить некоторую прикладную программу, оператор вызывал на экран меню и с помощью клавиш со стрелками (нам всем эти клавиши, конечно, хорошо знакомы) навести подсветку меню на название нужной программы. Эту операцию можно было делать руками, а мозг при этом был занят решаемой задачей и не отвлекался на мелочи - безусловно, такая работа более плодотворна и менее утомительна, чем диалог. \\ \\+С другой стороны, выражение "промышленная автоматика" не следует понимать буквально: машины, подразумеваемые под этим названием, работали не только на заводах. Железнодорожная СЦБ, корабельные БИУС, авионика - все это близкородственные отрасли. И микропроцессорная "начинка" тогдашних телевизоров, DVD-плееров, аппаратуры сотовой связи - это все, по большому счету, та же самая техника, в отличие от нынешней, которая гораздо ближе к "большим" компьютерам, чем к малым. \\ 
 +Однако вернемся к персональным компьютерам 90-х годов. Эволюция процессоров шла по пути усложнения, что не могло не отразиться и на их цене, и на энергопотреблении. А последнее не могло не отразиться на температурном режиме процессора. Если 486-й процессор еще мог работать при естественном охлаждении, то следующее поколение - "Пентиум" - уже не обходилось без вентилятора. Усложнялось и программирование компьютеров, и все эти обстоятельства не давали покоя конкурентам "Интела" - они в противовес интеловской архитектуре разрабатывали свои процессоры, свободные от рассмотренных здесь недостатков. В те века уже был известен принцип RISC - Reduced Instruction Set Computer - компьютер с сокращенной системой команд. Фокус RISC отнюдь не сводится к экономии бумаги при печати мануала по системе команд: такие процессоры дешевле, потребляют меньше энергии и соответственно меньше греются, и при этом работают зачастую быстрее обычных процессоров со сложной системой команд. Однако во времена операционной системы ДОС в мире было наработано огромное количество программ для компьютеров на интеловских процессорах, и хотя ДОС давно уже выведена из эксплуатации, эти программы до нашего времени позволяют процессорам "Интел"/"АМД" не только преодолевать конкурентное давление, но и развиваться дальше. \\ 
 +Еще несколько слов про ДОС. Выше мы отмечали, что в древнюю эпоху как пользователь, так и программист общались с компьютером через посредника - оператора подготовки данных, а в средние века преобладающим способом общения стал диалог через видеотерминал. Суть диалогового режима в том, что человек набирает на клавиатуре команды в виде цифробуквенных последовательностей, иногда напоминающих обычные человеческие слова. Каждую команду нужно было "разжевать и в рот компьютеру положить". Новое время - новые порядки: ДОС предлагала //полноэкранный// режим взаимодействия человека с машиной. Теперь, чтобы запустить некоторую прикладную программу, оператор вызывал на экран меню и с помощью клавиш со стрелками (нам всем эти клавиши, конечно, хорошо знакомы) навести подсветку меню на название нужной программы. Эту операцию можно было делать руками, а мозг при этом был занят решаемой задачей и не отвлекался на мелочи - безусловно, такая работа более плодотворна и менее утомительна, чем диалог. Итак, если в древние века пользователь общался с машиной в основном через посредничество оператора подготовки данных, а в средние века преобладал диалоговый режим, то новое компьютерное время - это эпоха общения пользователя с компьютером на языке меню, клавиш "Вверх-вниз" и манипуляторов типа мыши и джойстика. \\ \\
 ==== Компьютерные игры и игровые компьютеры в новое время ==== ==== Компьютерные игры и игровые компьютеры в новое время ====
 Уменьшение стоимости компьютеров и расширение их промышленного выпуска в разных странах (а не только в США, как раньше) привело к пересмотру взглядов на компьютерные игры. Выше, обсуждая компьютерные игры в средние века, я обещал рассказать о пересмотре незыблемых истин - настала пора выполнить это обещание. \\ Уменьшение стоимости компьютеров и расширение их промышленного выпуска в разных странах (а не только в США, как раньше) привело к пересмотру взглядов на компьютерные игры. Выше, обсуждая компьютерные игры в средние века, я обещал рассказать о пересмотре незыблемых истин - настала пора выполнить это обещание. \\
Строка 365: Строка 385:
 С появлением в конце XIX века механического кассового аппарата, арифмометра и табулятора торговля и бухгалтерия (короче: сфера бизнеса) получили высокую степень компьютеризации, достаточную для этих отраслей человеческой деятельности. После этого прошло без малого столетие, в течение которого в этой сфере не произошло сколько-нибудь значительных перемен. \\ С появлением в конце XIX века механического кассового аппарата, арифмометра и табулятора торговля и бухгалтерия (короче: сфера бизнеса) получили высокую степень компьютеризации, достаточную для этих отраслей человеческой деятельности. После этого прошло без малого столетие, в течение которого в этой сфере не произошло сколько-нибудь значительных перемен. \\
 Первые цифровые компьютеры были очень дороги - во много раз дороже табуляторов, не говоря уж про более простую технику. А значит, дорого было и решение задач на них. На решение важнейших научных и инженерных задач деньги находились, а вот с бухгалтерией и экономикой было сложнее. Грубо говоря, решение задачи не могло стоить больше, чем сама задача, иначе контора останется в убытке. Но по мере развития техники цена компьютеров снижалась, а их способность решать задачи того или иного класса повышалась - рано или поздно эти показатели должны были встретиться, и в 60-е годы (не в последнюю очередь с появлением языка Кобол) они встретились: использование компьютеров для решения бизнес-задач стало ВЫГОДНО. Это в капиталистических странах. В СССР положение было иное. \\ Первые цифровые компьютеры были очень дороги - во много раз дороже табуляторов, не говоря уж про более простую технику. А значит, дорого было и решение задач на них. На решение важнейших научных и инженерных задач деньги находились, а вот с бухгалтерией и экономикой было сложнее. Грубо говоря, решение задачи не могло стоить больше, чем сама задача, иначе контора останется в убытке. Но по мере развития техники цена компьютеров снижалась, а их способность решать задачи того или иного класса повышалась - рано или поздно эти показатели должны были встретиться, и в 60-е годы (не в последнюю очередь с появлением языка Кобол) они встретились: использование компьютеров для решения бизнес-задач стало ВЫГОДНО. Это в капиталистических странах. В СССР положение было иное. \\
-Проектировщики отечественных ЭВМ, разумеется, не могли не задумываться над применением своих машин для решения экономических и планово-управленческих задач, но испытывали противодействие со стороны всевозможного партийно-хозяйственного начальства. Сейчас нам снова придется вспоминать, в каком мире живем. В капиталистическом мире  +Проектировщики отечественных ЭВМ, разумеется, не могли не задумываться над применением своих машин для решения экономических и планово-управленческих задач, но испытывали противодействие со стороны всевозможного партийно-хозяйственного начальства. Сейчас нам снова придется вспоминать, в каком мире живем. В капиталистическом мире любой руководитель (завода, лаборатории, института, цеха, отдела...) сознает свою обязанность принимать экономически взвешенные решения. Иначе фирма понесет убытки, которые ощутит на своей шкуре каждый: от генерального директора до уборщицы. В социалистической экономике таких понятий, как прибыль или убытки, просто не было. Убыточность всегда и во всем была позором социализма, ее пытались прятать, но она органически свойственна социалистическому строю: прятать ее было как-то возможно, а устранить - нетС одной стороны, мы не можем требовать прибыльности от хозяйствующих субъектов, которые несвободны в принятии решений (а дать им свободу - значит отказаться от коренных принципов социализма). С другой стороны, директор прибыльного предприятия неизбежно начнет требовать такой свободы для себя. И с третьей стороны, сам факт существования прибыльных предприятий ставит под вопрос профессиональную компетентность тех партийных функционеров, которые "сверху" навязывают предприятиям экономические решения. Так что какие-либо экономические расчеты на компьютере были бессмысленны, потому что сегодня ты что-то сосчитаешь, а завтра придет ценное указание из райкома или обкома - и придется все делать как начальство велело (а начальству тоже совершенно непопутно, чтобы его решения сверяли с каким-то там компьютером)... \\
-любой руководитель (завода, лаборатории, института, цеха, отдела...) сознает свою обязанность принимать экономически взвешенные решения. Иначе фирма понесет убытки, которые ощутит на своей шкуре каждый: от генерального директора до уборщицы. В социалистической экономике таких понятий, как прибыль или убытки, просто не было. Убыточность всегда и во всем была позором социализма, ее пытались прятать, но она органически свойственна социалистическому строю, и устранить ее совсем было невозможно. Мы же не можем требовать прибыльности от хозяйствующих субъектов, которые несвободны в принятии решений (а дать им свободу - значит отказаться от коренных принципов социализма). Какие-либо экономические расчеты на компьютере были бессмысленны, потому что сегодня ты что-то сосчитаешь, а завтра придет ценное указание из райкома или  +
-обкома - и придется все делать как начальство велело (а начальству тоже совершенно непопутно, чтобы его решения сверяли с каким-то там компьютером)... \\+
 Сказанное не означает, что дорога к применению ЭВМ в экономике была перекрыта полностью и категорически. \\ Сказанное не означает, что дорога к применению ЭВМ в экономике была перекрыта полностью и категорически. \\
 Около 1990 года, с крушением социализма и поворотом России к капитализму, ситуация резко изменилась. Сошлись в одно время в одном месте несколько факторов. Во-первых, появление огромного количества частных фирм, на каждой из которых нужен был как минимум бухгалтер, а возможно и экономист. Во-вторых, усиление контроля государственных финансовых органов за этими фирмами и как следствие - усложнение отчетности. Профессии бухгалтера и экономиста внезапно стали престижными и неплохо оплачиваемыми. В-третьих, развал множества заводов и институтов привел к высвобождению тысяч ученых и инженеров, которые были вынуждены выбирать себе новую профессию, по большому счету, между охранником и бухгалтером: другого им не предлагали (да и сейчас не предлагают). И в четвертых, поступление на рынок дешевых персональных компьютеров разной степени  Около 1990 года, с крушением социализма и поворотом России к капитализму, ситуация резко изменилась. Сошлись в одно время в одном месте несколько факторов. Во-первых, появление огромного количества частных фирм, на каждой из которых нужен был как минимум бухгалтер, а возможно и экономист. Во-вторых, усиление контроля государственных финансовых органов за этими фирмами и как следствие - усложнение отчетности. Профессии бухгалтера и экономиста внезапно стали престижными и неплохо оплачиваемыми. В-третьих, развал множества заводов и институтов привел к высвобождению тысяч ученых и инженеров, которые были вынуждены выбирать себе новую профессию, по большому счету, между охранником и бухгалтером: другого им не предлагали (да и сейчас не предлагают). И в четвертых, поступление на рынок дешевых персональных компьютеров разной степени 
Строка 376: Строка 394:
 {{igor:istoria-el-kassy.jpg?800}} \\ \\ {{igor:istoria-el-kassy.jpg?800}} \\ \\
 ==== Компьютерные сети: локальные и глобальные ==== ==== Компьютерные сети: локальные и глобальные ====
-Идея объединить несколько компьютеров для совместной работы едва ли не так же стара, как и сами ЭВМ. Еще в 60-е годы сформировались понятия многомашинной вычислительной системы и вычислительной сети. Многомашинная система состоит из компьютеров, расположенных рядом, так что передача данных между ними не представляет проблемы. Сеть состоит из компьютеров, расположенных на значительном расстоянии друг от друга, так что приходится искать способы передачи большого количества данных на расстояние. Для обмена информацией между компьютерами в то время, которое мы сейчас рассматриваем, использовался исключительно электрический принцип, тот же, что в телефоне и телеграфе: носителем информации служили импульсы электрического напряжения и тока, распространяющиеся по металлическим проводам. Провода могут иметь различную конструкциюно всем им свойствен фундаментальный недостаток: информацию можно передавать быстро, но недалеко, а если нужно преодолевать большое  +Идея объединить несколько компьютеров для совместной работы едва ли не так же стара, как и сами ЭВМ. Еще в 60-е годы сформировались понятия многомашинной вычислительной системы и вычислительной сети. Многомашинная система состоит из компьютеров, расположенных рядом, так что передача данных между ними не представляет проблемы. Сеть состоит из компьютеров, расположенных на значительном удалении друг от друга, так что приходится искать способы передачи большого количества данных на расстояние. Для обмена информацией между компьютерами в то время, которое мы сейчас рассматриваем, использовался исключительно электрический принцип, тот же, что в телефоне и телеграфе: носителем информации служили импульсы электрического напряжения и тока, распространяющиеся по металлическим проводам (неизменяющийся во времени ток информации не несет). Этот принцип казался естественным, потому что задолго до появления первых компьютеров был освоен инженерами-связистами и промышленными предприятиями, выпускавшими провода и аппаратуру. Однако этому принципу свойствен фундаментальный недостаток: информацию можно передавать быстро, но недалеко, а если нужно преодолевать большое расстояние, то темп передачи данных придется ограничивать. Это ограничение, повторяю, фундаментально, т. е. его невозможно преодолеть: его можно только принять как факт и научиться с этим жить. И люди приняли и научились: были разработаны различные провода и приемопередающие приборы (адаптеры) для __локальных__ сетей с дальностью действия порядка сотен метров (что соответствует территории завода, университета и т. д.) и для __дальнемагистральных сетей__ с дальностью до тысяч километров. Однако до 1980-го года все эти разработки практически не выходили за пределы научных лабораторий. \\
-расстояние, то темп передачи данных придется ограничивать. Это ограничение, повторяю, фундаментально, т. е. его невозможно преодолеть: его можно только принять как факт и научиться с этим жить. И люди приняли и научились: были разработаны различные провода и приемопередающие приборы (адаптеры) для __локальных__ сетей с дальностью действия порядка сотен метров (что соответствует территории завода, университета и т. д.) и для __сетей дальнего действия__ (с дальностью до тысяч километров). Однако до 1980-го года все эти разработки практически не выходили за пределы научных лабораторий. \\+
 В 80-е годы XX века началось постепенное внедрение локальных сетей в финансовых учреждениях и крупнейших магазинах. На промышленных предприятиях дело обстояло несколько хуже. Дело даже не в том, что сетевые кабели и адаптеры были до поры-до времени дороговаты. Сеть для компьютеров - то же, что телефон для людей: она полезна тогда, когда один из субъектов готов отдать информацию, а другой - получить ее. Представим себе, как происходит обмен данными на заводе. Конструктор разрабатывает чертеж, помещает его в файл и передает технологу. Тот разрабатывает технологическую документацию, передает ее в цех и в плановое бюро. Там формируют требование на склад об отпуске необходимых для работы материалов. Со склада данные о том, что отпущено и что получено, передаются в бухгалтерию... \\ В 80-е годы XX века началось постепенное внедрение локальных сетей в финансовых учреждениях и крупнейших магазинах. На промышленных предприятиях дело обстояло несколько хуже. Дело даже не в том, что сетевые кабели и адаптеры были до поры-до времени дороговаты. Сеть для компьютеров - то же, что телефон для людей: она полезна тогда, когда один из субъектов готов отдать информацию, а другой - получить ее. Представим себе, как происходит обмен данными на заводе. Конструктор разрабатывает чертеж, помещает его в файл и передает технологу. Тот разрабатывает технологическую документацию, передает ее в цех и в плановое бюро. Там формируют требование на склад об отпуске необходимых для работы материалов. Со склада данные о том, что отпущено и что получено, передаются в бухгалтерию... \\
 Гладко было на бумаге, да забыли про овраги. Каждый из упомянутых специалистов работает со своими программами, а создатели этих программ вовсе не позаботились о том, чтобы данные можно было передавать куда-либо. Причем это не недоработка, это принципиальная позиция большинства разработчиков программного обеспечения. Людям, далеким от программирования, такая позиция кажется чуждой и дикой, но мало-мальски бывалые компьютерщики знают, что la vie именно c'est. \\ Гладко было на бумаге, да забыли про овраги. Каждый из упомянутых специалистов работает со своими программами, а создатели этих программ вовсе не позаботились о том, чтобы данные можно было передавать куда-либо. Причем это не недоработка, это принципиальная позиция большинства разработчиков программного обеспечения. Людям, далеким от программирования, такая позиция кажется чуждой и дикой, но мало-мальски бывалые компьютерщики знают, что la vie именно c'est. \\
-Основная технология локальных сетей с 90-х годов до нашего времени и в обозримом будущем - Ethernet (Р. Меткалф, фирма "Ксерокс", 1973-1976 гг). Первоначально предлагалось несколько компьютеров соединять одним длинным куском коаксиального кабеля, похожего на тот, что используется в телевизионных антенных "стояках" многоэтажных домов. Этот кабель довольно толстый, жесткий и неудобный в повседневном обращении ("толстый ethernet"). Потом стали использовать более тонкий кабель ("тонкий ethernet"), а в 90-е годы вместо коаксиального стали использовать более простой, дешевый и удобный кабель типа "витая пара" - практически такой, какой нам привычен сейчас. Благодаря этому Ethernet вытеснил другие широко использовавшиеся до этого технологии Token Ring и Arcnet. В России до этого локальные сети практически не строились, так что ни "толстый", ни "тонкий" ethernet, ни Arcnet у нас не имели сколько-нибудь заметного распространения. \\  +Основная технология локальных сетей с 90-х годов до нашего времени и в обозримом будущем - Ethernet (Р. Меткалф, фирма "Ксерокс", 1973-1976 гг). Первоначально предлагалось несколько компьютеров соединять одним длинным куском коаксиального кабеля, похожего на тот, что используется в телевизионных антенных "стояках" многоэтажных домов. Каждый новый компьютер добавлялся к сети без резки кабеля и без пайки: использовалось приспособление "вампир", которое, прокалывая изоляцию кабеля, контактировало с его жилой. Преимущество в том, что новый компьютер можно было подключить, не прерывая ни на секунду работу имеющейся сети. Однако этот кабель довольно толстый, жесткий и неудобен в повседневном обращении ("толстый ethernet"). Потом стали использовать более тонкий кабель ("тонкий ethernet"), а в 90-е годы на смену ему пришел более простой, дешевый и удобный кабель типа "витая пара" - практически такой, какой нам привычен сейчас. Монтаж такого кабеля требует определенной ловкости рук, но трудоемкость его минимальна, благодаря чему Ethernet вытеснил другие широко использовавшиеся до этого технологии Token Ring и Arcnet. В России до этого локальные сети практически не строились, так что ни "толстый", ни "тонкий" ethernet, ни Arcnet у нас не имели сколько-нибудь заметного распространения, и даже специалисты старшего поколения знают о них в лучшем случае понаслышке. \\  
-Мы коснулись темы локальных сетей, теперь посмотрим шире. Мы говорим о 90-х годах XX века - именно тогда начала формироваться мировая сетевая инфраструктура (попросту Сеть), которую иногда отождествляют с интернетом, но это неправильно. Сеть - это джунгли, в которых обитает достаточно разнообразная фауна. Интернет - только одна из форм сетевой жизни, просто он легче других поддается одомашниванию и поэтому известен широкому кругу людей. К тому же так получилось, что именно интернету Сеть в значительной мере обязана тем обликом, который она имеет сегодня. Но даже если бы интернет не был изобретен, Сеть все равно была бы полезна, и она должна была появиться - и она появилась. \\+Что же касается сетей дальнего действия, то в этой сфере единства технологий не было. Использовались кабели, достаточно близкие (или полностью идентичные) тем, которые применялись в междугородной телефонной связи: коаксиальные или четырехпроводные (пример последних - советский МКСАШП), аппаратуру же каждый производитель строил на свой вкус\\ 
 +Мы говорим о 90-х годах XX века - именно тогда начала формироваться мировая сетевая инфраструктура (попросту Сеть), которую иногда отождествляют с интернетом, но это неправильно. Сеть - это джунгли, в которых обитает достаточно разнообразная фауна. Интернет - только одна из форм сетевой жизни, просто он легче других поддается одомашниванию и поэтому известен широкому кругу людей. К тому же так получилось, что именно интернету Сеть в значительной мере обязана тем обликом, который она имеет сегодня. Но даже если бы интернет не был изобретен, Сеть все равно была бы полезна, и она должна была появиться - и она появилась. \\
 Рассмотрим, какие еще области применения имеет глобальная Сеть. \\ Рассмотрим, какие еще области применения имеет глобальная Сеть. \\
 * Дистанционное выполнение команд на компьютерах, в частности дистанционное обслуживание компьютеров системными администраторами. \\ * Дистанционное выполнение команд на компьютерах, в частности дистанционное обслуживание компьютеров системными администраторами. \\
Строка 433: Строка 451:
 Сопоставлять Windows и Linux можно еще очень долго, но я сейчас остановлюсь на том, что эти системы существуют и будут существовать в единстве и борьбе еще долго. Так появившиеся в середине XIX века пароходы в течение целого века сосуществовали и соперничали с парусниками, пока в их взаимоотношения не вмешался Дизель (это быль, и в ней намек - добрым молодцам и красным девицам урок). \\ Сопоставлять Windows и Linux можно еще очень долго, но я сейчас остановлюсь на том, что эти системы существуют и будут существовать в единстве и борьбе еще долго. Так появившиеся в середине XIX века пароходы в течение целого века сосуществовали и соперничали с парусниками, пока в их взаимоотношения не вмешался Дизель (это быль, и в ней намек - добрым молодцам и красным девицам урок). \\
 Заметим, что Linux - не единственный идейный наследник UNIX. Подобных операционных систем в 90-е годы и в начале XXI века было создано очень много - вероятно десятки. Но наибольшее распространение наряду с линуксами получили ОС семейства BSD от Университета Беркли (разрабатывалась в 1978-1994 гг., после чего ей на смену пришла бесплатная OpenBSD), и коммерческая MacOS от фирмы "Эппл". Все они - из США. Эти системы очень похожи: кто освоил MacOS, тот легко перейдет на Linux, и наоборот, и BSD аналогично. \\ Заметим, что Linux - не единственный идейный наследник UNIX. Подобных операционных систем в 90-е годы и в начале XXI века было создано очень много - вероятно десятки. Но наибольшее распространение наряду с линуксами получили ОС семейства BSD от Университета Беркли (разрабатывалась в 1978-1994 гг., после чего ей на смену пришла бесплатная OpenBSD), и коммерческая MacOS от фирмы "Эппл". Все они - из США. Эти системы очень похожи: кто освоил MacOS, тот легко перейдет на Linux, и наоборот, и BSD аналогично. \\
-Заканчивая разговор об операционных системах нового времени, я хотел бы обратить внимание читателей вот на какой аспект. Ни Столлман, ни Торвальдс не были бунтарями или новаторами. Они только хотели сделать программное обеспечение доступным для всех, и они это сделали, но не ставили перед собой амбициозных задач типа перелома исторических эпох - они шли в фарватере UNIX. Так идеология операционной системы, разрабатывавшаяся еще в 70-е годы XX века, оказалась законсервирована в новых изделиях. Чуть позже мы будем рассматривать новейшее компьютерное время, практически совпадающее с XXI веком, но в области операционных систем никакого новейшего времени мы не наблюдаем, и в главе "Новейшее компьютерное время" разговора об операционных системах не будет. \\ \\+Заканчивая разговор об операционных системах нового времени, я хотел бы обратить внимание читателей вот на какой аспект. Ни Столлман, ни Торвальдс не были бунтарями или новаторами. Они только хотели сделать программное обеспечение доступным для всех, и они это сделали, но не ставили перед собой амбициозных задач типа перелома исторических эпох - они шли в кильватере UNIX. Так идеология операционной системы, разрабатывавшаяся еще в 70-е годы XX века, оказалась законсервирована в новых изделиях. Чуть позже мы будем рассматривать новейшее компьютерное время, практически совпадающее с XXI веком, но в области операционных систем никакого новейшего времени мы не наблюдаем, и в главе "Новейшее компьютерное время" разговора об операционных системах не будет. \\ \\
 ==== Программирование в новое время ==== ==== Программирование в новое время ====
-=== Задачи ===+Рассматривая программирование в __древние__ времена, мы заметили, что компьютеры имели мало оперативной памяти, из-за чего программист должен был писать программу так, чтобы количество команд в ней было минимальным, а польза от каждой команды - максимальной. Это требование никак невозможно было обойти, поэтому мы назвали его категорическим императивом программирования. Компьютеры __средних веков__ имели гораздо больше оперативной памяти и прощали некоторую избыточность команд, но мечта программистов о райской жизни на земле не сбылась (в очередной раз, и можно не сомневаться - не в последний): средневековые задачи требовали программ большого объема. В __новое время__ компьютеров стало реально много, задач для них - тоже, так что объем работ для программистов еще прибавился. Как решить проблему нехватки рабочих рук в программировании? С наших сегодняшних позиций просматриваются следующие варианты: \\ 
 +* Разработка новых технологий, повышающих производительность труда программистов. Если продолжить нашу аналогию с паровозами, то на железнодорожном транспорте прогрессивной технологией является электрификация дорог: электровоз, по размерам и весу сходный с паровозом, может иметь бОльшую мощность, а значит везти бОльший груз... А что у нас? Похоже, что ничего. Вопрос о создании прогрессивных технологий на смену старому  
 +верному Алголу никогда и никем даже не ставился, а если вопрос не ставить, то и ответа на него ждать не приходится (еще раз акцентирую внимание на том, что язык Си прогрессивной технологией по отношению к Алголу не является). \\ 
 +* Наращивание количества учебных мест в институтах, готовящих программистов. Решение вроде бы очевидное, но есть подводный камень: сколько бы мы ни создавали учебных мест, на них будут приходить люди, при всем достаточном IQ не обладающие нужными деловыми качествами. Вложить в них профессиональные знания не проблема, а вот научить их самостоятельно разрабатывать качественный продукт - к этому институтские преподаватели не готовы в принципе, потому что настроены на науку, а не на воспитательную работу (в других профессиях, как рабочих, так и инженерных, деловые качества не играют такой важной роли, как у нас). \\ 
 +* Коммерческая (и некоммерческая) разработка программ: хотя пользователей очень много, среди них совсем немного таких, которые решают какие-то свои, совершенно индивидуальные задачи. У большинства пользователей задачи абсолютно типовые. \\ 
 +* "Программирование без программирования": создать сейчас такую программу, с помощью которой конечный пользователь впоследствии мог бы решать новые задачи, не прибегая к услугам программиста. \\ 
 +* Вовлечь в разработку программ людей, не обладающих высокой профессиональной подготовкой, путем разработки "суррогатных" технологий программирования, совершенно немыслимых в предыдущие исторические эпохи. \\ 
 +=== Задачи, языки и технологии программирования ===
 В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\ В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\
-(Извините, эта глава еще не дописана) \\ +**Программирование мелкокаменное и крупнокаменное**. В обиходе камнем называют процессор, а мелко - по-гречески микро, так что мелкокаменная техника - это микропроцессоры и микроконтроллеры, и мелкокаменное программирование соответственно. \\ 
-=== Языки и технологии программирования === +Мелкокаменное программирование в новое время - последний значительный оплот программистов-ассемблерщиков. При всех моих лично-субъективных симпатиях к ассемблеру, должен сказать, что применять его для микропроцессоров и микроконтроллеров - идея не очень удачная по ряду причин. Во-первых, мелкокаменная техника эксплуатируется в заводских цехах и иных подобных местах, и было бы идеально, если бы ее там обслуживали не программисты, а специалисты по соответствующему технологическому оборудованию - слесаря КИПиА (контрольно-измерительных приборов и автоматики) или даже просто электрики. Эти профессии относятся к рабочим, а не к инженерным. Изучение хотя бы основ программирования для этих людей достаточно обременительно (а ассемблер - это отнюдь не основы, это высший пилотаж!). Во-вторых, ассемблер - машинно-зависимый язык, так что в случае замены машины переложение старой программы на новую машину может оказаться весьма непростой задачей. Создать для  
-Про технологии программирования буквально пара слов. Новое время отмечено окончательным отказом как от древних технологий, основанных на потоковом вводе данных, так и от средневековых, ориентированных на использование телетайпов и пишущих машинок. На языках остановимся более подробно. \\ +киповцев и электриков специальный, притом машино-независимый, язык - идея очевидно вполне здравая... Но чтобы здравая идея получила столь же здравое воплощение в металл, нужны соответствующие научные исследования и опытно-конструкторские разработки, а вот тут у кого-то что-то не сконтачилось. Международная электротехническая комиссия (МЭК), вместо того чтобы __разрабатывать__ стандарт мелкокаменного языка (а разработка стандартов - ее непосредственная трудовая функция), слепила его из того, что было, а потом, как это обычно и бывает в жизни, "что было, то и полюбила": в стандарт вошли не один, а целых 5 языков (мы их рассмотрим чуть подробнее в главе "Микроконтроллеры"). Они появились стихийно в разное время в разных странах, каждый из них (при всей несомненной пользе) имел свои кривоватости и шероховатости, а когда 5 языков попытались объединить в нечто целое, эти шероховатости никуда не исчезли - наоборот, проявились еще сильнее. Неудивительно, что до конца нового времени МЭКовские языки так и не составили сколько-нибудь серьезной альтернативы ассемблеру. И даже в новейшую эпоху, когда все программирующее человечество уже послало ассемблеру последний прощальный поцелуй, МЭКовские языки так и не заняли преобладающего положения на рынке, уступив место языку Си. \\ 
-В главе "Компьютерные средние века" мы рассмотрели целый ряд языков и отметили, что с тех пор и до наших дней в этой области не произошло никаких революционных изменений. Сказанное не означает, что никаких событий вообще не произошло. \\+Про технологии крупнокаменного программирования буквально пара слов. Новое время отмечено окончательным отказом как от древних технологий, основанных на потоковом вводе данных, так и от средневековых, ориентированных на использование телетайпов и пишущих машинок. На языках остановимся более подробно, но чуть ниже. \\ 
 +**Программирование системное и прикладное**. В главе "Компьютерные средние века" мы рассмотрели целый ряд языков и отметили, что с тех пор и до наших дней в этой области не произошло революционных изменений. Сказанное не означает, что никаких событий вообще не произошло. \\
 В 90-е годы XX века имела место коренная ревизия языкового "арсенала". Если языком N1 в древности был Фортран, а в средние века Бэйсик, то к началу нового времени из всех ранее известных языков остался, по большому счету, только Си. Подчеркиваю: по большому счету, потому что Кобол, Ада и даже Фортран никуда не исчезали, просто их доля в общем объеме разработок программного обеспечения значительно уменьшилась, а ПЛ-1, Паскаль и много других языков практически вышли из употребления. \\ В 90-е годы XX века имела место коренная ревизия языкового "арсенала". Если языком N1 в древности был Фортран, а в средние века Бэйсик, то к началу нового времени из всех ранее известных языков остался, по большому счету, только Си. Подчеркиваю: по большому счету, потому что Кобол, Ада и даже Фортран никуда не исчезали, просто их доля в общем объеме разработок программного обеспечения значительно уменьшилась, а ПЛ-1, Паскаль и много других языков практически вышли из употребления. \\
 В чем секрет долгожительства тех или иных языков? \\ В чем секрет долгожительства тех или иных языков? \\
Строка 446: Строка 472:
 Точно так же, как автомобиль. Техническое устройство может жить долго или не очень в зависимости от того, насколько толково оно сделано, насколько полезно в жизни... Ну и, конечно, нельзя сбрасывать со счетов вопрос о том, в какие руки устройство попало. \\ Точно так же, как автомобиль. Техническое устройство может жить долго или не очень в зависимости от того, насколько толково оно сделано, насколько полезно в жизни... Ну и, конечно, нельзя сбрасывать со счетов вопрос о том, в какие руки устройство попало. \\
 Если отбросить мифы вроде тех, которые мы обсудили в главе "Компьютерные средние века", то получаем: Фортран - язык математиков и физиков, Ада - язык авиации и космонавтики, Си - язык разработчиков юниксоидных операционных систем. На этих языках написано программное обеспечение в миллионы или миллиарды строк. Переписывать это все на какой-то другой язык - колоссальная работа. Кто будет этим заниматься, и на какие шиши? Отсюда очевидный вывод: перечисленные языки будут существовать, как минимум, до тех пор, пока будут нужны написанные на них программы, то есть еще очень долго. А тюльпаны... Что тюльпаны? Как расцвели, так и завяли. \\ Если отбросить мифы вроде тех, которые мы обсудили в главе "Компьютерные средние века", то получаем: Фортран - язык математиков и физиков, Ада - язык авиации и космонавтики, Си - язык разработчиков юниксоидных операционных систем. На этих языках написано программное обеспечение в миллионы или миллиарды строк. Переписывать это все на какой-то другой язык - колоссальная работа. Кто будет этим заниматься, и на какие шиши? Отсюда очевидный вывод: перечисленные языки будут существовать, как минимум, до тех пор, пока будут нужны написанные на них программы, то есть еще очень долго. А тюльпаны... Что тюльпаны? Как расцвели, так и завяли. \\
-Процесс выращивания новых сортов тюльпанов на этом, однаконе остановился - он развернулся с новой силой. В этом практически никто не видит ничего плохого, многие даже радуются. На самом деле такое "разнообразие" влечет целый ряд негативных последствий. \\+В системном программировании в новое время язык ассемблера еще применялся, но его доля в общем объеме работы быстро сходит на нет. Используется он в основном там, где приходится плотно работать с "железом": при программировании драйверов, кодеков, прошивок. В остальных областях системного программирования первенство захватывает язык Си. Программисты нового времени его считают языком низкого уровня. \\ 
 +Что касается прикладного программированиято многообразие задач влечет за собой многообразие инструмента для их решения, в том числе и языков. Так что процесс выращивания новых сортов тюльпанов отнюдь не остановился - он развернулся с новой силой. В этом практически никто не видит ничего плохого, многие даже радуются. На самом деле такое "разнообразие" влечет целый ряд негативных последствий. \\
 Во-первых, оно затрудняет взаимопонимание между программистами, а значит и сотрудничество. \\ Во-первых, оно затрудняет взаимопонимание между программистами, а значит и сотрудничество. \\
 Во-вторых, в мире, где уйма нерешенных задач, люди тратят тысячи человеко-лет на изобретение языков, от которых ждут непонятно каких чудес. А тем временем другие люди тратят нерационально (а то и вовсе теряют) миллионы человеко-лет, пытаясь применить какой-нибудь новомодный язык для решения задач, для которых он, как ПОТОМ выясняется, совершенно не предназначен и не приспособлен. \\ Во-вторых, в мире, где уйма нерешенных задач, люди тратят тысячи человеко-лет на изобретение языков, от которых ждут непонятно каких чудес. А тем временем другие люди тратят нерационально (а то и вовсе теряют) миллионы человеко-лет, пытаясь применить какой-нибудь новомодный язык для решения задач, для которых он, как ПОТОМ выясняется, совершенно не предназначен и не приспособлен. \\
 +Впрочем, язык Си и в прикладном программировании используется достаточно широко. \\
 +=== *** ===
 В новое время, да и сейчас, обычна такая ситуация, когда программист приходит устраиваться на работу, и ему говорят: нам требуется 5-летний опыт работы на таком-то языке... А потом оказывается, что этот язык изобретен 2 года назад! Спросите такого работодателя, почему он выбрал именно этот язык - и он с апломбом в голосе ответит: "у нас передовая фирма, мы хотим быть на острие технического прогресса!" (это очень похоже на то, как мои одноклассники, вступая в Комсомол, писали заявления по типовой форме: "хочу быть в передовом отряде советской молодежи"). За этой фразой скрывается нежелание и неспособность просчитывать экономическую эффективность принимаемых управленческих решений. Совершенно ясно, что работа на такой фирме ничего, кроме убытков, не принесет. \\ В новое время, да и сейчас, обычна такая ситуация, когда программист приходит устраиваться на работу, и ему говорят: нам требуется 5-летний опыт работы на таком-то языке... А потом оказывается, что этот язык изобретен 2 года назад! Спросите такого работодателя, почему он выбрал именно этот язык - и он с апломбом в голосе ответит: "у нас передовая фирма, мы хотим быть на острие технического прогресса!" (это очень похоже на то, как мои одноклассники, вступая в Комсомол, писали заявления по типовой форме: "хочу быть в передовом отряде советской молодежи"). За этой фразой скрывается нежелание и неспособность просчитывать экономическую эффективность принимаемых управленческих решений. Совершенно ясно, что работа на такой фирме ничего, кроме убытков, не принесет. \\
 Очень интересно читать в интернете прогнозы о том, сколько будет языков и сколько программистов через энное количество лет. В том, что количество языков будет расти, все предсказатели абсолютно единодушны. А вот в прогнозах количества программистов единодушия нет и в помине. Что же получается? Скоро каждый программист будет работать на своем языке, притом не на одном??? \\ Очень интересно читать в интернете прогнозы о том, сколько будет языков и сколько программистов через энное количество лет. В том, что количество языков будет расти, все предсказатели абсолютно единодушны. А вот в прогнозах количества программистов единодушия нет и в помине. Что же получается? Скоро каждый программист будет работать на своем языке, притом не на одном??? \\
Строка 458: Строка 487:
 Чтобы понять, можно ли по-другому, еще чуть-чуть углубимся в тему, как мы бы сейчас сказали, процедурно-ориентированного программирования. \\ Чтобы понять, можно ли по-другому, еще чуть-чуть углубимся в тему, как мы бы сейчас сказали, процедурно-ориентированного программирования. \\
 Традиционное, или процедурно-ориентированное, программирование привычно и естественно, потому что так запрограммирован человеческий мозг. Мозг абсолютно универсален: он способен находить, пусть не сразу, решение любой новой задачи. Как бы ни был написан исходный текст программы на языке высокого уровня, в конечном счете он будет скомпилирован в машинный код, написанный в процедурно-ориентированной парадигме. Если этот код декомпилировать, то получим текст программы, также написанный в процедурно-ориентированной парадигме. Или скажем иначе: какова бы ни была задача, она либо может быть запрограммирована в процедурно-ориентированном стиле, либо не может быть запрограммирована совсем. \\ Традиционное, или процедурно-ориентированное, программирование привычно и естественно, потому что так запрограммирован человеческий мозг. Мозг абсолютно универсален: он способен находить, пусть не сразу, решение любой новой задачи. Как бы ни был написан исходный текст программы на языке высокого уровня, в конечном счете он будет скомпилирован в машинный код, написанный в процедурно-ориентированной парадигме. Если этот код декомпилировать, то получим текст программы, также написанный в процедурно-ориентированной парадигме. Или скажем иначе: какова бы ни была задача, она либо может быть запрограммирована в процедурно-ориентированном стиле, либо не может быть запрограммирована совсем. \\
-Традиционное программирование описывает действия исходя из того, что "если все правильно делать, то все правильно и получится". **//Функционально-ориентированное//** программирование исходит из того, что смысл любых действий - в выдаче того или иного __результата__, который зависит от имеющихся исходных данных. А зависимость на языке математики - функция. Если она сложная, то ее раскладывают на множество более простых. Так образуется исходный текст программы, который описывает, как промежуточные результаты вычислений зависят друг от друга. \\+Традиционное программирование описывает __действия__ исходя из того, что "если все правильно делать, то все правильно и получится". **//Функционально-ориентированное//** программирование исходит из того, что смысл любых действий - в выдаче того или иного __результата__, который зависит от имеющихся исходных данных. А зависимость на языке математики - функция. Если она сложная, то ее раскладывают на множество более простых. Так образуется исходный текст программы, который описывает, как промежуточные результаты вычислений зависят друг от друга. \\
 Представим, что конечный результат решения задачи описывается функцией f<sub>0</sub>(x,y), где x и y образуются как результаты других функций: x=f<sub>1</sub>(a), y=f<sub>2</sub>(b), где a и b - исходные данные. Функции f<sub>1</sub> и f<sub>2</sub> взамно независимы, и их тексты в программе могут быть расположены произвольным образом. И выполняться они могут в любом порядке: сначала f<sub>1</sub>, затем f<sub>2</sub> или наоборот. Что это нам дает? Как будто ничего, да? Фокус начинается с того, что они могут вычисляться __одновременно__. А вот это уже очень важно и интересно, если у нас многоядерный компьютер. \\ Представим, что конечный результат решения задачи описывается функцией f<sub>0</sub>(x,y), где x и y образуются как результаты других функций: x=f<sub>1</sub>(a), y=f<sub>2</sub>(b), где a и b - исходные данные. Функции f<sub>1</sub> и f<sub>2</sub> взамно независимы, и их тексты в программе могут быть расположены произвольным образом. И выполняться они могут в любом порядке: сначала f<sub>1</sub>, затем f<sub>2</sub> или наоборот. Что это нам дает? Как будто ничего, да? Фокус начинается с того, что они могут вычисляться __одновременно__. А вот это уже очень важно и интересно, если у нас многоядерный компьютер. \\
 Функционально-ориентированное программирование привлекательно для решения достаточно широкого множества задач, но его универсальность - вопрос, как минимум, дискуссионный. В теории все хорошо, но жива теория, а древо жизни пышно увядает. Попробуйте запрограммировать в таком стиле задачу упорядочения большого массива.  Функционально-ориентированное программирование привлекательно для решения достаточно широкого множества задач, но его универсальность - вопрос, как минимум, дискуссионный. В теории все хорошо, но жива теория, а древо жизни пышно увядает. Попробуйте запрограммировать в таком стиле задачу упорядочения большого массива. 
Строка 472: Строка 501:
 Программный инструментарий для обслуживания БД называют системой управления базой данных - СУБД. \\ Программный инструментарий для обслуживания БД называют системой управления базой данных - СУБД. \\
 Первые реляционные СУБД появились еще в 60-е годы, но до поры-до времени они оставались явлением локального порядка, не стоящим того, чтобы посвящать им отдельную главу. В средние века, с появлением множества задач из области Большой Экономики, люди начали понимать, что СУБД, и в первую очередь реляционные СУБД, являются весьма удачным инструментом для решения большинства таких задач. В 1980 г. фирма "Эштон-Тейт" выпустила программу с незатейливым названием DBase II. Затем появились DBase III (1986 г.), DBase IV - по большому счету это были усовершенствованные версии того же продукта. \\ Первые реляционные СУБД появились еще в 60-е годы, но до поры-до времени они оставались явлением локального порядка, не стоящим того, чтобы посвящать им отдельную главу. В средние века, с появлением множества задач из области Большой Экономики, люди начали понимать, что СУБД, и в первую очередь реляционные СУБД, являются весьма удачным инструментом для решения большинства таких задач. В 1980 г. фирма "Эштон-Тейт" выпустила программу с незатейливым названием DBase II. Затем появились DBase III (1986 г.), DBase IV - по большому счету это были усовершенствованные версии того же продукта. \\
-Программы семейства DBase строились по принципй швейцарского армейского ножа: такая программа содержала набор инструментов для решения достаточно широкого множества типовых задач, так или иначе связанных с реляционными базами данных. Базу можно было просматривать, редактировать, добавлять в нее новые записи, делать выборки, выводить их на экран и печать в виде документов установленного образца... Все это делалось с помощью цифробуквенных команд, близких к тем, которые использовались в операционной системы ДОС. Для пользователя, который с ДОС не дружил, был придуман "Ассистент": вместо того, чтобы вводить команду буквами, можно было выбрать нужные действия из меню. При этом в нижней строке экрана отображалась соответствующая команда в текстовом виде, т. е. пользователь мог формировать команду с помощью "Ассистента" и одновременно изучать ее текстовое представление. Все команды, поданные пользователем, регистрировались в "Истории команд". Историю можно было просмотреть и нужную команду выполнить еще раз, возможно с какими-то вариациями. Отсюда вытекает следующая очевидная идея: выбрать не одну, а несколько команд, записать их в отдельный файл - //скрипт// - и потом запускать скрипт на выполнение. Ну и следующая идея: скрипт скомпилировать и использовать в дальнейшем как обычную программу. \\+Программы семейства DBase строились по принципу швейцарского армейского ножа: такая программа содержала набор инструментов для решения достаточно широкого множества типовых задач, так или иначе связанных с реляционными базами данных. Базу можно было просматривать, редактировать, добавлять в нее новые записи, делать выборки, выводить их на экран и печать в виде документов установленного образца... Все это делалось с помощью цифробуквенных команд, близких к тем, которые использовались в операционной системы ДОС. Для пользователя, который с ДОС не дружил, был придуман "Ассистент": вместо того, чтобы вводить команду буквами, можно было выбрать нужные действия из меню. При этом в нижней строке экрана отображалась соответствующая команда в текстовом виде, т. е. пользователь мог формировать команду с помощью "Ассистента" и одновременно изучать ее текстовое представление. Все команды, поданные пользователем, регистрировались в "Истории команд". Историю можно было просмотреть и нужную команду выполнить еще раз, возможно с какими-то вариациями. Отсюда вытекает следующая очевидная идея: выбрать не одну, а несколько команд, записать их в отдельный файл - //скрипт// - и потом запускать скрипт на выполнение. Ну и следующая идея: скрипт скомпилировать и использовать в дальнейшем как обычную программу. \\
 Важно, что, имея в руках такой инструмент, задачи мог решать непосредственно тот человек, который в решении заинтересован, - //конечный пользователь//. Он по определению не программист, так что о его программистской квалификации вопрос вообще не ставится. С другой стороны, пользователь, обладающий соответствующими способностями, мог такую квалификацию нарабатывать "без отрыва от производства". Ясно, что программы такого типа оказались чрезвычайно удачны, и популярность, которую они приобрели в 90-е годы, была вполне заслуженной. \\ Важно, что, имея в руках такой инструмент, задачи мог решать непосредственно тот человек, который в решении заинтересован, - //конечный пользователь//. Он по определению не программист, так что о его программистской квалификации вопрос вообще не ставится. С другой стороны, пользователь, обладающий соответствующими способностями, мог такую квалификацию нарабатывать "без отрыва от производства". Ясно, что программы такого типа оказались чрезвычайно удачны, и популярность, которую они приобрели в 90-е годы, была вполне заслуженной. \\
-По образцу программ семейства DBase фирма "Фокс Софтвэр" выпустила несколько версий программы FoxPro, а фирма "Нантукет Корпорейшн" в 1985 г. - интерпретатор-компилятор языка, практически совпадающего с языком семейства DBase, под маркой "Клиппер". В 90-е годы языки семейства DBase/FoxPro/Clipper приобрели все черты, присущие "взрослым" языкам программирования. Их век оказался недолог (на рубеже нового и новейшего времени все они постепенно вышли из употребления), но, с учетом того что за предшествующие 20-30 лет в области языков не было практически никакого прогресса, эти языки успели оказать большое влияние на всю эволюцию программирования, так что в значительной мере благодаря им программный мир приобрел тот облик, который нам привычен сейчас. \\ \\+По образцу программ семейства DBase фирма "Фокс Софтвэр" выпустила несколько версий программы FoxPro, а фирма "Нантукет Корпорейшн" в 1985 г. - интерпретатор-компилятор языка, практически совпадающего с языком семейства DBase, под маркой "Клиппер". В 90-е годы языки семейства DBase/FoxPro/Clipper приобрели все черты, присущие "взрослым" языкам программирования. Их век оказался недолог (на рубеже нового и новейшего времени все они постепенно вышли из употребления), но, с учетом того что за предшествующие 20-30 лет в области языков не было практически никакого прогресса, эти языки успели оказать большое влияние на всю эволюцию программирования, так что в значительной мере благодаря им программный мир приобрел тот облик, который нам привычен сейчас. \\ 
 +=== Суррогатные технологии в программировании === 
 +История учит, что новые технические решения в мире крайне редко появляются просто так, с бухты-барахты. Если какая-то технология появилась и нам кажется, что она никому не нужна, - скорее всего, мы либо чего-то не знаем, либо не придали должного значения. Смысл суррогатных технологий в том, чтобы вовлечь в программирование людей, не обладающих достаточно высокой квалификацией. \\ 
 +Можно ли назвать суррогатной технологией программные продукты семейства DBase/FoxPro/Clipper, которые мы рассмотрели чуть выше? Если строго следовать букве определения, то нет: ведь они имели первоначальную цель вовлечь в программирование не низкоквалифицированных программистов, а конечных пользователей, которые имеют тот или иной уровень квалификации в своей предметной области, а программистами не являются. \\ 
 +Сейчас хочу заострить внимание на тонком моменте. Та или иная технология может с самого начала создаваться как суррогатная, но так бывает не всегда. В качестве примера противоположной ситуации рассмотрим старый верный Бэйсик. Первоначально он создавался как инструмент для начального обучения программированию, и в этом качестве он был вполне адекватен как уровню развития "железа" 60-х годов XX века, так и тем задачам, которые на него возлагались. Но в 80-е годы даже в советских учебных заведениях уже были машины СМ-4 с видеотерминалами. Такие машины спокойно "переваривали" любой настоящий язык программирования, такой как Алгол, Паскаль или даже Си. Проблема в том, что наши преподы про Алгол и Паскаль знали в лучшем случае понаслышке, а про Си не знали совсем (я свое первое руководство по языку Си прочитал уже после окончания института). И системные администраторы, обслуживавшие эти машины, - аналогично. Учить студентов серьезному программированию от них никто не требовал, вот они и ехали по накатанной колее. Иначе говоря, Бэйсик стал суррогатной технологией постольку, поскольку его стали навязывать людям, которые в нем не нуждались и имели все необходимое для использования более серьезных технологий. Так было у нас, но похоже, что в США ситуация была ненамного лучше, потому что фирмы "Микрософт" и "Борланд" в 80-е годы выпустили на рынок интегрированные среды разработки программ (QuickBasic, он же QBasic, и TurboBasic соответственно) на основе языка Бэйсик. Впрочем, эти продукты были все-таки скорее учебными. Однако даже с натяжкой нельзя назвать учебным инструмент, который та же фирма "Микрософт" уже в 90-е годы внедрила в свой пакет Microsoft Office. Называлась эта штука Visual Basic. Он-то и стал первой по-настоящему суррогатной технологией, получившей большой рынок. \\ 
 +Чтобы оценить это явление по шкале "хорошо - плохо", мы должны принять во внимание два постулата. Во-первых, в нашей жизни бывают ситуации, когда суррогат реально необходим. И ленинградский хлеб из опилок и отрубей с огнем и кровью пополам был нужен... в свое время и в своем месте. Но потом, когда блокада была прорвана и враг отступил от города, от суррогата нужно было отказываться - и хлеб начали выпекать из пшеницы, как, собственно, и принято у нормальных людей. \\ 
 +Во-вторых, в каждой работе, в каждой профессии есть Мастера, а есть халтурщики-шабашники. И есть, как правило, некая средняя прослойка, причем чаще всего она - самая многочисленная. Для чего вообще нужны Мастера, ведь их работа стоит обычно дороже, чем работа шабашников, и даже середнячков? Есть на свете экономика. Пресволочнейшая штуковина: существует - и ни в зуб ногой! (слова В. Маяковского, первоначально сказанные про поэзию, ну а я приведу их здесь). В экономике есть моменты, которые на первый взгляд кажутся чудом или хуже того - абсурдом. Один из таких моментов как раз и состоит в том, что, хотя Мастер непосредственно за свою работу просит большую плату, конечный результат его работы приносит бОльшую прибыль (напоминаю: прибыль - цель и смысл любой финансово-хозяйственной деятельности, осуществляемой людьми). Как такое может быть? - Элементарно: Мастер на то и Мастер, что он знает, как сделать свое дело с максимально прибыльным результатом, а работники более низкого уровня либо этого не знают, либо сознательно пренебрегают. Но большинство заказчиков (неважно, о какой работе речь - о работе плотника, допустим, или сантехника, или программиста) хочет подешевле... "А Балда стоит и приговаривает с укоризной: не гонялся бы ты, поп, за дешевизной" (это уже не Маяковский, это Пушкин). Ничем другим Мастера свое существование оправдать не могут, но ничего другого им и не требуется. Но если это так, то что же получается: работа халтурщика всегда влечет за собой убытки для заказчика? С другой стороны, умные люди говорят: "Я не настолько богат, чтобы покупать дешевые вещи". Резюмируем: суррогатные технологии нужны для того, чтобы вовлечь в программирование низкоквалифицированных работников ценой (а) увеличения сроков и трудоемкости работ, (б) снижением качества конечного продукта и (в) снижением прибыли Заказчика при эксплуатации этого продукта. Плохо в этих технологиях не то, что они вообще существуют, а то, что их роль и место в мировом процессе разработки ПО неадекватно оценивается большинством населения. Кто-то считает их передовыми и навязывает их программистам нормального уровня, которые обладают необходимыми знаниями и качествами для работы по нормальным технологиям. \\ 
 +В свете того, что мы только что обсудили, пробежимся еще раз по эволюции языков программирования. В самом древнем языке - Фортране - использовался //статический// принцип распределения памяти: каждая переменная, участвующая в расчетах, занимала свою, раз и навсегда отведенную ей ячейку памяти. Даже если на каком-то этапе вычислений переменная оказывалась не нужна, ячейка оставалась закреплена за ней и ни для каких иных целей не использовалась. С точки зрения чистой экономики это выглядит не очень рационально, но реальная жизнь и реальная техника не всегда укладывается в рамки чистой экономики. \\ 
 +В языке следующего поколения - Алголе - каждая переменная описывалась в той или иной структуре (а вся программа - тоже структура!), так что две переменных, принадлежащих непересекающимся структурам, могли жить в одной ячейке памяти. Принципиально важно то, что Алгол, как и Фортран, - компиляционный язык, и назначение ячеек памяти переменным решается на этапе компиляции, так что при каждом последующем выполнении программы каждая переменная размещалась всегда в одной и той же ячейке: отдельной или "коммунальной", но всегда в одной и той же. Это //квазистатический// принцип распределенмя памяти - оригинальное и интересное техническое решение, однако большой экономии памяти оно в реальной жизни не обеспечило, и в языках-потомках Алгола оно не было повторено. \\ 
 +В 60-е годы был создан Бэйсик - в нем та или иная переменная "образуется" по мере присвоения ей значения. Но, однажды образовавшись, переменная занимала отведенную ей ячейку до окончания работы программы. Таким образом, единственный шанс сэкономить память был в том, что некоторая переменная может вообще не образоваться. Очевидно, в реальной жизни такое бывает нечасто. Если программа используется многократно, то при каждом запуске программы та или иная переменная может, вообще говоря, "вселяться" в разные ячейки памяти - это //динамический// принцип распределения памяти. \\ 
 +Языки семейства DBase/FoxPro/Clipper, будучи следующим после Бэйсика поколением интерпретационных языков, унаследовали от него принцип расперделения памяти, но в них был введен оператор dispose, позволяющий программисту явно указывать, какие переменные больше не нужны, с тем чтобы освободить ячейки для чего-то другого. Проблема в том, что программист может этот оператор использовать, а может и не использовать, и в последнем случае никакой экономии памяти не получится. Очевидно, что разработчики этих языков рассчитывали на то, что имеют дело с достаточно аккуратным программистом, каковых на свете не так уж много. В язык нынешнего поколения - Python - внедрен "автоматический сборщик мусора". Это процедура, которая после выполнения каждой команды просматривает всю нижележащую часть программы на предмет того, что вдруг какие-то переменные становятся не нужны. Эта процедура занимает львиную долю машинного времени, используемого для работы программы. А ради чего все это? - Исключительно ради того, чтобы программист мог не задумываться об освобождении памяти. А много ли раздумий нужно нормальному программисту, чтобы вовремя освобождать память? Ясно, что Python - суррогатная технология, облегчающая (на копейки) жизнь программисту ценой многократного увеличения времени выполнения программы. На самом деле все современные интерпретационные языки в той или иной мере этим грешат, и отсюда у меня к вам всем вопрос: так ли в самом деле необходим Питон программисту, знающему хотя бы Си? \\ 
 +Суррогатные технологии - примета нового и особенно новейшего компьютерного времени, поскольку стали возможны с появлением многочисленных компьютеров с большим быстродействием и большой емкостью оперативной памяти. В древности и в средние века, пока вычислительные ресурсы были дефицитом, такие технологии не имели шансов на признание. \\ \\
 ==== Еще немного воспоминаний и размышлений ==== ==== Еще немного воспоминаний и размышлений ====
 В предыдущей главе я рассказывал о практических и лабораторных работах в институте и размышлял о том, какого уровня специалистов этот институт мог выпускать. Теперь скажу так: уровень специалистов соответствовал тому уровню трудоустройства, который экономика позднего развитого социализма ("застоя") могла нам предложить. \\ В предыдущей главе я рассказывал о практических и лабораторных работах в институте и размышлял о том, какого уровня специалистов этот институт мог выпускать. Теперь скажу так: уровень специалистов соответствовал тому уровню трудоустройства, который экономика позднего развитого социализма ("застоя") могла нам предложить. \\
Строка 483: Строка 523:
 "Изот" - это практически американский VAX (разработка середины 1970-х годов) - машина средневековая, стало быть к 1989 году безнадежно устаревшая, а "эйтишка" - стопроцентный символ нового компьютерного времени. Ничего удивительного, что эти невзрачные "коробки из-под ботинок" опережали "Изот" во всем. Я же хочу акцентировать внимание на том, что они могли неограниченно долго работать, не нуждаясь ни в каком уходе и присмотре. Вполне логично, что все вычислительные работы были перенесены на них, а "Изот" так и простоял 4 года ни разу не включенный, пока не отправился в металлолом. \\ "Изот" - это практически американский VAX (разработка середины 1970-х годов) - машина средневековая, стало быть к 1989 году безнадежно устаревшая, а "эйтишка" - стопроцентный символ нового компьютерного времени. Ничего удивительного, что эти невзрачные "коробки из-под ботинок" опережали "Изот" во всем. Я же хочу акцентировать внимание на том, что они могли неограниченно долго работать, не нуждаясь ни в каком уходе и присмотре. Вполне логично, что все вычислительные работы были перенесены на них, а "Изот" так и простоял 4 года ни разу не включенный, пока не отправился в металлолом. \\
 Был у нас в коллективе старенький Виктор Михайлович. Увидев "персоналку", он с энтузиазмом приступил к изучению программирования, очень быстро его освоил и стал выполнять свои расчеты на компьютере. Жил он так: вставал в 7.55, не позавтракав, бежал на работу, набирал команду на клавиатуре, спокойно шел домой досыпать и завтракать, а перед обедом снова появлялся на работе - там как раз начинали вырисовываться результаты расчета (слово "вырисовывались" я употребляю в буквальном смысле - они отображались графически, что для нас всех было новостью). Ну а что такого? Солдат спит - служба идет! \\  Был у нас в коллективе старенький Виктор Михайлович. Увидев "персоналку", он с энтузиазмом приступил к изучению программирования, очень быстро его освоил и стал выполнять свои расчеты на компьютере. Жил он так: вставал в 7.55, не позавтракав, бежал на работу, набирал команду на клавиатуре, спокойно шел домой досыпать и завтракать, а перед обедом снова появлялся на работе - там как раз начинали вырисовываться результаты расчета (слово "вырисовывались" я употребляю в буквальном смысле - они отображались графически, что для нас всех было новостью). Ну а что такого? Солдат спит - служба идет! \\ 
-На чем Михалыч программировал? На Бэйсике - это я помню отчетливо. К сожалению, в данной ситуации это нам ничего не говорит, потому что на "коробках из-под ботинок" было аж целых три системы программирования, использовавших язык Бэйсик: GW-Basic, QBasic от фирмы "Микрософт" и TurboBasic от фирмы "Борланд", и все они имели те или иные различия, как в пользовательском интерфейсе, так и в языке. Если GW-Basic еще имел какие-то параллели с "Рафосом" (хотя тоже с поправками на технические возможности персональных компьютеров и ДОС), то две других системы уже были настоящими интегрированными средами разработки программ (Integrated Development Environment - IDE). Выбор для них языка Бэйсик был явно не очень удачным и должен рассматриваться как дань традиции (ведь все эти программные инструменты создавались во второй половине 80-х годов, когда Бэйсик был языком N1 и лишь немногие это оспаривали). В те же годы фирма "Борланд" выпустила TurboPascal - практически ту же самую IDE, перенастроенную на более перспективный для того времени язык Паскаль. Я чуть позже опробовал TurboBasic, очень быстро понял, что это не мой уровень, и перешел на TurboPascal, с которым не расставался несколько лет, пока не открыл для себя TurboAssembler той же фирмы. \\ \\+На чем Михалыч программировал? На Бэйсике - это я помню отчетливо. К сожалению, в данной ситуации это нам ничего не говорит, потому что на "коробках из-под ботинок" было множество систем программирования, использовавших язык Бэйсик: GW-Basic, QuickBasic и QBasic от фирмы "Микрософт"TurboBasic от фирмы "Борланд"... Все они имели те или иные различия, как в пользовательском интерфейсе, так и в языке. Если GW-Basic еще имел какие-то параллели с "Рафосом" (хотя тоже с поправками на технические возможности персональных компьютеров и ДОС), то другие системы уже были настоящими интегрированными средами разработки программ (Integrated Development Environment - IDE). Выбор для них языка Бэйсик был явно не очень удачным и должен рассматриваться как дань традиции (ведь все эти программные инструменты создавались во второй половине 80-х годов, когда Бэйсик был языком N1 и лишь немногие это оспаривали). В те же годы фирма "Борланд" выпустила TurboPascal - практически ту же самую IDE, перенастроенную на более перспективный для того времени язык Паскаль. Я чуть позже опробовал TurboBasic, очень быстро понял, что это не мой уровень, и перешел на TurboPascal, с которым не расставался несколько лет, пока не открыл для себя TurboAssembler той же фирмы. \\ \\
 ==== Характеристика эпохи ==== ==== Характеристика эпохи ====
 Отсчет нового компьютерного времени я предлагаю начать с 1989 г., когда начались массовые поставки персональных компьютеров в СССР. Для наших соотечественников это означало: "забудь все, чему учился раньше - теперь все будет по-другому". Для всего остального мира импорт готовых машин в нашу страну (именно готовых, товарных машин, а не технологий и даже не промышленных образцов) означал выбытие СССР из ряда мировых компьютерных держав. Если же вспомнить, что еще раньше этот ряд покинула Великобритания, то мы поймем, что Соединенные Штаты стали более чем просто лидером - абсолютным законодателем мировой компьютерной моды. \\ Отсчет нового компьютерного времени я предлагаю начать с 1989 г., когда начались массовые поставки персональных компьютеров в СССР. Для наших соотечественников это означало: "забудь все, чему учился раньше - теперь все будет по-другому". Для всего остального мира импорт готовых машин в нашу страну (именно готовых, товарных машин, а не технологий и даже не промышленных образцов) означал выбытие СССР из ряда мировых компьютерных держав. Если же вспомнить, что еще раньше этот ряд покинула Великобритания, то мы поймем, что Соединенные Штаты стали более чем просто лидером - абсолютным законодателем мировой компьютерной моды. \\
Строка 492: Строка 532:
 {{igor:istoria-apples.jpg?400}} \\ {{igor:istoria-apples.jpg?400}} \\
 (снимок сделан на фестивале "Chaos Construction" в Санкт-Петербурге в 2017 г.) \\ (снимок сделан на фестивале "Chaos Construction" в Санкт-Петербурге в 2017 г.) \\
-Новейшее время небогато на принципиально новые технические решения ни в архитектуре и конструкции компьютеров, ни в программировании: революционные изменения произошли в наших взглядах на применение компьютеров в жизни. Этим изменениям будет посвящена большая часть этой главы, но сейчас все-таки несколько слов о "железе" рубежа веков. В течение десятилетия, которое мы только что обозначили, практически все компьютеры на 286-х-486-х процессорах были списаны, им на смену пришли компьютеры на процессорах "Пентиум1" - "Пентиум4" от "Интел" и близких к ним процессорах от "АМД". Они, как и предшественники, были 32-разрядными, а идеи 64-разрядных процессоров, а также многоядерных, только еще намечались. Первый серийный 64-разрядный процессор "Athlon64" был выпущен фирмой "АМД" в 2003 г., так что новейшая компьютерная эпоха - практически эпоха 64-разрядных компьютеров. \\ \\+Новейшее время небогато на принципиально новые технические решения ни в архитектуре и конструкции компьютеров, ни в программировании: революционные изменения произошли в наших взглядах на применение компьютеров в жизни. Этим изменениям будет посвящена большая часть этой главы, но сейчас все-таки несколько слов о "железе" рубежа веков. В течение десятилетия, которое мы только что обозначили, практически все компьютеры на 286-х-486-х процессорах были списаны, им на смену пришли компьютеры на процессорах "Пентиум1" - "Пентиум4" от "Интел" и близких к ним процессорах от "АМД". Они, как и предшественники, были 32-разрядными, а идеи 64-разрядных процессоров, а также многоядерных, только еще намечались. Первый серийный 64-разрядный процессор "Athlon64" был выпущен фирмой "АМД" в 2003 г., так что новейшая компьютерная эпоха - практически эпоха 64-разрядных компьютеров. \\ 
 +Рассматривая технологию решения задач на компьютере, мы увидели, что эта технология менялась от эпохи к эпохе. В __древние__ времена пользователь общался с компьютером через посредничество оператора подготовки данных. В __средние века__ преобладающим стал диалог, для которого нужна цифробуквенная клавиатура (в принципе, возможно, даже без переключения заглавных и строчных букв). В __новое время__ пользователь подавал компьютеру команды путем выбора нужного действия из меню - для этого клавиатура должна иметь клавиши со стрелками (и еще одну архиважную клавишу ESCAPE, которая как бы ничего не делает, но без нее не обойтись!). И наконец в __новейшее время__ основным органом управления стала мышь (изобретенная, кстати, еще в 1968 году). Подчеркиваю: мы говорим о работе пользователя. Системные администраторы до наших дней не мыслят своей работы без диалога. \\ \\
 ==== Компьютерные игры и игровые компьютеры в новейшее время ==== ==== Компьютерные игры и игровые компьютеры в новейшее время ====
 Выше мы говорили о том, что в __средние века__ компьютерные игры были редкостью и воспринимались большинством людей как безобразие, а в новое время они стали нормой. Тем не менее игровой компьютер __нового__ времени - по большому счету суррогат, сделанный так, чтобы только был максимально дешев. С наступлением __новейшего__ времени пересмотр взглядов на "игрушки" продолжился. В один прекрасный момент люди перестали считать крамолой мысль о том, что игровой компьютер может быть технически совершеннее, чем деловой. А значит, и дороже. Это касается как "железа", так и программного обеспечения. В результате в нынешних магазинах мы чисто делового ноутбука просто не найдем. Уж если его искать, то не в магазине, а на рынке бэушной техники. Там нам предложат какой-нибудь ИБМ, Делл или Компак года этак 1999-го за 3-5 тысяч рублей: толстый, черный, тяжелый, с матовым экраном... С таким ноутом и сейчас не стыдно явиться на серьезное совещание к генеральному директору фирмы, и никто не будет спрашивать, сколько у вас ядер и сколько гигов оперативки! Современные же компьютеры стоят 10-20, а то и 40 тысяч, но, изучая их технические особенности, мы приходим к выводу, что это типично развлекательные компьютеры, что, в общем-то, недвусмысленно написано на их мо... пардон, на лицевых панелях. \\ Выше мы говорили о том, что в __средние века__ компьютерные игры были редкостью и воспринимались большинством людей как безобразие, а в новое время они стали нормой. Тем не менее игровой компьютер __нового__ времени - по большому счету суррогат, сделанный так, чтобы только был максимально дешев. С наступлением __новейшего__ времени пересмотр взглядов на "игрушки" продолжился. В один прекрасный момент люди перестали считать крамолой мысль о том, что игровой компьютер может быть технически совершеннее, чем деловой. А значит, и дороже. Это касается как "железа", так и программного обеспечения. В результате в нынешних магазинах мы чисто делового ноутбука просто не найдем. Уж если его искать, то не в магазине, а на рынке бэушной техники. Там нам предложат какой-нибудь ИБМ, Делл или Компак года этак 1999-го за 3-5 тысяч рублей: толстый, черный, тяжелый, с матовым экраном... С таким ноутом и сейчас не стыдно явиться на серьезное совещание к генеральному директору фирмы, и никто не будет спрашивать, сколько у вас ядер и сколько гигов оперативки! Современные же компьютеры стоят 10-20, а то и 40 тысяч, но, изучая их технические особенности, мы приходим к выводу, что это типично развлекательные компьютеры, что, в общем-то, недвусмысленно написано на их мо... пардон, на лицевых панелях. \\
Строка 508: Строка 549:
 ==== Компьютеризированные расчетно-платежные системы ==== ==== Компьютеризированные расчетно-платежные системы ====
 Когда мы говорим о компьютеризированных расчетно-платежных системах, первое, что приходит на ум непрофессиональному читателю, - это банковские карты, однако это неправильно: карты - это только верхушка айсберга. \\ Когда мы говорим о компьютеризированных расчетно-платежных системах, первое, что приходит на ум непрофессиональному читателю, - это банковские карты, однако это неправильно: карты - это только верхушка айсберга. \\
-Первые банковские карты появились в США и других экономически передовых странах еще в 50-е годы XX века, но, как это всегда и бывает, до поры-до времени они были экзотикой. В СССР ничего подобного, разумеется, быть не могло. Массовому распространению карт препятствовала высокая стоимость как самих карт, так и оборудования для их чтения, а также трудности подключения к компьютерным сетям в большинстве мест, где люди хотели бы такими картами пользоваться (магазины, автозаправочные станции...). Мировой компьютерной Сети в те времена еще не было, не было единого стандарта конструкции карт, не было согласия между банками по поводу построения единой расчетно-платежной системы. С годами, однако, эти мешающие факторы были постепенно преодолены. \\+Первые банковские карты появились еще в 50-е годы XX века в США и других экономически передовых странах, но, как это всегда и бывает, до поры-до времени они были экзотикой. Массовому распространению карт препятствовала высокая стоимость как самих карт, так и оборудования для их чтения, а также трудности подключения к компьютерным сетям в большинстве мест, где люди хотели бы такими картами пользоваться (магазины, автозаправочные станции...). Мировой компьютерной Сети в те времена еще не было, не было единого стандарта конструкции карт, не было согласия между банками по поводу построения единой расчетно-платежной системы. С годами, однако, эти мешающие факторы были постепенно преодолены. \\ 
 +В СССР ничего подобного, разумеется, быть не могло. \\
 Как работает банковская карта? \\ Как работает банковская карта? \\
 Прежде всего оговоримся, что карта, точно так же как использовавшаяся ранее чековая книжка, - не кошелек, деньги хранятся не в ней. Они хранятся в банке, на нашем банковском счете. Соответственно потеря карты не означает потери денег, а попадание карты в руки постороннего человека, вообще говоря, не гарантирует ему возможности присвоить наши деньги. Это очень важно, потому что если мы держим наличные деньги в кошельке и кошелек достается постороннему человеку, то и с самим кошельком, и с его содержимым нам придется распрощаться. Если же мы хотим расплатиться, допустим, за бензин на автозаправке, то мы вставляем карту в имеющийся там  Прежде всего оговоримся, что карта, точно так же как использовавшаяся ранее чековая книжка, - не кошелек, деньги хранятся не в ней. Они хранятся в банке, на нашем банковском счете. Соответственно потеря карты не означает потери денег, а попадание карты в руки постороннего человека, вообще говоря, не гарантирует ему возможности присвоить наши деньги. Это очень важно, потому что если мы держим наличные деньги в кошельке и кошелек достается постороннему человеку, то и с самим кошельком, и с его содержимым нам придется распрощаться. Если же мы хотим расплатиться, допустим, за бензин на автозаправке, то мы вставляем карту в имеющийся там 
Строка 523: Строка 565:
 Чтобы понять, чем отличается микроконтроллер от микропроцессора, нам надо понять, что микропроцессор - это процессор, его роль и место в компьютерном "железе" полностью соответствует роли и месту обычного процессора. Его выводы образуют типичный интерфейс процессора с шиной адреса и шиной данных, так чтобы к нему можно было подсоединить оперативную память и периферийные устройства. Современный микроконтроллер строится по принципу SoC, что можно перевести как Storage on Chip или System on Chip - память на чипе или система на чипе. Смысл в том, что микроконтроллер как микросхема представляет собой не процессор, а всю машину с оперативной памятью и периферийными устройствами. Соответственно все шины у него внутри, а большинство выводов микросхемы имеют двойную функцию: каждый вывод относится к определенному периферийному устройству, либо может быть использован просто как порт ввода-вывода, на который можно выводить нужные нам логические значения или читать значения, поступающие с каких-то внешних устройств. В принципе, эти порты можно использовать и для подключения оперативной памяти, но в наше время это уже не имеет смысла. \\ Чтобы понять, чем отличается микроконтроллер от микропроцессора, нам надо понять, что микропроцессор - это процессор, его роль и место в компьютерном "железе" полностью соответствует роли и месту обычного процессора. Его выводы образуют типичный интерфейс процессора с шиной адреса и шиной данных, так чтобы к нему можно было подсоединить оперативную память и периферийные устройства. Современный микроконтроллер строится по принципу SoC, что можно перевести как Storage on Chip или System on Chip - память на чипе или система на чипе. Смысл в том, что микроконтроллер как микросхема представляет собой не процессор, а всю машину с оперативной памятью и периферийными устройствами. Соответственно все шины у него внутри, а большинство выводов микросхемы имеют двойную функцию: каждый вывод относится к определенному периферийному устройству, либо может быть использован просто как порт ввода-вывода, на который можно выводить нужные нам логические значения или читать значения, поступающие с каких-то внешних устройств. В принципе, эти порты можно использовать и для подключения оперативной памяти, но в наше время это уже не имеет смысла. \\
 Первый патент на микроконтроллер был выдан еще в 1971 г., то есть чисто технически микроконтроллер не может рассматриваться как изобретение новейшего времени. Однако тогда никаких серийных изделий по этому патенту не выпускалось. В 1976 г. фирма "Интел" выпустила микросхему 8048, которая в русскоязычной литературе получила название "однокристальная микро-ЭВМ" (термин "микроконтроллер" вошел в обиход гораздо позже). В 1980 г. на смену 8048 пришла более продвинутая машина 8051, выпускающаяся до настоящего времени несколькими разными фирмами под общим названием MCS51 (если вы скажете просто "51-е семейство", то кому надо, тот вас поймет). \\ Первый патент на микроконтроллер был выдан еще в 1971 г., то есть чисто технически микроконтроллер не может рассматриваться как изобретение новейшего времени. Однако тогда никаких серийных изделий по этому патенту не выпускалось. В 1976 г. фирма "Интел" выпустила микросхему 8048, которая в русскоязычной литературе получила название "однокристальная микро-ЭВМ" (термин "микроконтроллер" вошел в обиход гораздо позже). В 1980 г. на смену 8048 пришла более продвинутая машина 8051, выпускающаяся до настоящего времени несколькими разными фирмами под общим названием MCS51 (если вы скажете просто "51-е семейство", то кому надо, тот вас поймет). \\
-Появление 8048 и 8051 стало знаковым событием в компьютерном мире, но эпохи все-таки не сделало. Мы употребляем слова "эпоха" или "эра", когда меняются наши представления о том, что хорошо и что плохо. Инженеры древней эпохи и средних веков, имея тот или иной бюджет, в рамках этого бюджета создавали максимально  +Если кто-то упрекнет меня в том, что моя любовь к 51-му семейству имеет под собой некоторую лично-субъективную подоплеку, то это правда, но это не вся правда. Если бы только этим все ограничивалось, то я бы удержался от слишком длинного рассказа о нем. Следующая порция правды состоит в том, что этой маленькой и простенькой машинке суждено было сыграть историческую роль не сравнимую с ее техническими характеристиками. \\ 
-мощную машину, на которой можно решать тяжелые (ну или хоть сколько-нибудь тяжелые) задачи. Строить заведомо слабый компьютер для решения совсем простых задач типа переключения программ в телевизоре с помощью пульта дистанционного управления они считали ниже своего достоинства, тем более что значительных доходов эта работа до поры-до времени не обещала. В конце XX века общая тенденция к уменьшению стоимости микросхем привела к тому, что массовое изготовление примитивных машинок постепенно выросло в индустрию, в финансовом плане не менее привлекательную, чем производство полнопрофильных компьютеров. Но для того чтобы эпоха микроконтроллеров состоялась, должны были сойтись в одном месте несколько факторов, которых 51-му семейству как раз и не хватало: \\+Появление 8048 и 8051 стало знаковым событием в компьютерном мире, но эпохи все-таки не сделало. Мы употребляем слова "эпоха" или "эра", когда меняются наши представления о том, что хорошо и что плохо. Инженеры древней эпохи и средних веков, имея тот или иной бюджет, в рамках этого бюджета создавали максимально мощную машину, на которой можно решать тяжелые (ну или хоть сколько-нибудь тяжелые) задачи. Строить заведомо слабый компьютер для решения совсем простых задач типа переключения программ в телевизоре с помощью пульта дистанционного управления они считали ниже своего достоинства, тем более что значительных доходов эта работа до поры-до времени не обещала. В конце XX века общая тенденция к уменьшению стоимости микросхем привела к тому, что массовое изготовление примитивных машинок постепенно выросло в индустрию, в финансовом плане не менее привлекательную, чем производство полнопрофильных компьютеров. Но для того чтобы эпоха микроконтроллеров состоялась, должны были сойтись в одном месте несколько факторов, которых 51-му семейству как раз и не хватало: \\
 * Эти устройства были все-таки гораздо ближе к микропроцессорам, чем к микроконтроллерам. У них было очень мало встроенной памяти и периферийных устройств. Чтобы построить что-то похожее на компьютер, к ним нужно было подключать внешние компоненты, а это невозможно было сделать без определенных промежуточных элементов-микросхем, так что вся система получалась довольно сложной и уж точно недешевой (что, кстати, хорошо видно на иллюстрации, которая будет чуть ниже). \\ * Эти устройства были все-таки гораздо ближе к микропроцессорам, чем к микроконтроллерам. У них было очень мало встроенной памяти и периферийных устройств. Чтобы построить что-то похожее на компьютер, к ним нужно было подключать внешние компоненты, а это невозможно было сделать без определенных промежуточных элементов-микросхем, так что вся система получалась довольно сложной и уж точно недешевой (что, кстати, хорошо видно на иллюстрации, которая будет чуть ниже). \\
 * Память для программ была либо однократно электрически программируемая, либо с ультрафиолетовым стиранием. Чтобы в нее что-то записать, микросхему нужно было вставить в специальное устройство - программатор, и уж только потом вставлять запрограммированный микроконтроллер в устройство, которым он должен управлять. \\ * Память для программ была либо однократно электрически программируемая, либо с ультрафиолетовым стиранием. Чтобы в нее что-то записать, микросхему нужно было вставить в специальное устройство - программатор, и уж только потом вставлять запрограммированный микроконтроллер в устройство, которым он должен управлять. \\
 * Архитектура процессорного ядра 51-го семейства образовалась в результате попытки, как говорит один мой товарищ, "впихнуть невпихуемое": построить недорогую 8-разрядную машину с системой команд по образцу "больших" компьютеров. Это при том, что в те века уже был известен принцип RISC, и было понятно, что маленький компьютер должен быть обязательно RISC (а сейчас уже и "большие" компьютеры имеют в своей основе RISC). \\ * Архитектура процессорного ядра 51-го семейства образовалась в результате попытки, как говорит один мой товарищ, "впихнуть невпихуемое": построить недорогую 8-разрядную машину с системой команд по образцу "больших" компьютеров. Это при том, что в те века уже был известен принцип RISC, и было понятно, что маленький компьютер должен быть обязательно RISC (а сейчас уже и "большие" компьютеры имеют в своей основе RISC). \\
 +Снова возвращаюсь к мысли, что разные отрасли техники развиваются по схожим законам. \\
 +Читатель ждет очередного рассказа о тепловозах? "Ну что ж, лови его скорей" (по А. С. Пушкину). \\
 +Что представляет собой тепловоз ТУ2? Узкоколейный тепловоз - один из первых, создававшихся еще в 1950-е годы. Каким должен быть правильный узкоколейный тепловоз, в то время еще никто не знал - эти знания появятся позже, ПО ИТОГАМ опыта эксплуатации ТУ2. Но если узкоколейный паровоз представлял собой уменьшеную и упрощенную копию нормального паровоза, то почему бы и тепловоз не создать в рамках этой же "философии"? В результате машина получилась переусложненная, переутяжеленная и в общем не очень эффективная. Неудивительно, что сейчас таких локомотивов никто не строит. \\
 +Что собой представляет детская железная дорога? Это ведь не компания для пассажирских перевозок - это прежде всего учебное заведение, цель которого - подготовка кадров для железных дорог. Кадров прежде всего для БОЛЬШИХ железных дорог, а уж во вторую очередь для узкоколейных. На детской железной дороге есть почти все, что и на "взрослой", кроме разве что электровозов, но все - в уменьшенном и упрощенном виде. Для детских железных дорог 
 +сейчас строятся современные тепловозы: ТУ6, ТУ7, ТУ10. Они по многим параметрам опережают ТУ2, но они совершенно иначе устроены и поэтому малопригодны в качестве учебных... А ТУ2 даже чисто внешне кажется уменьшенной копией вполне "взрослого" тепловоза М62, но главное: внутренняя техническая "начинка" у 
 +них пусть не одинаковая, но принципиально сходная. \\
 +Аналогия с 51-м семейством тут полная. MCS51, как и ТУ2, создавался на переломе эпох и на стрелке двух направлений развития компьютеров: больших и малых. В его архитектуре много архаичных черт, свойственных большим компьютерам предыдущего поколения. Неудивительно, что современные микроконтроллеры чаще всего оказываются лучше приспособлены для решения свойственных им задач. Но PIC, AVR и STM, подобно ТУ6, ТУ7 и ТУ10, - прежде всего машины для работы. Они хороши для обучения молодежи, которой предстоит работать на ТАКИХ ЖЕ машинах, но той молодежи, которой предстоит работа на "взрослых" компьютерах, они могут дать немного. Старый верный MCS51 мог бы стать превосходным учебно-лабораторным стендом - уменьшенной и упрощенной моделью КОМПЬЮТЕРА ВООБЩЕ, которая 
 +позволит студентам не просто вообразить, а "подержать в руках" основные элементы и процессы, имеющие место в любом компьютере, как в большом, так и в маленьком. Конечно, при наличии соответствующего преподавателя и "методичек" по проведению лабораторных работ. \\
 В 1995-1997 гг. норвежцы Альф Боген и Вегард Воллен придумали архитектуру 8-разрядного процессорного ядра, В 1995-1997 гг. норвежцы Альф Боген и Вегард Воллен придумали архитектуру 8-разрядного процессорного ядра,
 которое назвали AVR - Alf and Vergard RISC - компьютер Альфа и Вегарда с сокращенной системой команд. Эта архитектура оказалась весьма кстати фирме "Атмел", которая совместила процессорное ядро AVR с собственной разработкой - флэш-памятью. Так было выпущено семейство однокристальных микро-ЭВМ (в современной терминологии - микроконтроллеров) AT90S "Classic", включавшее несколько микросхем с практически одинаковым микропроцессорным ядром, но с разным объемом памяти и с разным набором периферии на кристалле. Изюминкой этих машин была флэш-память значительного объема с большим количеством циклов перезаписи. Для флэш-памяти отдельная операция стирания ранее записанной программы не нужна, а для "заливки" новой программы не нужно микроконтроллер вынимать из системы и вставлять в программатор: программирование производится //внутрисхемно//. Сейчас семейство "Classic" уже не производится, но производятся близкие к нему семейства ATtiny и ATmega. \\ которое назвали AVR - Alf and Vergard RISC - компьютер Альфа и Вегарда с сокращенной системой команд. Эта архитектура оказалась весьма кстати фирме "Атмел", которая совместила процессорное ядро AVR с собственной разработкой - флэш-памятью. Так было выпущено семейство однокристальных микро-ЭВМ (в современной терминологии - микроконтроллеров) AT90S "Classic", включавшее несколько микросхем с практически одинаковым микропроцессорным ядром, но с разным объемом памяти и с разным набором периферии на кристалле. Изюминкой этих машин была флэш-память значительного объема с большим количеством циклов перезаписи. Для флэш-памяти отдельная операция стирания ранее записанной программы не нужна, а для "заливки" новой программы не нужно микроконтроллер вынимать из системы и вставлять в программатор: программирование производится //внутрисхемно//. Сейчас семейство "Classic" уже не производится, но производятся близкие к нему семейства ATtiny и ATmega. \\
Строка 535: Строка 585:
 Так она началась, а что дальше? Дурной пример оказался, как обычно и бывает, заразительным. Фирма "Микрочип" производит микроконтроллеры PIC10/12/16/18/24/32 с разрядностью 8, 16 и 32, фирма "СТ Микроэлектроникс" - микроконтроллеры STM8 и STM32... На основе микроконтроллеров ATtiny и ATmega выпускаются, помимо "Ардуин", отладочные платы Smart Evolution Module (SEM), на STM32 - платы Nucleo... Не буду перечислять всех - их очень много, и каждый год появляются новые. \\ Так она началась, а что дальше? Дурной пример оказался, как обычно и бывает, заразительным. Фирма "Микрочип" производит микроконтроллеры PIC10/12/16/18/24/32 с разрядностью 8, 16 и 32, фирма "СТ Микроэлектроникс" - микроконтроллеры STM8 и STM32... На основе микроконтроллеров ATtiny и ATmega выпускаются, помимо "Ардуин", отладочные платы Smart Evolution Module (SEM), на STM32 - платы Nucleo... Не буду перечислять всех - их очень много, и каждый год появляются новые. \\
 У читателя может создаться впечатление, что все микроконтроллеры - черепашки-микролитражки. Это не так: флагманский продукт линейки Atmel AVR - Atmega2560 - по совокупности тактико-технических характеристик близок к 8086 и далеко превосходит ZX Spectrum, а STM32F4 соответствует большому мейнфрейму 80-х годов, при цене всего в несколько долларов! Именно такая цена и сделала микроконтроллеры массовым продуктом, доступным не только профессиональным инженерам-проектировщикам, но и любителям, и даже школьникам, изучающим электронику и программирование. \\ У читателя может создаться впечатление, что все микроконтроллеры - черепашки-микролитражки. Это не так: флагманский продукт линейки Atmel AVR - Atmega2560 - по совокупности тактико-технических характеристик близок к 8086 и далеко превосходит ZX Spectrum, а STM32F4 соответствует большому мейнфрейму 80-х годов, при цене всего в несколько долларов! Именно такая цена и сделала микроконтроллеры массовым продуктом, доступным не только профессиональным инженерам-проектировщикам, но и любителям, и даже школьникам, изучающим электронику и программирование. \\
-Дальше - больше. Если можно построить компьютер величиной со спичечный коробок с процессором, по своим вычислительным возможностям равным "Пентиуму" 90-х годов, то почему бы не вставить туда еще более мощный, по-настоящему современный процессор, может быть даже и многоядерный? Так в 2011 г. англичанин Д. Брэбен создал  на основе процессора фирмы "Броадком" //одноплатный микрокомпьютер// Raspberry Pi, после чего не заставили себя ждать Orange Pi, Odroid, а недавно и Onion Omega с процессором в архитектуре MIPS... Граница между микроконтроллерами и микрокомпьютерами постепенно размывается, единственное существенное отличие в том, что на микрокомпьютеры обычно устанавливается операционная система (чаще всего линуксоидная), а на микроконтроллерах ОС не бывает. \\+Дальше - больше. Если можно построить компьютер величиной со спичечный коробок с процессором, по своим вычислительным возможностям равным "Пентиуму" 90-х годов, то почему бы не вставить туда еще более мощный, по-настоящему современный процессор, может быть даже и многоядерный? Так в 2011 г. англичанин Д. Брэбен создал  на основе процессора фирмы "Броадком" (архитектура ARM Cortex) //одноплатный микрокомпьютер// Raspberry Pi, после чего не заставили себя ждать Orange Pi, Odroid, а недавно и Onion Omega с процессором в архитектуре MIPS... [[https://vk.com/@-184953913-spisok-interesnyh-odnopalatnyh-komputerov-o-kotoryh-vozmozhn?ref=group_block]] \\ 
 +Граница между микроконтроллерами и микрокомпьютерами постепенно размывается. Яоднако, все же предлагаю ее обозначить. Микрокомпьютер - это компьютер: он рассчитан на длительную эксплуатацию, в ходе которой ему предстоит многократно и попеременно решать множество разных задач, круг которых не оговорен при разработке компьютера. Для этого он оснащается операционной системой, имеющей функцию установки программ, приобретаемых на стороне, а иногда и инструментами для разработки программ на месте (чаще всего ставится какая-то линуксоидная система вплоть до Debian10). Микроконтроллер рассчитан на точто в течение всего срока жизни будет решать каую-то одну задачу, так что операционных систем на микроконтроллерах не бывает. \\
 Сейчас несколько отвлечемся, чтобы устранить досадную неточность в терминологии. \\ Сейчас несколько отвлечемся, чтобы устранить досадную неточность в терминологии. \\
 Как мы только что выяснили, микроконтроллер - это микросхема: \\ Как мы только что выяснили, микроконтроллер - это микросхема: \\
Строка 545: Строка 596:
 Неудивительно, что промышленный контроллер может стоить на уровне офисного компьютера или больше, даже если значительно уступает последнему по вычислительным ресурсам. Хотя сейчас уже не редкость промышленный контроллер (например марки Wiren Board) на процессоре Cortex A7, который по вычислительным ресурсам сравним с домашне-офисными компьютерами не самых последних выпусков. \\ Неудивительно, что промышленный контроллер может стоить на уровне офисного компьютера или больше, даже если значительно уступает последнему по вычислительным ресурсам. Хотя сейчас уже не редкость промышленный контроллер (например марки Wiren Board) на процессоре Cortex A7, который по вычислительным ресурсам сравним с домашне-офисными компьютерами не самых последних выпусков. \\
 Программирование промышленных контроллеров - отдельная наука со своими языками и технологиями. Правда, в последние годы, с началом массового распространения ардуиноподобной техники, в эту отрасль пришло огромное количество любителей-самодельщиков с довольно-таки слабой профессиональной подготовкой в области программирования. Они знают единственный язык - C++ и программируют на нем. Недостатки этого языка - тема для отдельной статьи. К сожалению, ни студенты, изучающие этот язык, ни профессора, которые их учат, не хотят задумываться о глобальных вопросах, а авторы книг предпочитают писать то, что понравится большинству читателей. Зато люди, которые налаживают и обслуживают "взрослую" промышленную автоматику, понимают это отлично и поэтому предпочитают другие языки. По большому счету языки для ПЛК - это даже не языки, а технологии программирования, суть которых в том, что программист описывает не действия для решения задачи, а саму задачу, причем описывает не словами, а путем составления схем на экране в графическом режиме. \\ Программирование промышленных контроллеров - отдельная наука со своими языками и технологиями. Правда, в последние годы, с началом массового распространения ардуиноподобной техники, в эту отрасль пришло огромное количество любителей-самодельщиков с довольно-таки слабой профессиональной подготовкой в области программирования. Они знают единственный язык - C++ и программируют на нем. Недостатки этого языка - тема для отдельной статьи. К сожалению, ни студенты, изучающие этот язык, ни профессора, которые их учат, не хотят задумываться о глобальных вопросах, а авторы книг предпочитают писать то, что понравится большинству читателей. Зато люди, которые налаживают и обслуживают "взрослую" промышленную автоматику, понимают это отлично и поэтому предпочитают другие языки. По большому счету языки для ПЛК - это даже не языки, а технологии программирования, суть которых в том, что программист описывает не действия для решения задачи, а саму задачу, причем описывает не словами, а путем составления схем на экране в графическом режиме. \\
-* LD (Ladder Diagram - язык релейных диаграмм, или релейно-контактных схем) привычен и понятен рабочему - заводскому слесарю КИПиА (контрольно-измерительных приборов и автоматики), железнодорожному СЦБшнику и даже просто мало-мальски грамотному электрику. Программа на LD выглядит как принципиальная электрическая схема, где, например, функция "логическое И" изображается в виде последовательно соединенных контактных пар. \\ +* LD (Ladder Diagram - язык релейных диаграмм, или релейно-контактных схем) разработан еще в 1970-е годы фирмами "Модикон" и "Аллен Брэдли". Он привычен и понятен рабочему - заводскому слесарю КИПиА (контрольно-измерительных приборов и автоматики), железнодорожному СЦБшнику и даже просто мало-мальски грамотному электрику. Программа на LD выглядит как принципиальная электрическая схема, где, например, функция "логическое И" изображается в виде последовательно соединенных контактных пар. \\ 
-* FBD (Function Block Diagram - язык функциональных блок-диаграмм) близок инженеру - электронщику и схемотехнику. Программа на FBD больше похожа на структурную схему. \\+* FBD (Function Block Diagram - язык функциональных блок-диаграмм) близок инженеру - электронщику и схемотехнику, хотя в принципе доступен и специалисту без высшего образования. Программа на FBD больше похожа на структурную схему. В этом языке, как и в LD, нет ни подпрограмм, ни циклов, ни условных переходов, так что для работы на нем специальная программистская подготовка не требуется. \\
 * SFC (Sequential Function Chart - "язык последовательного функционирования", или язык карт состояний): программа на нем представляет собой диаграмму состояний и переходов, понятную инженеру-технологу. \\ * SFC (Sequential Function Chart - "язык последовательного функционирования", или язык карт состояний): программа на нем представляет собой диаграмму состояний и переходов, понятную инженеру-технологу. \\
 Мы-то, конечно, понимаем, что все эти диаграммы и схемы представляют собой только визуальное отображение программы, сама же программа формируется в памяти компьютера как текст, близкий к текстам обычных программ и компилируемый подобно им. \\ Мы-то, конечно, понимаем, что все эти диаграммы и схемы представляют собой только визуальное отображение программы, сама же программа формируется в памяти компьютера как текст, близкий к текстам обычных программ и компилируемый подобно им. \\
Строка 552: Строка 603:
 Сам контроллер чаще всего не имеет ни операционной системы, ни редакторов, ни компиляторов, а иногда вообще не имеет устройств для взаимодействия с человеком (у военных такой компьютер называется счетно-решающим прибором, в отличие от настоящего компьютера, имеющего клавиатуру и экран или что-то заменяющее их). Разработка программ ведется на обычном компьютере (который в этой ситуации называется инструментальной машиной) с использованием //кросс-компилятора// или //кросс-ассемблера//, а готовая программа - прошивка - "заливается" в ПЛК с помощью программатора, который может быть отдельным устройством либо встроенным в ПЛК. Отладка программ, конечно, может осуществляться путем пробных прогонов, но наиболее серьезные специалисты используют //кросс-отладчики// - программы, работающие на обычном компьютере и воспроизводящие в деталях поведение микроконтроллера. То есть, если программист __компьютера__ работает непосредственно на том компьютере, для которого он разрабатывает программу, то программист __микроконтроллера__ или ПЛК может всю работу - от первых замыслов до полной готовности - выполнять на персональном компьютере, даже вообще не имея в руках того устройства, для которого программирует. \\ Сам контроллер чаще всего не имеет ни операционной системы, ни редакторов, ни компиляторов, а иногда вообще не имеет устройств для взаимодействия с человеком (у военных такой компьютер называется счетно-решающим прибором, в отличие от настоящего компьютера, имеющего клавиатуру и экран или что-то заменяющее их). Разработка программ ведется на обычном компьютере (который в этой ситуации называется инструментальной машиной) с использованием //кросс-компилятора// или //кросс-ассемблера//, а готовая программа - прошивка - "заливается" в ПЛК с помощью программатора, который может быть отдельным устройством либо встроенным в ПЛК. Отладка программ, конечно, может осуществляться путем пробных прогонов, но наиболее серьезные специалисты используют //кросс-отладчики// - программы, работающие на обычном компьютере и воспроизводящие в деталях поведение микроконтроллера. То есть, если программист __компьютера__ работает непосредственно на том компьютере, для которого он разрабатывает программу, то программист __микроконтроллера__ или ПЛК может всю работу - от первых замыслов до полной готовности - выполнять на персональном компьютере, даже вообще не имея в руках того устройства, для которого программирует. \\
 Аббревиатуру ПЛК иногда расшифровывают как **//программируемый логический контроллер//**, и здесь возникает путаница с промышленным логическим контроллером. Эти два устройства могут быть сходны по собственному внешнему виду и даже по внешнему виду технической "начинки", которая у них внутри, но логика работы у них совершенно разная. Промышленный контроллер по сути своей - типичный компьютер с процессором и с множеством одинаковых адресуемых ячеек памяти, обрабатывающий информацию путем последовательного выполнения действий по программе. Программируемый логический контроллер построен на основе **//программируемой логической интегральной схемы//** (ПЛИС), с которой его также часто путают. ПЛИС - это не компьютер, не процессор и не микроконтроллер - это детский конструктор "Сделай сам", из которого можно собрать что угодно. Если очень хочется, можно собрать и процессор, и компьютер, но практически это не имеет смысла. На основе ПЛИС собирают специализированные логические схемы для решения задач, для которых классические микроконтроллеры недостаточно эффективны. Основной язык программирования ПЛИС - Verilog. \\ Аббревиатуру ПЛК иногда расшифровывают как **//программируемый логический контроллер//**, и здесь возникает путаница с промышленным логическим контроллером. Эти два устройства могут быть сходны по собственному внешнему виду и даже по внешнему виду технической "начинки", которая у них внутри, но логика работы у них совершенно разная. Промышленный контроллер по сути своей - типичный компьютер с процессором и с множеством одинаковых адресуемых ячеек памяти, обрабатывающий информацию путем последовательного выполнения действий по программе. Программируемый логический контроллер построен на основе **//программируемой логической интегральной схемы//** (ПЛИС), с которой его также часто путают. ПЛИС - это не компьютер, не процессор и не микроконтроллер - это детский конструктор "Сделай сам", из которого можно собрать что угодно. Если очень хочется, можно собрать и процессор, и компьютер, но практически это не имеет смысла. На основе ПЛИС собирают специализированные логические схемы для решения задач, для которых классические микроконтроллеры недостаточно эффективны. Основной язык программирования ПЛИС - Verilog. \\
-Для всех микроконтроллеров типична //гарвардская архитектура// с двумя отдельными запоминающими устройствами: для программ и для данных. Память данных - обычная оперативная память, а память программ - долговременная, в качестве которой чаще всего используется флэш-память. Кроме того, у многих микроконтроллеров (в частности, у всех выпускающихся сейчас AVR) имеется и долговременная память данных - EEPROM. Этим микроконтроллеры отличаются от обычных компьютеров, для которых типична //принстонская архитектура//, она же //неймановская//, с одним ОЗУ, в котором место для программы и для данных выделяется по потребностям решаемой задачи. Такое решение продиктовано тем, что микроконтроллер обычно всю жизнь решает какую-то одну задачу, так что потребность в памяти можно предсказать на этапе проектирования, тогда как обычный компьютер решает множество задач, в т. ч. таких, которые не были известны во время его проектирования, так что потребности в памяти непредсказуемы. \\ \\+Для всех микроконтроллеров типична //гарвардская архитектура// с двумя отдельными запоминающими устройствами: для программ и для данных. Память данных - обычная оперативная память, а память программ - долговременная, в качестве которой чаще всего используется флэш-память. Кроме того, у многих микроконтроллеров (в частности, у всех выпускающихся сейчас AVR) имеется и долговременная память данных - EEPROM. Этим микроконтроллеры отличаются от обычных компьютеров, для которых типична //принстонская архитектура//, она же //неймановская//, с одним ОЗУ, в котором место для программы и для данных выделяется по потребностям решаемой задачи. Такое решение продиктовано тем, что микроконтроллер обычно всю жизнь решает какую-то одну задачу, так что потребность в памяти можно предсказать на этапе проектирования, тогда как обычный компьютер решает множество задач, в т. ч. таких, которые не были заранее известны, так что ячейки памяти для программ и для данных распределяются по потребности в пределах емкости одного устройства. \\ \\
 ==== Цифровые технологии записи и воспроизведении звука ==== ==== Цифровые технологии записи и воспроизведении звука ====
 До последнего десятилетия XX века для записи и воспроизведении звука использовались два вида носителей: виниловые грампластинки и магнитные ленты. Общий принцип их действия: звуковое давление преобразуется в электрическое напряжение, а последнее - в глубину канавки на пластинке или в намагниченность рабочего слоя ленты, а при воспроизведении производится обратное преобразование. Мгновенное значение звукового давления меняется непрерывно в известных пределах, и каждому значению звукового давления соответствует значение параметра записи. В свете того, что мы говорили выше про аналоговые и цифровые устройства, можем сказать: звукозапись на грампластинки и магнитные ленты - аналоговая технология. Проблема в том, что аналоговое преобразование одной величины в другую не может быть осуществлено со 100% точностью: неизбежны те или иные искажения. Это ладно, это мелочь. Гораздо хуже то, что пластинки имеют еще склонность к постепенной деградации при каждом проигрывании. А магнитные ленты портятся даже и просто при длительном хранении. \\ До последнего десятилетия XX века для записи и воспроизведении звука использовались два вида носителей: виниловые грампластинки и магнитные ленты. Общий принцип их действия: звуковое давление преобразуется в электрическое напряжение, а последнее - в глубину канавки на пластинке или в намагниченность рабочего слоя ленты, а при воспроизведении производится обратное преобразование. Мгновенное значение звукового давления меняется непрерывно в известных пределах, и каждому значению звукового давления соответствует значение параметра записи. В свете того, что мы говорили выше про аналоговые и цифровые устройства, можем сказать: звукозапись на грампластинки и магнитные ленты - аналоговая технология. Проблема в том, что аналоговое преобразование одной величины в другую не может быть осуществлено со 100% точностью: неизбежны те или иные искажения. Это ладно, это мелочь. Гораздо хуже то, что пластинки имеют еще склонность к постепенной деградации при каждом проигрывании. А магнитные ленты портятся даже и просто при длительном хранении. \\
Строка 590: Строка 641:
 ==== Мировая компьютерная сеть в новейшее время ==== ==== Мировая компьютерная сеть в новейшее время ====
 Выше мы рассмотрели мировую Сеть, какой она была в конце XX века. Мы отметили, что в то время Сеть действовала на электрическом принципе, который она унаследовала от телефонных и телеграфных сетей. На рубеже XX-XXI веков произошла революция в сетевых технологиях: началось массовое внедрение волоконно-оптических (оптоволоконных)  Выше мы рассмотрели мировую Сеть, какой она была в конце XX века. Мы отметили, что в то время Сеть действовала на электрическом принципе, который она унаследовала от телефонных и телеграфных сетей. На рубеже XX-XXI веков произошла революция в сетевых технологиях: началось массовое внедрение волоконно-оптических (оптоволоконных) 
-кабелей. Носителем информации в таком кабеле является не электричество, а свет, и жилы такого кабеля похожи не на проволоку, а скорее на рыболовную леску. Оптоволокно свободно от ограничений, присущих электрическим кабелям, поэтому позволяет передавать данные на большие расстояния со скоростью, немыслимой для прежних технологий. \\ +кабелей, разработка которых была начата еще в 80-е годы. Носителем информации в таком кабеле является не электричество, а свет, и жилы такого кабеля похожи не на проволоку, а скорее на рыболовную леску. Появилась новая профессия - монтажник волоконно-оптических сетей, которая имеет мало общего с давно известными профессиями электромонтера или телефониста. \\ 
-В конце XX века и в начале XXI оптоволоконные кабели по конструкции все еще имели много общего с телефонными и телеграфными, и прокладывались они обычно в земле, так же, как и последние. Кабель более позднего времени изготавливается из синтетических материалов и совсем не содержит металла, поэтому он неинтересен ворам-металлоломщикам. Он дешев, поскольку не содержит меди, при этом легок и прочен. В городе его можно натягивать прямо от дома к дому по крышам, а за городом по опорам линий электропередачи или контактной сети железных дорог. Это гораздо дешевле и удобнее, чем закапывать кабель в землю. С распространением таких кабелей проблема последней мили в городах была в основном решена. Вариантов решения два(а) оптоволокно вводится в многоквартирный дом, где-то на чердаке или на лестничной клетке ставится маршрутизатор и от него данные раздаются в квартиры по проводной локальной сети(б) оптоволокно проводится прямо в квартиры. \\ +Оптоволокно свободно от ограничений, присущих электрическим кабелям, поэтому позволяет передавать данные на большие расстояния со скоростью, немыслимой для прежних технологий. \\ 
-Последняя технология называется PON (Passive Optical Network - пассивная оптическая сеть). Преимущество PON в том, что сеть за пределами квартиры не содержит ни элементов, привлекательных для воров, ни приборов, нуждающихся в электроэнергии, и практически не требует ухода и обслуживания. Однако в квартире приходится ставить оптоволоконный маршрутизатор, который тяжелее и дороже обычного. Первые шаги по созданию пассивных оптических сетей предприняты в 1995 г. \\+В конце XX века и в начале XXI оптоволоконные кабели по конструкции все еще имели много общего с телефонными и телеграфными, и прокладывались они обычно в земле, так же, как и последние. Кабель новейшего времени изготавливается полностью из синтетических материалов, что обеспечивает ему целый ряд преимуществ: \\ 
 +* Он не содержит металла, поэтому неинтересен ворам-металлоломщикам; \\ 
 +* Дешев; \\  
 +* Легок и прочен, так что не нуждается в прокладке под землей: в городе его можно натягивать прямо от дома к дому по крышам. Это гораздо дешевле и удобнеечем в земле; \\ 
 +* Обеспечивает полную электробезопасность, как от поражения людей током, так и от повреждения приемопередающего оборудования молниями, так и от наводок со стороны мощных электроустановок, способных "забить" передаваемую по кабелю полезную информацию. Эти качества позволяют прокладывать кабель по существующим опорам линий электропередачи или контактной сети железных дорог, что резко снижает затраты на строительство Сети; \\ 
 +* Для злоумышленника, желающего перехватить информацию из кабеля, есть единственный вариант: резать кабель, а эта работа требует определенной квалификации, и притом ее невозможно сделать незаметно\\ 
 +С распространением таких кабелей проблема последней мили в городах была в основном решена. Вариантов решения два. \\ 
 +* FTTB (Fiber to the building - волокно в здание): прямое оптоволокно от дата-центра вводится в многоквартирный дом, где-то на чердаке или на лестничной клетке ставится маршрутизатор и от него данные раздаются в квартиры по проводной локальной сети; \\ 
 +* PON (Passive Optical Network - пассивная оптическая сеть)оптоволокно разветвляется с помощью оптических устройств - сплиттеров - и его ветви проводятся прямо в квартиры. Преимущество PON в том, что сеть за пределами квартиры не содержит ни элементов, привлекательных для воров, ни приборов, нуждающихся в электроэнергии, и практически не требует ухода и обслуживания. Однако в квартире приходится ставить оптоволоконный маршрутизатор, который тяжелее и дороже обычного. Первые шаги по созданию пассивных оптических сетей предприняты в 1995 г. \\
 На следующем фото - опора линии электропередачи (напряжение 110 кВ). Видны высоковольтные провода, подвешенные на гирляндах изоляторов, и три волоконно-оптических кабеля, подвешенные без изоляторов, а также соединительные муфты (для пущей надежности спрятанные в металлические ящики). \\ На следующем фото - опора линии электропередачи (напряжение 110 кВ). Видны высоковольтные провода, подвешенные на гирляндах изоляторов, и три волоконно-оптических кабеля, подвешенные без изоляторов, а также соединительные муфты (для пущей надежности спрятанные в металлические ящики). \\
 {{istoria-optovolokno.jpg?400}} \\ {{istoria-optovolokno.jpg?400}} \\
Строка 611: Строка 670:
 Следующий вопрос информационной безопасности, возникший в новейшее время, - это слежка всевозможных темных личностей за нами. "Мы все под колпаком у Мюллера" - помните? Да ладно бы если у одного какого-то Мюллера. Следят за нами все кому не лень, точнее все, кто может придумать для этого технические средства. Уже ни для кого не секрет, что операционная система Windows и некоторые веб-браузеры хранят информацию о нашей деятельности в Сети. \\ Следующий вопрос информационной безопасности, возникший в новейшее время, - это слежка всевозможных темных личностей за нами. "Мы все под колпаком у Мюллера" - помните? Да ладно бы если у одного какого-то Мюллера. Следят за нами все кому не лень, точнее все, кто может придумать для этого технические средства. Уже ни для кого не секрет, что операционная система Windows и некоторые веб-браузеры хранят информацию о нашей деятельности в Сети. \\
 В принципе, для рядового обывателя жизнь под колпаком может быть несколько дискомфортной, но не более того. Если же ты не просто обыватель, а подготовленный шпион, то слежка должна восприниматься тобой как обыкновенная повседневность, не мешающая выполнению твоих трудовых функций. Однако сам факт, что слежка ведется, провоцирует нас на разработку методов противодействия этой слежке. А поскольку мы не можем рассчитывать на то, что наши послания не попадут в руки посторонним, остается один вариант: шифроваться. Так появились коммерческие и некоммерческие шифрсистемы, виртуальные частные сети, прокси-серверы, анонимайзеры... Мы сейчас занимаемся историей техники, так что едва ли здесь будут уместны технические подробности. Остановимся на том, что, хотя с инженерной стороны перечисленные средства имеют различия и соответственно преимущества, недостатки и области применения, но математика, лежащая в их основе, одна и та же. По большому счету, используется тот же алгоритм, что и в электронной подписи, только "другим концом". Речь идет о шифровании с открытым ключом. \\ В принципе, для рядового обывателя жизнь под колпаком может быть несколько дискомфортной, но не более того. Если же ты не просто обыватель, а подготовленный шпион, то слежка должна восприниматься тобой как обыкновенная повседневность, не мешающая выполнению твоих трудовых функций. Однако сам факт, что слежка ведется, провоцирует нас на разработку методов противодействия этой слежке. А поскольку мы не можем рассчитывать на то, что наши послания не попадут в руки посторонним, остается один вариант: шифроваться. Так появились коммерческие и некоммерческие шифрсистемы, виртуальные частные сети, прокси-серверы, анонимайзеры... Мы сейчас занимаемся историей техники, так что едва ли здесь будут уместны технические подробности. Остановимся на том, что, хотя с инженерной стороны перечисленные средства имеют различия и соответственно преимущества, недостатки и области применения, но математика, лежащая в их основе, одна и та же. По большому счету, используется тот же алгоритм, что и в электронной подписи, только "другим концом". Речь идет о шифровании с открытым ключом. \\
-Всевозможные шифры, о которых мы можем составить представление по книгам и фильмам про шпионов, основаны на шифровании __с закрытым ключом__, которое мы обсудили в главе "Первобытная эпоха". В современных шифрсистемах каждый из субъектов посылает другому сообщение типа "зашифровывай свои послания вот таким ключом:...", и эти послания передаются открыто (отсюда и название: __шифрование с открытым ключом__). Посторонний человек запросто может перехватить открытый ключ, но воспользоваться им он едва ли сможет: для расшифровки нужен другой - //закрытый//, или приватный, ключ, который у каждого участника переговоров свой и держится в секрете. И здесь уместна та же оговорка, которую мы сделали при обсуждении электронной подписи: стойкость шифрсистемы с открытым ключом определяется не __невозможностью__, а __большой трудностью__ расчета закрытого ключа по известному открытому. "Это неосуществимо, потому что до сих пор никому не удалось", да? Преимущество шифрсистемы с открытым ключом не в том, что ее невозможно "расколоть", а в возможности установить сколько-нибудь защищенную связь между двумя лицами по недоверенной сети без предварительного обмена закрытыми ключами. \\ +Всевозможные шифры, о которых мы можем составить представление по книгам и фильмам про шпионов, основаны на шифровании __с закрытым ключом__, которое мы обсудили в главе "Первобытная эпоха". В современных шифрсистемах каждый из субъектов посылает другому сообщение типа "зашифровывай свои послания вот таким ключом:...", и эти послания передаются открыто (отсюда и название: __шифрование с открытым ключом__). Посторонний человек запросто может перехватить открытый ключ, но воспользоваться им он едва ли сможет: для расшифровки нужен другой - //закрытый//, или приватный, ключ, который у каждого участника переговоров свой и держится в секрете. И здесь уместна та же оговорка, которую мы сделали при обсуждении электронной подписи: стойкость шифрсистемы с открытым ключом определяется не __невозможностью__, а __большой трудоемкостью__ расчета закрытого ключа по известному открытому. "Это неосуществимо, потому что до сих пор никому не удалось", да? Преимущество шифрсистемы с открытым ключом не в том, что ее невозможно "расколоть", а в возможности установить сколько-нибудь защищенную связь между двумя лицами по недоверенной сети без предварительного обмена закрытыми ключами. \\ 
-С древности, когда криптография только зарождалась, и года как минимум до 1990-го математическая криптография была страшным секретом, изучали ее крайне немногочисленные люди в крайне немногочисленных институтах, сам факт существования которых был гостайной. Школьник, интересовавшийся этой наукой и мечтавший сделать ее своей профессией, не мог просто так прийти в такой институт и подать документы на обучение, как в обычный вуз. Однако в XXI веке требование осуществить передачу данных между абонентами скрытно от посторонних привело к тому, что "информация как вода - дырочку найдет", а спецслужбам, охранявшим секреты, ничего не осталось, кроме как пересмотреть это положение. И сейчас криптография преподается уже совершенно открыто. \\ \\+С древности, когда криптография только зарождалась, и года как минимум до 1990-го математическая криптография была страшным секретом, изучали ее крайне немногочисленные люди в крайне немногочисленных институтах, сам факт существования которых был гостайной. Школьник, интересовавшийся этой наукой и мечтавший сделать ее своей профессией, не мог просто так прийти в такой институт и подать документы на обучение, как в обычный вуз. Однако в XXI веке требование осуществить передачу данных между абонентами скрытно от посторонних привело к тому, что "информация как вода - дырочку найдет", а спецслужбам, охранявшим секреты, ничего не осталось, кроме как пересмотреть это положение. И сейчас криптография преподается уже совершенно открыто, люди получают официальные дипломы и по ним устраиваются на работу. Говорят, что эта работа неплохо оплачивается. \\ \\
 ==== Характеристика эпохи ==== ==== Характеристика эпохи ====
 Новейшая эпоха в компьютерном мире характеризуется множеством факторов: \\ Новейшая эпоха в компьютерном мире характеризуется множеством факторов: \\
igor/istoria.txt · Последнее изменение: 2022/05/01 18:15 — igor