Читайте нас в телеграм:

Верстальщик от бога

Самый большой канал по верстке в телеграм

Программист от бога

Божественный юмор о программистах

Тестировщик от бога

Божественный канал о тестировании

АйТи собес

Логический задачи с айтишных собеседований

Как войти в Java в 2021 году

Советы преподавателя, как войти в Java в 2021 году

Этот пост для тебя, если на следующие вопросы ты отвечаешь «Да», или «Ну да!»:

  • Ты студент.
  • Основная специальность в вузе = ИТ, «программная инженерия», «компьютерная инженерия» или подобное.
  • Вообще нравится программирование.
  • Раздумываешь, а может войти-в-айти?.
  • Что-то слышал о программировании от знакомого/соседа/сотрудника, не против ознакомиться.
  • Уже ознакомился, но хочешь более плотно.

«Иногда утомляет, как в наше время люди ведут себя. Иные рассказывают, что можно «писать код, не зная языки программирования», ну или почти не зная, в конструкторе. Мы, преподававшие языки программирования 5-6-7 лет, смотрим известно как на людей, приходящих к нам на лекции и спрашивающих «А что мне учить?», а ведь таких много.

Им я обычно отвечаю, «Начните с какого-то языка программирования, и выучите его до состояния ХОРОШО».

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

Студенты засыпают вопросами, всегда субъективными, и часто, хм, личными. В целом, выбор карьеры в ИТ (и выбор языка конечно) — есть вопрос инициативности, решительности, дальновидности, и все эти качества, как я заметил, в большом дефиците у нынешней молодежи. Выслушав мои ответы, студенты далее спрашивают:

  • Какой язык программирования лучше всех?
  • Слышал, что язык Х лучше, чем язык Y, а вот почему?
  • С чего начать?
  • Что нужно, чтобы приняли на первую работу?
  • Посмотрел на Ютубе ролики вот этого Java-инфлюэнсера, достаточно?
  • Видел хороший платный курс Java, подаваться?

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

По моему опыту, если надо учить Java в 2021 году, то этот процесс — от «начинающего» до «ого, я опытный разработчик» будет состоять из 4 этапов «постижения Java».

Перед тем как описать их, хочу отметить, что найдутся люди, которые придут в коменты и начнут писать, «Ой, зачем усложняешь дорогой, делай то, делай это, посмотри этот ютуб, запишись вот на тот курс», но не обращайте внимания. Освоение языка программирования — больше всего похоже на изучение человеческого языка. Твой мозг должен забыть часть прошлого опыта (или по крайней мере временно игнорировать), чтобы избавиться от «когнитивных помех». Надо научиться мыслить в понятиях «чужого языка». Для этого тебе понадобятся систематические усилия: твое оружие — усидчивость и трудолюбие. Если бы все было так просто, как некоторые говорят, то все люди вокруг давно бы стали программистами в Google, и весь мир превратился бы в некую Утопию Программистов, свободную от проблем, багов и прочего плохого.

Итак. Каждый язык программирования «говорит компьютеру, что делать», эти указания переводятся в ноли и единички, так что процессору все равно, на каком языке ты пишешь свои приложения или сайты. Языки создаются, чтобы быть удобными и хорошими для программистов, а не для компьютеров.

Для начала, советую штудировать вот эту книгу:
Java: A Beginner’s Guide by Herbert Schildt. Это как бы база.

Синтаксис и семантика Java

  • Типы данных (8 примитивных типов Java)
  • Переменные (ключевое слово var)
  • Преобразование и приведение типов в Java
  • Автоматическое распространение типа (Automatic Type Promotion)
  • Массивы
  • Операторы: арифметические, побитовые, реляционные (условные), булевы, оператор присвоения, оператор ?, таблица приоритета операторов
  • Управляющие конструкции, управление ходом исполнения (операторы If, If-Else, If-Else-if, For-Each, Switch; в том числе в новых версиях Java)
  • Итерация, операторы итерации (While, Do-While, For, For-Each, вложенные циклы), операторы continue/break, метки (этикетки, закладки в коде, labels)
  • Аргументы командной строки в Java-программе
  • Класс String
  • Vararg (аргументы неизвестной длины и неизвестного количества)
  • Классы Scanner и BufferedReader

Объектно-ориентированное программирование

  • Программные «элементы» Java, их пять типов: Класс, Абстрактный Класс, Интерфейс, Перечисление (Enum), и начиная с прошлого года — Запись(Record)
  • Объявление объектов в методах и работа с ними
  • Ссылочные типы (референсные, reference) и их значения
  • Методы (сигнатура метода, типы методов)
  • Конструкторы
  • Ключевое слово this
  • Перегрузка методов
  • Перегрузка конструкторов
  • Объекты (ссылочных типов) как параметры методов и аргументов
  • Объекты (ссылочных типов), возвращаемые из метода
  • Рекурсия; стек вызовов (Call Stack), рекурсия головы и хвоста (Tail-Recursion, Head-Recursion)
  • Ключевое слово static (создание static-членов класса)
  • Ключевое слово final (применительно к классу, к методу, к члену класса)
  • Вложенные классы и внутренние классы
  • Наследование (Super и подклассы), Иерархия в Java
  • Ключевое слово super (вызов членов Super-класса из подкласса)
  • Типы Иерархий в Java (Простая, Многоуровневая, Множественная, Гибридная)
  • Переопределение методов
  • Абстрактные классы и методы
  • Интерфейсы; создание интерфейса, его имплементация, вложенные интерфейсы, члены интерфейса, методы: private/static/default
  • Пакеты Java (переменная CLASSPATH, импорт пакетов)
  • Обработка исключений (типы исключений, перехваченные и пропущенные исключения, блоки try-catch, try-finally, try-catch-finally, multiple catch, вложенные try, ключевые слова throw и throws, пользовательские исключения)
  • Многопоточность (Java Thread Model, главный поток, создание потока, класс Thread, интерфейс Runnable, параллельное выполнение, метод sleep(), приоритеты потоков, лямбда для создания потока, как анонимный класс создает поток)
  • Классы-перечисления Java
  • Wrappers-классы, обертки/оболочки в Java
  • Упаковка и распаковка (boxing/unboxing)
  • Аннотации в Java
  • Дженерики в Java (или иначе — обобщения, generics, универсальные): ограниченные типы (Bounded Type), маски (метасимволы, Wildcard-типы), ограниченные маски (Bounded Wildcards), универсальные методы (generic methods) и конструкторы, дженерики со статическими методами, обобщенные классы (generic classes) и интерфейсы, перегрузка и переопределение таких универсальных методов, стирание типов (Type Erasure), универсальные массивы
  • Лямбда-выражения (функциональные интерфейсы, лямбда как аргумент, ссылки на методы)
  • Stream API (типы методов, часто используемые методы в этом API)
  • Работа со строками (конструкторы класса String, длина строки, операции со строками, извлечение символов из строки, сравнение строк, поиск символов, модификация строки, StringBuilder, StringBuffer)
  • Классы в пакете java.lang

Структуры данных и алгоритмы:

  • Java Collection Framework в Java; интерфейсы и реализация; List, Set, Deque, классы ArrayList, LinkedList, HashSet, TreeSet, PriorityQueue, ArrayDeque, итераторы в коллекциях, класс Iterator, цикл for-each, потоки (stream), Custom Collections Classes, карты (Maps) — интерфейсы и классы, Vector, Stack, Dictionary, Hashtable, Properties
  • Остальное по желанию, но желательно знать такие классы: StringTokenizer, BitSet, Optional, LocalDate, LocalTime, LocalDateTime, GregorianCalendar, TimeZone, Locale, Random, Timer, Currency, NumberFormat, StringFormat.

Если возникают проблемы

Когда получите достаточный уровень в том, что перечислено выше, можете углубиться в язык, практикуя свои навыки на сайтах, приведенных далее. Это сайты для так называемого «Competetive Programming» — решая задачи и проблемы, постигаете Java-дзен.

В принципе, будет полезно «зависать» на любом из них, они более-менее сравнимы по уровню.

Также можем посоветовать пару толковых книжек, конкретно по «соревновательному программированию»:

Необязательно точно соблюдать порядок пунктов (от азов к высотам), и если достигнут хотя бы минимальный уровень, уже можно пробовать заниматься на указанных «олимпиадных» сайтах, типа CodeWars.»

dbc2201

Читайте также

Обсуждение

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

читайте нас в телеграм

Верстальщик от бога

Самый большой канал по верстке в телеграм

Программист от бога

Божественный юмор о программистах

Тестировщик от бога

Божественный канал о тестировании

АйТи собес

Логические задачи на собеседованиях в IT

Фронтендер от бога

Божественный канал о тестировании

Mobile Dev Lib

Популярное

10 опенсорсных инструментов в помощь разработчику

Так как людей в ИТ все еще не хватает, и не только в США, нагрузка на одного разработчика остается большой. Невозможные дедлайны, задачи по продуктивности не учитывающие наличие лишь 24 часов в сутках, и при этом они хотят, чтобы ни одного бага. Что поможет разработчику в этой потогонке? Опыт говорит, что помогут хорошие инструменты.

Как войти в Java в 2021 году

Советы преподавателя как войти в Java в 2021 году. Что почитать по Java, как найти галеру, книжки по Java, competitive programming

Выбираем между React и Angular

Разбираемся, что лучше использовать в современной фронтенд-разработке.