Б. Страуструп - Дизайн и Эволюция C++. 2006 (1160775), страница 45
Текст из файла (страница 45)
Майк Тиман (Мйе Т1сшапп) провел яркую и 1штереснук> презентацию с целью доказать, что его Сз!П Сь '- сможет лелать почти все, так что лругие авторы останутся без работы. Новый компилятор С++ от ЛТйТ так никогда и нс увнлел света, ОЫ1) С-и- версии 1.1З вышел в лскабре 1987 г., а ТацМегпс С+в — в январе ! 988 г. Вплоть ло июня 1988 г, все компиляторы С++ на персональных компьютерах были перенесенными вариантами С1гопц Затем компания Хоггесй начала поставки компилятора, сознанного Уолтером Брайтом в Сиэтле. Появление уожесй С+в открыло реальный лоступ к С++ пользователям ПК.
Консервативно настроенпыс программисты решили положлать выхола компилятора Вот!апо' С++ в мае 1990 г. илн лаже выхода М1сгозой Сч-ь в марте 1992 г. В феврале 1992 г. компания ПЕС выпустила свой первый независимо разработанный компилятор, а в мас 1992 г. то жс самос сделала! ВМ. Сейчас на рынке есть около люжины компиляторов, созданных разныхш фирмами. Кроме того, С1гопг перенесен практически на все платформы. Ьольшой вклад в это дело внесли такие фирмы, как Бцп, Нев!егг-Раскагд, Сепгегйпе, РагсР!асс, С!оскепзр!е! и Сошеац Сошрц6пй. 7.1.5. Инструментальные средства и среды программирования С++ проектировался так, чтобы им можно было пользоваться в среде, почти лишенной каких бы то ни было инструментальных средств.
Отчасти зто было вызвано необходимостью; сначала не хватало ресурсов, позже — финансовых средств. Но это было и сознательным решением, направленным на упрощение реализации и переноса на лругие платформы. Теперь начинают появляться такие среды программирования на С++, которые сопоставимы с разработанными лля других объектно-ориентированных языков. Например, ОЬ)есгЖогкз С++ от компании РагсР1асе — по сути дела, среда разработки ЯгпайгаИг, адаптированная пол С++, а Сепгег!1пе С++ !бывший ЯаЬсг С++)— интерпретируемая, созданная пол влиянием среды лля 1пгсг!ир, Это дает программистам на С++ возможность пользоьаться более лорогими, но и повышаюгцими произволительность трупа средами, которые раньше были лоступны только лля других языков.
В настоящее время лля С++ существует довольно много таких сред. Большинство реализаций С++ лля ПК вЂ” это компиляторы, интегрированные с редакторами, инстругнептальпыми срелствами, файловыми системамп, стандартными НИИИ ИИИВ Заинтересованность и использование библиотеками и тд. МасАрр и Мас МР у1г — соответствуюшие аналоги на платформе Арр[с Мас. ЕТ++ — свободно распространяемый компилятор в пухе МасАрр. Другие примеры — Епег81ге от компании 1лск[ и Яо11Ьепс!т от Нету!ей-рве[саге[. Эти среды, хотя и более сложные, чем использовавшиеся ранее для С, являются лишь примитивными предшественниками горазло более развитых систем. Современные инструментальныс средства обычно акцентируют внимание на синтаксических аспектах языка, на поведении во время исполнения и на текстовом прелставлении программы.
Но чтобы в полной мере проявились достоинства С++, в среде должна использоваться вся система типов. Нужно также, чтобы информация, Лоступная во время исполнения, ассоциировалась в срспе со статической структурой программы. Естественно, такая среда лолжна масштабироваться под очень большие программы (порядка 500 тыс. строк на С++), лля которых наличие инструментальных средств наиболее важно. Несколько подобных систем нахолятся в процессе разработки, я принимаю активное участие в одном из таких проектов, [Мнггау,1992], [Коеп18, 1992[. Однако уместнылг булет предунрежление. С помощью срелы программирования поставшик может заманить пользователя в замкнутый мирок средств, библиотек, инструментов и приемов работы, которые с большим трупом переносятся на другие системы.
Поэтому у программиста есть риск попасть в сильную зависимость от одного поставщика и лишить себя возможности работать с лругимп машинными архитектурами, библиотеками, базами данных и т.д., если поставщик не поддерживает их. Одной из главных моих целей при проектировании С++ было дать пользователям свободу выбора, но срслу программирования можно спроектировать так, что эта цель не будет достигнута [8ггопзггнр, 1987г[[: «Следует приложить усилия к тому, чтобы исходный текст программы можно было без больших затрат переносить между такими средамим Точно так же, как я не питаю надежды на создание единой большой стандартной библиотеки, не вижу и возможности для создания стандартной среды разработки для Сч-ь [81гоцзггнр, 1987с[1: «По крайней мере, для С++ всегда будет существовать несколько разных сред разработки и исполнения, радикально отличающихся друг от друга.
Было бы абсурдом ожидать общей среды исполнения, скажем, дпя !пге) 80286 или Сгау ХМР и столь же наивно надеяться на создание общей среды разработки, пригодной как для исследователя-одиночки, так и дпя коллектива из 200 программистов, работающих над крупным проектом. Однако ясно и то, что необходимо пользоваться единым стилем там, где это имеет смыслы Наличие множества библиотек, срел программирования и исполнения важно для полдержки широкого диапазона приложений на С++.
С таким приоритетом С++ разрабатывался с 1987 г. и лаже раньше. Обьяснсние ланному подходу — оценка С++ как языка программирования общего назначения (см. разделы 1.1 и 4.2). 7.2. Преподавание и изучение С++ На эволюцию языка оказали большое влияние метолы его изучения. Поэтому разобраться в самом С++, а также в причинах его быстрого развития сложно без правильного понимания того, как следует преподавать и изучать данный язык. Преподавание и изучение С++ 61ИИВИИ3 Я долго размышлял, как неопытные пользователи будут изучать н применять С++, много времени преподавал сам, в основном ученым мужам. Все это существенно повлияло на проектирование языка с первых дней его созлания.
Также облик Сн-+ во многом опрслелилп все успехи и неулачи, сопутствукпцие изложению собственных идей, и изучение программ, написанных теми, кого обучали я и мои коллеги. По прошествии нескольких лет к указанному вопросу выработался особый полхол: главный упор в изучении С++ лелался на изложение основных понятий, а затем на взаимосвязь этих понятий друг с другом н с наиболее важными средствами языка. Подробное изучение отлельных возможностей преллагалось по мере углубления знаний и по мере необходимости овладения данным материалом.
Там, гле этот подход не срабатывал, язык приходилось модифицировать. В результате он развивался в направлении лучшей поддержки проектирования. Люли, с которыми я работал и которых обучал, как правило, были профессиональными программистами н проектировщиками, вынужденными учиться без отрыва от работы. Отсюда и желание спроектировать С++ так, чтобы его можно было осваивать постепенно, чтобы возможности языка могли изучаться последовательно, чтобы получаемая от овладения языком польза была почти пропорциональна затраченным усилиям. Полагаю, что практические соображения, лежащие в основе многих лискуссий о языках программирования, языковых средствах, стилях программирования и т л., больше касаются вопросов обучения языку, нежели языка как такового.
Для многих ключевая проблема может быль сформулирована так: Если у меня мало времени Лля изучения новых методов и концепций, как мне лучше всего приступить к изучению С++? В начале 1993 г. я ответил на этот вопрос в конференции сотр.)апя.сч ~н кйсна, чта дпя использования С++ наилучшим образам в произвольно взятой ситуации необходима глубокое понимание многих концепций и методов, на эта достигается талька годами изучения и экспериментирования. Новичку (в С++, а не в программировании вообще) вряд ли поможет, если ему посоветуют сначала досконально изучить С, 5гла)(га))г, СьО5, Ровса), МЕ, Вйе(, ассемблер, объектна-ориентированные базы данных, методы верификации программ, а затем уже брать уроки па овладению С++.
Все эти предметы достойны изучения, на программисты-практики (и студенты) не могут на несколько лвт бросить работу ради систематического изучения языков и методов программирования. С другой стороны, многие новички понимают: недостаток знаний бывает опасен, поэтому следует иметь хоть какие-та гарантии того, чта небольшое время, которое можно уделить учебе перед началом нового проекта (или уже в ходе работы над ним), окупится, а не окажется потраченным напрасно.
И еще хотелась бы быть уверенными, чтете вопросы, которые удастся понять сразу же, будут частью пути к более полному пониманию, а не просто изолированным островкам знания. Разумеется, таким критериям удовлетворяет не адин-единственный подход. Выбор способа обучения зависит ат исходной подготовки человека, ега неотложных потребностей и времени, которым ан располагает.