Просто о сложном программирование: Просто о сложном: программирование для самых маленьких

Просто о сложном: программирование для самых маленьких

В наше время подрастающее поколение проявляет большой интерес к информационным технологиям, технике, Интернету — пользоваться компьютером дети порой начинают раньше, чем учатся говорить.Четверо молодых людей из Алматы решили посодействовать малышам в их стремлении познавать новое и создали проект «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 несколько раз»>

    Маковод — маководу. Выпуск 3: Как запустить приложение на Mac несколько раз

  • Новый бэтмобиль в фильме Мэтта Ривза — это совершенно новая машина нового Бэтмена

  • Ответы на вопросы о блогах iGuides (ОБНОВЛЕНО)

  • Телефон Samsung: топовые смартфоны Samsung 2019 года в рейтинге

Популярное

Маковод — маководу. Выпуск 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

  1. Определение алфавита – очевидный первый шаг.
    Для расширяемости мы выбираем весь диапазон ascii.
    Обратите внимание на использование встроенного генератора списков, который может сэкономить нам часы
    утомительная инициализация списка.

  2. сказать, сколько каждой буквы в алфавите мы будем использовать.
    Это просто представлено в виде другого списка!

  3. Объедините эти два списка в один удобный словарь,
    где ключи — это точки ascii, а значения — желаемая сумма.

  4. Теперь мы готовы начать создавать персонажей!
    Начните с создания строки символов из словаря.
    Это будет содержать все символы, которые нам нужны в нашем окончательном выводе, и
    нужное количество каждого!

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

Вот реальная реализация

 # 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 = ''.

This entry was posted in Популярное