Файл: История возникновения и развития языка программирования Си (С++) и Java (Основы алгоритмизации).pdf
Добавлен: 31.03.2023
Просмотров: 241
Скачиваний: 1
– С#;
– С++;
- Java;
- Python;
- Swift;
– Visual Basic и прочие.
В результате описания первой части работы были рассмотрены основы алгоритмизации, основные понятия о написании программ, классификация языков программирования.
2. История развития языков программирования С и Java
2.1. ЯП С, главные характеристики и история развития
Язык Си восходит корнями к языку ALGOL (расшифровывается как ALGorithmic Language), который был создан в 1958 году совместно с комитетом Европейских и Американских учёных в сфере компьютерных наук на встрече в 1958 в Швейцарской высшей технической школе Цюриха. Язык был ответом на некоторые недостатки языка FORTRAN и попыткой их исправить.
Вдохновлённые языком ALGOL-60, Математическая лаборатория Кембриджского Университета совместно с Компьютерным отделом Лондонского университета создали в 1963 году язык CPL (Combined Programming Language).
Язык CPL посчитали сложным, и в ответ на это Мартином Ричардсоном был создан в 1966 году язык BCPL, основное предназначение которого заключалось в написании компиляторов. Сейчас он практически не используется, но в своё время из-за хорошей портируемости он играл важную роль.
BCPL послужил предком для языка Би, разработанного в 1969 в уже знакомой всем AT&T Bell Telephone Laboratories, не менее знакомыми Кеном Томпсоном и Денсом Ритчи.
Язык Би был использован для написания самых ранних версий UNIX, созданной как ответ на проект Multics, разрабатываемый всё в той же Bell Laboratories. Именно этот язык послужил непосредственным предшественником языка Си.
По поводу возникновения языка Си Питер Мойлан в своей книге «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, что привело к значительному скачку его популярности. В то же время Бьярн Страуструп начал разработку языка программирования, который бы сочетал в себе синтаксис популярного языка Си и концепцию объектно-ориентированного программирования, которая становилась всё более востребованной, так началась разработка языка С++.
В то время как Си набирал всё большую популярность, компиляторы для него выпускались различными фирмами, и зачастую программа, которая компилировалась на компиляторе одной фирме, не компилировалась на компиляторе другой. Всё это было связано с отсутствием чётко оговоренного стандарта языка Си. Все разработчики ориентировались на книгу Кернигана и Ритчи, но интерпретировали её по-своему.
Стандарт С99 сейчас в большей или меньшей степени поддерживается всеми современными компиляторами языка Си. В идеале, код написанный на Си с соблюдением стандартов и без использования аппаратно- и системно-зависимых вызовов, становился как аппаратно- так и платформенно-независимым кодом.
В 2007 году начались работы над следующим стандартом языка Си: С1x.В качестве особенностей языка С выделяют нюансы:
– необходимость в определении полностью всех переменных в любом месте программ;
– использование препроцессорных директив при быстром доступе к переменным;
– использование разных фигурных скобок для написания кода программ[3];
– обязательное применение функции main().
В С определены также все главные типы, наборы специальных механизмов для задания других пользовательских типов также на основании главных форматов.
Базовые типы разделены на такие:
Целочисленные:[5]
– long;
– Short;
– char;
– int.
Для указанных целых типов выполняют определение, будут ли они реализованы с знаком или же без.
Это выполняется также обычно прибавлением оператора под названием signed (unsigned).
В ранних версиях компьютеров все применяемые целые значения были также представлены модулями или отдельными битами.
В самых первых ПК размещали знак также вместе с младшими разрядами, а далее, когда они стали возможной для обработки разных параллельных процессов, знаки перемещали сразу в старший разряд, как в бумажной нотации. [6]
Но использование указанного представления, а именно для формата "знак + модуль" приводит также к значительному усложнению структуры для реализации вычислителя, ведь при отрицательных или положительных числах требовались очень различные методы их обработки.
Более удачным было далее представление всех неположительных элементов с взгляда в их дополнение, поскольку те же схемы могли сразу выполнить и сложение, и вычитание.
Разработчики также применяли дополнение сразу к единицы, аналогично –х получалось обычным инвертированием бита.[9]
Какие-то иные программисты выбирали дополнение к числу 2. Одним из недостатков первого метода было применение самых разных 2-х форм для представления ноля.
Сегодня в ПК используется новая численная арифметика дополнения к 2, что обычно является специальным кодом.
Для таких отрицательных чисел старший разряд будет равняться 1. Добавление ключевого слова под названием unsigned также обозначает, что код надо воспринимать как модуль числа.
А с применением signed-выражении такой же код будет также рассматривается как- 2.
Все такие имеющиеся числа при помощи дробной части могут быть представлены в разных формах. [9]
Вещественные типы:[5]
– long double;
– double;
– float.
Недостатком представления разной информации является и факт, что вся память теперь разделена на такие целые числа:
– мантисса;
– порядок.
Все это приведет к значительному сокращению практически всей численности разрядов, уменьшению точности.
Одно с чисел может быть представлено при использовании комбинаций разрядов.
Полное сравнение нескольких разных чисел надобно производить также в использовании диапазона чувствительности.
Но, надо помнить также и о том, что при вкладывании больших или же маленьких чисел, все с них помещаются непосредственно в машинное представление, в результате этого появляется риск потерять практически все основные младшие разряды и мантиссы, и порядка, то есть, точное значение поправки.[2]
Некоторые опытные разработчики программных средств шли часто на самые разнообразные хитрости, чтобы смягчить такие свойства: они могли отказываться и от хранения некоторых разрядов в мантиссе с увеличением точности, потом переходили к росту разрядной сетки чисел.
Но проблемы для округления остаются также и в наше время.
2.2. ЯП Java, главные характеристики и история развития
Рождению языка Java предшествовала довольно интересная история. В 1990 году разработчик ПО компании Sun Microsystems Патрик Нотон (Patrick Naughton) понял, что ему надоело поддерживать сотни различных интерфейсов программ, используемых в компании, и сообщил исполнительному директору Sun Microsystems и своему другу Скотту МакНили (Scott McNealy) о своем намерении перейти работать в компанию NeXT. МакНили, в свою очередь, попросил Нотона составить список причин своего недовольства и выдвинуть такое решение проблем, как если бы он был Богом и мог исполнить все, что угодно.
Нотон, хотя и не рассчитывал на то, что кто-то обратит внимание на его письмо, все же изложил свои претензии, беспощадно раскритиковав недостатки Sun Microsystems, в частности, разрабатываемую в тот момент архитектуру ПО NeWS.
К удивлению Нотона, его письмо возымело успех: оно было разослано всем ведущим инженерам Sun Microsystems, которые не замедлили откликнуться и высказать горячую поддержку своему коллеге и одобрение его взглядов на ситуацию в Sun Microsystems.
Обращение вызвало одобрение и у высшего руководства компании, а именно, у Билла Джоя (Bill Joy), основателя Sun Microsystems, и Джеймса Гослинга (James Gosling), начальника Нотона.
В тот день, когда Нотон должен был уйти из компании, было принято решение о создании команды ведущих разработчиков с тем, чтобы они делали что угодно, но создали нечто необыкновенное.
Команда из шести человек, с кодовым названием Green, ушла в самовольное изгнание, погрузившись в исследования бытовых устройств, таких как Nintendo Game Boys, устройств дистанционного управления.
Команда Green пыталась найти средство, с помощью которого можно было бы установить взаимодействие между этими устройствами.
Вскоре стало ясно, что такие электроприборы, как видеомагнитофоны, проигрыватели лазерных дисков, стереосистемы - все они были реализованы на разных процессорах.
Это означало, что если производитель захочет добавить телевизору или видеомагнитофону дополнительные функции или характеристики, он будет зажат в рамках средств, зашитых в аппаратное обеспечение. Эта проблема, в сочетании с ограниченностью памяти микросхем этих устройств, выдвинула новый подход к программированию ПО, который должен был стать ведущим на рынке бытовой электроники.
Команда приступила к разработке нового объектно-ориентированного языка программирования, который был назван Oak (дуб), в честь дерева, росшего под окном Гослинга.