Замість вступу, або як я став програмістом

Вивчати програмування я почав ще в школі на уроках інформатики, де в рамках шкільної програми навчали основам програмування з використанням мови програмування Pascal і компілятора Borland Turbo Pascal v.7.0. Саме тоді в мене й з'явилась мрія навчитись писати комп'ютерні ігри. Проте матеріалу в межах шкільної програми мені було дуже мало, і я замовив в книгарні книгу, яку побачив у одного з учасників олімпіади з інформатики: «Розробка алгоритмів та програмування мовою Turbo Pascal» (В. Я. Сердюченко). З цієї книги мене почало затягувати в надзвичайний світ програмування. З цього джерела знань я навчився працювати з різними режимами екрану, виводити в потрібне місце інформацію, малювати графіку тощо. Проте робити власні ігри я ще так і не навчився.
Після школи я продовжував навчання у виші, паралельно в рамках самоосвіти вивчаючи можливості Turbo Pascal. Першою реальною «пробою пера» для мене був графічний редактор для ігрових спрайтів (спрайт-редактор), який я написав на першому курсі навчання. Я довго обдумував, яким я хочу бачити цей редактор, робив на папері ескізи інтерфейсу, писав на клаптиках паперу фрагменти коду для реалізації певних функцій, а тоді під час зимової відпустки взяв напрокат комп'ютер і почав кодити… До першої компіляції редактора я встиг набрати кілька сотень рядків програмного коду, і коли компілятор почав обурюватись на помилки, мене накрило розчарування… Трохи перепочивши, я з новими силами взявся за роботу На реалізацію базових функцій мені вистачило декілька днів, а точніше, вечорів і ночей ;-), перш ніж вдалося отримати приблизно те, що я запланував. Функціонал редактора був дуже простий: попіксельне малювання в палітрі 16 кольорів, збільшення фрагменту зображення, збереження у форматі .pcx, проте для мене це стало значним досвідом роботи з графікою.
Згодом я влаштувався на роботу в приватну фірму, де виникла потреба перенести написані на Turbo Pascal програми з ОС MS-DOS в ОС Windows. Там я вперше побачив Delphi. Я був вражений, наскільки просто стало зробити зовнішній вигляд програми — як з елементів дитячого конструктора! Проте повністю адаптувати програму, яка розроблена для MS-DOS, в ОС Windows – значна проблема, оскільки архітектура цих систем різна, а відповідно в багатьох випадках було швидше і легше розробити нові програми, використовуючи нові можливості Delphi. Проте в деяких проектах вимагалось використання консольного текстового інтерфейсу (друк був реалізований за допомогою виводу безпосередньо на принтер того, що зображено на екрані), тому довелось шукати альтернативи. Так я познайомився з іншими компіляторами мови програмування Pascal, серед яких був і Free Pascal Compiler. Можливості цього компілятора тоді для мене були вражаючими — повна сумісність з компілятором Borland Turbo Pascal, можливість компілювати програми для різних операційних систем і різні архітектури процесорів, вбудована підтримка бібліотек для роботи з базами даних, графікою, обладнанням тощо. Саме за допомогою цього компілятора я спробував переписати свій спрайт-редактор для ОС Windows – так з'явилась версія редактора 2.0. Власне кажучи, нововведень було небагато — підтримка палітри у 256 кольорів і відповідні зміни у інтерфейсі користувача, але це було теж немале досягнення — моя перша програма, яку була можливість скомпілювати під дві різних операційних системи!
Через деякий час я змінив роботу, влаштувавшись програмістом до бюджетного лікарського закладу. Там я повернувся до використання Delphi і розробив декілька програм для автоматизації бухгалтерського обліку та медичної статистики.
Приблизно в той же час мені випадково трапилась поштова розсилка по програмуванню від «Эверест» — центра практичної інформатики. В першу чергу мене заінтригувала назва курсу — «Создаём свою первую игру в Delphi». На той час у мене вже був достатній досвід програмування, проте розробляти доводилось по більшому рахунку одноманітні програми, орієнтовані на автоматизацію бухгалтерського обліку. Побачивши вступ до цієї розсилки, я згадав свою дитячу мрію і виконав підписку з надією все ж таки навчитись самому робити комп'ютерні ігри.
Проте після завершення безкоштовної частини розсилки я був трохи розчарований — найскладнішою грою, розробка якої була викладена на уроках розсилки, була карткова гра «21». Я очікував значно більше, проте початок вже було зроблено і далі я продовжував самостійне вивчення теми програмування комп'ютерних ігор, але далі теорії руху в цьому напрямку так і не було.
Поступово мене почали цікавити операційні системи сімейства Linux, відповідно я став шукати можливість використовувати для цієї ОС звичні мені інструменти для програмування. На щастя, такі інструменти були — середовище програмування Borland Kylix: те ж саме Delphi для Linux, тому розробляти нові програми можна було одночасно для цих двох ОС. Проте в цих двох інструментів був один суттєвий недолік: їхня вартість. Звісно, можна було користуватись “піратськими” версіями, але я планував продавати власні програми, і з часом могли виникнути проблеми з ліцензією, тому пошуки інструментів продовжувались.
І ось одного разу не пам'ятаю вже на якому форумі я прочитав про безкоштовну альтернативу для Delphi - Lazarus. Ось що про нього написано у Вікіпедії:
Lazarus — вільне середовище розробки програмного забезпечення для компілятора Free Pascal Compiler. Інтегроване середовище розробки надає можливість багатоплатформової розробки застосунків в Delphi-подібному оточенні.
Дозволяє відносно легко переносити Delphi-програми з графічним інтерфейсом в різні операційні системи: Linux, FreeBSD Mac OS X, Microsoft Windows.
Lazarus розповсюджується на умовах GNU General Public License, а значна частина бібліотек, зокрема LCL — на умовах м'якшої GNU Lesser General Public License.
Саме це середовище найбільш повно відповідало моїм потребам: повністю безкоштовне і навіть з відкритим початковим кодом, можливість розробки для різних операційних систем і висока сумісність з Delphi. Перші спроби перенести написані на Delphi програми в Lazarus виявились успішними, не дивлячись на те, що Lazarus на той час знаходився в стані ранньої бета-версії і постійно вдосконалювався. Трохи здивував великий розмір скомпільованої програми, але це не було великою проблемою завдяки використанню додаткових утиліт. Декілька років я продовжував користуватись версією Lazarus з SVN-репозиторія, який регулярно оновлював і таким чином завжди мав свіжу версію.
Проминуло ще декілька років, і один мій знайомий надихнув мене ідеєю створити свій сайт. Над тематикою я довго не роздумував — звісно ж, програмування, але як виділитись серед безлічі інших сайтів аналогічної тематики? Рішення прийшло саме собою — сайт повинен бути орієнтований на розробку ігор для початківців. Оскільки переважна більшість матеріалів в Інтернеті (тематичні сайти, курси, книги, окремі уроки тощо) орієнтовані на більш академічний стиль викладення матеріалу, а приклади, які використовуються для ілюстрації, типові і досить нудні, вивчення програмування з самого початку на прикладах розробки ігор, так як це було зроблено у згаданій вище розсилці, повинно зацікавити відповідну аудиторію.
Отже, оскільки з тематикою сайту було вирішено, потрібно було підготувати початковий матеріал, визначитись з іменем сайту та хостингом. Оскільки для програмування я користують середовищем Lazarus, а тематика сайту — розробка ігор, назва сформувалась сам собою — Lazarus-games. Перший варіант мого сайту мав назву lazarus-games.ru і був розміщений на безкоштовному хостингу, де й пропрацював понад два роки. Проте недавно сайт заблокували за перевищення ліміту використання ресурсів сервера, що свідчить про зріст його популярності. Оскільки сайт тримався на чистому ентузіазмі, я не планував вкладати грошей, тому зробив резервну копію усіх матеріалів, які були опубліковані, і сайт через невеликий проміжок часу видалили за неактивність.
Проте до мене звернулись через соцмережу з проханням чи не міг би я надати вихідні коди ігор, які були розміщені на сайті, оскільки в Інтернеті такої інформації стосовно навчанню програмування на Lazarus не є багато. Тому я вирішив створити новий сайт, але цей раз українською мовою, оскільки на мою думку (і не лише мою) уроків по програмуванню на українській мові практично немає, а те, що є, знову ж таки практично не пов'язане з розробкою ігор або орієнтовано на середовище Delphi.
Отже, мій блог призначено в першу чергу для тих, хто хотів би навчитись робити власні комп'ютерні ігри, але не має уявлення про програмування. Практично вже з другого уроку почнемо писати роботоздатні програми. З кожним новим уроком будуть розглядатись нові можливості мови програмування і приклади їх застосування в комп'ютерних іграх.
Я намагатимусь максимально доступно викладати матеріал, поступово переходячи від простого до складнішого, детально розглядаючи вихідний код і більш детально пояснюючи складні та не зовсім зрозумілі моменти. Порядок подачі матеріалу наступний: спочатку ставимо задачу, описуємо алгоритм для її вирішення, лише тоді розглядаємо вихідний код реалізації алгоритму. В кінці кожного уроку буде посилання на архів з вихідним кодом, який можна завантажити і перевірити на роботоздатність. Оскільки Lazarus дозволяє створювати програми для різних операційних систем, усі приклади ігор для уроків перевіряються на роботоздатність як в ОС Windows, так і в Linux.
Надалі я буду використовувати наступну термінологію:

  • IDE (Integrated Development Environment) — інтегроване середовище розробки, для скорочення далі по тексту так буде називатись Lazarus;
  • компіляція — процес отримання готової програми з вихідних кодів;
  • додаток — готова до використання відкомпільована програма;
  • проект — набір файлів вихідного кода, форм, ресурсів, службових файлів і т. д., необхідних для отримання виконуваного файлу додатку;
  • вікно — зовнішній вигляд додатку в процесі виконання;
  • форма — зовнішній вигляд додатку в процесі проектування.

Якщо в процесі освоєння матеріалів будуть виникати додаткові питання, зауваження чи пропозиції — не соромтесь, пишіть коментарі — саме для цього вони й призначені :-).
Також при вивченні матеріалів рекомендується користуватись додатковою літературою, може згодитись будь-який підручник по Delphi, також на сторінці завантажень будуть доступні декілька підручників по Lazarus/Free Pascal.

Немає коментарів:

Дописати коментар