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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2019/07/12 23:40] – [Программирование в новое время] igorigor:istoria [2019/12/03 15:15] – [Мировая компьютерная сеть в новейшее время] 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 века военная вычислительная техника развивалась бурно, а гражданская заметно от нее отставала. \\
 === *** === === *** ===
Строка 153: Строка 155:
 Так неожиданно для всех возникла профессия программиста. Возникла как будто на пустом месте - и сразу в полный рост. \\ Так неожиданно для всех возникла профессия программиста. Возникла как будто на пустом месте - и сразу в полный рост. \\
 Элементной базой первых компьютеров были, как мы уже знаем, электромагнитные реле и электровакуумные лампы. Они не были придуманы на пустом месте - это были серийные промышленные изделия, использовавшиеся в аппаратуре связи. Стало быть, кто-то эти изделия создавал, и кто-то их применял. То есть первые компьютеростроители были обычными инженерами: электриками и электронщиками. А программистов среди них не было. Программирование не преподавалось в институтах, по нему не было книг. Между тем работа программиста требует специальных знаний, которые мало коррелируются с обычной математикой и практически совсем не коррелируются ни с электротехникой, ни с электроникой. Объем же этих знаний находится на пределе того, что доступно человеку с очень высоко развитым интеллектом! То есть программирование - самостоятельная профессия: ты можешь изучить целенаправленно именно эту профессию и работать в ней много лет, не нуждаясь ни в чем другом. \\ Элементной базой первых компьютеров были, как мы уже знаем, электромагнитные реле и электровакуумные лампы. Они не были придуманы на пустом месте - это были серийные промышленные изделия, использовавшиеся в аппаратуре связи. Стало быть, кто-то эти изделия создавал, и кто-то их применял. То есть первые компьютеростроители были обычными инженерами: электриками и электронщиками. А программистов среди них не было. Программирование не преподавалось в институтах, по нему не было книг. Между тем работа программиста требует специальных знаний, которые мало коррелируются с обычной математикой и практически совсем не коррелируются ни с электротехникой, ни с электроникой. Объем же этих знаний находится на пределе того, что доступно человеку с очень высоко развитым интеллектом! То есть программирование - самостоятельная профессия: ты можешь изучить целенаправленно именно эту профессию и работать в ней много лет, не нуждаясь ни в чем другом. \\
-Теперь вспомним, что мы говорили выше о стоимости вычислительной операции в древние времена. Стояло требование: программа должна содержать как можно меньше операций, а профит (польза, прибыль) от каждой операции должен быть максимальным. Таков был категорический императив древнего программирования (да и в средние века мало что изменилось). Любая попытка игнорировать или обойти этот императив ничем, кроме убытков, закончиться не могла. Но мы-то, конечно, понимаем, что задача извлечь максимум профита из ограниченного ресурса никогда и нигде в мире не была слишком простой. Стало быть, и людей, способных эту задачу решать, никогда и нигде в мире не было слишком много. Отсюда очевидна необходимость налаживать профессиональный отбор и подготовку таких специалистов. А теперь прикиньте: допустим, летом 1951 года, предвидя запуск М-1 и МЭСМ, мы объявим прием абитуриентов по специальности "программирование" - к работе они приступят не раньше 1956-го года, а еще потребуется года три, чтобы понять, насколько они годны и насколько годна методика их подготовки... На дворе 1958 год - закончен выпуск "Стрелы", ей на смену пришли другие машины, притом много и разных... \\+Теперь вспомним, что мы говорили выше о стоимости вычислительной операции в древние времена. Стояло требование: программа должна содержать как можно меньше операций, а профит (польза, прибыль) от каждой операции должен быть максимальным. Таков был категорический императив древнего программирования, который пережил и средние века. В новое время он был пересмотрен, но в ту эпоху, которую мы сейчас обсуждаем, любая попытка игнорировать или обойти этот императив ничем, кроме убытков, закончиться не могла. Мы-то, конечно, понимаем, что задача извлечь максимум профита из ограниченного ресурса никогда и нигде в мире не была слишком простой. Стало быть, и людей, способных эту задачу решать, никогда и нигде в мире не было слишком много. Отсюда очевидна необходимость налаживать профессиональный отбор и подготовку таких специалистов. А теперь прикиньте: допустим, летом 1951 года, предвидя запуск М-1 и МЭСМ, мы объявим прием абитуриентов по специальности "программирование" - к работе они приступят не раньше 1956-го года, а еще потребуется года три, чтобы понять, насколько они годны и насколько годна методика их подготовки... На дворе 1958 год - закончен выпуск "Стрелы", ей на смену пришли другие машины, притом много и разных... \\
 Программирование в древности было мастерством на грани искусства. Программистов было мало, а для непрограммиста разработка программ представлялась чем-то совершенно запредельным. \\ Программирование в древности было мастерством на грани искусства. Программистов было мало, а для непрограммиста разработка программ представлялась чем-то совершенно запредельным. \\
 === Задачи и особенности применения ЭВМ === === Задачи и особенности применения ЭВМ ===
Строка 216: Строка 218:
 Рабочее место, соединенное с мейнфреймом или сервером, называется **//клиентом//**. В современном компьютерном мире под этим словом чаще подразумевается не машина, а программа, образ действия которой состоит в том, чтобы не решать сложную задачу своими силами, а послать соответствующую команду на другой компьютер, и полученный от него ответ предъявить пользователю. Интернет-браузер, например, представляет собой не что иное как 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". \\ \\
 ==== Суперкомпьютеры и многопроцессорные комплексы ==== ==== Суперкомпьютеры и многопроцессорные комплексы ====
 В предыдущей главе мы рассмотрели ЭВМ БЭСМ-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 году, и в последующие десятилетия Крей построил несколько машин, каждая следующая их которых была мощнее и совершеннее предыдущих. \\
Строка 238: Строка 240:
 В-третьих, программистов просто физически не хватало, а те немногие, что были, в основном имели такой уровень подготовки, который позволял в лучшем случае "передирать" американские программы. СССР уже много лет как прекратил существование, но советский менталитет в области компьютеров и программирования отнюдь не изжит, и последствия этого мы будем ощущать на своих шкурах еще долго. \\ В-третьих, программистов просто физически не хватало, а те немногие, что были, в основном имели такой уровень подготовки, который позволял в лучшем случае "передирать" американские программы. СССР уже много лет как прекратил существование, но советский менталитет в области компьютеров и программирования отнюдь не изжит, и последствия этого мы будем ощущать на своих шкурах еще долго. \\
 Хотя персональные компьютеры и появились в начале 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}} \\
Строка 301: Строка 303:
 Во-вторых, средневековый компилятор не имеет встроенных функций. Фирма, разрабатывающая такой компилятор, поставляет его на рынок, конечно, не "голышом", а в комплекте с достаточно богатым набором уже скомпилированных типовых процедур на самые разные случаи жизни, но эти процедуры более не являются встроенными - программист может делать с ними что угодно, как со своими. Собственно, для него теперь вообще нет разницы, откуда взялась та или иная подпрограмма: сам он ее написал, или получил у коллег, или приобрел на стороне. Так у программиста формируется //библиотека// подпрограмм, которая имеет самостоятельную ценность, не привязанную к какому-либо компилятору. Соответственно теперь большой проект может разрабатываться коллективом программистов, возможно даже использующих разные компиляторы и даже разные языки. \\  Во-вторых, средневековый компилятор не имеет встроенных функций. Фирма, разрабатывающая такой компилятор, поставляет его на рынок, конечно, не "голышом", а в комплекте с достаточно богатым набором уже скомпилированных типовых процедур на самые разные случаи жизни, но эти процедуры более не являются встроенными - программист может делать с ними что угодно, как со своими. Собственно, для него теперь вообще нет разницы, откуда взялась та или иная подпрограмма: сам он ее написал, или получил у коллег, или приобрел на стороне. Так у программиста формируется //библиотека// подпрограмм, которая имеет самостоятельную ценность, не привязанную к какому-либо компилятору. Соответственно теперь большой проект может разрабатываться коллективом программистов, возможно даже использующих разные компиляторы и даже разные языки. \\ 
 Для поддержания библиотеки в рабочем состоянии используется служебная программа - библиотекарь. В юниксоидных системах эта программа называется lib. \\ Для поддержания библиотеки в рабочем состоянии используется служебная программа - библиотекарь. В юниксоидных системах эта программа называется lib. \\
-Что же касается исходных данных для решения задачи, то теперь можно было (а) заготовить их в виде отдельного файла или (б) вводить по мере потребности в них, в ответ на запрос машины. Вставка исходных данных прямо в текст программы, практиковавшаяся в древние времена, стала бессмысленной, сейчас так уже никто не делает. \\+Что же касается исходных данных для решения задачи, то теперь можно было (а) заготовить их в виде отдельного файла или (б) вводить по мере потребности в них, в ответ на запрос машины. Вставка исходных данных прямо в текст программы, практиковавшаяся в древние времена, стала бессмысленной, сейчас так уже никто не делает. Файловый принцип организации данных на дисках стал универсальным инструментом для обеспечения совместной работы нескольких программ при решении смежных задач. Теперь программное обеспечение чаще всего выпускается не в виде отдельных программ, каждая из которых решает свою задачу, а в виде программных пакетов, каждый из которых обеспечивает целый комплекс задач, оставляя пользователю свободу замены любой отдельной программы на что-то более новое или просто другое. \\
 С появлением понятия библиотеки произошло размежевание таких понятий, как язык программирования, система программирования, инструментальные средства программирования. Если в древнюю эпоху программист работал на некотором языке и этим определялся весь его стиль работы (а кто-то и до сих пор так думает), то начиная со средних веков язык уже не значит ничего. Способность программиста решать то или иное множество задач с той или иной эффективностью теперь определяется, прежде всего, теми библиотеками, которые он имеет, и в какой-то мере теми программными инструментами, которыми пользуется. \\ С появлением понятия библиотеки произошло размежевание таких понятий, как язык программирования, система программирования, инструментальные средства программирования. Если в древнюю эпоху программист работал на некотором языке и этим определялся весь его стиль работы (а кто-то и до сих пор так думает), то начиная со средних веков язык уже не значит ничего. Способность программиста решать то или иное множество задач с той или иной эффективностью теперь определяется, прежде всего, теми библиотеками, которые он имеет, и в какой-то мере теми программными инструментами, которыми пользуется. \\
 В предыдущей главе мы обсудили Алгол как структурный язык и Фортран как бесструктурный. Именно по причине бесструктурности Фортран оказался тупиковой ветвью эволюции, а на место Алгола пришли его потомки. \\ В предыдущей главе мы обсудили Алгол как структурный язык и Фортран как бесструктурный. Именно по причине бесструктурности Фортран оказался тупиковой ветвью эволюции, а на место Алгола пришли его потомки. \\
-В конце 60-х - начале 70-х годов Н. Вирт из Швейцарской высшей технической школы Цюриха (ETHZ) создал язык **Паскаль**, в котором воплотился многолетний опыт эксплуатации Алгола. Вирт не планировал революции в программировании - он хотел создать хороший учебно-боевой язык, и с этой задачей он справился блестяще. Новый язык содержал все полезное, что было в его прототипах, и многое, чего в них не хватало, но не прощал «лишних вольностей». Его правила строги и прозрачны, поэтому изучение Паскаля по плечу даже школьнику, а освоив его однажды, вы сможете работать на нем всю жизнь, не испытывая нужды ни в чем другом. \\+В конце 60-х - начале 70-х годов Н. Вирт из Швейцарской высшей технической школы Цюриха (ETHZ) создал язык **Паскаль**, в котором воплотился многолетний опыт эксплуатации Алгола. Вирт не планировал революции в программировании - он хотел создать хороший учебно-боевой язык, и с этой задачей он справился блестяще. Новый язык содержал все полезное, что было в его прототипах, и многое, чего в них не хватало, но не прощал «лишних вольностей». Его правила строги и прозрачны, поэтому изучение Паскаля по плечу даже школьнику, а освоив его однажды, вы сможете работать на нем всю жизнь, не испытывая нужды ни в чем другом. Исходя из этого я рассматриваю Паскаль как очередную маленькую эволюционную ступень по отношению к Алголу. \\ 
 +Для нас чрезвычайно важен вопрос производительности труда программиста. В то время, о котором мы сейчас говорим, вопрос о создании новой технологии программирования, существенно более производительной, чем технология Фортрана и Алгола, по идее, уже должен был витать в атмосфере... но до меня не доходила информация о том, что этот вопрос кто-то хотя бы заявил вслух. Паскаль, по сравнению с Алголом, обещал некоторую прибавку производительности за счет более ясных правил (что исключает мелкую, но досадную путаницу, которая каждый день тормозит работу программиста). Эта прибавка, однако, не могла сыграть существенной роли. \\
 Почему Паскаль оказался заброшен и забыт? Я бы сказал: ему просто не повезло. Он не вписался в какой-либо глобальный проект, не стал официальным языком крупного программного консорциума, и когда толпа закричала: "долой!", не нашлось желающих его защищать. \\ Почему Паскаль оказался заброшен и забыт? Я бы сказал: ему просто не повезло. Он не вписался в какой-либо глобальный проект, не стал официальным языком крупного программного консорциума, и когда толпа закричала: "долой!", не нашлось желающих его защищать. \\
 Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\ Следующей работой Н. Вирта стал язык **Модула-2**, в котором Вирт воплотил идею модульного программирования: весь "багаж", наработанный программистами, предлагалось разделить на модули, каждый из которых содержит "тематическую подборку" процедур и функций, а при написании новой программы просто указывать, какую процедуру (функцию) из какого модуля использовать. Идея модульного программирования чрезвычайно полезна, но внедрять ее в один какой-то язык, а тем более создавать новый язык специально ради этого, - это оказалось ошибкой. Такие полезные фичи целесообразно создавать вне привязки к какому-либо языку, операционной системе и т. д. Таким образом, язык Модула-2 не представлял собой ничего революционного по сравнению с Паскалем, и неудивительно, что он не получил большого признания.\\
Строка 311: Строка 314:
 {{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). Языки этого семейства в основном используются сейчас, так что говорить о новой или новейшей эпохе применительно к языкам программирования не приходится. \\
 Итак, повторяю еще раз: чудес от языка Си ждали не те, кто его создавал, - ждет нынешняя программирующая молодежь. Как любят говорить поэты или просто авторы книг по психологии: если очень хочешь чуда, а оно долго не происходит, - значит когда-нибудь оно обязательно произойдет... (или еще вариант: если очень хочешь чуда, а оно долго не происходит, - сделай чудо сам). Я, однако, не поэт и не психолог - я суровый технарь, и отвечаю на это так: если очень хочешь чуда, а оно долго не происходит, то на свет появляются мифы. \\ Итак, повторяю еще раз: чудес от языка Си ждали не те, кто его создавал, - ждет нынешняя программирующая молодежь. Как любят говорить поэты или просто авторы книг по психологии: если очень хочешь чуда, а оно долго не происходит, - значит когда-нибудь оно обязательно произойдет... (или еще вариант: если очень хочешь чуда, а оно долго не происходит, - сделай чудо сам). Я, однако, не поэт и не психолог - я суровый технарь, и отвечаю на это так: если очень хочешь чуда, а оно долго не происходит, то на свет появляются мифы. \\
Строка 366: Строка 369:
 С появлением в конце XIX века механического кассового аппарата, арифмометра и табулятора торговля и бухгалтерия (короче: сфера бизнеса) получили высокую степень компьютеризации, достаточную для этих отраслей человеческой деятельности. После этого прошло без малого столетие, в течение которого в этой сфере не произошло сколько-нибудь значительных перемен. \\ С появлением в конце XIX века механического кассового аппарата, арифмометра и табулятора торговля и бухгалтерия (короче: сфера бизнеса) получили высокую степень компьютеризации, достаточную для этих отраслей человеческой деятельности. После этого прошло без малого столетие, в течение которого в этой сфере не произошло сколько-нибудь значительных перемен. \\
 Первые цифровые компьютеры были очень дороги - во много раз дороже табуляторов, не говоря уж про более простую технику. А значит, дорого было и решение задач на них. На решение важнейших научных и инженерных задач деньги находились, а вот с бухгалтерией и экономикой было сложнее. Грубо говоря, решение задачи не могло стоить больше, чем сама задача, иначе контора останется в убытке. Но по мере развития техники цена компьютеров снижалась, а их способность решать задачи того или иного класса повышалась - рано или поздно эти показатели должны были встретиться, и в 60-е годы (не в последнюю очередь с появлением языка Кобол) они встретились: использование компьютеров для решения бизнес-задач стало ВЫГОДНО. Это в капиталистических странах. В СССР положение было иное. \\ Первые цифровые компьютеры были очень дороги - во много раз дороже табуляторов, не говоря уж про более простую технику. А значит, дорого было и решение задач на них. На решение важнейших научных и инженерных задач деньги находились, а вот с бухгалтерией и экономикой было сложнее. Грубо говоря, решение задачи не могло стоить больше, чем сама задача, иначе контора останется в убытке. Но по мере развития техники цена компьютеров снижалась, а их способность решать задачи того или иного класса повышалась - рано или поздно эти показатели должны были встретиться, и в 60-е годы (не в последнюю очередь с появлением языка Кобол) они встретились: использование компьютеров для решения бизнес-задач стало ВЫГОДНО. Это в капиталистических странах. В СССР положение было иное. \\
-Проектировщики отечественных ЭВМ, разумеется, не могли не задумываться над применением своих машин для решения экономических и планово-управленческих задач, но испытывали противодействие со стороны всевозможного партийно-хозяйственного начальства. Сейчас нам снова придется вспоминать, в каком мире живем. В капиталистическом мире  +Проектировщики отечественных ЭВМ, разумеется, не могли не задумываться над применением своих машин для решения экономических и планово-управленческих задач, но испытывали противодействие со стороны всевозможного партийно-хозяйственного начальства. Сейчас нам снова придется вспоминать, в каком мире живем. В капиталистическом мире любой руководитель (завода, лаборатории, института, цеха, отдела...) сознает свою обязанность принимать экономически взвешенные решения. Иначе фирма понесет убытки, которые ощутит на своей шкуре каждый: от генерального директора до уборщицы. В социалистической экономике таких понятий, как прибыль или убытки, просто не было. Убыточность всегда и во всем была позором социализма, ее пытались прятать, но она органически свойственна социалистическому строю: прятать ее было как-то возможно, а устранить - нетС одной стороны, мы не можем требовать прибыльности от хозяйствующих субъектов, которые несвободны в принятии решений (а дать им свободу - значит отказаться от коренных принципов социализма). С другой стороны, директор прибыльного предприятия неизбежно начнет требовать такой свободы для себя. И с третьей стороны, сам факт существования прибыльных предприятий ставит под вопрос профессиональную компетентность тех партийных функционеров, которые "сверху" навязывают предприятиям экономические решения. Так что какие-либо экономические расчеты на компьютере были бессмысленны, потому что сегодня ты что-то сосчитаешь, а завтра придет ценное указание из райкома или обкома - и придется все делать как начальство велело (а начальству тоже совершенно непопутно, чтобы его решения сверяли с каким-то там компьютером)... \\
-любой руководитель (завода, лаборатории, института, цеха, отдела...) сознает свою обязанность принимать экономически взвешенные решения. Иначе фирма понесет убытки, которые ощутит на своей шкуре каждый: от генерального директора до уборщицы. В социалистической экономике таких понятий, как прибыль или убытки, просто не было. Убыточность всегда и во всем была позором социализма, ее пытались прятать, но она органически свойственна социалистическому строю, и устранить ее совсем было невозможно. Мы же не можем требовать прибыльности от хозяйствующих субъектов, которые несвободны в принятии решений (а дать им свободу - значит отказаться от коренных принципов социализма). Какие-либо экономические расчеты на компьютере были бессмысленны, потому что сегодня ты что-то сосчитаешь, а завтра придет ценное указание из райкома или  +
-обкома - и придется все делать как начальство велело (а начальству тоже совершенно непопутно, чтобы его решения сверяли с каким-то там компьютером)... \\+
 Сказанное не означает, что дорога к применению ЭВМ в экономике была перекрыта полностью и категорически. \\ Сказанное не означает, что дорога к применению ЭВМ в экономике была перекрыта полностью и категорически. \\
 Около 1990 года, с крушением социализма и поворотом России к капитализму, ситуация резко изменилась. Сошлись в одно время в одном месте несколько факторов. Во-первых, появление огромного количества частных фирм, на каждой из которых нужен был как минимум бухгалтер, а возможно и экономист. Во-вторых, усиление контроля государственных финансовых органов за этими фирмами и как следствие - усложнение отчетности. Профессии бухгалтера и экономиста внезапно стали престижными и неплохо оплачиваемыми. В-третьих, развал множества заводов и институтов привел к высвобождению тысяч ученых и инженеров, которые были вынуждены выбирать себе новую профессию, по большому счету, между охранником и бухгалтером: другого им не предлагали (да и сейчас не предлагают). И в четвертых, поступление на рынок дешевых персональных компьютеров разной степени  Около 1990 года, с крушением социализма и поворотом России к капитализму, ситуация резко изменилась. Сошлись в одно время в одном месте несколько факторов. Во-первых, появление огромного количества частных фирм, на каждой из которых нужен был как минимум бухгалтер, а возможно и экономист. Во-вторых, усиление контроля государственных финансовых органов за этими фирмами и как следствие - усложнение отчетности. Профессии бухгалтера и экономиста внезапно стали престижными и неплохо оплачиваемыми. В-третьих, развал множества заводов и институтов привел к высвобождению тысяч ученых и инженеров, которые были вынуждены выбирать себе новую профессию, по большому счету, между охранником и бухгалтером: другого им не предлагали (да и сейчас не предлагают). И в четвертых, поступление на рынок дешевых персональных компьютеров разной степени 
Строка 377: Строка 378:
 {{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 века - именно тогда начала формироваться мировая сетевая инфраструктура (попросту Сеть), которую иногда отождествляют с интернетом, но это неправильно. Сеть - это джунгли, в которых обитает достаточно разнообразная фауна. Интернет - только одна из форм сетевой жизни, просто он легче других поддается одомашниванию и поэтому известен широкому кругу людей. К тому же так получилось, что именно интернету Сеть в значительной мере обязана тем обликом, который она имеет сегодня. Но даже если бы интернет не был изобретен, Сеть все равно была бы полезна, и она должна была появиться - и она появилась. \\
 Рассмотрим, какие еще области применения имеет глобальная Сеть. \\ Рассмотрим, какие еще области применения имеет глобальная Сеть. \\
 * Дистанционное выполнение команд на компьютерах, в частности дистанционное обслуживание компьютеров системными администраторами. \\ * Дистанционное выполнение команд на компьютерах, в частности дистанционное обслуживание компьютеров системными администраторами. \\
Строка 437: Строка 438:
 ==== Программирование в новое время ==== ==== Программирование в новое время ====
 Рассматривая программирование в __древние__ времена, мы заметили, что компьютеры имели мало оперативной памяти, из-за чего программист должен был писать программу так, чтобы количество команд в ней было минимальным, а польза от каждой команды - максимальной. Это требование никак невозможно было обойти, поэтому мы назвали его категорическим императивом программирования. Компьютеры __средних веков__ имели гораздо больше оперативной памяти и прощали некоторую избыточность команд, но мечта программистов о райской жизни на земле не сбылась (в очередной раз, и можно не сомневаться - не в последний): средневековые задачи требовали программ большого объема. В __новое время__ компьютеров стало реально много, задач для них - тоже, так что объем работ для программистов еще прибавился. Как решить проблему нехватки рабочих рук в программировании? С наших сегодняшних позиций просматриваются следующие варианты: \\ Рассматривая программирование в __древние__ времена, мы заметили, что компьютеры имели мало оперативной памяти, из-за чего программист должен был писать программу так, чтобы количество команд в ней было минимальным, а польза от каждой команды - максимальной. Это требование никак невозможно было обойти, поэтому мы назвали его категорическим императивом программирования. Компьютеры __средних веков__ имели гораздо больше оперативной памяти и прощали некоторую избыточность команд, но мечта программистов о райской жизни на земле не сбылась (в очередной раз, и можно не сомневаться - не в последний): средневековые задачи требовали программ большого объема. В __новое время__ компьютеров стало реально много, задач для них - тоже, так что объем работ для программистов еще прибавился. Как решить проблему нехватки рабочих рук в программировании? С наших сегодняшних позиций просматриваются следующие варианты: \\
-* Разрабатывать новые технологии, повышающие производительность труда программистов. Если продолжить нашу аналогию с паровозами, то на железнодорожном транспорте прогрессивной технологией является электрификация дорог: электровоз, по размерам и весу сходный с паровозом, может иметь бОльшую мощность, а значит везти бОльший груз... А что у нас? Похоже, что ничего. Вопрос о создании прогрессивных технологий на смену старому +* Разработка новых технологий, повышающих производительность труда программистов. Если продолжить нашу аналогию с паровозами, то на железнодорожном транспорте прогрессивной технологией является электрификация дорог: электровоз, по размерам и весу сходный с паровозом, может иметь бОльшую мощность, а значит везти бОльший груз... А что у нас? Похоже, что ничего. Вопрос о создании прогрессивных технологий на смену старому 
 верному Алголу никогда и никем даже не ставился, а если вопрос не ставить, то и ответа на него ждать не приходится (еще раз акцентирую внимание на том, что язык Си прогрессивной технологией по отношению к Алголу не является). \\ верному Алголу никогда и никем даже не ставился, а если вопрос не ставить, то и ответа на него ждать не приходится (еще раз акцентирую внимание на том, что язык Си прогрессивной технологией по отношению к Алголу не является). \\
-* Наращивать количество учебных мест в институтах, готовящих программистов. Решение вроде бы очевидное, но есть подводный камень: сколько бы мы ни создавали учебных мест, на них будут приходить люди, при всем достаточном IQ не обладающие нужными деловыми качествами. Вложить в них профессиональные знания не проблема, а вот научить их самостоятельно разрабатывать качественный продукт - к этому институтские преподаватели не готовы в принципе. В других профессиях, как рабочих, так и инженерных, деловые качества не играют такой важной роли, как у нас. \\+* Наращивание количества учебных мест в институтах, готовящих программистов. Решение вроде бы очевидное, но есть подводный камень: сколько бы мы ни создавали учебных мест, на них будут приходить люди, при всем достаточном IQ не обладающие нужными деловыми качествами. Вложить в них профессиональные знания не проблема, а вот научить их самостоятельно разрабатывать качественный продукт - к этому институтские преподаватели не готовы в принципе, потому что настроены на науку, а не на воспитательную работу (в других профессиях, как рабочих, так и инженерных, деловые качества не играют такой важной роли, как у нас). \\ 
 +* Коммерческая (и некоммерческая) разработка программ: хотя пользователей очень много, среди них совсем немного таких, которые решают какие-то свои, совершенно индивидуальные задачи. У большинства пользователей задачи абсолютно типовые. \\
 * "Программирование без программирования": создать сейчас такую программу, с помощью которой конечный пользователь впоследствии мог бы решать новые задачи, не прибегая к услугам программиста. \\ * "Программирование без программирования": создать сейчас такую программу, с помощью которой конечный пользователь впоследствии мог бы решать новые задачи, не прибегая к услугам программиста. \\
-* Вовлечь в разработку программ людей, не обладающих высокой профессиональной подготовкой, путем разработки "суррогатных" технологий программирования. \\+* Вовлечь в разработку программ людей, не обладающих высокой профессиональной подготовкой, путем разработки "суррогатных" технологий программирования, совершенно немыслимых в предыдущие исторические эпохи. \\
 === Задачи, языки и технологии программирования === === Задачи, языки и технологии программирования ===
 В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\ В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\
Строка 488: Строка 490:
 === Суррогатные технологии в программировании === === Суррогатные технологии в программировании ===
 История учит, что новые технические решения в мире крайне редко появляются просто так, с бухты-барахты. Если какая-то технология появилась и нам кажется, что она никому не нужна, - скорее всего, мы либо чего-то не знаем, либо не придали должного значения. Смысл суррогатных технологий в том, чтобы вовлечь в программирование людей, не обладающих достаточно высокой квалификацией. \\ История учит, что новые технические решения в мире крайне редко появляются просто так, с бухты-барахты. Если какая-то технология появилась и нам кажется, что она никому не нужна, - скорее всего, мы либо чего-то не знаем, либо не придали должного значения. Смысл суррогатных технологий в том, чтобы вовлечь в программирование людей, не обладающих достаточно высокой квалификацией. \\
-Можно ли назвать суррогатной технологией программные продукты семейства DBase/FoxPro/Clipper, которые мы рассмотрели чуть выше? Если строго следовать букве определения, то нет: ведь они имели первоначальную цель вовлечь в программирование не низкоквалифицированных программистов, а конечных пользователей, которые имеют тот или иной уровень квалификации в своей предметной области, а программистами не являются. Однако эти продукты очень легко могут стать суррогатом в руках начальника, навязывающего их своим подчиненным без учета их реальных способностей и качеств. \\ +Можно ли назвать суррогатной технологией программные продукты семейства DBase/FoxPro/Clipper, которые мы рассмотрели чуть выше? Если строго следовать букве определения, то нет: ведь они имели первоначальную цель вовлечь в программирование не низкоквалифицированных программистов, а конечных пользователей, которые имеют тот или иной уровень квалификации в своей предметной области, а программистами не являются. \\ 
-Первой суррогатной технологией стал Бэйсик, но, как мы уже отмечали выше, он стал таковой не сразу. Первоначально он создавался как инструмент для начального обучения программированию, и в этом качестве он был вполне адекватен реалиям 60-х годов XX века. Но в 80-е годы даже в советских учебных заведениях уже были машины СМ-4 с видеотерминалами. Такие машины спокойно "переваривали" любой настоящий язык программирования, такой как Алгол, Паскаль или даже Си. Проблема в том, что наши преподы про Алгол и Паскаль знали в лучшем случае понаслышке, а про Си не знали совсем (я свое первое руководство по языку Си прочитал уже после окончания института). И системные администраторы, обслуживавшие эти машины, - аналогично. Учить студентов серьезному программированию от них никто не требовал, вот они и ехали по накатанной колее. Похоже, что в США ситуация была ненамного лучше, потому что фирмы "Микрософт" и "Борланд" в 80-е годы выпустили на рынок интегрированные среды разработки программ (QuickBasic, он же QBasic, и TurboBasic соответственно) на основе языка Бэйсик. Впрочем, эти продукты были все-таки скорее учебными. Однако даже с натяжкой нельзя назвать учебным инструмент, который та же фирма "Микрософт" уже в 90-е годы внедрила в свой пакет Microsoft Office. Называлась эта штука Visual Basic. Он-то и стал первой по-настоящему суррогатной технологией, получившей большой рынок. \\+Сейчас хочу заострить внимание на тонком моменте. Та или иная технология может с самого начала создаваться как суррогатная, но так бывает не всегда. В качестве примера противоположной ситуации рассмотрим старый верный Бэйсик. Первоначально он создавался как инструмент для начального обучения программированию, и в этом качестве он был вполне адекватен как уровню развития "железа" 60-х годов XX века, так и тем задачам, которые на него возлагались. Но в 80-е годы даже в советских учебных заведениях уже были машины СМ-4 с видеотерминалами. Такие машины спокойно "переваривали" любой настоящий язык программирования, такой как Алгол, Паскаль или даже Си. Проблема в том, что наши преподы про Алгол и Паскаль знали в лучшем случае понаслышке, а про Си не знали совсем (я свое первое руководство по языку Си прочитал уже после окончания института). И системные администраторы, обслуживавшие эти машины, - аналогично. Учить студентов серьезному программированию от них никто не требовал, вот они и ехали по накатанной колее. Иначе говоря, Бэйсик стал суррогатной технологией постольку, поскольку его стали навязывать людям, которые в нем не нуждались и имели все необходимое для использования более серьезных технологий. Так было у нас, но похоже, что в США ситуация была ненамного лучше, потому что фирмы "Микрософт" и "Борланд" в 80-е годы выпустили на рынок интегрированные среды разработки программ (QuickBasic, он же QBasic, и TurboBasic соответственно) на основе языка Бэйсик. Впрочем, эти продукты были все-таки скорее учебными. Однако даже с натяжкой нельзя назвать учебным инструмент, который та же фирма "Микрософт" уже в 90-е годы внедрила в свой пакет Microsoft Office. Называлась эта штука Visual Basic. Он-то и стал первой по-настоящему суррогатной технологией, получившей большой рынок. \\
 Чтобы оценить это явление по шкале "хорошо - плохо", мы должны принять во внимание два постулата. Во-первых, в нашей жизни бывают ситуации, когда суррогат реально необходим. И ленинградский хлеб из опилок и отрубей с огнем и кровью пополам был нужен... в свое время и в своем месте. Но потом, когда блокада была прорвана и враг отступил от города, от суррогата нужно было отказываться - и хлеб начали выпекать из пшеницы, как, собственно, и принято у нормальных людей. \\ Чтобы оценить это явление по шкале "хорошо - плохо", мы должны принять во внимание два постулата. Во-первых, в нашей жизни бывают ситуации, когда суррогат реально необходим. И ленинградский хлеб из опилок и отрубей с огнем и кровью пополам был нужен... в свое время и в своем месте. Но потом, когда блокада была прорвана и враг отступил от города, от суррогата нужно было отказываться - и хлеб начали выпекать из пшеницы, как, собственно, и принято у нормальных людей. \\
-Во-вторых, в каждой работе, в каждой профессии есть Мастера, а есть халтурщики-шабашники. И есть, как правило, некая средняя прослойка, причем чаще всего она - самая многочисленная. Для чего вообще нужны Мастера, ведь их работа стоит обычно дороже, чем работа шабашников, и даже середнячков? Есть на свете экономика. Пресволочнейшая штуковина: существует - и ни в зуб ногой! (слова В. Маяковского, первоначально сказанные про поэзию, ну а я приведу их здесь). В экономике есть моменты, которые на первый взгляд кажутся чудом или хуже того - абсурдом. Один из таких моментов как раз и состоит в том, что, хотя Мастер непосредственно за свою работу просит большую плату, конечный результат его работы приносит бОльшую прибыль (напоминаю: прибыль - цель и смысл любой финансово-хозяйственной деятельности, осуществляемой людьми). Как такое может быть? - Элементарно: Мастер на то и Мастер, что он знает, как сделать свое дело с максимально прибыльным результатом, а работники более низкого уровня либо этого не знают, либо сознательно пренебрегают. Но большинство заказчиков  +Во-вторых, в каждой работе, в каждой профессии есть Мастера, а есть халтурщики-шабашники. И есть, как правило, некая средняя прослойка, причем чаще всего она - самая многочисленная. Для чего вообще нужны Мастера, ведь их работа стоит обычно дороже, чем работа шабашников, и даже середнячков? Есть на свете экономика. Пресволочнейшая штуковина: существует - и ни в зуб ногой! (слова В. Маяковского, первоначально сказанные про поэзию, ну а я приведу их здесь). В экономике есть моменты, которые на первый взгляд кажутся чудом или хуже того - абсурдом. Один из таких моментов как раз и состоит в том, что, хотя Мастер непосредственно за свою работу просит большую плату, конечный результат его работы приносит бОльшую прибыль (напоминаю: прибыль - цель и смысл любой финансово-хозяйственной деятельности, осуществляемой людьми). Как такое может быть? - Элементарно: Мастер на то и Мастер, что он знает, как сделать свое дело с максимально прибыльным результатом, а работники более низкого уровня либо этого не знают, либо сознательно пренебрегают. Но большинство заказчиков (неважно, о какой работе речь - о работе плотника, допустим, или сантехника, или программиста) хочет подешевле... "А Балда стоит и приговаривает с укоризной: не гонялся бы ты, поп, за дешевизной" (это уже не Маяковский, это Пушкин). Ничем другим Мастера свое существование оправдать не могут, но ничего другого им и не требуется. Но если это так, то что же получается: работа халтурщика всегда влечет за собой убытки для заказчика? С другой стороны, умные люди говорят: "Я не настолько богат, чтобы покупать дешевые вещи". Резюмируем: суррогатные технологии нужны для того, чтобы вовлечь в программирование низкоквалифицированных работников ценой (а) увеличения сроков и трудоемкости работ, (б) снижением качества конечного продукта и (в) снижением прибыли Заказчика при эксплуатации этого продукта. Плохо в этих технологиях не то, что они вообще существуют, а то, что их роль и место в мировом процессе разработки ПО неадекватно оценивается большинством населения. Кто-то считает их передовыми и навязывает их программистам нормального уровня, которые обладают необходимыми знаниями и качествами для работы по нормальным технологиям. \\ 
-(неважно, о какой работе речь - о работе плотника, допустим, или сантехника, или программиста) хочет подешевле... "А Балда стоит и приговаривает с укоризной: не гонялся бы ты, поп, за дешевизной" (это уже не Маяковский, это Пушкин). Ничем другим Мастера свое существование оправдать не могут, но ничего другого им  +В свете того, что мы только что обсудили, пробежимся еще раз по эволюции языков программирования. В самом древнем языке - Фортране - использовался //статический// принцип распределения памяти: каждая переменная, участвующая в расчетах, занимала свою, раз и навсегда отведенную ей ячейку памяти. Даже если на каком-то этапе вычислений переменная оказывалась не нужна, ячейка оставалась закреплена за ней и ни для каких иных целей не использовалась. С точки зрения чистой экономики это выглядит не очень рационально, но реальная жизнь и реальная техника не всегда укладывается в рамки чистой экономики. \\ 
-и не требуется. Но если это так, то что же получается: работа халтурщика всегда влечет за собой убытки для заказчика? С другой стороны, умные люди говорят: "Я не настолько богат, чтобы покупать дешевые вещи". Резюмируем: суррогатные технологии нужны для того, чтобы вовлечь в программирование низкоквалифицированных  +В языке следующего поколения - Алголе - использовался //квазистатический// принцип: каждая переменная описывалась в той или иной структуре (а вся программа - тоже структура!), так что две переменных, принадлежащих непересекающимся структурам, могли жить в одной ячейке памяти. Принципиально важно то, что каждая переменная размещалась всегда в одной и той же ячейке: отдельной или "коммунальной", но всегда в одной и той же. Это по-своему интересное техническое решение, однако большой экономии памяти оно в реальной жизни не обеспечило, и в языках-потомках Алгола оно не было повторено. \\ 
-программистов ценой увеличения сроков и трудоемкости работ и снижением качества конечного продукта. Плохо в этих технологиях не то, что они вообще существуют, а то, что их роль и место в мировом процессе разработки ПО неадекватно оценивается большинством населения. Кто-то считает их передовыми и навязывает их программистам нормального уровня, которые обладают необходимыми знаниями и качествами для работы по нормальным технологиям. \\+В 60-е годы был создан Бэйсик - в нем та или иная переменная "образуется" по мере присвоения ей значения. Но, однажды образовавшись, переменная занимала отведенную ей ячейку до окончания работы программы. Таким образом, единственный шанс сэкономить память был в том, что некоторая переменная может вообще не образоваться. Очевидно, в реальной жизни такое бывает нечасто. Если программа используется многократно, то при каждом запуске программы та или иная переменная может, вообще говоря, "вселяться" в разные ячейки памяти - это //динамический// принцип распределения памяти. \\ 
 +Языки семейства DBase/FoxPro/Clipper, будучи следующим после Бэйсика поколением интерпретационных языков, унаследовали от него принцип расперделения памяти, но в них был введен оператор dispose, позволяющий программисту явно указывать, какие переменные больше не нужны, с тем чтобы освободить ячейки для чего-то другого. Проблема в том, что программист может этот оператор использовать, а может и не использовать, и в последнем случае никакой экономии памяти не получится. Очевидно, что разработчики этих языков рассчитывали на то, что имеют дело с достаточно аккуратным программистом, каковых на свете не так уж много. В язык нынешнего поколения - Python - внедрен "автоматический сборщик мусора". Это процедура, которая после выполнения каждой команды просматривает всю нижележащую часть программы на предмет того, что вдруг какие-то переменные становятся не нужны. Эта процедура занимает львиную долю машинного времени, используемого для работы программы. А ради чего все это? - Исключительно ради того, чтобы программист мог не задумываться об освобождении памяти. А много ли раздумий нужно нормальному программисту, чтобы вовремя освобождать память? Ясно, что Python - суррогатная технология, облегчающая (на копейки) жизнь программисту ценой многократного увеличения времени выполнения программы. На самом деле все современные интерпретационные языки в той или иной мере этим грешат, и отсюда у меня к вам всем вопрос: так ли в самом деле необходим Питон программисту, знающему хотя бы Си? \\
 Суррогатные технологии - примета нового и особенно новейшего компьютерного времени, поскольку стали возможны с появлением многочисленных компьютеров с большим быстродействием и большой емкостью оперативной памяти. В древности и в средние века, пока вычислительные ресурсы были дефицитом, такие технологии не имели шансов на признание. \\ \\ Суррогатные технологии - примета нового и особенно новейшего компьютерного времени, поскольку стали возможны с появлением многочисленных компьютеров с большим быстродействием и большой емкостью оперативной памяти. В древности и в средние века, пока вычислительные ресурсы были дефицитом, такие технологии не имели шансов на признание. \\ \\
 ==== Еще немного воспоминаний и размышлений ==== ==== Еще немного воспоминаний и размышлений ====
Строка 504: Строка 507:
 "Изот" - это практически американский 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 г., когда начались массовые поставки персональных компьютеров в СССР. Для наших соотечественников это означало: "забудь все, чему учился раньше - теперь все будет по-другому". Для всего остального мира импорт готовых машин в нашу страну (именно готовых, товарных машин, а не технологий и даже не промышленных образцов) означал выбытие СССР из ряда мировых компьютерных держав. Если же вспомнить, что еще раньше этот ряд покинула Великобритания, то мы поймем, что Соединенные Штаты стали более чем просто лидером - абсолютным законодателем мировой компьютерной моды. \\
Строка 575: Строка 578:
 Сам контроллер чаще всего не имеет ни операционной системы, ни редакторов, ни компиляторов, а иногда вообще не имеет устройств для взаимодействия с человеком (у военных такой компьютер называется счетно-решающим прибором, в отличие от настоящего компьютера, имеющего клавиатуру и экран или что-то заменяющее их). Разработка программ ведется на обычном компьютере (который в этой ситуации называется инструментальной машиной) с использованием //кросс-компилятора// или //кросс-ассемблера//, а готовая программа - прошивка - "заливается" в ПЛК с помощью программатора, который может быть отдельным устройством либо встроенным в ПЛК. Отладка программ, конечно, может осуществляться путем пробных прогонов, но наиболее серьезные специалисты используют //кросс-отладчики// - программы, работающие на обычном компьютере и воспроизводящие в деталях поведение микроконтроллера. То есть, если программист __компьютера__ работает непосредственно на том компьютере, для которого он разрабатывает программу, то программист __микроконтроллера__ или ПЛК может всю работу - от первых замыслов до полной готовности - выполнять на персональном компьютере, даже вообще не имея в руках того устройства, для которого программирует. \\ Сам контроллер чаще всего не имеет ни операционной системы, ни редакторов, ни компиляторов, а иногда вообще не имеет устройств для взаимодействия с человеком (у военных такой компьютер называется счетно-решающим прибором, в отличие от настоящего компьютера, имеющего клавиатуру и экран или что-то заменяющее их). Разработка программ ведется на обычном компьютере (который в этой ситуации называется инструментальной машиной) с использованием //кросс-компилятора// или //кросс-ассемблера//, а готовая программа - прошивка - "заливается" в ПЛК с помощью программатора, который может быть отдельным устройством либо встроенным в ПЛК. Отладка программ, конечно, может осуществляться путем пробных прогонов, но наиболее серьезные специалисты используют //кросс-отладчики// - программы, работающие на обычном компьютере и воспроизводящие в деталях поведение микроконтроллера. То есть, если программист __компьютера__ работает непосредственно на том компьютере, для которого он разрабатывает программу, то программист __микроконтроллера__ или ПЛК может всю работу - от первых замыслов до полной готовности - выполнять на персональном компьютере, даже вообще не имея в руках того устройства, для которого программирует. \\
 Аббревиатуру ПЛК иногда расшифровывают как **//программируемый логический контроллер//**, и здесь возникает путаница с промышленным логическим контроллером. Эти два устройства могут быть сходны по собственному внешнему виду и даже по внешнему виду технической "начинки", которая у них внутри, но логика работы у них совершенно разная. Промышленный контроллер по сути своей - типичный компьютер с процессором и с множеством одинаковых адресуемых ячеек памяти, обрабатывающий информацию путем последовательного выполнения действий по программе. Программируемый логический контроллер построен на основе **//программируемой логической интегральной схемы//** (ПЛИС), с которой его также часто путают. ПЛИС - это не компьютер, не процессор и не микроконтроллер - это детский конструктор "Сделай сам", из которого можно собрать что угодно. Если очень хочется, можно собрать и процессор, и компьютер, но практически это не имеет смысла. На основе ПЛИС собирают специализированные логические схемы для решения задач, для которых классические микроконтроллеры недостаточно эффективны. Основной язык программирования ПЛИС - Verilog. \\ Аббревиатуру ПЛК иногда расшифровывают как **//программируемый логический контроллер//**, и здесь возникает путаница с промышленным логическим контроллером. Эти два устройства могут быть сходны по собственному внешнему виду и даже по внешнему виду технической "начинки", которая у них внутри, но логика работы у них совершенно разная. Промышленный контроллер по сути своей - типичный компьютер с процессором и с множеством одинаковых адресуемых ячеек памяти, обрабатывающий информацию путем последовательного выполнения действий по программе. Программируемый логический контроллер построен на основе **//программируемой логической интегральной схемы//** (ПЛИС), с которой его также часто путают. ПЛИС - это не компьютер, не процессор и не микроконтроллер - это детский конструктор "Сделай сам", из которого можно собрать что угодно. Если очень хочется, можно собрать и процессор, и компьютер, но практически это не имеет смысла. На основе ПЛИС собирают специализированные логические схемы для решения задач, для которых классические микроконтроллеры недостаточно эффективны. Основной язык программирования ПЛИС - Verilog. \\
-Для всех микроконтроллеров типична //гарвардская архитектура// с двумя отдельными запоминающими устройствами: для программ и для данных. Память данных - обычная оперативная память, а память программ - долговременная, в качестве которой чаще всего используется флэш-память. Кроме того, у многих микроконтроллеров (в частности, у всех выпускающихся сейчас AVR) имеется и долговременная память данных - EEPROM. Этим микроконтроллеры отличаются от обычных компьютеров, для которых типична //принстонская архитектура//, она же //неймановская//, с одним ОЗУ, в котором место для программы и для данных выделяется по потребностям решаемой задачи. Такое решение продиктовано тем, что микроконтроллер обычно всю жизнь решает какую-то одну задачу, так что потребность в памяти можно предсказать на этапе проектирования, тогда как обычный компьютер решает множество задач, в т. ч. таких, которые не были известны во время его проектирования, так что потребности в памяти непредсказуемы. \\ \\+Для всех микроконтроллеров типична //гарвардская архитектура// с двумя отдельными запоминающими устройствами: для программ и для данных. Память данных - обычная оперативная память, а память программ - долговременная, в качестве которой чаще всего используется флэш-память. Кроме того, у многих микроконтроллеров (в частности, у всех выпускающихся сейчас AVR) имеется и долговременная память данных - EEPROM. Этим микроконтроллеры отличаются от обычных компьютеров, для которых типична //принстонская архитектура//, она же //неймановская//, с одним ОЗУ, в котором место для программы и для данных выделяется по потребностям решаемой задачи. Такое решение продиктовано тем, что микроконтроллер обычно всю жизнь решает какую-то одну задачу, так что потребность в памяти можно предсказать на этапе проектирования, тогда как обычный компьютер решает множество задач, в т. ч. таких, которые не были заранее известны, так что ячейки памяти для программ и для данных распределяются по потребности в пределах емкости одного устройства. \\ \\
 ==== Цифровые технологии записи и воспроизведении звука ==== ==== Цифровые технологии записи и воспроизведении звука ====
 До последнего десятилетия XX века для записи и воспроизведении звука использовались два вида носителей: виниловые грампластинки и магнитные ленты. Общий принцип их действия: звуковое давление преобразуется в электрическое напряжение, а последнее - в глубину канавки на пластинке или в намагниченность рабочего слоя ленты, а при воспроизведении производится обратное преобразование. Мгновенное значение звукового давления меняется непрерывно в известных пределах, и каждому значению звукового давления соответствует значение параметра записи. В свете того, что мы говорили выше про аналоговые и цифровые устройства, можем сказать: звукозапись на грампластинки и магнитные ленты - аналоговая технология. Проблема в том, что аналоговое преобразование одной величины в другую не может быть осуществлено со 100% точностью: неизбежны те или иные искажения. Это ладно, это мелочь. Гораздо хуже то, что пластинки имеют еще склонность к постепенной деградации при каждом проигрывании. А магнитные ленты портятся даже и просто при длительном хранении. \\ До последнего десятилетия XX века для записи и воспроизведении звука использовались два вида носителей: виниловые грампластинки и магнитные ленты. Общий принцип их действия: звуковое давление преобразуется в электрическое напряжение, а последнее - в глубину канавки на пластинке или в намагниченность рабочего слоя ленты, а при воспроизведении производится обратное преобразование. Мгновенное значение звукового давления меняется непрерывно в известных пределах, и каждому значению звукового давления соответствует значение параметра записи. В свете того, что мы говорили выше про аналоговые и цифровые устройства, можем сказать: звукозапись на грампластинки и магнитные ленты - аналоговая технология. Проблема в том, что аналоговое преобразование одной величины в другую не может быть осуществлено со 100% точностью: неизбежны те или иные искажения. Это ладно, это мелочь. Гораздо хуже то, что пластинки имеют еще склонность к постепенной деградации при каждом проигрывании. А магнитные ленты портятся даже и просто при длительном хранении. \\
Строка 613: Строка 616:
 ==== Мировая компьютерная сеть в новейшее время ==== ==== Мировая компьютерная сеть в новейшее время ====
 Выше мы рассмотрели мировую Сеть, какой она была в конце XX века. Мы отметили, что в то время Сеть действовала на электрическом принципе, который она унаследовала от телефонных и телеграфных сетей. На рубеже XX-XXI веков произошла революция в сетевых технологиях: началось массовое внедрение волоконно-оптических (оптоволоконных)  Выше мы рассмотрели мировую Сеть, какой она была в конце XX века. Мы отметили, что в то время Сеть действовала на электрическом принципе, который она унаследовала от телефонных и телеграфных сетей. На рубеже XX-XXI веков произошла революция в сетевых технологиях: началось массовое внедрение волоконно-оптических (оптоволоконных) 
-кабелей. Носителем информации в таком кабеле является не электричество, а свет, и жилы такого кабеля похожи не на проволоку, а скорее на рыболовную леску. Оптоволокно свободно от ограничений, присущих электрическим кабелям, поэтому позволяет передавать данные на большие расстояния со скоростью, немыслимой для прежних технологий. \\ +кабелей, разработка которых была начата еще в 80-е годы. Носителем информации в таком кабеле является не электричество, а свет, и жилы такого кабеля похожи не на проволоку, а скорее на рыболовную леску. Оптоволокно свободно от ограничений, присущих электрическим кабелям, поэтому позволяет передавать данные на большие расстояния со скоростью, немыслимой для прежних технологий. \\ 
-В конце XX века и в начале XXI оптоволоконные кабели по конструкции все еще имели много общего с телефонными и телеграфными, и прокладывались они обычно в земле, так же, как и последние. Кабель новейшего времени изготавливается полностью из синтетических материалов и не содержит металла, поэтому он неинтересен ворам-металлоломщикам. Он дешев, поскольку не содержит меди, при этом легок и прочен, так что не нуждается в прокладке под землей: в городе его можно натягивать прямо от дома к дому по крышам, а за городом по опорам линий электропередачи или контактной сети железных дорог. Это гораздо дешевле и удобнее, чем в земле. С распространением таких кабелей проблема последней мили в городах была в основном решена. Вариантов решения два(а) оптоволокно вводится в многоквартирный дом, где-то на чердаке или на лестничной клетке ставится маршрутизатор и от него данные раздаются в квартиры по проводной локальной сети(б) оптоволокно проводится прямо в квартиры. \\ +В конце XX века и в начале XXI оптоволоконные кабели по конструкции все еще имели много общего с телефонными и телеграфными, и прокладывались они обычно в земле, так же, как и последние. Кабель новейшего времени изготавливается полностью из синтетических материалов, что обеспечивает ему целый ряд преимуществ: \\ 
-Последняя технология называется PON (Passive Optical Network - пассивная оптическая сеть). Преимущество PON в том, что сеть за пределами квартиры не содержит ни элементов, привлекательных для воров, ни приборов, нуждающихся в электроэнергии, и практически не требует ухода и обслуживания. Однако в квартире приходится ставить оптоволоконный маршрутизатор, который тяжелее и дороже обычного. Первые шаги по созданию пассивных оптических сетей предприняты в 1995 г. \\+* Он не содержит металла, поэтому неинтересен ворам-металлоломщикам; \\ 
 +* Дешев; \\  
 +* Легок и прочен, так что не нуждается в прокладке под землей: в городе его можно натягивать прямо от дома к дому по крышам. Это гораздо дешевле и удобнеечем в земле; \\ 
 +* Обеспечивает полную электробезопасность, как от поражения людей током, так и от повреждения приемопередающего оборудования молниями, так и от наводок со стороны мощных электроустановок, способных "забить" передаваемую по кабелю полезную информацию. Эти качества позволяют прокладывать кабель по существующим опорам линий электропередачи или контактной сети железных дорог, что резко снижает затраты на строительство Сети; \\ 
 +* Для злоумышленника, желающего перехватить информацию из кабеля, есть единственный вариант: резать кабельа эта работа требует определенной квалификации, и притом ее невозможно сделать незаметно\\ 
 +С распространением таких кабелей проблема последней мили в городах была в основном решена. Вариантов решения два. \\ 
 +* FTTB (Fiber to the building - волокно в здание): прямое оптоволокно от дата-центра вводится в многоквартирный дом, где-то на чердаке или на лестничной клетке ставится маршрутизатор и от него данные раздаются в квартиры по проводной локальной сети; \\ 
 +* PON (Passive Optical Network - пассивная оптическая сеть)оптоволокно разветвляется с помощью оптических устройств - сплиттеров - и его ветви проводятся прямо в квартиры. Преимущество PON в том, что сеть за пределами квартиры не содержит ни элементов, привлекательных для воров, ни приборов, нуждающихся в электроэнергии, и практически не требует ухода и обслуживания. Однако в квартире приходится ставить оптоволоконный маршрутизатор, который тяжелее и дороже обычного. Первые шаги по созданию пассивных оптических сетей предприняты в 1995 г. \\
 На следующем фото - опора линии электропередачи (напряжение 110 кВ). Видны высоковольтные провода, подвешенные на гирляндах изоляторов, и три волоконно-оптических кабеля, подвешенные без изоляторов, а также соединительные муфты (для пущей надежности спрятанные в металлические ящики). \\ На следующем фото - опора линии электропередачи (напряжение 110 кВ). Видны высоковольтные провода, подвешенные на гирляндах изоляторов, и три волоконно-оптических кабеля, подвешенные без изоляторов, а также соединительные муфты (для пущей надежности спрятанные в металлические ящики). \\
 {{istoria-optovolokno.jpg?400}} \\ {{istoria-optovolokno.jpg?400}} \\
Строка 635: Строка 645:
 В принципе, для рядового обывателя жизнь под колпаком может быть несколько дискомфортной, но не более того. Если же ты не просто обыватель, а подготовленный шпион, то слежка должна восприниматься тобой как обыкновенная повседневность, не мешающая выполнению твоих трудовых функций. Однако сам факт, что слежка ведется, провоцирует нас на разработку методов противодействия этой слежке. А поскольку мы не можем рассчитывать на то, что наши послания не попадут в руки посторонним, остается один вариант: шифроваться. Так появились коммерческие и некоммерческие шифрсистемы, виртуальные частные сети, прокси-серверы, анонимайзеры... Мы сейчас занимаемся историей техники, так что едва ли здесь будут уместны технические подробности. Остановимся на том, что, хотя с инженерной стороны перечисленные средства имеют различия и соответственно преимущества, недостатки и области применения, но математика, лежащая в их основе, одна и та же. По большому счету, используется тот же алгоритм, что и в электронной подписи, только "другим концом". Речь идет о шифровании с открытым ключом. \\ В принципе, для рядового обывателя жизнь под колпаком может быть несколько дискомфортной, но не более того. Если же ты не просто обыватель, а подготовленный шпион, то слежка должна восприниматься тобой как обыкновенная повседневность, не мешающая выполнению твоих трудовых функций. Однако сам факт, что слежка ведется, провоцирует нас на разработку методов противодействия этой слежке. А поскольку мы не можем рассчитывать на то, что наши послания не попадут в руки посторонним, остается один вариант: шифроваться. Так появились коммерческие и некоммерческие шифрсистемы, виртуальные частные сети, прокси-серверы, анонимайзеры... Мы сейчас занимаемся историей техники, так что едва ли здесь будут уместны технические подробности. Остановимся на том, что, хотя с инженерной стороны перечисленные средства имеют различия и соответственно преимущества, недостатки и области применения, но математика, лежащая в их основе, одна и та же. По большому счету, используется тот же алгоритм, что и в электронной подписи, только "другим концом". Речь идет о шифровании с открытым ключом. \\
 Всевозможные шифры, о которых мы можем составить представление по книгам и фильмам про шпионов, основаны на шифровании __с закрытым ключом__, которое мы обсудили в главе "Первобытная эпоха". В современных шифрсистемах каждый из субъектов посылает другому сообщение типа "зашифровывай свои послания вот таким ключом:...", и эти послания передаются открыто (отсюда и название: __шифрование с открытым ключом__). Посторонний человек запросто может перехватить открытый ключ, но воспользоваться им он едва ли сможет: для расшифровки нужен другой - //закрытый//, или приватный, ключ, который у каждого участника переговоров свой и держится в секрете. И здесь уместна та же оговорка, которую мы сделали при обсуждении электронной подписи: стойкость шифрсистемы с открытым ключом определяется не __невозможностью__, а __большой трудоемкостью__ расчета закрытого ключа по известному открытому. "Это неосуществимо, потому что до сих пор никому не удалось", да? Преимущество шифрсистемы с открытым ключом не в том, что ее невозможно "расколоть", а в возможности установить сколько-нибудь защищенную связь между двумя лицами по недоверенной сети без предварительного обмена закрытыми ключами. \\ Всевозможные шифры, о которых мы можем составить представление по книгам и фильмам про шпионов, основаны на шифровании __с закрытым ключом__, которое мы обсудили в главе "Первобытная эпоха". В современных шифрсистемах каждый из субъектов посылает другому сообщение типа "зашифровывай свои послания вот таким ключом:...", и эти послания передаются открыто (отсюда и название: __шифрование с открытым ключом__). Посторонний человек запросто может перехватить открытый ключ, но воспользоваться им он едва ли сможет: для расшифровки нужен другой - //закрытый//, или приватный, ключ, который у каждого участника переговоров свой и держится в секрете. И здесь уместна та же оговорка, которую мы сделали при обсуждении электронной подписи: стойкость шифрсистемы с открытым ключом определяется не __невозможностью__, а __большой трудоемкостью__ расчета закрытого ключа по известному открытому. "Это неосуществимо, потому что до сих пор никому не удалось", да? Преимущество шифрсистемы с открытым ключом не в том, что ее невозможно "расколоть", а в возможности установить сколько-нибудь защищенную связь между двумя лицами по недоверенной сети без предварительного обмена закрытыми ключами. \\
-С древности, когда криптография только зарождалась, и года как минимум до 1990-го математическая криптография была страшным секретом, изучали ее крайне немногочисленные люди в крайне немногочисленных институтах, сам факт существования которых был гостайной. Школьник, интересовавшийся этой наукой и мечтавший сделать ее своей профессией, не мог просто так прийти в такой институт и подать документы на обучение, как в обычный вуз. Однако в XXI веке требование осуществить передачу данных между абонентами скрытно от посторонних привело к тому, что "информация как вода - дырочку найдет", а спецслужбам, охранявшим секреты, ничего не осталось, кроме как пересмотреть это положение. И сейчас криптография преподается уже совершенно открыто. \\ \\+С древности, когда криптография только зарождалась, и года как минимум до 1990-го математическая криптография была страшным секретом, изучали ее крайне немногочисленные люди в крайне немногочисленных институтах, сам факт существования которых был гостайной. Школьник, интересовавшийся этой наукой и мечтавший сделать ее своей профессией, не мог просто так прийти в такой институт и подать документы на обучение, как в обычный вуз. Однако в XXI веке требование осуществить передачу данных между абонентами скрытно от посторонних привело к тому, что "информация как вода - дырочку найдет", а спецслужбам, охранявшим секреты, ничего не осталось, кроме как пересмотреть это положение. И сейчас криптография преподается уже совершенно открыто, люди получают официальные дипломы и по ним устраиваются на работу. Говорят, что эта работа неплохо оплачивается. \\ \\
 ==== Характеристика эпохи ==== ==== Характеристика эпохи ====
 Новейшая эпоха в компьютерном мире характеризуется множеством факторов: \\ Новейшая эпоха в компьютерном мире характеризуется множеством факторов: \\
igor/istoria.txt · Последнее изменение: 2022/05/01 18:15 — igor