Я решил, что я изучаю Java как мой второй язык (я разработчик Perl). Но, просто прочитав несколько онлайн-уроков, я действительно не могу найти сходства между ними. Что мне будет легко понять при изучении Java?
Я решил, что я изучаю Java как мой второй язык (я разработчик Perl). Но, просто прочитав несколько онлайн-уроков, я действительно не могу найти сходства между ними. Что мне будет легко понять при изучении Java?
Ответы:
Perl - это многоуровневый, интерпретируемый, динамический язык программирования высокого уровня общего назначения. Java - это высокоуровневый, универсальный, в основном однопарадигальный, статически типизированный язык программирования.
Итак, оба высокого уровня :
Язык программирования высокого уровня - это язык программирования с сильной абстракцией от деталей компьютера.
В компьютерном программном обеспечении язык программирования общего назначения (GPL) - это язык программирования, предназначенный для написания программного обеспечения в самых разных областях применения.
По сути это означает, что все, что вы можете делать с Perl, вы можете делать и с Java. И, как упоминает @KyleHodgson , оба их синтаксиса являются производными от C и C ++, а синтаксис для простых вещей, таких как for
циклы и if
операторы, по сути одинаков - и, как отмечает @DipanMehta , оба являются сборщиком мусора . И, конечно, оба очень популярны и имеют живые сообщества.
Но на этом сходство заканчивается. Perl - это мультипарадигма, поддерживающая широкий спектр парадигм программирования:
Perl не поощряет единственную парадигму, они по существу равны, и вы можете выбирать, что вам больше подходит, что бы вы ни строили, конечно, не ограничивая вас одной парадигмой, которую вы можете смешивать и сопоставлять. С другой стороны, Java - это в основном объектно-ориентированный язык на основе классов. Существует поддержка общего программирования, но как новичок вы должны думать о Java как о строго объектно-ориентированном языке, основанном на классах.
Так что Perl позволяет более одного способа структурировать ваш код 1 , тогда как Java - только один. Это не плохо (или хорошо), просто другое. Если вы еще не написали объектно-ориентированный код на Perl, Java на первый взгляд может показаться немного чуждым. Не отчаивайтесь, объектная ориентация - это то, что вам в конечном итоге придется изучить, если вы рассматриваете карьеру в разработке программного обеспечения, а изучение Java - хороший способ изучения базовых концепций объектной ориентации - не идеальный способ, но безусловно, хороший способ.
И, как вы знаете, Perl интерпретируется, тогда как Java ... ну ... совершенно другой зверь . В Java вы пишете свой код так же, как в Perl, а затем компилируете его . Результатом является не исполняемый файл, а байт-код Java . Этот промежуточный формат исполняется (наконец-то!) В виртуальной машине Java , которая в некоторой степени аналогична интерпретатору Perl. JVM должна быть установлена заранее для запуска Java-программы, в том числе и потому, что вам нужно установить интерпретатор Perl для выполнения сценария Perl 2 .
Исходя из фона Perl, самое важное, что нужно помнить, - это этап компиляции в байт-код: каждый раз, когда вы вносите изменения в исходный файл Java, вам необходимо его перекомпилировать. Поначалу это может показаться странным, но компиляция имеет очень приятное следствие: на этом этапе ваш код проверяется на наличие множества ошибок, и компилятор отказывается завершать процесс, если таковые имеются, и иногда поможет вам точно определить ошибки с помощью полезные сообщения (всегда есть сообщения, но только иногда они полезны).
Что подводит нас к последнему значительному различию:
Perl динамический 3 :
Динамический язык программирования - это термин, широко используемый в компьютерных науках для описания класса языков программирования высокого уровня, которые во время выполнения исполняют многие обычные поведения, которые другие языки могут выполнять во время компиляции, если они вообще существуют. Эти поведения могут включать расширение программы, добавление нового кода, расширение объектов и определений или изменение системы типов во время выполнения программы.
и динамически набрал 4 :
Говорят, что язык программирования динамически типизируется, когда большая часть его проверки типов выполняется во время выполнения, а не во время компиляции.
и Java статически типизирован :
Говорят, что язык программирования использует статическую типизацию, когда проверка типов выполняется во время компиляции, а не во время выполнения.
Что, проще говоря, означает, что в Java вы должны объявить тип ваших переменных и методов перед их использованием. Есть и другие отличия, но я бы не хотел испортить удовольствие от их самостоятельного открытия :)
И, наконец, есть одно очень важное отличие: Java - это любимый язык научных кругов 5 и корпоративного мира, в то время как вы больше не будете встречаться с Perl в академических условиях (там, где я впервые встретился с ней), и его карьерные перспективы уменьшаются (все еще довольно много рабочих мест, но далеко не так много, как Java, .Net языки или PHP). Я не буду комментировать причины, я просто констатирую (грустные) факты. Поскольку вы еще очень молоды, изучая Java, вы будете немного более подготовлены к получению степени по компьютерным наукам, если решите пойти по этому пути.
Конечно, не разочаровывайтесь в Perl, но изучайте Java. Тот факт, что они больше отличаются друг от друга, также означает, что вы изучите совершенно разные подходы и навыки программирования, это трудный путь, но в конечном итоге он сделает вас лучшим программистом.
2 Сообщество Perl активно изучает возможности виртуальной машины Perl через Parrot .
3 Динамический не всегда означает динамический тип.
4 Perl динамически типизируется для пользовательских типов, статически типизируется по отношению к различающимся массивам, хэшам, скалярам и подпрограммам и строго типизируется через use strict
, так что, по сути, это язык системы переменных типов, но для сохранения здравого смысла давайте назовем его динамически набран.
5 На грани злоупотребления, как пишет Джоэл Спольски в «Опасностях JavaSchools» .
Ну, они оба используют синтаксис типа C - точки с запятой, фигурные скобки и тому подобное. Лично, когда я несколько лет назад пытался переключиться с Perl на Java, самая большая вещь, которая поразила меня, - это объектно-ориентированное программирование. Я разработал некоторые объекты в Perl, но мне больно пытаться представить жизнь в Царстве Существительных.
Делаем попытку альтернативного ответа, поскольку выбранный в настоящее время, кажется, фокусируется на различиях между ними (действительно, между Perl и Java не так много общего).
Если ваш Perl-код является очень строгим и ортогональным (хорошо проверенным, хорошо документированным, использует Moose или строгую объектную ориентацию), то эти концепции будут очень хорошо переноситься в Java, поскольку Java чрезвычайно ортогональна и не столь выразительна.