- Это будет авторская статья, основанная на моем собственном опыте изучения ООП и языков программирования. Я не эксперт, но мне удалось преодолеть личные барьеры, о которых я даже не думал. Вы были предупреждены.
Итак, вы хотите научиться программировать. Все говорят о том, как технологии захватят мир, автоматизируя множество рабочих мест и тем самым создавая новые. Пока машинное обучение и ИИ не станут настолько продвинутыми, что они смогут начать программировать и создавать себя полностью (страшно), кто-то должен будет быть рядом, чтобы кодировать эти чертовы штуки. Это ты? Может быть, нет, может быть, вы просто хотите сменить карьеру (или начать ее) и хотите стабильности и финансовых выгод, которые приходят с профессией.
Если это похоже на вас, вы, вероятно, задаетесь вопросом, с чего начать. Ты возвращаешься в школу? Вы попадаете в буткемп по кодированию? Делать онлайн-уроки или онлайн-классы? Научиться бесплатно?
Не могу сказать, что один из этих вариантов лучше другого. Я попробовал буткемп и потерпел неудачу. Я продержался месяц, пытаясь выучить Ruby. Из-за финансовых трудностей у меня не было собственного жилья в Денвере. Я оставался на диване моей сестры, и между этим и просто будучи не в своей тарелке, я на самом деле не спал (также из-за попытки научиться программировать за короткий промежуток времени). Строгость и темп буткемпа просто не для меня. Я был ДОА.
Не вдаваясь в подробности, я решил записаться на онлайн-программу непрерывного образования в университете восточного побережья по специальности «ИТ». Я пошел в школу в мае 2017 года, и именно тогда я впервые записался на курс Java, и все, наконец, начало обретать форму.
С Ruby я не смог даже начать понимать принципы объектно-ориентированного программирования. Я не смог даже вспомнить основные методы. Я не понимал почему. Я сидел в том же классе, что и все остальные, но я просто не мог понять концепции. Ruby — довольно классный язык, но ему не хватает нескольких вещей, которые, как мне кажется, необходимы для понимания того, как программировать.

Я очень визуальный ученик. Мне приходится читать книги и смотреть видео, чтобы понять, что происходит. При кодировании я должен иметь возможность точно видеть, что происходит в коде, а затем прокручивать это в голове. Ruby — это язык с динамической типизацией, поэтому такие вещи, как переменные, объявлять нельзя. Это приводит к путанице в моем мозгу, когда я пытаюсь повторить свои шаги. Ruby использует ярлыки, которых нет в Java.
По этой причине многие люди предпочитают Ruby. Его можно набирать быстро, и многие методы просто имеют больше смысла. Ruby был создан, чтобы его было легко освоить (по крайней мере, так говорят). Я не согласен. Упрощая, вы также сокращаете свое понимание основных принципов информатики, а также свое понимание самого кода, особенно при первом запуске. Если у вас уже есть язык ООП, конечно, Ruby можно выучить довольно быстро.
Нельзя недооценивать решимость.
Давайте посмотрим на пример. В Ruby для вывода на экран классической программы «Hello World» это выглядит так:
puts "Hello World"
В Java:
public static void main(String[] args) {
System.out.println("Hello World");
}
Хорошо, возможно, Ruby одерживает победу в этом вопросе с точки зрения «простоты использования», но что здесь происходит на самом деле?
С Java все немного глубже. Приложению Java требуется основной метод, который можно рассматривать как
public static void main(String[] args){}
Настоящим мясом программы является эта строка:
System.out.println("Hello World");
Именно этот метод выводит на консоль «Hello World». Этот метод представляет собой серию встроенных классов/методов Java, каждый из которых вызывается с помощью «.» а затем имя метода. Я не буду вдаваться в подробности о том, что делают эти классы/методы, но даже если у вас нет знаний о Java или ООП, вы можете обобщить, что он говорит системе вывести что-то на консоль.
Java — это язык со строгой типизацией, то есть все переменные должны быть объявлены перед их использованием. Почему это выгодно для начинающего программиста? Потому что это приводит к естественной НЕОБХОДИМОСТИ понять, что печатается и что означает каждая переменная, не только в экосистеме Java, но и вплоть до битов, которые они представляют.
Давайте посмотрим на пример:
int myFavoriteNumber = 7; char firstLetter = 'b'; double changeInPocket = 1.50; boolean iLoveJava = true;
Переменная в языке кодирования — это то же самое, что и переменные, которые вы помните из базовых уроков алгебры. Например, «х = 5». Везде, где появляется x, значение будет равно 5. То же самое и в Java. Имя переменной не имеет значения, важен ТИП. Java имеет 8 примитивных типов данных, и каждый из них выделяет определенное количество битов в памяти вашего компьютера. Понятно, что я не привел здесь пример всех из них, но чтобы увидеть остальные, выполните простой поиск в Google.
В приведенном выше примере типы данных — int, char, double и boolean. «int» — сокращение от integer, «char» — сокращение от character, double — переменная с плавающей запятой, хранит значения с десятичной точкой (понятно, с плавающей запятой?), а boolean — может иметь только два значения: true или false. Как уже упоминалось, каждый из них имеет различное распределение памяти, но это выходит за рамки этой статьи.
Кроме того, в Java (и любом другом языке программирования) есть класс String, который позволяет вам написать что-то вроде этого:
String myFavoriteDay = "Friday";
Строка представляет собой комбинацию «символов», называемую массивом символов, поэтому на самом деле эта строка выглядит так:
char[] myFavoriteDay = new char[] {'F', 'r','i','d',
'a', 'y'};
Могли бы вы представить, что вам нужно печатать длинные предложения таким образом? Ни за что! Вот почему существует метод String!
Почему это важно для вас? При первом обучении кодированию, если вам не нужно было явно вводить эти объявления переменных, можно довольно легко перепутать типы данных. Например, в JavaScript те же самые переменные будут выглядеть так:
var myFavoriteNumber = 7; var firstLetter = 'b'; var changeInPocket = 1.50; var iLoveJava = true;
Несмотря на то, что есть множество людей, которые любят JS, а такие технологии, как Node.js, очень популярны (они позволяют использовать JS на сервере), здесь есть неотъемлемые проблемы. Поскольку все, что требуется для создания переменной, это «var», это означает, что если ваши имена переменных не являются выдающимися (и даже если они есть), может быть много невидимых ошибок, а в случае программиста-новичка - путаница.
Java проясняет все это, убедившись, что вы объявили тип переменной и во время компиляции он поймает ошибки за вас.
Java разбивает код на логические части, и как только вы начинаете понимать, что такое ООП и как оно должно работать, все остальное становится более понятным. Java заставляет студента глубже погрузиться в информатику и то, что на самом деле происходит, когда вы программируете. К сожалению, буткемпы и множество «быстрых» программ не углубляются в это настолько, насколько должны, лишая вас базового понимания. Их задача — сделать из вас разработчика как можно быстрее. Обычно это означает использование новейшего/самого популярного стека и языка.
Наконец, Java — отличный первый язык, потому что после того, как вы изучите основные концепции языка, переход к новому языку, такому как Ruby, JavaScript, CoffeeScript, C#, C++ и т. д., станет НАМНОГО ЛЕГЧЕ! С другой стороны, переход от Ruby или Python к Java или C# будет намного более болезненным.
Сначала этому может быть трудно научиться, но если вы постараетесь, Java станет отличной отправной точкой для любого нового разработчика.
Возьми у меня. Шесть месяцев назад я не мог написать код, чтобы спасти свою жизнь. Я понятия не имел, что такое Java. Сейчас я почти закончил свою вторую степень и создаю движок блога, используя Java/Spring MVC/Hibernate/JDBC/MySQL/JSP/BootStrap/HTML/jQuery/JavaScript. Я перечисляю все используемые технологии только потому, что полгода назад я бы сказал вам, что никогда не смогу программировать. Я бы сказал, что собираюсь сбрасывать пароли, чтобы зарабатывать на жизнь. Я еще не трудоустроена, но невероятно горжусь собой, даже если иногда не могу этого признать. Я зашел так далеко и знаю, что любой, кто действительно хочет сделать это, тоже может.Решимость нельзя недооценивать.