Разработка Java подобного языка программирования за 2 месяца

Интерактивный Java курс по разработке языка программирования от задумки и до получения конечного продукта

Ratings: 5.00 / 5.00




Description

Вы познакомились с основами программирования, написали несколько простых программ и Вам очень понравился сам процесс создания приложений. Вы твердо решили стать программистом уже сейчас или через несколько месяцев/лет, потому что Вы понимаете что в ближайшем будущем (которое наступит не через 50 лет, а уже через 3-4 года) многие профессии будут заменены роботами. Поэтому уже сейчас разобраться в принципах разработки сложных программ является отличной инвестицией в Ваше будущее. В этом случае выбор в пользу Java — это правильный и удачный выбор, потому что с помощью Java могут быть созданы любые типы приложений:

  1. Обычные десктопные приложения;

  2. Web приложения, Web порталы и Web сервисы;

  3. Приложения для мобильной платформы Android;

  4. Приложения использующие искусственный интеллект и машинное обучение.

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

  1. Уметь работать в команде и писать свой код таким образом, чтобы он не при каких обстоятельствах не ломал код написанный другими разработчиками. (Один из самых важных навыков, так как при разработке большинства программных продуктов используется труд нескольких разработчиков одновременно);

  2. Уметь писать простой и понятный любому разработчику код. (Второй по важности навык. В мире огромной конкуренции бизнес правила работы приложения изменяются иногда даже чаще чем эти правила успевают быть полностью реализованы разработчиками и почти в 90% случаев разработчик изменяет написанный им же код через некоторое время. Если код простой и понятный, то при его изменениях вероятность возникновения новых ошибок стремится к нулю.);

  3. Уметь правильно обрабатывать ошибки. (Ошибка в современных программах — это не исключительная ситуация, а ожидаемое поведение. В правильно написанной программе скорость нахождения и исправления ошибки очень высока);

  4. Понимать важность модульного и интеграционного тестирования, а также непрерывной интеграции. (Современный высоко конкурирующий бизнес требует новых функций в приложении чуть ли не каждый месяц. При интенсивной модификации продукта, работающего на рынке увеличивается вероятность возникновения ошибок, которые раньше не возникали. Именно модульное и интеграционное тестирование автоматически проверяют отсутствие ошибок в новой версии продукта при каждом обновлении);

  5. Уметь автоматизировать рутинные, но важные с точки зрения конечного пользователя этапы разработки продукта. (Времена когда разработчики писали код в обычном блокноте, а затем с помощью консольных утилит создавали программы, уже давно стали историей. С современным уровнем автоматизации, самыми дорогими затратами в производстве программных продуктов является оплата труда разработчиков. Поэтому, чтобы быть конкурентно-способным разработчиком, необходимо иметь навыки автоматизации рутинных операций)

--------------------------------------------------------------------

Данный курс направлен на практическое освоение описанных выше навыков программирования на примере языка Java.

Чтобы эффективно работать, принося компании прибыль и получая заработную плату, каждый разработчик должен иметь следующие основные знания:

  1. Знания языка программирования, навыков работы со средой разработки, а также умение автоматизировать рутинные операции;

  2. Знания предметной области (например, если разрабатываемая система — это интернет магазин, то знание правил вычисления скидок на товары, а также правила действия акционных предложений; если разрабатываемая система — это автоматизированная система приема анализов пациентов, то знание основных форм приема анализов и правил их валидации и т.д.)

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

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

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

Для эффективного обучения на данном курсе ознакомьтесь с рекомендациями по обучению, доступными в разделе: "Рекомендации по обучению на курсе" и выберите для себя наиболее подходящий подход.

--------------------------------------------------------------------

Технологии разработки проекта:

  • Система контроля версий: git;

  • Система хостинга исходного кода: GitHub;

  • Основной язык программирования: Java 11 и выше;

  • Основная реализация Java: OpenJDK

  • Основная среда разработки: IntelliJ IDEA Community Edition;

  • Основная система автоматизации сборки проекта: Maven;

  • Используемые операционные системы: Windows, Linux, Mac OS;

  • Библиотека создания графического пользовательского интерфейса: JavaFX 11 (OpenJFX);

  • Библиотеки для автоматизированного тестирования: JUnit 5, Mockito;

  • Библиотека проверки стиля исходного кода: checkstyle;

  • Библиотека проверки степени покрытия тестами: jacoco;

  • Библиотека синтаксического анализатора исходного кода: pmd;

--------------------------------------------------------------------

Статистика проекта:

  • Количество модулей: 8;

  • Общее количество классов: 525;

  • Количество классов автоматизированного тестирования: 100; (т.е. 20% кода — это автоматизированные тесты)

  • Количество строк кода: 32 421;

  • Количество строк кода без учета комментариев и пустых строк: 22 677;

  • Процент кода, который будет написан слушателем курса: от 0 до 30% (Зависит от того какой процент домашних заданий будет выполнен слушателем курса. Если все, то суммарно это почти 30% кода всего проекта)

--------------------------------------------------------------------

Особенности уроков на данном курсе:

  1. В курсе используется повествовательный стиль изложения материала;

  2. Повествование начинается с описанием проблемы и далее рассматривается как эта проблема решается средствами языка программирования Java;

  3. Видео лекции лаконично чередуются с текстовыми статьями для улучшения эффективности усвоения материала;

  4. Уроки на курсе делятся на следующие категории:

    1. Если урок начинается с префикса "Теория: ", то это означает, что в данном уроке приводится теоретические сведения по теме повествования.

    2. Если урок начинается с префикса "Практика: ", то это означает, что в данном уроке приводится текстовое описание задания, которое должно быть выполнено учеником.

    3. После каждого урока с префиксом "Практика: " идет урок с префиксом "Реализация: ", в котором автор курса в режиме реального времени реализует практическое задание, которое студент должен был выполнить. Сравнивая свою реализацию задания с реализацией, которая выполнена автором курса, студент в самостоятельном режиме способен проверить качество своего кода и и справить его при необходимости.

    4. Все остальные уроки без каких-либо префиксов - это повествовательные уроки курса с теоретическим описание и (или) практическим выполнением какой-либо задачи.

  5. Каждый значимый раздел в курсе завершается уроком с названием "Резюме", в котором собраны основные тезисы по всему разделу в текстовом виде. Основная цель данного урока - систематизировать знания, которые Вы получили в текущем разделе.

P. S. Такая структура уроков с практическими заданиями выбрана не случайно:

  1. Если у студента есть опыт, то он сразу же справится с заданием и на этапе проверки сравнит свою версию с той, которая реализована преподавателем.

  2. Если опыта мало, то студент может, воспользовавшись подсказками и дополнительными пояснениями, реализовать задачу.

  3. Если реализовать задача не получается даже после подсказок и дополнительных пояснений, то студенту необходимо самостоятельно ознакомится с решением, которое реализовывает преподаватель. После ознакомления необходимо уже самостоятельно реализовать данную задачу!

What You Will Learn!

  • Использовать принципы SOLID при разработке проекта любой сложности
  • Использовать императивные и функциональные стили программирования на Java
  • Использовать технику TDD при разработке проекта любой сложности
  • Реализовывать корректные Unit тесты
  • Оценивать качество покрытия тестами Вашего кода
  • Автоматизировать анализ качества написания кода
  • Тестировать графический пользовательский интерфейс
  • Использовать возможности мультимодульной архитектуры Java
  • Правильно использовать шаблоны проектирования в сложном проекте
  • Писать чистый и понятный другому программисту код
  • Разрабатывать кроссплатформенные приложения на Java
  • Реализовывать программный код по неизвестному Вам ранее алгоритму

Who Should Attend!

  • Данный курс является исключительно практическим курсом и предназначен для получения важных навыков, которые отличают профессионального разработчика от студента-любителя и сильно ценятся работодателями