Недавно я переключился с 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 при использовании ввода-вывода.