Очерки истории отечественной программной инженерии в 1940-е – 80-е годы - [11]
Теперь приверженцы языка ассемблер утверждали, что их код самый быстрый, а любители языков высокого уровня утверждали, что они напишут программу быстрей, чем самый лучший программист на языке ассемблер. Однако программы на языках высокого уровня занимали больший объем памяти и работали медленнее. В вычислительных задачах победила в основном скорость разработки и «удобство» языка программирования для определенного класса задач.
Ассемблер не ушел из практики, когда необходимо было создавать эффективные по объему программы реального времени высокой производительности и занимающие минимальный объем памяти (см. главу 4). В 60-е – 70-е годы большинство программных продуктов в оборонной промышленности для мобильных и бортовых ЭВМ создавались на ассемблерах, адаптированных на архитектуру соответствующих машин. Только в 80-е годы в связи с ростом ресурсов специализированных машин начали использоваться алгоритмические языки высокого уровня, несмотря на возможное расширение программ при трансляции, по сравнению с программами, разработанными на ассемблере.
С середины 50-х годов во всех странах, производивших вычислительную технику, начался бурный процесс «языкотворчества» — создание нескольких сотен проблемно-ориентированных языков [1, 4]. Многим программистам казалось, что небольшие улучшения языков программирования способны радикально повлиять на разработку и качество программ, на использование скудных ресурсов ЭВМ. Однако это требовало создания соответствующих трансляторов и средств отладки, вследствие чего энтузиазм языкотворчества постепенно угас. Сложной задачей для системных программистов того времени было создание трансляторов для конкретных типов машин. Создание каждого транслятора с машинно-независимого языка программирования считалось крупным научным и практическим достижением. Большое число различных типов машин и различных языков требовало трудоемкой работы высококвалифицированных программистов и математиков по разработке трансляторов. Соответственно, возникла необходимость создания небольшого числа стандартизированных языков и программно-преемственных семейств вычислительных машин. Это потребовало глубоких теоретических исследование в теории алгоритмов, схем программ, теории формальных грамматик.
В СССР в 60-е годы был создан алгоритмический язык РЕФАЛ, в основе которого лежала теоретическая модель процесса, реализуемого нормальными алгоритмами Маркова. Его использование в нашей стране позволило создать ряд оригинальных программных продуктов, не имевших аналогов за рубежом. Однако РЕФАЛ испытал судьбу многих отечественных находок. Сходная судьба была у языков программирования семейства Аналитик, созданных в Институте кибернетики АН УССР для ЭВМ серии «МИР». Эти машины, по существу, были первыми персональными ЭВМ (к сожалению, тогдашняя элементная база не позволила свести их габариты к настольным). Однако, несмотря на передовые принципы, заложенные в структуру и функции языков семейства Аналитик, они также не стали достоянием мирового сообщества программистов, хотя иностранные эксперты достаточно высоко оценивали достижения программирования в СССР [4].
Исследования в области параллельного программирования в СССР начались в середине 60-х годов, когда в Институте математики СО АН СССР (Новосибирск) и в Московском энергетическом институте возникли первые коллективы, заинтересовавшиеся теорией параллельных процессов в вычислительных системах, состоящих из однородных или неоднородных машин [4]. Первые монографии по теории вычислительных систем и параллельных вычислений вышли в нашей стране с большим опережением аналогичных изданий за рубежом. Отечественные специалисты первыми в мировой науке дали постановку и предложили решения таких задач, как сегментация алгоритмов и программ, планирование выполнения больших программ на вычислительных системах, динамическое диспетчерование потока программ и сегментов программ, асинхронная организация протекания процессов. В это время было предложено несколько оригинальных моделей для параллельных вычислений, заново открытых потом в США и других странах.
В 1953-х годах Л.В. Канторович разработал технологию крупноблочного программирования, которая давала обозримое описание крупных программ и обеспечивала формализацию, достаточную для исследования синтаксических структур программ и создания программирующих программ [4]. Идеи, высказанные в этих работах, предшествовали развитию программной инженерии. Работа школы протекала весьма активно в 1950 – 60-е годы. Характерной особенностью крупноблочных систем являлось то, что они оперировали не с индивидуальными числами и символами, а с величинами – укрупненными агрегированными информационными объектами. Такие укрупненные структуры данных (матрицы, векторы, последовательности, деревья, схемы и т. д.) выступали как целое в вычислительных планах; стандартные способы обработки отдельных компонентов выполнялись автоматически на нижних уровнях. Это вносило иерархическую структуру в языки программирования, освобождая верхние уровни от ненужной детализации. Существенно, что вычислительный процесс мыслился при этом также «объемным», протекающим одновременно, либо попеременно на каждом из этих уровней. Громоздкие и трудоемкие вычисления часто чрезвычайно упрощались при переходе на другой уровень. Представлялось, что в разумной стратегии переходов с одного уровня на другой кроется значительный резерв для повышения экономики вычислений. На этой же уровневой основе была создана оригинальная теория и методология трансляции, гибко сочетающая компиляцию и интерпретацию.
Замечали ли вы, что все гости, узнав, что среди приглашенных на праздник или вечеринку есть сотрудник медицинского учреждения, тут же вспоминают тысячи вопросов, которые постеснялись задать своему лечащему врачу? И вот через некоторое время бедняга уже осматривает чью-то родинку, пытается объяснить этиологию головных болей у хозяйки и найти ответы на эпизодические: «Правда ли, что градус нужно только повышать?», «Толстеют ли от спермы?», «Почему какашки плавают?». И это только начало… Вскоре оказывается, что нескольких лет медицинского образования и практики вовсе недостаточно, чтобы утолить жажду знаний окружающих. Писатель и сценарист Марк Лейнер и доктор Билли Голдберг решили исправить эту ситуацию и помочь сотням докторов, которые вместо пиццы поглощают на вечеринке чужие порождения затуманенного алкоголем сознания.
Wall Street Journal назвал эту книгу одной из пяти научных работ, обязательных к прочтению. Ученые, преподаватели, исследователи и читатели говорят о ней как о революционной, переворачивающей представления о мозге. В нашей культуре принято относиться к мозгу как к главному органу, который формирует нашу личность, отвечает за успехи и неудачи, за все, что мы делаем, и все, что с нами происходит. Мы приравниваем мозг к компьютеру, считая его «главным» в нашей жизни. Нейрофизиолог и биоинженер Алан Джасанов предлагает новый взгляд на роль мозга и рассказывает о том, какие именно факторы окружающей среды и процессы человеческого тела формируют личность и делают нас теми, кто мы есть.
Тема, которую исследует автор, — книги и книжные полки. Он задается вопросом: так ли очевидно и неизбежно современное положение вещей, когда книги стоят вертикально на горизонтальных полках? Читатели проследят, как свиток времен Античности превращается в кодекс, а тот, в свою очередь, — в книгу, к которой мы привыкли, и узнают, как в разные времена решалась задача хранения книжных собраний. Это щедро проиллюстрированная и увлекательно написанная книга о книге — о том, как она появилась на свет и как мы научились хранить ее.