metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-08-03 11:49 pm

Обучение программированию с нуля.

Последнее время часто возникает такой вопрос: как обучить человека программированию вообще с нуля. Т.е., например, человек умеет работать на компьютере и все, пользователь - с чего начинать, чтобы он смог хоть как-то понять, например, книги по программированию "для начинающих".
Если по хорошему, то начинать, конечно, надо с таненбаума, ассемблера, сишечьки, SICP и прочего такого - но, само собой, за короткое время это не осилишь, да и, честно говоря, когда не видишь практического применения - оно даже с базовыми знаниями нихрена не осиливается. Разве что для сдачи экзамена, когда над душой стоит препод с дубиной.

[identity profile] g-rub.livejournal.com 2013-08-03 09:13 pm (UTC)(link)
В порядке бреда -- линукс, CLI, автоматизация консольных задач...

Хотя, конечно, правильнее всего начать с вопроса "а для чего данного конкретного человека надо обучать программированию? и кто и почему решил, что его надо обучать?"

Ведь пока по условиям задачи "нет практического применения", то нет и собственно цели. А если нет цели -- к чему двигаться-то?

[identity profile] metaclass.livejournal.com 2013-08-03 09:21 pm (UTC)(link)
Да, без цели нереально.

[identity profile] gineer.livejournal.com 2013-08-04 06:09 am (UTC)(link)
А шоб було. :))

[identity profile] byyj.livejournal.com 2013-08-04 08:55 am (UTC)(link)
Без морковки перед носом такой объём рутины за короткое время не осилить, Вы правы.

Но начинать с манкискриптокодинга - это убить у ученика всякое желание программировать на три поколения вперёд.

Волшебство начинается с нескольких К строк. Есть программирование и Программирование, и ученик, наверное, всё-таки стремится ко второму. В первом случае тоже могут быть интересные решения, но они, как правило плоские, и требуют больше толстого багажа, чем творчества. Второй случай описывается классическим определением программиста: "Это человек, который одновременно работает на разных уровнях абстракции". И здесь язык и методология только важные вторичные инструменты.

Мне представляется, что обучение должно начинаться с важных абстрактных понятий: структуры данных, структуры программ, сущности, объекты, функции. Парадигмы. Мультипарадигматичность:) И разбирая эти интересные вещи можно использовать тот или иной язык разной направленности, даже лучше псевдоязык для начала. А лучше и два: Си-подобный и Лисп-подобный, ну или Java и F#. В общем первый "семестр" это всё равно:)

[identity profile] g-rub.livejournal.com 2013-08-04 04:48 pm (UTC)(link)
Вопрос вообще-то был "какую минимальную практику дать человеку, чтобы книжки по теории не были для него космической абстракцией".

Т.е. потрогать руками простейшее программирование.


[identity profile] byyj.livejournal.com 2013-08-04 05:24 pm (UTC)(link)
аааа, точно
надо же куда занесло:)

но если потрогать руками, то проще всего Excel. Писнул пару строк, заполнилась простыня. Эффект потрясающий.

меня там сбила с толку фраза "понять программирование". Без того, что я написал в предыдущем камменте "понять" никак не удастся. А так, увлечь можно кого чем. Помнится как-то в умный калькулятор вводили программу кодами и он её выполнял, восторгу не было предела.