У нас в Ковчеге 26-29 декабря 2016 и 3-6 января 2017 прошло погружение в кроссплатформенную разработку программного обеспечения. Погружение – это знакомство с несколькими обширными темами в программировании, оно необходимо для снижения порога входа в мир программирования. Все приобретённые навыки закрепляются практически: каждый на своём компьютере пишет ту же самую программу, что и все остальные, работая над ошибками и понимая, как компьютер реагирует на изменения программы и её компонентов. Знаний, полученных на учебном мероприятии – достаточно для того, чтобы дальнейшее самостоятельное обучение проходило значительно легче.
Чтобы не программировать «что-нибудь», сразу была взята конкретная тема и поставлена цель: в конце погружения у нас должно получится приложение, которое запускается и корректно работает на смартфонах под управлением Android, iOS и Windows 8.1+ и на настольных компьютерах с операционной системой Windows 8.1 / Windows 10. Приложение называется «расчёт объёма круглых лесоматериалов по ГОСТ 2708-75» проще говоря – в нём можно посчитать объём каждого бревна и просуммировать полученные объёмы. Целевая аудитория приложения – все имеющие отношение к лесозаготовке и переработке.
Состав участников получился разновозрастный: в первые дни отсеялись несколько не очень заинтересованных учеников, остались трое взрослых и двое подростков которые дошли до финала.
В первые два дня была обобщённо пройдена тема программирования, как обзор вида деятельности, основные тенденции, языки, платформы, состав программ. Потом перешли на конкретику и примеры. Создали первое консольное приложение. Консольные приложение – самые простые, потому начали с них. Изучили, из чего состоит программа, операторы языка программирования, проверка ввода, вывод на экран.
В конце третьего дня у каждого было общее представление об объектно-ориентированном программировании, которое реализовалось в консольном приложении (под Windows и под Mac). Это приложение умело считать объём круглых пиломатериалов, но не по ГОСТ, а по формуле объёма усечённого конуса. Сначала одиночных брёвен, а потом – по списку. Результат работы программы выглядел так: пользователь вводил начало и конец диапазона, и ему показывался список брёвен и их объём.
Windows |
MacOS |
В приложении реализован класс, в котором хранятся значения длины и диаметра, и рассчитываются объём. А также реализована проверка вводимых значений (если вместо цифр писали буквы, то программа выдавала предупреждение)
На 3-й день была теоретическая и практическая части по базам данных. Создали базу данных, содержащую таблицу с объёмами лесоматериалов.
4-й день было введение в построение кроссплатформенных интерфейсов. Программа конца второго дня была переписана на Xamarin.Forms и выдавала результат похожим образом под Adnroid, iOS и Windows. К сожалению, история не сохранила снимков экрана. Из замечательного стоит отметить перенос класса (бόльшей части программы) без изменений внутреннего кода из консольного приложения 2-го дня – на кроссплатформенное приложение 4-го дня.
Потом все участники разъехались на празднование Нового года и встретились снова 3-го января.
На 5-й день (3 января) была теоретическая часть по шаблонам проектирования приложений. «На пальцах» объяснен паттерн Model-View-ViewModel, на примере нашего приложения. Начали с «модели» - базы данных. Создали базу данных SQLite, содержащую таблицу с объёмами лесоматериалов.
Первую половину 6-го дня привязывали базу данных в программе, а во вторую – проектировали интерфейс и сценарии поведения пользователя. Это оказалось очень увлекательным: участники сыпали идеями и перебивали друг друга. Потом долго не расходились по домам. В итоге получился вот такой макет, нарисованный на школьной доске.
Вначале 7-го дня начали воплощать интерфейс в XAML-разметке. Но потом отключилось электричество. Остаток занятия мы теоретизировали и разговаривали на отвлечённые околокомпьютерные темы.
В последний день лично у меня был лёгкий мандраж: мы не успеваем закончить то, что должны были сделать. Нам не хватало ровно того времени, на которое вчера мы остались без электричества. Доделали интерфейсную часть приложения, но не успели связать вывод из базы данных и интерфейс. Но ничего: вечером самые стойкие собрались и попробовали ещё раз взять штурмом приложение. Уже ночью мы смогли добиться стабильной работы приложения на Android, чуть позже на Windows и немного погодя, уже после погружения – на iOS. Ура! Снимки экрана прилагаются
Windows
Android
iOS
За 8 дней мы сделали рабочий вариант приложения. На нём можно производить расчёты в соответствии с ГОСТом.
Что дальше? Мы пока не знаем. Соберёмся снова и придумаем. Мы написали программу, познакомились и «поиграли» на реальном проекте с основными понятиями в разработке программ, но этого мало по сравнению с тем, что предстоит выучить, чтобы делать что-то подобное самостоятельно. Тем погружение и хорошо: оно даёт общее представление и конкретизирует направление дальнейшего самообучения, по принципу: «я уже делал это, осталось понять - как»:).
Алексей Канищев ([email protected]).
экопоселение Ковчег, Калужская область, 2017г