Русский
Русский
English
Статистика
Реклама

Информатика

Перевод Путь от вычислительной машины к машине координационной

02.11.2020 16:19:26 | Автор: admin
В наши дни существует огромное количество технологий, ориентированных на различные аспекты облачных вычислений. В частности, речь идёт о контейнеризации и микросервисах. Они причина того, что мы стали воспринимать приложения в виде распределённых систем, компоненты которых можно легко разворачивать и перемещать в облаке. Я полагаю, что то, с чем мы столкнулись сегодня это революция. Но дело тут не только в технологиях. Сейчас мы стоим на пороге чего-то настолько огромного, что это может изменить то, как мы воспринимаем и понимаем программы и программные инфраструктуры.



Моя идея заключается в том, что нам, для жизни в новых условиях, нужны новые абстракции и концепции. В науке всегда ищут модель, наилучшим образом отражающую суть реальности. Делается это так из-за того, что на базе подобных моделей можно создавать технологии, удовлетворяющие нуждам человечества. То же происходит и в информатике, с её первых дней, когда исследователи начали автоматизировать вычисления то, на что раньше был способен только человеческий разум. С этого момента понятие вычислительная машина всегда использовалось как база для всего того, что связано с автоматизированными вычислениями. На основе этой модели были созданы самые разные технологии.

Здесь я хочу поразмышлять о новой базовой идее, направленной на работу с вычислительными ресурсами, которая лучше согласуется с реальностью облачных вычислений, чем традиционная модель вычислительной машины. То, о чём я хочу поговорить, я называю коммуникационной машиной (communication machine).

От машины, построенной для вычислений


Исторически сложилось так, что компьютеры и прочие вычислительные машины создавались для автоматизации вычислений. Если идти от абака к современному компьютеру, то окажется, что всяческие вычислители всегда создавали для того чтобы расширить вычислительные возможности человека с использованием внешнего устройства. Теория вычислительных машин была разработана Аланом Тьюрингом с использованием созданной им абстрактной вычислительной Машины Тьюринга, а базовая архитектура вычислительных машин была предложена Фон Нейманом.


Архитектура вычислительной машины

Управление подобной машиной, её программирование, по существу, выполняется с помощью потока битов. Языки программирования появились для того чтобы дать разработчикам инструменты для создания программ, близкие к естественному языку. Такие инструменты призваны были повысить скорость работы и снизить количество ошибок. Все эти языки представляют абстрактные примитивы для описания вычислений, давая программистам широкий спектр возможностей от возможности описывать выражения до возможности объявлять процедуры, функции, объекты. После компиляции всё это превращается в поток битов, который может привести в действие вычислительную машину. Память, устройство управления, арифметико-логическое устройство это базовые концепции вычислительной машины.

вычислительная машина эволюционировала до виртуальной машины


От тех времён до наших дней компьютеры улучшали ради увеличения их вычислительной мощи. Больше памяти, больше процессоров, более высокие тактовые частоты. Вычислительные возможности реальных компьютеров стали настолько велики, что стала возможной виртуализация. Сегодня единственный реальный компьютер может выполнять сотни экземпляров виртуальных машин, которые могут использоваться разными людьми или организациями, то есть их можно продавать по-отдельности. Рост рынка виртуализации это весьма интересное явление, так как это означает, что, в целом, для коммерческих целей не нужна вся вычислительная мощь реальных компьютеров. Вместо этого мы нуждаемся в меньшей, но более доступной вычислительной мощности. Виртуальные машины ценны тем, что их базовые параметры, вроде объёма памяти, количества процессоров, объёма дискового пространства, можно перенастраивать, делая это очень быстро.

Самый интересный аспект виртуальной машины заключается в том, что это не настоящий компьютер, созданный из аппаратных компонентов. Это программа, которая даёт тому, кто с ней работает, иллюзию того, что работает он с реальным компьютером. Это не малозначительный факт, а доказательство того, что существует облачный слой, который даёт нам абстракцию вычислительной машины, нереальной, но ведущей себя так же, как настоящая. Программы, на которых основаны виртуальные машины, созданы именно так для того чтобы дать системным администраторам и программистам что-то такое, что кажется настоящим компьютером, с которым они привыкли работать, но, в то же время, такое, что можно развернуть в удалённом дата-центре.

а потом до систем контейнеризации и бессерверных систем


В наше время эволюция вычислительных машин от реальных компьютеров до виртуальных сделала ещё один шаг вперёд. Следующая ступень эволюции это контейнеризация. Благодаря контейнеризации мы наконец избавились от иллюзии работы с реальной полнофункциональной вычислительной машиной. Вместо этого мы работаем с неким настраиваемым вычислительным ящиком.


Реальные вычислительные ресурсы, виртуализация (независимость от аппаратного обеспечения), контейнеризация (независимость от облачных технологий)

Каждый контейнер оснащён минимальным набором средств, необходимых для выполнения конкретных приложений. Ничего лишнего у него нет. Так как мы можем строить стек технологий контейнера по своему желанию, мы способны выбрать именно ту технологию, которая нужна нам для разработки приложения, используя стандартные протоколы и форматы для организации взаимодействия с другими компонентами. Это важный момент, так каждый контейнер может быть немедленно ассоциирован с его поведением, наблюдаемым извне (тем функционалом, который он предоставляет при обращении к объявленной конечной точке). Это настолько важно, что можно говорить о том, что часть нашей вычислительной инфраструктуры (контейнер) определяется предоставляемым ей функционалом (программным обеспечением). Всё важнее и важнее становится руководство взаимодействием различных контейнеров, а не реализация вычислений внутри этих контейнеров.

Невероятно важное последствие такого подхода можно видеть в бессерверных архитектурах, когда разработчик занимается исключительно функционалом программ, а решение вопросов развёртывания кода и выделения ресурсов ложится на плечи облачного провайдера. Если дойти до такой крайности, то вычислительная машина больше не существует. Она превращается в объём выделенной памяти и в процессорное время. Единственная проблема подобного подхода заключается в сильной привязке к архитектуре конкретного облачного провайдера. Мы вынуждены использовать технологии, выбранные облачным провайдером. С другой стороны, технологии контейнеризации дают нам большую гибкость, так как они позволяют нам самим выбирать инструменты для проведения вычислений. Именно поэтому ниже я продолжу рассуждения, рассматривая контейнеризацию как опору для новой машины и, таким образом, переступая через бессерверные вычисления, которые я считаю особым случаем того, о чём хочу рассказать.

дойдя до машины, созданной для коммуникации


Прежде чем мы продолжим, предлагаю обобщить вышесказанное.


Вычислительные системы сегодня и завтра

В наши дни, когда мы работаем с облачным провайдером, нам всё ещё виден уровень абстракции, представленный виртуальными машинами. Но завтра нам будут доступны лишь контейнеры (многие платформы уже работают именно так). В этот момент виртуальные машины перестанут существовать. Будут только контейнеры океан вычислительных ящиков, реализующих некий функционал. Они будут новым вычислительным слоем, с которым нам придётся работать. В таком случае речь будет уже идти не о битах, а о связях.


Разработчики, общие компоненты и потребители

Новая машина, на самом деле, будет состоять из огромного количества компонентов, которые должны быть соединены для того чтобы получился бы новый программный функционал. Сделать так, чтобы эти компоненты правильно связывались бы друг с другом, будет одной из основных задач разработчиков. В этом сценарии коммуникация и координация станут важнее, чем вычисления.


Связь компонентов

Эта концепция не нова. В 1980-х годах Робин Милнер разработал исчисление взаимодействующих систем (Calculus of Communicating Systems, CCS), дающее математический аппарат, где вычисления выполняются путём настройки связей между процессами. В то же время были предложены и другие математические способы моделирования взаимодействующих систем. Единственное новое явление, с которым мы столкнулись сегодня это то, что коммуникационная машина становится привычной, широкодоступной машиной, которой может воспользоваться кто угодно. Это не нечто, напоминающее специальный инструмент, применяемый в исследовательской лаборатории. Контейнеры это строительные блоки подобной машины, а ту роль, которую раньше играли биты, теперь играют взаимодействия между контейнерами.

Новые технологии для новой машины


Если мы примем тот факт, что являемся свидетелями революции, касающейся самых основ вычислений, мы можем приступить к изменению подхода к новой коммуникационной машине и к связанным с ней технологиям. Перед нами стоит большая задача, которая заключается в поиске технологий, которые лучше, чем те, что у нас есть, подходят для программирования подобной машины. Программирование API, архитектура как код, сервис-ориентированные вычисления, микросервисы, хореография это всего лишь некоторые из понятий, которые нужно принимать в расчёт, рассуждая о будущей эволюции технологий для коммуникационной машины.

К написанию этой статьи меня подтолкнуло участие в создании нового языка программирования (Jolie), тот опыт, который я накопил в ходе работы. Мы начали с математической базы CCS, адаптировав её к сервис-ориентированной модели. Jolie это язык, где коммуникационные примитивы находятся на том же уровне, что и вычислительные. Работая над Jolie, мы заметили, что примитивы, встроенные в язык, могут упростить коммуникацию и координацию, сокращая время разработки программ и упрощая их поддержку. Это происходит из-за того, что некоторые аспекты программирования встроены в сам язык, а не привнесены в него внешними библиотеками. Более того, при таком подходе разработчику нужен сравнительно небольшой объём знаний для создания распределённых сервис-ориентированных приложений. Дело в том, что разработчикам нужно лишь знать язык, а не, вдобавок к языку, владеть набором библиотек и фреймворков.

Мы находимся в самом начале новой эры информатики и ситуация может очень быстро измениться. Но с полной уверенностью можно говорить о том, что существующий сегодня поход к программированию через некоторое время полностью изменится.

Как вы думаете, правда ли то, что будущее компьютеров это координационные машины?



Подробнее..

Логика предикатная, формальная и сентенциальная. Кванторы и создание информатики

22.12.2020 02:11:35 | Автор: admin

1 | Введение:

Логика, как эпистемологический инструмент, изобретена независимо в трёх отдельных государствах: Греции (Аристотелем), Китае (императором Цинь Шихуанди) и Индии. В последних двух перечисленных государствах логика не распространилась настолько, чтобы прижиться и получить развитие. В античной же Греции произошло наоборот логика сформировалась в своих основах столь определённо, что дополнилась только через 2 тысячелетия.

Значительные изменения в греческую логику, помимо Дж. Буля, О. де Моргана и Б. Рассела, внёс Готлоб Фреге он придумал 2 вида кванторов. А также Курт Гёдель, открыв знаменитые две теоремы о неполноте, описывающие невозможность объединения множества доказуемых утверждений со множеством истинных. Он утверждал, что доказательства математики зависят от начальных предположений, а не фундаментальной истины, из которой происходят ответы. Одна из главных идей его работ состоит в том, что ни один набор аксиом не способен доказать свою непротиворечивость.

На этом этапе некоторые заметят влияние платонизма на австрийского логика, это на самом деле так. Гёдель не раз заявлял о влиянии метафизики Платона на собственную деятельность. Но сам Платон развитию формальной логики лишь способствовал косвенно, в истории он вносит вклад в развитие другого направления философской логики. Платоном созданы вопросы, на которых основывается вся западная философия вплоть до наших дней. Философия в том виде, котором она известна, возникла только благодаря Платону.

Платон учитель АристотеляПлатон учитель Аристотеля

В другие периоды в логику также вносили дополнения:

  • античной школой стоицизма введены термины модальности, материальной импликации, оценки смысла и истины, которые являются задатками логики высказываний;

  • также средневековыми схоластами введены несколько понятий;

  • Готфридом Лейбницем изменена нотация.

Но главное, что сами логические операции не изменились. Органон Аристотеля, как сборник из 6 книг первоисточник, где подробно описаны главные логические законы. Органон (с древнегреческого ), означает инструмент. Аристотель считал, что логика является инструментом к познанию. Он объединяет методом получения информации такие науки:

  • Физика наука о природе;

  • Метафизика наука о природе природы;

  • Биология раздел физики, наука о жизни;

  • Психология раздел физики, наука о душе;

  • Кинематика раздел физики, наука о движении;

  • И др.


2 | Терминология:

У каждой из наук должен быть идентичный фундамент в способе получения гнозисов (знаний), который позволит упорядочить информацию и выводить новые силлогизмы (умозаключения). Только таким образом получится прогресс в познании истины. Без логики наука была бы похожа на коллекционирование фактов, т.к. информация бы не поддавалась анализу.

Сам Аристотель находит логике как средству убеждения иное применение: в риторике, спорах, дебатах, выступлениях и т. д., описывая это в своём труде Риторика. В западной философии принято давать чёткие определения перед рассуждениями, поэтому определимся с терминами. Логика наука о правильном мышлении.

  • В языковой зависимости возникают трудности трактовки термина наука, но даже в оригинальном названии труда Фридриха Гегеля Наука логики Wissenschaft der Logik, употребляется слово наука (Wissenschaft). Поэтому придём к консенсусу и будем считать, что научной можно назвать ту дисциплину, в которой возможны открытия, исследование и анализ. Логика в таком случае наука, ибо внутри неё возможно совершать открытия. Яркий пример комбинаторика Лейбница.

  • Слово правильный сразу веет нормативными коннотациями: правильное поведение, правильное выражение лица, и т.д. Перечисленное соответствует некоторым критериям и логика выставляет их (критерии) для правильного мышления.

  • Слово мышление понимается на интуитивном уровне, но чёткое объяснение затруднительно, обширно и иногда не объективно.

Бюст АристотеляБюст Аристотеля

3 | Формальная и неформальная логика:

Первоначально, деление логики происходит на формальную и неформальную. Формальная логика отличается тем, что в отличие от неформальной записывается уравнениями. Неформальная логика пишется выражениями в форме языка, поэтому она подходит для риторики, а формальная логика для абстрактных наук.

Формальная логика равным образом делится на дедуктивную и индуктивную. Они различаются тем, что в дедуктивном аргументе истинность условий гарантирует истинность умозаключения или вывода. В индукции же, при истинности условий одинаково возможен ложный и истинный вывод.

Законы формальной логики:

1. Закон тождества (А = А): эквивокация или двусмысленность недопустимы. Нельзя подменять одно понятие, другим.

2. Закон непротиворечия (А А = 0): одно и то же утверждение не может быть истинным и ложным одновременно.

3. Закон исключения третьего или бивалентности (А А = 1): утверждение может быть либо истинным, либо ложным третьего не дано.

Принципы формальной логики:

1. Принцип достаточного обоснования: истинная мысль должна быть обоснованной и считается достоверной только в том случае, если в её пользу приведены достаточные основания.


4 | Сентенциальная логика (алгебра высказываний):

Базовые операции сентенциальной логики логики высказываний, где заглавная буква означает предложение:

Отрицание (Утверждение A истинно тогда и только тогда, когда A ложно): если имеем утверждение А и имеем утверждение не А, то когда утверждение А будет истинным, утверждение не А будет ложным. Также и когда утверждение А будет ложным утверждение не А будет истинным.

Конъюнкция (Утверждение A B истинно, если и A, и B истинны. Ложно в противном случае): в английском языке союз and/&; в русском и. В утверждении А и В, между А с В стоит знак конъюнкции . Утверждение А и В является истинным, если А с В являются истинными одновременно. Если хоть один элемент ложен, то всё утверждение ложно. А и В подразумевает, во-первых истинность А, во-вторых истинность В.

Дизъюнкция (Утверждение A B верно, если A или B (или оба) верны. Если оба не верны утверждение ложно): в английском языке союз or; в русском или. Существует два типа дизъюнкции включающая и исключающая (в логике используется включающее или). Условия таковы, что утверждение А или В будет истинным, когда один или оба элемента истинны, но никогда когда оба элемента ложны. Это противоречит нашему обыденному мышлению, т.к. когда спрашивают: Чай или кофе? мы выбираем один элемент, но в логике подразумевается выбор не только одного, а нескольких возможных.

Импликация (Утверждение A B ложно, только когда A истинно, а B ложно): в английском языке therefore; в русском языке следовательно. Подразумевает истинность одного элемента при истинности другого. Потому что условия истинности соблюдаются всегда, кроме случая, когда А истинно, а B ложно. Поэтому утверждение: А ложно, следовательно B ложно истинно. Покажется, что когда А ложно, а В истинно не соблюдаются условия, но это не так. Если вы скажете, что после дождя промокните это утверждение будет истинным вне зависимости от того, пошёл дождь или нет.

Эквивалентность (Утверждение A B истинно, только если оба значения A и B ложны, либо оба истинны): если истинно утверждение А, следовательно В и истинно утверждение В, следовательно А, то истинными являются выражения А эквивалентно В и соответственно В эквивалентно А. Условия истинности соблюдаются в случаях, когда оба элемента истинны или оба ложны.


5 | Предикатная логика первого порядка:

В XX веке, после добавлений в логику работ Готфрида Лейбница и Готлоба Фреге, на основе этой дисциплины создаётся новая информатика. Языки программирования основываются на видоизменённой логике Аристотеля предикатной логике, описательная способность которой выше, чем у логики высказываний (сентенциальной). Прежде чем разобрать этот новый тип логики, поговорим об её отличии от сентенциальной. Главная особенность предикатной логики, что заглавными буквами обозначаются предикаты, а не целые высказывания. Можно сказать, что предикат это математическая функция, которая накладывает множество субъектов на множество утверждений.

Высказывание Я пошёл в зоопарк состоит из субъекта и предиката. В нём субъект Я, а предикат то, что остаётся кроме субъекта ( пошёл в зоопарк). Субъект кто совершает действие в предложении или имеет выраженное свойство; предикат всё оставшееся. Таким образом, если в сентенциальной логике высказывание Я пошёл в зоопарк выражалось бы одной заглавной буквой, то в логике предикатов использовались бы две буквы (заглавная и подстрочная): P для предиката; x для субъекта. Субъекты обозначаются переменной (x), потому что в предикатной логике появляются две относительно новые операции: универсальный и экзистенциальный кванторы. Особенность кванторов заключается в том, что ими возможно записать выражение истинное при всех возможных переменных х или хотя бы при одном.

Универсальный квантор (квантор всеобщности) обозначается символом , с указанием переменной под ним. Возьмём утверждение Все пингвины чёрно-белые. В логике высказываний оно бы выражалось как X P, где X нечто являющееся пингвином, а P нечто являющееся чёрно-белым. В предикатной логике же используются субъекты и предикаты, поэтому нечто являющееся пингвином (субъект), обозначалось бы переменной х снизу под предикатом. "х" является пингвином, следовательно, является чёрно-белым. Записывается так: P(х) B(х), где P(х): х пингвин; B(х): x чёрно-белый.

Однако этого недостаточно, ведь непонятно, один субъект х чёрно-белый или больше одного, а может вообще все. Поэтому утверждение "х" является пингвином, следовательно, является чёрно-белым, берётся в скобки и перед скобками используется символ с переменной х под ним которые вместе и будут универсальным квантором.

Универсальный квантор переводится как: Для всех "х" истинно, что . Теперь утверждение х является пингвином, следовательно, является чёрно-белым с универсальным квантором перед ним, расшифровывается так: Для всех "х" истинно, что "х" является пингвином, следовательно, является чёрно-белым. Это означает, что чем бы ни был объект во вселенной, если этот объект пингвин он является чёрно-белым. Полная запись будет выглядеть так:

_x(P_{\left(x\right)}B_{\left(x\right)})

Экзистенциальный квантор (квантор существования) обозначается символом с указанием переменной под ним. Возьмём утверждение Некоторые пингвины серые. Как и в прошлый раз, выражение "x" является пингвином и "х" является серым возносим в скобки и ставим перед ними квантор, в этом случае экзистенциальный с указанной переменной. "x" является пингвином и "х" является серым записывается так: P(х) C(х), где P(х): х пингвин; C(х): x серый.

Экзистенциальный квантор можно перевести так: Есть такой "х", для которого будет истинно, что . Подразумевается, что есть как минимум один х, для которого выполняются условия выражения. Если вам говорят, что картофеля не существует, достаточно показать одну картофелину для опровержения этого утверждения. Также и с кванторами, если существует хотя бы один серый пингвин, то утверждение об отсутствии серых пингвинов будет ложно. Полная запись экзистенциального квантора для выражения Есть такой "х", для которого будет истинно, что "x" является пингвином и "х" является серым, будет выглядеть так:

_x(P_{\left(x\right)}C_{\left(x\right)})

6 | Заключение:

Примечательно, что есть возможность перевода одного вида квантора в другой. Возьмём утверждение Все пингвины не являются серыми. Для универсального квантора текстовая запись будет такая: Для всех "х", будет истинным утверждение о том, что если "х" является пингвином, то "х" не является серым объектом. Но утверждение изменяется и для экзистенциального квантора, используя знак отрицания: Нет такого "х", для которого бы было истинным утверждение о том, что "x" является пингвином и "х" является серым.

В середине XIX века, Готлоб Фреге дополнил логику Аристотеля двумя этими операциями, которые позже сформировались в отдельную дисциплину предикатную логику. С введением в логику экзистенциального квантора (после универсального) предикатная логика в основе своей, завершилась как система


Источники:

1 Аристотель: Органон "Первая аналитика" и "Вторая аналитика";

2 Аристотель: Риторика;

3 Готлоб Фреге: Исчисление понятий;

4 Monatshefte fr Mathematik und Physik 1931 г.: Курт Гёдель О принципиально неразрешимых положениях в системе Principia Mathematica и родственных ей системах;

5 The Early Mathematical Manuscripts of Leibniz;

6 Мельников Сергей: Введение в философию Аристотеля;

7 youtube.com;

8 cyberleninka.ru.

Подробнее..

Эксперимент допуск или как студентов уму разуму научить

24.02.2021 08:04:01 | Автор: admin

Чем еще заняться в период пандемии и удаленки, как ни разглагольствованием о великом? У всех нас появилось много свободного времени, которое теперь не обязательно тратить на дорогу, и если кому-то не жалко тратить это время на просмотр сериалов, инстаграм и борьбу с диваном, то мне за первый месяц все это порядком поднадоело и захотелось чего-то продуктивного.

Начитавшись разных статей и книжек про эффективность, а также вдохновившись такими людьми как Стив Джобс сразу хочется пойти и перевернуть этот гребаный мир. Но уж коли никто не хочет дать мне тот самый рычаг, попробуем перевернуть что-то поменьше. Например, нашу закостеневшую систему образования. Ну или не совсем систему, скорее так, маленький ее кусочек, а затем посмотрим на результат. По традиции тренироваться принято на кошечках, а в моем случае на студентах. Эксперимент уже проведен, результат оказался положительным. А благодаря пандемии появилось время об этом написать.

Сразу хотел бы предупредить о двух вещах: во-первых, ни один студент во время экспериментов не пострадал, во-вторых, писать статью я начал еще где-то полгода назад, но мне текст казался сырым, а времени поправить его не было, но в эти выходные все-таки удалось это сделать, и я решил публиковать, иначе еще на полгода зависнет! В общем, эта статья сильно запоздала с выходом (или точнее ее автор запоздал с написанием). Но я лично клинический оптимист, так что надеюсь она все равно будет полезна. Уж если не читателям, то хотя бы автор получит фидбек (стакан же всегда полон, если не водой, то воздухом).

Почти четыре года назад мне довелось стать преподавателем двух предметов в Новосибирском Государственном Университете на Факультете Информационных Технологий. Потом из-за нехватки времени появилось желание отказаться от преподавания одного из них, но лектор попросил оставить хотя бы одну группу. Предмет, на мой взгляд, бесполезный, а введен он был для галочки.

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

Благо, лектор сам сказал, что на парах можно рассказывать все, что не противоречит названию, а называется он Информатика. Соответственно впихнуть туда можно все, что душе угодно. Первые два года я принимал лабораторные, так как это был весомый аргумент для студентов не прогуливать пары. Но уж слишком они неинтересные. Немного удавалось уровнять чаши весов за счет рассказов про ежедневный инструментарий разработчика, то есть такие инструменты как:

  1. Git

  2. Jira\Redmine\Trello

  3. Code review

  4. Unit-тестирование

  5. CI\CD

В прошлой статье я подробно рассказывал про эти нововведения, не хотелось бы повторяться. Скажу только, что все эти вещи, как и проведение мини-хаккатона с поеданием пиццы, было решено сохранить и приумножить. Вообще студенты - народ специфический, они хотят только развлекаться, а от них требуют учиться, так вот я всегда говорю, что те, кому удастся найти баланс между первым и вторым самые счастливые люди. Вот и я ставлю своей целью пустить их энергию в нужное русло. И чтобы им было в кайф, надо сделать так, чтобы формат занятий был близок к их привычной среде обитания!

На что вообще клюют студенты-перваки? Надо чтобы было драйвово, интересно, понятно, стильно, модно, молодежно. Кстати, многие аутсорс-компании тоже делают на этом акцент, и мне не верится, что это случайность. Теперь информатика это предмет все обо всем, этакий окружающий мир для программистов.

Нужно было расширить предыдущий список чем-то таким, чтобы, во-первых, приучить ребят работать в командной строке и, во-вторых, посильнее заинтересовать.Фантазия позволила придумать следующую концепцию:

  1. Отменяем лабы и домашки. Пусть все делают на самих парах. Я буду показывать, а они повторять

  2. Оценка должна быть за посещаемость. Иначе вообще никто ходить не будет

  3. Все работы делаются вubuntu. На выбор студентов можно установить ее себе на ноут, можно пользоватьсяVirtualBoxилиWSL

  4. Все, что делают студенты должно быть наглядно. Им это нравится. Круто же когда ты увидел не чиселки в консоли, а открыл самостоятельно настроенный сайт в браузере. Магия должна быть видна невооруженным взглядом

  5. Стоит сделать акцент на таких вещах какNPMиyeoman, они просты и в то же время позволяют делать сложные вещи, это опять же должно повысить интерес к самому процессу и приучить ребят работать в консоли

  6. Часть заданий нужно сделать в группах, это повысит ихSoftSkills

Лайфхак. Если хочется расположить людей к себе, их нужно накормить. Для голодных студентов это актуально вдвойне.

Каждую пару я захожу в одну из кофеен, расположенных в универе, и покупаю себе кофе. Я стал периодически покупать большой ЭмЭмДемс и оставлять его на первой парте. Все желающие могли угоститься. И теперь в девять утра полная аудитория довольных студентов. И нет, мне не платили за рекламу m&m's. Да и в принципе за преподавание платят смешные деньги хватает в аккурат заправить полный бак моего крокодила.

Но я не жалуюсь, у меня прекрасная работа, а вот это все - для души! Но в целом, за страну обидно, не должно быть преподавание благотворительностью!Но вернемся к нашим студентам! Взамен старых лабораторных нужно было что-то придумать, и, отталкиваясь от описанных выше принципов, был составлен примерный список заданий. Список был довольно внушительный, но тогда мне казалось, что ребята из НГУ должны были справиться. Пришлось некоторые вещи скорректировать в процессе. Основной критерий тут достаточно прост, если видно, что студентам становится не интересно, то нужно что-то менять.С другой стороны, без завышенных требований не получилось бы узнать максимум.Далее постараюсь кратко, но емко рассказать о самих заданиях и том, как проходил процесс их освоения.

ПоднимаемGitlabна локальной машине.Тогда автору показалось это не слишком сложным (инструкция на сайте есть, команд всего несколько), зато очень впечатляющим, круто, когда на твоей машине поднялся огромный сайт с кучей кнопочек и настроек. Плюс ко всему это хорошо коррелирует с рассказом проGitиCI\CD. Здесь был мой первый промах - студентам оказалось сделать подобные вещи сильно сложно. Задача осложнилось тем, что студенты устанавливали себе разные дистрибутивы, и у кого-то все взлетело сразу, а у кого-то вообще никак не стартовало. В общем, они долго плевались и делали это с неохотой. В следующем году это задание будет выброшено, уж слишком сложно получилось. В следующем году планирую сделать определенный образ убунты вVirtualBox, чтобы выполнив все действия по инструкции, все заработало.

УстанавливаемDockerи делаем то же самое в доккере. Это всего одна команда, и тут ребята должны были понять, для чего этот самый докер нужен, и как сильно он упрощает жизнь (не кидайтесь помидорами, я знаю, как он может усложнить жизнь, но они же пока маленькие, не стоит их сразу пугать.) Надо сказать здесь ребятаточно также разбились на два лагеря: те у кого личные ноутбуки с успехом поддерживаютDocker(это либо те, у кого поддерживаетсяHyper-Vили либо же те, кто пользуетсяUbuntuкак основной системой) и те, кому пришлось долго возиться сDockerToolboxиVirtualBox. Я разрешил тем ребятам, у кого не удалось настроить окружение, просто забить на это задание и посмотреть, как это должно выглядеть у той половины, которой все удалось настроить. Задание с докером не хотелось бы выбрасывать особенно потому, что оно отлично вписывается в рассказ про облачные сервисы на подобииAzureиAmazon.Добиться цели, конечно, удалось, ребята увидели, что множество команд можно заменить одной, если вDockerесть уже готовое решение. Но само задание надо будет доработать напильником.

Создаем проект наApacheCordova.Используем тот жеyeoman, комплим и заливаем результат на телефон. Благо, сейчас это можно сделать достаточно просто и даже без проводов. Здесь снова акцент идет на наглядность. Менять в самом проекте ничего не нужно, ну разве что поиграться с какими-нибудь названиями или заголовками. Это было первое задание, когда у студентов действительно загорелись глаза. В следующем году это задание будет передвинуто в самое начало для большей мотивации.

Создаем проект наAngular. Мы создавали обычныйHelloWorld. Суть в том, чтобы показать студентам процесс создания проекта. Хотелось, чтобы они увидели разные подходы и не испугались, когда их попросят сделать что-то подобное на работе или в универе. Помню, как сам впадал в ступор, когда приходилось делать подобные вещи, потому что в универе привыкаешь к тому, что как правило надо открытьVisualStudio(илиIdea) и нажать кнопочку наGUI-интерфейсе Создать проект. Но не для всего естьGUIинтерфейс, да и не всегда он нужен. Вроде простая истина, но процесс ее осознания достаточно сложный, а для того, чтобы облегчить эту учесть достаточно всего один раз об этом рассказать.

Последние два задания потребовали наличияNodeJsи это хорошо коррелировало с рассказом про консольные скрипты и что их можно писать не только наbashилиpowershell, но такжеpythonили дажеjs. Просто для каждого языка есть свой интерпретатор. Это опять же не делает их знатоками в данных областях, но расширяет их кругозор.

С точки зрения практики этого хватит, но лектор говорил, что нужно обязательно всем выступить с презентациями. Мы сошлись на том, что гораздо прикольнее будет заставить всех ребят выбрать случайную статью с хабра прочитать и вникнуть в нее.А на паре мы кратко обсудим каждую статью. Статьи должны быть уникальными. Такой формат зашел, примерно за полторы пары мы обсудили с дюжину статей. При том все были вовлечены, и, в конечном счете, ребята расширили свой кругозор.

Чтобы не слишком нагружать юный мозг, нужно было чередовать пары с практикой и только теорией. Под теорией я подразумеваю рассказы об инструментарии. Эти пары проходили как и раньше, в целом ребятам достаточно интересно, здесь обошлось без инноваций.

Еще в силу моей занятости, несколько пар пришлось отменить. Но восстанавливать как-то надо. По традиции сделали мы это наYoutube. Но как сказал один из наших преподавателей про онлайн-образование: Лекция по интернету - это худшее, что могли придумать, я ведь никогда в жизни столько сам с собой не разговаривал. Все-таки тяжко говорить, не видя других лиц и их реакции.

Подводя итоги

Было бы нечестно сказать, что все прошло гладко, скорее здесь был первый блин комом.Я взял достаточно высокую планку, многие вещи студентам были не понятны. Пришлось на ходу переобуваться и менять задания, но думаю в следующем году получится найти баланс между сложностью и заинтересованностью, при котором все будут довольны. Позитивно сказалась работа в группах, индивидуально ребята не могли все осилить, а когда в группе есть 1-2 человека более сильных, то процесс идет лучше. Тут главное не допустить ситуации, когда только эти двое работают, а остальные сидят в телефонах. Еще один прием, который я взял на вооружение, дать ребятам разные задания, а затем сделатьswapи заставить их научить друг друга. Все это повышаетSoftSkills, которые обязательно пригодятся в жизни.

В целом, студенты были довольны предметом. По моим ощущениям, им было куда интереснее, чем прошлые два года. Удалось хоть не на много, но расширить их кругозор и заинтересовать их магией программирования. В начале этого семестра был удивлен тем, что студенты, которых мне довелось учить информатике год назад, сами связались со мной и попросили преподавать у них Объектно-Ориентированное Программирование. Хотя еще на парах по информатике я говорил им, что это две совершенно разные вселенные, на ООП халявы не будет, из-за ООП люди вылетают из универа, но их это не остановило. Что ж, хотят пожестче пускай.

А еще не так давно пара студентов с четвертого курса попросились ходить на пары по тому же ООП. Я опять же не против и добавил этих ребят в общий чатик в ВК, и вот какой получился у них диалог. Все-таки приятно, когда старания не проходят даром!

Касаемо ООП все осталось как и раньше, ничего лучше я придумать не смог. Мы все так же играем в реальную работу, заливаем код вGit, двигаем задачи вTrello, создаем пул-реквесты, используемIoC-контейнеры и пишемUnit-тесты. Подробно об этом я писал в прошлой статье.

Еще как оказалось, если взять ребят, которых я уже учил, им гораздо легче рассказывать про сложные вещи. Они уже более или мене подготовлены, они знают что-то в теории и теперь им можно показать, как оно работает на практике. Можно быть уверенным, что ребята имеют некоторый бэкграунд. В общем, это круто, когда можно не учить с нуля, а продолжить их обучение. Получается, что это уже не два отдельных предмета, а целая система, в которой прошлые школьники вначале получают полезную и легко воспринимаемую информацию, а по мере их взросления коэфициент ответственности растет, и на втором курсе им уже придется пыхтеть изо всех сил. Разве не так и должно быть все устроено в жизни? И мне бы хотелось дать им такие знания и возможности, при которых, если не все, то большая часть дверей для них будет открыта. Опыт оказался весьма интересным, и нужно развивать такие подходы в дальнейшем. Когда удастся все сбалансировать, думаю, будет полезно посмотреть в сторону развития в студентахSoftSkills, но пока это только перспективы. А пока, было бы очень полезно получить фидбек от читателей на тему того, что они думают на этот счет.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru