SlideShare a Scribd company logo
1 of 23
Как учить
программировать?
Как учить
программировать?
Что исчезнет, что останется?
Железо?
Железо?
Не нужно
Systems
engineering?
Systems engineering?
Не нужно
Современные языки программирования?
Тоже не нужны?
4G languages
• LabVIEW
• Informix
• Quest
• SuperCard
• AIMMS
• R
• Culprit
• SQL!
4G languages
SEQUEL is intended as a data base sublanguage for both the
professional programmer and the more infrequent data base user
- “Sequel: A structured English query language”,
- D. Chamberlin, R. Boyce, 1974
O RLY?
Subquery Scan testview2 (cost=395272.42..395600.96 rows=8761 width=24) (actual time=0.147..562.790 rows=8761 loops=1)
-> CTE Scan on testcte (cost=395272.42..395447.64 rows=8761 width=36) (actual time=0.144..554.194 rows=8761 loops=1)
CTE testcte
-> Seq Scan on test1 t1 (cost=0.00..395272.42 rows=8761 width=12) (actual time=0.140..542.657 rows=8761 loops=1)
SubPlan 1
-> Aggregate (cost=15.02..15.03 rows=1 width=4) (actual time=0.019..0.019 rows=1 loops=8761)
-> Bitmap Heap Scan on test2 t2 (cost=4.28..15.02 rows=1 width=4) (actual time=0.012..0.013 rows=0
loops=8761)
Recheck Cond: (test1_id = $0)
Filter: ((category)::text = 'A'::text)
-> Bitmap Index Scan on test_if_idx (cost=0.00..4.28 rows=3 width=0) (actual time=0.007..0.007 rows=3
loops=8761)
Index Cond: (test1_id = $0)
SubPlan 2
-> Aggregate (cost=15.02..15.03 rows=1 width=4) (actual time=0.019..0.019 rows=1 loops=8761)
-> Bitmap Heap Scan on test2 t2 (cost=4.28..15.02 rows=1 width=4) (actual time=0.012..0.012 rows=0
loops=8761)
Recheck Cond: (test1_id = $0)
Функциональные языки?
Академия –> Мэйнстрим
Функциональные языки
• Не победили за 40 лет
• Сложны в использовании
Императивные языки
• Переменные
• Ветвление
• Циклы
• Повторное использование кода
• События и функции высших порядков - фронтенд
Язык для обучения
• Императивный
• Простой синтаксис
• Минимум boilerplate
• Используется в индустрии
Язык для обучения
JavaScript + P5.js
JavaScript + P5.js
• JavaScript – браузер, сервер, мобилки, видео, игры, IoT
• JavaScript – много материалов и инструментов
• JavaScript – достаточно браузера, никакой установки и vendor
lock-in
• Изображения и анимация – все нужные концепции
• Проблемы – очень быстро развивается
• Библиотеки – это для ПТУ
JavaScript + P5.js
Примеры
• http://p5js.org/examples/examples/Simulate_Multiple_Particle_Syste
ms.php
• http://p5js.org/examples/examples/Simulate_Flocking.php
• http://p5js.org/examples/examples/Interaction_Reach_2.php
JavaScript + P5.js
JavaScript – несерьезный язык?
• Плохо с повторным использованием кода – раньше
• Сейчас – модули, классы (ES6)
• Самый быстрый из интерпретируемых
• Слабая стандартная библиотека? Да
• Полезно для обучения
Y U NO RUBY?
• Rails or GTFO
• Много магии – мало уверенности
• Rails sucks
Y U NO JAVA?
• Много лишнего – сложно учить
• Много лишнего – сложно делать
Y U NO HASKAL?
• Or Scala, or ML, or F#...
• Сложны сами по себе – студент не поймет
• Сложно преподавать – материалы
• Сложно писать – академические корни, плохая экосистема
FIN
ebonfortress@gmail.com

More Related Content

What's hot

Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Ontico
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Anton Baranov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
Performance management lessons learnt / Андрей Дмитриев (JUGRU)
Performance management lessons learnt / Андрей Дмитриев (JUGRU)Performance management lessons learnt / Андрей Дмитриев (JUGRU)
Performance management lessons learnt / Андрей Дмитриев (JUGRU)Ontico
 

What's hot (6)

Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Performance management lessons learnt / Андрей Дмитриев (JUGRU)
Performance management lessons learnt / Андрей Дмитриев (JUGRU)Performance management lessons learnt / Андрей Дмитриев (JUGRU)
Performance management lessons learnt / Андрей Дмитриев (JUGRU)
 

Similar to как учить программировать[1]

D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокAndrey Karpov
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parseryalegko
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Ontico
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingTatiana Volkova
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейГотовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейSkillFactory
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7Alexander Levantovsky
 
Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Vsevolod Dyomkin
 

Similar to как учить программировать[1] (20)

D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
 
So Your WAF Needs a Parser
So Your WAF Needs a ParserSo Your WAF Needs a Parser
So Your WAF Needs a Parser
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Rx
RxRx
Rx
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейГотовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?
 

как учить программировать[1]

  • 8. 4G languages • LabVIEW • Informix • Quest • SuperCard • AIMMS • R • Culprit • SQL!
  • 9. 4G languages SEQUEL is intended as a data base sublanguage for both the professional programmer and the more infrequent data base user - “Sequel: A structured English query language”, - D. Chamberlin, R. Boyce, 1974
  • 10. O RLY? Subquery Scan testview2 (cost=395272.42..395600.96 rows=8761 width=24) (actual time=0.147..562.790 rows=8761 loops=1) -> CTE Scan on testcte (cost=395272.42..395447.64 rows=8761 width=36) (actual time=0.144..554.194 rows=8761 loops=1) CTE testcte -> Seq Scan on test1 t1 (cost=0.00..395272.42 rows=8761 width=12) (actual time=0.140..542.657 rows=8761 loops=1) SubPlan 1 -> Aggregate (cost=15.02..15.03 rows=1 width=4) (actual time=0.019..0.019 rows=1 loops=8761) -> Bitmap Heap Scan on test2 t2 (cost=4.28..15.02 rows=1 width=4) (actual time=0.012..0.013 rows=0 loops=8761) Recheck Cond: (test1_id = $0) Filter: ((category)::text = 'A'::text) -> Bitmap Index Scan on test_if_idx (cost=0.00..4.28 rows=3 width=0) (actual time=0.007..0.007 rows=3 loops=8761) Index Cond: (test1_id = $0) SubPlan 2 -> Aggregate (cost=15.02..15.03 rows=1 width=4) (actual time=0.019..0.019 rows=1 loops=8761) -> Bitmap Heap Scan on test2 t2 (cost=4.28..15.02 rows=1 width=4) (actual time=0.012..0.012 rows=0 loops=8761) Recheck Cond: (test1_id = $0)
  • 12. Функциональные языки • Не победили за 40 лет • Сложны в использовании
  • 13. Императивные языки • Переменные • Ветвление • Циклы • Повторное использование кода • События и функции высших порядков - фронтенд
  • 14. Язык для обучения • Императивный • Простой синтаксис • Минимум boilerplate • Используется в индустрии
  • 17. JavaScript + P5.js • JavaScript – браузер, сервер, мобилки, видео, игры, IoT • JavaScript – много материалов и инструментов • JavaScript – достаточно браузера, никакой установки и vendor lock-in • Изображения и анимация – все нужные концепции • Проблемы – очень быстро развивается • Библиотеки – это для ПТУ
  • 18. JavaScript + P5.js Примеры • http://p5js.org/examples/examples/Simulate_Multiple_Particle_Syste ms.php • http://p5js.org/examples/examples/Simulate_Flocking.php • http://p5js.org/examples/examples/Interaction_Reach_2.php
  • 19. JavaScript + P5.js JavaScript – несерьезный язык? • Плохо с повторным использованием кода – раньше • Сейчас – модули, классы (ES6) • Самый быстрый из интерпретируемых • Слабая стандартная библиотека? Да • Полезно для обучения
  • 20. Y U NO RUBY? • Rails or GTFO • Много магии – мало уверенности • Rails sucks
  • 21. Y U NO JAVA? • Много лишнего – сложно учить • Много лишнего – сложно делать
  • 22. Y U NO HASKAL? • Or Scala, or ML, or F#... • Сложны сами по себе – студент не поймет • Сложно преподавать – материалы • Сложно писать – академические корни, плохая экосистема