Чи є життя після C++, або як я вчив другу мову після першої

Чи є життя після C++, або як я вчив другу мову після першої

  • 26 січня, 2017

Всім привіт. Мене звати Роман Гизатулін, мені 31 рік. І я — програміст.

Початок цілком скидається на монолог у клубі людей зі шкідливими звичками :) Хоча для програмістів, на моє скромне переконання, цілком можна було б відкривати аналогічні клуби. На своєму прикладі можу сказати, що моє захоплення програмуванням є також моєю залежністю. Це величезна частина мого життя, яка мене цілком поглинає і часто не залишає місця для «нормальних звичних радостей буття», на думку сторонньої людини.

Ще зі шкільних часів я знав, чим буду займатися у майбутньому. Звичайно, тоді я слабо уявляв, як виглядає написання коду і всі аспекти вузькоспеціалізованої кухні програмістів зсередини, але інтерес до комп'ютерів і тяга до розуміння алгоритмів написання комп'ютерних ігор (те, що було цікаво школярам у 14-15 років :)) дали свої плоди.

Я займався самоосвітою. Вже у старших класах я виступав у ролі консультанта з вилучення втрачених даних у різного роду держустановах. Цього було мало, потрібні якісно інші знання, і мною було прийнято рішення вивчати програмування на більш високому рівні. Так я остаточно і безповоротно пов'язав своє життя з кодом, алгоритмами, байтами та іншою комп'ютерною термінологією.

З чого почати вчити C #?

Повелося так, що в навчальних закладах для початківців програмістів навчання стартує з самого поширеної та низькорівневої мови програмування — C++, з якої і я почав свій шлях до розробки програмного забезпечення. На цій мові я осягав ази програмування мікроконтролерів (Arduino). На низькорівневих мовах (асемблера) можна написати все, що завгодно, але життя коротке, і на це буде потрібно багато часу і сил. З метою економії життєвих ресурсів були винайдені високорівневі мови програмування, з появою яких швидкість створення потужних програмних систем істотно зросла.

У комп'ютерній школі ми вивчали розробку під платформу MS. NET на її основною мовою C #, яка є C-орієнтованою і дуже потужною. Для засвоєння і систематизації отриманих знань я пробував самостійно писати програми для автоматизації різних рутинних процесів (наприклад, ведення обліку комунальних платежів та архівації даних). Після закінчення навчання я влаштувався на роботу, де мав можливість на практиці реалізувати отриманий теоретичний досвід.

Рекомендуємо курс по темі

Під час робочого процесу я брав участь у розробці desktop-додатків під ОС Windows у декількох великих проектах, пов'язаних з торгівлею акціями на біржах. Після чого займався розробкою кількох веб-сайтів на все тому ж NET + C #. Ці платформа і мова програмування є одними з найпотужніших і з недавніх пір відкритими інструментами для програмування. Також доводилося конструювати низькорівневі швидкодіючі бібліотеки на С++ для інтеграції з більш повільними додатками.

Друга мова програмування — Java

В один прекрасний день я отримав можливість розширити горизонти своєї свідомості, коли мене задіяли в проекті, який був заснований на мові програмування Java. Маючи природну тягу до пізнання і вивчення нового, я, не замислюючись, погодився. Тоді я познайомився зі всією красою відкритості коду і набору інструментів цієї платформи. Незважаючи на те, що мова Java менш багатий функціоналом (в порівнянні з C #), він дозволяє писати програми і сайти промислового рівня і запускати їх на всіляких платформах.

Рекомендуємо курс по темі

У вивченні, а також осягненні всіх нюансів цієї мови програмування мені прийшли на допомогу приклади, які знаходяться у вільному доступі, коду і відео на відповідні теми, велике співтовариство (stackoverflow, habrahabr), де я не соромився здатися безглуздим і задавав масу питань, що цікавлять. Це все дозволило мені в ньому дуже швидко розібратися і приступити до розробки.

Вчитися мови програмування Java мені пощастило на живому desktop-додатку, який повинен був працювати як на Windows, так і на Mac OS, а також взаємодіяти із сервером по мережі. Звичайно ж, не обійшлося і без Google і товстих книг по Джаві, які потрібно було вивчати ночами. Так я отримав величезний досвід кроссплатформеної розробки, побудови та розгортання кроссплатформених додатків на Java для різних операційних систем.

Проблеми з java

Звичайно, перешкодити вивченню нової мови програмування може відсутність цікавих і складних практичних завдань і, безумовно, часу. У моєму випадку подібні проблеми були відкинуті, і я кинувся у бій з завданнями на Java. Величезний плюс був у тому, що джава є C-орієнтованою мовою і синтаксично дуже схожа на C #, а я з нею вже стикався. Ці мови схожі в багатьох аспектах, таких як синтаксис, платформа виконання, підхід до розробки.

Безсумнівно, є невеликі складнощі з переходом між цими мовами (C # -> Java і назад), наприклад, середовище розробки, прийняті стандарти форматування і підтримки коду і величезна кількість всіляких фреймворків і бібліотек. Знання двох цих мов програмування не тільки відкриває два паралельні світи, але і дозволяє писати взаємодоповнюючі додатки, використовуючи обидві платформи.

Я думаю, що через деякий час ці мови прийдуть до спільного знаменника і будуть працювати один з одним без проблем.

Поради починаючому програмісту

Своим месседжем я бы хотел донести до вас несколько основополагающих моментов:

  • чем более обширными и глубокими знаниями вы обладаете в области программирования (а знание двух и более языков программирования — это несомненный плюс в вашем развитии как высококлассного специалиста в области IT), тем выше ваши котировки на современной бирже IT-труда;
  • чем выше уровень вашей грамотности и осведомленности в вопросах быстро изменяющихся технологий, тем проще вам реализовать свои амбиции;
  • чем труднее вам кажется поставленная задача, решение которой вы все-таки найдете, тем проще вы будете приступать к новым, на первый взгляд, трудно достижимым целям, и таким образом повышать свой профессиональный уровень;
  • чем более вы будете вовлечены в процесс, тем большее удовлетворение от работы получите в итоге, ведь самая лучшая работа, по моему твердому убеждению, — это та, которая является вашим хобби.