История создания и развития языков программирования
Характеристика жизни и деятельности Николаса Вирта – создателя языка программирования Паскаль, анализ значения его научных трудов для развития компьютерной техники. Изучение особенностей стандартизации языков программирования, их основных особенностей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 22.01.2015 |
Размер файла | 279,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Никлаус Вирт - это имя в России известно многим. Три с лишним десятилетия назад профессор Вирт создал в далекой Швейцарии язык программирования Паскаль. Казалось бы, одного этого было достаточно, чтобы навечно вписать его имя в летопись компьютерных наук. Но в жизни нередко бывает так, что признание и известность получают далеко не самые лучшие и не самые совершенные творения. Вот и в случае с Паскалем мы видим лишь вершину айсберга, а большая часть творчества Вирта до сих пор для многих остается неизвестной. Никлаус Вирт родился 15 февраля 1934 г. в небольшом городке Винтертуре, в предместье Цюриха. С детских лет Вирт увлекался техником, особенно авиамоделированием. Он буквально грезил небом. Но для запуска ракет нужно было получать топливо, и потому он занялся химией. Юный Вирт оборудовал в подвале школы "секретную" лабораторию. Ничто не могло его остановить: однажды сделанная им модель отклонилась от заданной траектории и угодила под ноги директору школы. Однако Вирт все равно продолжал упорно идти к намеченной цели. Спустя несколько десятилетий Никлаусу Вирту, как и Кену Томпсону, автору UNIX, довелось полетать на МИГе с военного аэродрома в Кубинке, что находится под Москвой. Сбылась его заветная мечта. Лучше всего мотивацию профессионального творчества Вирта раскрыл его коллега по Стэнфордскому университету (США), профессор Дональд Кнут: "Вирт всегда хотел создавать аэропланы, и ему нужен был самый лучший инструментарий. Вот почему он проектировал много компьютерных языков и микрокомпьютеров." От строительства моделей Никлаус довольно быстро перешел к разработке их дистанционного управления. В разработке языков он навсегда отказался от абстрактно-научного подхода в пользу математически инженерного. По его словам, лучше сначала реализовать язык и лишь потом следует о нем писать. Он продолжал строить свою школу, уделяя немало времени организационной деятельности. На пенсию профессор Вирт ушел 1 апреля 1999 г. по достижении 65-летнего возраста.
Никлаус Вирт (Швейцария, Швейцарский Федеральный технологический институт). Из речи при вручении премии Тьюринга (Сан-Франциско, США, октябрь 1984 г.): «Мы живем в сложном мире и стараемся решать сложные по своей сути проблемы, которые зачастую для своего решения требуют сложных устройств. Однако это не значит, что мы не должны найти элегантные решения, убеждающие своей ясностью и эффективностью. Простые элегантные решения более эффективны, но найти их труднее, чем сложные, и для этого требуется больше времени».
Самым известным достижением профессора Вирта считается язык Паскаль (1970). Безусловно, многие об этом языке слышали и знают его. Паскаль сыграл огромную роль в области формирования мировоззрения нескольких поколений программистов. Главное его достоинство в простоте и элегантности: он построен на четких принципах структурного программирования, сформулированных Эдсгером Дейкстрой, на красивой математической базе, заложенной Энтони Хоаром, и на блестящем архитектурном воплощении идей Algol-W, реализованных Никлаусом Виртом. С технологической точки зрения, Паскаль был интересен не только тем, что его компилятор, созданный в ETH, стал одной из первых реализаций языков высокого уровня на самом себе, примерно на два года опередив компилятор Си. В ходе работ над ним в 1973 г. была придумана абстрактная Pascal-машина (P-машина), исполняющая специальный P-код. Чтобы решить проблему переноса компилятора Паскаля на разные платформы, Вирт решил воспользоваться испытанными временем методами интерпретации. Из наиболее известных решений, предшествовавших P-коду, можно назвать реализацию языка Snobol-4 (Р. Грисуолд, 1967), где в качестве кода абстрактной машины использовался язык SIL (System Implementation Language).
Язык Паскаль многими воспринимался прежде всего как язык для преподавания компьютерных наук. Но сам Вирт не согласен с таким заведомым сужением его потенциала (1984): "Утверждалось, что Паскаль был разработан в качестве языка для обучения. Хотя это утверждение справедливо, но его использование при обучении не являлось единственной целью. На самом деле я не верю в успешность применения во время обучения таких инструментов и методик, которые нельзя использовать при решении каких-то практических задач. По сегодняшним меркам Паскаль обладал явными недостатками при программировании больших систем, но 15 лет назад он представлял собой разумный компромисс между тем, что было желательно, и тем, что было эффективно".
Компьютерная индустрия отставала от работ Вирта как минимум на 5-7 лет. В том же 1979 г. (когда появился первый компилятор Modula-2 на компьютере PDP-11 в среде RT-11) намного уступавший Lilith легендарный компьютер Apple II только-только обрел компилятор Apple Pascal, ориентированный на UCSD-реализацию Паскаля. До появления первого скромного Turbo Pascal Андерса Хейльсберга оставалось целых четыре года! Что касается компьютера Lilith, то он стал первым компьютером в Европе, который полноценно использовал возможности лазерной печати. Впоследствии Вирт с грустью говорил о том, что с проектом Lilith швейцарская промышленность упустила свой уникальный шанс. Подлинной жемчужиной творчества Вирта стал проект Oberon (1988). Созданная почти два десятилетия назад система Oberon (Oberon System, http://www.oberon.ethz.ch/) играет в наши дни приблизительно ту же роль, что в начале 1980-х годов игралипроекты Alto и Xerox Star знаменитого центра Xerox PARC, откуда взяли начало современные персональные компьютеры и текстовые редакторы. Для таких корпораций, как Microsoft, IBM и Sun Microsystems, проект Oberon стал источником плодотворных идей, среди которых можно выделить документоориентированный интерфейс, браузеры, промышленные языки разработки ПО (Java и C#), машинно-независимый мобильный код (JVM и .NET CLR), аплеты, компонентное ПО, динамическую компиляцию (JIT, AOC, DAC), смарт-теги, веб-службы и др.
Сейчас это кажется невероятным, но чтобы перекомпилировать операционную систему Oberon и компилятор Oberon, требовалось в общей сложности всего 15 секунд! И это на оборудовании начала 1990-х годов.
Мир промышленного программирования полон избыточной сложности. Мы живем в эпоху торжества безумной технологической гонки и надуманной сложности. Всю свою жизнь Никлаус Вирт посвятил борьбе с этими пагубными явлениями, но его не слышат или не хотят слышать. "Крайнюю степень ума, - писал Блез Паскаль, - обвиняют в безумии точно так же, как полное отсутствие ума. Хороша только посредственность". Большую роль в популяризации в нашей стране языков и систем Никлауса Вирта сыграли работы группы профессора И. Поттосина из ИСИ СО РАН. Игорь Васильевич являлся научным руководителем Дмитрия Кузнецова, одного из разработчиков архитектуры <Кроноса> (первый отечественный 32-разрядный компьютер), и именно он подал идею повторить эксперимент Никлауса Вирта - реализовать процессор с архитектурой, ориентированной на языки высокого уровня. За большой вклад в информатику доктор Никлаус Вирт получил многочисленные награды и почести. Американский Совет Магистров присвоил ему звание член-корреспондента; Компьютерное Общество Института Инженеров по электронике и радиотехнике - звание компьютерного пионера; он получил приз IBM европейской науки и техники; стал членом Швейцарской Академии Инженерии и иностранным партнером Американской Академии Инженерии, а также получил орден "Pur le merte" и премию Тьюринга. Вирт получил почетные докторские степени от многих университетов: университет Лавапь, Квебек (Канада), университет Калифорнии, Беркли, университет Йорк (Англия), университет Лине Иоганна Кеплера (Австрия), университет Новосибирска (Россия), Открытый университет Англии, университет Пре-тории (Южная Африка).
Никлаус Вирт
Никлаус Вирт - учёный, специалист в области информатики, один из известнейших теоретиков разработки языков программирования, профессор компьютерных наук, Лауреат премии Тьюринга 1984 года. Ведущий разработчик языков Паскаль и Модула-2, Оберон (если вы такие знаете).Родился 15 февраля 1934 года в Винтертуре, в предместье Цюриха (Швейцария). Родители - Уолтер и Хедвиг Вирт. Отец Никлауса был школьным учителем. В их доме была хорошая библиотека, где Вирт находил немало интересных книг про железные дороги, турбины и телеграф. Небольшой городок Винтертур имеет многовековую историю и славится своими машиностроением: там выпускаются локомотивы и дизельные двигатели. В детстве Вирт увлекался авиамоделизмом и постройкой ракет, увлечение электроникой началось с разработки устройств дистанционного управления для моделей. В 1954 году поступил на факультет электроники Швейцарского федерального технологического института в Цюрихе, где за четыре года получил степень бакалавра по электротехнике. Продолжил обучение в Лавальском университете в Квебеке,который находится в Канаде.А уже в 1960 году получил степень магистра. Затем был приглашён в университет Калифорнии в Беркли (США), где в 1963 году, под руководством профессора Хаски, защитил диссертацию, темой которой стал язык программирования Euler - расширение Алгола. Диссертация Вирта была замечена сообществом разработчиков языков программирования, и в том же 1963 году он был приглашён в Комитет по стандартизации Алгола IFIP, который разрабатывал новый стандарт языка Алгол, впоследствии ставший Алголом-68 (был и такой язык). Вместе с Чарльзом Хоаром Вирт отстаивал в комитете линию на разработку умеренно модифицированной версии Алгола, свободной от недостатков исходного языка и дополненной минимумом действительно необходимых средств. В 1967 году вернулся в звании доцента в университет Цюриха, в 1968 году получил в ETH звание профессора компьютерных наук. В течение 31 года работал в ETH. Много занимался организационной деятельностью, совершенствуя систему обучения своего университета. В 1970-м Вирт выступил разработчиком языка программирования Паскаль, в 1975-м - разрабатывал язык Модула, а в конце 1970-х Никлаус Вирт принял участие в конкурсе министерства обороны США, став одним из разработчиков нового языка для программирования встроенных систем, ставшего известным как язык Ада. Его проект,впрочем, принят не был, как и в случае с языком Алгол в 1960-х. В 1980-х Вирт возглавлял Высшую техническую школу Цюриха (Eidgenцssische Technische Hochschule, ETH), а с 1990-го работал в созданном при этом же учебном заведении Институте компьютерных систем. В 1990-х Вирт участвовал в разработке языка Оберон-2, несколько расширенной версии Оберона. Весной 1999-го Никлаус Вирт вышел на пенсию, будучи 65-летним. К этому моменту он был одним из уважаемых во всем мире разработчиков, на его счету - работа над как минимум восемью языками программирования, был он также разработчиком технологии структурного программирования. Известно, что Вирт - обладатель нескольких очень престижных премий ('Turing Award', 'SIGPLAN Programming Languages Achievement Award'), а также почетных степеней нескольких учебных заведений. 'В нашей профессии, точность и совершенство являются не необязательной роскошью, а просто необходимостью', - сказал как-то ученый. Три друга-единомышленника: Хоар, Дейкстра и Вирт. Романтические 1960-е годы положили начало дружбе трех патриархов структурного программирования - голландца Эдсгера Дейкстры, англичанина Энтони Хоара и швейцарца Никлауса Вирта. Этих "нобелевских" лауреатов (премия Тьюринга, присуждаемая ассоциацией ACM, вручается раз в жизни и приравнивается в компьютерных науках к Нобелевской) сблизили не столько абстракции компьютерных наук, сколько четкая профессиональная позиция.
Эдсгер Дейкстра (Нидерланды, Эйндховенский технологический университет). Из речи при вручении премии Тьюринга (Бостон, США, 14 августа 1972 г.): «Когда компьютеров еще не было, то программирование не составляло никакой проблемы. Когда у нас появилось несколько маломощных компьютеров, то программирование стало проблемой средней сложности. Теперь же, когда мы располагаем гигантскими компьютерами, то и программирование превращается в гигантскую проблему.»
Энтони Хоар (Великобритания, Оксфордский университет). Из речи при вручении премии Тьюринга (Нэшвилл, США, 27 октября 1980 г.): «Почти все в программном обеспечении может быть реализовано, продано и даже использовано, если проявить достаточную настойчивость. Но существует одно качество, которое нельзя купить, - это надежность. Цена надежности - погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.»
Никлаус Вирт (Швейцария, Швейцарский Федеральный технологический институт). Из речи при вручении премии Тьюринга (Сан-Франциско, США, октябрь 1984 г.): «Мы живем в сложном мире и стараемся решать сложные по своей сути проблемы, которые зачастую для своего решения требуют сложных устройств. Однако это не значит, что мы не должны найти элегантные решения, убеждающие своей ясностью и эффективностью. Простые элегантные решения более эффективны, но найти их труднее, чем сложные, и для этого требуется больше времени».
Как известно, введение виртуальной (абстрактной) машины Java преподносилось ее разработчиками из Sun Labs едва ли как не фундаментальное открытие в практике языков программирования. Один из учеников Вирта, Михаэль Франц, заметил по этому поводу следующее: "Переносимость Java основана на наличии виртуальной машины, позволяющей легко имитировать большое число архитектур. Идея виртуальной машины была очень популярна уже более двадцати лет назад, хотя впоследствии о ней забыли. Тогда речь шла о Pascal-P - созданной в ETH реализации Паскаля, которая сыграла решающую роль в распространении этого языка. Интересно, что виртуальные машины для Паскаля и Java весьма схожи по архитектурe." Идеи P-кода нашли применение не только в платформах Java и NET, не только в других языках и машинах баз данных, но и в реализации аппаратных средств. Например, для непосредственного исполнения P-кода в Western Digital в 1979 г. был разработан специальный набор WD9000 PEngine. В Стэнфордском университете в 1980 г. был создан экспериментальный процессор POMP. Появившаяся в 1978 г. коммерческая реализация Паскаля - UCSD Pascal стала еще более известной, и многие забыли, где же впервые возникли P-код и P-машина. Вот что говорит об этом Вирт: "После того как стало известно о существовании Паскаля, несколько человек попросили нас помочь в его реализации на различных машинах, подчеркивая, что они намерены использовать его для обучения и что быстродействие для них не имеет первостепенного значения. После этого мы решили создать версию компилятора, которая генерировала бы код для машины нашей собственной конструкции. Позднее этот код стал известен как P-код... Pascal- P оказался исключительно удачным языком для распространения среди большого числа пользователей. И если бы у нас хватило мудрости предвидеть масштабы такого развития событий, то мы приложили бы больше усилий и тщательности при разработке и документировании P-кода". Да, этот язык был далеко не идеальный. В свое время Брайан Керниган, известный популяризатор языка Си, соавтор классического руководства по Си (K&R), написал критическую статью "Почему Паскаль не является моим любимым языком программирования". Если с ней внимательно ознакомиться, то можно решить, что Никлаус Вирт сделал из нее правильные выводы и в языке Modula-2 (1980) под воздействием статьи устранил многие изъяны канонического Паскаля. Однако следует иметь в виду одно немаловажное обстоятельство. Наделавшая шума работа Кернигана была написана 2 апреля 1981 г., т.е. через два года после реализации группой Вирта в ETH первого компилятора Modula-2 и через год после выпуска аппаратной реализации Modula-2 - персонального компьютера Lilith. В апреле 1993 г. на Конференции ACM по истории языков программирования Вирт в ответ на вопрос одного из своих коллег поставил языку Modula-2 оценку "6 баллов" (наивысшая оценка в школах Швейцарии).
Язык Modula-2 был не только компактной и эффективной альтернативой языку Ada, он намного опережал те реализации идей модульного программирования, которые лишь спустя годы и в гораздо менее продуманном виде нашли свое отражение в Turbo Pascal и Delphi. Знаменитая операционная система OS/400 для IBM AS/400 была реализована на Modula-2. Центр системных исследований корпорации Digital (DEC Systems Research Center) взял этот язык в качестве основы реализации своих внутренних проектов, создав впоследствии язык Modula-3. Михаэль Франц в феврале 1994 г. защитил в ETH диссертацию, которая называлась "Динамическая кодогенерация - ключ к переносимому программному обеспечению". В ней были четко обозначены проблемы виртуальных машин и предложен крайне простой и довольно необычный подход к достижению переносимости. В диссертации Франца не только подробно разбирался принцип формирования и хранения промежуточного представления, но и делался вывод о том, что для подобного класса языков он остается практически неизменным. Другими словами, для языка Java этот принцип вполне подходил. Кстати, понятие applet тоже фигурировало в работах Франца. Через год после появления Java Михаэль Франц к лету 1996 г. подготовил среду под названием Juice, выполненную в виде подключаемого модуля для браузеров Netscape и Microsoft. Модуль состоял из компактного варианта ОС Oberon и полнофункционального компилятора Oberon, размер которых (в Oberon-формате) в общей сложности составляет всего лишь 100 Кбайт. В марте 1994 г. Михаэль Франц сделал в Sun Labs несколько докладов, и к весне того же года Билл Джой (вице-президент Sun и идеолог проекта создания Java) уже имел на руках всю необходимую информацию, включая и диссертацию Франца. Джой стал одним из первых обладателей лицензии на ETH Oberon. В июне 1994 г. Биллу Джою пришла в голову (а вот как это произошло, история стыдливо умалчивает) идея переориентировать язык Oak Джеймса Гослинга на иные задачи - создание компактной ОС. В пожарном порядке был сверстан проект, который получил название LiveOak. Все это необходимо учитывать при взгляде на нынешние проблемы Java. В результате такие критерии, как простота (наглядность исходных текстов), надежность, компактность программ и эффективность исполняемого кода, теперь заменяются на один главный критерий - скорость реализации идей. А это неизбежно ведет к резкому снижению влияния самого языка и возрастанию роли инструментальной среды, которой подчас вообще все равно, чем оперировать, и прежде всего ее возможностей визуализации. Как точно отмечает Никлаус Вирт, "постоянный недостаток времени - вот, вероятно, первейшая причина, приводящая к появлению громоздкого программного обеспечения". Приоритет времени разработки в общем-то понятен: человеческие ресурсы нынче стоят значительно выше, чем аппаратные. Но не теряем ли мы по дороге то ценное, что вернуть потом будет крайне тяжело?
Языки программирования, разработанные Виртом:
(1963) Euler
(1966) Algol-W
(1968) PL360
(1970) Паскаль
(1976) Modula
(1979) Modula-2
(1988) Оберон
Никлаус Вирт в Академгородке
2 и 3 октября в качестве гостя Института систем информатики им. А. Ершова Академгородок посетил знаменитый ученый, автор алгоритмических языков Паскаль, Модула и Оберон, профессор Высшей технической школы Цюриха Никлаус Вирт. С Академгородком у Вирта давние связи. В 1965 году он познакомился с академиком Ершовым, который приезжал в США на конгресс ИФИП (Международная федерация по обработке информации). Научные контакты складывались как по линии рабочей группы ИФИП по языку Алгол, так и по линии использования языка Паскаль для реализации системы <Бета>. Свидетельства дружественных отношений двух ученых хранит архив академика Ершова.
Утром 2 октября Вирт принял участие в открытии Потоссинской олимпиады в НГУ, выразив надежду, что созданные им языки программирования - преемники Паскаля - займут достойное место в системе IT-образования. В три часа того же дня Большая физическая аудитория НГУ была до отказа заполнена желающими прослушать доклад профессора Вирта об эволюции языков и программирования, где в очень доступной логической форме был дан анализ инноваций в компьютерных науках за последние 40 лет.
В начале своего выступления он извинился, что так и не доучил русский язык до того уровня, чтобы беспрерывно и внятно говорить на нем целых два часа. Предложение прочесть доклад на немецком аудитория встретила смущенным молчанием. <Самой серьезной ошибкой, сделанной еще в 1957 году, была ошибка: Y = X>, - отметил профессор. В зале раздались легкие смешки. Речь шла о том, что не все могут воспринимать это равенство как команду присваивания. Кроме вышеупомянутой ошибки, Вирт отметил и целый ряд других промахов, усложняющих языки настолько, что их практическое использование серьезно затрудняется. В этой связи Вирт объяснил, что намеренно пришел к использованию в своих языках нисходящего синтаксиса, а также выразил удивление о существующей до сих пор команде виртуальной переадресации, которая была необходима лишь во времена, когда память исчислялась кило-, а не мегабайтами.
Отдельной мишенью для критики профессора служили популярные языки С и С++, к неудобной и запутанной структуре которых ученый возвращался неоднократно. Так, например, язык Java был им назван Обероном, испорченным синтакисом языка С. В качестве верного пути Вирт предложил начать активно использовать Оберон при обучении студентов программированию. Тот факт, что на С++ пишется сегодня огромное количество программ, профессор назвал не основополагающим. Если предприятие работает на этом языке, то его инженеры-программисты имеют множество проблем, тогда как учебная часть в это же время продолжает выпускать специалистов по С и С++ по причине их востребованности на предприятиях. В результате явление образует собой замкнутый круг, который просто необходимо разорвать, если мы говорим о развитии языков программирования в сторону функциональности и простоты. Профессор не скупился на критику в адрес языков программирования с переопределяемыми синтаксическими правилами (макросы языка С и перегружаемые операторы).
Желающих получить автограф знаменитого Вирта оказалось немало - профессор подписывал все предложенные предметы около получаса. Самые серьезные студенты гордо принесли с собой книги самого Никлауса Вирта <Алгоритмы и структуры данных>, <Системное программирование> и <Модула-2>. Другие ограничились росчерком гения в зачетке или на студенческом билете. Пока ученый раздавал автографы, на крыльце НГУ собралась пара сотен человек, чтобы запечатлеть торжественный момент истории. Программу пребывания Никлауса Вирта в Академгородке завершил <круглый стол> с преподавателями программирования различных вузов и школ, где были рассмотрены вопросы, волнующие современных педагогов. Небрежно поругивая вечно востребованный С++, участники пришли к единому мнению о том, что Оберон или Компонентный Паскаль является общим наиболее удобным делителем целого ряда современных языков программирования и вполне может играть роль эсперанто в обучающем курсе студентов-программистов.
Языки программирования
вирт николас паскаль программирование
Стандартизация языков программирования
Язык программирования может быть представлен в виде набора спецификаций, определяющих его синтаксис и семантику. Для многих широко распространённых языков программирования созданы международные стандарты. Специальные организации проводят регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.
Типы данных: Современные цифровые компьютеры обычно являются двоичными и данные хранят в двоичном (бинарном) коде (хотя возможны реализации и в других системах счисления). Эти данные как правило отражают информацию из реального мира (имена, банковские счета, измерения и др.), представляющую высокоуровневые концепции.
Особая система, по которой данные организуются в программе, - это система типов языка программирования; разработка и изучение систем типов известна под названием теория типов. Языки могут быть классифицированы как системы со статической типизацией и языки с динамической типизацией.
Статически-типизированные языки могут быть в дальнейшем подразделены на языки с обязательной декларацией, где каждая переменная и объявление функции имеет обязательное объявление типа, и языки с выводимыми типами. Иногда динамически-типизированные языки называются латентно-типизированными.
Структуры данных
Системы типов в языках высокого уровня позволяют определять сложные, составные типы, так называемые структуры данных. Как правило, структурные типы данных образуются как декартово произведение базовых (атомарных) типов и ранее определённых составных типов.
Основные структуры данных (списки, очереди, хеш-таблицы, двоичные деревья и пары) часто представлены особыми синтаксическими конструкциями в языках высокого уровня. Такие данные структурируются автоматически.
Семантика языков программирования
Существует несколько подходов к определению семантики языков программирования. Наиболее широко распространены разновидности следующих трёх: операционного, денотационного (математического) и деривационного (аксиоматического).
При описании семантики в рамках операционного подхода обычно исполнение конструкций языка программирования интерпретируется с помощью некоторой воображаемой (абстрактной) ЭВМ.
Деривационная семантика описывает последствия выполнения конструкций языка с помощью языка логики и задания пред- и постусловий. Денотационная семантика оперирует понятиями, типичными для математики - множества, соответствия, а также суждения, утверждения и др.
Язык программирования строится в соответствии с той или иной базовой моделью вычислений и парадигмой программирования. Несмотря на то, что большинство языков ориентировано на императивную модель вычислений, задаваемую фоннеймановской архитектурой ЭВМ, существуют и другие подходы. Можно упомянуть языки со стековой вычислительной моделью (Forth, Factor, Postscript и др.), а также функциональное (Лисп, Haskell, ML и др.) и логическое программирование (Пролог) и язык Рефал, основанный на модели вычислений, введённой советским математиком А.А. Марковым-младшим. В настоящее время также активно развиваются проблемно-ориентированные, декларативные и визуальные языки программирования.
Компилируемые и интерпретируемые языки
Языки программирования могут быть разделены на компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполнимый модуль, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора. Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера - это интерпретатор машинного кода. Кратко говоря, компилятор переводит исходный текст программы на машинный язык сразу и целиком, создавая при этом отдельную исполняемую программу, а интерпретатор выполняет исходный текст прямо во время исполнения программы. Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов). Для любого интерпретируемого языка можно создать компилятор - например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения. Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что создаёт трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями (см. выше), кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий. Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без дополнительной программы-интерпретатора.
Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# - Common Language Runtime. Подобный подход в некотором смысле позволяет использовать плюсы как интерпретаторов, так и компиляторов. Следует упомянуть также оригинальный язык Форт(Forth) имеющий и интерпретатор и компилятор.
Современные языки программирования рассчитаны на использование ASCII, то есть доступность всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Управляющие символы ASCII используются ограниченно: допускаются только возврат каретки CR, перевод строки LF и горизонтальная табуляция HT (иногда также вертикальная табуляция VT и переход к следующей странице FF).
Подробнее по этой теме см.: Переносимый набор символов. Ранние языки, возникшие в эпоху 6-битных символов, использовали более ограниченный набор. Например, алфавит Фортрана включает 49 символов (включая пробел): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ ' : Заметным исключением является язык APL, в котором используется очень много специальных символов. Использование символов за пределами ASCII (например, символов KOI8-R или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но большую популярность подобные языки не завоевали (исключение составляет. Встроенный язык программирования 1С: Предприятие). Подробнее по этой теме см.: Русские языки программирования. Расширение набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена одних переменных записаны русскими буквами, других - арабскими, а третьих - китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java) поддерживают Unicode.
Процедурные языки программирования
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложенафон Нейманом в 1940-х годах. Теоретической моделью процедурного программирования служит алгоритмическая система под названием Машина Тьюринга.
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Процедурный язык программирования предоставляет возможность программисту определять каждый шаг в процессе решения задачи. Особенность таких языков программирования состоит в том, что задачи разбиваются на шаги и решаются шаг за шагом. Используя процедурный язык, программист определяет языковые конструкции для выполнения последовательности алгоритмических шагов.
Basic
Бейсик (от BASIC, сокращение от англ. Beginner's All-purpose Symbolic Instruction Code - универсальный код символических инструкций для начинающих; англ. basic- основной, базовый) - семейство высокоуровневых языков программирования. Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Куртом (Thomas E. Kurtz) и Джоном Кемени (John G. Kemeny). Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего, как язык для домашних микрокомпьютеров.
Предпосылки: До середины 1960-х компьютеры (ЭВМ) были слишком дорогими машинами, использовавшимися в основном для научно-технических задач, и выполнявшими задачи не в интерактивном режиме (т.н. пакетная обработка), когда общение с машиной осуществлялось через её оператора. Языки программирования этой поры, как и компьютеры, на которых они использовались, были разработаны для работы с ними обученных технических специалистов и программистов. Поскольку машины были дорогими, то и машинное время было дорого - поэтому на первом месте стояла скорость выполнения программы (скорость счёта). Однако, в течение 1960-х цены на компьютеры стали падать так, что даже небольшие компании могли их себе позволить; их быстродействие всё увеличивалась и наступило время, когда стало возможно организовать более эффективную непосредственную работу пользователей с компьютерами в так называемом режиме разделения времени (time-sharing).
Рождение: Бейсик был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, этот «изначальный» диалект стали называть Dartmouth BASIC. Бейсик был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для более «простых» пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач не имея специальной подготовки. При проектировании языка использовались следующие восемь принципов: новый язык должен быть простым в использовании для начинающих быть языком программирования общего назначения предоставлять возможность расширения функциональности, доступную опытным программистам быть интерактивным предоставлять ясные сообщения об ошибках быстро работать на небольших программах не требовать понимания работы аппаратного обеспечения защищать пользователя от операционной системы .Язык был основан частично на Фортран II и частично на Алгол-60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.
Взрывной рост : Несмотря на то что язык уже использовался на нескольких миникомпьютерах, его настоящее распространение началось с его появления на микрокомпьютере Altair 8800. Многие языки программирования были слишком большими чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее - аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой. В 1975 году Майкрософт (тогда это были лишь двое - Билл Гейтс и Пол Аллен, при участии Монте Давидова) выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка. В 1979 году Майкрософт обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC - компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения - не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера. Синтаксис языка напоминает Fortran, и многие элементы - явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic, а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие как объектная модель). Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной - это первое её использование. Ранние версии бейсика (такие как GWBASIC, QBasic) существенно отличаются от современных диалектов и на сегодня практически не используются.
Pascal
Паскаль (англ. Pascal) - высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Никлаусом Виртом в 1968/9 годах (опубликован в 1970-м) после его участия в работе комитета разработки стандарта языка Алгол-68. Паскаль был создан как язык для обучения процедурному программированию (хотя, по словам Вирта, язык нельзя считать только учебным, поскольку язык, непригодный для написания реальных программ, для обучения использоваться не должен). Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля. Паскаль был создан Никлаусом Виртом в 1968/9 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Он был опубликован в 1970 году Виртом как небольшой и эффективный язык, чтобы способствовать хорошему стилю программирования, использовать структурное программирование и структурированные данные. Компилятор Паскаля был написан на самом Паскале, используя «метод раскрутки», когда создается ядро языка, с постепенным наращиванием новых возможностей. Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком. Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т.п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (интересно, что эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров. Необходимо заметить, что многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 70-х (которым былФортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. В начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники академик А.П. Ершов разработал алголо-паскалеподобный «алгоритмический язык». Наиболее известной реализацией Паскаля, обеспечившая широкое распространение и развитие языка является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой использовались значительные расширения языка. Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, из-за отстутствия других успешных коммерческих реализаций стали популярны. Объектный Паскаль от Borland и в отсутствие отраслевой стандартизации стал сильно отличаться от классического Паскаля. Язык программирования - формальная знаковая система, предназначенная для записи программ, задающих алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах. Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Cи
Си (англ. C) - стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был импортирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков (см.: Си-подобный синтаксис).Для языка Си характерны лаконичность, современный набор конструкций управления потоком выполнения, структур данных и обширный набор операций. Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора, после компиляции каждой элементарной составляющей программы соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже откомпилированному тексту. Поэтому использованию функции должно предшествовать её объявление. Код на Си можно легко писать на низком уровне абстракции, почти как на ассемблере. Иногда Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели компьютера. Си часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Компиляторы Си разрабатываются сравнительно легко благодаря относительно низкому уровню языка и скромному набору элементов. Поэтому данный язык доступен на самых различных платформах (возможно, круг этих платформ шире, чем у любого другого существующего языка). К тому же, несмотря на свою низкоуровневую природу, язык позволяет создавать переносимые программы и поддерживает программиста в этом. Программы, соответствующие стандарту языка, могут компилироваться на самых различных компьютерах. Си (как и ОС UNIX, с которой он долгое время был связан) создавался программистами и для программистов, круг которых был бы ненамного шире круга разработчиков языка. Несмотря на это, область использования языка значительно шире задач системного программирования. Си создавался с одной важной целью: сделать более простым написание больших программ с минимумом ошибок по правилам процедурного программирования, не добавляя лишних накладных расходов на итоговый код программы компилятором, как это всегда делают языки очень высокого уровня, такие как Бейсик. С этой стороны Си имеет следующие важные особенности: простую языковую базу, из которой вынесены в библиотеки многие существенные возможности, вроде математических функций или функций управления файлами; ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования; систему типов, предохраняющую от бессмысленных операций; использование препроцессора для, например, определения макросов и включения файлов с исходным кодом; непосредственный доступ к памяти компьютера через использование указателей; минимальное число ключевых слов; передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке выполняется с помощью указателей); указатели на функции и статические переменные области действия имён; записи - определяемые пользователем собирательные типы данных (структуры), которыми можно манипулировать как одним целым; Вот некоторые особенности других языков программирования, которых не имеет Си: автоматическое управление памятью; поддержка объектно-ориентированного программирования (при этом первые версии C++ генерировали код программы на языке Си); вложенные функции (существуют компиляторы языка Си реализующие эту функцию, например компилятор GNU);полиморфизм функций и операторов; встроенная поддержка многозадачности и сети функции высшего порядка карринг. Несмотря на то, что в Си нет столь многого, а это было важно в начале, язык был хорошо принят, потому что он позволял быстро создавать компиляторы для новых платформ, а также позволял программистам довольно точно представлять, как выполняются их программы. Благодаря этому программы, написанные на Си, эффективнее написанных на многих других языках. Как правило, лишь оптимизированный вручную код на ассемблере может работать ещё быстрее, потому что он даёт полный контроль над машиной, однако развитие современных компиляторов вместе с усложнением современных процессоров быстро сократило этот разрыв. Одним из последствий высокой эффективности и переносимости Си стало то, что многие компиляторы, интерпретаторы и библиотеки других языков высокого уровня часто выполнены на языке Си. Объектно-ориентированные языки программирования. Объектно-ориентированный язык программирования (ОО-язык) - язык, построенный на принципах объектно-ориентированного программирования. В основе концепции объектно-ориентированного программирования лежит понятие объекта - некоей субстанции, которая объединяет в себе поля (данные) и методы (выполняемые объектом действия). Например, объект "человек" может иметь поля "имя", "фамилия" и иметь методы "есть" и "спать".Соответственно, мы можем использовать в программе операторы Человек. Имя: ="Иван" и Человек. Есть(пища).
Си++
Компилируемый статически типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования, но, в сравнении с его предшественником - языком Си, - наибольшее внимание уделено поддержкеобъектно-ориентированного и обобщённого программирования.[1]
Название «Си++» происходит от Си, в котором унарный оператор ++ обозначает инкрементпеременной.
В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения.
При создании Си++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором Си++. Си++ имеет синтаксис, основанный на синтаксисе Си.
Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку Си под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка Си++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году - нынешняя версия этого стандарта - ISO/IEC 14882:2003. Ранние версии языка, известные под именем «C с классами», начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Симула (Simula) имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык Си (преемник BCPL) возможностями, имеющимися в языке Симула. Язык Си, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию Си). В начале в Си были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию. Разрабатывая Си с классами (позднее Си++), Страуструп также написал программу cfront - транслятор, перерабатывающий исходный код Си с классами в исходный код простого Си. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов. В 1983 году произошло переименование языка из Си с классами в Си++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования Си++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход Си++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены. В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип. Стандартная библиотека Си++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке Си++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций Си printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов. После многих лет работы совместный комитет ANSI-ISO стандартизировал Си++ в 1998 году (ISO/IEC 14882:1998 - Язык программирования Си++). В течение нескольких лет после официального выхода стандарта комитет обрабатывал сообщения об ошибках и в итоге выпустил исправленную версию стандарта Си++ в 2003 году. В настоящее время рабочая группа МОС (ISO) работает над новой версией стандарта под кодовым названием C++09 (ранее известный как C++0X), который должен выйти в 2009 году. Никто не обладает правами на язык Си++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно. Название «Си++» было придумано Риком Масситти (Rick Mascitti) и впервые было использовано в декабре 1983 года. Ранее, на этапе разработки, новый язык назывался «Си с классами». Имя, получившееся в итоге, происходит от оператора Си «++» (увеличение значения переменной на единицу). Имя «C+» не было использовано потому, что является синтаксической ошибкой в Си и, кроме того, это имя было занято другим языком. Язык также не назван «D», поскольку «является расширением Си и не пытается устранять проблемы путём удаления элементов Си». Стандарт Си++ на 1998 год состоит из двух основных частей: ядра языка и стандартной библиотеки. Стандартная библиотека Си++ вобрала в себя разрабатывавшуюся одновременно со стандартом библиотеку шаблонов STL. Сейчас название STL официально не употребляется, однако в кругах программистов на Си++ это название используется для обозначения части стандартной библиотеки, содержащей определения шаблонов контейнеров, итераторов, алгоритмов и функторов. Стандарт Си++ содержит нормативную ссылку на стандарт Си от 1990 года и не определяет самостоятельно те функции стандартной библиотеки, которые заимствуются из стандартной библиотеки Си. Кроме того, существует огромное количество библиотек Си++, не входящих в стандарт. В программах на Си++ можно использовать многие библиотеки Си. Стандартизация определила язык программирования Си++, однако за этим названием могут скрываться также неполные, ограниченные, достандартные варианты языка. В первое время язык развивался вне формальных рамок, спонтанно, по мере ставившихся перед ним задач. Развитию языка сопутствовало развитие кросс-компилятора cfront. Новшества в языке отражались в изменении номера версии кросс-компилятора. Эти номера версий кросс-компилятора распространялись и на сам язык, но применительно к настоящему времени речь о версиях языка Си++ не ведут.
Подобные документы
Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.
курсовая работа [759,5 K], добавлен 04.11.2014Оценка современного этапа развития компьютерных технологий. История развития, классификации, сведения и уровни языков программирования. Обзор современных языков программирования: Си, его разовидности, Паскаль, Фортран, Бейсик - тенденция их развития.
курсовая работа [46,5 K], добавлен 22.12.2010Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.
курсовая работа [292,0 K], добавлен 18.03.2013Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016История жизни и деятельности профессора Никлауса Вирта – создателя первого компьютерного языка Паскаля. Профессиональное творчество ученого: языки программирования, разработанные им. Визит Никлауса Вирта в Академгородок, программа его пребывания.
реферат [18,6 K], добавлен 02.04.2010Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.
реферат [463,6 K], добавлен 07.09.2009Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.
курсовая работа [3,1 M], добавлен 27.02.2015Понятия структурного программирования и алгоритма решения задачи. Краткая история развития языков программирования от машинных до языков ассемблера и языков высокого уровня. Процедурное программирование на C#. Методы и программы для моделирования.
учебное пособие [1,7 M], добавлен 26.10.2010Анализ истории развития вычислительной техники. Сравнительные характеристики компьютеров разных поколений. Особенности развития современных компьютерных систем. Характеристика компиляторов с общей семантической базой. Этапы развития компьютерной техники.
презентация [2,5 M], добавлен 15.11.2012Этапы развития языков программирования. Способы решения системы линейных алгебраических уравнений методом Крамера, рассмотрение особенностей. Анализ языка программирования С++. С # как прямой потомок двух самых успешных в мире компьютерных языков.
курсовая работа [770,2 K], добавлен 27.01.2013