Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История возникновения и развития языка программирования Си (С++) ,Java.

Содержание:

Введение

Информационные технологии занимают все более значимую роль в человеческом обществе. Они проникли во все сферы деятельности человека. Прогресс компьютерных технологий определяет процесс появления различных новых знаковых систем для того, чтобы записывались алгоритмы, то есть языки программирования

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

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

Цель работы - изучить историю возникновения и развития языков Си (C++) и Java. Для этого необходимо решить следующие задачи:

1) изучить источники информации по теме;

2) описать историю возникновения и эволюцию языков Си (С++) и Java;

3) указать на достоинства рассматриваемых языков программирования.

Объект исследования: языки программирования Си (C++) и Java. Предметом исследования является история развития, достоинства и недостатки таких языков программирования, как Си (C++) и Java.

Выполненная работа состоит из введения, четырех разделов, заключения и списка литературы.

1.1. Возникновение и эволюция языка Си

Язык Си восходит корнями к языку ALGOL (расшифровывается как ALGorithmic Language), который был создан в 1958 году совместно с комитетом Европейских и Американских учёных в сфере компьютерных наук на встрече в 1958 в Швейцарской высшей технической школе Цюриха.

Вдохновлённые языком ALGOL-60, Математическая лаборатория Кембриджского Университета совместно с Компьютерным отделом Лондонского университета создали в 1963 году язык CPL (Combined Programming Language).

Язык CPL посчитали сложным, и в ответ на это Мартином Ричардсоном был создан в 1966 году язык BCPL, основное предназначение которого заключалось в написании компиляторов. В своё время из-за хорошей портируемости указанный язык играл важную роль.

Язык BCPL послужил предком для языка Би, разработанного в 1969 году Кеном Томпсоном и Денсом Ритчи. Язык Би был использован для написания самых ранних версий UNIX, созданной как ответ на проект Multics. Именно этот язык послужил непосредственным предшественником языка Си.

По поводу возникновения языка Си Питер Мойлан в своей книге «The case against C» пишет: «Нужен был язык, способный обойти некоторые жесткие правила, встроенные в большинство языков высокого уровня и обеспечивающие их надежность. Нужен был такой язык, который позволил бы делать то, что до него можно было реализовать только на ассемблере или на уровне машинного кода.» Си стал именно таким языком. Это обусловило его дальнейшую популярность в таких отраслях программирования, как написание драйверов и прочих аспектах низкоуровневого программирования.

Язык программирования Си был разработан в стенах Bell Labs в период с 1969 по 1973 годы. По словам Ритчи, самый активный период творчества приходился на 1972 год.

За всё время своего существования, язык Си оброс легендами по поводу мотивов своего создания.

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

Согласно второй легенде, язык Си был первоапрельской шуткой, которая обрела нешуточную популярность. Компилятор языка Си унаследовал традицию, заложенную ещё Никлаусом Виртом и был написан на самом Си. Согласно мнению большинства, название языка Си является третьей буквой алфавита. Оно появилось как указание на то, что язык Си является более усовершенствованным, чем язык Би. Однако, сам Ритчи по поводу названия языка говорил следующее:«Создав систему типов, соответствующий синтаксис и компилятор для нового языка, я почувствовал, что он заслуживает нового имени: NB показалось мне недостаточно четким. Я решил следовать однобуквенному стилю и назвал его C (Си), оставляя открытым вопрос, являлось ли после B это следующей буквой в алфавите или в названии BCPL».

Успех Си в основном связан с тем, что на нём была написана значительная часть операционной системы UNIX, которая в итоге приобрела очень большую популярность. Если считать по количеству используемых на данный момент операционных систем, разработанных на базе UNIX, то она является самой распространённой системой в мире. В связи с её распространённостю, а также с тем, что на данный момент объём операционной системы измеряется в миллионах строк кода (для примера, в последних версиях Linux содержится более 10 000 000 строк кода), задача о переписывании UNIX на другой язык становиться практически невыполнимой (также следует учитывать тот факт, что при ручном переписывании неизбежно возникнут ошибки, что существенно снизит стабильность работы, а при переводе с использованием программных средств пострадает производительность кода).

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

Первая книга, посвящённая языку Си была написана Керниганом и Ритчи в 1978 году и вышла в свет под названием «Язык программирования Си». Эта книга, в среде программистов более известная как «K&R», стала неофициальным стандартом языка Си.

В конце 1970-х годов, язык си начал вытеснять BASIC, который в то время был ведущим в области программирования микрокомпьютеров. В 1980-х годах он был адаптирован под архитектуру IBM-PC, что привело к значительному скачку его популярности. В то же время Бьярн Страуструп начал разработку языка программирования, который бы сочетал в себе синтаксис популярного языка Си и концепцию объектно-ориентированного программирования, которая становилась всё более востребованной, так началась разработка языка С++, речь о котором пойдет в разделе 1.2. более подробно.

В то время как Си набирал всё большую популярность, компиляторы для него выпускались различными фирмами, и зачастую программа, которая компилировалась на компиляторе одной фирме, не компилировалась на компиляторе другой. Всё это было связано с отсутствием чётко оговоренного стандарта языка Си. Все разработчики ориентировались на книгу Кернигана и Ритчи, но интерпретировали её по-своему.

Разработкой стандарта языка Си занялся Американский национальный институт стандартов (ANSI). При нём в 1983 году был сформирован комитет X3J11, который занялся разработкой стандарта. Первая версия стандарта была выпущена в 1989 году и получила название С89. В 1990, внеся небольшие изменения в стандарт, его приняла Международная Организация Стандартизации ISO. Тогда он стал известен под кодом ISO/IEC 9899:1990, но в среде программистов закрепилось название, связанное с годом принятия стандарта: С90. Последней на данный момент версией стандарта является стандарт ISO/IEC 9899:1999, также известный как С99, который был принят в 2000 году.

Среди новшеств стандарта С99 стоит обратить внимание на изменение правила, касающегося места объявления переменных. Теперь новые переменные можно было объявлять посреди кода, а не только в начале составного блока или в глобальной области видимости. Это уводит Си от концепции объявления переменных в начале функции, которая присутствует в Паскале. Тем не менее, даже с принятием стандарта С99, в программе Borland Embarcadeo RAD Studio 2010, ограничение на объявление переменных в начале блока кода всё ещё действует. Также можно указать другие места, в которых стандарты Си не до конца соблюдаются. Есть мнение, что это связано с тем, что основное внимание больших компаний, таких как Microsoft и Borland сосредоточено на более новых языках программирования. Однако, согласно заверениям компании Sun Microsystems, её среда разработки Sun Studio полностью поддерживает С99.

Стандарт С99 сейчас в большей или меньшей степени поддерживается всеми современными компиляторами языка Си. В идеале, код написанный на Си с соблюдением стандартов и без использования аппаратно- и системно-зависимых вызовов, становился как аппаратно- так и платформенно-независимым кодом.

8 декабря 2011 опубликован новый стандарт для языка Си (ISO/IEC 9899:2011). Были внесены следующие основные изменения:

  1. поддержка многопоточности;
  2. улучшенная поддержка Юникода;
  3. обобщённые макросы (type-generic expressions, позволяют статичную перегрузку);
  4. анонимные структуры и объединения (упрощают обращение ко вложенным конструкциям);
  5. управление выравниванием объектов;
  6. новый режим эксклюзивного открытия файла и другое.

Итак, Си - компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.

Перейдем к рассмотрению истории развития языка C++.

Возникновение и эволюция языка C++

Разработчиком языка С++ и создателем первого транслятора является Бьерн Страуструп. Он родился 30 декабря 1950 года в Дании в городе Орхус. Поступил в Орхусский университет (Дания) на отделение информатики. Закончив его (1975), он получил степень магистра. Позже защитил диссертацию (Ph. D.) по информатике в Кембриджском университете (1979).

Страуструп стал первопроходцем в области использования объектно-ориентированной и обобщённой парадигм программирования в области создания программных приложений, где эффективность является приоритетным свойством, таких как симуляторы, графика, пользовательские интерфейсы, прикладные системы, системы для научных вычислений. Книга Страуструпа «Язык программирования C++» — одна из самых широко читаемых книг из своей области, которая была переведена на 19 языков..

Безусловно С++ многим обязан языку Си, который сохраняется как его подмножество. Сохранены и все свойственные Си средства низкого уровня, предназначенные для решения самых насущных задач системного программирования. Многим язык обязан своему предшественнику языку BCPL. Комментарий языка BCPL был восстановлен в С++. Еще одним источником вдохновения был язык SIMULA-67. Именно из него была заимствована концепция классов (вместе c производными классами и виртуальными функциями). Возможность в С++ перегрузки операций и свобода размещения описаний всюду, где может встречаться оператор, напоминают язык Алгол-68.

Впервые С++ вышел за пределы исследовательской группы, в которой работал автор, в июле 1983 г., однако тогда многие возможности С++ еще не были разработаны.

Язык С++ поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции.

Название С++ было придумано Риком Маскитти летом 1983 г. Это название отражает эволюционный характер изменений языка Си. Обозначение ++ относится к операции наращивания Си. Чуть более короткое имя С+ является синтаксической ошибкой. Кроме того, оно уже было использовано как название совсем другого языка. Язык не получил названия D, поскольку он является расширением Си, и в нем не делается попыток решить какие-либо проблемы за счет отказа от возможностей С.

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

С момента выхода в свет первого издания книги язык С++ подвергся существенным изменениям и уточнениям. В основном это касается разрешения неоднозначности при перегрузке, связывании и управлении памятью. Вместе с тем, были внесены незначительные изменения с целью увеличить совместимость с языком С. Были также введены некоторые обобщения и существенные расширения, как то: множественное наследование, функции-члены со спецификациями static и const, защищенные члены (protected), шаблоны типа и обработка особых ситуаций. Все эти расширения и доработки были нацелены на то, чтобы С++ стал языком, на котором можно создавать и использовать библиотеки.

Другие расширения, введенные за период между 1985 и 1991 г.г. (такие как множественное наследование, статические функции-члены и чистые виртуальные функции), скорее появились в результате обобщения опыта программирования на С++, чем были почерпнуты из других языков.

Сделанные за эти шесть лет расширения языка прежде всего были направлены на повышение выразительности С++ как языка абстракции данных и объектно-ориентированного программирования вообще и как средства для создания высококачественных библиотек с пользовательскими типами данных в частности.

Примерно в 1987 г. стало очевидно, что работа по стандартизации С++ неизбежна и что следует незамедлительно приступить к созданию основы для нее.

Фирма AT&T Bell Laboratories внесла основной вклад в эту работу. Около ста представителей из порядка 20 организаций изучали и комментировали то, что стало современной версией справочного руководства и исходными материалами для ANSI по стандартизации С++.

В 1998 был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language». В 2003 году опубликован стандарт языка ISO/IEC 14882:2003, где были исправлены выявленные ошибки и недочёты предыдущей версии стандарта. В 2011 году вышел новый стандарт – C++11 или ISO/IEC 14882:2011; новый стандарт включил дополнения в ядре языка и расширение стандартной библиотеки, в том числе большую часть TR1. В 2014 году вышел стандарт C++14 («International Standard ISO/IEC 14882:2014(E) Programming Language C++»); C++14 можно рассматривать как небольшое расширение над C++11, содержащее в основном исправления ошибок и небольшие улучшения.

С++17 (также известный как C++1z) — это название последней версии стандарта C++ ISO/IEC. В декабре 2017 года были опубликованы спецификации для C++17.

В книге «Дизайн и эволюция C++» (2007) Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании C++:

1) получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка Cи;

2) непосредственно и всесторонне поддерживать множество стилей программирования;

3) дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно;

4) максимально сохранить совместимость с Cи, тем самым делая возможным лёгкий переход от программирования на Cи.

5) избежать разночтений между Cи и C++: любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы;

6) избегать особенностей, которые зависят от платформы или не являются универсальными;

7) «Не платить за то, что не используется» — никакое языковое средство не должно приводить к снижению производительности программ, не использующих его;

8) не требовать слишком усложнённой среды программирования.

Итак, C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Синтаксис C++ унаследован от языка Cи. Одним из принципов разработки было сохранение совместимости с Cи. Тем не менее, C++ не является в строгом смысле надмножеством Cи. В сравнении с его предшественником — языком Cи — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

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

Возникновение и эволюция языка Java

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

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

Стремясь изобрести небольшой, компактный и машинонезависимый код, разработчики возродили модель, использованную при реализации первых версий языка Pascal. Никлаус Вирт, создатель языка Pascal, в свое время разработал машинонезависимый язык, генерирующий промежуточный код для некоей гипотетической машины. Этот язык стал коммерческим продуктом под названием UCSD Pascal. Этот промежуточный код можно выполнять на любой машине, имеющей соответствующий интерпретатор. Инженеры, работавшие над проектом "Green", также использовали виртуальную машину, что решило их основную проблему.

Однако большинство сотрудников компании Sun имели опыт работы с операционной системой UNIX, поэтому в основу разрабатываемого ими языка был положен язык C++, а не Pascal. В частности, они сделали язык объектно-, а не процедурно-ориентированным.

Как сказал Гослинг в своем интервью: "Язык — это всегда средство, а не цель". Сначала Гослинг решил назвать его "Oak" ("Дуб") (возможно потому, что он любил смотреть на дуб, растущий прямо под окнами его офиса в компании Sun). Потом сотрудники компании Sun узнали, что слово Oak уже используется в качестве имени ранее созданного языка программирования, и изменили название Java.

В 1992 году в рамках проекта Green была выпущена первая продукция, названная "*7". Это было средство для чрезвычайно интеллектуального дистанционного управления. Ни одна из компаний— производителей электронной техники не заинтересовалась этим изобретением.

Затем группа стала заниматься разработкой устройства для кабельного телевидения, которое могло бы осуществлять новые виды услуг, например, включать видеосистему по требованию. И снова они не получили ни одного контракта. Весь 1993 год и половину 1994 года продолжались безрезультатные поиски покупателей продукции, разработанной в рамках проекта "Green" (под новым названием "First Person, Inc."). Проект "First Person, Inc." был прекращен в 1994 году.

Тем временем в рамках Интернет разрасталась сеть World Wide Web. Ключом к этой сети является броузер, превращающий гипертекст в изображение на экране.

В 1994 году большинство людей пользовалось броузером Mosaic, некоммерческим Web-броузером, разработанным в суперкомпьютерном центре Университета штата Иллинойс в 1993 году. Частично этот броузер был написан Марком Андреессеном, который заканчивал университет и броузер был его дипломной работой. Затем он стал одним из основателей и главным программистом компании Netscape. Основную работу по разработке броузера выполнили Патрико Нотон и Джонатан Пэйн. Позднее он превратился в современный броузер HotJava. Этот броузер был написан на языке Java, чтобы продемонстрировать всю его мощь. Однако разработчики не забывали о мощных средствах, которые теперь называются апплетами, наделив свой броузер способностью выполнять код внутри Web-страниц. "Демонстрация технологии" была представлена на выставке Sun World '95 23 мая 1995 года и вызвала всеобщее помешательство на почве язака Java, продолжающееся и поныне.

Компания Sun выпустила первую версию языка Java в начале 1996 года. Через несколько месяцев после нее появилась версия Java 1.02. Люди быстро поняли, что версия Java 1.02 не подходит для разработки серьезных приложений. Конечно, эту версию можно применять для разработки Web-страниц, однако в версии Java 1.02 ничего нельзя даже напечатать. Версия Java 1.02 была еще сырой. Ее преемница, версия Java 1.1, заполнила большинство провалов, улучшив возможность отражения и добавив новую модель событий для программирования графического пользовательского интерфейса. Несмотря на это, она все еще была довольно ограниченной.

Выпуск версии Java 1.2 стал основной новостью конференции JavaOne в 1998 году. В новой версии слабые средства для создания графического пользовательского интерфейса и графических приложений были заменены сложным и масштабным инструментарием. Это был шаг вперед, к реализации лозунга "Один раз напиши— и везде выполняй" выдвинутого при разработке предыдущих версий.

В декабре 1998 года через три дня после выхода в свет название новой версии было изменено на громоздкое словосочетание Java 2 Standart Edition Software Development Kit Version 1.2 (Стандартное издание пакета инструментальных средств для разработки программного обеспечения на языке Java 2, версия 1.2).

Кроме стандартного издания пакета ("Standart Edition") были предложены еще два варианта: "микроиздание" ("Micro Edition") для портативных устройств, например, для мобильных телефонов, и. "промышленное издание" ("Enterprise Edition") для создания серверных приложений. В нашей книге в центре внимания находится стандартное издание.

Версии 1.3 (дата выпуска 8 мая 2000 года) и 1.4 (дата выпуска 6 февраля 2002 года) стандартного издания пакета инструментальных средств намного совершеннее первоначального выпуска языка Java 2. Они обладают новыми возможностями и, разумеется, содержат намного меньше ошибок.

Спецификация Java 5.0 была выпущена 30 сентября 2004 года, кодовое имя Tiger. C этой версии изменена официальная индексация, вместо Java 1.5 правильнее называть Java 5.0. Внутренняя же индексация Sun осталась прежней — 1.x. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:

1) перечислимые типы. Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей. Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные;

2) аннотации — возможность добавления в текст программы метаданных, непосредственно не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода;

3) средства обобщённого программирования — механизм, аналогичный средствам языков Ada и Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java;

4) методы с неопределённым числом параметров;

5) Аutoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками (например, между int — Integer). Наличие такой возможности сокращает код, поскольку исключает необходимость выполнения явных преобразований типов в очевидных случаях;

6) разрешён импорт статических полей и методов;

7) в язык введён цикл по коллекции объектов (итератор, англ. foreach);

8) было введено использование Javadoc-комментариев, которые используются для автоматического оформления документации по комментариям в исходном коде.

Релиз версии Java SE 6 состоялся 11 декабря 2006 года, кодовое имя Mustang. Изменена официальная индексация — вместо ожидаемой 6.0 версия значится как 6. Минорные изменения, как и в Java 5.0, вносятся в обычные обновления версии, например, Java Standard Edition Development Kit 6 Update 27. Внесены следующие изменения:

1) коллекции — добавлены интерфейсы для организации очереди, работающей с двух сторон коллекции; организовывающие поиск по ближайшему соответствию; блокирующие себя во время ожидания элемента. Организованы новые классы, реализующие перечисленные интерфейсы;

2) добавлена поддержка японского императорского календаря (наряду с уже существующими григорианским и буддийским календарями);

3) доступны классы-потоки для чтения и передачи сжатых данных, с возможностью передачи их по сети. Сняты ограничения на количество файлов в архиве (ранее 64 Кб), длину названия файла (ранее 256 символов) и количество одновременно открытых файлов (ранее 2000 шт);

4) организована система управления кэшем и добавлена поддержка параметра «no-cache» в HTTP-запросе;

5) исправлено большое количество ошибок.

Релиз версии Java SE 7 состоялся 28 июля 2011 года, кодовое имя Dolphin. В финальную версию Java Standard Edition 7 не были включены все ранее запланированные изменения. Согласно плану развития (план «Б»), включение нововведений будет разбито на две части: Java Standard Edition 7 (без лямбда-исчисления, проекта Jigsaw, и части улучшений Coin[en]) и Java Standard Edition 8.

В новой версии, получившей название Java Standard Edition 7 (Java Platform, Standard Edition 7), помимо исправления большого количества ошибок, было представлено несколько новшеств. Так, например, в качестве эталонной реализации Java Standard Edition 7 использован не проприетарный пакет JDK, а его открытая реализация OpenJDK, а сам релиз новой версии платформы готовился при тесном сотрудничестве инженеров Oracle с участниками мировой экосистемы Java, комитетом JCP (Java Community Process) и сообществом OpenJDK. Все поставляемые Oracle бинарные файлы эталонной реализации Java Standard Edition 7 собраны на основе кодовой базы OpenJDK, сама эталонная реализация полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с проприетарными продуктами. К другим нововведениям относится интеграция набора небольших языковых улучшений Java, развиваемых в рамках проекта Coin, добавлена поддержка языков программирования с динамической типизацией, таких, как Ruby, Python и JavaScript, поддержка загрузки классов по URL, обновлённый XML-стек, включающий JAXP 1.4, JAXB 2.2a и JAX-WS 2.2 и другие.

Релиз версии Java SE 8 состоялся 19 марта 2014 года. Кодовое имя Octopus. Список нововведений:

1) полноценная поддержка лямбда-выражений;

2) ключевое слово default в интерфейсах для поддержки функциональности по умолчанию;

3) ссылки на методы и конструкторы;

4) функциональные интерфейсы (предикаты, поставщики и т. д.);

5) потоки (stream) для работы с коллекциями;

6) новый API для работы с датами.

Официальная датой релиза версии Java SE 9 — 21 сентября 2017 года. Список нововведений:

1) интеграция Jigsaw;

2) обновление Process API для лучшего взаимодействия с нативными процессами операционной системы. Обновление мотивировано тем, что разработчикам зачастую приходилось писать платформозависимый (native) код для таких задач;

3) временно экспериментальный новый HTTP-клиент с поддержкой HTTP 2.0, веб-сокетов и заменой устаревшему HttpURLConnection;

4) сжатые строки: если содержимое строки позволяет, она может кодироваться в Latin-1 (один байт на символ); выбор кодировки конкретного экземпляра класса String отображается в значении переменной-флага, которая теперь есть у всех строк;

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

Дата релиза версии Java SE 10: 20 марта 2018 года. Список нововведений:

1) официальный частичный список нововведений и план релиза расположен на сайте OpenJDK;

2) вывод типов локальных переменных с помощью var;

3) создание чистого интерфейса сборщика мусора;

4) использование сборщиком мусора нескольких потоков;

5) возможность выполнять функции обратного вызова на потоках, не делая глобальный для JVM safepoint;

6) новый экспериментальный JIT-компилятор Graal. По умолчанию отключён, работает только на Linux/x64;

7) новая система нумерации версий Java SE и JDK и др.

Java SE 11 вышла 25 сентября 2018 года. Список нововведений

1) обновление системы управления доступом, позволяющее вложенным классам обращаться к закрытым (private) методам и полям внешнего класса (и наоборот) без использования вставляемых компилятором методов-«мостов»;

2) Epsilon — новый сборщик мусора, собственно сборкой мусора не занимающийся вообще; при использовании Epsilon превышение предела выделяемой памяти приводит к завершении работы JVM;

3) стандартизирован новый клиент HTTP с поддержкой HTTP/2, введённый в Java 9 как экспериментальный;

4) синтаксис вывода типов (var) может быть использован для параметров лямбда-функций;

5) поддержка стандарта Unicode 10;

6) поддержка протокола TLS 1.3;

7) экспериментальный масштабируемый сборщик мусора ZGC. По умолчанию отключён, работает только на Linux/x64.

Итак, сегодня технология Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений. Первоначально же язык Java корпорации Sun предназначался для устройств бытовой электроники, и в некоторых из них еще может использоваться его ранний вариант, известный под названием Oak. Однако настоящей стартовой площадкой для стремительного взлета Java стала сеть Internet. В настоящее время все работы, связанные со средой Java, ведет дочерняя фирма Java Soft. Ее информационный сервер расположен по адресу www.javasoft.com.

Достоинства языков Си, С++ и Java

Язык Си предоставляет исключительные возможности для переноса программ. Компиляторы с данного языка реализованы почти на 40 типах вычислительных систем, начиная от- 8-разрядных микропроцессоров и кончая CRAY-1 одним из самых мощных в настоящее время суперкомпьютеров.

Си — мощный и гибкий язык. Например, большая часть мощной и гибкой операционной системы (ОС) UNIX написана на языке Си. Речь идет о компиляторах и интерпретаторах других языков, таких, как Фортран, АПЛ, Паскаль, Лисп, Лого и Бейсик. Поэтому, когда используется компилятор с Фортрана в системе UNIX, результирующая объектная программа в конечном счете получается с помощью некоторой программы, написанной на языке Си. Кроме того, программы, написанные на Си, используются для решения физических и технических проблем и даже для производства мультипликационных фильмов.

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

C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. В частности: поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщённое программирование, метапрограммирование (шаблоны, макросы).

Предсказуемое выполнение программ является важным достоинством для построения систем реального времени. Весь код, неявно генерируемый компилятором для реализации языковых возможностей (например, при x нулевое значение, а потом интерпретирует его как значение условия в операторе if. Так как нуль соответствует логическому значению «ложь», блок операторов в условной конструкции не выполнится никогда. Ошибки такого рода трудно выявлять, но во многих современных компиляторах предлагается диагностика некоторых подобных конструкций.

Операции присваивания (=), инкрементации (++), декрементации (--) и другие возвращают значение. В сочетании с обилием операций это позволяет, хотя и не обязывает, создавать трудночитаемые выражения. Наличие этих операций в Си было вызвано желанием получить инструмент ручной оптимизации кода, но в настоящее время оптимизирующие компиляторы обычно генерируют оптимальный код и на традиционных выражениях. С другой стороны, один из основных принципов языков Си и C++ — позволять программисту писать в любом стиле, а не навязывать «хороший» стиль.

Макросы являются мощным, но опасным средством. Они сохранены в C++ несмотря на то, что необходимость в них, благодаря шаблонам и встроенным функциям, не так уж велика. В унаследованных стандартных Си-библиотеках много потенциально опасных макросов.

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

C++ позволяет пропускать break в ветви оператора switch с целью последовательного выполнения нескольких ветвей. Такой же подход принят в языке Java.

Преимущества Java как языка программирования:

1) объектно-ориентированный: в Java все является объектом. Дополнение может быть легко расширено, так как он основан на объектной модели;

2) платформонезависимый: в отличие от многих других языков, включая C и C++, Java, когда был создан, он не компилировался в платформе конкретной машины, а в независимом от платформы байт-коде. Этот байт код распространяется через интернет и интерпретируется в Java Virtual Machine (JVM), на которой он в настоящее время работает;

3) простой: процессы изучения и введение в язык программирования Java остаются простыми. Если Вы понимаете основные концепции объектно-ориентированного программирования, то он будет прост для Вас в освоении;

4) безопасным: методы проверки подлинности основаны на шифровании с открытым ключом;

5) архитектурно-нейтральным: компилятор генерирует архитектурно-нейтральные объекты формата файла, что делает скомпилированный код исполняемым на многих процессорах, с наличием системе Java Runtime;

6) портативный: архитектурно-нейтральный и не имеющий зависимости от реализации аспектов спецификаций — все это делает Java портативным. Компилятор в Java написан на ANSI C с чистой переносимостью, который является подмножеством POSIX;

7) прочный: выполняет усилия, чтобы устранить ошибки в различных ситуациях, делая упор в основном на время компиляции, проверку ошибок и проверку во время выполнения;

8) многопоточный: функции многопоточности, можно писать программы, которые могут выполнять множество задач одновременно. Введение в язык Java этой конструктивной особенности позволяет разработчикам создавать отлаженные интерактивные приложения;

9) интерпретированный: Java байт-код переводится на лету в машинные инструкции и нигде не сохраняется. Делая процесс более быстрым и аналитическим, поскольку связывание происходит как дополнительное с небольшим весом процесса;

10) высокопроизводительный: введение Just-In-Time компилятора, позволило получить высокую производительность;

11) распространенный: предназначен для распределенной среды интернета;

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

Итак, языки Си (С++) и Java обладают достоинствами, позволяющими программистам всего мира ежедневно работать с указанными языками и развивать индустрию программного обеспечения.

Заключение

Си - компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би. Первоначально был разработан для реализации операционной системы UNIX, но впоследствии был перенесён на множество других платформ. Согласно дизайну языка, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном программном обеспечении для множества устройств — от суперкомпьютеров до встраиваемых систем. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.

C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Синтаксис C++ унаследован от языка Cи. Одним из принципов разработки было сохранение совместимости с Cи. Тем не менее, C++ не является в строгом смысле надмножеством Cи. В сравнении с его предшественником — языком Cи — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

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

Технология Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений. Первоначально же язык Java корпорации Sun предназначался для устройств бытовой электроники, и в некоторых из них еще может использоваться его ранний вариант, известный под названием Oak. Однако настоящей стартовой площадкой для стремительного взлета Java стала сеть Internet. В настоящее время все работы, связанные со средой Java, ведет дочерняя фирма Java Soft. Ее информационный сервер расположен по адресу www.javasoft.com.

Языки Си (С++) и Java обладают достоинствами, позволяющими программистам всего мира ежедневно работать с указанными языками и развивать индустрию программного обеспечения.

Список литературы

  1. Алексей Васильев «Программирование на C++ в примерах и задачах 2018»
  2. Алексей Васильев «Программирование на C в примерах и задачах 2017».
  3. Бондарев В.М. «Основы программирования.js» 2015.
  4. Гриффитс Дуэйн, Гриффитс Доун «Изучаем программирование на C» 2016
  5. Лафоре Р. «Объектно-ориентированное программирование в С++» 2018.
  6. Михаил Райтман «Программирование на Java для начинающих» 2016
  7. Патрик Немайер, Диниэль Люк «Программирование на Java» 2014
  8. Сьерра Кэти, Бэйтс Берт «Изучаем Java» 2018
  9. https://isocpp.org/
  10. https://java.com/ru/
  11. http://java-study.ru/
  12. http://cppstudio.com/
  13. https://habr.com/post/304034/