Файл: История возникновения и развития языков для программирования Си (С++) и Java.pdf
Добавлен: 15.05.2023
Просмотров: 165
Скачиваний: 2
Осенью 1983 года была начата работа над книгой «С ++ Язык программирования». Завершение книги заняло девять месяцев. В предисловии упоминаются люди, которые к тому времени внесли наибольший вклад в C ++: Том Каргилл, Джим Коплиен, Стю Фельдман, Сэнди Фрейзер, Стив Джонсон, Брайан Керниган, Барт Локанти, Дуг Макилрой, Деннис Ритчи, Ларри Рослер, Джерри Шварц и Джон Шопиро. «C ++ был разработан в первую очередь так, что автору и его друзьям не нужно было программировать на ассемблере, C или различных современных языках высокого уровня. Его основная цель - сделать написанные хорошие программы более легкими и приятными для отдельного программиста». «Язык программирования C ++» - это определение C ++ и введение в C ++ для неизвестного количества программистов, а также методы и организация его представления (заимствованные с признаниями, если не всегда достаточные навыки от «языка программирования C») становятся основой для почти смущающего количества статей и книг. Это было написано с явной решимостью не проповедовать какой-либо конкретной техники программирования.
Когда-то в 1988 году стало ясно, что C ++ в конечном итоге придется стандартизировать. В настоящее время существует несколько независимых реализаций, которые используются или создаются, и явно необходимо приложить усилия для написания более точного и всеобъемлющего определения языка, а также для широкого признания этого определения. Сначала формальная стандартизация не рассматривалась как вариант. Однако создание улучшенного справочного руководства не было чем-то, что мог сделать один человек. Необходимы вход и обратная связь от сообщества C ++. Примерно в то же время часть AT & T, которая продавала C ++, хотела создать новое и улучшенное справочное руководство по C ++ и дала Маргарет Эллис задачу написать его. Было разумно объединить усилия и подготовить единое справочное пособие, выходящее извне. Таким образом, «Аннотированное справочное руководство по C ++» было написано, чтобы обеспечить прочную основу для дальнейшей эволюции C ++ и чтобы служить отправной точкой для формальной стандартизации C ++. ''
В 2003 году вышел стандарт C ++ 03. Он был определен ISO и IEC в стандарте ISO / IEC 14882: 2003.
C ++ 03 был в основном выпуском исправления ошибок для разработчиков, чтобы обеспечить большую согласованность и переносимость. Эта ревизия адресовала 92 отчета о дефектах языка, 125 отчетов об ошибках библиотеки и включила только одну новую языковую функцию: инициализация значения. Среди более примечательных отчетов о дефектах, адресованных C ++ 03, был отчет о дефекте библиотеки 69, разрешение которого добавило требование сохранения элементов в векторе. Это кодирует общее ожидание того, что объект std :: vector C ++ использует макет памяти, подобный массиву. Хотя большинство реализаций удовлетворяли этому ожиданию, C ++ 98 не требовалось.
12 августа 2011 года вышел еще один стандарт - C ++ 11. Он был одобрен ISO и был опубликован как ISO/IEC 14882: 2011 в сентябре 2011 года. Хотя ранее он был назван C ++1x, потому что должен был быть опубликован до 2010 года.
Хотя одна из целей дизайна заключалась в том, чтобы предпочесть изменения в библиотеках по сравнению с основным языком, C ++ 11 делал несколько дополнений к основному языку. Области основного языка, которые были значительно улучшены, включают: поддержку многопоточности, общую поддержку программирования, равномерную инициализацию и производительность. Значительные изменения были внесены в стандартную библиотеку C ++, включающую большинство библиотек C ++ Technical Report 1 (TR1), за исключением библиотеки математических специальных функций.
В 2014 году вышел C ++ 14 - версия стандарта ISO / IEC 14882. Он изначально был небольшим расширением для C ++ 11, включая исправления ошибок и небольшие улучшения. Его одобрение было объявлено 18 августа 2014 года. C ++ 14 был выпущен 15 декабря 2014 года.
До того, как Комитет по стандартам С ++ установил трехлетний цикл выпуска, дата выпуска C ++ 17 была неопределенной. Спецификация C ++ 17 достигла стадии проекта международного стандарта (DIS) в марте 2017 года. Этот DIS был единогласно одобрен, только с редакционными комментариями, а окончательный стандарт был опубликован в декабре 2017 года. Немногие изменения были внесены в стандартную библиотеку шаблонов C ++, хотя некоторые алгоритмы в заголовке <algorithm> получили поддержку для явного распараллеливания и некоторые синтаксические улучшения.
3. Платформа и язык Java
Платформа и язык Java начали разрабатываться в качестве внутреннего проекта Sun Microsystems в декабре 1990 года, как альтернатива языкам программирования C ++ / C. Инженер Патрик Нотон все больше расстраивался состоянием интерфейсов прикладного программирования (API) Sun и C ++, а также с тем, как проект NeWS обрабатывался организацией. Он предусматривал создание небольшой команды, которая могла бы работать автономно без бюрократии, которая затормозила другие проекты Sun. Макнили переслал сообщение другим важным людям в Sun, и начался проект Stealth.
Проект Stealth вскоре был переименован в Green, а Джеймс Гослинг и Майк Шеридан присоединились к Нотону вместе с другими инженерами. Они стремились разработать новую технологию для программирования интеллектуальных устройств следующего поколения.
Первоначально команда рассматривала использование C++, но отклонила ее по нескольким причинам. Поскольку они разрабатывали встроенную систему с ограниченными ресурсами, они решили, что C++ требует слишком много памяти и что ее сложность приводит к ошибкам разработчиков. Отсутствие сбора мусора на языке означало, что программистам приходилось вручную управлять очищением системной памяти. Команда также была обеспокоена отсутствием у C ++ портативных устройств для обеспечения безопасности, распределенного программирования и потоковой передачи. Наконец, им нужна платформа, которая легко переносится на все типы устройств.
Билл Джой представил новый язык, объединяющий Mesa и C. В статье под названием «Дополнительно» он предложил Sun, чтобы ее инженеры должны были создать объектно-ориентированную среду на основе C++. Первоначально Гослинг пытался модифицировать и расширять C++ (предлагаемую разработку, которую он назвал «C ++ ++ -»), но вскоре отказался от этого в пользу создания нового языка, который он назвал Oak.
К лету 1992 года команда могла продемонстрировать часть новой платформы, включая Green OS, язык Oak, библиотеки и аппаратное обеспечение. Их первая демонстрация, 3 сентября 1992 года, была сосредоточена на создании устройства персонального цифрового помощника (PDA) Star7 с графическим интерфейсом и интеллектуальным агентом под названием «Duke», помогающего пользователю. В ноябре того же года Green Project был выделен, чтобы стать Firstperson, дочерней компанией Sun Microsystems, и команда переехала в Пало-Альто, штат Калифорния. Команда Firstperson заинтересовалась созданием высокоинтерактивных устройств, и когда Time Warner выпустил запрос на предложение (RFP) для телевизионной приставки, Firstperson изменил свою цель и ответил предложением о платформе телеприставки. Однако кабельная индустрия считала, что их платформа слишком сильно контролирует пользователя, поэтому Firstperson потерял свою ставку в SGI. Дополнительную сделку с компанией 3DO для телеприставки также не удалось реализовать. Не в состоянии вызвать интерес в телевизионной индустрии, компания была возвращена в Sun.
В июне и июле 1994 года - после трех дней мозгового штурма с Джоном Гейге (директором по науке для Sun), Гослингом, Джоем, Нотоном, Уэйном Розингом и Эриком Шмидт - команда перенацелила платформу для Всемирной паутины. Они поняли, что с появлением графических веб-браузеров, таких как Mosaic, интернет может перерасти в ту же самую интерактивную среду, которую они предусмотрели для кабельного телевидения. В качестве прототипа Naughton написал небольшой браузер, WebRunner, переименованный в HotJava в 1995 году.
В 1994 году Sun переименовала язык Oak на Java, так как Oak уже был занят. Хотя Java 1.0a стала доступна для скачивания в 1994 году, первый публичный выпуск Java 1.0a2 с браузером HotJava, появился 23 мая 1995 года, анонсированный на конференции SunWorld. Марк Андреессен, исполнительный вице-президент Netscape Communications Corporation, неожиданно объявил, что браузеры Netscape будут включать поддержку Java. 9 января 1996 года Sun Microsystems сформировали группу JavaSoft для разработки технологии.
В то время как Java-апплеты для веб-браузеров больше не являются наиболее популярным использованием Java (с ним, например, более используемым сервером) или самым популярным способом запуска кода на стороне клиента (использование JavaScript стало более популярным), это все еще возможно запустить Java (или другие JVM-языки, такие как Kotlin) в веб-браузерах, даже после того, как поддержка JVM была удалена из них, используя, например, TeaVM.
Язык Java претерпел несколько изменений после выпуска Java Development Kit (JDK) 1.0 от 23 января 1996 года, а также множество дополнений r классам и пакетам к стандартной библиотеки. Начиная с J2SE 1.4, Java Community Process (JCP) управляет эволюцией Java-языка. JCP использует запросы спецификации Java (JSR) для предложения и указания дополнений и изменений на платформе Java. Спецификация языка Java (JLS) используют для спецификации языка; изменения в JLS управляются в JSR 901.
19 февраля 1997 года Sun выпустила JDK 1.1. Основные дополнения включали в себя обширное обновление модели событий AWT, добавление внутренних классов на язык JavaBeans и JDBC.
J2SE 1.2 (8 декабря 1998 г.) - Codename Playground. Этот и последующие выпуски через J2SE 5.0 были переименованы в Java 2, а имя версии J2SE (Java 2 Platform, Standard Edition) заменило JDK, чтобы отличить базовую платформу от J2EE (Java 2 Platform, Enterprise Edition) и J2ME (платформа Java 2, Micro Edition). Основные дополнения включали отражение, структуру коллекций, Java IDL (реализация языка описания интерфейса для взаимодействия CORBA) и интеграцию графического API Swing в основные классы. Был выпущен Java-модуль, а JVM от Sun был оснащен компилятором JIT в первый раз.
J2SE 1.3 (8 мая 2000 г.) - Codename Kestrel. Заметные изменения включали в себя объединение HotSpot JVM (JVM HotSpot была впервые выпущена в апреле 1999 года для J2SE 1.2 JVM), JavaSound, Java Naming and Directory Interface (JNDI) и Java Debugger Architecture (JPDA).
J2SE 1.4 (6 февраля 2002 г.) - Codename Merlin. Это стало первым выпуском платформы Java, разработанной в рамках Java Community Process как JSR 59. Основные изменения включали регулярные выражения, моделируемые после Perl, цепочку исключений, интегрированный синтаксический анализатор XML и XSLT-процессор (JAXP) и Java Web Start.
J2SE 5.0 (30 сентября 2004 г.) - Codename Tiger. Первоначально он был пронумерован 1,5, который по-прежнему используется как внутренний номер версии. Разработанный под JSR 176, Tiger добавил несколько важных новых языковых функций, в том числе для каждого цикла, generics, autoboxing и var-args.
Java SE 6 (11 декабря 2006 г.) - Codename Mustang. Он был связан с менеджером базы данных и облегчает использование языков сценариев с помощью JVM (например, JavaScript с использованием Mozilla's Rhino engine). Начиная с этой версии, Sun заменила имя «J2SE» на Java SE и сбросила «.0» из номера версии. Другие существенные изменения включают поддержку подключаемых аннотаций (JSR 269), много улучшений графического интерфейса пользователя, включая собственные усовершенствования пользовательского интерфейса для поддержки внешнего вида Windows Vista и улучшения интерфейса Java Platform Debugger Architecture (JPDA) и JVM Tool Interface для лучшего мониторинга и поиск проблемы.
Java SE 7 (28 июля 2011 г.) - Codename Dolphin. Эта версия разработана под JSR 336. Он добавил много небольших изменений языка, включая строки в коммутаторе, try-with-resources и тип вывода для создания общего экземпляра. JVM был расширен с поддержкой динамических языков, в то время как библиотека классов была расширена среди других с помощью структуры join / fork, улучшенной библиотеки ввода-вывода файлов и поддержки новых сетевых протоколов, таких как SCTP. Обновление Java 7 76 было выпущено в январе 2015 года.
Java SE 8 (18 марта 2014 г.). Значительные изменения включают поддержку уровня лямбда-выражений (закрытий) на уровне языка и методы по умолчанию, среду исполнения JavaScript проекта Nashorn, новый API дат и времени, созданный Joda Time, и удаление PermGen. Эта версия официально не поддерживается на платформе Windows XP. Однако из-за конца жизненного цикла Java 7 это рекомендуемая версия для пользователей XP. Ранее для Windows XP SP3 был описан только неофициальный метод ручной установки. Это относится к JDK8, платформе разработки для Java, которая также включает полностью функционирующую среду выполнения Java. Java 8 поддерживается в Windows Server 2008 R2 с пакетом обновления 1 (SP1), Windows Vista SP2 и Windows 7 с пакетом обновления 1 (SP1), Ubuntu 12.04 LTS и выше (и некоторые другие ОС).
Java SE 9 и 10 имели более высокие требования к системе, то есть Windows 7 или Server 2012 (и минимальный сертификат веб-браузера повышался до Internet Explorer 11 или других веб-браузеров), а Oracle потеряла 32-разрядную совместимость для всех платформ, то есть только Oracle «64 -битные виртуальные машины Java (JVM) сертифицированы».
Java SE 11 был выпущен в сентябре 2018 года, первый выпуск LTS, так как была принята модель быстрого выпуска, начиная с версии 9. Впервые OpenJDK 11 представляет собой полный исходный код платформы Java под лицензией GNU General Public License, а Oracle все еще с двойным лицензированием с дополнительной лицензией на собственность, нет никаких различий кода или модулей, уникальных для лицензированной версии. Возможности Java 11 включают в себя две новые реализации сборщика мусора, Flight Recorder для отладки глубоких проблем, новый HTTP-клиент, включая поддержку WebSocket.
В дополнение к языковым изменениям значительные изменения были внесены в библиотеку классов Java на протяжении многих лет, что выросла с нескольких сотен классов в JDK 1.0 до более чем трех тысяч в J2SE 5.0. Все новые API, такие как Swing и Java 2D, развились, и многие из оригинальных классов и методов JDK 1.0 устарели.
Заключение
Компьютеризация в современном мире идет полным ходом и языки программирования одна из ведущих сил в этом. Они развивались по ходу развития вычислительного оборудования, но иногда и сами подгоняли развитие техники. Но они всегда старались идти в ногу друг с другом. Это продолжается и посей день, спустя уже более 40 лет, и не собирается останавливаться.
Список литературы
- Bjarne Stroustrup ‘A History of C++: 1979-1991’ AT&T Bell Laboratories Murray Hill
- Dennis M. Ritchie ‘The Development of the C Language’ Bell Labs/Lucent Technologies Murray Hill
- B. Anderson, `Type syntax in the language C: an object lesson in syntactic innovation,' SIGPLAN Notices 15 (3), March, 1980, pp. 21-27.
- J. R. Bell, `Threaded Code,' C. ACM 16 (6), pp. 370-372.
- F. J. Corbato, M. Merwin-Dagget, R. C. Daley, `An Experimental Time-sharing System,' AFIPS Conf. Proc. SJCC, 1962, pp. 335-344.
- S. C. Johnson and B. W. Kernighan, `The Programming Language B,' Comp. Sci. Tech. Report #8, AT&T Bell Laboratories (January 1973).
- B. W. Kernighan and D. M. Ritchie, The C Programming Language, Prentice-Hall: Englewood Cliffs, NJ, 1978. Second edition, 1988.
- T. MacDonald, `Arrays of variable length,' J. C Lang. Trans 1 (3), Dec. 1989, pp. 215-233.
- R. M. McClure, `TMG—A Syntax Directed Compiler,' Proc. 20th ACM National Conf. (1965), pp. 262-274.
- M. D. McIlroy, `Macro Instruction Extensions of Compiler Languages,' C. ACM 3 (4), pp. 214-220.
- M. Richards and C. Whitbey-Strevens, BCPL: The Language and its Compiler, Cambridge Univ. Press: Cambridge, 1979.
- D. M. Ritchie, `The Evolution of the UNIX Time-sharing System,' AT&T Bell Labs. Tech. J. 63 (8) (part 2), Oct. 1984.
- D. M. Ritchie, `Variable-size arrays in C,' J. C Lang. Trans. 2 (2), Sept. 1990, pp. 81-86.
- Snyder, A Portable Compiler for the Language C, MIT: Cambridge, Mass., 1974.
- J. E. Stoy and C. Strachey, `OS6—An experimental operating system for a small computer. Part I: General principles and structure,' Comp J. 15, (Aug. 1972), pp. 117-124.
- B. Stroustrup, The C++ Programming Language, Addison-Wesley: Reading, Mass., 1986. Second edition, 1991.
- A. van Wijngaarden, B. J. Mailloux, J. E. Peck, C. H. Koster, M. Sintzoff, C. Lindsey, L. G. Meertens, R. G. Fisker, `Revised report on the algorithmic language Algol 68,' Acta Informatica 5, pp. 1-236.
- James Gosling, Frank Yellin, The Java Team, The Java Application Programming Interface, Volume 2: Window Toolkit and Applets, Addison-Wesley, 1996
- James Gosling, Frank Yellin, The Java Team, The Java Application Programming Interface, Volume 1: Core Packages, Addison-Wesley, 1996
- James Gosling, Henry McGilton, The Java language Environment: A white paper, Sun Microsystems, 1996
- James Gosling, David S. H. Rosenthal, Michelle J. Arden, The NeWS Book : An Introduction to the Network/Extensible Window System (Sun Technical Reference Library), Springer, 1989