Недавно я переключился с Ruby, моей первой любви к языку программирования, на Java, моего нового заклятого врага, к которому я сейчас испытываю легкое презрение.

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

Оба языка являются объектно-ориентированными, поэтому технически не кажется, что между ними будут существенные различия.

Основное отличие, которое меня больше всего поразило, заключалось в том, что Ruby — это динамический и неявный язык, многие вещи происходят за кулисами, и вам не нужно предоставлять для них явные инструкции. Методы Ruby будут выполнять любой код, который вы поместите внутрь, и не имеет значения, возвращают ли они строку или целое число.

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

В приведенном ниже примере вы увидите, что «String» объявлен как ожидаемый тип, который вернет метод. Если метод возвращает не ожидаемый тип, он не сможет скомпилировать или запустить программу. Кроме того, в Java используется так много фигурных скобок, что он определенно нуждается в большем обслуживании, чем удобный Ruby.

Вот способ написания метода на Java:

public String findScoreForRock(String playerTwoMove) {
    if (playerTwoMove.equals("paper")) {
        return "paper";
    } else {
        return "rock";
    }
}

Ниже приведен тот же метод, но написанный на Ruby.

def find_score_for_rock(player_two_move) 
  if player_two_move == "paper" 
    "paper"
  else
    "rock"
  end
end

Два приведенных выше примера хорошо иллюстрируют другой пример между различными стилями синтаксиса между двумя языками. В Ruby между разными словами используются символы подчеркивания, известные как Snake Case, тогда как в Java используется Camel Case, где вы начинаете со слова в нижнем регистре, а первая буква каждого слова заглавная. последующее слово.

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

Ruby:
player_two_move == "paper"
- - - - - - - - - - - - - - -
Java:
String playerTwoMove = "paper"

Я лично обнаружил, что использование и тестирование ввода и вывода в командную строку в Java особенно сложно, поэтому я последую за этим сообщением сообщением, в котором специально подчеркиваются различия в Ruby и Java при использовании ввода-вывода.