І так, друзі, в чому каверза? Я не програміст за освітою, як ви вже могли здогадатися із назви блогу, за освітою я електрик. Ну якщо бути точніше, то інженер-електрик у напрямку відновлювані джерела електроенергії, але щоб розібратися, як я дійшов до життя такого, потрібно почати трохи раніше. Усі мої знання програмування зводяться до абсолютного самонавчанню, і я не маю чіткого, адекватного оцінного судження про рівень моїх знань. Точніше не так, я впевнено можу сказати, що в порівнянні з людьми, які цьому навчалися або займаються на постійній основі, я не знаю нічого.
З чого все почалося? Це так само і відповідь, чому саме цією мовою програмування я писатиму. У школі, далекого 2007-го (ось я і повернув свій 2007-й), на уроках інформатики нам викладали Pascal. Мені так це сподобалося і так мене це зачепило, що я вивчив весь річний курс майже за тиждень, і почав намагатися писати якісь дрібні програмки, які особливо нічого корисного не робили, але вони працювали, цього мені, як школяреві, було вже достатньо. Вчили нас спочатку в Turbo Pascal. Ніколи не забуду цей білий та жовтий текст на синьому фоні.

Приклад коду в Turbo Pascal
Потім наша вчителька з інформатики, мабуть піддавшись якомусь ентузіазму, знайшла PascalABC, який порівняно з Turbo Pascal мало того, що мав вже більш сучасний візуальний дизайн, так ще й був російською. Хоча звичайно російська мова в меню була то й не особливо потрібна, адже все одно код пишеться англійською, але це вже дрібниці.

Приклад коду в PascalABC
Загалом у школі я обмежився Pascal-ем і не став особливо заглиблюватися в те, які взагалі мови програмування бувають, чим вони відрізняються і так далі. В університеті, коли я вступив туди вперше, так мене через півтора року відрахували, ми спочатку теж вивчали Pascal, а потім C, причому без об'єктного орієнтування, тобто для мене по суті крім безпосередньо синтаксису в різних мовах не особливо щось змінилося. Через це язик С мене не зачепив, просто тому що в Pascal на той момент я вже знав більше.

Приклад коду в С++
ККоли ж я вступив до університету вдруге, мені показали Delphi. Моєму щастю не було межі. Я міг уже на той момент писати програми з повноцінним інтерфейсом, якими могли користуватися інші люди без жодних проблем. Звісно курс з Delphi я так само моментально освоїв, не за тиждень звичайно, але за місяць точно, і просто перестав ходити на лекції. А коли настав час складати іспит, викладач мене навіть не впізнав. Іспит я здав з першого разу, собі та всім, хто навколо мене сидів, і після цього викладач навіть не став сперечатися зі мною на тему, чому я не ходжу на лекції. Лабораторні я так само здавав, не ходячи на них, собі та всім, хто мене про це просив. Звичайно ж, не за безкоштовно. Ось такий ось я «єврей», не в образу євреям сказано буде.

Приклад робочого простору в Delphi 7
Після першого курсу у нас була навчальна практика, і на славу богам, вона теж була з програмування, хоча вчилися ми на електриків на секунду. Сказати, що я на той момент заробив, це нічого не сказати. З проханням зробити їм літню практику до мене прийшла чи не пів потоку, а на потоці нас було близько 50 людей. Я настільки часто і довго сидів на кафедрі, що навіть викладач, який вів літню практику, почав виганяти мене, щоб я не підказував і не допомагав іншим. Хоча в результаті, цей же викладач попросив мене зробити якусь подобу прикладу вирішеної літньої практики для майбутніх курсів, і для цього прикладу ми вибрали варіант, який ніколи нікому не трапиться, щоб його не можна було просто списати.
Звичайно, моє захоплення не закінчилося допомогою однокурсникам. Я писав і щось для себе, і для знайомих, які навчалися на інших спеціальностях, але в них теж було програмування. Загалом, перші два курси я допомагав усім, хто просив. Потім усе стихло. Так, звичайно, я вивчив набагато більше, ніж нам давали на лекціях, і все це просто тому, що я хотів щось реалізувати і шукав інформацію в інтернеті.
На середині четвертого курсу мій друг покликав мене працювати у сферу мобільного маркетингу. Не знаючи, що це, але дуже зацікавившись темою, я погодився і спочатку, поки я тільки вчився і розбирався в цьому всьому, я забув про програмування зовсім. Хоча тоді в мене вже було розуміння, якими мовами що пишеться, де використовується і так далі, але нічого нового я не вчив. Я був студентом, і для мене щось вчити вже було мукою, а особливо якщо за це ще й платити треба було. Самі розумієте, у студента, навіть на стипендії, грошей і не дуже багато, та й інтереси, куди витратити ці гроші завжди були. Але через півроку або близько того, коли я вже більш-менш розумів, що, так, як і заробляв на цьому гроші, я маю на увазі сферу мобільного маркетингу, я помітив, що є речі, які я можу для себе особисто спростити , зробивши маленьку допоміжну програму.
У процесі написання цієї програми я дізнався ще кілька нових речей, які раніше не використовував, а також перейшов з Delphi 7, яку нам викладали в університеті, на більш нову версію, яку конкретно зараз вже і не згадаю, чи то ХЕ2, чи ХЕ5 . І на мій великий подив, написану мною маленьку програмку почали використовувати, і інші співробітники фірми, на якій я працював. Так, нас там було не так вже й багато, але для людини, яка в принципі ніколи не навчалася на програміста, той факт, що його продукт затребуваний навіть у вузькому колі людей, був приводом для гордості та щастя.

Невелика програма, яка нагадує розшифровку для абревіатури країни і до якого цінового регіону країна відноситися
Але ні що не вічне, і через півтора роки я пішов із цієї фірми. Після написання тієї невеликої допоміжної програми я намагався написати ще одну подібного типу, але вже для особистих потреб, але мені так і не довелося її закінчити. На момент звільнення, а це був 2016-й рік, з урахуванням моєї діяльності в університеті, крім програм, які були необхідні для здачі лабораторних чи практичних завдань, я написав лише одну справді закінчену та робочу програму. Так, до цього були й інші, але вони або були не закінчені, тому що я втрачав до них інтерес, або вони втрачали в актуальності, наприклад, була програма, яка спрощувала розрахунки в завданнях з такої дисципліни як ТОЕ, але ми перестали вирішувати такі завдання раніше, ніж я закінчив програму повністю.

Незакінчений "Комплексний калькулятор" для спрощення розв'язання задач з ТОЕ
І ось у 2017-му, через півроку після мого звільнення з тієї фірми, до мене приходить той самий друг, який мене залучив до мобільного маркетингу, і пропонує попрацювати на нього вже в його особистій фірмі. Звісно спочатку ми й не думали нічого розробляти самотужки, були питання іншого роду, переважно організаційні чи документальні. Але коли вже все було більш-менш налагоджено, почали з'являтися думки, що ми можемо написати власний софт для внутрішнього використання. Ідей було кілька, причому деякі з них я запропонував сам. У результаті майже півтора року існування фірми ми намагалися реалізувати 5-ть різних програм.
Чому намагалися? Ну тому що не всі з них були реалізовані повною мірою, і лише три отримали повсюдне використання, причому одну з них навіть було «перевипущено». І ось якраз на цьому етапі, коли ми намагалися реалізувати всі свої ідеї, я знайомлюся із ще більш новою версією Delphi. Я точно не згадаю, з якою версією я починав усі ці проекти, але точно можу сказати, що закінчував я їх уже в Delphi Berlin. І ось тут ми і підійшли до найцікавішого. На початку я звісно не звертав уваги, що останні версії Delphi можуть дати вам можливість писати програми одночасно під кілька платформ, і я зараз кажу не про Windows і MacOS, або як вона зараз називається OS X, а я кажу про Android і iOS. І коли в мене з'явилася вільна хвилинка, я почав у цьому розбиратися. У результаті свою останню програму, яка була напевно і найуспішнішою і найпродуманішою, ми переписали і під Windows і під OS X. Так, її довелося переписувати абсолютно з нуля, тому що у кросплатформових додатків по-іншому влаштовані властивості візуальних елементів, та й самі візуальні елементи відрізняються..
Звісно на цій хвилі я спробував, просто спробував, заради інтересу, запустити щось на своєму Android планшеті, і коли це «щось» запустилося, моєму щастю не було межі. Я мало того, що міг робити кроссплатформенние програми, так я ще міг і додатки створювати. І все це нам тією мовою, з якою я знайомий. У процесі написання цих 5-ти програм я тісно познайомився з API методами і JSON відповідями на запити, тому що всі 3 з 5-ти програм працювали саме в прив'язці до API, а дві працювали з Excel файлами, і там я теж дізнався досить багато нового, особливо щодо взаємодії з різними форматами та коректного відображення даних із файлу в програмі. Все це було дуже цікаво та пізнавально. А найпрекрасніше, що на початку цього шляху я не знав нічого ні про API ні про JSON ні про те, як працювати з Excel файлами. Було поставлене завдання, його треба було вирішити. Добре, що в інтернеті є безліч інформації у вільному доступі.
Ось така вийшла передісторія про те, чому саме Delphi і як я з усім цим познайомився.