Отличия между C++ /Visual Basic и Java на общем уровне (для начинающих и учащихся)
C++ и Java являются одними из очень популярных языков программирования. Их можно сопоставлять очень детально, сравнивая скорость, типизацию, компиляторы и т.д, но для обычного обывателя это слишком, и гораздо проще будет рассмотреть их отличия на общем, базовом уровне, чтобы выводы для себя мог сделать даже человек, далёкий от программирования и только присматривающийся к данной сфере. Уже на этом этапе можно сделать вывод, язык какой парадигмы вам подойдёт. И да, ситуация такого выбора вполне реальна — например, для студентов в учебных целях.
Для этого попытаюсь рассмотреть вкратце основные конструкции языков программирования а именно:
выражения: математические, логические, строковые;
операторы: составной оператор, оператор присваивания, условный оператор IF, циклы FOR и WHILE, оператор GOTO и другие;
подпрограммы: процедуры и функции;
типы данных: базовые типы, структуры, классы, интерфейсы и шаблоны.
(данная статья является не переводом, а моим личным анализом собранной информации)
Выражения
Java
Математические выражения
Математическое выражение – выражение, результатом которого является число. В их состав входят переменные, функции и константы.
Арифметические операторы в Java позволяют проводить стандартные математические операции сложения, вычитания, умножения и так далее. Также в языке присутствуют операторы декремента и инкремента (увеличение или уменьшение значения на единицу).
Логические выражения
Логическое выражение — это описание выражения, результатом которого является истина (true) или ложь (false). Логические операторы работают только с операндами типа boolean.
Все логические операторы с двумя операндами объединяют два логических значения, образуя результирующее логическое значения.
Java поддерживает более десяти операторов: AND (логическое и сокращённое), OR (логическое и сокращённое), XOR, NOT и так далее.
Строковые выражения
Строковое выражение — манипуляция со строками. По виду напоминает математическое выражение, но результатом его является новая строка.
Язык Java позволяет складывать, вычитать, разделять и соединять строки. Отличительной особенностью Java является наличие класса String, предусмотренного специально для работы со строками.
C++ / Visual basic
Математические выражения
В языках C++ и Visual Basic также присутствуют арифметические операторы, операторы декремента и инкремента, синтаксис математических выражений также поддерживает скобки и унарный минус.
Так же, как и в языке Java, у них в качестве встроенных функций доступны более сложные операции, например, квадратный корень sqrt(x) и экспонента exp(x).
Логические выражения
В Visual Basic используется шесть операторов: помимо AND, OR, NOT, XOR также применяются операторы эквивалентности и импликации.
В С++ же используют три логических оператора: AND, NOT и OR. Во всех рассматриваемых языках некоторые из операторов можно использовать сразу для нескольких операндов.
Строковые выражения
В отличие от Java, в C++ отсутствует встроенная поддержка такого объекта, как строка, и при необходимости работы со строками (сложения, вычитания и т.п.) подключают заголовочный файл string.
В Visual Basic, ввиду важности работы со строками, поддерживается тип данных String, представляющий последовательность символов. Переменная этого типа может принимать любое выражение, результатом которого является строка.
Операторы
Java
Все рассматриваемые языки схожи тем, что поддерживают операторы циклов (FOR, WHILE), оператор условия IF, однако существенное различие их в том, что в Java нет оператора перехода «goto» как такового: сохраняются ключевые слова «const» and «goto», однако они не используются.
C++ / Visual basic
C++ и Visual Basic, разработанные гораздо раньше Java, обладают оператором перехода «goto», но использование данного оператора, как правило, нежелательно.
Процедуры и функции
Java
Подпрограмма – именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. Функции возвращают основной программе какое-либо значение, процедуры не возвращают.
В Java нет ни процедур ни функций, обе эти сущности называются методами, но они так же могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без.
C++ / Visual basic
В C++ подпрограммы реализованы в виде функций. Программа на С++ состоит из одной или нескольких функций, которые должны быть описаны перед их использованием.
Программы на Visual Basic также состоят из нескольких подпрограмм, которые делятся на процедуры и функции.
Типы данных
Java
В Java для всех базовых числовых типов независимо используются определенные соглашения, не зависящие от конкретной реализации среды, что гарантирует воспроизводимые результаты на широком спектре платформ.Также В Java нет конструкций struct и union, все это объединено в концепции классов.
Помимо этого, Java не поддерживает указатели (pointers) (их роль в Java играют так называемые «ссылки»), шаблоны (templates), перегрузку операторов (operator overloading), структур и т.д.
C++ / Visual basic
C++ получил в наследство от С все обычные типы данных последнего. Эти типы служат для представления целых и вещественных чисел различных размеров и точности. К несчастью, реальный диапазон и точность этих типов колеблется в зависимости от конкретной реализации транслятора.
Из-за зависимости от транслятора на разных платформах поведение кода на С++ и Visual Basic может меняться. С++ же пытается предоставить программисту возможность инкапсуляции данных посредством объявления структур (struct) и полиморфизм с помощью объединений (union). Эти две конструкции прикрывают критические и катастрофические машинно-зависимые ограничения по размеру и выравниванию.
C++ и Visual Basic поддерживают указатели (pointers) и адресную арифметику указателей (pointer arithmetic), перегрузку операторов и т.д.
Итоги
Язык Java был разработан под влиянием языков, существовавших до него, в их числе Visual Basic и особенно С++, что означает, что некоторое количество конструкций данных языков совпадает, однако в Java были исправлены многие недостатки C++, влиявшие на работоспособность и результаты работы программы, а также приняты меры по «упрощению» языка в сравнении с С++, что подразумевает существенное отличие Java от C++. Несмотря на наличие схожих конструкций, Java сильно отличается как от C++, так и от Visual Basic.
P.S. На всякий случай упомяну, что я не ставлю целью дать совет по выбору языка для изучения или лучшего языка из рассматриваемых, а лишь предоставляю пищу для рассуждений. И кстати, а как вы выбирали свой первый язык программирования, что для вас было важно в первую очередь? Или вас в вузе «обязывали» писать на чём-то определённом?