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

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

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

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

Добавлен: 31.03.2023

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

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

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

ВВЕДЕНИЕ

Если задаться вопросом, с каким языком связано начало современной эпохи программирования, ответ будет прост - с языком С. Данный язык разработал Д.Ритч в 70х прошлого столетия для компьютера PDP 11 компании DEC (Digital Equipment Corporation), где применялась ОС UNIX. В то время именно язык С, несмотря на присутствие развитых определенных языков программирования, определил направление всего будущего программирования.

Язык С++ разработали в 80е годы в Bell Laboratories. По своей сути, С++ - это расширение языка С, его главное преимущество от своего предшественника, и от языков более высшего уровня в том, что в С++ присутствует поддержка объектно-ориентированного программирования, перегруженных операций, а также наличие возможности разработать полномасштабные windows-приложения.

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

Данные факторы способствовали пересмотру взглядов на сам процесс создания и распределения приложений на множестве ЭВМ различной архитектуры. Требования к переносимости создали необходимость отказаться от обычного принятого способа создания и доставки бинарных файлов, которые содержали машинные коды и, следовательно, были привязаны к определенной платформе. Тогда компания SunMicrosystems создает систему разработки Java, которая удовлетворяет всем вышеперечисленным требованиям.

Цель данной работы - ознакомиться с историей возникновения и развития языков программирования С и С++ и Java.

В ходе поставленной цели будут решены следующие задачи:

  • изучено программирование на С и С++: дано понятие языков программирования С и С++ их краткая история развития и базовые понятия;
  • изучено программирование Java: дано понятие языка программирования Java, их история и базовые понятия.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ С И С++

История и версии

C ++ - язык программирования общего назначения. Разработанный Бьярном Страуструпом в 1979 году. В рамках своей докторской диссертации Страуструп обнаружил, что Simula обладает важными функциями, которые помогут в создании большого программного обеспечения. Основной мотивацией было принятие распределенных вычислений в операционной системе UNIX в AT&T Bell Labs. Поэтому пришла в голову идея усовершенствовать существующий язык C с помощью Simula-подобных функций. C был выбран благодаря тому, что это язык общего назначения, быстрый, переносимый и широко используемый. В 1983 году он был переименован в C ++ как дополнение к языку C. C ++ добавил несколько функций, таких как:


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

В 1990 году был выпущен язык программирования C ++, а через несколько месяцев была реализована первая коммерческая реализация C ++. Другие новые функции были представлены как множественное наследование, абстрактные классы и статические функции-члены, а также функции-члены const. В 1991 году язык C ++ начинает развиваться так же, как и стандартная библиотека. Поэтому были добавлены другие важные функции, такие как шаблоны, исключения, пространства имен и приведение типов. Затем, в 1992 году, стандартные библиотеки C ++ представили библиотеку потокового ввода-вывода, которая предоставляла средства для замены традиционных функций C scanf и printf. C ++ стандартизирован международной организацией стандартизации (ISO) и опубликован в 2011 году.

C ++ считается надмножеством C и помогает в разработке многих других языков программирования, таких как: Perl, PC, Lua, Pike, Ada95, PHP, D, Flacon и Seed7. Например, Java является производной от C ++, но упрощается за счет избавления от многочисленных функций C ++, таких как указатели, множественное наследование и перегрузка операторов. С другой стороны, C # также построен из C ++. Он построен на синтаксисе и семантике C ++ и использует большинство функций C ++, таких как классы, передача параметров.

Язык программирования был первоначально стандартизирован в 1998 году как ISO / IEC 4882: 1998, а затем исправлен Техническим исправлением 2003 года.

Парадигмы C ++

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

Например:

double sqrt (double arg) {… // код для вычисления квадратного корня}

void f () {double root2 = sqrt (2); // ...}

Этот пример иллюстрирует использование процедурного программирования на C ++. Функция Sqrt содержит математические вычисления, которые будут использоваться для установки корневой переменной в функции f. В целом, функциональная парадигма C ++ подчеркивает использование функций, которые выдают результаты в зависимости от их входных параметров, а не в состоянии программы. Фактически, функции используются для создания порядка в лабиринте алгоритмов с использованием вызовов функций и определения того, как будет выполняться вся программа.


C ++ - объектно-ориентированный язык парадигмы. C ++ представляет понятия как объекты и связанные процедуры, называемые методами. Эти объекты C ++ обычно являются экземплярами классов и в основном используются для взаимодействия друг с другом при разработке компьютерных программ и системных приложений. C ++ разработан в соответствии с подходом объектно-ориентированной модульности путем определения классов, структур, объектов, методов и интерфейсов. Действительно, основным блоком для объектно-ориентированной парадигмы в C ++ является класс. Последний определяет элементы данных, которые определяют состояние объекта и способы управления этими объектами. Еще одна особенность C ++, которая продвигает ОО, - это инкапсуляция и сокрытие информации путем введения интерфейсов и видимых модификаторов доступа: общедоступных, приватных и защищенных. Кроме того, C ++ способствует модульности, поддерживая наследование, что облегчает поддержку и повторное использование кода, и расширяет компоненты по мере необходимости, определяя новые подклассы с конкретными реализациями.

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

Сильные и слабые стороны и области применения C ++

C ++ - это язык высокого уровня, который проще в использовании, чем другие формы языков низкого уровня (т.е. ассемблер). Хотя C ++ занимает гораздо больше места, чем языки низкого уровня, его легче изучать и использовать, и он совместим с кодом C. Он поддерживает сочетание парадигм: процедурный, объектно-ориентированный, общий и функциональный. Он поддерживает функцию однократной компиляции и повсеместного выполнения, которая позволяет совместно использовать общую кодовую базу разным аппаратным средствам с разными границами ЦП и памяти. C ++ хорошо поддерживает универсальное программирование, а также поддерживает классы, структуры и объединения и размещает их в куче. Программы на C ++ в целом имеют большую производительность по сравнению с другими языками высокого уровня, такими как Java и CSharp. Поэтому они являются хорошими кандидатами для разработки операционных систем, драйверов устройств, встроенного программного обеспечения благодаря языку C-Embedded, высокопроизводительным клиентским и серверным приложениям и видеоиграм.


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

Стратегии оценки. Составление и выполнение

Процесс компиляции C ++ состоит из четырех этапов, как показано на следующем рисунке:

  

Рисунок 1: Процесс компиляции C ++

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

Стратегия набора текста:

C ++ - это слабая стратегия статической типизации, поскольку она допускает небезопасные преобразования точно так же, как это делает C. C ++ является слабо типизированным языком, поскольку он предоставляет указатели, поскольку они представляют собой числовые значения, которые будут использоваться для обхода системы типов. C ++ - это статический язык типизации, поскольку он поддерживает объекты с предопределенной функциональностью. C ++ статическая типизация добавляет больше ограничений для компилятора. Однако, как и C, C ++ не может проверять все, пока работает программа. C ++ смешивает слабо типизированный код C со статическим типом C ++, чтобы обойти все проверки типов. Чтобы продемонстрировать типизацию C ++, будет использован следующий пример: Мы создаем объект person и проверяем, чтобы функция getName всегда возвращала строку чьего-либо имени.


class Person {

public string getName() {

return "Stephane";

}

}; Теперь мы можем получить наш объект следующим образом:

Person p;

printf("The name is %s\n", p.getName().c_str());

Управление памятью:

В C ++ можно управлять памятью, используя различные методы для повышения производительности программы. В C ++ поддерживается четыре (4) метода. Статическое распределение памяти используется для назначения статической переменной значения во время компиляции. Ключевое слово static используется, и выделенное хранилище фиксируется на протяжении всего выполнения программы. Еще одна техника, используемая в C ++ - автоматическое распределение памяти. В этом методе автоматическая переменная объявляется в пределах имени класса. Когда этой переменной присваивается значение, она сохраняется в выделенном стеке. Когда объявление выполняется, вызывается конструктор. Затем деструктор вызывается, когда необходимо освободить выделение памяти. Метод динамического распределения памяти состоит из ручного управления памятью программным разработчиком. Динамическое выделение памяти осуществляется с помощью ключевых слов new и delete, которые очень похожи на malloc и свободные ключевые слова C, которые также поддерживаются в C ++. Последний метод, используемый C ++ для управления памятью, - сборка мусора. Сборка мусора Bohem, известная как Bohem GC, используется в C ++. Это позволяет коду финализации вызываться при сборе объекта. Благодаря этому сборщику мусора разработчик может обнаружить утечки памяти и двойное распределение.

Доступные компиляторы / IDE В C ++

Есть несколько интегрированных сред разработки, которые могут быть встроенным компилятором или отдельным модулем компилятора. Некоторые из этих компиляторов / IDE можно обобщить следующим образом:

  • Qt - это кроссплатформенная прикладная среда, широко используемая для разработки графических пользовательских интерфейсов C ++, а также командной строки и консолей. Первоначально он был разработан Nokia, а затем поддерживается компанией Digia. Qt использует язык C ++ в сочетании с генератором кода (Meta Object Compiler) для обогащения языка. Он работает на нескольких настольных и мобильных платформах. Последняя версия Q5 была выпущена 19 декабря 2012 года. Используя Qt, вы можете создавать сильные приложения C ++, которые могут работать на разных платформах без изменения кода. Он включает в себя модуль Qt GUI, который предоставляет классы для поддержки системной интеграции, обработки событий, OpenGL, 2D-графики и обработки изображений. Кроме того, Qt предоставляет функцию перетаскивания, в которой пользователь выбирает компонент GUI и захватывает его, перетаскивая его в форму, что способствует простой и быстрой разработке GUI. Кроме того, Qt имеет функции без графического интерфейса, такие как доступ к базе данных SQL, синтаксический анализ XML, управление потоками и поддержка сети. Qt доступен для операционных систем Windows, Mac OS и Linux.
  • GTK + - это многоплатформенное решение, используемое для создания графических пользовательских интерфейсов. Он написан на C и предназначен для поддержки широкого спектра языков, таких как C ++. Наряду с Qt, это один из самых популярных наборов инструментов. GTK + был изначально разработан и использовался в программе манипуляции изображениями GNU (GIMP) для замены инструментария Motif. Это происходит из GTK, и это бесплатный графический редактор программного обеспечения. Одной из лучших характеристик GTK + является простота синтаксиса. Все предопределено в виде библиотек, и нам просто нужно их использовать. Это позволяет создавать графический интерфейс с несколькими строками кода, что повышает удобочитаемость и облегчает исправление ошибок и обслуживание. Код GTK + является переносимым (пишите один раз, работайте где угодно), и он не дает разработчикам C / C ++ обращаться к Java и дает им реальную альтернативу изучению совершенно нового мультиплатформенного языка. Он доступен для операционных систем Windows, Mac OS и Linux.
  • WxWidgets - это библиотека C ++, которая позволяет разработчикам создавать приложения с графическим интерфейсом для Windows, Mac OS X и Linux, а также компилировать и запускать их код на этих платформах с минимальным изменением кода. Он использует собственный API платформы и, следовательно, дает приложениям по-настоящему естественный вид. WxWidgets, созданный Джулианом Смартом в Эдинбургском университете в 1992 году, является бесплатным и открытым исходным кодом, распространяемым по лицензии wxWidgets. Он поддерживает большое количество компиляторов, таких как Microsoft Visual Studio, Borland C ++, Cygwin и MinGW. Библиотека WxWidgets упрощает программирование графического интерфейса и может сократить время разработки с помощью мощных и простых в использовании классов . Он имеет редактор WYSIWYG под названием wxFormBuilder, который облегчает создание пользовательских интерфейсов и проектирует рамки, панели, панели инструментов и строки меню во время редактирования, а затем автоматически генерирует эквивалентный код в файле позади. Он доступен для операционных систем Windows, Mac OS и Linux.