Главная » Все файлы » Просмотр файлов из архивов » Файлы формата DJVU » Б. Страуструп - Дизайн и Эволюция C++. 2006

Б. Страуструп - Дизайн и Эволюция C++. 2006, страница 7

DJVU-файл Б. Страуструп - Дизайн и Эволюция C++. 2006, страница 7 Языки программирования (3240): Книга - 7 семестрБ. Страуструп - Дизайн и Эволюция C++. 2006: Языки программирования - DJVU, страница 7 (3240) - СтудИзба2019-09-19СтудИзба

Описание файла

DJVU-файл из архива "Б. Страуструп - Дизайн и Эволюция C++. 2006", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр DJVU-файла онлайн

Распознанный текст из DJVU-файла, 7 - страница

Напротив, программа работала, скорее, как набор очень маленьких программок, нежели как большой монолит, и поэтому писать, понимать и отлаживать ее было проще. Олнако реализация самого языка Япш!а не масштабировалась в той же степени, что и моя программа. В результате весь проект чуть не закончился крахом. В то время я пришел к выводу, что реализация Яшц!а (в отличие от самого языка) была ориентирована па небольшие по объему программы, а лля больших не приспособлена 1Ягоцзггцр, 19791. На связывание отдельно скомпилированных классов ухолила масса времени: на компиляцию 1/30 части программы и связывание ее с остальными, уже откомпилированными людулями тратилось больше времени, чем па компиляцию и связывание всей программы как монолита.

Думаю, что, вероятнее всего, это была проблема используемого компоновщика, а не самого языка Яви!а, но это слабое утешение. Кроме того, производительность программы была такой низкой, что не оставляла надежд получить от симулятора хоть сколько- нибудь полезные данные. Плохие показатели производительности были обусловлены языком и его реализацией, а не прилол.ением.

Проблема накладных расходов является в Япш!а фундаментальной и неустранимой. Она коренится в некоторых особенностях языка и их взаимодействиях: проверке типов во время исполнения, гарантированной инициализации переменных, поддержке параллельности, сборке мусора для объектов, созданных пользователем, и записей активации процедур. Измерения показали: более 80% времени тратится на сборку мусора, хотя управление ресурсами брала на себя молелируемая система, так что мусор вообще не появлялся. Современные реализации Япш!а (15 лет спустя) стали лучше, но, по моим свелениям, увеличения производительности на порялок так и не постигнуто. Чтобы не бросать проект, я переписал симулятор на ВСР?. и запускал его на экспериментальном компьютере САР. Опыт кодирования и отладки на ВСР1.

[К1сйагг!з, 19801 оставил у меня неприятные воспоминания. Язык С по сравнению с ВСР) — язык очен высокого уровня. Ни контроля типов, ни поддержки во время исполнения в ВСРП здесь нет и в помине. Однако получившийся симулятор работал достаточно быстро н с его помошью я получил целый ряд полезных результатов. Они прояснили многие вопросы и легли в основу нескольких статей по операционным системам !8ггопзггцр, 1978, 1979Ь, 19811. $ИИИИИВИ Предыстория С++ Расставшись с Кембриджем, я поклялся себе никогда больше не приступать к решению залачи, располагая такими неподходящими инструментами, как те, с которыми я намучился при проектировании и реализации симулятора. Для истории С++ важную роль сыграло составленное мной прелставление о «полхоляшем» инструменте для проектов такого масштаба, как большой симулятор, операционная система и аналогичные задачи системного программирования. Вот эти критерии: я хороший инструмент должен предоставлять средства организации программ, подобные имеющимся в 81шп!а: классы, форму их иерархии, поддержку параллельности и сильный (т.е.

статический) контроль типов, основанный на классах. Эти критерии прелставлялись мне тогла (ла и теперь) существенными для поддержки процесса проектирования, а не для реализации программы; а необходимо, чтобы он генерировал программы, работающие так же быстро, как написанные на ВСР1., и обладал способностью ВСР1 объединять разлельно откомпилированные молули в елиную программу. Должно быть простое соглашение о связях, чтобы удалось объелинять молули, написанные на разных языках, таких как С, А!Во!68, Гогггап, ВСР1., ассемблер и т.л.

Иначе программист будет вынужлен бороться с ограничениями, присущими какому-то одному языку; а инструмент должен обеспечивать переносимую реализацию. Мой опыт показал, что «правильная» реализация, остро необходимая мне сейчас, будет готова «не раньше следующего года», да и то на компьютере, которого у меня нет. Отсюда следует, что должно быть несколько источников реализации инструмента (никакой монополист не сможет поддерживать всех пользователей «редких» машин, а также бедных студентов).

Не должно быть также сложной системы поддержки времени исполнения, которую трудно переносить, и допустима лишь очень ограниченная зависимость инструмента от операционной системы. Эти критерии еше не были четко сформулированы, когда я покидал Кембридж. Некоторые из них окончательно оформились лишь в ходе последующего осмысления собственного опыта, приобретенного при создании симулятора и программ, которые я писал в течение еще пары лет, а также опыта других людей. С++ в том виде, какой он принял к моменту выхода версии 2.0, полностью отвечает данным критериям; серьезные проблемы, с которыми я столкнулся при проектировании шаблонов и обработке исключений, связаны с отходом от некоторых из этих принципов.

Я полагаю, что самой важной особенностью сформулированных выше правил является их слабая связь с нюансами конкретных языков программирования. Вместо этого они налагают определенные ограничения на решение. Когла я работал в Кембридже, лабораторию вычислительной техники возглавлял Морис Уилкс (Маппсе Ю!11гез). Помощь во всех технических вопросах мне оказывали мой руководитель Дэвил Уилер (1)ачЫ %!гее!ег) и Ролжер Нидэм (Койег Неег!Ьаш).

Мои знания в области операционных систем и интерес к модульности и межмолульным коммуникациям способствовали развитию С++. Язык С и системное программирование Цфффф~ЯЩ Например, модель зашиты в С++ базируется на концепции предоставления и передачи прав доступа; различие между инициализацией и присваиванием возникло благодаря размышлениям о способности переноса (ггапз(егг1пй сараЪ|11г1ез); концепция сапа с берет начало от механизмов защиты от чтения/записи в аппаратных устройствах; механизм обработки исключений появился в связи с работой над отказоустойчивыми системами, выполненной группой под руководством Брайана Рэнделла (Впал Яапг!е!1) в Ньюкасле в 70-х гг.

1.2. Язык С и системное программирование На языке С я начал работать в Лондоне в 1975 г. и оценил его преимушества по сравнению с другими языками, которые принято называть языками для системного программирования, машинно-ориентированными или низкоуровневыми. Из таких языков мне были известны Р!. 360, Сога1, Магу и другие, но в основном ВСР1 Я не только пользовался ВСР?„но однажды и реализовал его путем трансляции в промежуточный микрокод — О-код, так что хорошо представлял себе низкоуровневые аспекты, связанные с эффективностью языков такого класса. Защитив диссертацию в Кембридже и получив работу в Ве11 1лЬз, я еще раз изучил С по книге Керн игана (Кегп18Ьап, ! 9781. В то время я не был экспертом по С и рассматривал его в основном как самый современный и известный пример языка системного программирования.

Лишь позже, приобретая собственный опыт и беседуя с коллегами — Стью Фельдманом (Бгц Ре!бшап), Стивом Джонсоном (Згече1оЬпзоп), Брайаном Керниганом и Деннисом Ричи, — я начал по-настоящему понимать С. Таким образом, общее представление о языках системного программирования значило для формирования С++ по меньшей мере столько же, сколько конкретные технические детали С. Я довольно хорошо знал А!йо168 [ЪЧоойчагг1,1974! по работе над небольшими проектами в Кембридже и видел связь между конструкциями этого языка и С. Иногда мне казалось полезным рассматривать конструкции С как частные случаи более общих конструкций А!йо168.

Любопытно, что я никогда не рассматривал А!Во!68 в качестве языка системного программирования (несмотря на то что сам пользовался написанной на нем операционной системой). Подозреваю, причина здесь в том, что я считал очень важными переносимость, простоту связывания с программами на других языках и эффективность исполнения. Как-то раз я сказал, что А18о!68 с классами, как в 51шп!а, — это язык моей мечты. Однако в качестве практического инструмента С казался мне лучше, чем А!йо168.

1.3. Немного об авторе книги Говорят, что структура системы отражает структуру организации, в которой она была создана. В общем и целом я поддерживаю это мнение. Из него также следует, что если система есть плод работы одного человека, то она отражает склад его личности. Оглядываясь назад, я думаю, что на общую структуру С++ мое мировоззрение наложило такой же отпечаток, как и научные концепции, лежащие в основе отдельных его частей. ШИВИИИ1; Предыстория С++ Я изучал математику, в том числе прикладную, поэтому зашишенная в Дании кандидатская диссертация была посвяшена математике и информатике. В результате я научился любить красоту математики, но предпочитал смотреть на пее, как на инструмент решения практических задач.

Я искренне сочувствовал студенту, которого Евклид, по преданию, выгнал за вопрос «Но для чего нужна математика?» Точно так же мой интерес к компьютерам и языкам программирования носит в основном прагматический характер. Компьютеры и языки программирования можно оценивать как произвепения искусства, но эстетические факторы должны дополнять и усиливать их полезные свойства, а не подменять их. Больше 25 лет я увлекаюсь историей. Немалое время посвятил и изучению философии.

Отсюда вполне осознанный взглял на истоки моих интеллектуальных пристрастий. Если говорить о философских течениях, то мне, скорее, ближе эмпирики, чем идеалисты; мистиков я просто не понимаю. Поэтому Аристотеля я предпочитаю Платону, Юма — Декарту, а перед Паскалем склоняю голову. Всеобьемлющие «системы», такие, как у Платона или Канта, пленяют меня, но кажутся фундаментально порочными, поскольку, по-моему, онн очень далеки от повседневного опыта и особенностей конкретного индивидуума. Почти фанатичный интерес Кьеркегора к личности н его тонкое понимание психологии кажутся мне куда интереснее грандиозных схем и заботы обо всем человечестве, присуших Гегелю или Марксу. Уважение к группе, не подразумевающее уважения к ее членам, я не считаю уважением вовсе. Корни многих решений для С++ — в моем нежелании принуждать пользователей делать что бы то ни было жестко определенным образом.

Из истории мы знаем, что вина за многие ужасные трагедии лежит на идеалистах, которые пытались заставить людей «делать так, чтобы им было хорошо». Кроме того, я считаю, что идеалисты склонны игнорировать неулобный опыт и факты, противоречашие их догмам или теории. Всякий раз, когда те или иные идеалы вступают в противоречие, а иногда и в тех ситуациях, где ученые мужи пришли к единодушному согласию, я предпочитаю давать программисту выбор. Мои литературные вкусы еше раз подтверждают нежелание принимать решение только на основе теории и логики.

В этом смысле С++ во многом обязан таким романистам и эссеистам, как Мартин А. Хансен, Альбер Камю и Джордж Оруэлл, которые никогда не видывали компьютера, и таким ученым, как Дэвид Грие, 2тспальд Кнут и Роджер Нидэм. Часто, испытывая искушение запретить какую-то возможность, которая лично мне не нравилась, я останавливался, ибо не считал себя вправе навязывать свою точку зрения другим люлям. Я знаю, что многого можно добиться относнтелыю быстро, если последовательно придсрживаться логики и безжалостно выносить приговор «неправильному, устаревшему и нелогичному образу мыслей». Но при такой модели становятся очень велики человеческие потери. Для меня намного лороже принятие того факта, что люли думают и действуют по-разному.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее