Когда-то в мире был только Си. Или Бэйсик. Или Паскаль. Это если не считать ассемблер для КР580ВМ. И хотя в книгах можно было найти упоминание ещё и о Фортране, но уже тогда, вместе с упоминаниями, были и предостережения о не самом удачном выборе, если бы вам вдруг захотелось писать на этом языке. Так выглядел мир глазами школьника из СССР.
Начинать тогда предлагалось с Бэйсика. Журнал "Наука и жизнь" так прямо и указывал. А заодно предлагал серию статей, заменявших вводный курс программирования начинающим хакерам. Была, конечно, ещё и "Техника молодёжи" с её занимательно составленным введением в программирование, но только на программируемом калькуляторе. Сегодня, наверное, сложно себе представить, как можно было увлечься каким-то программируемым калькулятором, ведь все с детства привыкли к айфонам с андроидами, но в те стародавние времена, когда книг с фантастикой в местной библиотеке было мало, школьники как некое чудо воспринимали коротенькие фантастические рассказы в "Технике молодёжи", сопровождавшиеся показом, как можно самостоятельно рассчитать все манёвры главного героя около Луны и летавшей где-то неподалёку окололунной станции.
Так мы входили в АйТи. Или в IT? Ну тогда мы даже аббревиатуры такой не знали. А потом пришлось взрослеть.
Взрослая жизнь напомнила о рациональности. Метания от одного увлечения к другому, со сменой языков и мест, в которых новые языки можно было применить, были полезны для сбора житейского опыта, но с точки зрения карьеры мой серьёзный старт всё же был следствием удачи, а не багажа из разных, но не всегда полезных в карьере языков.
Сначала я предпочитал Си. Это очень экономный на количество текста язык. Когда по молодости хочешь всё и сразу, писать кучу слов вроде begin, end и прочих procedure, совершенно не хочется. Казалось, что вот оно, решение! В Си нет таких сложностей! А ещё на нём можно писать программы, которые умещаются на одну дискету в 1.44мб, и даже 5-ти дюймовую 1.2мб, и на дискете ещё остаётся куча свободного места!
Но радость была недолгой. Потому что хотелось всего и сразу. И тут была очень кстати такая штуковина, под названием FoxPro. На ней в текстовом режиме, то есть на экране 40*25 символов, можно было рисовать мышью графический интерфейс! Повторюсь - на исключительно текстовом экране, где нет произвольных линий, кругов, овалов, и уж тем более, живых обоев и прочих развлечений с вашего айфона. Да, такой подход меня реально вдохновил. Это было крайне эффективно. И работало после установки всего с нескольких дискет. Вы можете себе представить GUI IDE, умещающуюся в несколько мегабайт? Плюс, как это принято называть сегодня, весь Runtime, то есть всё необходимое для полноценной работы созданной в этой IDE программы. Вместе с доступом к базам данных. Да, было время...
Но обладая всем этим богатством, я был далёк от настоящего "фэн-шуя". Например, я не знал, что такое индекс (который в базе данных). Да и вообще много чего потом вспоминал как забавы настоящего идиота, развлекающегося с бусами из алмазов путём разбрасывания бусинок по лужам.
Всё это было следствием отсутствия системы знаний. Но удача всё же привела меня к выбору весьма и весьма надёжной опоры. Хотелось краткости, как в Си. И хотелось удобств, как той же FoxPro, идею которой неплохо развили в Visual Basic. Ну и хотелось выхода в интернет!
А интернет тогда был "по талонам". То есть нужно было найти большую контору с толстыми каналами связи и любознательными админами, которые пробили для себя канал в интернет. В интернете тогда были статические сайты. Правда с картинками, что их очень даже оживляло. Но не хватало динамики. И на тот момент динамику предложила принцесса Java (помните такую рекламу чая?).
Это были апплеты (что-то вроде уменьшительно-ласкательного от слова "приложение" по английски). И в апплетах были доступны множество полезных функций, которые сразу, без необходимости каких-то дополнений или скачиваний, имелись в наличии после установки Java. И понеслась возня с 3D анимацией и прочими непотребствами прямо в браузере. Да, та 3D была с приставкой "псевдо", но выглядело весьма занимательно, особенно если ваш браузер поддерживал JIT (это такой компилятор, который прямо в браузере заставлял всё летать намного быстрее).
Но это были лишь игрушки. Настоящим джедаям подавай настоящие развлечения, ведь правильно? И их было у Java! Называлась игрушка J2EE. Ага, с EJB 1.1. Правда скоро появились 2.0, потом даже 2.1, что не могло не радовать, но всё же путь джедая был тернист. Зато в итоге признание пришло почти автоматически - меня легко взяли в контору, которая делала заказной проект на технологиях Java! Услышав моё бодрое рассуждение про J2EE, EJB и прочий Enterprise хлам начала 2000-ных годов, собеседовавшие довольно быстро предложили поработать у них.
Ну а далее я уже не встречал на пути серьёзных проблем с трудоустройством. Благо спрос на Enterprise-разработку стабильно рос, а стэк технологий был вполне в тренде. Оставалось лишь творить в своё удовольствие, ведь как просто - читаешь про новые возможности, видишь их плюсы, предлагаешь в конторе, а там народ ещё такого не читал, и я получаюсь единственным носителем полезного знания. Да, в телеграм каналах тогда про это не писали, и на айфоны уведомления с предложением полайкать не рассылали. Вот ведь была житуха - без телеграмов и прочих вацапов! Хотя ICQ уже была.
Ну так всё же почему?
Почему я рекомендую Java сегодня? Да, прошло время, ушли заработанные деньги, всё вокруг течёт и всё меняется. Но Java жива! И не просто жива. Это целый мир. Это система знаний. Именно этой системы мне не хватало на старте. Без системы я брёл наощупь. Теперь же у меня есть "фонарь во лбу", в смысле мне уже не нужны костыли и крепления для фонаря знаний, он в меня удачно встроился.
Теперь расставим все точки над ё (или над Ё?).
Итак, начнём с краткого синтаксиса. Он вполне себе сохранился и несёт наследие Си в безоблачное будущее. Но что ещё интереснее - в мире много наследников Си. И это не может не радовать! Вы в них как у себя дома! Ну почти. Немного уточняете формат ключевых синтаксических конструкций, знакомитесь со стандартными библиотеками, по быстрому изучаете используемую с языком IDE, и вот вы уже вполне сносно пишете на десятке диалектов Си, хоть и с очень разными названиями, и даже областями применения. Корни Си ещё долго будут вам опорой!
Посмотрим на примеры. В браузерах царствует Java Script. Изначально это была упрощённая Java, урезанная ради лёгкости применения, в первую очередь, в браузерах. Потом пути родственничков разошлись и сегодня JS уже не торт, в смысле от Java там остался лишь похожий синтаксис, плюс часть в неофициальном названии (официальное - ECMА-Script - то есть развод был со скандалом и сменой фамилий). Но ведь похожий синтаксис - это так приятно! Нет там ни тебе begin, ни тебе end. Значит, зная Java, вы без психологических сложностей с отторжением непривычного сможете перейти на JS (если захотите, разумеется).
Хотя семейство Си-подобных языков велико, одним сходством синтаксиса сегодня мало кого убедишь. Поэтому перейдём к распространённости. Не будет большим преувеличением сказать, что серверная часть большинства современных приложений написана на Java. Ну ладно, пусть даже не большинства, но как минимум, того, что написано на Java, точно больше, чем альтернатив на любом другом языке. Это если мы говорим о прикладном (или бизнес-) софте. Именно разнообразие программ в этой сфере стоит принимать во внимание, потому что хоть в мире и присутствуют миллиарды копий винды, но программа-то в данном случае одна, хоть и с вариациями.
Почему нам важно разнообразие программ? Да потому, что все их нужно поддерживать. Или переписывать. Значит, чем больше разных программ, тем больше команд требуется для обеспечения работоспособности такого зоопарка. А чем больше команд - тем больше спрос на программистов. И в частности - на программистов Java. Отсюда вытекают все те большие зарплаты, о которых многие из читателей слышали, но почему-то боялись подать заявку на их получение.
Но распространённость бывает разная. Пока что мы смотрели "вширь". Теперь посмотрим "вглубь". Даже уже упоминавшийся Java Script вполне подходит для понимания глубин, до которых вам будет легко донырнуть, если вы начали с Java. Но в нём всё же есть набор тем, которые нужно серьёзно подучить, поэтому посмотрим на более лёгкие пути. И что мы видим? Мы видим Android. Да, под него всё ещё можно писать на Java. На вполне себе чистой Java. Правда версии всего 1.7, поскольку Гугл решил отказаться от "чужой" для него Java в пользу полностью подконтрольного Котлина (остров около Питера, он же - новый язык для Android-а). Да, жаль конечно, что гуглы хотят всё исключительно в личную собственность, но тем не менее, есть хорошие новости. Новость такая - гуглам нужно переводить на питерский остров всех ранее писавших под Android на Java. Поэтому главный слоган в рекламе Котлина - это почти Java! Да, там всё очень похоже. И мало того, Котлин компилируется в Java-байткод, дабы программы и библиотеки на нём бесшовно запускались на обычной JVM (это набор программ, которые помогают Java быстро бегать). Поэтому разработка под Android для вас будет лёгкой прогулкой, особенно если вы не будете обращать внимание на несколько корявую реализацию библиотек и документации к ним, позволяющих создавать пользовательский интерфейс для Android. Вообще, стоит заметить, что работа с пользовательским интерфейсом слабо стандартизирована, а потому во многих случаях вам придётся иметь дело с той или иной степенью корявости реализации интефейса человек-программа.
Ещё одна отметка глубины - проникновение в браузер. Да, вы можете писать на Java программы, которые будут исполняться в браузере. Как? Очень просто - Java код компилируется в Java Script, а затем уже этот, родной для браузеров язык, оживляет клиентскую часть вашего приложения. То есть нет необходимости учить что-то, кроме Java. А вот в глубины понимания происходящего в браузере и между ним и сервером, вам погружаться придётся. Но это же и есть столь ценное для ищущих людей разнообразие! Которое в Java тоже есть.
Итак, глубины мы оглядели. Теперь треть измерение. Назовём его "толщина". Это весь набор полезностей, который был создан вокруг Java за уже где-то 25 лет её существования. Это реально очень толстый слой шоколада! Там есть всё! Вам надо computer science? Их есть у нас! Или вам 3D моделирование? И этого добра навалом! Или игры? И они есть, хоть и не столь массовые. Как говорится - проще сказать, чего нет. Хотя тут я не уверен, а вдруг всё же где-то есть? Скажем, операционная система, 100% которой написано на Java, есть такая? Ну конечно есть! Вот поэтому я и не уверен, чего же там всё-таки нет.
Итак, массовость, большие зарплаты, наличие всего на свете, глубина, ширина и высота - всё есть! Но ещё есть система знаний!
Мир Java заставляет вас познавать программирование как в глубину, так и в ширину. В данном случае под глубиной понимается степень вашего проникновения во внутренности компьютера. Как работает автомобиль? Очень просто - вставляете ключ и едете. А если что-то сломалось? Вызываете механика. А если механика нет поблизости? Вот тут-то вам и нужно нырять глубже. И Java, благодаря своему всепроникающему наследию, даёт вам возможность опускаться в любые глубины, вплоть до непосредственного общения с железом (вспоминаем операционную систему на Java).
А теперь ширина из предыдущего абзаца. Это технологии. Все, о которых вы когда-нибудь слышали. Веб сервисы? Есть. Базы данных? Есть. Enterprise приложения? Есть. Настольные приложения? Есть. Карманные приложения? Есть. Игрушки, 3D, computer science, machine learning и т.д и т.п. Есть! В нашей "Греции", всё есть (с). И, что крайне важно, оно подаётся очень и очень грамотно! Да, Java создавалась людьми, имеющими большой опыт разработки ПО, а потому они привнесли в неё массу сложных знаний, но поданных крайне элегантно! И за время существования Java эта элегантность оттачивалась на огромном множестве практических примеров. Не зря Microsoft по сути скопировали Java в виде своего C#. Поэтому, забравшись внутрь экосистемы Java, вы найдёте не только разнообразие и много полезных штуковин, но вы найдёте там множество примеров просто красиво спроектированных систем, познав которые, вы не сможете более писать так называемый "говнокод" и городить костыль на костыле.
Итак, не умаляя результатов, достигнутых другими языками, без малейшего сомнения заявляю - в среднем по больнице Java лучше! Хотя, скажем, в отделении гастроэнтероскопии, наверняка есть специфические инструменты, которые спасли известное место немалому количеству пациентов, но граждане присяжные заседатели, мы же за всю больницу несём ответственность! Помните об этом, когда будет писать гневные комментарии с указанием на прекрасные результаты отделения хирургии глаза! Мы за вас всех болеем, целиком! От ушей и до хвоста! Так что не будьте мрачными и хмурыми, скорее записывайтесь к нам в больницу на курсы Java! Мы вас обязательно вылечим!