Джун – это вилка зарплат от 400—500 долларов до 800—1000 долларов в месяц;
Миддл – это от 1500 до 3000 долларов в месяц;
Сеньор – это соответственно от 3000 до 5000—6000 долларов в месяц.
Еще раз, это очень неточные цифры. Бывают и Java миддлы, которые живут в глубинке и получают 800 долларов, бывают JavaScript миддлы, которые получают 7000 долларов. А бывают и разработчики-комбайны, которые «колбасят» и на 10к долларов в месяц. А есть PHP разработчики, которые за адаптивный шаблон на WordPress получили 2 000 000 долларов. Вы всегда можете отыскать актуальные цифры и для стран СНГ, и для Европы, и для Америки – это открытая и интересная информация. Также стоит знать, что независимо от выбранной технологии, на уровне «сеньор» зарплаты примерно равны +\– сотня баксов роли не играет.
Этим сфера IT и хороша – здесь ВСЕ зависит только от ваших знаний, умений, стараний и терпения. А дальше выбор за вами.
Часть I
Глава 0. Мы программируем
Мы программируем железо
В наше время мы уже настолько окружены техникой, которая способна выполнять разнообразные программы, что уже воспринимаем это как должное. Что там компьютеры… телефоны, телевизоры, пылесосы (!), видеокамеры, автомобили, даже лифты – все они уже исполняют программы. Но для того чтобы писать хорошие программы, надо хотя бы примерно понимать, как устроен компьютер. В мире программистов компьютеры называются «железом» (хотя сейчас там гораздо больше пластика, стекла и кремния). У некоторых были уроки информатики, но, наверное, как это обычно происходит, они проходили за компьютерными играми :)
Что-же такое компьютер? Компьютер – это устройство, в которое можно ввести какие-либо данные, эти данные могут быть обработаны программой, и в конечном итоге будет выведен результат. В нашей реальности мобильный телефон (это тоже компьютер), в котором запущена программа (Instagram), в который вы вводите данные (ваши нажимы и касания пальцев, когда вы скролите ленту), и в итоге видим результат – новые посты в ленте.
Компьютер – это сложное устройство, он состоит из нескольких модулей, которые нужны для разных задач. В первую очередь самый заметный модуль (устройство вывода) – монитор\дисплей, через него мы получаем всю визуальную информацию. Устройства ввода, по меньшей мере два: клавиатура и мышь (или, например, тачпад). А еще устройство ввода – это цифровой сканер или VR-шлем (и он же устройство вывода). Далее непосредственно сам компьютер, обычно мы видим его как системный блок или нижнюю часть ноутбука.
Самые главные части современного компьютера: процессор (или несколько процессоров), оперативная память, твердый диск, видеокарта, звуковая карта. Процессор – это «мозг» компьютера, но в отличие от человеческого мозга, он не думает, а исполняет команды. Оперативная память – это куда загружаются программы, чтобы выполнять их в текущий момент. Оперативная память не сохраняет данные после выключения питания. Твердый диск – хранит разнообразные данные и программы. Данные на нем не будут потеряны после выключения питания. Чтобы понять разницу между оперативной памятью и твердым диском, вспомните себя, когда вы считаете сколько денег потратили: вы в голове перемножаете количество товаров на их цену (оперативная память), а потом записываете промежуточный результат на бумажку (твердый диск). Манипуляция мыслями занимает гораздо меньше времени, чем запись и потом поиск информации на бумажке – также и с компьютером: он быстро работает с оперативной памятью и гораздо медленнее с твердым диском. Видеокарта занимается ускоренным просчетом данных для последующей отрисовки, как мы все знаем это особенно критично для видеоигр :) Звуковая карта преобразует цифровые данные в электрические импульсы, которые «понимают» аудиоколонки.
Программист на Java в 99% случаев взаимодействует (и иногда сталкивается с нюансами) с дисплеем, клавиатурой, мышкой, процессором, оперативной памятью и диском, а также с другими компьютерами (обычно серверами) которые присылают данные и ждут ответов через интернет.
Мы программируем и пишем программы
Существует огромная пропасть между представлением данных для человека и для компьютера. Для компьютера данные представляются в виде электрических импульсов – есть ток, нет тока. Человек не может читать электричество, и он придумал различные абстракции. И поэтому наличие\отсутствие электрического тока представляется двумя цифрами 0 и 1, это уж позволяет использовать бинарную математику, это уже позволяет путем ввода нулей и единиц управлять процессором и соответственно писать программы. Но такие программы не читабельны – мы привыкли общаться словами и предложениями. И поэтому возникли разнообразные языки программирования, использовать которые для написания программ намного лучше, чем писать единицы и нолики. Сначала возникли языки программирования только чтобы просто программировать компьютеры, позже люди стали создавать языки программирования для работы в разных областях науки и бизнеса. Например, Fortran – для математиков и их формул, Cobol – для экономистов и биржевых операций, Assembler – для низкоуровневого программирования устройств, BASIC – для обучения школьников, Go – для программирования распределённых систем, PHP – для упрощенного написания веб-сайтов. Некоторые языки были созданы как следующий эволюционный шаг: Delphi – эволюция Pascal, Java – эволюция C, C# – эволюция C++ и Java.
Но Java создавали не только для того, чтобы сделать улучшенную версию языка C. Когда компьютер превратился из «монстра научных институтов» в персональный компьютер, стали появляться, одна за другой, операционный системы; возникло большое количество производителей компьютерного железа, которые выпускали кучу всяких устройств, программировать которые обычному программисту, без погружения в глубины документации и драйверов (управляющих железом микропрограмм) было невозможно. И вот в светлый ум доктора информатики Джеймса Гослинга пришла идея создать такую технологию, которая позволила бы программисту писать такой код, который мог бы запускаться на любом железе. И его идея была им воплощена в язык программирования Java и виртуальную машину Java.
В чем суть? Виртуальная машина Java это программный компьютер внутри компьютера обычного на базе операционной системы Windows\MacOS\Unix\…. Виртуальная машина Java (Java Virtual Machine – JVM) специально создается для каждой операционной системы. И JVM знает, как «общаться» с операционной системой и через нее со всеми устройствами, которые могут быть подключены к компьютеру. В чем выгода для программиста? – программист пишет свой код только один раз (!) и ему в своем коде не надо знать на каком компьютере, с какой операционной системой его код будет запускаться. Это огромная экономия времени и денег. Именно поэтому Java код очень надежный и безопасный, он с одной стороны может ограничивать программиста, когда тот хочет «пошалить», а с другой стороны не дает программисту написать код, который может что-то сломать.
Стоит заметить, что концепция «виртуальных машин» получила дальнейшее развитие в других языках программирования, главным образом из-за безопасности. Например, виртуальная машина JavaScript, она встроена в браузер, дает определенные возможности для работы с документом в браузере, для обращения к серверу, но полностью запрещает произвольное считывание данных пользователя с диска. Очень похожая на JVM виртуальная машина Microsoft. NET.
Глава 1. Первая программа
Что такое программирование
Программирование – это процесс написания команд, которые потом будет выполнять компьютер. Очень важно понимать, что компьютер не умеет думать. Все, что компьютер делает: он исполняет команды. У программиста может складываться впечатление, что происходит какое-то «колдунство» и компьютер вытворяет самолично с программой, что захочет. Но на самом деле, это будет только означать, что программист не учел каких-то особенностей функционирования программы или библиотек, которые он использует, или нюансов как работает внешний источник данных, к которому он обращается. Чем профессиональней программист – тем меньше «неожиданных чудес» можно ожидать от написанного им кода.
Программирование на Java состоит из нескольких этапов:
– Написание программы на языке Java в редакторе
– Компилирование программы в байт-код (код понятный виртуальной машине Java) с помощью программы-компилятора
– Исправление ошибок компиляции (compilation errors), если такие произошли в процессе компиляции
– Запуск программы в виртуальной машине Java.
– Исправление ошибок выполнения (runtime errors), если видим, что «что-то пошло не так»
– Повторение пунктов 2—5 пока мы не получили работающую по нашему замыслу программу.
Можно писать код в одном из текстовых редакторов (Notepad, Notepad++, Atom, Sublime) и потом дальше через командную строку запускать компилятор, а потом запускать программу. Но все это громоздко и неудобно, именно поэтому программисты написали специальные программы, в которых можно делать полный цикл разработки программы гораздо проще и удобнее. Такие программы называются IDE (Integrated Development Environment) – интегрированная среда разработки, в ней происходит и написание программы, и компиляция, и выявление ошибок, и запуск программы. К тому же, большинство из них еще и подсказывают разработчику, что и в каком случае можно использовать и где он возможно уже совершает ошибку.
В мире Java-программирования есть несколько популярных IDE: IntelliJ IDEA, Eclipse, NetBeans. NetBeans самая редко используемая IDE на текущее время. Eclipse – это бесплатная IDE, с тысячами полезных плагинов, облегчающая жизнь разработчика. Поэтому, вполне возможно, что в крупной компании, в которую вы придете работать, будут использовать именно Eclipse. И это стоит учитывать, потому что на самом деле вы захотите пользоваться только одной IDE: IntelliJ IDEA – лучшая и самая удобная IDE на текущий момент для написания программ на Java.
Настраиваемся на программирование. Устанавливаем IDE
Так как предполагается, что мы изучаем с нуля, то мы не будем заморачиваться с установкой виртуальной машиной Java и полного пакета для разработчика Java SDK. Достаточно будет скачать текущую версию IntelliJ IDEA, в которой есть все что нам будет нужно для старта.
Заходим на сайт https://www.jetbrains.com/idea/download/ (https://ridero.ru/link/yoOtCjKGYlq_bA)
выбираем версию для скачивания: Ultimate (т.е. полную, но платную, хотя есть пробный период) или Community (тоже достаточную для наших целей)
Скачиваем и запускаем. Проходим через мастер установки, соглашаясь со всем что предлагают:
На Рабочем столе появится иконка приложения:
Дважды кликаем для запуска IntelliJ IDEA. И снова проходим еще через несколько экранов настройки (это будет только единожды):
не импортируем никакие настройки
Соглашаемся…
Выбираем светлую тему (это всегда можно изменить в настройках)
Я скачал версию Ultimate, поэтому выбираю пробный период
И вот финальный экран, где нужно кликнуть на Create New Project.
Слева должно быть выбрано Java, в центре вверху Project SDK: 11 (это версия Java, идущая вместе с IntelliJ IDEA), нажимаем Next.
Ставим галочку Create project from template, выбираем Command Line App и кликаем Next.
В поле Project name вводим HelloWorld (это название нашего проекта) и нажимаем Finish.
Никогда не используйте русских букв (кириллицы) в названиях проектов, классов и т. д.
IDEA немного «подумав» откроет нам основное окно, в котором мы будем разрабатывать наши программы, и также откроется поверх маленькое окошко «Tip of the Day» – просто закройте его кликнув Close.
Теперь вам нужно написать свою первую строку кода, вместо надписи:
// write your code here.
Напишите там: