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

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


igor:istoria

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2020/01/26 21:50] – [Специализированные и проблемно-ориентированные компьютеры] igorigor:istoria [2020/01/28 14:07] – [Программирование в средние века] igor
Строка 316: Строка 316:
 Что же касается исходных данных для решения задачи, то теперь можно было (а) заготовить их в виде отдельного файла или (б) вводить по мере потребности в них, в ответ на запрос машины. Вставка исходных данных прямо в текст программы, практиковавшаяся в древние времена, стала бессмысленной, сейчас так уже никто не делает. Файловый принцип организации данных на дисках стал универсальным инструментом для обеспечения совместной работы нескольких программ при решении смежных задач. Теперь программное обеспечение чаще всего выпускается не в виде отдельных программ, каждая из которых решает свою задачу, а в виде программных пакетов, каждый из которых обеспечивает целый комплекс задач, оставляя пользователю свободу замены любой отдельной программы на что-то более новое или просто другое. \\ Что же касается исходных данных для решения задачи, то теперь можно было (а) заготовить их в виде отдельного файла или (б) вводить по мере потребности в них, в ответ на запрос машины. Вставка исходных данных прямо в текст программы, практиковавшаяся в древние времена, стала бессмысленной, сейчас так уже никто не делает. Файловый принцип организации данных на дисках стал универсальным инструментом для обеспечения совместной работы нескольких программ при решении смежных задач. Теперь программное обеспечение чаще всего выпускается не в виде отдельных программ, каждая из которых решает свою задачу, а в виде программных пакетов, каждый из которых обеспечивает целый комплекс задач, оставляя пользователю свободу замены любой отдельной программы на что-то более новое или просто другое. \\
 С появлением понятия библиотеки произошло размежевание таких понятий, как язык программирования, система программирования, инструментальные средства программирования. Если в древнюю эпоху программист работал на некотором языке и этим определялся весь его стиль работы (а кто-то и до сих пор так думает), то начиная со средних веков язык уже не значит ничего. Способность программиста решать то или иное множество задач с той или иной эффективностью теперь определяется, прежде всего, теми библиотеками, которые он имеет, и в какой-то мере теми программными инструментами, которыми пользуется. \\ С появлением понятия библиотеки произошло размежевание таких понятий, как язык программирования, система программирования, инструментальные средства программирования. Если в древнюю эпоху программист работал на некотором языке и этим определялся весь его стиль работы (а кто-то и до сих пор так думает), то начиная со средних веков язык уже не значит ничего. Способность программиста решать то или иное множество задач с той или иной эффективностью теперь определяется, прежде всего, теми библиотеками, которые он имеет, и в какой-то мере теми программными инструментами, которыми пользуется. \\
 +С другой стороны, применение линковщиков изменило наши взгляды на подпрограммы вообще. Если раньше любая подпрограмма рассматривалась только как принадлежность какой-то одной прикладной программы, то теперь она приобрела самостоятельную ценность. Библиотеки подпрограмм стали ПРОДУКТОМ, и зародилась (а в новое время вошла в полную силу) целая отрасль программирования, поставляющая на рынок не готовые прикладные программы, а полуфабрикаты (называемые платформами или фреймворками), на основе которых программисты "на местах" строили свои изделия. Программирование с использованием фреймворков менее трудоемко, чем без них, и доступно программисту не очень высокой квалификации. Это конечно хорошо, но никакое хорошо в нашем мире не бесплатно: возрастает "ресурсоемкость" готовых программ. \\
 В предыдущей главе мы обсудили Алгол как структурный язык и Фортран как бесструктурный. Именно по причине бесструктурности Фортран оказался тупиковой ветвью эволюции, а на место Алгола пришли его потомки. \\ В предыдущей главе мы обсудили Алгол как структурный язык и Фортран как бесструктурный. Именно по причине бесструктурности Фортран оказался тупиковой ветвью эволюции, а на место Алгола пришли его потомки. \\
 В конце 60-х - начале 70-х годов Н. Вирт из Швейцарской высшей технической школы Цюриха (ETHZ) создал язык **Паскаль**, в котором воплотился многолетний опыт эксплуатации Алгола. Вирт не планировал революции в программировании - он хотел создать хороший учебно-боевой язык, и с этой задачей он справился блестяще. Новый язык содержал все полезное, что было в его прототипах, и многое, чего в них не хватало, но не прощал «лишних вольностей». Его правила строги и прозрачны, поэтому изучение Паскаля по плечу даже школьнику, а освоив его однажды, вы сможете работать на нем всю жизнь, не испытывая нужды ни в чем другом. Исходя из этого я рассматриваю Паскаль как очередную маленькую эволюционную ступень по отношению к Алголу. \\ В конце 60-х - начале 70-х годов Н. Вирт из Швейцарской высшей технической школы Цюриха (ETHZ) создал язык **Паскаль**, в котором воплотился многолетний опыт эксплуатации Алгола. Вирт не планировал революции в программировании - он хотел создать хороший учебно-боевой язык, и с этой задачей он справился блестяще. Новый язык содержал все полезное, что было в его прототипах, и многое, чего в них не хватало, но не прощал «лишних вольностей». Его правила строги и прозрачны, поэтому изучение Паскаля по плечу даже школьнику, а освоив его однажды, вы сможете работать на нем всю жизнь, не испытывая нужды ни в чем другом. Исходя из этого я рассматриваю Паскаль как очередную маленькую эволюционную ступень по отношению к Алголу. \\
Строка 337: Строка 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