23
Как учить программировать?

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

Embed Size (px)

Citation preview

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

Как учить программировать?

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

Как учить программировать?

Что исчезнет, что останется?

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

Железо?

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

Железо?Не нужно

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

Systems engineering?

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

Systems engineering?Не нужно

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

Современные языки программирования?

Тоже не нужны?

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

4G languages• LabVIEW• Informix• Quest

• SuperCard• AIMMS• R

• Culprit• SQL!

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

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

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

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)

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

Функциональные языки?

Академия –> Мэйнстрим

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

Функциональные языки• Не победили за 40 лет• Сложны в использовании

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

Императивные языки• Переменные• Ветвление• Циклы

• Повторное использование кода• События и функции высших порядков - фронтенд

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

Язык для обучения• Императивный

• Простой синтаксис• Минимум boilerplate

• Используется в индустрии

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

Язык для обучения

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

JavaScript + P5.js

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

JavaScript + P5.js• JavaScript – браузер, сервер, мобилки, видео, игры, IoT• JavaScript – много материалов и инструментов• JavaScript – достаточно браузера, никакой установки и vendor lock-

in• Изображения и анимация – все нужные концепции• Проблемы – очень быстро развивается• Библиотеки – это для ПТУ

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

JavaScript + P5.jsJavaScript – несерьезный язык?

• Плохо с повторным использованием кода – раньше• Сейчас – модули, классы (ES6)• Самый быстрый из интерпретируемых• Слабая стандартная библиотека? Да• Полезно для обучения

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

Y U NO RUBY?• Rails or GTFO

• Много магии – мало уверенности• Rails sucks

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

Y U NO JAVA?• Много лишнего – сложно учить• Много лишнего – сложно делать

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

Y U NO HASKAL?• Or Scala, or ML, or F#...• Сложны сами по себе – студент не поймет• Сложно преподавать – материалы• Сложно писать – академические корни, плохая экосистема