Рубрики
Без рубрики

Как подойти к Python с точки зрения Java

Прямо сейчас я делаю перерыв от обмена обновлениями на сценарии Image-Titler и размышления о предыдущем … Теги с Java, Python, начинающими, обучениями.

Прямо сейчас я делаю перерыв от обмена обновлениями на сценарии Image-Titler и размышляя о преподавании, чтобы ответить на запрос у бывшего ученика. В одном из моих оценок курса Они попросили меня написать статью о том, как приблизиться к Python, как кто-то, кто знает Java. Естественно, я подумал, что это было бы очень весело, так вот оно!

Короче говоря, чтобы приблизиться к Python с точки зрения Java, я рекомендую узнать о том, как два языка сравнивают (например, скомпилированные по сравнению с интерпретацией, статическими по сравнению с динамическими наборами и т. Д.). Затем я рекомендую изучить идиомы Python, используя эти идиомы и писать о вашем опыте. Там нет лучшего способа обучения, чем погружаться.

Надеюсь, это дает вам хороший обзор того, что ожидать в этой статье. Продолжайте читать для более подробной информации!

Понимание моего опыта

Прежде чем мы начнем, я подумал, что это может быть полезно поделиться именно поэтому, почему я квалифицирован, чтобы написать эту статью. Если это не интересно для вас, не стесняйтесь прыгать на следующий раздел. В противном случае, вот моя история.

Когда я впервые научился программировать, мне было 18 лет и новичок в колледже. В то время я принимал вступительный курс Java, поэтому, естественно, Java стал моим первым языком программирования.

В течение следующих четырех лет я взял язык или два, чтобы пройти через некоторые другие курсы. Например, я усвоил C/C ++, в то время как на стажировке – которую я закончил использовать для курса операционных систем, а также для графического курса. Примерно в то же время я также подобрал C # для разработки игр и MATLAB для моделирования и моделирования. Кроме того, я даже запутался с более специализированными языками, такими как Verilog и язык Arduino (I.E. C-ISH).

Во всех моих годах колледжа я никогда не трогал Питона. Это было не до тех пор, пока мне не было около года в моей первой инженерной работе. В этот момент я в значительной степени остался в пространстве Java и C/C ++. Внезапно я застрял, подняв новый язык.

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

Тем не менее, код, который я написал, не был отличным. В общем, я провел много времени, думая о том, как организовать код, как бы программист Java. Например, я провел много времени, пытаясь преобразовать код в объекты, когда это не всегда необходимо. Аналогичным образом, я почувствовал, что сам попал в одинаковые итеративные циклические механизмы, которые я мог бы использовать в Java.

Со временем я начал думать о Python в качестве собственного языка, отдельно от Java. Однако это был длительный процесс, поэтому я подумал, что собрал эту статью подходов, чтобы помочь вам.

Что отличает Python от Java?

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

Компилированные против интерпретации

Возможно, самая большая разница между Java и Python – это тот факт, что человек скомпилирован (Java), а другой интерпретируется (Python). По сути, это означает, что один язык должен быть переведен в виде единицы (Java), а другой может быть переведен на лету (Python).

Чтобы проиллюстрировать эту концепцию, мне нравится делиться общей вводной программой, Hello World, на обоих языках:

public class HelloWorld { 
  public static void main(String[] args) { 
    System.out.println("Hello, World!") 
  }
}
print("Hello, World!")

Здесь мы видим, что версия Java требует довольно немного котельной. Это потому, что мы имеем дело с скомпилированным языком программирования. В результате необходимо иметь некоторую структуру, чтобы указать, где начать выполнение кода (I.E. Основной метод).

На боковой стороне, Python, интерпретируемый язык должен позвонить только Печать () функция напрямую. Ведь эта команда предполагается выполнена в последовательности операторов на лету. Другими словами, нет необходимости предоставлять точку входа.

Естественно, это делает Python хороший язык сценариев. В основном это означает, что мы можем писать последовательности команд в файл, который будет выполнен по мере необходимости. Например, вот сценарий, который печатает текущую дату и время:

import datetime
print(datetime.datetime.now())

Для этого «скрипт» на работу в Java мы должны были сначала скомпилировать его и запустить двоичный. К сожалению, это означает, что мы не можем внести какие-либо изменения, не собирая программу снова.

С другой стороны, Python довольно быстро модифицировать. Например, вот та же программа, но с дополнительной этикеткой:

import datetime
print(f"The current date and time is {datetime.datetime.now()}")

Как это круто?

Статические против динамического печатания

Еще одно фундаментальное различие между Java и Python – насколько печатаются переменные. В частности, Java статически набирается, в то время как Python динамически набирается. По сути, это означает, что переменные Java являются типом, проверяются в момент компиляции, когда переменные Python Type проверяются во время выполнения.

Чтобы понять разницу, давайте еще раз посмотрим на некоторые фрагменты кода:

public class FiveFactorial { 
  public static void main(String[] args) { 
    int total = 1; 
    for (int i = 1; i <= 5; i++) { 
      total *= i; 
    } 
    System.out.print(total); 
  }
}
total = 1
for i in range(1, 6): 
  total *= i
print(total)

Здесь наиболее очевидная разница состоит в том, что переменные в Java должны быть явно напечатаны. Другими словами, мы должны сказать, что мы хотим хранить целое число, прежде чем мы сможем сделать это. На оборотной стороне типы Python (aka типа подсказки ) не требуются, и я не верю, что они формально включены на язык до Python 3.5.

Конечно, чтобы избежать путаницы, можно иметь статически напечатанный язык, который не требует явного ввода (см. Kotlin). Тем не менее, я думаю, что отсутствие явных типов – самая разъяренная смена разработчиков Java. К счастью, тип подсказки доступен и поощряется. Вот такой же образцы с типами подсказки:

total: int = 1
i: int
for i in range(1, 6): 
  total *= i
print(total)

Все это делает, это поможет вам ловить некоторые ошибки в редакторах, таких как Pycharm. Тип подсказки не остановит вас из строя.

Брекеты против пробелов

На данный момент вы, вероятно, заметили, но один из самых различий в различиях между Java и Python – это то, как определяется объем. В Java определяем блоки с помощью брекетов. Между тем, в Python мы определяем блоки с использованием пробелов. Для меня это элегантный способ выразить читаемость в языковом синтаксисе, потому что он заставляет вас поддерживать постоянный интервал.

Конечно, нет смысла в чате без примера. Давайте еще раз посмотрим на факториальный пример:

public class FiveFactorial { 
  public static void main(String[] args) { 
    int total = 1; 
    for (int i = 1; i <= 5; i++) { 
      total *= i; 
    } 
    System.out.print(total); 
  }
}
total = 1
for i in range(1, 6): 
  total *= i
print(total)

В приведении Java мы можем видеть, что существует три уровня вложения на основе трех наборов брекетов. Конечно, мы также видим, что от вдавливания, но это не является строго необходимым:

public class FiveFactorial {
public static void main(String[] args) {
int total = 1;
for (int i = 1; i <= 5; i++) { total *= i; }
System.out.print(total);
}
}

Здесь мы решили сжать петлю на одну строку. Кроме того, мы устранили все отступы. Независимо от того, компилятор будет счастлив. С другой стороны, ваши товары разработчиков (или ваше будущее Я) не будут слишком довольны вами.

Между тем, Python на самом деле не допускает такого рода реструктуризации кода. На самом деле, мы получим синтаксическую ошибку:

total = 1 
for i in range(1, 6): 
total *= i
print(total)

Если вы попытаетесь запустить это, вы получите следующую ошибку:

SyntaxError: expected an indented block

В основном, Это означает, что переводчик ожидал какой-то вложенный блок , Но это не нашел это. В результате программа разбилась.

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

Что делает Java и Python подобным?

Как и обещал, мы теперь посмотрим на то, как Java и Python являются одинаковыми или хотя бы подобными. Вы будете удивлены, насколько на самом деле на самом деле совпадает.

Программирование парадигм

Если у вас есть фон в Java, вы будете рады знать, что Python в значительной степени императив по природе. По сути, это означает, что обе языки программы используют операторы для обновления состояния программы.

Если вы не знакомы с некоторыми другими парадигмами программирования, это может не быть самой полезной информацией. Тем не менее, это означает, что вам действительно не придется растянуть вашу идею о том, что означает программирование при изучении Python. Если вам уже комфортно с идеей выражений и заявлений, эти концепции будут продолжать быть полезными в Python.

Все, что сказал, Java Worth, связывает вас с царством объектно-ориентированного программирования (OOP). В Python вы не так ограничены. Вы можете использовать язык в любой парадигем, который вы, пожалуйста, включают OOP и даже функциональное программирование (FP).

Также Вы можете иметь более одного класса верхнего уровня за файл в Python Отказ Это славно!

Общий синтаксис

Одна из хороших вещей о Python состоит в том, что он берет синтаксис с языков, таких как Java и немного очищает их. Например, в то время как Цикл в Python очень похож на его аналог в Java, но оно падает скобки и брекеты и поднимает толстой кишки:

int i = 0;
while (i < 10) { 
  i++;
}
i = 0
while i < 10: 
  i += 1

Между тем, условные данные следуют тому же шаблону:

int i = 0;
if (i == 1) { 
  System.out.println("This is dead code, buddy!");
}
i = 0
if i == 1: 
  print("This is dead code, buddy!")

Конечно, вам придется привыкнуть к использованию элиф над еще если , но это не должно брать слишком долго!

Аналогичным образом, многие из тех же операторов нетронуты, включая все следующее:

  • Арифметические операторы: + , - , * , %
  • Реляционные операторы: < , <= , == , > = , >.

Конечно, Python испортится с разделением, включая оба / и // Отказ Кроме того, Python бросает обычные булевы операторы и заменяет их своими английскими коллегами: и , или и не Отказ

Это сказал, я думаю, что вы обнаружите, что довольно легко забрать Python, учитывая то, что вы уже знаете о синтаксисе Java. Конечно, самые большие изменения будут забывать о скобах и запятах. Но ты получил это!

Стандартная библиотека

Одно из великих вещей в использовании Java – это его стандартная библиотека. Например, если вам нужна структура данных, такая как список, вы найдете несколько реализованных для вас в стандартной библиотеке. К счастью, Python также имеет отличную стандартную библиотеку, и она доступна в ваших под руках под рукой.

Например, вам нужна очередь для чего-то? Вот фрагмент кода очереди от обоих стандартных библиотек:

import java.util.LinkedList; 
import java.util.Queue; 

public class QueueExample { 
  public static void main(String[] args) { 
    Queue q = new LinkedList(); 
    // Do queue things 
  }
}
import queue
q = queue.Queue()
# Do queue things

Аналогично, с добавлением хорошего менеджера пакета, как пипс , вы даже сможете расширить стандартную библиотеку с 3-го вечеринки, разработанные только для всего. Например, я использую несколько пакетов в Мой сценарий Image-Titler в том числе подушка и матплотлиб.

Приближается к Python с точки зрения Java

Теперь, когда мы предприняли момент, чтобы сравнить два языка, я подумал, что смогу собрать список советов, чтобы помочь вам перейти. Не стесняйтесь брать эти советы с зерном соли; Только вы сможете решить, что полезно.

Узнайте идиомы

Python – это идиоматический язык. По сути, это означает, что существуют определенные способы решения определенных проблем, которые являются стандартными в сообществе. Как правило, эти идиомы изложены в предложениях Python Chaencement ( Peps ), но вы склонны к ним в дикой природе.

Один из общих идиом, которые я думаю о том, что только невозможен в Java, – это тест пустоты для строк:

if (s.length() == 0) { 
  // Do the thing
}
if s: 
  # Do the thing

В качестве программиста Java может быть заманчиво проверить, будет ли строка пуста путем тестирования на длину строки. Пока это, безусловно, возможно в Python, Обычно более идиоматично использовать гибкость типа переменной витрины Отказ Видите, в Python переменные могут оценивать до логии при определенных условиях. Например, пустая строка воспринимается как Ложь в то время как строка любой длины воспринимается как Правда Отказ

Другим распространенным примером питона идиомы является петлями. Если мы хотели пройти массив, мы можем быть соблазнены использовать для цикла в Java. В Python, однако, традиционные для цикла не существует. Вместо этого программисты Python используют то, что часто упоминается в Java AS Улучшена для цикла или для каждого цикла :

int[] arr = {1, 2, 3}
for (int i = 0; i < arr.length; i++) { 
  // Do the thing
}
arr = [1, 2, 3]
for item in arr: 
  # Do the thing

Если по какой-то причине вам нужны индексы, вам придется использовать перечислять () функция.

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

Если вы интересны в изучении некоторых идиом, я на самом деле пишу о них все время. На самом деле, У меня целая серия, посвященная решению распространенных проблем в Python Отказ Почти каждая статья имеет чистое идиоматическое решение.

Используйте язык

Один из менее аппетитных кусков советов – Используйте язык Отказ В конце концов, вы можете учиться весь день, но пока вы на самом деле не пытаетесь решить свои собственные проблемы, вы никогда не узнаете язык.

Тем не менее, я подумал, что вы начнуте, проречив маленький список проектов Python, вы можете попробовать:

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

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

Напишите о Что вы узнали

Один из самых быстрых способов оценки вашего обучения – объяснить ваше понимание. Если вы можете сочтеть именно поэтому что-то работает, вы укрепите процесс обучения.

Чтобы сделать это менее страшно, вы можете попробовать занять процесс обучения в ноутбуке. Или, если вы хотите принять ваше обучение на следующий уровень, вы можете записать быстрое сообщение в блоге на сайте, как dev.to. Если сделано правильно, вы можете помочь новичкам так же, как и вы.

Если вы беспокоитесь о перефразировании тех же старых концепций в Интернете, не будь! Я не думаю, что есть позор в письменном виде, который уже существует в Интернете, потому что он служит для усиления собственного обучения. Аналогичным образом, мы могли бы все извлечь выгоду из другого перспективы.

Начните кодирование!

На данный момент для меня не так много, чтобы сказать, так что позвольте мне обобщить. Во-первых, при изучении Python важно сравнить и контрастировать Python с языком, который вы уже знаете, Java. С точки зрения различий я определил три:

  • Python интерпретируется в то время как Java скомпилирован
  • Python динамически набран в то время как Java есть статически набран
  • Python использует пробелы для кодовых блоков какая Java использует брекеты

Естественно, вероятно, есть тысячи различий, но это были большие три для меня.

На оборотней стороне там питон похож на Java во многих отношениях. Для целей краткости я выбрал три:

  • Как Java, так и Python разделяют валючную парадигму программирования
  • Как Java и Python имеют общие синтаксические элементы, такие как петли и условные
  • И Java, так и Python разделяют идею обширной стандартной библиотеки

Как только мы сравнили контрасные языки, я поделился тремя советами, чтобы помочь вам через переход:

  • Узнайте идиомы Python
  • Используйте Python для создания проектов
  • Напишите обо всем, что вы узнали

Надеюсь, эти 2500+ слов дают вам приличную отправную точку на вашем переходе. Как тот, кто должен был пройти подобное переход, я желаю вам удачи и продолжать шлифовать!

Если вам нравится этот вид контента, я был бы признателен, если вы продемонстрировали сайт немного любви, проверив Мой список способов вырастить сайт Отказ Например, этот пост укажет вас в мой список рассылки, а также мой канал YouTube и Patreon. Каждый немного помогает!

Пока вы здесь, вот список соответствующих сообщений:

Спасибо снова за тусоваться! Я ценю это.

Оригинал: “https://dev.to/renegadecoder94/how-to-approach-python-from-a-java-perspective-3kgo”