Читать бесплатно книгу «JAVA 2021: лёгкий старт» Павла Александровича Забелина полностью онлайн — MyBook
image

Что все-таки выбрать?

Здесь я позволю себе посмотреть на проблему выбора языка программирования с точки зрения требований рынка. И рынок диктует свои жесткие требования, и они растут из года в год. Первое десятилетие 21 века было «золотым веком» для того чтобы выбрать язык программирования по-вкусу: достаточно было выучить только его, и вы уже могли идти и трудоустраиваться. В 2020 году все намного сложнее – от вас будут требовать гораздо больших знаний даже на позиции джуниора. Вот что вам потребуется знать «в довесок» и чем вы будете заниматься, если выберете какой-либо из языков топ-10.

Swift. Вы будете писать приложения под iPhone\iPad. В основном это будут приложения с многочисленными окошками. Периодически от вас будут требовать написать что-либо на Objective C, потому что Swift еще слишком молод и нестабилен, чтобы были проекты только на нем.

PHP. Вы будете все время писать сайты, и это в лучшем случае. А скорее всего вы будете настраивать WordPress\Drupal\Joomla под требования заказчиков сайтов. Да есть маленькая вероятность, что вы найдете работу где надо будет писать сервер на PHP (т.е. не сайт, а, например, систему для мультиплеерных игр), но обычно для этого используются другие технологии. А также вам придется (жизнь заставит) выучить HTML, CSS, JavaScript – сайты без них не могут существовать.

JavaScript. Тут есть несколько вариантов. Первый, самый распространённый: вы доучиваете еще HTML, CSS и идете писать сайты, веб-приложений, мобильные SPA (single-page application). Второй вариант: вы используете знание языка JavaScript для написание серверной части на NodeJS – и сейчас это очень востребовано, потому что это гораздо легче, чем писать сервер на C++/C#/Java. Третий вариант: вы доучиваете еще HTML, CSS и идете писать игры – Adobe Flash (основная технология для написания игр для браузеров) уже умер, – конкурентов нет. За последний год сформировался новый тренд (пятый путь): вы учите основы HTML CSS JavaScript, потом изучаете в деталях фреймворк ReactJS и вуаля! – вы реакт-программист, – это такой мутант, порожденный трендом и спросом (но сейчас это самый! Простой способ войти в IT с достойной зарплатой – спрос на таких программистов просто зашкаливает).

C#. Вы не будете скорей всего писать на нем программы для Windows. C 99% вероятностью вы будете использовать технологию ASP.NET и писать сайты, да вам придется выучить HTML, CSS и JavaScript (на уровне основ). Второй вариант: писать игры на Unity. Третий вариант: вы все-же будете писать десктопные приложения, например, дописывать новые функции Skype.

С++\С. Вы сможете писать ВСЕ. Из очень востребованного сейчас: сервера, мобильные игры, системы управления дронами и автомобилями, системы безопасности и наблюдения.

Python. Тут все просто: идете в написание серверной части для сайтов, а так как никто не любит содержать много разработчиков без надобности – доучиваете HTML, CSS, JavaScript. Второй вариант, аналитик данных – дорога в банки, обычно там это самое востребованное. Третий вариант: вы не программист, а научный деятель.

Java. Разработка серверов и поддержка существующих систем в банках и корпорациях, которые вложили миллионы долларов в программные комплексы и хотят продолжать их развивать. Второй вариант – это разработка Android приложений. И здесь вам тоже есть что выбирать: стартапы, компании среднего размера, корпорации.

Про зарплаты

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

Junior (джун, малыш) – разработчик, который выучил технологию в теории, но опыт коммерческой разработки у него равен нулю. Его основная задача – это не погоня за зарплатой, а за опытом, чтобы скорей перейти в следующий статус.

Middle (середняк) – разработчик с опытом, таких большинство. Выполнение поставленных задач – его зона ответственности.

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

Architector (архитектор) – это вершина карьеры разработчика, дальше только управление проектами и человеческим ресурсом. Архитектор строит системы с учетом требований заказчика. Это как академик в науке.

Так вот, про зарплаты. Они конечно же разнятся в зависимости от:

– Заказчика – зарубежный заказчик платит больше и это «больше» может быть больше в разы.

– Востребованности – чем меньше специалистов, тем дороже (хотя может быть нет специалистов, потому что это уже никому не нужно)

– Технологии – заказчики очень падки на тренды, хотите получать больше – следите за трендами.

Если говорить о зарплатах, как о «средней температуре по больнице»:

Джун – это вилка зарплат от 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.

Бесплатно

4.49 
(45 оценок)

Читать книгу: «JAVA 2021: лёгкий старт»

Установите приложение, чтобы читать эту книгу бесплатно