как учить программировать[1]
TRANSCRIPT
Как учить программировать?
Как учить программировать?
Что исчезнет, что останется?
Железо?
Железо?Не нужно
Systems engineering?
Systems engineering?Не нужно
Современные языки программирования?
Тоже не нужны?
4G languages• LabVIEW• Informix• Quest
• SuperCard• AIMMS• R
• Culprit• SQL!
4G languagesSEQUEL 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_Systems.php• http://p5js.org/examples/examples/Simulate_Flocking.php• http://p5js.org/examples/examples/Interaction_Reach_2.php
JavaScript + P5.jsJavaScript – несерьезный язык?
• Плохо с повторным использованием кода – раньше• Сейчас – модули, классы (ES6)• Самый быстрый из интерпретируемых• Слабая стандартная библиотека? Да• Полезно для обучения
Y U NO RUBY?• Rails or GTFO
• Много магии – мало уверенности• Rails sucks
Y U NO JAVA?• Много лишнего – сложно учить• Много лишнего – сложно делать
Y U NO HASKAL?• Or Scala, or ML, or F#...• Сложны сами по себе – студент не поймет• Сложно преподавать – материалы• Сложно писать – академические корни, плохая экосистема