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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2020/01/27 19:24] – [Программирование в средние века] igorigor:istoria [2020/02/14 14:45] – [Криптография и криптоанализ как движущая сила компьютеростроения] 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 века и характеризовалась следующим: \\
Строка 338: Строка 338:
 Программисты моего поколения вспоминают Бэйсик как кошмар, хотя, если вдуматься, в нем не было ничего такого ужасного. Возвращаюсь к мысли о том, что программа - техническое изделие, а техническим изделиям отнюдь не чужды понятия о красоте. У нас был старый верный Фортран: брутальный, как швейцарский электровоз, и крепкий, как ледокол "Красин". Его раздербанили на запчасти, 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