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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2020/01/27 19:24] – [Программирование в средние века] igorigor:istoria [2020/02/14 15:28] – [Специализированные и проблемно-ориентированные компьютеры] igor
Строка 78: Строка 78:
 Математическая криптография первой половины XX века шла по пути наименьшего сопротивления: создавала шифрсистемы __с закрытым ключом__. Смысл в том, что алгоритм шифрования либо вообще открытый, либо существует вероятность, что он станет известен врагу. Но для расшифровки наших посланий алгоритм знать недостаточно: нужен //ключ//, который известен только отправителю и получателю. Два субъекта, желающие установить связь друг с другом, предварительно должны обменяться ключами, и сделать это нужно так, чтобы ключ не попал в чужие руки. Пока субъектами были военные и государственные учреждения, такой подход всех устраивал. Но история имеет свойство повторяться. В начале XXI века задача установления засекреченной связи стояла уже перед простыми гражданами, для которых обмен закрытыми ключами был сопряжен с определенными трудностями, а то и вовсе невозможен. Ответом на эту задачу стали шифрсистемы __с открытым ключом__, но это уже совсем другая история. \\ Математическая криптография первой половины XX века шла по пути наименьшего сопротивления: создавала шифрсистемы __с закрытым ключом__. Смысл в том, что алгоритм шифрования либо вообще открытый, либо существует вероятность, что он станет известен врагу. Но для расшифровки наших посланий алгоритм знать недостаточно: нужен //ключ//, который известен только отправителю и получателю. Два субъекта, желающие установить связь друг с другом, предварительно должны обменяться ключами, и сделать это нужно так, чтобы ключ не попал в чужие руки. Пока субъектами были военные и государственные учреждения, такой подход всех устраивал. Но история имеет свойство повторяться. В начале XXI века задача установления засекреченной связи стояла уже перед простыми гражданами, для которых обмен закрытыми ключами был сопряжен с определенными трудностями, а то и вовсе невозможен. Ответом на эту задачу стали шифрсистемы __с открытым ключом__, но это уже совсем другая история. \\
 Можно ли считать "Энигму" компьютером? По-моему, нет. В лучшем случае она тянет на специализированный гаждет. Зато машина "Бомба", которую англичане построили для раскрытия шифра "Энигмы", к компьютерам приближается вплотную. Когда же вместо "Энигмы" немцы построили более хитрую машину "Лоренц", англичане ответили им своим "Колоссусом" (1943 г.). В создании "Бомбы" участвовал математик Алан Тьюринг. "Бомба" была __специализированным__ устройством, но, работая над ней, Тьюринг уже задумывался о том, что делать дальше, и выдвинул принципы построения __универсальных__ машин: (1) машина должна иметь множество одинаковых запоминающих ячеек, (2) любая математическая операция может быть выполнена с данными из любых ячеек, (3) чтобы указать машине, какие операции нужно выполнять и над какими данными, пишется //программа//, которая не "ввинчивается" в машину намертво, а помещается опять-таки в запоминающие ячейки, где она может быть быстро и легко заменена без ущерба для "железа". Идейное наследие Тьюринга этим отнюдь не исчерпывается. В учебниках рассматривается //машина Тьюринга// - это математическая абстракция, которая никогда не воплощалась в металле и никогда не будет воплощаться, потому что менее эффективна, чем обычные компьютеры. \\ Можно ли считать "Энигму" компьютером? По-моему, нет. В лучшем случае она тянет на специализированный гаждет. Зато машина "Бомба", которую англичане построили для раскрытия шифра "Энигмы", к компьютерам приближается вплотную. Когда же вместо "Энигмы" немцы построили более хитрую машину "Лоренц", англичане ответили им своим "Колоссусом" (1943 г.). В создании "Бомбы" участвовал математик Алан Тьюринг. "Бомба" была __специализированным__ устройством, но, работая над ней, Тьюринг уже задумывался о том, что делать дальше, и выдвинул принципы построения __универсальных__ машин: (1) машина должна иметь множество одинаковых запоминающих ячеек, (2) любая математическая операция может быть выполнена с данными из любых ячеек, (3) чтобы указать машине, какие операции нужно выполнять и над какими данными, пишется //программа//, которая не "ввинчивается" в машину намертво, а помещается опять-таки в запоминающие ячейки, где она может быть быстро и легко заменена без ущерба для "железа". Идейное наследие Тьюринга этим отнюдь не исчерпывается. В учебниках рассматривается //машина Тьюринга// - это математическая абстракция, которая никогда не воплощалась в металле и никогда не будет воплощаться, потому что менее эффективна, чем обычные компьютеры. \\
-Как мы теперь видим, Тьюринг был не первый, кто додумался до теоретических принципов построения компьютера (за исключением того, что в машинах Цузе программа не хранилась в запоминающих ячейках, а читалась с перфоленты). Тьюринг был первым, кто заявил эти принципы вслух, и первым, кого услышали, в итоге получилось так, что он считается основоположником современной архитектуры компьютеров. В рамках принципов, выдвинутых Тьюрингом, были построены машины: в Англии - EDSAC (1949 г.), в США - ENIAC (1944 г.) и EDVAC (1949 г.), которые уже без всякой натяжки могут считаться настоящими компьютерами. Эти машины знаменуют собой конец первобытной эпохи и начало компьютерной цивилизации. \\ \\+Как мы теперь видим, Тьюринг был не первый, кто додумался до теоретических принципов построения компьютера (за исключением того, что в машинах Цузе программа не хранилась в запоминающих ячейках, а читалась с перфоленты). Тьюринг был первым, кто заявил эти принципы вслух, и первым, кого услышали, в итоге получилось так, что он считается основоположником современной архитектуры компьютеров. В рамках принципов, выдвинутых Тьюрингом, были построены машины: в Англии - EDSAC (1949 г.), в США - ENIAC (строился в 1944-1946 гг., работал до 1955 г.) и EDVAC (1949 г.), которые уже без всякой натяжки могут считаться настоящими компьютерами. Эти машины знаменуют собой конец первобытной эпохи и начало компьютерной цивилизации. \\ \\
 ==== Характеристика эпохи ==== ==== Характеристика эпохи ====
 Первобытная эпоха в компьютерном мире продолжалась до середины XX века и характеризовалась следующим: \\ Первобытная эпоха в компьютерном мире продолжалась до середины XX века и характеризовалась следующим: \\
Строка 279: Строка 279:
 Размещение программ в ПЗУ, во-первых, гарантирует сохранность программ, и во-вторых, исключает потери времени на загрузку программ в память (на обычных компьютерах при каждом включении, а также после устранения сбоя, производится загрузка ОС, которая может занимать несколько минут). Так обеспечивается готовность машины решать любую задачу немедленно, как только в этом возникнет необходимость. \\ Размещение программ в ПЗУ, во-первых, гарантирует сохранность программ, и во-вторых, исключает потери времени на загрузку программ в память (на обычных компьютерах при каждом включении, а также после устранения сбоя, производится загрузка ОС, которая может занимать несколько минут). Так обеспечивается готовность машины решать любую задачу немедленно, как только в этом возникнет необходимость. \\
 На берегу, на гражданской службе более типична несколько другая ситуация: круг задач, которые предстоит решать на компьютере, не определен как исчерпывающий список. Разработчик такого компьютера вынужден "пройти между Сциллой и Харибдой": сосредоточить максимум усилий на нужных задачах и в то же время обеспечить приспосабливаемость машины к решению новых задач, которые могут появиться в будущем. Такой компьютер называется //проблемно-ориентированным//. Малые ЭВМ серии СМ, которые строились в нашей стране в 70-е годы, как и их американские прототипы, относятся к проблемно-ориентированным: они могут решать много разных задач, однако есть такие задачи, которые им не под силу. Структура программного обеспечения проблемно-ориентированных машин практически такая же, как и у "больших", и включает операционную систему и инструментарий для разработки программ. \\ На берегу, на гражданской службе более типична несколько другая ситуация: круг задач, которые предстоит решать на компьютере, не определен как исчерпывающий список. Разработчик такого компьютера вынужден "пройти между Сциллой и Харибдой": сосредоточить максимум усилий на нужных задачах и в то же время обеспечить приспосабливаемость машины к решению новых задач, которые могут появиться в будущем. Такой компьютер называется //проблемно-ориентированным//. Малые ЭВМ серии СМ, которые строились в нашей стране в 70-е годы, как и их американские прототипы, относятся к проблемно-ориентированным: они могут решать много разных задач, однако есть такие задачи, которые им не под силу. Структура программного обеспечения проблемно-ориентированных машин практически такая же, как и у "больших", и включает операционную систему и инструментарий для разработки программ. \\
 +Вот еще кое-какая информация к размышлению на тему СМ ЭВМ: \\
 +[[https://habr.com/ru/company/dataart/blog/484124/]] \\
 +[[https://habr.com/ru/company/dataart/blog/488274/]] \\
 Специализированные компьютеры для гражданского применения в средние века тоже существовали: они применялись в промышленных роботах, станках с ЧПУ и автоматизированных системах управления технологическими процессами. \\ Специализированные компьютеры для гражданского применения в средние века тоже существовали: они применялись в промышленных роботах, станках с ЧПУ и автоматизированных системах управления технологическими процессами. \\
 Я пишу в основном о корабельных ЭВМ, поскольку с ними знаком. На самом деле "Атака" была не первой такой машиной, а ведь были ЭВМ и самолетные, и наземные. \\ \\ Я пишу в основном о корабельных ЭВМ, поскольку с ними знаком. На самом деле "Атака" была не первой такой машиной, а ведь были ЭВМ и самолетные, и наземные. \\ \\
Строка 338: Строка 341:
 Программисты моего поколения вспоминают Бэйсик как кошмар, хотя, если вдуматься, в нем не было ничего такого ужасного. Возвращаюсь к мысли о том, что программа - техническое изделие, а техническим изделиям отнюдь не чужды понятия о красоте. У нас был старый верный Фортран: брутальный, как швейцарский электровоз, и крепкий, как ледокол "Красин". Его раздербанили на запчасти, 80% деталей слегка перекрасили, чтобы создать видимость обновления, еще 10% допилили напильником на коленке для обеспечения работы в режиме интерпретации, и добавили множество подпорок, подставок и подкладок, обеспечивающих работу на абонентских терминалах. Какой же красоты можно было ожидать от такого изделия? \\ Программисты моего поколения вспоминают Бэйсик как кошмар, хотя, если вдуматься, в нем не было ничего такого ужасного. Возвращаюсь к мысли о том, что программа - техническое изделие, а техническим изделиям отнюдь не чужды понятия о красоте. У нас был старый верный Фортран: брутальный, как швейцарский электровоз, и крепкий, как ледокол "Красин". Его раздербанили на запчасти, 80% деталей слегка перекрасили, чтобы создать видимость обновления, еще 10% допилили напильником на коленке для обеспечения работы в режиме интерпретации, и добавили множество подпорок, подставок и подкладок, обеспечивающих работу на абонентских терминалах. Какой же красоты можно было ожидать от такого изделия? \\
 Мы договорились изучать историю серьезно, а история учит, что все новое в этом мире не возникает просто так: если какая-то вещь появилась, значит она кому-то для чего-то была нужна. Кому и для чего был нужен Бэйсик? Ответ на этот вопрос кроется в названии языка: BASIC - Beginners All-purpose Symbolic Instruction Code - многоцелевой символический командный код для начинающих. То есть Бэйсик не рассматривался как боевой язык - только как учебный, да не просто учебный, а для студентов младших курсов. В те времена еще господствовали перфокарточные технологии. Они были более-менее приемлемы для практикующих программистов, но крайне неудобны для обучения: даже совсем простую программу из 10 строк невозможно было отладить за время одного учебного занятия. Нужен был диалоговый режим. Телетайпы тогда уже существовали, но мейнфреймы, к которым их можно было бы подключить, если и были, то были большой редкостью. Да и не всякий вычислительный центр предоставил бы машинное время первоклашкам-промакашкам. Еще были маленькие машины в калибре нашей "Наири" - диалоговый режим они могли обеспечить, но полнопрофильный компилятор типа Фортрана или Алгола они бы не потянули. Если же из языка выкинуть по максимуму все то, что изучается на старших курсах, то транслятор можно "укоротить" до 4 КБайт, а то и меньше... Вот вам и решение. \\  Мы договорились изучать историю серьезно, а история учит, что все новое в этом мире не возникает просто так: если какая-то вещь появилась, значит она кому-то для чего-то была нужна. Кому и для чего был нужен Бэйсик? Ответ на этот вопрос кроется в названии языка: BASIC - Beginners All-purpose Symbolic Instruction Code - многоцелевой символический командный код для начинающих. То есть Бэйсик не рассматривался как боевой язык - только как учебный, да не просто учебный, а для студентов младших курсов. В те времена еще господствовали перфокарточные технологии. Они были более-менее приемлемы для практикующих программистов, но крайне неудобны для обучения: даже совсем простую программу из 10 строк невозможно было отладить за время одного учебного занятия. Нужен был диалоговый режим. Телетайпы тогда уже существовали, но мейнфреймы, к которым их можно было бы подключить, если и были, то были большой редкостью. Да и не всякий вычислительный центр предоставил бы машинное время первоклашкам-промакашкам. Еще были маленькие машины в калибре нашей "Наири" - диалоговый режим они могли обеспечить, но полнопрофильный компилятор типа Фортрана или Алгола они бы не потянули. Если же из языка выкинуть по максимуму все то, что изучается на старших курсах, то транслятор можно "укоротить" до 4 КБайт, а то и меньше... Вот вам и решение. \\ 
-Чем жертвовали создатели Бэйсика и ради чего? Боевыми возможностями языка? Но поскольку язык для начального обучения, то это не считается. То, что язык получился кривой и некрасивый, - это хуже, потому что отрицательно влияет на интеллектуальное становление будущих специалистов. Зато получили первый в истории диалоговый язык, и он же был первым широко распространенным **//интерпретационным//** языком. Компиляторы Фортрана, Алгола и других языков преобразовывали исходный текст программы в машинный код, который затем запускался на выполнение. Бэйсик работает иначе. Интерпретатор просматривает исходный текст строка за строкой и сам выполняет описанные в строке действия. Поскольку каждую строку приходится обрабатывать отдельно, выполнение всей программы происходит намного медленнее, чем выполнение машинного кода, зато отпадает необходимость в компиляции как отдельном этапе работы. Что лучше? Если бы что-то было лучше, все поступали бы только так. Большая и сложная программа, особенно если она обрабатывает большие массивы данных, гораздо эффективнее выполняется с участием компилятора. Но в ряде случаев, особенно при выполнении учебных заданий, выполнение программы "на лету", без компиляции, может быть даже быстрее. И еще одно преимущество интерпретатора: поскольку он не вырабатывает никакого машинного кода, а выполняет все действия сам, неправильно написанная прикладная программа ничего не может испортить. Впрочем, в те годы это преимущество никому не казалось существенным. \\+Чем жертвовали создатели Бэйсика и ради чего? Боевыми возможностями языка? Но поскольку язык для начального обучения, то это не считается. То, что язык получился кривой и некрасивый, - это хуже, потому что отрицательно влияет на интеллектуальное становление будущих специалистов. Уже знакомый нам Э. Дейкстра, известный как своими научными трудами, так и весьма резкими высказываниями в адрес оппонентов, писал про Бэйсик: "Этот язык калечит мозг, преподавание его - преступление" (хотя по другим источникам, это было написано про Кобол, но в данном случае это не суть: применительно к Бэйсику это по-любому справедливо). Зато получили первый в истории диалоговый язык, и он же был первым широко распространенным **//интерпретационным//** языком. Компиляторы Фортрана, Алгола и других языков преобразовывали исходный текст программы в машинный код, который затем запускался на выполнение. Бэйсик работает иначе. Интерпретатор просматривает исходный текст строка за строкой и сам выполняет описанные в строке действия. Поскольку каждую строку приходится обрабатывать отдельно, выполнение всей программы происходит намного медленнее, чем выполнение машинного кода, зато отпадает необходимость в компиляции как отдельном этапе работы. Что лучше? Если бы что-то было лучше, все поступали бы только так. Большая и сложная программа, особенно если она обрабатывает большие массивы данных, гораздо эффективнее выполняется с участием компилятора. Но в ряде случаев, особенно при выполнении учебных заданий, выполнение программы "на лету", без компиляции, может быть даже быстрее. И еще одно преимущество интерпретатора: поскольку он не вырабатывает никакого машинного кода, а выполняет все действия сам, неправильно написанная прикладная программа ничего не может испортить. Впрочем, в те годы это преимущество никому не казалось существенным. \\
 Поскольку интерпретатор не порождает машинного кода, автор программы, написанной на Бэйсике, может передавать ее другим лицам ТОЛЬКО в виде исходного кода. Это с какой-то стороны хорошо, а с какой-то плохо (это кому как!) - ну не бывает на свете идеальных инженерных решений. Безусловно хорошо то, что такая программа может быть запущена на любом компьютере, на котором имеется соответствующий интерпретатор. В какой-то мере интерпретатор Бэйсика (и любого другого языка из тех, что появились позже) может рассматриваться как виртуальная машина - доступная владельцу мелкого компьютера альтернатива СВМ больших мейнфреймов. В предыдущей главе мы отметили, что разработчики __древних__ компьютеров первым делом оснащали свои детища компилятором Фортрана - точно так же в __средние века__ разработчики 16-разрядных мини-ЭВМ (PDP-11, они же СМ-3, СМ-4) оснащали свои операционные системы интерпретатором Бэйсика, хотя для таких машин он уже должен был считаться устаревшим. А разработчики восьмиразрядных домашне-игровых компьютеров своей жизни без Бэйсика не мыслили, потому что написать для такой слабой машины мало-мальски приличный компилятор было весьма непростой задачей, стоимость которой свела бы к нулю всю привлекательность таких машинок. А на советских ПК обычно вообще никакого другого программного обеспечения не было. Более серьезные программисты не жаловали Бэйсик, считали его //суррогатной технологией//. Однако в средние века проблема суррогатных технологий не ощущалась так остро, поэтому к ней я надеюсь вернуться, когда наша история дойдет до нового времени. \\ Поскольку интерпретатор не порождает машинного кода, автор программы, написанной на Бэйсике, может передавать ее другим лицам ТОЛЬКО в виде исходного кода. Это с какой-то стороны хорошо, а с какой-то плохо (это кому как!) - ну не бывает на свете идеальных инженерных решений. Безусловно хорошо то, что такая программа может быть запущена на любом компьютере, на котором имеется соответствующий интерпретатор. В какой-то мере интерпретатор Бэйсика (и любого другого языка из тех, что появились позже) может рассматриваться как виртуальная машина - доступная владельцу мелкого компьютера альтернатива СВМ больших мейнфреймов. В предыдущей главе мы отметили, что разработчики __древних__ компьютеров первым делом оснащали свои детища компилятором Фортрана - точно так же в __средние века__ разработчики 16-разрядных мини-ЭВМ (PDP-11, они же СМ-3, СМ-4) оснащали свои операционные системы интерпретатором Бэйсика, хотя для таких машин он уже должен был считаться устаревшим. А разработчики восьмиразрядных домашне-игровых компьютеров своей жизни без Бэйсика не мыслили, потому что написать для такой слабой машины мало-мальски приличный компилятор было весьма непростой задачей, стоимость которой свела бы к нулю всю привлекательность таких машинок. А на советских ПК обычно вообще никакого другого программного обеспечения не было. Более серьезные программисты не жаловали Бэйсик, считали его //суррогатной технологией//. Однако в средние века проблема суррогатных технологий не ощущалась так остро, поэтому к ней я надеюсь вернуться, когда наша история дойдет до нового времени. \\
 На замену Бэйсику был придуман Фокал, но он не обещал ни чудес, ни революций и в итоге оказался мертворожденным. Несмотря на критику, которой Бэйсик подвергался с "молодости", он пережил несколько реинкарнаций. Однако будущего у него нет. \\ \\ На замену Бэйсику был придуман Фокал, но он не обещал ни чудес, ни революций и в итоге оказался мертворожденным. Несмотря на критику, которой Бэйсик подвергался с "молодости", он пережил несколько реинкарнаций. Однако будущего у него нет. \\ \\
igor/istoria.txt · Последнее изменение: 2022/05/01 18:15 — igor