У мене є розум, що я вивчаю Java як свою другу мову (я розробник Perl). Але тільки прочитавши невелику кількість навчальних посібників в Інтернеті, я дійсно не можу знайти подібності між ними. Що я буду легко розуміти під час вивчення Java?
У мене є розум, що я вивчаю Java як свою другу мову (я розробник Perl). Але тільки прочитавши невелику кількість навчальних посібників в Інтернеті, я дійсно не можу знайти подібності між ними. Що я буду легко розуміти під час вивчення Java?
Відповіді:
Perl - це багаторівнева парадигма, інтерпретована, динамічна мова програмування високого рівня. Java - це універсальна, загальноприйнята, переважно однопарадигма, статично набрана мова програмування.
Отже, обидва є на високому рівні :
Мова програмування високого рівня - це мова програмування з сильною абстракцією від деталей комп'ютера.
У комп’ютерному програмному забезпеченні загальна мова програмування (GPL) - це мова програмування, призначена для використання для написання програмного забезпечення в широкому спектрі областей додатків.
По суті це означає, що все, що ви можете зробити з Perl, ви також можете зробити з Java. І як згадує @KyleHodgson , обидва їх синтаксису походять від C і C ++, а синтаксис для простих речей, таких як for
петлі та if
заяви, по суті, однаковий - і як зазначає @DipanMehta , обидва збирають сміття . І звичайно обидва надзвичайно популярні та мають яскраві спільноти.
Але на цьому схожість зупиняється. Perl - це багатопарадигма, яка підтримує широкий спектр парадигм програмування:
Perl не заохочує однієї єдиної парадигми, вони по суті рівні, і ви можете вибирати те, що ви вважаєте, що найкраще підходить для того, що ви будуєте, але, звичайно, не обмежуючи вас однією парадигмою, ви можете змішувати та співставляти. З іншого боку, Java - це об'єктно-орієнтована мова, орієнтована на клас. Існує підтримка загального програмування, але як початківець ви повинні думати про Яву як строго об'єктно-орієнтовану мову, орієнтовану на клас.
Тож Perl дозволяє декілька способів структурувати ваш код 1 , тоді як Java - лише один. Це не погана річ (або гарна річ), це просто інше. Якщо ви не написали жодного об'єктно-орієнтованого коду Perl, Java спочатку може здатися трохи чужим. Не віддавайте духу, орієнтація на об'єкт - це те, що з часом доведеться навчитися, якщо ви думаєте про кар'єру в розробці програмного забезпечення, а вивчення Java - це хороший спосіб вивчення основних понять орієнтації на об'єкт - не ідеальний спосіб, але напевно хороший спосіб.
І як ви знаєте, інтерпретується Perl, тоді як Java - це ... ну зовсім інший звір . На Java ви пишете свій код так, як і в Perl, а потім компілюєте його . Результат - не виконуваний, а байт-код Java . Цей формат посередництва виконується (нарешті!) У віртуальній машині Java , яка дещо аналогічна інтерпретатору Perl. Для запуску програми Java необхідно заздалегідь встановити JVM, аналогічно тому, як потрібно встановити інтерпретатор Perl, щоб виконати сценарій Perl 2 .
Починаючи з фону Perl, найважливіше, що слід пам’ятати, - це компіляція до кроку байтового коду: Кожен раз, коли ви вносите зміни до вихідного файлу Java, вам потрібно перекомпілювати його. Спочатку це може здатися божевільним, але компіляція має дуже приємний наслідок: на цьому етапі ваш код перевіряється на наявність різноманітних помилок, і компілятор відмовляється закінчити процес, якщо такі є, а іноді допоможе визначити помилки корисні повідомлення (Повідомлення завжди є, але лише іноді вони корисні).
Що призводить нас до останньої головної різниці:
Perl є динамічним 3 :
Мова динамічного програмування - це термін, що широко використовується в інформатиці для опису класу мов програмування високого рівня, які виконують під час виконання багато загальних поведінок, які інші мови можуть виконувати під час компіляції, якщо вони взагалі є. Ці поведінки можуть включати розширення програми, додаючи новий код, розширюючи об'єкти та визначення, або змінюючи систему типів, все під час виконання програми.
і динамічно набрано 4 :
Як кажуть, мова програмування динамічно набирається, коли більшість перевірок типу виконується під час виконання, на відміну від часу компіляції.
і Java статично набрана :
Кажуть, що мова програмування використовує статичну типізацію, коли перевірка типу виконується під час компіляції, на відміну від часу виконання.
Що, простіше кажучи, означає, що в Java вам потрібно оголосити тип своїх змінних та методи перед їх використанням. Є й інші відмінності, але я не хотів би зіпсувати задоволення від їх відкриття самостійно :)
І, нарешті, є одна дуже важлива відмінність: Java - це мила мова академії 5 та корпоративного світу, тоді як ви рідко зустрінетесь з Perl в академічній обстановці (де я вперше зустрівся з нею), і перспективи його кар’єри скорочуються (ще досить багато завдань, але ніде не так багато, як Java, .Net languages або PHP). Я не буду коментувати причини, я лише констатую (сумні) факти. Оскільки ви ще дуже молодий, вивчаючи Java, ви трохи підготуєтесь до ступеня інформатики, якщо вирішите йти цим шляхом.
Звичайно, не здавайся на Perl, але досліджуй Java. Те, що вони відрізняються від подібних, також означає, що ви дізнаєтесь зовсім інші підходи та програмні менталітети, це нелегкий шлях, але такий, що в кінцевому підсумку зробить вас кращим програмістом.
2 Спільнота Perl активно вивчає можливість віртуальної машини Perl через Parrot .
3 Динамічний не завжди означає динамічно набраний.
4 Perl динамічно набирається для визначених користувачем типів, статично набирається відносно розрізнення масивів, хешей, скалярів та підпрограм, і сильно набирається через use strict
, так що по суті це системна мова змінного типу, але щоб зберегти певне почуття розумності, давайте назвемо це динамічно набрав.
5 До міри зловживань, як пише Джоел Спольський у «Загрози JavaSchools» .
Що ж, вони обидва використовують синтаксис типу C - крапкою з комою, фігурними дужками тощо. Особисто, коли я кілька років тому намагався перейти з Perl на Java - найбільше, що мене спонукало, - це об’єктно-орієнтоване програмування. Я розробив деякі предмети в Перлі, але мені боліло голову, намагаючись уявити життя в Королівстві іменників.
Отримавши ногу на альтернативну відповідь, оскільки обраний на даний момент, здається, зосереджує увагу на відмінностях між ними (справді між Perl та Java не дуже багато подібності).
Якщо ваш код Perl дуже жорсткий і ортогональний (добре перевірений, добре задокументований, використовує Moose або сувору орієнтацію на об'єкти), то ці поняття будуть дуже добре переноситись на Java, оскільки Java надзвичайно ортогональна і не настільки виразна.