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

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

Содержание:

ВВЕДЕНИЕ

Если задаться вопросом, с каким языком связано начало современной эпохи программирования, ответ будет прост - с языком С. Данный язык разработал Д.Ритч в 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.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ JAVA:

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

Java - это преимущественно статический типизированный язык программирования (хотя он также поддерживает динамическую типизацию для некоторых концепций ООП, таких как полиморфизм), разработанный Джеймсом Гослингом, Майком Шериданом и Патриком Нотоном в июне 1991 года в Sun Microsystems. На многие конструкции влияли его аналоги в языках программирования C и C ++. Хотя на него сильно влияли C и C ++, он по-своему отличался. Он устранил указатели, так как его дизайнеры думали, что разработчики используют указатели не так, как предполагалось. Кроме того, он избавился от головной боли при управлении памятью, поскольку ввел автоматическое управление памятью с введением сборки мусора . Еще одна особенность, благодаря которой Java выделялась среди своих конкурентов, заключалась в том, что она поддерживала философию WORA (то есть «Писать один раз в любом месте») с введением виртуальной машины Java . В результате все, что требуется системе, - это JVM для запуска кода Java. Когда он был представлен публике, он имел огромный API, который включал Threading, Networking, GUI API и т. Д. , который был настолько популярен среди сообщества разработчиков, что привело к тому, что java вышла на 2-е место в чистом виде. количество разработчиков.  

Есть много версий Java, и они следующие:

  • Java SE (Java Standard Edition): эта редакция Java включает только основной язык программирования, который включает JVM и стандартную библиотеку. Последней стабильной версией Java SE является 8.
  • Java EE (Java Enterprise Edition): эта редакция Java включает в себя Java SE, а также другие функции, необходимые для веб-разработки, подключения к базам данных и т. Д. Последней стабильной версией Java EE является 7.
  • Java ME (Java Micro Edition): это издание Java для мобильных устройств. Эта версия Java оптимизирована для работы на мобильных устройствах, чем Java SE. Последняя стабильная версия Java ME - 3.4.

Парадигмы Java:

Java является отличным языком ООП. Он предлагает инкапсуляцию с помощью модификаторов доступа, таких как закрытый, общедоступный, защищенный и т. Д., Что значительно повышает надежность и безопасность кода. Но по сравнению с другими языками программирования, такими как C ++ и Python, Java не поддерживает множественное наследование классов, хотя поддерживает множественное наследование через интерфейсы. У Java также есть все характеристики, предписанные Структурной и Императивной парадигмами. Тем не менее, странная вещь в Java состоит в том, что, хотя она не поддерживает оператор «goto», который в принципе соответствует характеристикам языка структурного программирования, «goto» по-прежнему является ключевым словом в java.

Java также поддерживает процедурное программирование. Но java не позволяет нам иметь глобальные переменные или методы вне класса, что можно отнести к одной из целей его разработки (т.е. Оно должно быть «простым, объектно-ориентированным и знакомым»). Таким образом, Java - это больше язык ООП, чем все остальное.

Помимо вышеупомянутых парадигм, Java также поддерживает рефлексивную парадигму с API, доступными для доступа / создания / изменения / добавления членов класса. Java также является одним из немногих языков программирования, который поддерживает создание действительно многозадачных приложений, поскольку имеет огромный API, который поддерживает создание / управление / взаимодействие между потоками и процессами. Он также предлагает множество структур данных, которые поддерживают атомарный доступ, а также предоставляет множество утилит, необходимых для синхронизации потоков / процессов, таких как (Locks, Mutex, Semaphore, Monitor).

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

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

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

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

Самый важный недостаток заключается в том, что, поскольку он не является языком, исполняемым по-умолчанию, его производительность немного ниже по сравнению с другими языками, исполняемыми по-умолчанию, такими как C, C ++. Объем памяти Java также немного велик, и, следовательно, из-за вышеперечисленных недостатков Java не подходит для систем реального времени.

Компиляция, выполнение и управление памятью

Java-код компилируется в байт-код Java-компилятором и выполняется на JVM. В результате скорость выполнения была чрезвычайно низкой по сравнению с другими языками, такими как C ++. Но с появлением JIT-компилятора скорость выполнения была значительно улучшена, и в некоторых сценариях она почти соответствовала скорости выполнения C ++.

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

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

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

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

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

Доступные компиляторы / IDE для Java,

  • BlueJ — интерактивная среда разработки на языке Java, созданная в основном для использования в обучении, но также подходящая для разработки небольших программ. «BlueJ» создана для начального обучения программированию специалистами британского Университета Кента, австралийского Университета Монаша и компании Sun Microsystems.  
  • Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ (см. ниже). Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.
  • NetBeans IDE — свободная интегрированная среда разработки приложений (IDE) на языках программирования Java, Python, PHP, JavaScript, C, C++ и ряда других. Проект NetBeans IDE поддерживается и спонсируется компанией Oracle, однако разработка NetBeans ведётся независимым сообществом разработчиков-энтузиастов (NetBeans Community) и компанией NetBeans Org.
  • Xcode — интегрированная среда разработки (IDE) программного обеспечения для платформ macOS, iOS, watchOS и tvOS, разработанная корпорацией Apple. Первая версия выпущена в 2003 году. Xcode включает в себя большую часть документации разработчика от Apple и Interface Builder — приложение, использующееся для создания графических интерфейсов.Пакет Xcode включает в себя изменённую версию свободного набора компиляторов GNU Compiler Collection и поддерживает языки C, C++, Objective-C, Objective-C++, Swift, Java, AppleScript, Python и Ruby с различными моделями программирования, включая (но не ограничиваясь) Cocoa, Carbon и Java. Сторонними разработчиками реализована поддержка GNU Pascal, Free Pascal, Ada, C#, Perl, Haskell и D. Пакет Xcode использует GDB в качестве back-end’а для своего отладчика.

РАЗЛИЧИЯ МЕЖДУ C ++ И JAVA

C ++ и Java оба являются объектно-ориентированными языками программирования, однако языки C ++ и Java во многом отличаются друг от друга. C ++ был реализован для разработки приложений и систем и является расширением языка Си. Наряду с функциями процедурного языка в C ++ добавлена ​​поддержка функций объектно-ориентированного программирования., обработка исключений, общее программирование. Java имеет функции интерпретатора для систем печати, которые позднее поддерживали сетевые вычисления. Он построен на виртуальной машине, которая очень безопасна и переносима по своей природе. Он объединен с обширной библиотекой, реализованной для поддержки абстракции существующей платформы. Основной целью разработки Java была разработка простого в использовании и широко доступного языка программирования.

Давайте подробнее рассмотрим C ++ и Java:

C ++ и Java имеют разные цели дизайна. Как и C ++, Java также является объектно-ориентированным языком программирования со статистической типизацией и аналогичным синтаксисом. Java также имеет обширную документацию, известную как Javadoc.

C ++ использует указатели, в то время как Java не использует указатели. Java использует концепцию «ограниченных указателей». Программа на C ++ запускается, а компиляция выполняется с использованием ее компилятора. Компилятор в C ++ преобразует исходный код в язык машинного уровня, что делает C ++ зависимым от платформы языком . В Java исходный код Java сначала преобразуется в байт-код во время компиляции. Затем этот байт-код интерпретируется интерпретатором и средой выполнения для создания выходных данных, которые делают Java независимым от платформы языком.

C ++ не обеспечивает встроенную поддержку потоков, тогда как Java поддерживает потоки неявно. Хотя в последней реализации C ++ 11 он также поддерживает потоки. Java во многом похожа на C ++, но не включает в себя сложные понятия, такие как структуры, перегрузка операторов, указатели, шаблоны, объединения и т. Д. Кроме того, Java не поддерживает условную компиляцию (# ifdef / # ifdef type).

Каждая сущность является объектом в Java, кроме основных типов. У Java есть единственная корневая иерархия, поскольку все возникло из java.lang.Object.

Ключевые различия между C ++ и Java

Ниже объясняются некоторые моменты, которые показывают различия между C ++ и Java.

  • C ++ использует единственный компилятор, тогда как в Java используются компилятор и интерпретатор.
  • C ++ поддерживает перегрузку операторов и множественное наследование, а Java - нет.
  • C ++ больше связан с аппаратным обеспечением в отличие от Java.
  • C ++ не предоставляет встроенную поддержку для Интернета, в то время как Java имеет встроенную поддержку для того же. Однако C ++ поддерживает программирование сокетов, которое можно использовать для достижения того же.
  • C ++ использует концепцию заголовочных файлов для включения в программу различных библиотек. Java использует функции импорта для включения в программу различных классов и их методов.
  • C ++ поддерживает аргументы по умолчанию, а Java - нет.
  • В C ++ есть концепция оператора разрешения области видимости (::), который используется для определения метода, внешнего для класса, в то время как Java использует единственную точку (.), Которая может использоваться для определения классов с использованием пространства имен, из которого они получены.
  • Java не использует оператор перехода как C ++.
  • В Java нет деструкторов, поэтому механизм обработки исключений и сборка мусора отличаются от C ++.
  • Java поддерживает перегрузку методов, тогда как C ++ поддерживает перегрузку методов, а также перегрузку операторов.
  • В Java есть концепция передачи по значению.
  • В Java нет реализации целых чисел без знака, тогда как в C ++.
  • C ++ использует указатели и имеет возможность манипулировать адресами памяти.
  • Java не использует указатели, которые делают его безопасным для типов языком программирования.
  • Java использует Generics, тогда как C ++ использует шаблоны.
  • JVM помогает в эффективной оптимизации кода, поэтому производительность выполнения программы лучше, чем у C ++.
  • C ++ использует деструкторы, которые автоматически вызываются во время уничтожения объекта.
  • Java имеет встроенный класс Thread, который должен быть унаследован для создания нового потока. Программист должен переопределить свой метод run ().
  • C ++ не поддерживает потоки, такие как Java, C ++ достигает функциональности потоков, используя внешние библиотеки.

Сравнительная таблица C ++ и Java

Ниже приведен список пунктов, описывающих сравнение между C ++ и Java.

ОСНОВА ДЛЯ

СРАВНЕНИЕ

C ++

Java

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

Управляется разработчиками с помощью указателей. Поддерживает структуры и объединения

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

Наследование

Обеспечить одиночное и множественное наследование как

Не поддерживает множественное наследование. Использует концепцию интерфейса для достижения

Механизм обнаружения ошибок во время выполнения

Ответственность программиста

Ответственность системы

Библиотеки

Сравнительно доступно с низкоуровневыми функциями

Обеспечить широкий спектр классов для различных услуг высокого уровня

Обработка программы

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

Все методы и данные находятся в самом классе. Concept od Package используется

Тип семантики

Поддерживает согласованную поддержку между примитивными и объектными типами

Отличается для примитивных и объектных типов

Портативность

Зависимость от платформы, так как исходный код должен быть перекомпилирован для другой платформы

Использует концепцию байт-кода, которая не зависит от платформы и может использоваться с JVM для конкретной платформы

Полиморфизм

Явный для методов поддерживает смешанные иерархии

Автоматически, использует статическое и динамическое связывание

ЗАКЛЮЧЕНИЕ

Оба языка программирования C ++ и Java поддерживают концепции OOPS. C ++ обеспечивает гибкость во время выполнения и может реализовывать широкие иерархии типов. C ++построен на C и имеет обратную совместимость с его функциями. Это своего рода низкоуровневый язык программирования с некоторыми высокоуровневыми функциями. Управление памятью в C ++ - это ручной процесс, который должен выполнять программист, что может привести к риску утечек памяти и ошибок сегментации. В Java есть встроенный механизм сборки мусора, который отслеживает выделенную память для объектов и автоматически освобождает их, когда они больше не используются. Java предоставляет различные типы примитивов и объектов и является строго типизированным языком программирования. Он обеспечивает способ преобразования примитивов в соответствующие им типы объектов, например, в целочисленный объект, используя объект класса Integer и т. Д. Несколько версий Java. Также есть функция автобокса, которая позволяет автоматически преобразовывать примитивы в соответствующий класс-оболочку. Java обеспечивает автоматический полиморфизм и может ограничить его, запретив явное переопределение метода. Как в C ++, так и в Java есть спецификаторы доступа, которые ограничивают область действия атрибутов и методов в классе, используя private, в пакете с использованием protected и вне класса, а пакет - с помощью public.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Giannini, Mario; Code Fighter, Inc.; Columbia University (2004). "C/C++". In Hossein, Bidgoli. The Internet encyclopedia 1. John Wiley and Sons. p. 164.ISBN 0-471-22201-1. Retrieved 16 December 2012.
  2. Stroustrup, Bjarne (1997). "1". The C++ Programming Language (Third ed.).ISBN 0-201-88954-4. OCLC 59193992.
  3. John, A (2004). The Design and Evolution of C++. 3rd ed. Texas: The Design and Evolution of C++. , ISBN 0-201-54330-3
  4. Graham M. Seed (2007). An Introduction to Object-Oriented Programming in C++. US: Globewide Network Academy. ISBN-10: 0321706250
  5. C++ Programming Language, The: Special Edition, 3rd Edition ISBN-10: 0-201-70073-5
  6. B. Meyer, "Harnessing multiple inheritance', Journal of Object Oriented Programming, V. 1, No. 4, pp 48-51, Nov./Dec. 1989. ISBN:0-201-55417-8
  7. Hans-J B, Mike S. (2009). ACM. Garbage collection in the next C++ standard. 3 (2), Pages 30-38 , ISBN: 978-1-60558-347-1
  8. Klaus M (December 05, 2001). C# Primer Plus. US: Sams. 237, ISBN: 0-672-32152-1
  9. James G. (1993). ACM. Java intermediate bytecodes: ACM SIGPLAN workshop on intermediate representations . 30 (3), Pages 111 - 118, DOI: 10.1145/202530.202541
  10. Gary Marrer (2009). Fundamentals of Programming: With Object Oriented Programming. USA: EBOOK EDITION. P282-283.
  11. James Gosling. (February 24, 2013), The Java Language Specification, Java SE 7 Edition (Java Series): Addison-Wesley Professional.
  12. Tim Lindholm, Frank Yellin, Gilad Bracha, Alex Buckley. (February 25, 2013), the Java Virtual Machine Specification, Java SE 7 Edition (Java Series): Addison-Wesley Professional.
  13. Nate Forman, Ira R. Forman, 2004. Java Reflection in Action. 1st ed. ISBN: 1932394184. Manning Publications.
  14. Schildt, Herbert, 2007. Java: The Complete Reference. 5th ed. ISBN: 978-0-07-163177-8: McGraw-Hill.
  15. Kendal, Simon, 2008. Object Oriented Programming using Java.ISBN: 978-87-7681-501-1.
  16. Naugler, D. R. (2004). DELEGATES AND FUNCTIONAL PROGRAMMING IN C#. DELEGATES AND FUNCTIONAL PROGRAMMING IN C# (p. 11). Mid-South College Computing Conference.
  17. J. Gray, C++: Under the Hood, a Software Design Engineer in Microsoft’s Visual C++ Business Unit, 1996.