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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2019/04/29 23:51] – [Программирование в средние века] igorigor:istoria [2019/07/12 23:40] – [Программирование в новое время] igor
Строка 83: Строка 83:
 * Хотя к концу эпохи уже налаживалось серийное производство вычислительных устройств на заводах, основной движущей силой прогресса были одиночные гении-изобретатели, многие из которых остались непонятыми и непризнанными. Что же касается программирования, то его по сути не было, если не считать той самой первой программы, которую якобы составила Ада Лавлейс. \\ \\ * Хотя к концу эпохи уже налаживалось серийное производство вычислительных устройств на заводах, основной движущей силой прогресса были одиночные гении-изобретатели, многие из которых остались непонятыми и непризнанными. Что же касается программирования, то его по сути не было, если не считать той самой первой программы, которую якобы составила Ада Лавлейс. \\ \\
 ===== 50-е-60-е годы ХХ века - эпоха древней компьютерной цивилизации ===== ===== 50-е-60-е годы ХХ века - эпоха древней компьютерной цивилизации =====
-В годы Второй мировой войны и после нее наметился коренной пересмотр взглядов человечества на вычислительную технику. Развивалось кораблестроение, авиация, ракетная техника, энергетика (в т. ч. атомная). На повестке дня стояло освоение космоса. Стало ясно, что современные технические изделия невозможно создавать, полагаясь только на интуицию мастеров - нужны подробные и точные расчеты. Произошло именно то, о чем мы говорили в предыдущей главе: людям нужно было очень много считать, и это невозможно было делать бесплатно. Кто имел хороший компьютер, тот имел наше все, а кто компьютера не имел, был обречен оставаться лузером - не важно, просто человек, или завод, или целое государство. Но кто мог построить хороший компьютер? Стало ясно, что время энтузиастов прошло и к делу пора подключать бюджет. \\+В годы Второй мировой войны и после нее наметился коренной пересмотр взглядов человечества на вычислительную технику. Развивалось кораблестроение, авиация, ракетная техника, энергетика (в т. ч. атомная). На повестке дня стояло освоение космоса. Стало ясно, что современные технические изделия невозможно создавать, полагаясь только на интуицию мастеров - нужны подробные и точные расчеты. Произошло именно то, о чем мы говорили в предыдущей главе: людям нужно было очень много считать, и это невозможно было делать бесплатно. Кто имел хороший компьютер, тот имел наше все, а кто компьютера не имел, был обречен оставаться лузером - не важно, просто человек, или завод, или целое государство. Но кто мог построить хороший компьютер? Стало ясно, что время энтузиастов прошло и к делу пора подключать бюджет. \\ \\
 ==== Советские цифровые ЭВМ 1950-х-1960-х годов ==== ==== Советские цифровые ЭВМ 1950-х-1960-х годов ====
 В нашей стране из-за потерь, причиненных войной, работы по созданию новой техники замедлились. Работа над малой электронно-счетной машиной - МЭСМ - была начата в конце 1948 года в Киевском институте электротехники АН УССР, а чуть позже в Энергетическом институте АН СССР (Москва) - над машиной М-1. В регулярную эксплуатацию обе машины были приняты почти одновременно - в декабре 1951 года. Так наши инженеры вступили в мировую "компьютерную гонку", в которой очень скоро достигли впечатляющих результатов. Нам не нужно было догонять Америку - Америка догоняла нас. \\ В нашей стране из-за потерь, причиненных войной, работы по созданию новой техники замедлились. Работа над малой электронно-счетной машиной - МЭСМ - была начата в конце 1948 года в Киевском институте электротехники АН УССР, а чуть позже в Энергетическом институте АН СССР (Москва) - над машиной М-1. В регулярную эксплуатацию обе машины были приняты почти одновременно - в декабре 1951 года. Так наши инженеры вступили в мировую "компьютерную гонку", в которой очень скоро достигли впечатляющих результатов. Нам не нужно было догонять Америку - Америка догоняла нас. \\
Строка 112: Строка 112:
 Несколько слов о ЕС ЭВМ. ЕС расшифровывается: Единая Серия. Предыдущие наши компьютеры, даже те, что имели сходные названия, не образовывали серий. Чаще всего они были несовместимы ни программно, ни хотя бы конструктивно: для каждой новой машины создавались заново все периферийные устройства и даже чисто конструктивные элементы вплоть до последней дверцы шкафа. Это замедляло проектирование и усложняло эксплуатацию. Очевидно назрела задача унификации: для всех машин сделать общий набор периферийных устройств, унифицированные модули оперативной памяти, которые можно было бы подключать по одному или несколько, и ряд процессоров, различающихся только количественно, но программно совместимых и выполненных в едином конструктивном стиле. Тогда, если ранее купленная машина перестанет вас удовлетворять, ее можно будет апгрейдить путем замены процессора или добавления памяти, как мы делаем сейчас с нашими настольными компьютерами. Идея, как мы видим, вполне здравая. Плоха была не идея - плоха была реализация: вместо того чтобы воплотить в новых процессорах все лучшее, что было наработано отечественными специалистами, использовали далеко не лучший американский образец. \\ Несколько слов о ЕС ЭВМ. ЕС расшифровывается: Единая Серия. Предыдущие наши компьютеры, даже те, что имели сходные названия, не образовывали серий. Чаще всего они были несовместимы ни программно, ни хотя бы конструктивно: для каждой новой машины создавались заново все периферийные устройства и даже чисто конструктивные элементы вплоть до последней дверцы шкафа. Это замедляло проектирование и усложняло эксплуатацию. Очевидно назрела задача унификации: для всех машин сделать общий набор периферийных устройств, унифицированные модули оперативной памяти, которые можно было бы подключать по одному или несколько, и ряд процессоров, различающихся только количественно, но программно совместимых и выполненных в едином конструктивном стиле. Тогда, если ранее купленная машина перестанет вас удовлетворять, ее можно будет апгрейдить путем замены процессора или добавления памяти, как мы делаем сейчас с нашими настольными компьютерами. Идея, как мы видим, вполне здравая. Плоха была не идея - плоха была реализация: вместо того чтобы воплотить в новых процессорах все лучшее, что было наработано отечественными специалистами, использовали далеко не лучший американский образец. \\
 Очень важный и интересный вопрос: разрядность древних ЭВМ. У современных машин разрядность принимает значение из ряда: 8, 16, 32 или 64, но так было не всегда. В 50-е годы представление о том, что разрядность должна быть равна целой степени двух, еще не сформировалась. В машинах 50-х годов вся информация была организована в виде //машинных слов//, длина которых (она же разрядность) была достаточна для представления числа с плавающей запятой. Так, например, "Стрела" имела машинное слово длиной 43 бит, из которых 35 - мантисса и 6 - порядок, а БЭСМ-6 - 48 бит. Ни шестнадцатиразрядных, ни тем более восьмиразрядных машин в те времена никто не строил: ведь машины были нужны для научных и инженерных расчетов, а такие расчеты требуют точности. Ячейки памяти имели размер машинного слова, а система команд процессора продумывалась так, чтобы каждая команда также вписывалась в машинное слово. \\ Очень важный и интересный вопрос: разрядность древних ЭВМ. У современных машин разрядность принимает значение из ряда: 8, 16, 32 или 64, но так было не всегда. В 50-е годы представление о том, что разрядность должна быть равна целой степени двух, еще не сформировалась. В машинах 50-х годов вся информация была организована в виде //машинных слов//, длина которых (она же разрядность) была достаточна для представления числа с плавающей запятой. Так, например, "Стрела" имела машинное слово длиной 43 бит, из которых 35 - мантисса и 6 - порядок, а БЭСМ-6 - 48 бит. Ни шестнадцатиразрядных, ни тем более восьмиразрядных машин в те времена никто не строил: ведь машины были нужны для научных и инженерных расчетов, а такие расчеты требуют точности. Ячейки памяти имели размер машинного слова, а система команд процессора продумывалась так, чтобы каждая команда также вписывалась в машинное слово. \\
-Смешной вопрос: а какова разрядность ЕС ЭВМ? Из десяти современных специалистов десять ответят: 32. Ответ неверный. Ширина выборки из оперативной памяти, она же разрядность машинного слова, действительно, была равна 32, но разрядность арифметико-логического устройства у первых машин серии могла быть 16 и даже 8. Но это не главное. Оперативная память этих машин имела //байтовую организацию//, так что чтение и запись в память могли производиться байтами, полусловами (2 байта - 16 бит) и словами (4 байта - 32 бит). Процессор же, помимо этого, мог обрабатывать и числа с плавающей запятой в формате двойного слова (8 байт - 64 бита). Такая структура памяти, удобная для решения как физико-математических, так и планово-экономических задач, унаследована всеми компьютерами последующих эпох, так что IBM-360 и соответственно ЕС можно считать частично древними машинами, а частично средневековыми. \\ \\+Смешной вопрос: а какова разрядность ЕС ЭВМ? Из десяти современных специалистов десять ответят: 32. Ответ неверный. Ширина выборки из оперативной памяти, она же разрядность машинного слова, действительно, была равна 32, но разрядность арифметико-логического устройства у первых машин серии могла быть 16 и даже 8. Но это не главное. Оперативная память этих машин имела //байтовую организацию//, так что чтение и запись в память могли производиться байтами, полусловами (2 байта - 16 бит) и словами (4 байта - 32 бит). Процессор же, помимо этого, мог обрабатывать и числа с плавающей запятой в формате двойного слова (8 байт - 64 бита). Такая структура памяти, удобная для решения как физико-математических, так и планово-экономических задач, унаследована всеми компьютерами последующих эпох. \\ \\
 ==== Аналоговая техника во второй половине XX века ==== ==== Аналоговая техника во второй половине XX века ====
 Мы говорим в основном про цифровую вычислительную технику, однако давайте вспомним и аналоговую. В середине XX века она отказалась от валиков, колесиков и рычажков, перешла полностью на электрический, а затем на электронный принцип действия. Это позволило во-первых, увеличить быстродействие, и во вторых, придать машинам способность к программированию (программирование чаще всего осуществлялось путем вставки проводов со штекерами в нужные гнезда на лицевой панели прибора). Но ценой ускорения работы стала возросшая погрешность вычислений. (Для несведущего в технике читателя последнее утверждение может показаться диким, но это действительно так). \\ Мы говорим в основном про цифровую вычислительную технику, однако давайте вспомним и аналоговую. В середине XX века она отказалась от валиков, колесиков и рычажков, перешла полностью на электрический, а затем на электронный принцип действия. Это позволило во-первых, увеличить быстродействие, и во вторых, придать машинам способность к программированию (программирование чаще всего осуществлялось путем вставки проводов со штекерами в нужные гнезда на лицевой панели прибора). Но ценой ускорения работы стала возросшая погрешность вычислений. (Для несведущего в технике читателя последнее утверждение может показаться диким, но это действительно так). \\
Строка 231: Строка 231:
 Эра микропроцессоров по-настоящему начинается с 1974 г., когда эта же фирма выпустила восьмиразрядный микропроцессор 8080 (в нашей стране выпускался клон под марками К580ИК80 или К580ВМ80). Именно этот микропроцессор стал первым практически пригодным для создания полнопрофильного домашнего компьютера, который можно было использовать для обучения программированию (на студенческом уровне и даже выше), для подготовки текстовых деловых документов и для несложных игр. Идея такого компьютера кажется очевидным продолжением идеи видеотерминала, но в 1974 г. видеотерминалы как таковые только начали появляться, и нынешняя концепция персонального компьютера с монитором и клавиатурой еще не сложилась. Я вам скажу больше: это в нашем нынешнем представлении микропроцессор создается с целью построить маленький и дешевый компьютер для использования в качестве персонального, а в ту эпоху, которую мы сейчас рассматриваем, у людей были другие приоритеты. Мейнфреймы с видеотерминалами покрывали потребность людей в вычислительных ресурсах на рабочем месте с гораздо большим успехом, чем "персоналки", по той простой причине, что на мейнфрейме можно реализовать такие функции, которые для тогдашней "персоналки" немыслимы в принципе (да, эти функции придется делить на энное число пользователей, но это все равно лучше, чем совсем ничего). Микропроцессор же виделся как новая элементная база прежде всего для управляющих машин и промышленной автоматики. Поэтому самый первый серийный компьютер на базе микропроцессора 8080 - Альтаир 8800 [[https://vk.com/@myironcomp-komputer-bez-kotorogo-ne-bylo-by-microsoft-i-apple]] - был похож не на привычный нам теперь персональный компьютер, а на привычный нам в 70-е годы процессор обычной мини-ЭВМ. У него не было не то что экрана, но даже однострочного многоразрядного индикатора, как в калькуляторах или в тактических ракетных компьютерах, рассмотренных в главе "На земле, в небесах и на море". Идея подключить к нему клавиатуру и видеомонитор пришла чуть позже. Автором этой идеи считается Стив Возняк (тот самый, который в порядке развития этой идеи построил первый массовый персональный компьютер "Эппл 1"). Именно "Альтаир" стал той машиной, на которой начинали программировать Билл Гейтс и Пол Аллен. \\ Эра микропроцессоров по-настоящему начинается с 1974 г., когда эта же фирма выпустила восьмиразрядный микропроцессор 8080 (в нашей стране выпускался клон под марками К580ИК80 или К580ВМ80). Именно этот микропроцессор стал первым практически пригодным для создания полнопрофильного домашнего компьютера, который можно было использовать для обучения программированию (на студенческом уровне и даже выше), для подготовки текстовых деловых документов и для несложных игр. Идея такого компьютера кажется очевидным продолжением идеи видеотерминала, но в 1974 г. видеотерминалы как таковые только начали появляться, и нынешняя концепция персонального компьютера с монитором и клавиатурой еще не сложилась. Я вам скажу больше: это в нашем нынешнем представлении микропроцессор создается с целью построить маленький и дешевый компьютер для использования в качестве персонального, а в ту эпоху, которую мы сейчас рассматриваем, у людей были другие приоритеты. Мейнфреймы с видеотерминалами покрывали потребность людей в вычислительных ресурсах на рабочем месте с гораздо большим успехом, чем "персоналки", по той простой причине, что на мейнфрейме можно реализовать такие функции, которые для тогдашней "персоналки" немыслимы в принципе (да, эти функции придется делить на энное число пользователей, но это все равно лучше, чем совсем ничего). Микропроцессор же виделся как новая элементная база прежде всего для управляющих машин и промышленной автоматики. Поэтому самый первый серийный компьютер на базе микропроцессора 8080 - Альтаир 8800 [[https://vk.com/@myironcomp-komputer-bez-kotorogo-ne-bylo-by-microsoft-i-apple]] - был похож не на привычный нам теперь персональный компьютер, а на привычный нам в 70-е годы процессор обычной мини-ЭВМ. У него не было не то что экрана, но даже однострочного многоразрядного индикатора, как в калькуляторах или в тактических ракетных компьютерах, рассмотренных в главе "На земле, в небесах и на море". Идея подключить к нему клавиатуру и видеомонитор пришла чуть позже. Автором этой идеи считается Стив Возняк (тот самый, который в порядке развития этой идеи построил первый массовый персональный компьютер "Эппл 1"). Именно "Альтаир" стал той машиной, на которой начинали программировать Билл Гейтс и Пол Аллен. \\
 Еще через 2 года фирма "Зилог" выпустила легендарный Z80, на основе которого фирма "Синклер" изготавливала, вероятно, самый удачный и самый массовый домашний компьютер - ZX Spectrum (1982 г.). По сути Z80 представлял собой не что иное как слегка доработанный 8080 с расширенной системой команд. В 1983 г. появился первый портативный компьютер TRS-80 Model 100 с 8-строчным экраном, 32кБ ПЗУ и 8..32кБ оперативной памяти, способный работать от батареек или аккумулятора. А в январе 1984 г. появилась еще одна легенда - "Эппл Макинтош". Компьютеры этой марки строились сначала на 16-разрядных процессорах фирмы "Моторола", последующие модели этого семейства - на 32-разрядных процессорах фирмы "ИБМ", а позже "Интел". \\ Еще через 2 года фирма "Зилог" выпустила легендарный Z80, на основе которого фирма "Синклер" изготавливала, вероятно, самый удачный и самый массовый домашний компьютер - ZX Spectrum (1982 г.). По сути Z80 представлял собой не что иное как слегка доработанный 8080 с расширенной системой команд. В 1983 г. появился первый портативный компьютер TRS-80 Model 100 с 8-строчным экраном, 32кБ ПЗУ и 8..32кБ оперативной памяти, способный работать от батареек или аккумулятора. А в январе 1984 г. появилась еще одна легенда - "Эппл Макинтош". Компьютеры этой марки строились сначала на 16-разрядных процессорах фирмы "Моторола", последующие модели этого семейства - на 32-разрядных процессорах фирмы "ИБМ", а позже "Интел". \\
-Компьютеры на базе 8080 и Z80 открыли эру восьмиразрядных машин, которых всего-то 10 лет назад никто и вообразить не мог. Такой компьютер, разумеется, мог производить и точные расчеты, но только за счет т. н. "длинной арифметики", или программной эмуляции арифметических операций с большими числами (в т. ч. и с плавающей запятой). Если же учесть, что тактовая частота таких процессоров достигала 4 МГц, то быстродействие получалось как будто совсем неплохое, где-то на уровне ЕС-1020 или "Минск-32"! Но процессор - лишь одна из составных частей компьютера, а причина недостаточности "умственных способностей" компьютера может скрываться в других его частях или в том, как они взаимодействуют. Нормальный процессор для обращения к ячейкам памяти использует адрес длиной в одно или два машинных слова: идеально - одно, на крайняк соглашаемся на два. Если исхитриться, можно, конечно, и больше, но грамотные инженеры не любят "объездных дорог". Мы сейчас говорим о восьмиразрядном процессоре - значит, адрес длиной в одно машинное слово позволяет обращаться к 256 ячейкам - это безобразно мало. Адрес в два машинных слова позволяет адресовать 64К ячеек - для домашней игрушки это сойдет, но для профессиональной работы уже недостаточно.  +Компьютеры на базе 8080 и Z80 открыли эру восьмиразрядных машин, которых всего-то 10 лет назад никто и вообразить не мог. Такой компьютер, разумеется, мог производить и точные расчеты, но только за счет т. н. "длинной арифметики", или программной эмуляции арифметических операций с большими числами (в т. ч. и с плавающей запятой). Если же учесть, что тактовая частота таких процессоров достигала 4 МГц, то быстродействие получалось как будто совсем неплохое, где-то на уровне ЕС-1020 или "Минск-32"! Но процессор - лишь одна из составных частей компьютера, а причина недостаточности "умственных способностей" компьютера может скрываться в других его частях или в том, как они взаимодействуют. Нормальный процессор для обращения к ячейкам памяти использует адрес длиной в одно или два машинных слова: идеально - одно, на крайняк соглашаемся на два. Если исхитриться, можно, конечно, и больше, но грамотные инженеры не любят "объездных дорог". Мы сейчас говорим о восьмиразрядном процессоре - значит, адрес длиной в одно машинное слово позволяет обращаться к 256 ячейкам - это безобразно мало. Эта проблема решается через использование спаренных регистров, таких как H и L в процессорах 8080, как DPTR в микроконтроллерах MCS48..51. Адрес в два машинных слова позволяет адресовать 64К ячеек - для домашней игрушки это сойдет, для несложной промышленной управляющей машинки вполне туды-сюды, но для профессиональной работы на уровне 80-х годов этого уже недостаточно. Поэтому, чтобы построить профессиональный персональный компьютер, все та же фирма "Интел" в 1978 г. выпустила 16-разрядный микропроцессор 8086. Он имел замысловатую систему сегментации памяти, благодаря которой мог обращаться к ячейкам с 20-разрядными адресами, т. е. мог работать с памятью емкостью до 1МБ. Это был прорыв, но поначалу этот процессор был встречен специалистами прохладно: казался чересчур переусложненным. На основе этого процессора фирма ИБМ в 1981 г. построила персональный компьютер, получивший незатейливое название IBM PC, т. е. просто "персональный компьютер от международных деловых машин". Этот компьютер, что называется, получил хороший рынок. Выпуск таких процессоров и таких компьютеров давно прекращен, но современные настольные компьютеры и ноутбуки являются потомками PC и Intel 8086 в четвертом или пятом поколении. \\ 
-Поэтому, чтобы построить профессиональный персональный компьютер, все та же фирма "Интел" в 1978 г. выпустила 16-разрядный микропроцессор 8086. Он имел замысловатую систему сегментации памяти, благодаря которой мог обращаться к ячейкам с 20-разрядными адресами. Неудивительно, что поначалу он был встречен специалистами прохладно: казался чересчур переусложненным. Но на основе этого процессора фирма ИБМ в 1981 г. построила персональный компьютер, получивший незатейливое название IBM PC, т. е. просто "персональный компьютер от международных деловых машин". Этот компьютер, что называется, "получил хороший рынок". Выпуск таких процессоров и таких компьютеров давно прекращен, но современные настольные компьютеры и ноутбуки являются потомками PC и Intel 8086 в четвертом или пятом поколении. \\ +Компьютеры IBM PC, как и следующее поколение PC/XT - не были чем-то революционным. Да, у них была необычно большая для персональных машин емкость памяти, и был цветной монитор, но машины с такими особенностями были и раньше - просто до поры-до времени они были дороговаты. Но общую тенденцию к удешевлению техники никто не отменял, значит такой компьютер по такой цене рано или поздно должен был появиться. Он и появился - один из многих. Убойной фишкой был не сам компьютер, а его программное обеспечение. Основой его была операционная система MS DOS, которая представляла собой великолепный компромисс между функциональностью и сложностью. К тому же она была снабжена подробной и доходчивой документацией, и это не считая "художественных" книг, по которым, даже без документации, можно было изучить ее принципы действия. Никогда в истории - ни до того, ни после - не было операционной системы, которая была бы так хорошо приспособлена для программирования. Прикладные программы для DOS разрабатывались множеством фирм в мире, но и любой грамотный пользователь мог подобрать подходящую для себя среду разработки и создавать программы по своим потребностям. Век DOS оказался недолог (начало разработки в 1981 г., массовое распространение - около 1988 г., начало заката - 1996 г., а последние компьютеры с DOS эксплуатировались примерно до 2002 г.) Ее боевые возможности не успевали за бурным развитием железа, но DOS успела дать мощный толчок развитию мирового программистского искусства и оказала огромное влияние на путь развития этого искусства на десятилетия вперед. \\
-Компьютеры IBM PC (и PC/XT - следующее поколение после PCне были чем-то революционным. Да, у них была необычно большая для персональных машин емкость памяти, и был цветной монитор, но машины с такими особенностями были и раньше - просто до поры-до времени они были дороговаты. Но общую тенденцию к удешевлению техники никто не отменял, значит такой компьютер по такой цене рано или поздно должен был появиться. Он и появился - один из многих. Убойной фишкой был не сам компьютер, а его программное обеспечение. Основой его была операционная система MS DOS, которая представляла собой великолепный компромисс между функциональностью и сложностью. К тому же она была снабжена подробной и доходчивой документацией, и это не считая "художественных" книг, по которым, даже без документации, можно было изучить ее принципы действия. Никогда в истории - ни до того, ни после - не было операционной системы, которая была бы так хорошо приспособлена для программирования. Прикладные программы для DOS разрабатывались множеством фирм в мире, но и любой грамотный пользователь мог подобрать подходящую для себя среду разработки и создавать программы по своим потребностям. Век DOS оказался недолог (начало разработки в 1981 г., массовое распространение - около 1988 г., начало заката - 1996 г., а последние компьютеры с DOS эксплуатировались примерно до 2002 г.) Ее боевые возможности не успевали за бурным развитием железа, но DOS успела дать мощный толчок развитию мирового программистского искусства и оказала огромное влияние на путь развития этого искусства на десятилетия вперед. \\+
 В 1980-е годы в США уже имелись персональные компьютеры (ПК), по своим вычислительным возможностям близкие к нашим СМ и ЕС (а порой и превосходящие их), и продавались они по цене легкового автомобиля, т. е. были доступны представителям среднего класса. В других странах подобная техника не производилась, на поставки ПК из США в СССР было наложено эмбарго, а советские разработки в этой области в то время уже существенно отставали от американских. Хуже всего то, что персональный компьютер для любого советского предприятия был "социальной нагрузкой", а не основной продукцией, поэтому наращивать их выпуск никто и не стремился, "и даже планов таких не было". Отставание в области "железа" могло бы быть не такой большой проблемой, если бы его компенсировать опережающим развитием программирования, но этого тоже не произошло. \\ В 1980-е годы в США уже имелись персональные компьютеры (ПК), по своим вычислительным возможностям близкие к нашим СМ и ЕС (а порой и превосходящие их), и продавались они по цене легкового автомобиля, т. е. были доступны представителям среднего класса. В других странах подобная техника не производилась, на поставки ПК из США в СССР было наложено эмбарго, а советские разработки в этой области в то время уже существенно отставали от американских. Хуже всего то, что персональный компьютер для любого советского предприятия был "социальной нагрузкой", а не основной продукцией, поэтому наращивать их выпуск никто и не стремился, "и даже планов таких не было". Отставание в области "железа" могло бы быть не такой большой проблемой, если бы его компенсировать опережающим развитием программирования, но этого тоже не произошло. \\
 Во-первых, хотя счет моделей советских персональных компьютеров идет на десятки (и это едва ли не больше, чем в США), выпускались они мизерными тиражами и не имели программной совместимости даже друг с другом, не говоря уж про иностранные образцы. Разработка сколько-нибудь богатого "джентльменского набора" программ в таких условиях не может быть дешевой в принципе. Если же учесть, что в СССР не могло быть коммерческой разработки ПО, то станет понятно, почему ситуация зашла в тупик. \\ Во-первых, хотя счет моделей советских персональных компьютеров идет на десятки (и это едва ли не больше, чем в США), выпускались они мизерными тиражами и не имели программной совместимости даже друг с другом, не говоря уж про иностранные образцы. Разработка сколько-нибудь богатого "джентльменского набора" программ в таких условиях не может быть дешевой в принципе. Если же учесть, что в СССР не могло быть коммерческой разработки ПО, то станет понятно, почему ситуация зашла в тупик. \\
Строка 353: Строка 352:
 Новое время небогато на революционные решения в области компьютерного "железа", поэтому в этой главе мы уделим основное внимание программной стороне дела. \\ Новое время небогато на революционные решения в области компьютерного "железа", поэтому в этой главе мы уделим основное внимание программной стороне дела. \\
 Мы говорим: "персональный компьютер", но что это были за компьютеры? Основная масса ПК в то время изготавливалась на Тайване и в Сингапуре по американской технологии. Некоторое количество компьютеров производилось в Европе, но их было немного, стоили они дороже, и в нашу страну почти не попадали. Торговых марок компьютеров было очень много, но архитектура и основные параметры были практически одинаковы: это PC/AT Мы говорим: "персональный компьютер", но что это были за компьютеры? Основная масса ПК в то время изготавливалась на Тайване и в Сингапуре по американской технологии. Некоторое количество компьютеров производилось в Европе, но их было немного, стоили они дороже, и в нашу страну почти не попадали. Торговых марок компьютеров было очень много, но архитектура и основные параметры были практически одинаковы: это PC/AT
-на 16-разрядных процессорах 80286 от фирмы "Интел" с тактовой частотой 12 МГц и емкостью оперативной памяти от 640 кБайт до 2 МБайт. Многие компьютеры комплектовались сопроцессорами, которые обеспечивали арифметику с плавающей точкой, с разрядностью 32 или 64, а некоторые - даже 80. Это мы говорим о годах с 1989 примерно по 1993, а позже стали появляться компьютеры на 32-разрядных процессорах "Интелили (реже"АМД" 80386 и 80486. Многие из них также имели арифметические сопроцессоры. Обычный компьютер представлял собой настольный системный блок в виде ящика размером примерно 40х40х10 см, к которому подключались клавиатура и монитор. Существовали портативные компьютеры - ноутбуки \\+на процессорах 80286 от фирмы "Интел" с тактовой частотой 12 МГц и емкостью оперативной памяти от 640 кБайт до 2 МБайт. Процессор 80286 (или по-простому 286) был следующим поколением после 8086, и соответственно компьютер PC/AT - следующим поколением после PC/XT. Многие компьютеры комплектовались сопроцессорами, которые обеспечивали арифметику с плавающей точкой, с разрядностью 32 или 64, а некоторые - даже 80, но сам процессор остался 16-разрядным. 80286 предлагал несколько новшеств: защищенный режим (который, правда, так и не нашел применения в тогдашних операционных системах) и возможность адресации бОльших пространств памяти по сравнению с предшественником. Это мы говорим о годах с 1989 примерно по 1993, а позже стали появляться компьютеры на 32-разрядных процессорах 80386 и 80486, которые очевидно являлись следующим поколением по отношению к 80286. Такие же процессоры, очень похожие на интеловские, выпускались также фирмой "АМД". Многие из них также имели арифметические сопроцессоры. Обычный компьютер представлял собой настольный системный блок в виде ящика размером примерно 40х40х10 см, к которому подключались клавиатура и монитор. Существовали портативные компьютеры - ноутбуки \\
 {{igor:istoria-notebook-1.jpg?400}} \\ {{igor:istoria-notebook-1.jpg?400}} \\
 (на этом фото экспонат Музея связи - "Тошиба Т1600", Япония, около 1990 г.), а также настольные компьютеры типа "моноблок" (в них вся компьютерная "начинка" встроена в корпус монитора, что характерно для продукции фирмы "Эппл"), но в нашей стране практически до конца XX века они были редкостью. \\ (на этом фото экспонат Музея связи - "Тошиба Т1600", Япония, около 1990 г.), а также настольные компьютеры типа "моноблок" (в них вся компьютерная "начинка" встроена в корпус монитора, что характерно для продукции фирмы "Эппл"), но в нашей стране практически до конца XX века они были редкостью. \\
-Процессор 80286 был прямым потомком Intel 8086, который мы рассмотрели в главе икропроцессоры, калькуляторы и персональные компьютеры". Этот процессор предлагал несколько новшеств: защищенный режим (который, правда, так и не нашел применения в тогдашних операционных системах) и возможность адресации бОльших пространств памяти по сравнению с предшественником. Сам же процессор остался шестнадцатиразрядным, а вот процессоры 80386 и 80486 были уже 32-разрядными. (такие процессоры, очень похожие на интеловские, выпускались также фирмой "АМД"). Эволюция процессоров шла по пути усложнения, что не могло не отразиться и на их цене, и на энергопотреблении. А последнее не могло не отразиться на температурном режиме процессора. Если 486-й процессор еще мог работать при естественном охлаждении, то следующее поколение - "Пентиум" - уже не обходилось без вентилятора. Усложнялось и программирование компьютеров, и все эти обстоятельства не давали покоя конкурентам "Интела" - они в противовес интеловской архитектуре разрабатывали свои процессоры, свободные от рассмотренных здесь недостатков. В те века уже был известен принцип RISC - Reduced Instruction Set Computer - компьютер с сокращенной системой команд. Фокус RISC отнюдь не сводится к экономии бумаги при печати мануала по системе команд: такие процессоры дешевле, потребляют меньше энергии и соответственно меньше греются, и при этом работают зачастую быстрее обычных процессоров со сложной системой команд. Однако во времена операционной системы ДОС в мире было наработано огромное количество программ для компьютеров на интеловских процессорах, и хотя ДОС давно уже выведена из эксплуатации, эти программы до нашего времени позволяют процессорам "Интел"/"АМД" не только преодолевать конкурентное давление, но и развиваться дальше. \\ +Как видим, персональный компьютер нового времени радикально отличается от средневекового. Если средневековый ПК был маленькой и дешевой машинкой с ограниченным кругом решаемых задач, то ПК нового времени приобрел все основные архитектурные черты, ранее свойственные мейнфреймам, а по быстродействию даже превосходил их. По цене же такой компьютер быстро сравнялся с ПК прежнего поколения. Неудивительно, что "эйтишки" быстро захватили весь компьютерный рынок, вытеснив с него как мейнфреймы, так и восьмиразрядные машины. Спираль истории завершила круг: деление компьютеров на большие и малыенаметившееся на исходе древней эпохи и достигшее апогея в средние века, сошло на нет: теперь все устройства, называемые компьютерами, были "большими", а малыми остались микропроцессоры и микроконтроллеры - наследники УМ-1-НХ. Термин "управляющая машина" постепенно вышел из употребления, уступив место термину "промышленная автоматика". Впрочем, это различие - не более чем просто терминология. \\ 
-Еще несколько слов про ДОС. Выше мы отмечали, что в древнюю эпоху как пользователь, так и программист общались с компьютером через посредника - оператора подготовки данных, а в средние века преобладающим способом общения стал диалог через видеотерминал. Суть диалогового режима в том, что человек набирает на клавиатуре команды в виде цифробуквенных последовательностей, иногда напоминающих обычные человеческие слова. Каждую команду нужно было "разжевать и в рот компьютеру положить". Новое время - новые порядки: ДОС предлагала //полноэкранный// режим взаимодействия человека с машиной. Теперь, чтобы запустить некоторую прикладную программу, оператор вызывал на экран меню и с помощью клавиш со стрелками (нам всем эти клавиши, конечно, хорошо знакомы) навести подсветку меню на название нужной программы. Эту операцию можно было делать руками, а мозг при этом был занят решаемой задачей и не отвлекался на мелочи - безусловно, такая работа более плодотворна и менее утомительна, чем диалог. \\ \\+С другой стороны, выражение "промышленная автоматика" не следует понимать буквально: машины, подразумеваемые под этим названием, работали не только на заводах. Железнодорожная СЦБ, корабельные БИУС, авионика - все это близкородственные отрасли. И микропроцессорная "начинка" тогдашних телевизоров, DVD-плееров, аппаратуры сотовой связи - это все, по большому счету, та же самая техника, в отличие от нынешней, которая гораздо ближе к "большим" компьютерам, чем к малым. \\ 
 +Однако вернемся к персональным компьютерам 90-х годов. Эволюция процессоров шла по пути усложнения, что не могло не отразиться и на их цене, и на энергопотреблении. А последнее не могло не отразиться на температурном режиме процессора. Если 486-й процессор еще мог работать при естественном охлаждении, то следующее поколение - "Пентиум" - уже не обходилось без вентилятора. Усложнялось и программирование компьютеров, и все эти обстоятельства не давали покоя конкурентам "Интела" - они в противовес интеловской архитектуре разрабатывали свои процессоры, свободные от рассмотренных здесь недостатков. В те века уже был известен принцип RISC - Reduced Instruction Set Computer - компьютер с сокращенной системой команд. Фокус RISC отнюдь не сводится к экономии бумаги при печати мануала по системе команд: такие процессоры дешевле, потребляют меньше энергии и соответственно меньше греются, и при этом работают зачастую быстрее обычных процессоров со сложной системой команд. Однако во времена операционной системы ДОС в мире было наработано огромное количество программ для компьютеров на интеловских процессорах, и хотя ДОС давно уже выведена из эксплуатации, эти программы до нашего времени позволяют процессорам "Интел"/"АМД" не только преодолевать конкурентное давление, но и развиваться дальше. \\ 
 +Еще несколько слов про ДОС. Выше мы отмечали, что в древнюю эпоху как пользователь, так и программист общались с компьютером через посредника - оператора подготовки данных, а в средние века преобладающим способом общения стал диалог через видеотерминал. Суть диалогового режима в том, что человек набирает на клавиатуре команды в виде цифробуквенных последовательностей, иногда напоминающих обычные человеческие слова. Каждую команду нужно было "разжевать и в рот компьютеру положить". Новое время - новые порядки: ДОС предлагала //полноэкранный// режим взаимодействия человека с машиной. Теперь, чтобы запустить некоторую прикладную программу, оператор вызывал на экран меню и с помощью клавиш со стрелками (нам всем эти клавиши, конечно, хорошо знакомы) навести подсветку меню на название нужной программы. Эту операцию можно было делать руками, а мозг при этом был занят решаемой задачей и не отвлекался на мелочи - безусловно, такая работа более плодотворна и менее утомительна, чем диалог. Итак, если в древние века пользователь общался с машиной в основном через посредничество оператора подготовки данных, а в средние века преобладал диалоговый режим, то новое компьютерное время - это эпоха общения пользователя с компьютером на языке меню, клавиш "Вверх-вниз" и манипуляторов типа мыши и джойстика. \\ \\
 ==== Компьютерные игры и игровые компьютеры в новое время ==== ==== Компьютерные игры и игровые компьютеры в новое время ====
 Уменьшение стоимости компьютеров и расширение их промышленного выпуска в разных странах (а не только в США, как раньше) привело к пересмотру взглядов на компьютерные игры. Выше, обсуждая компьютерные игры в средние века, я обещал рассказать о пересмотре незыблемых истин - настала пора выполнить это обещание. \\ Уменьшение стоимости компьютеров и расширение их промышленного выпуска в разных странах (а не только в США, как раньше) привело к пересмотру взглядов на компьютерные игры. Выше, обсуждая компьютерные игры в средние века, я обещал рассказать о пересмотре незыблемых истин - настала пора выполнить это обещание. \\
Строка 433: Строка 434:
 Сопоставлять Windows и Linux можно еще очень долго, но я сейчас остановлюсь на том, что эти системы существуют и будут существовать в единстве и борьбе еще долго. Так появившиеся в середине XIX века пароходы в течение целого века сосуществовали и соперничали с парусниками, пока в их взаимоотношения не вмешался Дизель (это быль, и в ней намек - добрым молодцам и красным девицам урок). \\ Сопоставлять Windows и Linux можно еще очень долго, но я сейчас остановлюсь на том, что эти системы существуют и будут существовать в единстве и борьбе еще долго. Так появившиеся в середине XIX века пароходы в течение целого века сосуществовали и соперничали с парусниками, пока в их взаимоотношения не вмешался Дизель (это быль, и в ней намек - добрым молодцам и красным девицам урок). \\
 Заметим, что Linux - не единственный идейный наследник UNIX. Подобных операционных систем в 90-е годы и в начале XXI века было создано очень много - вероятно десятки. Но наибольшее распространение наряду с линуксами получили ОС семейства BSD от Университета Беркли (разрабатывалась в 1978-1994 гг., после чего ей на смену пришла бесплатная OpenBSD), и коммерческая MacOS от фирмы "Эппл". Все они - из США. Эти системы очень похожи: кто освоил MacOS, тот легко перейдет на Linux, и наоборот, и BSD аналогично. \\ Заметим, что Linux - не единственный идейный наследник UNIX. Подобных операционных систем в 90-е годы и в начале XXI века было создано очень много - вероятно десятки. Но наибольшее распространение наряду с линуксами получили ОС семейства BSD от Университета Беркли (разрабатывалась в 1978-1994 гг., после чего ей на смену пришла бесплатная OpenBSD), и коммерческая MacOS от фирмы "Эппл". Все они - из США. Эти системы очень похожи: кто освоил MacOS, тот легко перейдет на Linux, и наоборот, и BSD аналогично. \\
-Заканчивая разговор об операционных системах нового времени, я хотел бы обратить внимание читателей вот на какой аспект. Ни Столлман, ни Торвальдс не были бунтарями или новаторами. Они только хотели сделать программное обеспечение доступным для всех, и они это сделали, но не ставили перед собой амбициозных задач типа перелома исторических эпох - они шли в фарватере UNIX. Так идеология операционной системы, разрабатывавшаяся еще в 70-е годы XX века, оказалась законсервирована в новых изделиях. Чуть позже мы будем рассматривать новейшее компьютерное время, практически совпадающее с XXI веком, но в области операционных систем никакого новейшего времени мы не наблюдаем, и в главе "Новейшее компьютерное время" разговора об операционных системах не будет. \\ \\+Заканчивая разговор об операционных системах нового времени, я хотел бы обратить внимание читателей вот на какой аспект. Ни Столлман, ни Торвальдс не были бунтарями или новаторами. Они только хотели сделать программное обеспечение доступным для всех, и они это сделали, но не ставили перед собой амбициозных задач типа перелома исторических эпох - они шли в кильватере UNIX. Так идеология операционной системы, разрабатывавшаяся еще в 70-е годы XX века, оказалась законсервирована в новых изделиях. Чуть позже мы будем рассматривать новейшее компьютерное время, практически совпадающее с XXI веком, но в области операционных систем никакого новейшего времени мы не наблюдаем, и в главе "Новейшее компьютерное время" разговора об операционных системах не будет. \\ \\
 ==== Программирование в новое время ==== ==== Программирование в новое время ====
-=== Задачи ===+Рассматривая программирование в __древние__ времена, мы заметили, что компьютеры имели мало оперативной памяти, из-за чего программист должен был писать программу так, чтобы количество команд в ней было минимальным, а польза от каждой команды - максимальной. Это требование никак невозможно было обойти, поэтому мы назвали его категорическим императивом программирования. Компьютеры __средних веков__ имели гораздо больше оперативной памяти и прощали некоторую избыточность команд, но мечта программистов о райской жизни на земле не сбылась (в очередной раз, и можно не сомневаться - не в последний): средневековые задачи требовали программ большого объема. В __новое время__ компьютеров стало реально много, задач для них - тоже, так что объем работ для программистов еще прибавился. Как решить проблему нехватки рабочих рук в программировании? С наших сегодняшних позиций просматриваются следующие варианты: \\ 
 +* Разрабатывать новые технологии, повышающие производительность труда программистов. Если продолжить нашу аналогию с паровозами, то на железнодорожном транспорте прогрессивной технологией является электрификация дорог: электровоз, по размерам и весу сходный с паровозом, может иметь бОльшую мощность, а значит везти бОльший груз... А что у нас? Похоже, что ничего. Вопрос о создании прогрессивных технологий на смену старому  
 +верному Алголу никогда и никем даже не ставился, а если вопрос не ставить, то и ответа на него ждать не приходится (еще раз акцентирую внимание на том, что язык Си прогрессивной технологией по отношению к Алголу не является). \\ 
 +* Наращивать количество учебных мест в институтах, готовящих программистов. Решение вроде бы очевидное, но есть подводный камень: сколько бы мы ни создавали учебных мест, на них будут приходить люди, при всем достаточном IQ не обладающие нужными деловыми качествами. Вложить в них профессиональные знания не проблема, а вот научить их самостоятельно разрабатывать качественный продукт - к этому институтские преподаватели не готовы в принципе. В других профессиях, как рабочих, так и инженерных, деловые качества не играют такой важной роли, как у нас. \\ 
 +* "Программирование без программирования": создать сейчас такую программу, с помощью которой конечный пользователь впоследствии мог бы решать новые задачи, не прибегая к услугам программиста. \\ 
 +* Вовлечь в разработку программ людей, не обладающих высокой профессиональной подготовкой, путем разработки "суррогатных" технологий программирования. \\ 
 +=== Задачи, языки и технологии программирования ===
 В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\ В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\
-(Извините, эта глава еще не дописана) \\ +**Программирование мелкокаменное и крупнокаменное**. В обиходе камнем называют процессор, а мелко - по-гречески микро, так что мелкокаменная техника - это микропроцессоры и микроконтроллеры, и мелкокаменное программирование соответственно. \\ 
-=== Языки и технологии программирования === +Мелкокаменное программирование в новое время - последний значительный оплот программистов-ассемблерщиков. При всех моих лично-субъективных симпатиях к ассемблеру, должен сказать, что применять его для микропроцессоров и микроконтроллеров - идея не очень удачная по ряду причин. Во-первых, мелкокаменная техника эксплуатируется в заводских цехах и иных подобных местах, и было бы идеально, если бы ее там обслуживали не программисты, а специалисты по соответствующему технологическому оборудованию - слесаря КИПиА (контрольно-измерительных приборов и автоматики) или даже просто электрики. Эти профессии относятся к рабочим, а не к инженерным. Изучение хотя бы основ программирования для этих людей достаточно обременительно (а ассемблер - это отнюдь не основы, это высший пилотаж!). Во-вторых, ассемблер - машинно-зависимый язык, так что в случае замены машины переложение старой программы на новую машину может оказаться весьма непростой задачей. Создать для  
-Про технологии программирования буквально пара слов. Новое время отмечено окончательным отказом как от древних технологий, основанных на потоковом вводе данных, так и от средневековых, ориентированных на использование телетайпов и пишущих машинок. На языках остановимся более подробно. \\ +киповцев и электриков специальный, притом машино-независимый, язык - идея очевидно вполне здравая... Но чтобы здравая идея получила столь же здравое воплощение в металл, нужны соответствующие научные исследования и опытно-конструкторские разработки, а вот тут у кого-то что-то не сконтачилось. Международная электротехническая комиссия (МЭК), вместо того чтобы __разрабатывать__ стандарт мелкокаменного языка (а разработка стандартов - ее непосредственная трудовая функция), слепила его из того, что было, а потом, как это обычно и бывает в жизни, "что было, то и полюбила": в стандарт вошли не один, а целых 5 языков (мы их рассмотрим чуть подробнее в главе "Микроконтроллеры"). Они появились стихийно в разное время в разных странах, каждый из них (при всей несомненной пользе) имел свои кривоватости и шероховатости, а когда 5 языков попытались объединить в нечто целое, эти шероховатости никуда не исчезли - наоборот, проявились еще сильнее. Неудивительно, что до конца нового времени МЭКовские языки так и не составили сколько-нибудь серьезной альтернативы ассемблеру. И даже в новейшую эпоху, когда все программирующее человечество уже послало ассемблеру последний прощальный поцелуй, МЭКовские языки так и не заняли преобладающего положения на рынке, уступив место языку Си. \\ 
-В главе "Компьютерные средние века" мы рассмотрели целый ряд языков и отметили, что с тех пор и до наших дней в этой области не произошло никаких революционных изменений. Сказанное не означает, что никаких событий вообще не произошло. \\+Про технологии крупнокаменного программирования буквально пара слов. Новое время отмечено окончательным отказом как от древних технологий, основанных на потоковом вводе данных, так и от средневековых, ориентированных на использование телетайпов и пишущих машинок. На языках остановимся более подробно, но чуть ниже. \\ 
 +**Программирование системное и прикладное**. В главе "Компьютерные средние века" мы рассмотрели целый ряд языков и отметили, что с тех пор и до наших дней в этой области не произошло революционных изменений. Сказанное не означает, что никаких событий вообще не произошло. \\
 В 90-е годы XX века имела место коренная ревизия языкового "арсенала". Если языком N1 в древности был Фортран, а в средние века Бэйсик, то к началу нового времени из всех ранее известных языков остался, по большому счету, только Си. Подчеркиваю: по большому счету, потому что Кобол, Ада и даже Фортран никуда не исчезали, просто их доля в общем объеме разработок программного обеспечения значительно уменьшилась, а ПЛ-1, Паскаль и много других языков практически вышли из употребления. \\ В 90-е годы XX века имела место коренная ревизия языкового "арсенала". Если языком N1 в древности был Фортран, а в средние века Бэйсик, то к началу нового времени из всех ранее известных языков остался, по большому счету, только Си. Подчеркиваю: по большому счету, потому что Кобол, Ада и даже Фортран никуда не исчезали, просто их доля в общем объеме разработок программного обеспечения значительно уменьшилась, а ПЛ-1, Паскаль и много других языков практически вышли из употребления. \\
 В чем секрет долгожительства тех или иных языков? \\ В чем секрет долгожительства тех или иных языков? \\
Строка 446: Строка 454:
 Точно так же, как автомобиль. Техническое устройство может жить долго или не очень в зависимости от того, насколько толково оно сделано, насколько полезно в жизни... Ну и, конечно, нельзя сбрасывать со счетов вопрос о том, в какие руки устройство попало. \\ Точно так же, как автомобиль. Техническое устройство может жить долго или не очень в зависимости от того, насколько толково оно сделано, насколько полезно в жизни... Ну и, конечно, нельзя сбрасывать со счетов вопрос о том, в какие руки устройство попало. \\
 Если отбросить мифы вроде тех, которые мы обсудили в главе "Компьютерные средние века", то получаем: Фортран - язык математиков и физиков, Ада - язык авиации и космонавтики, Си - язык разработчиков юниксоидных операционных систем. На этих языках написано программное обеспечение в миллионы или миллиарды строк. Переписывать это все на какой-то другой язык - колоссальная работа. Кто будет этим заниматься, и на какие шиши? Отсюда очевидный вывод: перечисленные языки будут существовать, как минимум, до тех пор, пока будут нужны написанные на них программы, то есть еще очень долго. А тюльпаны... Что тюльпаны? Как расцвели, так и завяли. \\ Если отбросить мифы вроде тех, которые мы обсудили в главе "Компьютерные средние века", то получаем: Фортран - язык математиков и физиков, Ада - язык авиации и космонавтики, Си - язык разработчиков юниксоидных операционных систем. На этих языках написано программное обеспечение в миллионы или миллиарды строк. Переписывать это все на какой-то другой язык - колоссальная работа. Кто будет этим заниматься, и на какие шиши? Отсюда очевидный вывод: перечисленные языки будут существовать, как минимум, до тех пор, пока будут нужны написанные на них программы, то есть еще очень долго. А тюльпаны... Что тюльпаны? Как расцвели, так и завяли. \\
-Процесс выращивания новых сортов тюльпанов на этом, однаконе остановился - он развернулся с новой силой. В этом практически никто не видит ничего плохого, многие даже радуются. На самом деле такое "разнообразие" влечет целый ряд негативных последствий. \\+В системном программировании в новое время язык ассемблера еще применялся, но его доля в общем объеме работы быстро сходит на нет. Используется он в основном там, где приходится плотно работать с "железом": при программировании драйверов, кодеков, прошивок. В остальных областях системного программирования первенство захватывает язык Си. Программисты нового времени его считают языком низкого уровня. \\ 
 +Что касается прикладного программированиято многообразие задач влечет за собой многообразие инструмента для их решения, в том числе и языков. Так что процесс выращивания новых сортов тюльпанов отнюдь не остановился - он развернулся с новой силой. В этом практически никто не видит ничего плохого, многие даже радуются. На самом деле такое "разнообразие" влечет целый ряд негативных последствий. \\
 Во-первых, оно затрудняет взаимопонимание между программистами, а значит и сотрудничество. \\ Во-первых, оно затрудняет взаимопонимание между программистами, а значит и сотрудничество. \\
 Во-вторых, в мире, где уйма нерешенных задач, люди тратят тысячи человеко-лет на изобретение языков, от которых ждут непонятно каких чудес. А тем временем другие люди тратят нерационально (а то и вовсе теряют) миллионы человеко-лет, пытаясь применить какой-нибудь новомодный язык для решения задач, для которых он, как ПОТОМ выясняется, совершенно не предназначен и не приспособлен. \\ Во-вторых, в мире, где уйма нерешенных задач, люди тратят тысячи человеко-лет на изобретение языков, от которых ждут непонятно каких чудес. А тем временем другие люди тратят нерационально (а то и вовсе теряют) миллионы человеко-лет, пытаясь применить какой-нибудь новомодный язык для решения задач, для которых он, как ПОТОМ выясняется, совершенно не предназначен и не приспособлен. \\
 +Впрочем, язык Си и в прикладном программировании используется достаточно широко. \\
 +=== *** ===
 В новое время, да и сейчас, обычна такая ситуация, когда программист приходит устраиваться на работу, и ему говорят: нам требуется 5-летний опыт работы на таком-то языке... А потом оказывается, что этот язык изобретен 2 года назад! Спросите такого работодателя, почему он выбрал именно этот язык - и он с апломбом в голосе ответит: "у нас передовая фирма, мы хотим быть на острие технического прогресса!" (это очень похоже на то, как мои одноклассники, вступая в Комсомол, писали заявления по типовой форме: "хочу быть в передовом отряде советской молодежи"). За этой фразой скрывается нежелание и неспособность просчитывать экономическую эффективность принимаемых управленческих решений. Совершенно ясно, что работа на такой фирме ничего, кроме убытков, не принесет. \\ В новое время, да и сейчас, обычна такая ситуация, когда программист приходит устраиваться на работу, и ему говорят: нам требуется 5-летний опыт работы на таком-то языке... А потом оказывается, что этот язык изобретен 2 года назад! Спросите такого работодателя, почему он выбрал именно этот язык - и он с апломбом в голосе ответит: "у нас передовая фирма, мы хотим быть на острие технического прогресса!" (это очень похоже на то, как мои одноклассники, вступая в Комсомол, писали заявления по типовой форме: "хочу быть в передовом отряде советской молодежи"). За этой фразой скрывается нежелание и неспособность просчитывать экономическую эффективность принимаемых управленческих решений. Совершенно ясно, что работа на такой фирме ничего, кроме убытков, не принесет. \\
 Очень интересно читать в интернете прогнозы о том, сколько будет языков и сколько программистов через энное количество лет. В том, что количество языков будет расти, все предсказатели абсолютно единодушны. А вот в прогнозах количества программистов единодушия нет и в помине. Что же получается? Скоро каждый программист будет работать на своем языке, притом не на одном??? \\ Очень интересно читать в интернете прогнозы о том, сколько будет языков и сколько программистов через энное количество лет. В том, что количество языков будет расти, все предсказатели абсолютно единодушны. А вот в прогнозах количества программистов единодушия нет и в помине. Что же получается? Скоро каждый программист будет работать на своем языке, притом не на одном??? \\
Строка 458: Строка 469:
 Чтобы понять, можно ли по-другому, еще чуть-чуть углубимся в тему, как мы бы сейчас сказали, процедурно-ориентированного программирования. \\ Чтобы понять, можно ли по-другому, еще чуть-чуть углубимся в тему, как мы бы сейчас сказали, процедурно-ориентированного программирования. \\
 Традиционное, или процедурно-ориентированное, программирование привычно и естественно, потому что так запрограммирован человеческий мозг. Мозг абсолютно универсален: он способен находить, пусть не сразу, решение любой новой задачи. Как бы ни был написан исходный текст программы на языке высокого уровня, в конечном счете он будет скомпилирован в машинный код, написанный в процедурно-ориентированной парадигме. Если этот код декомпилировать, то получим текст программы, также написанный в процедурно-ориентированной парадигме. Или скажем иначе: какова бы ни была задача, она либо может быть запрограммирована в процедурно-ориентированном стиле, либо не может быть запрограммирована совсем. \\ Традиционное, или процедурно-ориентированное, программирование привычно и естественно, потому что так запрограммирован человеческий мозг. Мозг абсолютно универсален: он способен находить, пусть не сразу, решение любой новой задачи. Как бы ни был написан исходный текст программы на языке высокого уровня, в конечном счете он будет скомпилирован в машинный код, написанный в процедурно-ориентированной парадигме. Если этот код декомпилировать, то получим текст программы, также написанный в процедурно-ориентированной парадигме. Или скажем иначе: какова бы ни была задача, она либо может быть запрограммирована в процедурно-ориентированном стиле, либо не может быть запрограммирована совсем. \\
-Традиционное программирование описывает действия исходя из того, что "если все правильно делать, то все правильно и получится". **//Функционально-ориентированное//** программирование исходит из того, что смысл любых действий - в выдаче того или иного __результата__, который зависит от имеющихся исходных данных. А зависимость на языке математики - функция. Если она сложная, то ее раскладывают на множество более простых. Так образуется исходный текст программы, который описывает, как промежуточные результаты вычислений зависят друг от друга. \\+Традиционное программирование описывает __действия__ исходя из того, что "если все правильно делать, то все правильно и получится". **//Функционально-ориентированное//** программирование исходит из того, что смысл любых действий - в выдаче того или иного __результата__, который зависит от имеющихся исходных данных. А зависимость на языке математики - функция. Если она сложная, то ее раскладывают на множество более простых. Так образуется исходный текст программы, который описывает, как промежуточные результаты вычислений зависят друг от друга. \\
 Представим, что конечный результат решения задачи описывается функцией f<sub>0</sub>(x,y), где x и y образуются как результаты других функций: x=f<sub>1</sub>(a), y=f<sub>2</sub>(b), где a и b - исходные данные. Функции f<sub>1</sub> и f<sub>2</sub> взамно независимы, и их тексты в программе могут быть расположены произвольным образом. И выполняться они могут в любом порядке: сначала f<sub>1</sub>, затем f<sub>2</sub> или наоборот. Что это нам дает? Как будто ничего, да? Фокус начинается с того, что они могут вычисляться __одновременно__. А вот это уже очень важно и интересно, если у нас многоядерный компьютер. \\ Представим, что конечный результат решения задачи описывается функцией f<sub>0</sub>(x,y), где x и y образуются как результаты других функций: x=f<sub>1</sub>(a), y=f<sub>2</sub>(b), где a и b - исходные данные. Функции f<sub>1</sub> и f<sub>2</sub> взамно независимы, и их тексты в программе могут быть расположены произвольным образом. И выполняться они могут в любом порядке: сначала f<sub>1</sub>, затем f<sub>2</sub> или наоборот. Что это нам дает? Как будто ничего, да? Фокус начинается с того, что они могут вычисляться __одновременно__. А вот это уже очень важно и интересно, если у нас многоядерный компьютер. \\
 Функционально-ориентированное программирование привлекательно для решения достаточно широкого множества задач, но его универсальность - вопрос, как минимум, дискуссионный. В теории все хорошо, но жива теория, а древо жизни пышно увядает. Попробуйте запрограммировать в таком стиле задачу упорядочения большого массива.  Функционально-ориентированное программирование привлекательно для решения достаточно широкого множества задач, но его универсальность - вопрос, как минимум, дискуссионный. В теории все хорошо, но жива теория, а древо жизни пышно увядает. Попробуйте запрограммировать в таком стиле задачу упорядочения большого массива. 
Строка 472: Строка 483:
 Программный инструментарий для обслуживания БД называют системой управления базой данных - СУБД. \\ Программный инструментарий для обслуживания БД называют системой управления базой данных - СУБД. \\
 Первые реляционные СУБД появились еще в 60-е годы, но до поры-до времени они оставались явлением локального порядка, не стоящим того, чтобы посвящать им отдельную главу. В средние века, с появлением множества задач из области Большой Экономики, люди начали понимать, что СУБД, и в первую очередь реляционные СУБД, являются весьма удачным инструментом для решения большинства таких задач. В 1980 г. фирма "Эштон-Тейт" выпустила программу с незатейливым названием DBase II. Затем появились DBase III (1986 г.), DBase IV - по большому счету это были усовершенствованные версии того же продукта. \\ Первые реляционные СУБД появились еще в 60-е годы, но до поры-до времени они оставались явлением локального порядка, не стоящим того, чтобы посвящать им отдельную главу. В средние века, с появлением множества задач из области Большой Экономики, люди начали понимать, что СУБД, и в первую очередь реляционные СУБД, являются весьма удачным инструментом для решения большинства таких задач. В 1980 г. фирма "Эштон-Тейт" выпустила программу с незатейливым названием DBase II. Затем появились DBase III (1986 г.), DBase IV - по большому счету это были усовершенствованные версии того же продукта. \\
-Программы семейства DBase строились по принципй швейцарского армейского ножа: такая программа содержала набор инструментов для решения достаточно широкого множества типовых задач, так или иначе связанных с реляционными базами данных. Базу можно было просматривать, редактировать, добавлять в нее новые записи, делать выборки, выводить их на экран и печать в виде документов установленного образца... Все это делалось с помощью цифробуквенных команд, близких к тем, которые использовались в операционной системы ДОС. Для пользователя, который с ДОС не дружил, был придуман "Ассистент": вместо того, чтобы вводить команду буквами, можно было выбрать нужные действия из меню. При этом в нижней строке экрана отображалась соответствующая команда в текстовом виде, т. е. пользователь мог формировать команду с помощью "Ассистента" и одновременно изучать ее текстовое представление. Все команды, поданные пользователем, регистрировались в "Истории команд". Историю можно было просмотреть и нужную команду выполнить еще раз, возможно с какими-то вариациями. Отсюда вытекает следующая очевидная идея: выбрать не одну, а несколько команд, записать их в отдельный файл - //скрипт// - и потом запускать скрипт на выполнение. Ну и следующая идея: скрипт скомпилировать и использовать в дальнейшем как обычную программу. \\+Программы семейства DBase строились по принципу швейцарского армейского ножа: такая программа содержала набор инструментов для решения достаточно широкого множества типовых задач, так или иначе связанных с реляционными базами данных. Базу можно было просматривать, редактировать, добавлять в нее новые записи, делать выборки, выводить их на экран и печать в виде документов установленного образца... Все это делалось с помощью цифробуквенных команд, близких к тем, которые использовались в операционной системы ДОС. Для пользователя, который с ДОС не дружил, был придуман "Ассистент": вместо того, чтобы вводить команду буквами, можно было выбрать нужные действия из меню. При этом в нижней строке экрана отображалась соответствующая команда в текстовом виде, т. е. пользователь мог формировать команду с помощью "Ассистента" и одновременно изучать ее текстовое представление. Все команды, поданные пользователем, регистрировались в "Истории команд". Историю можно было просмотреть и нужную команду выполнить еще раз, возможно с какими-то вариациями. Отсюда вытекает следующая очевидная идея: выбрать не одну, а несколько команд, записать их в отдельный файл - //скрипт// - и потом запускать скрипт на выполнение. Ну и следующая идея: скрипт скомпилировать и использовать в дальнейшем как обычную программу. \\
 Важно, что, имея в руках такой инструмент, задачи мог решать непосредственно тот человек, который в решении заинтересован, - //конечный пользователь//. Он по определению не программист, так что о его программистской квалификации вопрос вообще не ставится. С другой стороны, пользователь, обладающий соответствующими способностями, мог такую квалификацию нарабатывать "без отрыва от производства". Ясно, что программы такого типа оказались чрезвычайно удачны, и популярность, которую они приобрели в 90-е годы, была вполне заслуженной. \\ Важно, что, имея в руках такой инструмент, задачи мог решать непосредственно тот человек, который в решении заинтересован, - //конечный пользователь//. Он по определению не программист, так что о его программистской квалификации вопрос вообще не ставится. С другой стороны, пользователь, обладающий соответствующими способностями, мог такую квалификацию нарабатывать "без отрыва от производства". Ясно, что программы такого типа оказались чрезвычайно удачны, и популярность, которую они приобрели в 90-е годы, была вполне заслуженной. \\
-По образцу программ семейства DBase фирма "Фокс Софтвэр" выпустила несколько версий программы FoxPro, а фирма "Нантукет Корпорейшн" в 1985 г. - интерпретатор-компилятор языка, практически совпадающего с языком семейства DBase, под маркой "Клиппер". В 90-е годы языки семейства DBase/FoxPro/Clipper приобрели все черты, присущие "взрослым" языкам программирования. Их век оказался недолог (на рубеже нового и новейшего времени все они постепенно вышли из употребления), но, с учетом того что за предшествующие 20-30 лет в области языков не было практически никакого прогресса, эти языки успели оказать большое влияние на всю эволюцию программирования, так что в значительной мере благодаря им программный мир приобрел тот облик, который нам привычен сейчас. \\ \\+По образцу программ семейства DBase фирма "Фокс Софтвэр" выпустила несколько версий программы FoxPro, а фирма "Нантукет Корпорейшн" в 1985 г. - интерпретатор-компилятор языка, практически совпадающего с языком семейства DBase, под маркой "Клиппер". В 90-е годы языки семейства DBase/FoxPro/Clipper приобрели все черты, присущие "взрослым" языкам программирования. Их век оказался недолог (на рубеже нового и новейшего времени все они постепенно вышли из употребления), но, с учетом того что за предшествующие 20-30 лет в области языков не было практически никакого прогресса, эти языки успели оказать большое влияние на всю эволюцию программирования, так что в значительной мере благодаря им программный мир приобрел тот облик, который нам привычен сейчас. \\ 
 +=== Суррогатные технологии в программировании === 
 +История учит, что новые технические решения в мире крайне редко появляются просто так, с бухты-барахты. Если какая-то технология появилась и нам кажется, что она никому не нужна, - скорее всего, мы либо чего-то не знаем, либо не придали должного значения. Смысл суррогатных технологий в том, чтобы вовлечь в программирование людей, не обладающих достаточно высокой квалификацией. \\ 
 +Можно ли назвать суррогатной технологией программные продукты семейства DBase/FoxPro/Clipper, которые мы рассмотрели чуть выше? Если строго следовать букве определения, то нет: ведь они имели первоначальную цель вовлечь в программирование не низкоквалифицированных программистов, а конечных пользователей, которые имеют тот или иной уровень квалификации в своей предметной области, а программистами не являются. Однако эти продукты очень легко могут стать суррогатом в руках начальника, навязывающего их своим подчиненным без учета их реальных способностей и качеств. \\ 
 +Первой суррогатной технологией стал Бэйсик, но, как мы уже отмечали выше, он стал таковой не сразу. Первоначально он создавался как инструмент для начального обучения программированию, и в этом качестве он был вполне адекватен реалиям 60-х годов XX века. Но в 80-е годы даже в советских учебных заведениях уже были машины СМ-4 с видеотерминалами. Такие машины спокойно "переваривали" любой настоящий язык программирования, такой как Алгол, Паскаль или даже Си. Проблема в том, что наши преподы про Алгол и Паскаль знали в лучшем случае понаслышке, а про Си не знали совсем (я свое первое руководство по языку Си прочитал уже после окончания института). И системные администраторы, обслуживавшие эти машины, - аналогично. Учить студентов серьезному программированию от них никто не требовал, вот они и ехали по накатанной колее. Похоже, что в США ситуация была ненамного лучше, потому что фирмы "Микрософт" и "Борланд" в 80-е годы выпустили на рынок интегрированные среды разработки программ (QuickBasic, он же QBasic, и TurboBasic соответственно) на основе языка Бэйсик. Впрочем, эти продукты были все-таки скорее учебными. Однако даже с натяжкой нельзя назвать учебным инструмент, который та же фирма "Микрософт" уже в 90-е годы внедрила в свой пакет Microsoft Office. Называлась эта штука Visual Basic. Он-то и стал первой по-настоящему суррогатной технологией, получившей большой рынок. \\ 
 +Чтобы оценить это явление по шкале "хорошо - плохо", мы должны принять во внимание два постулата. Во-первых, в нашей жизни бывают ситуации, когда суррогат реально необходим. И ленинградский хлеб из опилок и отрубей с огнем и кровью пополам был нужен... в свое время и в своем месте. Но потом, когда блокада была прорвана и враг отступил от города, от суррогата нужно было отказываться - и хлеб начали выпекать из пшеницы, как, собственно, и принято у нормальных людей. \\ 
 +Во-вторых, в каждой работе, в каждой профессии есть Мастера, а есть халтурщики-шабашники. И есть, как правило, некая средняя прослойка, причем чаще всего она - самая многочисленная. Для чего вообще нужны Мастера, ведь их работа стоит обычно дороже, чем работа шабашников, и даже середнячков? Есть на свете экономика. Пресволочнейшая штуковина: существует - и ни в зуб ногой! (слова В. Маяковского, первоначально сказанные про поэзию, ну а я приведу их здесь). В экономике есть моменты, которые на первый взгляд кажутся чудом или хуже того - абсурдом. Один из таких моментов как раз и состоит в том, что, хотя Мастер непосредственно за свою работу просит большую плату, конечный результат его работы приносит бОльшую прибыль (напоминаю: прибыль - цель и смысл любой финансово-хозяйственной деятельности, осуществляемой людьми). Как такое может быть? - Элементарно: Мастер на то и Мастер, что он знает, как сделать свое дело с максимально прибыльным результатом, а работники более низкого уровня либо этого не знают, либо сознательно пренебрегают. Но большинство заказчиков  
 +(неважно, о какой работе речь - о работе плотника, допустим, или сантехника, или программиста) хочет подешевле... "А Балда стоит и приговаривает с укоризной: не гонялся бы ты, поп, за дешевизной" (это уже не Маяковский, это Пушкин). Ничем другим Мастера свое существование оправдать не могут, но ничего другого им  
 +и не требуется. Но если это так, то что же получается: работа халтурщика всегда влечет за собой убытки для заказчика? С другой стороны, умные люди говорят: "Я не настолько богат, чтобы покупать дешевые вещи". Резюмируем: суррогатные технологии нужны для того, чтобы вовлечь в программирование низкоквалифицированных  
 +программистов ценой увеличения сроков и трудоемкости работ и снижением качества конечного продукта. Плохо в этих технологиях не то, что они вообще существуют, а то, что их роль и место в мировом процессе разработки ПО неадекватно оценивается большинством населения. Кто-то считает их передовыми и навязывает их программистам нормального уровня, которые обладают необходимыми знаниями и качествами для работы по нормальным технологиям. \\ 
 +Суррогатные технологии - примета нового и особенно новейшего компьютерного времени, поскольку стали возможны с появлением многочисленных компьютеров с большим быстродействием и большой емкостью оперативной памяти. В древности и в средние века, пока вычислительные ресурсы были дефицитом, такие технологии не имели шансов на признание. \\ \\
 ==== Еще немного воспоминаний и размышлений ==== ==== Еще немного воспоминаний и размышлений ====
 В предыдущей главе я рассказывал о практических и лабораторных работах в институте и размышлял о том, какого уровня специалистов этот институт мог выпускать. Теперь скажу так: уровень специалистов соответствовал тому уровню трудоустройства, который экономика позднего развитого социализма ("застоя") могла нам предложить. \\ В предыдущей главе я рассказывал о практических и лабораторных работах в институте и размышлял о том, какого уровня специалистов этот институт мог выпускать. Теперь скажу так: уровень специалистов соответствовал тому уровню трудоустройства, который экономика позднего развитого социализма ("застоя") могла нам предложить. \\
Строка 492: Строка 513:
 {{igor:istoria-apples.jpg?400}} \\ {{igor:istoria-apples.jpg?400}} \\
 (снимок сделан на фестивале "Chaos Construction" в Санкт-Петербурге в 2017 г.) \\ (снимок сделан на фестивале "Chaos Construction" в Санкт-Петербурге в 2017 г.) \\
-Новейшее время небогато на принципиально новые технические решения ни в архитектуре и конструкции компьютеров, ни в программировании: революционные изменения произошли в наших взглядах на применение компьютеров в жизни. Этим изменениям будет посвящена большая часть этой главы, но сейчас все-таки несколько слов о "железе" рубежа веков. В течение десятилетия, которое мы только что обозначили, практически все компьютеры на 286-х-486-х процессорах были списаны, им на смену пришли компьютеры на процессорах "Пентиум1" - "Пентиум4" от "Интел" и близких к ним процессорах от "АМД". Они, как и предшественники, были 32-разрядными, а идеи 64-разрядных процессоров, а также многоядерных, только еще намечались. Первый серийный 64-разрядный процессор "Athlon64" был выпущен фирмой "АМД" в 2003 г., так что новейшая компьютерная эпоха - практически эпоха 64-разрядных компьютеров. \\ \\+Новейшее время небогато на принципиально новые технические решения ни в архитектуре и конструкции компьютеров, ни в программировании: революционные изменения произошли в наших взглядах на применение компьютеров в жизни. Этим изменениям будет посвящена большая часть этой главы, но сейчас все-таки несколько слов о "железе" рубежа веков. В течение десятилетия, которое мы только что обозначили, практически все компьютеры на 286-х-486-х процессорах были списаны, им на смену пришли компьютеры на процессорах "Пентиум1" - "Пентиум4" от "Интел" и близких к ним процессорах от "АМД". Они, как и предшественники, были 32-разрядными, а идеи 64-разрядных процессоров, а также многоядерных, только еще намечались. Первый серийный 64-разрядный процессор "Athlon64" был выпущен фирмой "АМД" в 2003 г., так что новейшая компьютерная эпоха - практически эпоха 64-разрядных компьютеров. \\ 
 +Рассматривая технологию решения задач на компьютере, мы увидели, что эта технология менялась от эпохи к эпохе. В древние времена пользователь общался с компьютером через посредничество оператора подготовки данных. В средние века преобладающим стал диалог, для которого нужна цифробуквенная клавиатура (в принципе, возможно, даже без переключения заглавных и строчных букв). В новое время пользователь подавал компьютеру команды путем выбора нужного действия из меню - для этого клавиатура должна иметь клавиши со стрелками (и еще одну архиважную клавишу ESCAPE, которая как бы ничего не делает, но без нее не обойтись!). И наконец в новейшее время основным органом управления стала мышь (изобретенная, кстати, еще в 1968 году). Подчеркиваю: мы говорим о работе пользователя. Системные администраторы до наших дней не мыслят своей работы без диалога. \\ \\
 ==== Компьютерные игры и игровые компьютеры в новейшее время ==== ==== Компьютерные игры и игровые компьютеры в новейшее время ====
 Выше мы говорили о том, что в __средние века__ компьютерные игры были редкостью и воспринимались большинством людей как безобразие, а в новое время они стали нормой. Тем не менее игровой компьютер __нового__ времени - по большому счету суррогат, сделанный так, чтобы только был максимально дешев. С наступлением __новейшего__ времени пересмотр взглядов на "игрушки" продолжился. В один прекрасный момент люди перестали считать крамолой мысль о том, что игровой компьютер может быть технически совершеннее, чем деловой. А значит, и дороже. Это касается как "железа", так и программного обеспечения. В результате в нынешних магазинах мы чисто делового ноутбука просто не найдем. Уж если его искать, то не в магазине, а на рынке бэушной техники. Там нам предложат какой-нибудь ИБМ, Делл или Компак года этак 1999-го за 3-5 тысяч рублей: толстый, черный, тяжелый, с матовым экраном... С таким ноутом и сейчас не стыдно явиться на серьезное совещание к генеральному директору фирмы, и никто не будет спрашивать, сколько у вас ядер и сколько гигов оперативки! Современные же компьютеры стоят 10-20, а то и 40 тысяч, но, изучая их технические особенности, мы приходим к выводу, что это типично развлекательные компьютеры, что, в общем-то, недвусмысленно написано на их мо... пардон, на лицевых панелях. \\ Выше мы говорили о том, что в __средние века__ компьютерные игры были редкостью и воспринимались большинством людей как безобразие, а в новое время они стали нормой. Тем не менее игровой компьютер __нового__ времени - по большому счету суррогат, сделанный так, чтобы только был максимально дешев. С наступлением __новейшего__ времени пересмотр взглядов на "игрушки" продолжился. В один прекрасный момент люди перестали считать крамолой мысль о том, что игровой компьютер может быть технически совершеннее, чем деловой. А значит, и дороже. Это касается как "железа", так и программного обеспечения. В результате в нынешних магазинах мы чисто делового ноутбука просто не найдем. Уж если его искать, то не в магазине, а на рынке бэушной техники. Там нам предложат какой-нибудь ИБМ, Делл или Компак года этак 1999-го за 3-5 тысяч рублей: толстый, черный, тяжелый, с матовым экраном... С таким ноутом и сейчас не стыдно явиться на серьезное совещание к генеральному директору фирмы, и никто не будет спрашивать, сколько у вас ядер и сколько гигов оперативки! Современные же компьютеры стоят 10-20, а то и 40 тысяч, но, изучая их технические особенности, мы приходим к выводу, что это типично развлекательные компьютеры, что, в общем-то, недвусмысленно написано на их мо... пардон, на лицевых панелях. \\
Строка 508: Строка 530:
 ==== Компьютеризированные расчетно-платежные системы ==== ==== Компьютеризированные расчетно-платежные системы ====
 Когда мы говорим о компьютеризированных расчетно-платежных системах, первое, что приходит на ум непрофессиональному читателю, - это банковские карты, однако это неправильно: карты - это только верхушка айсберга. \\ Когда мы говорим о компьютеризированных расчетно-платежных системах, первое, что приходит на ум непрофессиональному читателю, - это банковские карты, однако это неправильно: карты - это только верхушка айсберга. \\
-Первые банковские карты появились в США и других экономически передовых странах еще в 50-е годы XX века, но, как это всегда и бывает, до поры-до времени они были экзотикой. В СССР ничего подобного, разумеется, быть не могло. Массовому распространению карт препятствовала высокая стоимость как самих карт, так и оборудования для их чтения, а также трудности подключения к компьютерным сетям в большинстве мест, где люди хотели бы такими картами пользоваться (магазины, автозаправочные станции...). Мировой компьютерной Сети в те времена еще не было, не было единого стандарта конструкции карт, не было согласия между банками по поводу построения единой расчетно-платежной системы. С годами, однако, эти мешающие факторы были постепенно преодолены. \\+Первые банковские карты появились еще в 50-е годы XX века в США и других экономически передовых странах, но, как это всегда и бывает, до поры-до времени они были экзотикой. Массовому распространению карт препятствовала высокая стоимость как самих карт, так и оборудования для их чтения, а также трудности подключения к компьютерным сетям в большинстве мест, где люди хотели бы такими картами пользоваться (магазины, автозаправочные станции...). Мировой компьютерной Сети в те времена еще не было, не было единого стандарта конструкции карт, не было согласия между банками по поводу построения единой расчетно-платежной системы. С годами, однако, эти мешающие факторы были постепенно преодолены. \\ 
 +В СССР ничего подобного, разумеется, быть не могло. \\
 Как работает банковская карта? \\ Как работает банковская карта? \\
 Прежде всего оговоримся, что карта, точно так же как использовавшаяся ранее чековая книжка, - не кошелек, деньги хранятся не в ней. Они хранятся в банке, на нашем банковском счете. Соответственно потеря карты не означает потери денег, а попадание карты в руки постороннего человека, вообще говоря, не гарантирует ему возможности присвоить наши деньги. Это очень важно, потому что если мы держим наличные деньги в кошельке и кошелек достается постороннему человеку, то и с самим кошельком, и с его содержимым нам придется распрощаться. Если же мы хотим расплатиться, допустим, за бензин на автозаправке, то мы вставляем карту в имеющийся там  Прежде всего оговоримся, что карта, точно так же как использовавшаяся ранее чековая книжка, - не кошелек, деньги хранятся не в ней. Они хранятся в банке, на нашем банковском счете. Соответственно потеря карты не означает потери денег, а попадание карты в руки постороннего человека, вообще говоря, не гарантирует ему возможности присвоить наши деньги. Это очень важно, потому что если мы держим наличные деньги в кошельке и кошелек достается постороннему человеку, то и с самим кошельком, и с его содержимым нам придется распрощаться. Если же мы хотим расплатиться, допустим, за бензин на автозаправке, то мы вставляем карту в имеющийся там 
Строка 535: Строка 558:
 Так она началась, а что дальше? Дурной пример оказался, как обычно и бывает, заразительным. Фирма "Микрочип" производит микроконтроллеры PIC10/12/16/18/24/32 с разрядностью 8, 16 и 32, фирма "СТ Микроэлектроникс" - микроконтроллеры STM8 и STM32... На основе микроконтроллеров ATtiny и ATmega выпускаются, помимо "Ардуин", отладочные платы Smart Evolution Module (SEM), на STM32 - платы Nucleo... Не буду перечислять всех - их очень много, и каждый год появляются новые. \\ Так она началась, а что дальше? Дурной пример оказался, как обычно и бывает, заразительным. Фирма "Микрочип" производит микроконтроллеры PIC10/12/16/18/24/32 с разрядностью 8, 16 и 32, фирма "СТ Микроэлектроникс" - микроконтроллеры STM8 и STM32... На основе микроконтроллеров ATtiny и ATmega выпускаются, помимо "Ардуин", отладочные платы Smart Evolution Module (SEM), на STM32 - платы Nucleo... Не буду перечислять всех - их очень много, и каждый год появляются новые. \\
 У читателя может создаться впечатление, что все микроконтроллеры - черепашки-микролитражки. Это не так: флагманский продукт линейки Atmel AVR - Atmega2560 - по совокупности тактико-технических характеристик близок к 8086 и далеко превосходит ZX Spectrum, а STM32F4 соответствует большому мейнфрейму 80-х годов, при цене всего в несколько долларов! Именно такая цена и сделала микроконтроллеры массовым продуктом, доступным не только профессиональным инженерам-проектировщикам, но и любителям, и даже школьникам, изучающим электронику и программирование. \\ У читателя может создаться впечатление, что все микроконтроллеры - черепашки-микролитражки. Это не так: флагманский продукт линейки Atmel AVR - Atmega2560 - по совокупности тактико-технических характеристик близок к 8086 и далеко превосходит ZX Spectrum, а STM32F4 соответствует большому мейнфрейму 80-х годов, при цене всего в несколько долларов! Именно такая цена и сделала микроконтроллеры массовым продуктом, доступным не только профессиональным инженерам-проектировщикам, но и любителям, и даже школьникам, изучающим электронику и программирование. \\
-Дальше - больше. Если можно построить компьютер величиной со спичечный коробок с процессором, по своим вычислительным возможностям равным "Пентиуму" 90-х годов, то почему бы не вставить туда еще более мощный, по-настоящему современный процессор, может быть даже и многоядерный? Так в 2011 г. англичанин Д. Брэбен создал  на основе процессора фирмы "Броадком" //одноплатный микрокомпьютер// Raspberry Pi, после чего не заставили себя ждать Orange Pi, Odroid, а недавно и Onion Omega с процессором в архитектуре MIPS... Граница между микроконтроллерами и микрокомпьютерами постепенно размывается, единственное существенное отличие в том, что на микрокомпьютеры обычно устанавливается операционная система (чаще всего линуксоидная), а на микроконтроллерах ОС не бывает. \\+Дальше - больше. Если можно построить компьютер величиной со спичечный коробок с процессором, по своим вычислительным возможностям равным "Пентиуму" 90-х годов, то почему бы не вставить туда еще более мощный, по-настоящему современный процессор, может быть даже и многоядерный? Так в 2011 г. англичанин Д. Брэбен создал  на основе процессора фирмы "Броадком" (архитектура ARM Cortex) //одноплатный микрокомпьютер// Raspberry Pi, после чего не заставили себя ждать Orange Pi, Odroid, а недавно и Onion Omega с процессором в архитектуре MIPS... Граница между микроконтроллерами и микрокомпьютерами постепенно размывается, единственное существенное отличие в том, что на микрокомпьютеры обычно устанавливается операционная система (чаще всего линуксоидная), а на микроконтроллерах ОС не бывает. \\
 Сейчас несколько отвлечемся, чтобы устранить досадную неточность в терминологии. \\ Сейчас несколько отвлечемся, чтобы устранить досадную неточность в терминологии. \\
 Как мы только что выяснили, микроконтроллер - это микросхема: \\ Как мы только что выяснили, микроконтроллер - это микросхема: \\
Строка 591: Строка 614:
 Выше мы рассмотрели мировую Сеть, какой она была в конце XX века. Мы отметили, что в то время Сеть действовала на электрическом принципе, который она унаследовала от телефонных и телеграфных сетей. На рубеже XX-XXI веков произошла революция в сетевых технологиях: началось массовое внедрение волоконно-оптических (оптоволоконных)  Выше мы рассмотрели мировую Сеть, какой она была в конце XX века. Мы отметили, что в то время Сеть действовала на электрическом принципе, который она унаследовала от телефонных и телеграфных сетей. На рубеже XX-XXI веков произошла революция в сетевых технологиях: началось массовое внедрение волоконно-оптических (оптоволоконных) 
 кабелей. Носителем информации в таком кабеле является не электричество, а свет, и жилы такого кабеля похожи не на проволоку, а скорее на рыболовную леску. Оптоволокно свободно от ограничений, присущих электрическим кабелям, поэтому позволяет передавать данные на большие расстояния со скоростью, немыслимой для прежних технологий. \\ кабелей. Носителем информации в таком кабеле является не электричество, а свет, и жилы такого кабеля похожи не на проволоку, а скорее на рыболовную леску. Оптоволокно свободно от ограничений, присущих электрическим кабелям, поэтому позволяет передавать данные на большие расстояния со скоростью, немыслимой для прежних технологий. \\
-В конце XX века и в начале XXI оптоволоконные кабели по конструкции все еще имели много общего с телефонными и телеграфными, и прокладывались они обычно в земле, так же, как и последние. Кабель более позднего времени изготавливается из синтетических материалов и совсем не содержит металла, поэтому он неинтересен ворам-металлоломщикам. Он дешев, поскольку не содержит меди, при этом легок и прочен. В городе его можно натягивать прямо от дома к дому по крышам, а за городом - по опорам линий электропередачи или контактной сети железных дорог. Это гораздо дешевле и удобнее, чем закапывать кабель в землю. С распространением таких кабелей проблема последней мили в городах была в основном решена. Вариантов решения два: (а) оптоволокно вводится в многоквартирный дом, где-то на чердаке или на лестничной клетке ставится маршрутизатор и от него данные раздаются в квартиры по проводной локальной сети, (б) оптоволокно проводится прямо в квартиры. \\+В конце XX века и в начале XXI оптоволоконные кабели по конструкции все еще имели много общего с телефонными и телеграфными, и прокладывались они обычно в земле, так же, как и последние. Кабель новейшего времени изготавливается полностью из синтетических материалов и не содержит металла, поэтому он неинтересен ворам-металлоломщикам. Он дешев, поскольку не содержит меди, при этом легок и прочен, так что не нуждается в прокладке под землей: в городе его можно натягивать прямо от дома к дому по крышам, а за городом - по опорам линий электропередачи или контактной сети железных дорог. Это гораздо дешевле и удобнее, чем в земле. С распространением таких кабелей проблема последней мили в городах была в основном решена. Вариантов решения два: (а) оптоволокно вводится в многоквартирный дом, где-то на чердаке или на лестничной клетке ставится маршрутизатор и от него данные раздаются в квартиры по проводной локальной сети, (б) оптоволокно проводится прямо в квартиры. \\
 Последняя технология называется PON (Passive Optical Network - пассивная оптическая сеть). Преимущество PON в том, что сеть за пределами квартиры не содержит ни элементов, привлекательных для воров, ни приборов, нуждающихся в электроэнергии, и практически не требует ухода и обслуживания. Однако в квартире приходится ставить оптоволоконный маршрутизатор, который тяжелее и дороже обычного. Первые шаги по созданию пассивных оптических сетей предприняты в 1995 г. \\ Последняя технология называется PON (Passive Optical Network - пассивная оптическая сеть). Преимущество PON в том, что сеть за пределами квартиры не содержит ни элементов, привлекательных для воров, ни приборов, нуждающихся в электроэнергии, и практически не требует ухода и обслуживания. Однако в квартире приходится ставить оптоволоконный маршрутизатор, который тяжелее и дороже обычного. Первые шаги по созданию пассивных оптических сетей предприняты в 1995 г. \\
 На следующем фото - опора линии электропередачи (напряжение 110 кВ). Видны высоковольтные провода, подвешенные на гирляндах изоляторов, и три волоконно-оптических кабеля, подвешенные без изоляторов, а также соединительные муфты (для пущей надежности спрятанные в металлические ящики). \\ На следующем фото - опора линии электропередачи (напряжение 110 кВ). Видны высоковольтные провода, подвешенные на гирляндах изоляторов, и три волоконно-оптических кабеля, подвешенные без изоляторов, а также соединительные муфты (для пущей надежности спрятанные в металлические ящики). \\
Строка 611: Строка 634:
 Следующий вопрос информационной безопасности, возникший в новейшее время, - это слежка всевозможных темных личностей за нами. "Мы все под колпаком у Мюллера" - помните? Да ладно бы если у одного какого-то Мюллера. Следят за нами все кому не лень, точнее все, кто может придумать для этого технические средства. Уже ни для кого не секрет, что операционная система Windows и некоторые веб-браузеры хранят информацию о нашей деятельности в Сети. \\ Следующий вопрос информационной безопасности, возникший в новейшее время, - это слежка всевозможных темных личностей за нами. "Мы все под колпаком у Мюллера" - помните? Да ладно бы если у одного какого-то Мюллера. Следят за нами все кому не лень, точнее все, кто может придумать для этого технические средства. Уже ни для кого не секрет, что операционная система Windows и некоторые веб-браузеры хранят информацию о нашей деятельности в Сети. \\
 В принципе, для рядового обывателя жизнь под колпаком может быть несколько дискомфортной, но не более того. Если же ты не просто обыватель, а подготовленный шпион, то слежка должна восприниматься тобой как обыкновенная повседневность, не мешающая выполнению твоих трудовых функций. Однако сам факт, что слежка ведется, провоцирует нас на разработку методов противодействия этой слежке. А поскольку мы не можем рассчитывать на то, что наши послания не попадут в руки посторонним, остается один вариант: шифроваться. Так появились коммерческие и некоммерческие шифрсистемы, виртуальные частные сети, прокси-серверы, анонимайзеры... Мы сейчас занимаемся историей техники, так что едва ли здесь будут уместны технические подробности. Остановимся на том, что, хотя с инженерной стороны перечисленные средства имеют различия и соответственно преимущества, недостатки и области применения, но математика, лежащая в их основе, одна и та же. По большому счету, используется тот же алгоритм, что и в электронной подписи, только "другим концом". Речь идет о шифровании с открытым ключом. \\ В принципе, для рядового обывателя жизнь под колпаком может быть несколько дискомфортной, но не более того. Если же ты не просто обыватель, а подготовленный шпион, то слежка должна восприниматься тобой как обыкновенная повседневность, не мешающая выполнению твоих трудовых функций. Однако сам факт, что слежка ведется, провоцирует нас на разработку методов противодействия этой слежке. А поскольку мы не можем рассчитывать на то, что наши послания не попадут в руки посторонним, остается один вариант: шифроваться. Так появились коммерческие и некоммерческие шифрсистемы, виртуальные частные сети, прокси-серверы, анонимайзеры... Мы сейчас занимаемся историей техники, так что едва ли здесь будут уместны технические подробности. Остановимся на том, что, хотя с инженерной стороны перечисленные средства имеют различия и соответственно преимущества, недостатки и области применения, но математика, лежащая в их основе, одна и та же. По большому счету, используется тот же алгоритм, что и в электронной подписи, только "другим концом". Речь идет о шифровании с открытым ключом. \\
-Всевозможные шифры, о которых мы можем составить представление по книгам и фильмам про шпионов, основаны на шифровании __с закрытым ключом__, которое мы обсудили в главе "Первобытная эпоха". В современных шифрсистемах каждый из субъектов посылает другому сообщение типа "зашифровывай свои послания вот таким ключом:...", и эти послания передаются открыто (отсюда и название: __шифрование с открытым ключом__). Посторонний человек запросто может перехватить открытый ключ, но воспользоваться им он едва ли сможет: для расшифровки нужен другой - //закрытый//, или приватный, ключ, который у каждого участника переговоров свой и держится в секрете. И здесь уместна та же оговорка, которую мы сделали при обсуждении электронной подписи: стойкость шифрсистемы с открытым ключом определяется не __невозможностью__, а __большой трудностью__ расчета закрытого ключа по известному открытому. "Это неосуществимо, потому что до сих пор никому не удалось", да? Преимущество шифрсистемы с открытым ключом не в том, что ее невозможно "расколоть", а в возможности установить сколько-нибудь защищенную связь между двумя лицами по недоверенной сети без предварительного обмена закрытыми ключами. \\+Всевозможные шифры, о которых мы можем составить представление по книгам и фильмам про шпионов, основаны на шифровании __с закрытым ключом__, которое мы обсудили в главе "Первобытная эпоха". В современных шифрсистемах каждый из субъектов посылает другому сообщение типа "зашифровывай свои послания вот таким ключом:...", и эти послания передаются открыто (отсюда и название: __шифрование с открытым ключом__). Посторонний человек запросто может перехватить открытый ключ, но воспользоваться им он едва ли сможет: для расшифровки нужен другой - //закрытый//, или приватный, ключ, который у каждого участника переговоров свой и держится в секрете. И здесь уместна та же оговорка, которую мы сделали при обсуждении электронной подписи: стойкость шифрсистемы с открытым ключом определяется не __невозможностью__, а __большой трудоемкостью__ расчета закрытого ключа по известному открытому. "Это неосуществимо, потому что до сих пор никому не удалось", да? Преимущество шифрсистемы с открытым ключом не в том, что ее невозможно "расколоть", а в возможности установить сколько-нибудь защищенную связь между двумя лицами по недоверенной сети без предварительного обмена закрытыми ключами. \\
 С древности, когда криптография только зарождалась, и года как минимум до 1990-го математическая криптография была страшным секретом, изучали ее крайне немногочисленные люди в крайне немногочисленных институтах, сам факт существования которых был гостайной. Школьник, интересовавшийся этой наукой и мечтавший сделать ее своей профессией, не мог просто так прийти в такой институт и подать документы на обучение, как в обычный вуз. Однако в XXI веке требование осуществить передачу данных между абонентами скрытно от посторонних привело к тому, что "информация как вода - дырочку найдет", а спецслужбам, охранявшим секреты, ничего не осталось, кроме как пересмотреть это положение. И сейчас криптография преподается уже совершенно открыто. \\ \\ С древности, когда криптография только зарождалась, и года как минимум до 1990-го математическая криптография была страшным секретом, изучали ее крайне немногочисленные люди в крайне немногочисленных институтах, сам факт существования которых был гостайной. Школьник, интересовавшийся этой наукой и мечтавший сделать ее своей профессией, не мог просто так прийти в такой институт и подать документы на обучение, как в обычный вуз. Однако в XXI веке требование осуществить передачу данных между абонентами скрытно от посторонних привело к тому, что "информация как вода - дырочку найдет", а спецслужбам, охранявшим секреты, ничего не осталось, кроме как пересмотреть это положение. И сейчас криптография преподается уже совершенно открыто. \\ \\
 ==== Характеристика эпохи ==== ==== Характеристика эпохи ====
igor/istoria.txt · Последнее изменение: 2022/05/01 18:15 — igor