Файл: История возникновения и развития языка программирования Си (С++) и Java (История Unix).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 478

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Разные стандартные расширения файлов. file.c – означает файл написан на языке С, а file.cpp – означает что файл написан на языке С++.

В С++ ключевое слово void является факультативным. Многие программисты на С++ включают void в качестве средства, улучшающего читаемость программы и указывающего, что у функции нет параметров.

В С++ все функции должны иметь прототипы. В С это требование является факультативным.

В С символьная константа автоматически повышается до целого числа. В С++ это не так.

В С объявление глобальной переменной несколько раз не является ошибкой, хотя и не служит признаком хорошего программирования. В С++ это является ошибкой.

В С идентификатор имеет по крайней мере 31 значащий символ. В С++ все символы рассматриваются как значащие.

В С можно вызвать функцию main() из программы, хотя это и нетипично. В С++ это недопустимо.

В С нельзя взять адрес регистровой переменной. В С++ можно это сделать.

В данной главе отражены не все различия между языками, их больше и со временем

Глава 5 История возникновения Java

История технологии Java начинается с 1991, когда компания Sun Microsystems c членом Совета директоров Джеймса Гослинга и группа инженеров под руководством Патрика Нотона приступила к разработке языка программирования для различных бытовых приборов. Т.к. Устройства могут быть построены на разных микросхемах и с разным количеством памяти, важно было не привязываться к архитектуре. Название проект получил "Green".

"Группе была поставлена задача создать распределенную систему, которую можно было бы в качестве современной программной технологии продавать производителям бытовой электроники," - вспоминает Гослинг.

Сначала разработку начали производить на языке С++, пытаясь расширить функции компилятора. Но потом, решили создать свой язык.

"В конце концов, язык — это средство, а не самоцель, - поясняет Гослинг. - Мы не собирались зацикливаться на С++, а хотели разработать систему, которая позволяла бы создавать большую распределенную разнородную сеть из бытовых электронных устройств, способных взаимодействовать между собой".

Так с середины 1991 года появился язык Oak. Как выяснилось позже, уже существовал язык программирования с таким именем и тогда название поменяли на Java.

В конце 1992 года, свет увидел утройство *7, это названное "ручным пультом дистанционного управления". Однако данное изобретение не заинтересовало производителей и группа принялась за разработку устройства для кабельного телевидения. Результат оказался тем же.


С середины 1994 начала набирать сеть World Wide Web. Для преобразования гипертекста в изображение использовался браузер. В то время популярным был браузер Mosaic, некоммерческим Web-броузером, разработанным в суперкомпьютерном центре Университета штата Иллинойс (University of Illinois) в 1993 году.

"Мы поняли, что сможем создать действительно первоклассный браузер, - говорит Гослинг. — Это один из немногих компонентов архитектуры клиент-сервер, который мы могли бы наделить такими необходимыми ему качествами, как независимость от архитектуры, работа в реальном времени, надежность, безопасность, не имеющие такого значения для рабочих станций. Поэтому мы и разработали браузер"[21]. К осени Нотон и его коллега по Sun Джонатан Пэйн закончили писать WebRunner - Web-браузер, написанный на языке Java. Эта первая реализация HotJava проявила Java-технологию в новом свете, и эта демонстрация была произведена на выставке Sun World '95 23 мая 1995 года. Получить вместо статической страницы, динамически изменяемую, выполняя Java-код внутри страницы, это производит сильный эффект. После выставки началось продвижение Java. Sun всячески поддерживала стремление разработчиков выпуская новые версии сред для разработки Java-приложений.

Глава 5.1 Этапы развития языка Java

В начале 1996 года появляется Java версии 1.0. Совершенно сырой продукт, не предназначенный для серьёзных проектов. Единственное в чём его предназначение, визуальные эффекты для браузера. Из данной версии даже нельзя было послать на печать. В следующей версии Java 1.1 добавили новые библиотечные элементы, новые средства для обработки событий, перекомпонованы библиотеки из Java 1.0[22]. От некоторых функций полностью отказались.

В 1998 на конференции JavaOne[23] была представлена версия 1.2 ставшая поворотным событием в судьбе продукта. В новой версии появились мощные средства создания графических интерфейсов и приложений. Практически сразу версия 1.2 была переименована в Java2 (Java 2 Standard Edition Software Development Kit Version 1.2). Вместе с этим появились ещё такие версии продуктов, как: Macro Edition для мобильных устройств, так и Enterprise Edition для корпоративных приложений.

Версия 1.3 подверглась изменениям, среду разработки «уплотнили», не сильно расширился функционал. В версии 1.4 на ряду с новыми командами, появились системы ввода-вывода на основе каналов. Внесены изменения в Collections Framework. Оказалось, что на Java удобно разрабатывать высококачественные серверные приложения.


Версия 5 вышедшая в сентябре 2004 принесла много новшеств. К примеру: обобщения, аннотации, автоупаковка и автораспаковка, перечисления, усовершенствованный цикл for в стиле foreach, аргументы переменной длины (varargs ), статический импорт, форматированный ввод-вывод, утилиты параллельной обработки. Это только глобальные, не считая косметических. Версия получилась на столько революционной, что разработчики приняли решение присвоить ей номер не 1.5, а версия J2SE 5.0, тем самым подняв значимость события

Декабрь 2006 ознаменован выходом Java SE версии 6, как видно из названия исчезла цифра 2. Серьёзных изменений не произошло. Были проведены работы направленные на улучшение производительности и расширения библиотек.

Испытывая финансовые трудности, компания Sun Microsystems была куплена компанией Oracle (этот процесс начался в апреле 2009 года и завершился в январе 2010 года). В 2009 году язык Java сменил своего владельца. И только летом 2011 года вышла 7 версия. Изменений было внесено много, но по сути они являлись «мелкими».

Версия SE 8 март 2014 принесла изменения с вводом лямбда-выражений, их внедрение принесло изменение в библиотеки Java.

Данная версия остаётся на сегодня самой последней. И за 5 лет новых революционных изменений не происходит. Складывается впечатление, что популярность язык постепенно снижается.

Глава 6 Сравнение Java c C++

Java и C++ — объектно-ориентированные языки программирования, но на этом их сходства, пожалуй, заканчиваются, а вот отличий между ними достаточно много.

Java — чистый объектно-ориентированный язык программирования; следовательно, в Java все является объектом (однокорневая иерархия, поскольку всё исходит от java.lang.Object).

В то время как в C++ не существует подобной корневой иерархии. C++ поддерживает как процедурное, так и объектно-ориентированное программирование; поэтому он называется гибридным. Ниже в таблице приведены основные характеристики этих языков и их отличия.

Основные отличия языков Java и C++:

Java не поддерживает указатели (pointers), шаблоны (templates), объединения (unions), перегрузку операторов (operator overloading), структур и т.д. Изначально было заявлено, что в языке Java нет никаких указателей, но многим программистам было непонятно, как можно работать без указателей, и тогда стали говорить, что их ограниченное количество. Java поддерживает так называемые «ссылки» (“references”). Ссылки имеют во многом схожую с указателями в С++ функцию, но на указателях в Java невозможно совершать арифметические действия. У ссылок есть типы, и они типобезопасны (type-safe). Их нельзя интерпретировать как адрес raw, а небезопасная конверсия запрещена.


C++ поддерживает структуры, объединения (unions), шаблоны (templates), перегрузку операторов (operator overloading), указатели (pointers) и адресную арифметику указателей (pointer aritdmetic).

Java поддерживает автоматическое управление освобождением динамической памяти. Она, в отличие от C++, не поддерживает деструкторы.

C++ поддерживает деструкторы. Эта функция автоматически активируется при уничтожении объекта.

Java не поддерживает условную компиляцию и включение.

Условное включение (#ifdef #ifndef type) – одна из основных функций C++.

Java обладает встроенной поддержкой потоков (tdreads). В Java есть класс потоков, который наследуется для создания нового потока и переопределения метода run.

C++ не имеет встроенной поддержки потоков. Для этих целей используются нестандартизированные библиотеки третьих сторон.

Java не поддерживает параметры по умолчанию. В Java нет оператора разрешения контекста (::). Определения метода должны происходить внутри класса, поэтому нет нужды в разрешении конфликта.

C++ поддерживает параметры по умолчанию. C++ имеет оператор разрешения контекста (::), используемый для определения метода вне класса и для доступа к глобальной переменной внутри из области действия идентификатора, где внутренняя переменная также существует с тем же именем.

В Java нет оператора перехода «goto». Сохраняются ключевые слова «const» and «goto» несмотря на то, что они не используются.

C++ обладает оператором перехода «goto». Однако, использование оператора перехода «goto» не приветствуется.

Java не предоставляет множественное наследование, по крайней мере, не так, как C++.

C++ поддерживает множественное наследование. Для устранения неоднозначности в случае её возникновения во время множественного наследования используется ключевое слово «virtual».

Обработка исключений «exceptions» в Java отличается, поскольку деструкторы отсутствуют. К тому же в Java команды «try/catch» должны определяться в том случае, если функция указывает, что может сгенерировать исключения «exception».

В то время, как в C++ может не включать команды «try/catch» несмотря на то, что эта функция генерирует исключения.

В Java есть метод перегрузки «metdod overloading», но отсутствует перегрузка операторов «operator overloading». Класс «Stringclass» не использует операторы + и += для соединения строк «strings», а строковые выражения «Stringexpressions» используют автоматическое преобразование типов, но это особенная встроенная опция (built-in case).

C++ поддерживает как перегрузку метода, так и перегрузку оператора.

Java имеет встроенную поддержку комментариев к документации (/** ... */); поэтому исходные файлы Java могут содержать собственную документацию, которая читается отдельным инструментом, обычно Javadoc, и переформатироваться в HTML. Это упрощает ведение документации.


C++ не поддерживает комментарии к документации.

Java, по большей мере, интерпретируется, поэтому не зависит от платформы.

C++ генерирует объектный код; тот же код может не запускаться на разных платформах.

Как видим, хоть и есть сходство Java c C++, они совершенно разные и преследуют разные задачи.

Заключение

Данная работа показала, что язык С появился на свет благодаря операционных систем Unix, послужил для развития многих ОС *nix и явился основоположником последующих языков, рассмотренных в этой курсовой. Как и для чего происходили этапы развития языка. Какое применение он нашёл и почему достиг такой популярности. С какими трудностями сталкиваются программисты, использующие данные инструменты для своей деятельности.

С++ демонстрирует те возможности, которых не хватало в С, за счёт добавления новых возможностей, язык С++ стал более популярным, чем С. Конечно поставленную задачу можно решить и с помощью языка С, но это может способствовать увеличению кода и возможно появлению всевозможных ошибок. Язык С++ не является совершенным, в нём тоже есть множество недочётов, которые стараются исправить с помощью правил и стандартов.

Но внимание к обоим языкам не ослабевает за счёт программного обеспечения с открытым кодом.

Совсем другое дело язык Java. Появившись не свет благодаря популярности сети WWW, он был нацелен в первую очередь на работу по сети (клиент-серверное приложение), где безопасность является одним из основных требований. Благодаря библиотекам, упрощено программирование большинства задач.

Библиография

Вахалия Ю. Unix изнутри / Ю. Вахалия. - М.: Питер, 2003 – 844 с.

Ершов А.П. Алгоритмический язык Алгол-60 / А.П. Ершов – М.: Мир, 1965. – 77 с.

Издательство «открытые системы» https://www.osp.ru/news/articles/1997/0511/13032038

Керниган Б. UNIX — универсальная среда программирования / Б. Керниган. – М.: Финансы и статистика, 1992 – 537 с.

Керниган Б., Ритчи Д. Язык программирования Си / Б. Керниган, Д. Ритчи, Б– С-П.: Невский Диалект, 2001. – 337 с.

Колисниченко Д. Н. LINUX: Полное руководство / Д. Н. Колисниченко – СПб.: Наука и Техника, 2006. – 784 с.

Материал из Национальной библиотеки им. Н. Э. Баумана, 2018. URL:https://ru.bmstu.wiki/ALGOL

Немет Э. Unix и Linux руководство системного администратора / Э. Не-мет. – М.: Вильямс, 2012. - C.1280.

Родобудько В. Рождение патриарха // Мой компьютер. – 2003. - №22/245. – С.50.

Столяров А.В. Язык Си и начальное обучение программированию // Сборник статей молодых учёных факультета ВМК МГУ. – 2010. - №7 – 109 с.