Содержание
Просто о сложном: программирование для самых маленьких
В наше время подрастающее поколение проявляет большой интерес к информационным технологиям, технике, Интернету — пользоваться компьютером дети порой начинают раньше, чем учатся говорить.Четверо молодых людей из Алматы решили посодействовать малышам в их стремлении познавать новое и создали проект «Lovetocode». Молодежная информационная служба Казахстана решила поговорить с основателями первой в Казахстане школы программирования для детей, где самых маленьких пользователей в игровой форме обучают основам кодинга.
Виктория Русакова
— Когда появилась идея создания проекта «Lovetocode», кто был инициатором?
Дина Мукашева, Алена Ткаченко, Акерке Балгабекова
Акерке Балгабекова: Идея зародилась осенью 2014 года. Она принадлежит моему мужу, Елдосу Балгабекову. Он собрал нас, рассказал о том, что хочет создать подобный проект, мы тоже загорелись этой целью и стали работать. Сейчас он временно находится в Сан-Франциско, учится, набирается опыта, чтобы потом передать его нам и нашим ученикам.
Алена Ткаченко: Мы выбрали такую сферу, потому что понимаем: Казахстан — сырьевая страна, крупное производство здесь не очень эффективно, здесь требуется другой подход. IT — это направление, которое имеет высокую добавленную стоимость. При этом оно очень востребовано: навыки IT в наше время так же важны, как, допустим, навыки письма в XIX веке.
Акерке: Например, когда я училась в школе, я не знала, что такое программирование. Потом поступила в университет на программиста, начинала учить все с нуля. Поэтому я понимаю, что наша деятельность будет полезна для детей. Они в очень раннем возрасте познакомятся с программированием, и если кто-то из них в будущем выберет профессию, связанную с IT, это уже будет для него чем-то знакомым, не вызовет страха.
Дина Мукашева: Нам интересно показывать, что программирование — это не сложно, это может быть легко и интересно. Мы рады, когда дети включают воображение, у них появляется своеобразный азарт.
— Как вы пришли в сферу IT, чем занимались до «Lovetocode»?
Алена: Я не программист, работала в маркетинговой сфере в разных странах и компаниях. В «Lovetocode» я тоже занимаюсь маркетинговой частью.
Акерке: Я училась на программиста в Канаде. Сейчас помимо работы с детьми занимаюсь бизнес-аналитикой.
Дина: Окончила энергоинститут в Алматы, потом училась в Лондоне по смежной специальности. Как и Акерке работаю в аналитической среде.
— С детьми какого возраста вы работаете?
Алена: Основная аудитория — 8-12 лет. На самом деле, мы занимались даже с детьми от шести лет. Они тоже воспринимают информацию в игровой форме. Конечно, с ними нужно отдельно сидеть, заниматься. Детям нужно очень много внимания, нужна особая программа. Но были и ребята возраста 13-15 лет. Scratch — язык программирования, на котором ведется обучение в lovetocode, считается детским, простым. Я, как уже говорила, не программист, в отличие от коллег, и сама порой начинаю в нем разбираться, копаться. Этот язык рекомендуется как базовый, чтобы потом перейти ко взрослому программированию.
— Чем занимаются дети на занятиях?
Акерке: Обучение проходит поэтапно. Ребята могут делать мультики, игры, анимацию, какие-то истории, программы типа калькулятор. В процессе разработки игр, конечно, учить детей эффективнее всего, т.к. любой ребенок любит играть.
Дина: Я занималась с группой, которая очень любила создавать анимации и, можно сказать, специализировалась на этом. Каждое занятие они придумывали разные истории и на их основе творили собственные анимации. В принципе, любой может найти себе занятие по душе.
— Сколько в среднем человек в группе?
Алена: Человек пять-шесть. Мы стараемся не делать больших групп, чтобы достаточно внимания уделялось каждому. Правда сейчас появилась мысль все-таки расширять коллективы — решили попробовать поработать по pare-программе, когда ребята должны работать в паре. Таким образом развиваются социальные навыки, и дети эффективнее воспринимают материал. Для нас это новая методика.
— Родители не изъявляли желания заняться программированием после того, как видели прогресс детей?
Акерке: Были юмористы, которые говорили: лучше вы меня научите, чем детей, они все равно ничем не занимаются, а мне пригодится.
Дина: Программирование действительно легко может увлечь и взрослого. Я часто, когда готовлюсь к уроку, отхожу от темы, сама сижу, что-то новое пишу, выдумываю.
— Существуют ли аналоги проекта в мире, в Казахстане?
Алена: Для нашей страны мы уникальный проект, нет никого, кто был бы на нас похож. Есть ряд организаций, которые учат программированию, мы же стараемся не просто научить ребят кодить, но и дать им навыки работы в коллективе, какие-то базовые умения, которые им понадобятся при социализации. В мире аналоги проекта, конечно, существуют. Есть компании, с которых мы, можно сказать, берем пример. В Великобритании существует проект «Codeacademy», «Code.org» в США, в России — хороший проект «Кодабра».
— Существует стереотип, что IT – не женская сфера, вы сталкивались с подобными заявлениями? Как бороться с этим?
Акерке: Конечно, сталкивались. Можно часто среди родителей встретить такое отношение. Например, они считают, что для их восьмилетней дочери нет необходимости уметь программировать. Но есть примеры, когда 11-12 –летние девочки очень хорошо кодят. Девочки, мне кажется, даже усидчивее, старательнее, внимательнее. Стереотип будет, нужно просто относиться к этому спокойно, несмотря ни на что становиться тем, кем ты хочешь.
Дина: Девочки могут добиться успеха, и на поприще IT тоже. У меня в группе была девочка, которая очень любила решать проблемы самостоятельно. Я пыталась ей помочь, но она меня не подпускала, говорила: я сама. И действительно сама находила какие-то неожиданные пути решения.
Алена: И все-таки мало девочек пока посещает наши занятия. Хотя сейчас эта тема популярна, Гугл делает много проектов, направленных на обучение в сфере IT именно девочек. Во многом наша ментальность мешает, конечно.
— Вы считаете свой проект коммерческим, или же его можно отнести к категории «социальное предпринимательство»?
Алена: Мы получаем прибыль, но она нужна не для того, чтобы купить преподавателям новые машины или съездить на море. Деньги необходимы, чтобы мы могли и дальше эффективно работать, разрабатывать программу, развивать проект. Наши доходы направлены на развитие проекта, они нужны, чтобы проект жил и развивался. Мы поняли, что превыше коммерческой составляющей стоит, конечно же, эффективность нашей деятельности. Мы хотим научить детей азам программирования. В целом, у нас есть планы по созданию социальных бизнес-проектов и, я думаю, если мы встретимся с вами ближе к осени, это будет уже более подтвержденная информация
Просто о сложном из IT
Новое в блогах
Популярные блоги
Все блоги
Просто о сложном из IT
67 подписчиков
Я студент и мне очень хочется поделиться своими знаниями! Здесь я простым и понятным языком буду объяснять о сложных вещаях из IT сообщества
Всемирная паутина
Интернет
механика
Программисты
Социальные сети
техника
технологии
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
2 декабря 2018, 17:33
GPT
HDD
MBR
Жесткий диск
компьютер
техника
технологии
Файловая система
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
28 ноября 2018, 20:52
Apple
Microsoft
техника
технологии
Телефоны
ОС
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
26 ноября 2018, 19:34
back-end
front-end
IT
web
веб-разработка
Компьютеры
механика
Программирование
Программы
разработка
техника
технологии
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
25 ноября 2018, 15:36
The boring company
Илон Маск
Компьютеры
техника
технологии
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
24 ноября 2018, 10:56
Linux
железо
механика
операционная система
ОС
технологии
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
23 ноября 2018, 13:28
Linux
ОС
операционная система
компьютер
технологии
техника
механика
железо
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
23 ноября 2018, 13:27
ОС
операционная система
механика
технологии
железо
компьютер
Windows
Linux
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
23 ноября 2018, 11:20
nvidia
видеокарты
GEFORCE® RTX 2080
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
22 ноября 2018, 14:21
игра в имитацию
кадры
кремневая долина
мистер робот
программист
социальная сеть
технологии
фильмы
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
22 ноября 2018, 14:13
Блог:
Просто о сложном из IT
Автор:
Dima Chikunda
22 ноября 2018, 11:03
Купить рекламу
Популярное
- Выпуск 3: Как запустить приложение на Mac несколько раз»>
Новый бэтмобиль в фильме Мэтта Ривза — это совершенно новая машина нового Бэтмена
Ответы на вопросы о блогах iGuides (ОБНОВЛЕНО)
Телефон Samsung: топовые смартфоны Samsung 2019 года в рейтинге
Маковод — маководу. Выпуск 3: Как запустить приложение на Mac несколько раз
Популярное
Маковод — маководу. Выпуск 3: Как запустить приложение на Mac несколько раз
Новый бэтмобиль в фильме Мэтта Ривза — это совершенно новая машина нового Бэтмена
Ответы на вопросы о блогах iGuides (ОБНОВЛЕНО)
Телефон Samsung: топовые смартфоны Samsung 2019 года в рейтинге
просто > сложно > сложно. Только недавно я наконец… | by Thai Pangsakulyanont
Thai Pangsakulyanont
·
Подписаться
4 минуты чтения
·
12 ноября 2015 г.
Как всегда отличная и информативная статья !
Это напоминает мне это из Дзен Python:
Простое лучше, чем сложное.
Сложность лучше, чем сложность.
Только недавно — когда мне пришлось работать с каким-то очень сложным кодом — я, наконец, ощутил разницу между сложный и сложный .
Это всего лишь моя интерпретация, и она может быть не совсем правильной.
сложный: менее прямолинейный
Насколько я понимаю, сложная функция по-прежнему делает одну вещь, но менее прямолинейно, чтобы получить некоторую выгоду. (Чаще всего это делается для повышения производительности.)
Например, алгоритм сортировки кучи более сложен, чем алгоритм пузырьковой сортировки 9.0027 .
Решение динамического программирования для самой длинной общей подстроки сложнее, чем наивная версия.
Как видите, я использую наивную версию в своем проекте.
Это потому, что более простой код легче понять и отладить, и он работает достаточно быстро для моего варианта использования (и я не могу найти самый длинный общий модуль подстроки в npm, который работал бы с простой строкой).
Я бы предпочел простой код сложному.
- Я стараюсь, чтобы моя функция была как можно меньше.
- Я обрабатываю свои данные, используя цепочку `.map` и `.filter` вместо цикла for, даже несмотря на то, что это создало бы много промежуточных структур данных.
- Я просто выполняю линейный поиск, когда я также могу выполнять двоичный поиск.
- Я бы не стал писать `shouldComponentUpdate`, хотя компонент использует только неизменяемую структуру данных.
- То есть, если он просто недостаточно быстр.
- Поскольку я не знаю, столкнусь ли я с узким местом в производительности или нет, я разрабатываю вещи таким образом, чтобы медленные части можно было легко заменить более быстрыми частями, не затрагивая остальную часть системы.
сложно: связано со слишком многими делами
Однажды я написал процедуру разбора файла нотной записи, которая одновременно обрабатывает все заголовки и события, при этом отслеживая информацию о времени, и создает на ее основе изображение.
Код делает это очень просто. Никаких причудливых абстракций, только чистый и прямой код. Этот PHP-скрипт даже не содержит слова «функция». Конечно, скрипт также обрабатывает загрузку файлов.
Но это сложно протестировать — вы можете протестировать только окончательные результаты, и это нельзя использовать повторно — вы не можете просто повторно использовать его в другом сценарии использования.
В моей новой версии (написанной на JavaScript для ритм-игры, которую я разрабатываю) каждая часть процесса становится отдельным модулем.
- Модуль декодирования потока байтов.
- Модуль для разбора декодированных данных.
- Модуль для представления событий партитуры в виде структуры данных.
- Модуль, работающий с тактовым размером.
- Модуль, преобразующий время в музыке во время в реальном мире.
- Модуль интерполяции чисел.
- Модуль, работающий с реальными заметками.
А бывает, что…
- Тестировать становится намного проще. Каждый модуль тестируется отдельно.
- Повторное использование становится намного проще. Я могу выбрать соответствующую часть модуля и использовать ее в совершенно разных ситуациях (например, для рендеринга партитуры в виде файла .wav или индексации песен внутри пакета) практически без изменений.
- Расширение становится намного проще. Поскольку код, обрабатывающий музыку, отделен от кода, выполняющего синтаксический анализ, я могу легко сделать свою игру совместимой с другим форматом файлов музыкальных партитур.
Хотя код более сложный, он проще, и с ним очень легко работать.
Я бы предпочел сложный код сложному коду.
- Я бы постарался, чтобы мои функции выполняли только одну функцию, насколько это возможно, даже если это означает больше обращений к API/базе данных. По крайней мере, вещи не запутываются. Возможно, позже вы найдете более элегантный способ их оптимизации!
- Я бы максимально нормализовал свою модель данных, чтобы мне не приходилось мучиться с их синхронизацией или предотвращением несогласованности данных (что, по моему мнению, очень подвержено ошибкам). Однако это означает, что логика запросов может немного усложниться, но ее можно легко абстрагировать. Денормализация — мое последнее средство.
- Я бы не стал сразу использовать такие вещи, как memcached ; Я бы просто использовал кеш в памяти. Однако, если придет время, я смогу заменить эту реализацию реализацией memcached, не затрагивая другие части программного обеспечения.
- Даже с возможностью кеширования я бы сначала ничего не кешировал, для простоты, а потом внедрял бы кеширование там, где это было бы наиболее выгодно.
- Кэширование должно быть максимально прозрачным. Это означает, насколько это возможно, что пользователи вашего кода должны иметь возможность пользоваться кешем, даже не подозревая о его наличии.
- Browserify — отличный пример: вы можете передать ему объект для использования в качестве кеша для ускорения пересборки. Остальная часть API остается неизменной — для использования этого кеша не требуется никаких других настроек. `shouldComponentUpdate` в React — еще один отличный пример.
- Не оптимизируйте, но оставьте место для оптимизации.
Позже я почитал в Интернете, что на самом деле означает слово «сложный» и «сложный», и эта ветка StackOverflow очень хорошо на него ответила:
Что означает «сложное лучше, чем сложное»?
В «Дзен Python» Тима Питерса меня смутила фраза «Сложное лучше сложного». Может ли кто-нибудь дать более подробное объяснение или пример?
stackoverflow.com
код боулинг — самая сложная программа «Hello world», которую вы можете оправдать операторы и генераторы структур данных, таких как
списки и словари .
Однако, боюсь, я не до конца понимаю использование фраз «как можно сложнее» и «обоснование». Тем не менее, вот краткое изложение моей обычной, довольно понятной и прямолинейной стратегии, за которой следует реальная реализация на Python, которая, как вы обнаружите, вполне соответствует игривому характеру языка высокого порядка:0003
Определение алфавита – очевидный первый шаг.
Для расширяемости мы выбираем весь диапазон ascii.
Обратите внимание на использование встроенного генератора списков, который может сэкономить нам часы
утомительная инициализация списка.сказать, сколько каждой буквы в алфавите мы будем использовать.
Это просто представлено в виде другого списка!Объедините эти два списка в один удобный словарь,
где ключи — это точки ascii, а значения — желаемая сумма.Теперь мы готовы начать создавать персонажей!
Начните с создания строки символов из словаря.
Это будет содержать все символы, которые нам нужны в нашем окончательном выводе, и
нужное количество каждого!Объявить желаемый порядок символов и инициировать новый список, который
будет содержать наш окончательный вывод. С помощью простой итерации мы поместим сгенерированный
символов в их конечное положение и распечатайте результат!
Вот реальная реализация
# 1: Определить алфавит:
а = диапазон (255)
# 2: Количество букв:
n = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0)
# 3: Слить в словарь:
d = {x: y вместо x, y в zip(a,n)}
# 4: «Инициализировать» символы
l = ''.