Удивительно, сколько людей по ходу обучения программированию упускают эту важную, но очень даже простую тему, и очень удивляются потом, когда натыкаются на флаги то тут, то там, пока не разберутся
Двухпозиционные переменные
Флагом называется переменная(или свойство/поле объекта), которая хранит данные логического (True/False) либо 1/0. Собственно, в математической логике как раз и обозначается истина числом 1, ложь числом 0.
Очень просто запомнить, почему такой вид переменных называется именно так — у флага на флагштоке ведь два состояние: поднят/опущен. Так и здесь. Хотя мне больше нравится думать о таких переменных, как о выключателях: две позиции — «вкл» или «выкл». Или о лампочках-индикаторах — горит или не горит. Иногда — о рычагах, у которых тоже два положения, или кнопках, которая при одном нажатии уходит вглубь корпуса, а при втором выходит обратно.
Зачем нужны такие переменные?
Как я выше написал, можно представлять переменные-флаги в виде индикаторов. Если код большой и в нём приходится управлять кучей разных объектов, важно уметь в любой момент посмотреть состояние того или иного объекта.
Флаг может показывать, можно или нельзя выполнять какое-то действие, например, открыть дверь(электронный запрограммированный замок, состояние заперт/не заперт).
Флаг может показать, включено или выключено какое-либо устройство, например, двигатель, робот-пылесос, опасный автоматический станок, автополив, охранная система.
Флаг может сигнализировать об опасности или проблеме — как лампочка(обычно красного цвета) может сигнализировать о какой-нибудь поломке в машине, нехватке топлива, о разгерметизации салона самолёта, о повышенном количестве газа рядом с газовой плитой и т.д.
Как заметить переменную-флаг?
Очень просто, такие переменные легко заметны, когда они стоят одиноко в условии справа от if — никакого оператора сравнения или чего-то ещё, просто переменная или поле объекта и всё. Часто это значит, что переменная или поле хранят именно True/False или 1/0.
Ну и, само собой, вы заметите, если в коде написано что-то вроде
is_in_black_list = True;
то есть присваивание переменной значения True/False или 1/0.
Вот такая вот простая по идее тема, которую многие при обучении пропускают и изучают уже самостоятельно — флаги в программировании.
Удивительно, сколько людей по ходу обучения программированию упускают эту важную, но очень даже простую тему, и очень удивляются потом, когда натыкаются на флаги то тут, то там, пока не разберутся
Двухпозиционные переменные
Флагом называется переменная(или свойство/поле объекта), которая хранит данные логического (True/False) либо 1/0. Собственно, в математической логике как раз и обозначается истина числом 1, ложь числом 0.
Очень просто запомнить, почему такой вид переменных называется именно так — у флага на флагштоке ведь два состояние: поднят/опущен. Так и здесь. Хотя мне больше нравится думать о таких переменных, как о выключателях: две позиции — «вкл» или «выкл». Или о лампочках-индикаторах — горит или не горит. Иногда — о рычагах, у которых тоже два положения, или кнопках, которая при одном нажатии уходит вглубь корпуса, а при втором выходит обратно.
Зачем нужны такие переменные?
Как я выше написал, можно представлять переменные-флаги в виде индикаторов. Если код большой и в нём приходится управлять кучей разных объектов, важно уметь в любой момент посмотреть состояние того или иного объекта.
Флаг может показывать, можно или нельзя выполнять какое-то действие, например, открыть дверь(электронный запрограммированный замок, состояние заперт/не заперт).
Флаг может показать, включено или выключено какое-либо устройство, например, двигатель, робот-пылесос, опасный автоматический станок, автополив, охранная система.
Флаг может сигнализировать об опасности или проблеме — как лампочка(обычно красного цвета) может сигнализировать о какой-нибудь поломке в машине, нехватке топлива, о разгерметизации салона самолёта, о повышенном количестве газа рядом с газовой плитой и т.д.
Как заметить переменную-флаг?
Очень просто, такие переменные легко заметны, когда они стоят одиноко в условии справа от if — никакого оператора сравнения или чего-то ещё, просто переменная или поле объекта и всё. Часто это значит, что переменная или поле хранят именно True/False или 1/0.
Ну и, само собой, вы заметите, если в коде написано что-то вроде
is_in_black_list = True;
то есть присваивание переменной значения True/False или 1/0.
Вот такая вот простая по идее тема, которую многие при обучении пропускают и изучают уже самостоятельно — флаги в программировании.
Среди детей и подростков, пришедших обучаться программированию, часто встречаются , которые не хотят учиться программированию. Они приходят на это направление, потому что не хотят заниматься чем-то потруднее — учить какой-нибудь немецкий или дополнительную математику. На занятиях такие стремятся как можно меньше работать и как можно больше развлекаться, отвлекаться, филонить и т.д.
Некоторые преподаватели стремятся заинтересовать, найти подход и т.д. Это, конечно, правильно, но какое-то время. А некоторые преподаватели по неопытности могут возиться с таким учеником месяцы. Я же стараюсь выявить такого товарища как можно скорее и поставить всё чётко — или стараешься и вместе пробуем найти то, что тебя заинтересует, или я подключаю родителей и решаем это дело быстро. Ещё ни разу не пожалел о том, что такой ученик ушёл. Если он устал от нагрузки и ему ничего не интересно, то я в таком участвовать не буду. Я знаю, насколько современные дети могут уставать просто от школы, и не собираюсь мучать ни себя, ни такого ученика.
Мальчик с задержками в развитии. 9 лет и кое-как умеет читать, проблемы в социальном плане, в других — я не стал вдаваться в подробности.
Пришёл этот мальчик попробоваться на кружок программирования, так как большинство остальных не подошли. Даю ему среду, где читать не надо — стрелочки, кружочки только. Задачи в духе «напиши роботу, как ему двигаться, чтобы пройти через лабиринт». Как пошёл, как пошёл! Дошёл до довольно сложного уровня. Уставал только быстрее, чем большинство, но за время работы успевал куда больше.
В общем, задержка задержкой, читает плохо, но алгоритмическое мышление огого как работало уже в 9 лет. Сейчас ему лет 13, наверное, родители любящие и понимающие. Надеюсь, всё у него хорошо поэтому, что-то технологическое или интеллектуальное осваивает
Она - автор нового развлекательного проекта "Капибара". Проект уже успел наделать шуму. И по большей части благодаря комьюнити. Как все началось? Это история для сериала. У айтишницы было две работы, ипотека и колоссальная нагрузка. Сломаться, устать можно по "щелчку Таноса". Отдыхала глазами на "Пикабу". Читала, постила. Пока политика сайта не пошла вразрез с ее личными убеждениями. Дальше был вихрь.
- Это название выбрали пользователи. Сначала устраивали мозговой штурм. Потом голосовали в два этапа за понравившиеся варианты. Потом откатывались, чтобы обоснование сделать: почему тот вариант, а не другой. В целом, это полностью инициатива самих участников. Когда задала финальный вопрос: «Название «Капибара» всех устраивает?», больше 500 человек ответили: «Да!»
- А где проводили это голосование?
- В чате. Он создался в первые секунды жизни идеи. Там есть специальный топик: выбираем имя для проекта. В нем и провели голосование буквально через 3-4 дня после его создания. 24 июля обновился «Пикабу». В этот же день мною был создан тот самый пост, тут же был создан чат и все понеслось…
Капибара - герой мемов
О причинах популярности капибар (ссылка на материал в Тинькофф журнал)
- Все-таки изначально идею предложили вы? Это связано с модой на капибар?
- Идея названия – полностью пользовательская. Я изначально дала только рабочее название Vortex. Нужно было заводить репозиторий, называть документы, папки. В общем, я автор только служебного названия. Но я не взяла на себя ответственность, что так будет называться весь проект. А Vortex потому, что у меня сложился такой ассоциативный ряд. Как «Капибара» началась вихреобразно, так все и понеслось.
- Вихреообразно – имеете ввиду, что началось все эмоционально?
Мы как-то очень неожиданно, очень импульсивно стартовали. Когда вышло обновление на «Пикабу», то от меня был всего один эмоциональный пост
- Стоп. Ольга, что за пост, с которого все началось?
Я написала «С этим «Пикабу» все понятно, если никто не начнет делать новый, то это начну делать я»
Триггером стал выход обновления на «Пикабу». Отмена отображения минусов. То есть в «горячее» с прошлого обновления стали попадать посты с отрицательным рейтингом. Это оказалось не багом: они что-то сделали с алгоритмами и не будут «чинить» рейтинговую систему, а будут маскировать продвигаемые посты под видимость обычных.
Я поняла, что того, что я любила на «Пикабу», больше не будет. Я была не согласна с тем, что нет альтернативы. Мол, есть «Пикабу», он единственный, терпите. Альтернатива нужна! Тогда еще не было известно ни про «Вомбат» ни про другие новые проекты.
Когда я создавала этот эмоциональный пост, думала, что впишусь в какую-нибудь команду разработчиков. О том, что я возглавлю, я даже не подозревала.
А, да, на «Пикабу» мой профиль забанили за упоминание «Капибары». Моему аккаунту было 8 лет и больше 100 000 рейтинга. Это не топ, но очень неплохие цифры для «Пикабу».
— Вы создали пост и получили обратную связь от пользователей?
- Да, посыпались комментарии: «Фронтенд-разработчик у тебя есть! Я разработчик с четырнадцатилетним опытом – я с тобой!»
Я создала отдельный чат в телеграм: ну пусть будет, и ушла работать.
Через два часа возвращаюсь, а в чате 3,5 тысячи человек
Ольга получила сильную поддержку сообщества
Я включила людям топики, темы они создавали сами, какие-то голосования начали вести. Посмотрев на это, я поняла, что надо стартовать разработку прямо сейчас, потому что люди уже начали голосованием выбирать базу данных, языки программирования и прочие технические вещи. Но это не те вещи, которые выбираются голосованием…
- То есть в чатах народ взял власть в свои руки?
- Абсолютно. Но оно пошло не в том направлении, в каком имело хоть какие-то шансы развиться. Поэтому к вечеру следующего дня я написала, каких именно компетенций нужны специалисты.
Мне ответили: «Давайте не будет как с народным Авито!» «Народное Авито» — это проект «Мой торг», тоже проект пикабушников, которые решили создать свой «Авито». Один из ребят из той команды сказал мне: «Блин, мы за полгода ни строчки кода не написали. Давай здесь не будет также…»
Про энтузиазм и конфликты
- Проект, абсолютно построенный на UGC – это, наверное, какой-то идеал, к которому вы стремитесь?
- Есть огромная разница, между тем как строить проект и как им пользоваться. Как им пользоваться — не вопрос. Мы все делаем для того, чтобы это была UGC-платформа с минимальным вмешательством со стороны администрации. То есть это действительно полностью власть пользователей. Люди сами решают, какой контент годный, что будет в тренде, что будет в топе, а чему нужно утонуть в минусах. Это полностью их вотчина.
Но при постройке самого проекта, при создании архитектуры, кодовой базы, дизайна такая демократия невозможна.
- А вы не думаете, что проекты, созданные на эмоциях, долго не живут?
Если в проекте только одна эмоция – я полностью согласна. Но «Капибара» разогналась до достаточно приличной скорости. Ее притормозить просто так не получится. У проекта колоссальная поддержка коммьюнити. Идея жива. Продукт людям нужен.
Даже если меня завтра собьёт автобус – «Капибар» легко восстановить, потому что исходники в открытом доступе.
У команды есть доступы, и базы данных «Капибары» могут поднять на соседнем домене. Я диверсифицировала риски.
- Что «Капибар» сегодня из себя представляет?
- Это платформа с честной регуляцией и алгоритмами, прозрачной рейтинговой системой, саморегуляцией контента пользователей и приятной площадкой для авторов.
Получается – основные отличия «Капибары» как UGC -платформы от сотен других соцсетей в том, что человек настраивает не только свою ленту – игнором тегов, подписками на теги, но и он влияет на то, что в трендах. У «Капибара» нет информационного пузыря. Здесь ценится то, что ты делаешь и пишешь.
Ленты «Тренды, Топ и Авторское» — это отдельные ленты, на которые ты не подписывался. Подписка — отдельная лента. Каждый человек влияет своими оценками на то, что попадает в тренды.
- Какие цифры у «Капибары» сейчас?
На сегодня Капибара — это 1 890 зарегистрированных верифицированных пользователей, постов за все время – 3 550, комментариев – 24 000.
Незарегистрированных пользователей мы еще не особо умеем считать. Пока здесь надежда на Google метрики, Яндекс-аналитику и Similarweb. Он, кстати, говорит, что у нас 192 000 посетителей за месяц.
- Для вас это больше цифры?
- Сложно сказать. Наверное, большие.
- Вы говорите, что 1, 8 тысяч зарегистрированных пользователей. Но если сравнивать с подписчиками какого-нибудь крупного паблика – это не очень большая цифра
- Капибар вышла в публичный доступ 1 января. Это отдельный сайт без раскрутки. Получается, что для проекта, который в доступе чуть больше 2 месяцев – это очень хороший показатель.
Саму разработку мы начинали летом. В ноябре вышли в закрытый альфа тест. Туда можно было заходить по приглашениям. Человек заходил со всеми дисклеймерами: понимал, что это тест, понимал, что еще куча багов. Но, таким образом, мы авторов запускали.
— Команда капибар. Кто это?
- Динамический состав команды. Часть разработчиков пришла со старта. Часть после. Часть присоединилась недавно. Это высококвалифицированные специалисты. С коммерческим опытом работы больше четырех лет. Я не могла позволить себе взять команду джунов. Потому что это оттягивало бы ресурс остальных разработчиков.
Все спецы очень высокого грейда. Все это истинные герои и энтузиасты. Идейные люди. Очень самостоятельные. С комплексным видением с умением цельно видеть весь продукт и проект. Что редкое качество.
- Сколько денег потратили на запуск проекта?
- Честно — не считала. Расходы на регистрации доменов, ботов для упрощения модерации в канале, инфраструктуру – это все совершенно не сравнимые цифры с тем, сколько бы я потратила на разработку, если проект был бы коммерческий.
-???
- Можно посмотреть на HeadHunter среднюю зарплату разработчиков. У нас 10 человек – костяк команды, а в целом в команде разработки было до 40 человек.
У нас динамический характер команды. Если бы все эти люди были на зарплате, то на проект уже бы потратили восьмизначные суммы.
(От автора)Чтобы посчитать возможные затраты на проект, я возьму среднюю зарплату программиста middle уровня в РФ – 120 000 рублей (hh. ru). Костяк команды «Капибара» — 10 человек. В итоге, ежемесячно на проект Ольга тратила бы 1, 2 млн. рублей. Учитывая, что с момента разработки прошло уже больше 7 месяцев, то затраты составили бы около 10 млн. руб только на постоянных участников проекта, не считая тех, кто нерегулярно привлекается к задачам.
«Капибара» едет на энтузиазме. Люди горят идеей, чтобы этот проект был. Чтобы существовала альтернатива. Поэтому open source код и затраты только на инфраструктуру (облачные сервера).
- Понимаю – проект молодой. Но были ли конфликты с пользователями?
- Да, конфликты случаются. Связано в первую очередь с тем, что «Капибара» – пока без политики. И мы об этом рассказывали до старта проекта, и повторяли не раз. Это записано в правилах и повторяется самими пользователями.
У некоторых были ожидания, что проект станет местом, где можно обсуждать и двигать свои политические идеи. Те, которые не проходят модерацию на «Пикабу».
Я не готова рисковать проектом, который могут «роскомнадзорнуть» за чье-то высказывание. И я не хочу, чтобы «Капибара» превращалась в агитплощадку. Потому что это очень непростая тема, на которую даже близкие люди могут переругаться. А на огромном сайте…
Конечно, есть не согласные с этим.
«Капибара» делалась как обитель авторского контента. Того, которому не придется сражаться за доступ к читателю пробиваясь через «баяны» и рекламу десятков тысяч телеграм-каналов. У всех были свои ожидания, и есть люди, которые ждали, что там будет свобода вообще во всем.
Отмечу, что мы ограничены законодательством всех стран технического контакта. Большинство пользователей из России, а значит, надо соблюдать закон РФ. Это мы делаем в добровольном порядке. Мы соблюдаем закон.
Главный фейл и инсайт Ольги в этом вихре "Капибара" я по-традиции опубликовал в своем телеграм-канале "Стас смотрит рекламу"
Про несогласие с отсутствием альтернативы на рынке
- «Капибар», «Вомбат», «Пипмай», есть, думаю, еще ряд проектов, о которых пока мы не знаем. Почему вдруг люди начали делать подобные проекты. В чем причина?
- Я думаю, несогласие с отсутствием альтернативы. В воздухе висит такое: «Хочешь альтернативу? Иди на «Reddit». Там англоязычные люди из далекого зарубежья и их посты тебе не «откликаются». Это не про тебя. Да, есть «Yaplakal. com» – там своя специфика. Есть «Fishki. net» – но это не замена «Пикабу».
- В чем отличия?
- По функционалу, по темам, по аудитории, по специфике.
- А чем аудитория отличается?
- Я взяла агрегированные данные. Читала немало постов на тему, почему это не аналог, но сама эту аналитику не проводила. Если вкратце – это не замена. Все аналогичные проекты, о которых говорили выше, стартовали, чтобы у людей был выбор
- У проекта есть бизнес-цель или это пока хобби?
Это точно не хобби. Это уже слишком серьезно.
Но цели «зашибать» там миллионы мы не ставили. Если финансово взлетит, то, конечно, отказываться от денег не будем. Цель минимум — вывести проект на «самоподдержание».
- А в целом, сколько времени у вас отнимает работа над «Капибарой»?
- Все свободное время. У меня стандартная восьмичасовая пятидневка. А «Капибар» это уже не просто «поработать». Я ею живу! У меня каждое утро начинается с «Капибар». Появляется минута на обеде – «Капибар». Свободный вечер – «Капибар».
- Как сейчас продвигается проект?
- SЕО продвижение. Страницы "Капибары" очень хорошо индексируются google и Яндексом. Ну, и конечно, сарафанное радио. Сообщество рассказывает о «Капибаре». Плюс, у нас есть страницы в ВК, откуда приходят люди. Но если верить Similarweb, то основное количество людей идет через Телеграм. Люди делятся статьями, пересылают их, рассказывают о них. Плюс у нас регулярные публикации на других ресурсах.
Например, первая статья на Хабре удачно выстрелила, есть статьи на vc, на tenchat, на реддите.
- То есть пока вы не заходите в такие инструменты как Яндекс. Директ и т. д.?
- Пока нет такой необходимости. Для этого нам нужно SEO ядро. Человек, который умеет это делать, чтобы не сливать бюджет.
«Все! Не могу больше…»
- Возвращаясь к Пикабу. Есть мнение из комментариев к одному моему интервью, что клонов у этого сайта десятки. Что можете ответить на это?
Могу ответить: «Пожалуйста, не бросайте начатое. Альтернативы — это прекрасно. Свободный рынок – это двигатель развития, прогресса. Нам нужно разнообразие. Чем больше создается таких площадок, тем выше шанс, что через 10-15 лет кто-то из нас будет еще существовать».
- То есть вы говорите о том, что если крупные площадки закроются, то вся масса пользователей останется без контента?
- Нет, без контента, конечно же, не останется. Но вопрос в качестве этого контента. Быстро, легко, смешно, листай-листай-листай… Посмотрите на рилсы в Инстаграме*, на клипы в ВК, перепосты «хохотачей» с Одноклассников, сотни тысяч телеграм-каналов с мемами. «Пикабу» взял тот же ориентир. Площадок с качественным авторским контентом все меньше.
- Есть еще мнение конспирологическое. Якобы за созданием «Вомбата» и «Капибар» стоит один человек. И якобы это сайд-проекты «Пикабу».
- Впервые слышу такое мнение. «Вомбаты» и «Капибары» в коллабе. Мы поддерживаем друг друга. У нас совместные активности и конкурсы. Тот же «Анонимный Дед мороз» или конкурс на 14 февраля. У них под тегом – #любовьморковь , у нас #расскажи мне о любви. И призы были совместные. Хлопнули по лапкам и помогаем в развитии друг другу.
Нет, никто не из администрации «Пикабу». Мы все — бывшие пользователи «Пикабу».
- Ольга, когда хотелось бросить проект? Ну, вот: «Все, не могу больше…»
«Капибара» началась, когда в моей жизни было одновременно две работы, и я только-только влезла в ипотеку. Представляете уровень нагрузки?! И тут появляется третья бесплатная работа — «Капибара».
Она забирает время и деньги. Конечно, я была близка к выгоранию! И, например, через месяц руки уже опускались!
Взяла выходные. Провела их как нормальные люди и снизила нагрузку. Тут мне очень помогли модераторы, команда проекта, активисты чата. Они взяли на себя многое из того, чем занималась я. И за чатом смотрели, и обновления сами выкатывали, и конкурсы сами проводили, и различные мероприятия/игры для поддержания активности пользователей, и объявления раскидывали, и с текстами помогали, и авторов звали. Стало проще.
- Ваша большая нагрузка была угрозой проекту?
- Это сложно назвать угрозой. Потому что я заложила очень сильный фундамент в «Капибару». У нее высокая автономность. Даже если бы я выпала на 3 месяца из проекта, то я сделала в команде высокую ставку на самоорганизованность.
- Что это значит?
- Каждый понимает, что он делает. И делает, не спрашивая разрешения. У нас есть функциональные требования и общее понимание того, во что целимся. В виде прототипа — тот же «Пикабу». И мне не нужно расписывать людям в деталях: сделай так или так. Команда высокопрофессиональная и на высоком уровне организованности.
Даже если все пропадет по щелчку Таноса – исходники находятся в открытом доступе. Кто-нибудь обязательно возьмет и продолжит…
*Meta – запрещенная на территории РФ организация
Мы проговорили с Ольгой несколько часов. Материала много. Она высококлассный специалист и не попросить ее поделиться лайфхаками было бы глупо. Она поделилась: как использует нейросети в работе над проектом. Нейронки пишут код, ищут ошибки, забирают рутину. Но, это уже вторая часть интервью, которая выйдет позже. Проанонсирую в своем канале: Стас смотрит рекламу
Язык программирования нельзя выучить. Его можно только усвоить. К чему я это? К тому, что бесполезно что-то учить, бесполезно смотреть видео, если вы это не будете тут же использовать. Посмотрели видео о том, как решать какую-то задачу? Хотя бы перепишите код, потом поэкспериментируйте над ним, попробуйте поменять его и посмотреть, что будет. Попробуйте немного изменить задачу и переделать код, чтобы эту задачу он решал.
И каждая тема, которую вы выучили — чтобы усвоить, нужно довольно много практики. Многие новички утыкаются в стену и не могут продвинуться в изучении дальше не потому, что столкнулись с особо непонятной темой. Тема-то понятная, они просто предыдущие поняли недостаточно. И надо не биться головой в стену, а вернуться, больше пописать код по предыдущим темам, и потом возвращаться назад.
Совиной почтой в магическом мире Гарри Поттера можно было слать письма, но не только — можно было послать и некоторые другие вещи. Можно было послать и разные предметы — например, Гарри получал таким образом подарки вроде набора по уходу за метлой от Гермионы.
Вот и в программировании один кусочек данных, значение, может быть не только текстом, но и целым числом, числом с дробной частью, логическим значением(«да» или «нет») и т.д.
Но вы можете обнаружить, что в некоторых языках сразу несколько типов данных для того же целого числа. Целое число может быть и int, и short, и byte, и long и т.д. Почему так?
Потому что числа бывают разных размеров и под некоторые числа хватает одной ячейки памяти(байт), для некоторых надо две, а для некоторых и 4! В каких-то языках программирования сам компьютер следит за тем, сколько байт выделяется для значения переменной. А где-то нужно указывать.
Совы в мире Гарри Поттера, похоже, могут тащить посылку любого размера и веса, но представим, что у них есть какие-то ограничения. Больше какого-то веса одна сова не может нести, и тогда подключаются другие совы.
Представим, что человек изначально прикидывает вес посылки и сколько сов потребуется, и заказывает нужное количество сов для доставки. Тогда тем и отличаются типы данных. Целое число типа byte — там один байт. int — два байта. long — 4 байта.
Если вернуться к совам, то byte это одна сова, небольшой вес, int — две совы, посылка потяжелее, long — 4 совы. Тяжёлая большая посылка.
Поделюсь простым способом, который позволяет отбить желание заниматься программированием у ребёнка или подростка. Я узнал его от некоторых родителей учеников. Срабатывает способ не всегда, но довольно часто и надёжно, ниже расскажу все нюансы.
Выбираем язык и направление и придерживаемся
Всё действительно просто. Нужно выбрать самый-самый крутой язык программирования с точки зрения родителя, друзей родителя или ещё какой-то — короче говоря, один. Выбрали? Теперь нужно выбрать только одно какое-то направление в программировании(например, программирование сайтов или там Телеграм-ботов) — тоже главное, что одно.
Всё, выбрали чёткое хорошее направление, которое даст профессию и огромный заработок? Или там развитие мышления? Всё, теперь пихаем всеми силами ребёнка или подростка на это направление, настаиваем, даже если он не хочет. Если не хочет, нужно прямо заставлять. Не «Ну давай я поговорю с преподавателем, вы с ним поговорите и сходишь ещё на два занятия, если так же после этого не будешь хотеть — тогда не будет ходить». Нет! Надо настаивать всеми силами.
Как это работает?
Как это работает? Дело в том, что даже у взрослых людей (!) часто случается такая история: начал изучать программирование — а оно и не идёт никак, трудно, долго. Поменял направление/язык — и помчалось, полетело! Причём это может быть и так, что сменил «лёгкое» направление на «тяжёлое», а всё равно легче стало. Например, с консольных приложений Python пересел на создание игр на C++ и всё стало интересно, приятно и куда легче.
Языки программирования очень разные и направления тоже, и важная задача — найти направление по себе, под свою личность. Поэтому большая вероятность, что выбранный родителем язык программирования или направление окажется неподходящим. Таким образом, ребёнку/подростку будет трудно, тяжело, не будет ничего получаться и этим вы убьёте всю мотивацию. Как я сказал, даже у взрослых это работает надёжно, на ребёнке или подростке сработает куда сильнее.
Дополнительные нюансы
Ещё момент. Если хотите отбить всё желание заниматься программированием как можно быстрее, не выбирайте языки программирования Python и Scratch. Они большинству поначалу нравятся и помогают быстро что-то начать осваивать, обычно наскучивают и ученику хочется чего-то другого, более подходящего под его личность, через несколько месяцев. Так что выбирайте какой-нибудь C++, Assembler там лучше сразу. Чем младше ученик, тем больше шансов, что ему это будет не по силам..
Если вы последовали моему совету и ничего не получилось, мотивация заниматься программированием у вашего ребёнка осталась или даже усилилась, то значит, попались именно подходящие его личности на данном этапе язык программирования и направление. Не унывайте! Есть другие способы отбить желание программировать. Подписывайтесь, позже напишу о других способах.
А кто хочет наоборот, усилить мотивацию и подобрать более подходящее направление в программировании для своего ребёнка, узнать его сильные и слабые стороны, чтобы знать, как и когда ему потребуется поддержка — то про это тоже можно будет узнать здесь. Кстати, ещё я сейчас даю бесплатные часовые онлайн-диагностики по программированию, как раз такую информацию даю по завершению, но персональную. Так что кто хочет — обращайтесь, вам информация, мне — тренировка.[Вроде не нарушают два последних предложения правила сайта же? Если да, предлагаю правила уточнить ]
Для базового понимания достаточно знаний первого класса, но чтобы не показывать на совсем примитивном примере, возьмём пример из начальной школы
Вот у вас такой код:
a = 0
x = cos(a) + 2 * 3
Как компьютер будет с ним работать? Давайте возьмём упрощённую модель(без АСД) — будет работать так же, как мы в школе. Сначала он посчитает косинус, но он не сможет это сделать, пока не заменит a на 0. Так что он заменит и получит.
x = cos(0) + 2 * 3
После этого он подсчитает косинус нуля и получит 1. Он подставит вместо cos(0) в итоге 1, получится
x = 1 + 2 * 3
Теперь умножение. Умножаем 2 на 3, получаем 6. Заменяем 2*3 на 6:
x = 1 + 6
Ну и осталось вместо 1 + 6 подставить 7, получится
x = 7
Всё, на этом работу со строкой кода заканчиваем. И вот когда компьютер посчитал результат какой-то операции, функции вроде косинуса или оператора вроде +, то он этот результат как бы «подставляет» вместо этой операции и данных операции. Это и называется «возвращает» — операция «+» закончилась, в результате получилось 7, теперь мы можем это число подставить вместо операции и её данных, 7 вместо 1 + 6. Правильнее, кстати, говорить передаёт — 1 + 6 передаёт обратно 7. Но все уже настолько часто говорят «возвращает», что оно укоренилось. Но это тоже уже ненужное поначалу углубление.
P.S.Это всё, конечно, модель из области «корень из минус 1 не существует», очень упрощённая и на самом деле всё гораздо глубже и сложнее — но именно новичкам очень полезно эту модель освоить. А я преподаю новичкам, часто вообще школьникам, когда доходят до определённого уровня, обычно отправляю их учиться у других. Да и многие профессионалы не знают про абстрактное синтаксическое дерево, как оказалось. Оно нужно прежде всего тем, кто компиляторы да интерпретаторы создаёт.
Если ученик пропустил больше, чем две недели, я уже автоматически возвращаюсь с ним на самое начало. Знания о программировании забываются очень быстро. Но не всё так страшно. Ученик проходит все эти темы очень даже быстро, быстро догоняет сам себя. В итоге тратится меньше времени, если пытаться пыжиться с того же места, на котором остановились
Чтобы участвовать в Турнире Трёх Волшебников, нужно было опустить кусочек пергамента со своим именем в Кубок Огня. Он должен был магически обдумать, выбрать лучшего представителя каждого факультета и выбросить столб пламени вместе с кусочками пергамента, где написаны имена представителей.
Когда люди опускают свои имена в Кубок Огня — они вводят в него данные, свои имена. Когда Кубок Огня выплёвывает пергаменты с именами избранных — он выводит данные из себя во внешний мир.
Так же и в программировании. Когда какая-то информация отправляется в устройство, например, в компьютер — с помощью клавиатуры, мыши, какого-то кабеля и т.д. и т.п. — это ввод данных в компьютер. Когда устройство вроде компьютера, получив какую-то информацию в результате вычислений («размышлений» устройства), отправляет её человеку на экран или ещё куда-то, то это вывод данных. Так и говорят — «выводит на экран», например.
В книгах о Гарри Поттере рассказывается обо многих магических артефактах, обладающих чем-то вроде разума, или хотя бы какими-то зачатками, с помощью которых они могут принять какое-то решение. Первый такой артефакт — Распределяющая Шляпа. В неё вводятся другие данные и другим способом — нужно засунуть голову, чтобы Шляпа телепатически получила доступ ко всей нужной информации. И выводит она данные не таким способом, как Кубок Огня — она громким голосом объявляет имя.
Вот и в программировании существуют разные
способы и устройства для ввода и вывода данных. Клавиатура, мышь, сенсорный экран, микрофон, камера, сканнер и т.д. — устройства ввода. Экран, колонки, принтер и т.д. — устройства вывода.
Вот говорят, что чтобы научиться программированию, надо программировать. И не задачи решать, а именно проекты какие-то реальные. А как такое начать делать, когда не понимаешь ещё ничего?
Да очень просто. Делайте прототипы реальных проектов. Вот банкомат. Ну возьмите и сделайте программу, которая пишет, что у вас на счету 5000, и спрашивает, сколько снять. Потом пишет, сколько сняли и сколько осталось. Вполне себе банкомат. Даже конструкцию if... знать не надо.
А потом можно, с получением знаний уже брать создавать более продвинутый прототип. Добавить другие варианты действий, сохранение информации, чтобы операции предыдущих запусков учитывались.
Банкомат, корзина интернет-магазина, чат-боты всякие, менеджер задач, лета социальной сети и т.д. и т.д. — любое, что автоматизировано, берёте и пишете примитивные прототипы. Потом усложняет. Так и нарабатывайте нужные навыки.
Когда люди рассказывают, как они за 3-6-9 месяцев изучили программирование и нашли работу, я всегда вспоминаю эту картинку. Ну, то есть, я не говорю, что таких людей нет. Они есть, и им в некотором роде повезло. Большинству повезло поменьше
Прежде всего, расспросить его, что именно не так. Потом пообщаться с преподавателем, узнать, в чём, с его точки зрения, может быть причина. Причина может быть в слишком большой общей нагрузке (школа + кружки), в том, что не сложились отношения с преподавателем, в том, что курс не совсем равномерно построен и сложность резко возросла, и т.д. и т.п.
В большинстве случаев хорошей идеей будет сходить ещё на пару занятий, вдруг просто пошла сложная тема и ребёнок её как раз освоит и снова развеселится. Если же это не помогло, то тогда можно предложить найти более лёгкое направление, или отдохнуть годик.
Но точно не стоит настаивать на занятиях, если ребёнок перегружен в школе и остальных кружках. В крайнем случае можно отказаться от каких-нибудь других кружков в пользу программирования, но только если ребёнок согласится попробовать. Возможно, это не поможет — не страшно, всегда можно попробовать ещё через год или даже несколько месяцев.
Есть такая хрень в программировании как рекурсия. Можно сюдя приплесть и фрактал, но это больше к топологии, а не программированию.
И так, самый простой и понятный пример рекурсии - это берём зеркало впереди себя и сзади. и смотрим на картинку:
Вроде как и цикл, но картинка-то уменьшается, и фотончики ведут себя не как в цикле.
Но в программировании это выражается в вызовах функции самой себя, либо кругового вызова функций, например(для знающих Си-подобные языки): int A(int a) {if(a & 1) a=a+1; return B(a); else return 17;} int B(int a) {if(a > 500) a=a/3; return C(a); else return 113; } int C(int a) {if(a ^ 1) return A(a); return -1;}
Грубо говоря, функция А, вызывает функцию Б, функция Б вызывает функцию С, а та уже снова вызывает функцию A. Вроде эти вызовы будут длиться бесконечно, но всегда должно быть условие выхода из рекурсии (под спойлером выше в каждой функции есть такое). Если что - писалось на коленке и практического, и математического смысла не имеет - чисто показать что да как.
А нафига такие сложности? Дело в том, что часто в программировании невозможно обойтись без рекурсий. Да, для понимания её надо сильно поломать свой мозг - именно ломать мышление, а не уставать от напряжённого мозгоштурма.
Однако есть определённый класс рекурсий (в него входят и так называемые "кольцевые", как в спойлере выше). И вот тут срабатывает "Ивент Вомбата", эти рекурсии называются ХВОСТОВЫМИ.
Фишка их в том, что их можно ВСЕГДА развернуть в цикл. Например вычисление числа Фиббоначи:
int Fibb(int a) {if (f<=0) return 1;/*условие выхода из рекурсии*/ return Fibb(a-1)+a;}
Тоже самое разворачивается в цикл вида
int a=123, result=1; for(int i=0; i>a;;){result = result+a; a=a-1} /*тут мог ошибиться - просьба не пинать*/ return result;
Вроде бы много кода, строк и т.п. Но, рекурсия в общем виде использует стек (который не бесконечен), и дикие затраты на вызов функций внутри рекурсий (на i8086 надо было сохранять каждый процессорный регистр в стеке, а это 2 такта, в i80286 уже появилась pusha, но она так же требовала тактов, ну и переброс из стека в регистры переменных, возврат результата) - накладных расходов на рекурсию очень много, даже в современный процессорах.
Однако, всё что было описано выше прекрасно разворачивается в циклы "умными" компиляторами. Хотя многие алгоритмы с хвостовой рекурсией даже современные компиляторы не могут развернуть в цикл. Примером этого може служить сортировка бинарным жеревом. В рекурсивной форме эта сортировка - задачка студента второго курса (по моим старческим меркам), но компиляторы не способны её раскрутить в цикл, это делалось человеческими мозгами ещё в 80х годах прошлого века (сам разбирал борландовский алгоритм qsort(***) по запчастям обучаясь).
Так что не всё в мире нашем сводится к "хвостам", иногда приходится и сущности плодить поверх ненужного...
Вот говорят, что чтобы научиться программированию, надо программировать. И не задачи решать, а именно проекты какие-то реальные. А как такое начать делать, когда не понимаешь ещё ничего?
Да очень просто. Делайте прототипы реальных проектов. Вот банкомат. Ну возьмите и сделайте программу, которая пишет, что у вас на счету 5000, и спрашивает, сколько снять. Потом пишет, сколько сняли и сколько осталось. Вполне себе банкомат. Даже конструкцию if... знать не надо.
А потом можно, с получением знаний уже брать создавать более продвинутый прототип. Добавить другие варианты действий, сохранение информации, чтобы операции предыдущих запусков учитывались.
Банкомат, корзина интернет-магазина, чат-боты всякие, менеджер задач, лета социальной сети и т.д. и т.д. — любое, что автоматизировано, берёте и пишете примитивные прототипы. Потом усложняет. Так и нарабатывайте нужные навыки.
Хагрид сказал «Ты волшебник, Гарри!». Тем самым создал связь: под именем Harry_Potter подразумевается волшебник. Получилась пара «имя-значение, которое за ним скрывается». В программировании такие пары называются переменным и они пронизывают всё программирование. Напишем вот это создание переменной на языках программирования:
Harry_Potter = "волшебник"
let Harry_Potter = "волшебник";
String Harry_Potter = "волшебник";
Выше — три варианта, как создать переменную, пару «имя-значение» на трёх разных языках программирования. Во многих языках создание такой пары обозначается с помощью «=». Слева от него пишем имя, справа — значение. Имя пишется всегда без кавычек. Значение, если это текст — в кавычках. Остальное варьируется.
Но! Позже значение Гарри Поттера меняется. Мы узнаём, что он важный символ, «Мальчик, который выжил». Значение человека, скрывающегося за именем Harry Potter, меняется, и с переменной в программировании такое тоже бывает. Чтобы поменять значение в переменной, тоже используют «=», вот вариант для двух языков:
Harry_Potter = "Мальчик, который выжил"
Harry_Potter = "Мальчик, который выжил";
В третьем языке точно так же это делается, как во втором.
Всё, после этого Harry_Potter означает "Мальчик, который выжил". И так можно делать снова и снова. Например, когда Гарри начинает учиться, многие читатели приходят к выводу, что он дурачок и двоечник, особенно на фоне Гермионы Грейнджер. И так постепенно появляются новые значения, и снова и снова мы можем менять значения имени Harry Potter с помощью «=».
А теперь предлагаю поупражняться и немного поиграть. Попробуйте сами найти в Гарри Поттере пары «имя-значение» и увидеть, как и сколько раз значения в этих парах менялись по ходу прочтения книг. И напишите сюда. Да, имя с точки зрения программирования не только у одушевлённых объектов может быть. В программировании это синоним слова «название». «Табуретка» — тоже имя, если за ним скрывается что-то определённое.
Одна из частых ошибок молодых программистов — экономия времени на чтении. Читают текст недостаточно внимательно, не понимают, что требуется, как именно должен быть оформлен результат — и создают вообще не ту программу, тратя кучу времени.
Читать нужно раз 5. Даже если там 2 строчки — 5 раз хотя бы. Тогда шансов так ошибиться гораздо меньше.
Вот поступил человек на курсы по программированию. И что-то не идёт оно, ничего не понятно. Остальные такие умные! Всё схватывают, всё успевают.
А он сидит и думает: «Ну всё, я тупой».
Но если догадаться поспрашивать этих успешных людей, вдруг выясняется:
- один 4 года до этого сам учился в свободное время
- другой уже работал программистом, просто был перерыв
- третий прямо сейчас работает, просто пришёл за бумажкой — и то, говорит, тяжеловато что-то
- и один на группу реально способный
ну, то есть до этого особенно не занимался, но с детства быстро любую область осваивает, куче вещей обучился быстро. Хотя это так-то тоже помогающий опыт.
В общем, у всех бэкграунд какой-то оказывается, как правило, и очень редко одарённость.
Я решил изучать программирование. Сколько нужно заниматься?
Если заниматься слишком мало — будете стоять на месте. Слишком много — устанете, выгорите, бросите.
Золотая середина — 3 раза в неделю, как и со многими другими дисциплинами. Два раза в неделю это минимум.
Теперь сколько должно длиться одно занятие: рекомендовано 2 часа. Вы можете измерить сами: засекайте будильник при каждом занятии — сколько вам нужно времени в начале, чтобы вспомнить, что вы вообще делали и на чём остановились, повторить то, что забыли из полученных ранее знаний. У людей это занимает в среднем 20-50 минут, но иногда и час и даже больше. Вам нужно, чтобы вторая часть занятия, когда вы уже всё вспомнили и учитесь, занимала не меньше времени, чем в среднем занимает воспоминание, а лучше больше в разы. Поэтому среднее время занятия 2 часа. Не меньше, чем 1,5 часа, больше 3-4 часов тоже не стоит, это путь в выгорание и прочие истории, которые приводят к забрасыванию.
Это цифры для большинства, у отдельных редких людей может быть как-то по-другому.
Комментарии