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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2020/01/27 19:24] – [Программирование в средние века] igorigor:istoria [2020/01/28 14:07] – [Программирование в средние века] igor
Строка 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