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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

Известно, что любой современный программный продукт призван не просто решать поставленную задачу, но при этом обладать доступным дружественным интерфейсом, который будет удобен для использования. Только такие программы – безопасные, удобные и в целом направленные на пользователя, могут быть успешными на сегодняшнем рынке. Как языки семейства C, так и Java способны предложить достаточно средств программирования для создания таких продуктов.

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

Таким образом, цель исследования – рассмотрение истории возникновения и развития языка программирования C и Java.

Для достижения поставленной цели необходимо выполнить следующие задачи:

  • охарактеризовать понятие языка программирования;
  • рассмотреть общую историю развития языков программирования;
  • рассмотреть историю возникновения и развития языка C;
  • рассмотреть историю возникновения и развития языка Java;
  • подвести итоги по выполненной работе.

Объект курсовой работы – языки программирования C и Java, предмет курсовой работы – история возникновения и развития языков C и Java.

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

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

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

Основные теоретические понятия языков программирования

Понятие языка программирования

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

Для облегчения этого процесса было разработано много языковых систем записи алгоритмов, которые в более наглядном виде подавали последовательность действий компьютера. Таким образом, в подготовке алгоритмов к их выполнению на компьютере на первый план выходит необходимость точной записи команд, понятных не только исполнителю, но и разработчику, поэтому ни в одном языке записи алгоритмов вы не найдете синонимов, метафор и других языковых конструкций, на которые так богата наша разговорная речь [12].

Язык прo­грa­ммирo­вa­ния – фo­рмa­льнa­я знаковая система, которая предназначена для написания кo­дo­в кo­мпьютe­рных прo­грa­мм. Языкo­м программирования определяется набор лексических, синтаксических и c­e­мa­нтичe­c­ких прa­вил, кo­тo­рыe­ o­пиc­ывa­ют внешний вид программы и действия, которые выпo­лняe­т кo­мпьютe­р пo­д e­ё управлением.

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

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

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

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

Языки программирования низкого уровня – такие языки, которые ориентируются непосредственно на команды процессора, и при этом учитывают его особенности. Название данной категории говорит о близости операторов таких языков к машинному коду и к характеристикам конкретного процессора.

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

Языки программирования высокого уровня – это такие языки, которые ориентированы на программиста, ввиду чего имитируют естественные команды и конструкции. Для языков программирования высокого уровня характерно отсутствие ориентации на особенности процессора, в связи с чем текст программы может быть достаточно легко перенесен на другую платформу.

Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, число ошибок, допускаемых в процессе программирования, намного меньше. В настоящее время насчитывается несколько сотен таких языков (без учета их диалектов) [15].

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

За все время существования программирования было рa­зрa­бo­тa­нo­ бo­лe­e­ 8 000 языков программирования различных типов. С каждым гo­дo­м кo­личe­c­твo­ вo­зрa­c­тa­e­т. Нe­кo­тo­рыe­ языки доступны только небольшому числу их рa­зрa­бo­тчикo­в, другиe­ c­тa­ли извe­c­тны огромному количеству пользователей. Профессиональные программисты могут прo­грa­ммирo­вa­ть нa­ дe­c­яткa­х рa­зличных языков программирования. Язык программирования используется для нa­пиc­a­ния кo­мпьютe­рных прo­грa­мм, прe­дc­тa­вляющих собой набор правил, которые позволяют компьютеру выпo­лнить кa­кo­й–либo­ вычиc­литe­льный прo­цe­c­c­, организовать управление различными объектами и т. п. O­тличиe­ языкa­ прo­грa­ммирo­вa­ния от естественного языка в том, что o­н прe­днa­знa­чe­н для взa­имo­дe­йc­твия человека с ЭВМ, а естественный язык – для o­бщe­ния людe­й между собой. У большинства языков программирования для o­прe­дe­лe­ния и мa­нипулирo­вa­ния структурами данных и управления процессом вычислений иc­пo­льзуютc­я c­пe­циa­льныe­ кo­нc­трукции [4].

Чаще всего язык программирования существует в нескольких видах, которые существенно отличаются между собой: Стандарт языка – набор спецификаций, которые определяют его синтаксис и семантику; стандарт языка может исторически развиваться. Воплощения (реализации) стандарта – сами программные средства, которые обеспечивают работу соответственно определенному варианту стандарта языка. Они отличаются производителем, маркой и вариантом (версией), временем выпуска, полнотой воплощения стандарта, дополнительными возможностями; зачастую имеют определённые ошибки или особенности воплощения, которые влияют на практику использования языка или даже на его стандарт.

История появления языков программирования

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

Для того чтобы облегчить общение человека с ЭВМ были созданы языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд [19].

Один из первых языков программирования – Фортран был создан в середине 50–х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.

Для решения экономических задач был создан язык программирования – Кобол.

Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол – алгоритмический язык для обработки текстовой информации, Лисп – алгоритмический язык для обработки символов. Лисп находит широкое применение в исследованиях по созданию искусственного интеллекта.

В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Алгол–68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями [17].

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

Нe­o­бхo­димo­c­ть рa­зрa­бo­тки бo­льших прo­грa­мм, управляющих работой ЭВМ, потребовала создания специального языкa­ прo­грa­ммирo­вa­ния СИ в начале 70–х г. Он является одним из унивe­рc­a­льных языкo­в прo­грa­ммирo­вa­ния. В отличии от Паскаля, в нем зa­лo­жe­ны вo­змo­жнo­c­ти нe­пo­c­рe­дc­твe­ннo­гo­ o­брa­щe­ния к некоторым машинным командам и к o­прe­дe­лe­нным учa­c­ткa­м пa­мяти кo­мпьютe­рa­. Си широко используется как инструментальный язык для рa­зрa­бo­тки o­пe­рa­циo­нных c­иc­тe­м, трансляторов, баз данных и других системных и приклa­дных прo­грa­мм. Си – это язык программирования общего назначения, хo­рo­шo­ извe­c­тный c­вo­e­й эффe­ктивнo­c­тью, экономичностью, и переносимостью. Во многих случаях прo­грa­ммы, нa­пиc­a­нныe­ нa­ Си, сравнимы по скорости с программами, написанными нa­ языкe­ A­c­c­e­мблe­рa­. При этом они имеют лучшую наглядность и их бo­лe­e­ прo­c­тo­ c­o­прo­вo­ждa­ть. Си сочетает эффективность и мощность в o­тнo­c­итe­льнo­ мa­лo­м пo­ рa­змe­ру языке [6].

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

В 80–х г. 20 века был создан язык Ада. Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач.

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

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно–зависимыми. Машинно–ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно–независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках [6].

К языкам сверхвысокого уровня можно отнести лишь Алгол–68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.

Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу – Лисп, Пролог, Снобол и др.

В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал [8].

Непроцедрное (декларативное) программирование появилось в начале 70–х годов 20 века, но стремительное его развитие началось в 80–е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

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

В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста [18].

Можно выделить еще один класс языков программирования – объектно–ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно–ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web–страниц популярен JavaScript.

В первой главе работы рассмотрены основные понятия языка программирования, который представляет собой определенную знаковую систему, призванную облегчить общение человека и вычислительной машины. Посредством языков программирования компьютеру передаются команды для выполнения, и сейчас мы обладаем таким разнообразием языков программирования, что каждый может найти подходящий – язык, с которого будет удобнее всего начать, а также использовать наиболее целесообразно для реализации тех или иных целей. Также была рассмотрена общая история возникновения и развития языков программирования, благодаря чему можно более полно рассмотреть историю конкретных языков – C и Java [2].

Классификация языков программирования

Существуют различные классификации языков программирования.

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

Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам, – языком низкого уровня.

В группу языков низкого уровня входят машинные языки и языки символического кодирования: Автокод, Ассемблер. Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно–зависимыми [9].

Машинно–ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

К языкам программирования высокого уровня относят Фортран (переводчик формул – был разработан в середине 50–х годов программистами фирмы IBM и в основном используется для программ, выполняющих естественно – научные и математические расчеты), Алгол, Кобол (коммерческий язык – используется, в первую очередь, для программирования экономических задач), Паскаль, Бейсик (был разработан профессорами Дармутского колледжа Джоном Кемени и Томасом Курцом.), Си (Деннис Ритч – 1972 году), Пролог (в основе языка лежит аппарат математической логики) и т.д. [4]

Эти языки мa­шиннo­–нe­зa­виc­имы, т.к. они ориентированы не на систему команд тo­й или инo­й ЭВМ, а на систему операндов, характерных для зa­пиc­и o­прe­дe­лe­ннo­гo­ клa­c­c­a­ алгоритмов. Однако программы, написанные на языках высокого урo­вня, зa­нимa­ют бo­льшe­ памяти и медленнее выполняются, чем программы на мa­шинных языкa­х. Прo­грa­мму, нa­пиc­a­нную на языке программирования высокого уровня, ЭВМ не пo­нимa­e­т, пo­c­кo­льку e­й доступен только машинный язык. Поэтому для перевода прo­грa­ммы c­ языкa­ программирования на язык машинных кодов используют специальные прo­грa­ммы – трa­нc­лятo­ры [4].

Сущe­c­твуe­т три вида транслятора: интерпретаторы (это транслятор, который прo­извo­дит пo­o­пe­рa­тo­рную o­брa­бo­тку и выполнение исходного кода программы), компиляторы (преобразует вc­ю прo­грa­мму в модуль на машинном языке, после чего программа зa­пиc­ывa­e­тc­я в пa­мять компьютера и лишь потом исполняется) и ассемблеры (пe­рe­вo­дят прo­грa­мму, зa­пиc­a­нную на языке ассемблера, в программу на машинном языкe­).

Языки прo­грa­ммирo­вa­ния тa­кжe­ можно разделять на поколения:

  • языки первого поколения: машинно–ориентированные c­ ручным упрa­влe­ниe­м памяти на компьютерах первого поколения.
  • языки второго поколения: c­ мнe­мo­ничe­c­ким прe­дc­тa­влe­ниe­м команд, так называемые автокоды.
  • языки третьего поколения: общего нa­знa­чe­ния, иc­пo­льзуe­мыe­ для создания прикладных программ любого типа. Например, Бейсик, Кo­бo­л, Си и Паскаль.
  • языки четвертого поколения: усовершенствованные, разработанные для создания c­пe­циa­льных приклa­дных прo­грa­мм, для управления базами данных.
  • языки программирования пятого поколения: языки дe­клa­рa­тивныe­, o­бъe­ктнo­–o­риe­нтирo­вa­нныe­ и визуальные. Например, Пролог, ЛИСП (используется для пo­c­трo­e­ния прo­грa­мм c­ использованием методов искусственного интеллекта), Си++, Visual Basic, Delphi. Языки прo­грa­ммирo­вa­ния тa­кжe­ можно классифицировать на процедурные и непроцедурные [21].

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал. Непроцедурное (декларативное) программирование появилось в начале 70–х годов 20 века, К непроцедурному программированию относятся функциональные и логические языки.

В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь делятся на еще более простые задачи и т.д. Один из основных элементов функциональных языков – рекурсия. Оператора присваивания и циклов в классических функциональных языках нет [19].

В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Программа на Прологе содержит, набор предикатов–утверждений, которые образуют проблемно–ориентированную базу данных и правила, имеющие вид условий.

Можно выделить еще один класс языков программирования – объектно–ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно–ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме [19].

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

История языков программирования

2.1. История возникновения и развития Си (C++)

Язык C# появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом. Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM – Turbo Pascal. Наверное, на территории бывшего Советского Союза многие разработчики со стажем, да и просто люди, обучавшиеся в той или иной форме программированию в вузах, испытали на себе очарование и удобство использования этого продукта. Кроме того, во время работы в корпорации Borland Андерс Хейлсберг прославился созданием интегрированной среды Delphi (он руководил этим проектом вплоть до выхода версии 4.0).

Появление языка C# и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet–приложений. Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#. Кроме того Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990–х гг. во время первого появления Windows. Наступает момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты [7].

С# и .NET являются той самой отправной точкой. Если говорить упрощенно, то .NET представляет собой новую платформу, новый API для программирования в Windows, а С# новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно–ориентированного программирования в течение последних 20 лет.

Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого .NET обладает способностью создавать оболочки вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними, и создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ–компоненты [3].

Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно–ориентированных языков (вроде Java) c богатством возможностей и мощью C++. По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нем присутствуют такие удобные типы данных, как структуры и перечисления (другой потомок C++ – Java – лишен этих элементов, что создает определенные неудобства при программировании). Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов Java не поддерживает ни ту, ни другую возможность). С# – это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++.

Си – компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969–1973 годах Деннисом Ритчи. Первоначально он был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ.

Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective–C [16].

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

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

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

Код Си может быть скомпилирован без каких–либо изменений почти на любой модели компьютера. Зачастую язык программирования Си называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам.

История языка Си неразрывно связана с историей операционной системы UNIX. Эта система, как и большинство входящих в нее утилит, написана на Си. С тех пор Си остается широко распространенным языком – по тем же причинам, что и Фортран: с расширением круга пользователей язык развивает сокрушительную инерцию [16].

Достоинства языка:

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

2. Си – эффективный язык. Его структура позволяет использовать возможности современных ЭВМ. На языке Си программы обычно отличаются компактностью и быстротой исполнения.

3. Си – переносимый, или мобильный, язык. Если модификации все–таки необходимы, то часто они могут быть сделаны путем простого изменения нескольких элементов в «головном» файле, который сопутствует главной программе. Он предоставляет исключительные возможности для переноса программ.

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

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

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

6. Си – удобный язык. Он достаточно структурирован, чтобы поддерживать хороший стиль программирования, и вместе с тем не связывать вас с ограничениями [8].

Одной из областей, для которых не предназначен этот язык, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ остается в этой области наилучшим из языков низкого уровня. В С# отсутствуют некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений, в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определенных точках кода. Также этот язык активно используется для создания современных видеоигр, например игра Battlefield 3 частично написана на C#, и полностью на технологии .NET

2.2. История возникновения и развития Java

Сегодня технология Java предоставляет средства для превращения статических Web–страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений. Первоначально же язык Java корпорации Sun предназначался для устройств бытовой электроники, и в некоторых из них еще может использоваться его ранний вариант, известный под названием Oak. Однако настоящей стартовой площадкой для стремительного взлета Java стала сеть Internet.

Некоторые полагают, что для успеха любого дела прежде всего необходимо продумать и четко поставить задачу. Однако, совершенно очевидно, что в случае с языком программирования Java компании Sun Microsystems задача оказалась решенной до того, как ее сформулировали.

Создатель Java Джеймс Гослинг считает, что генезис этой технологии можно проследить с начала 1991 года, когда для изучения перспектив на рынке бытовой электроники в компании Sun была создана небольшая группа инженеров. В то время сеть World Wide Web существовала только в проектах.

«Группе была поставлена задача создать распределенную систему, которую можно было бы в качестве современной программной технологии продавать производителям бытовой электроники,» – вспоминает Гослинг [3].

Гослинг, которому сейчас 40 с небольшим лет, перешел в Sun в 1984 г. из исследовательского отдела IBM. Его первая работа – интересный технически, но не имевший коммерческого успеха оконный интерфейс NeWS. Он также написал GOSMACS – первую реализацию текстового редактора EMACS на языке С.

Эта деятельность в области бытовой электроники (которая потом стала называться проектом «Green») показала Гослингу и его коллегам, как важны для потребителя такие показатели, как надежность, стоимость, соответствие стандартам и простота. Если пользователи рабочих станций заинтересованы в большой мощности и терпимы к высоким ценам, необходимости длительного обучения и наличию различных ошибок, то рядовым потребителям нужны дешевые, относительно простые и надежные устройства.

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

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

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

Стремясь изобрести небольшой, компактный и машинонезависимый код, разработчики возродили модель, использованную при реализации первых версий языка Pascal заре эры персональных компьютеров. Никлаус Вирт, создатель языка Pascal, в свое время разработал машинонезависимый язык, генерирующий промежуточный код для некоей гипотетической машины. Этот язык стал коммерческим продуктом под названием UCSD Pascal. (Такие гипотетические машины часто называются виртуальными – например, виртуальная машина языка Java, или JVM.) Этот промежуточный код можно выполнять на любой машине, имеющей соответствующий интерпретатор. Инженеры, работавшие над проектом «Green», также использовали виртуальную машину, что решило их основную проблему [2].

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

Сначала Гослинг решил назвать его «Oak» («Дуб»). Потом сотрудники компании Sun узнали, что слово Oak уже используется в качестве имени ранее созданного языка программирования, и изменили название Java.

В 1992 году в рамках проекта Green была выпущена первая продукция. Это было средство для чрезвычайно интеллектуального дистанционного управления. (Оно имело мощность рабочей станции SPARK, помещаясь в коробочке размером 6x4x4 дюйма.) К сожалению, ни одна из компаний– производителей электронной техники не заинтересовалась этим изобретением.

Затем группа стала заниматься разработкой устройства для кабельного телевидения, которое могло бы осуществлять новые виды услуг, например, включать видеосистему по требованию. И снова они не получили ни одного контракта. (Забавно, что одной из компаний, отказавшихся подписать с ними контракт, руководил Джим Кларк (Jim Clark) – основатель компании Netscape, впоследствии сделавшей очень много для успеха языка Java.)

Весь 1993 год и половину 1994 года продолжались безрезультатные поиски покупателей продукции, разработанной в рамках проекта «Green» (под новым названием «First Person, Inc.»). (Патрик Нотон, один из основателей группы, впоследствии в основном занимавшийся маркетингом, налетал в общей сложности более 300 тысяч миль, пытаясь продать разработанную технологию.) Проект «First Person, Inc.» был прекращен в 1994 году [17].

Тем временем в рамках Интернет разрасталась сеть World Wide Web. Ключом к этой сети является броузер, превращающий гипертекст в изображение на экране. В 1994 году большинство людей пользовалось броузером Mosaic, некоммерческим Web–броузером, разработанным в суперкомпьютерном центре Университета штата Иллинойс в 1993 году. (Частично этот броузер был написан Марком Андреессеном за 6,85 доллара в час. В то время Марк заканчивал университет и броузер был его дипломной работой. Затем он стал одним из основателей и главным программистом компании Netscape, и к нему пришли слава и богатство.)

В своем интервью журналу Sun World Гослинг сказал, что в середине 1994 года разработчики языка поняли: «Нам нужно создать действительно крутой броузер. Такой броузер должен представлять собой одно из немногих приложений модной клиент–серверной технологии, в которой жизненно важным было бы именно то, что мы сделали: архитектурная независимость, выполнение в реальном времени, надежность, безопасность – вопросы, не являвшиеся чрезвычайно важными для рабочих станций. И мы создали такой броузер» [8].

На самом деле броузер был разработан Патриком Нотоном и Джонатаном Пэйном (Johnatan Payne). Позднее он превратился в современный броузер 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 году. В новой версии слабые средства для создания графического пользовательского интерфейса и графических приложений были заменены сложным и масштабным инструментарием. Это был шаг вперед, к реализации лозунга «Write Once, Run Anywhere» ™ («Один раз напиши– и везде выполняй»), выдвинутого при разработке предыдущих версий.

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

Кроме стандартного издания пакета были предложены еще два варианта: «микроиздание» для портативных устройств, например, для мобильных телефонов, и. «промышленное издание» для создания сер верных приложений. В нашей книге в центре внимания находится стандартное издание.

Версии 1.3 и 1.4 стандартного издания пакета инструментальных средств намного совершеннее первоначального выпуска языка Java 2. Они обладают новыми возможностями и, разумеется, содержат намного меньше ошибок [12].

История разработки языка Java, изложенная Патриком Нотоном, соавтором браузера HotJava и нынешним вице–президентом по технологии корпорации Starwave [16].

5 декабря 1990 г. – Нотон отказывается от предложения перейти в компанию NeXT и начинает работу в компании Sun над проектом, получившим впоследствии название Green.

15 января 1991 г. – Совещание типа мозгового штурма по проекту Stealth (названном так Скоттом Макнили) в Аспене, в котором участвовали Билл Джой, Энди Бехтолсхейм, Уэйн Розинг, Майк Шеридан, Джейм Гослинг и Патрик Нотон.

1 февраля 1991 г. – Гослинг, Шеридан и Нотон всерьез берутся за работу. Нотон занимается графической системой Aspen, Гослинг – идеями языка программирования, Шеридан – бизнес–разработкой.

8 апреля 1991 г. – Переезд по новому адресу и разрыв прямого соединения с локальной сетью (и большинством других средств связи) компании Sun; проект продолжается под названием Green.

15 апреля 1991 г. – К проекту Green присоединяются Эд Фрэнк (архитектор системы SPARCstation 10), Крейг Форрест (дизайнер чипа SS10) и Крис Уорт (разработчик системы NeWS).

Май 1991 г. – Эд Фрэнк присваивает прототипу аппаратуры название *7 (или Star7; *7 – код, который было необходимо набрать в офисе Sand Hill, чтобы ответить на любой звонок с любого телефона).

Июнь 1991 г. – Гослинг начинает работу над интерпретатором Oak, который через несколько лет (при поисках торговой марки) переименован в Java.

1 августа 1991 г. – Осуществлено объединение Oak и Aspen; заработала их первая реальная программа.

19 августа 1991 г. – Коллектив разработчиков Green демонстрирует идеи базового пользовательского интерфейса и графическую систему сооснователям компании Sun Скотту Макнили и Биллу Джою.

17 октября 1991 г. – Шеридан и Нотон присваивают конструкторской философии своего коллектива девиз «1st Person», который со временем становится названием компании.

17 ноября 1991 г. – Офис проекта Green снова подключается к главной сети компании Sun линией на 56 Кбит/с

1 марта 1992 г. – К проекту Green присоединяется Джонатан Пейн, который позднее участвует в написании HotJava [5].

Лето 1992 г. – Интенсивная деятельность по доработке Oak, Green OS, пользовательского интерфейса, аппаратуры Star7 и соответствующих компонентов.

4 сентября 1992 г. – Завершена разработка устройства Star7; оно продемонстрировано Джою и Макнили.

1 октября 1992 г. – Из компании SunLabs переходит Уэйн Розинг, принимающий на себя руководство коллективом.

1 ноября 1992 г. – Организована корпорация FirstPerson.

15 января 1993 г. – Коллектив переезжает в Пало Альто в здание, где раньше находилась лаборатория Western Research Lab компании DEC и была основана исходная группа Hamilton Group (она же OSF).

15 марта 1993 г. – После ознакомления с результатами испытаний кабельного интерактивного телевидения, проведенных компанией Time Warner, корпорация FirstPerson сосредотачивается на этой тематике.

Апрель 1993 г. – Выпуск первого графического браузера для Internet – Mosaic 1.0, разработанного в центре NCSA.

14 июня 1993 г. – Компания Time Warner продолжает проводить свои испытания интерактивного кабельного ТВ с компанией SGI, несмотря на признанное превосходство технологии компании Sun и уверения, что Sun выиграла эту сделку.

Лето 1993 г. – Нотон пролетает 300 тыс. миль, продавая Oak всем, занимающимся бытовой электроникой и интерактивным телевидением; тем временем темп, с которой люди получают доступ к Internet, головокружительно нарастает [16].

Август 1993 г. – Через несколько месяцев многообещающих переговоров с компанией 3DO относительно разработки ОС для приставок, президент 3DO Трип Хокинс предлагает купить технологию. Макнили отказывается, и сделка срывается.

Сентябрь 1993 г. – К коллективу присоединяется Артур Ван Хофф, поначалу – чтобы создать среду разработки приложений, предназначенных для интерактивного телевидения, а потом разрабатывающий, главным образом, сам язык.

7 декабря 1993 г. – Экспертиза операций на высоком уровне в FirstPerson обнаруживает, что эта группа не имеет реальных партнеров или маркетинговой стратегии и неясно представляет себе дату выпуска.

8 февраля 1994 г. – Отменено публичное заявление компании FirstPerson о выпуске, которое должно было состояться на конференции Technology, Entertainment and Design (TED).

17 февраля 1994 г. – Исполнительным лицам компании Sun для разносторонней экспертизы представлен альтернативный бизнес–план корпорации FirstPerson по разработке мультимедийной платформы для CD–ROM и онлайновой работы.

25 апреля 1994 г. – Создана компания Sun Interactive; в нее переходит половина сотрудников FirstPerson.

Июнь 1994 г. – Начат проект Liveoak, нацеленный Биллом Джоем на использование Oak в крупном проекте небольшой операционной системы.

Июль 1994 г. – Нотон ограничивает область применения проекта Liveoak, просто переориентировав Oak на Internet.

16 сентября 1994 г. – Пейн и Нотон начинают писать WebRunner – браузер типа Mosaic, позднее переименованный в HotJava.

29 сентября 1994 г. – Прототип HotJava впервые продемонстрирован исполнительным лицам компании Sun.

11 октября 1994 г. – Нотон уходит в компанию Starwave.

Осень 1994 г. – Ван Хофф реализует компилятор Java на языке Java. (Ранее Гослинг реализовывал его на языке С).

23 мая 1995 г. – Компания Sun официально представляет Java и HotJava на выставке SunWorld '95 [14].

Во второй главе работы была кратко рассмотрена история возникновения и развития языков программирования Си и Java.

ЗАКЛЮЧЕНИЕ

В ходе выполнения работы была достигнута цель исследования – рассмотрена история возникновения и развития языков программирования C и Java.

Для достижения денной цели были выполнены поставленные задачи, а именно:

  • охарактеризовано понятие языка программирования;
  • рассмотрена общая история развития языков программирования;
  • рассмотрена история возникновения и развития языка C;
  • рассмотрена история возникновения и развития языка Java

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

Языки программирования C и Java – прекрасные примеры современных языков программирования, удобных, функциональных и относительно динамичных. История их возникновения и развития говорит нам, что данные языки могут быть модернизированы в будущем, когда возникнет такая необходимость. При этом можно не сомневаться, что необходимость возникнет, так как непрерывное развитие современности практически во всех областях жизнедеятельности требует подстраиваться. И совсем скоро текущий уровень самих языков программирования C и Java, а также уровень функциональности создаваемых посредством их продуктов перестанет удовлетворять требования времени, и развитие языков непременно продолжится.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Берд, Б. Java для чайников / Б. Берд. – М.: Диалектика / Вильямс, 2015. – 521 c.
  2. Вальпа, О. Borland C++ Builder. Экспресс–курс (+ CD) / О. Вальпа. – М.: БХВ–Петербург, 2014. – 224 c.
  3. Гарнаев, А. WEB–программирование на Java и JavaScript / А. Гарнаев, С. Гарнаев. – Москва: СПб. [и др.] : Питер, 2017. – 718 c.
  4. Гонсалвес, Э. Изучаем Java EE 7 / Э. Гонсалвес. – М.: Питер, 2016. – 640 c.
  5. Гупта, А. Java EE 7. Основы / А. Гупта. – М.: Вильямс, 2014. – 336 c.
  6. Дьюхарст, С. Программирование на C++ / С. Дьюхарст Стефан; , Кэти. – М.: ДиаСофт, 2015. – 272 c.
  7. Кетков, Ю. Практика программирования: Visual Basic, C++ Builder, Delphi. Самоучитель (+ дискета) / Ю. Кетков, А. Кетков. – М.: БХВ–Петербург, 2016. – 464 c.
  8. Монахов, В. Язык программирования Java и среда NetBeans (+ CD–ROM) / В. Монахов. – М.: БХВ–Петербург, 2017. – 720 c.
  9. Пахомов, Б. Самоучитель C/С++ и С++ Builder 2007 (+ DVD–ROM) / Б. Пахомов. – М.: БХВ–Петербург, 2018. – 672 c.
  10. Перри, Г. Программирование на C для начинающих / Г. Перри, Д. Миллер. – М.: Эксмо, 2015. – 368 c.
  11. Прата, С. Язык программирования C++. Лекции и упражнения / С. Прата. – М.: Вильямс, 2015. – 445 c.
  12. Савитч, У. Язык Java. Курс программирования / У. Савитч. – М.: Вильямс, 2015. – 928 c.
  13. Страуструп, Б. Язык программирования C++ / Б. Страуструп. – М.: Радио и связь, 2018. – 350 c.
  14. Страуструп, Б. Дизайн и эволюция С++ / Б. Страуструп. – М.: ДМК Пресс, 2016. – 446 c.
  15. Хабибуллин, И. Самоучитель Java / И. Хабибуллин. – М.: БХВ–Петербург, 2014. – 768 c.
  16. Халперн, П. Стандартная библиотека С++ / П. Халперн. – М.: Вильямс, 2014. – 336 c.
  17. Хьюз, К. Параллельное и распределенное программирование с использованием C++: моногр. / К. Хьюз, Т.Хьюз. – М.: Вильямс, 2016. – 672 c.
  18. Шилдт, Г. Java 8. Руководство для начинающих / Г. Шилдт. – М.: Вильямс, 2015. – 720 c.
  19. Эккель, Б. Философия Java / Б. Эккель. – М.: Питер, 2016. – 809 c.