Файл: История возникновения и развития языка программирования Си (С++) и Java (Появление первых компьютеров).pdf
Добавлен: 01.07.2023
Просмотров: 55
Скачиваний: 2
Введение
С++ - один из наиболее популярных языков программирования, используемый для разработки программного обеспечения, поддерживающий процедурное (при котором последовательно выполняемые команды можно собрать в подпрограммы), объектно-ориентированное (стиль кодирования, который позволяет группировать задачи в классы), обобщенное программирование (написание кода, который может быть многократно использован с объектами различных типов), сочетающий свойства высокоуровневых и низкоуровневых языков. С++ используется для создания программ, рассчитанных на выполнение определенных задач в разных сферах жизни человека, игр, драйверов, операционных систем и прочего. Он образован на основе языка С. Многие программы на С исправно работают и с компилятором С++ из-за тесной связи.
Также часто сравниваются Java и C++ как языки, которые унаследовали синтаксис Си, несмотря на большие различия на всех уровнях. Java используется в конкретном секторе промышленности: безопасный язык с низким порогом вхождения для разработки прикладных приложений широкого рынка с высокими показателями адаптации к другой среде. С++ претендует на универсальное применение во всех задачах для всех категорий программистов, но не удовлетворяет в полной мере требованиям ни одной из заявленных сфер применимости. Базовая библиотека С++ в сравнении с Java имеет меньше ресурсов, но предоставляет свободу выбора сторонних библиотек.
Дальнейшее развитие языка будет идти путем дополнения в существующие стандартные библиотеки. Планом развития С++ на будущее является расширение обобщенного программирования.
Тема исследования: История возникновения и развития языка программирования Си (С++) и Java..
Цель исследования: Изучить историю возникновения и развития языка программирования Си (С++) и Java.
Объект исследования: Языки программирования Си (С++) и Java..
Задача исследования - рассмотреть
- Предпосылки появления объектно-ориентированных языков
- Создание языка С++
- Стандартизация языка С++
- История языка Java
- Иерархия версий Java
Глава 1 Предпосылки появления объектно-ориентированных языков
1.1. Появление первых компьютеров
В 1945 году в Америке построили первый компьютер — ЭНИАК (Electronic Numerical Integrator And Computer). Он состоял из 17 тысяч ламп, весил 27 тонн и стоил 480 000 долларов. Сравните: новый iPhone X за 1000 долларов помещается в кармане и почти в 25 тысяч раз мощнее.
В те времена ещё не было языков программирования, и ЭНИАК управлялся через систему команд, записанных в машинном коде — то есть в виде последовательности единиц и нолей. Писать программы на машинном коде было долго и сложно. Представьте, что в супермаркете на полке с ценниками нет названий товаров — только номер штрихкода и цена. Чтобы узнать цену, например, на икру, нужно посмотреть номер на банке и сопоставить с ценниками. Из-за ошибки в одну цифру можно взять чёрную икру по цене белого хлеба (а на кассе обнаружить, что сумма в чеке в сто раз больше). Так и одна ошибка в цифре машинного кода приводила к неправильному результату вычисления всей программы.
Рис.1 Первый в мире компьютер ЭНИАК
Ошибки в работе компьютера программисты называют «багами». В переводе с английского bug означает «насекомое» или «жучок». Это слово употребляли и раньше — например, радиоинженеры называли так технические неполадки в оборудовании, которые было трудно обнаружить. Но первый в истории компьютерный баг, по легенде, действительно был насекомым! В 1947 в Гарварде программист Грейс Хоппер искала причину ошибки в работе суперкомпьютера Mark II и обнаружила моль, которая залетела внутрь компьютера и заклинила систему. С помощью скотча она вклеила моль в рабочий журнал и озаглавила запись как «Первый фактический случай обнаружения бага».
1.2 Ассемблер — переводчик с человеческого на машинный
Как упростить управление компьютером задумались в Кембриджском университете, когда профессор Морис Уилкс начал работу над созданием электронно-вычислительной машины ЭДСАК. Позже именно для неё была разработана первая компьютерная игра — «Крестики-нолики». Но главная заслуга Уилкса, конечно, не в этом. А в том, что в 1949 году он создал программу, которая позволяла писать команды в удобной для человека форме и сама переводила их в машинный код.
Программу Уилкс называл собирающей системой или «ассемблером», от английского глагола «assemble» — собирать. Вместо двоичного кода в языке ассемблера использовались буквы, цифры или сокращения, которые отражали суть команды. Например, команда «Mov Ax, 6» на языке ассемблера означала «передвинь в ячейку памяти „Ах“ число 6». Согласитесь, запоминать такие команды гораздо проще, чем длинные ряды нолей и единиц.
И всё же у языка ассемблера были серьёзные недостатки. Коды по-прежнему должны были точно соответствовать системе команд компьютера, и для каждой конкретной вычислительной машины был нужен свой язык ассемблера. Такие языки называют машинно-зависимыми или языками низкого уровня.
1.3 Первые машинно-независимые языки
Первый язык высокого уровня появился в 1957 году в Америке. Он назывался Фортран (FORmula TRANslator) и позволял писать программы, не думая об архитектуре конкретного компьютера. Код стал «переносимым» — одна и та же программа теперь запускалась на разных устройствах.
Это стало возможным благодаря специальным программам — компиляторам. Они превращали текст на Фортране в машинный код и сами устанавливали соответствия между ним и системой команд компьютера.
Обложка автоматической системы кодирования Fortran для IBM EOS-704 EDPM, которая считается первой книгой о Fortran
Переносимость кода объединила усилия программистов по всему миру и позволила продавать программы. Теперь, чтобы решить квадратное уравнение или посчитать косинус, можно было использовать уже написанный другими программистами код, а не писать программу с нуля.
Так появились «библиотеки» — сборники программ, решающих определенный класс задач. Программисты писали библиотеки и продавали компаниям, которые использовали их для сложных вычислений — например, расчета траектории полета ракеты.
Рис. 2 Работа на первых ЭВМ
Фортран был ориентирован на научно-технические математические расчеты
Сегодня на этом языке так много математических библиотек, что среди ученых даже ходит присказка: «у любой математической задачи уже есть решение на Фортране». Он был настолько успешен, что в Европе создали ALGOL (ALGOrythmic Language) — свой язык программирования высокого уровня, чтобы избежать монополии.
1.4 Структурное программирование и язык Си
Программы с каждым годом становились сложнее, а значит росло количество ошибок и время отладки — их обнаружения и исправления. Потребовалось организовывать код программ так, чтобы избежать лишних ошибок и упростить их поиск. Так в начале 70-х появилось структурное программирование.
Идея структурного программирования — в создании программы из последовательных блоков. Программист работает над блоками по очереди и не переходит дальше, пока не убедится, что всё работает, как задумано. Для создания блоков используют три базовых конструкции: последовательность, ветвление и цикл.
Последовательность выполняется автоматически из стоящих друг за другом инструкций: «сначала выполни умножение и деление, потом — сложение и вычитание». Ветвление помогает работать с условиями: «если дискриминант больше нуля, тогда ищи решения, а если меньше, тогда напиши, что решений нет». Цикл помогает многократно повторять действия, пока выполняется условие: «пока корзинка не полная, сорви ягоду с куста и положи в корзинку».
Во времена структурного программирования появился язык Си. Его придумал американец Деннис Ритчи и в 1999 году получил Национальную медаль США за достижения в области технологий и инноваций. Язык был основан на старом языке Би, поэтому его назвали Си — по следующей букве английского алфавита. Си был универсальным и очень быстрым, поэтому сразу широко распространился и стал прародителем для современных языков: C++, C#, Objective C, Java.
Глава 2 Развитие языка С++
2.1 Создание языка С++
Название C++ происходит от языка программирования C, в котором унарный оператор ++ обозначает увеличение значения переменной на 1. Сначала этот язык носил имя С с классами, затем стал называться C++. После буквы С добавлено именно два плюса, потому что один образует синтаксическую ошибку в языке С, а также это имя уже было занято.
Рис.3 Кен Томпсон (слева) и Деннис Ритчи (справа), создатели языка программирования Си
Си – это "сопутствующий продукт", полученный во время создания операционной системы UNIX, которая разрабатывалась в Bell Laboratories Кеном Томпсоном, Денисом Ритчи и ко. Томпсон в одиночку написал оригинальную версию UNIX, которая работала на DEC PDP-7, одном из первых миникомпьютеров всего с 8К слов в основной памяти (в конце концов, это был 1969).
Как и остальные операционные системы того времени, UNIX был написан на ассемблере. Отладка программ на ассемблере настоящая мука и их проблематично улучшать, и UNIX не был исключением. Томпсон решил, что для дальнейшей разработки ОС необходим язык высокого уровня и придумал небольшой язык B. За основу Томпсон взял язык BCPL, язык для системного программирования, разработанный в середине 60-х. BCPL, в свою очередь, берёт начало от Алгола 60, одного из самых первых (и оказавших наибольшее влияние) языков.
Ритчи вскоре присоединился к проекту UNIX и начал писать на B. В 1970 Bell Labs приобрела для проекта PDP-11. Так как B был готов к работе на PDP-11, Томпсон переписал часть UNIX на B. В 1971 стало ясно, что B не совсем подходит для PDP-11, поэтому Ритчи начал создавать расширенную версию B. Сначала он назвал её NB (New B), но когда язык стал сильно отличаться от B, название сменили на C. Язык к 1973 стал достаточно стабилен для того, чтобы на нём можно было переписать UNIX. Переход на C обеспечил важное преимущество: переносимость. Написав компилятор C для каждой из машин в Bell Labs, команда разработчиков могла портировать на них UNIX.
2.2 Стандартизация языка
C продолжил развиваться в 70-х, особенно в период с 1977 по 1979, когда вышла первая книга по C. Книга "Язык программирования Си", написанная Брайаном Керниганом и Денисом Ритчи и опубликованная в 1978 стала библией программистов на Си. При отсутсвии официального стандарта эта книга – известная также как K&R, или "Белая Книга", как любят называть поклонники си – фактически стала стандартом. В 70-х программистов на C было немного и большинство из низ были пользователями UNIX. Тем не менее, в 80-х C вышел за узкие рамки мира UNIX. Компиляторы C стали доступны на различных машинах, работающих под управлением разных операционных систем. В частности, Си стал распространяться на быстро развивающейся платформе IBM PC.
Рис. 4Брайан Керниган (Brian Kernighan), Деннис Ритчи (Dennis Ritchie) и Кен Томпсон (Ken Thompson) как бы говорят, что без бороды ты не программист.
Вместе с ростом популярности появились проблемы. Программисты, писавшие новые компиляторы брали за основу язык, описанный в K&R. К сожалению, в K&R некоторые особенности языка были описаны расплывчато, поэтому компиляторы часто трактовали их на своё усмотрение. Кроме того, в книге не было чёткого разделения между тем, что является особенностью языка, а что особенностью операционной системы UNIX. Ухудшало ситуацию и то, что после публикации K&R Си продолжал развиваться: в него добавлялись новые возможности и из него вырезались старые. Вскоре появилась очевидная необходимость в исчерпывающем, точном и соответствующем современным требованиям описании языка. Без такого стандарта стали появляться диалекты языка, которые мешали переносимости – сильнейшей стороне языка.