Лютый апгрейд подхода к обучению программированию

Sep 30, 2012 02:42

Вы наверняка уже знаете, что известнейшая Khan Academy, являющаяся пионером по онлайн-образованию школьников, совсем недавно выпустила интерактивные курсы по программированию. В качестве платформы используется JavaScript и библиотека Processing. Вполне логичный и достойный выбор, всячески поддерживаем и одобряем. JavaScript очень даже неплох в ( Read more... )

bret victor, haskell, erlang

Leave a comment

Comments 117

krlz September 30 2012, 10:17:47 UTC
Мне кажется, что использовать JavaScript в качестве первого языка, это мягко говоря жестоко. Этот язык плохо подходит для программирования, и, то, что люди делают чудесные вещи на нем это скорее чудо, чем следствие его достоинства.

Я сейчас тоже занимаюсь написанием кода для клиента, и мы используем GWT + GQuery, которые позволяют делать все тоже, что и javascript только в нормальном типизированном языке с нормальной стандартной библиотекой. Кстати, для любителей функциональщины, есть например трансляторы из F# в javascript, которые вполне себе работают.

Reply

blacklion September 30 2012, 10:33:41 UTC
Этот язык плохо подходит для программирования, и, то, что люди делают чудесные вещи на нем это скорее чудо, чем следствие его достоинства.
О! Причём, что самое обидное, там есть всего несколько тонких мест, которые приводят к такому. Их бы исправить - и отличный динамический язык. Причём всё вокруг неявного приведения типов и сравнений. Ну и молчаливое создание глобальных переменных, да.

Reply

krlz September 30 2012, 11:08:33 UTC
Имхо динамические языки вообще не подходят для программирования. Все то, чем когда-то хвалились любители динамики, есть в статических языках, причем типизированно, и в большинстве случаев не нужно ставить кучу аннотаций, ибо тайп инференс.

К тому что вы сказали про JS, я бы еще выкинул систему прототипов. Это имхо полная жесть, обычным людям совсем не понятная и добавил бы нормальную стандартную библиотеку, с коллекциями и прочим.

Reply

blacklion September 30 2012, 11:13:23 UTC
Все то, чем когда-то хвалились любители динамики, есть в статических языках, причем типизированно, и в большинстве случаев не нужно ставить кучу аннотаций, ибо тайп инференс.
Вот только ничего, сравнимого с DBI в perl, для статических языков так и не написали, кажется. LINQ как-то где-то близок, но не дотягивает.

Это имхо полная жесть, обычным людям совсем не понятная
Это лучшее, что там есть! И очень простая.

Reply


blacklion September 30 2012, 10:34:54 UTC
А ты читал у Левенчука про современные наработки московской лаборатории про обучение программированию? Они со специальными визуальными средами уже чуть не детсадовцев научились учить алгоритмам, натурально.

Reply

lionet September 30 2012, 10:37:47 UTC
URL, please?

Reply

blacklion September 30 2012, 10:39:52 UTC
ailev, но тегов он не ставит и пишет не только про это (в основном - про системную инженерию, что тоже очень интересно).
Последнее - вот http://ailev.livejournal.com/1028553.html - но было и несколько постов раньше.

Reply


alexott September 30 2012, 11:30:40 UTC
а ты про Light Table слышал?

Reply

lionet September 30 2012, 21:43:34 UTC
Ну Смоллтолк перизобрели, ничего особенного. Это всё-таки сермяжно-инженерная вещь, в отличие от того, о чём Брет говорит.

Reply


ext_483008 September 30 2012, 11:33:56 UTC
Smalltalk: canvas drawEllipseCenteredAtX:50 y:50 width:100 height:100.
Processing: ellipse(50,50,100,100);
x86 assembly: push 100; push 100; push 50; push 50; call _ellipse

На самом деле ж получается чуть-прокачанная разница между explicit/implicit - первое - длиннее, но понятнее новичку/не посвященному, второе - короче, но подразумевает, чуть большее знания контекста.
Второе это грубо говоря "сленг" - специалисты знают, какой термин, что значит и могут коммуницировать быстрее.

В рамках обучения - да первое читаемее и быстрее понимается и быстрее освоиться.
Но в рамках рабочего процесса - в жизни то придется столкнуться со вторым и придется доучиваться\переучиваться.

Тут встает вопрос, есть ли смысл - делать на две фазы и обучать например только первой ?

Reply

ext_483008 September 30 2012, 12:27:44 UTC
Продолжу мысль - контекст "машина с памятью и переменными и командами", который например транслируется в блок-схемы, на самом деле легче контекста "пано" с черным ящиком канваса(явного "canvas drawEllipseCenteredAt", или даже неявного "(global canvas.)ellipse "), который умеет как-то рисовать.

Делать визуальные инструменты - да надо и наверно лучше, чем текстовые.

Но вот как раз абстракцию, композицию и декомпозицию мне кажется на тех-же блок схемах передать гораздо легче, чем на визуальных инструментах, но к сожалению это - скучно и учить так не "sexy".

Reply

gabriel_irk October 2 2012, 13:49:10 UTC
> контекст "машина с памятью и переменными и командами", который например транслируется в блок-схемы

Сразу возникает кучка вопросов: это единственная модель, которая транслируется в блок-схемы? блок-схемы понятнее? по сравнению с чем? обучение на блок-схемах имеет какие-то непременные преимущества?

Но мне блок-схемы никогда не нравились, конечно.

> абстракцию, композицию и декомпозицию мне кажется на тех-же блок схемах передать гораздо легче, чем на визуальных инструментах

Третьего не дано? :)

Reply

gabriel_irk October 2 2012, 13:46:00 UTC
> Второе это грубо говоря "сленг" - специалисты знают, какой термин, что значит и могут коммуницировать быстрее.

Читается с той же скоростью (я уверен, что Вы не по буквам читаете, а как минимум - словами; скорее всего - сразу фразами), а писать это не нужно, ибо IDE пишет сама (на что указывает Берт).

При этом программистам (профессионалам) приходится читать и такой код, контекста которого они досконально не знают (хотя бы незнакомый фреймворк, что может встретиться даже в рамках одной достаточно большой системы).

Reply


sleepy_drago September 30 2012, 12:00:30 UTC
хороший вопрос - кого они пытаются учить своими кружочками? погроммисты это как пту _после_ стереометрии и введения в анализ. Когда клиент не только эллипсы должен понимать на автопилоте, а делать 3д сечения лехко.
Если они пытаются совратить детишек дошкольников то это совсем другая история.

Reply

sorhed September 30 2012, 12:13:03 UTC
Ну вообще программированию можно учиться задолго до стереометрии и введения в анализ.

Я первую программу написал в шестилетнем возрасте, многие другие дети тоже.

Reply

sleepy_drago September 30 2012, 14:20:55 UTC
я вот сейчас считаю что учить способных детей программированию это вредительство. В 90е когда все было очень романтично просто было еще не понятно что программисты это примерно то же что и водители век назад. В любой естественнонаучной отрасли способные детишки смогут добиться прогресса человечества, а погроммистов в помощь им найдут. То есть все те кто может что либо помимо программирования просто обязаны быть в первую очередь не программистами. а программирование им придется использовать как инструмент в своей работе, а не как профессию.

Reply

p1r4nh4 September 30 2012, 14:22:21 UTC
Ну почему, учить способных детей программированию, это то же самое, что учить их вождению - очень полезно.

Reply


Leave a comment

Up