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)
Да, без цели нереально.

(no subject)

[identity profile] gineer.livejournal.com - 2013-08-04 06:09 (UTC) - Expand

(no subject)

[identity profile] byyj.livejournal.com - 2013-08-04 08:55 (UTC) - Expand

(no subject)

[identity profile] g-rub.livejournal.com - 2013-08-04 16:48 (UTC) - Expand

(no subject)

[identity profile] byyj.livejournal.com - 2013-08-04 17:24 (UTC) - Expand

[identity profile] bydlorus.livejournal.com 2013-08-03 09:35 pm (UTC)(link)
MIT же лекции выложил, можно подсмотреть у них.

[identity profile] berezovsky.livejournal.com 2013-08-03 09:38 pm (UTC)(link)
Нельзя так делать, нужно всесторонее образование давать с малых лет. Потом, возможно, уклоняться в специализацию, но уже с солидной базой за спиной. Иначе вырастут однобокие калеки.
Если база уже какая-то есть за плечами, например, универ по несмежной специальности, можно попробовать получить второе высшее.
А натаскивать на конкретные операции - размывать профессию, которая и так уже размыта донельзя.
Ну или брать и составлять свою программу обучения на несколько лет. Возможно, на основе какой-нибудь потогоной западной.

[identity profile] theiced.livejournal.com 2013-08-04 04:47 am (UTC)(link)
от универского сранееобразования пользы нет.
(deleted comment)

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-04 07:58 (UTC) - Expand

(no subject)

[identity profile] guamoka.livejournal.com - 2013-08-04 09:33 (UTC) - Expand

(no subject)

[identity profile] exemok.livejournal.com - 2013-08-04 12:20 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 13:35 (UTC) - Expand

(no subject)

[identity profile] antontsau.livejournal.com - 2013-08-04 05:44 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-08-04 09:46 (UTC) - Expand

(no subject)

[identity profile] antontsau.livejournal.com - 2013-08-04 09:55 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-08-04 12:16 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 13:51 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 14:23 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 14:39 (UTC) - Expand

(no subject)

[identity profile] dennab.livejournal.com - 2013-08-04 14:37 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 14:39 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 08:00 (UTC) - Expand

(no subject)

[identity profile] dennab.livejournal.com - 2013-08-04 14:38 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-08-04 14:41 (UTC) - Expand

[identity profile] Дима Тихвинский (from livejournal.com) 2013-08-03 10:01 pm (UTC)(link)
В принципе, когда приходят учиться — уже понимают, что надо "писать", остаются три больших вопроса — куда, что, и как это потом запустить.

Основы синтаксиса хоть си, хоть JS показываются за пол-часа, простые задачки тоже показать недолго. Но это студенты-первокурсники, вошедшие в темп жизни университета, в школе — точно медленнее. Я это видел в кружке для школьников (Аничков ДТЮ) и в своём кружке для первокурсников (в ИТМО).

Школьников кстати учили проще — вот вам 30 строк кода на VB, вбейте, запустите, разберитесь что изменить чтобы поведение изменилось с X на Y.

[identity profile] x-a-e-p.livejournal.com 2013-08-03 10:47 pm (UTC)(link)
При чём здесь синтаксис? Написано же - 'вообще с нуля'.

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 04:48 (UTC) - Expand

[identity profile] divine-assass1n.livejournal.com 2013-08-03 10:08 pm (UTC)(link)
Вот с этого курса можно начинать https://www.coursera.org/course/proglang

(Anonymous) 2013-08-04 11:07 am (UTC)(link)
https://www.coursera.org/course/programdesign ещё

(no subject)

[identity profile] belezbar.livejournal.com - 2013-08-04 15:34 (UTC) - Expand

[identity profile] juan-gandhi.livejournal.com 2013-08-03 11:52 pm (UTC)(link)
У нас интёрн есть - ну вроде полный лох, что-то кропал убогое нога за ногу на си, ленив и нелюбопытен. Я его направил на projecteuler - теперь он сутками программирует сидит.

Вот.

[identity profile] anonim-legion.livejournal.com 2013-08-04 02:22 am (UTC)(link)
А мыться и есть успевает?

(no subject)

[identity profile] acerv.livejournal.com - 2013-08-04 06:26 (UTC) - Expand

(no subject)

[identity profile] timon-aeg.livejournal.com - 2013-08-04 15:41 (UTC) - Expand

(no subject)

[identity profile] acerv.livejournal.com - 2013-08-04 16:54 (UTC) - Expand

(no subject)

[identity profile] fumiripits.livejournal.com - 2013-08-04 10:12 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-04 12:50 (UTC) - Expand

(no subject)

[identity profile] zmila.livejournal.com - 2013-08-05 09:48 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 11:22 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-08-06 04:23 (UTC) - Expand

[identity profile] megomao.livejournal.com 2013-08-04 06:33 am (UTC)(link)
я вожу только одну проблему, время. его может заберать семья, основная работа.

[identity profile] vp.livejournal.com 2013-08-04 07:47 am (UTC)(link)
Уверен, что нужно действовать так:

Глубокое изучение администрирования целевой ОС + один развитый современный ООП язык.

Например, винда + сишарп,
винда + Qt,
линукс + питон.
линукс + Qt

То нибудь такое, чтобы у человека не было от входа иллюзии дикой сложности и он не застрял на входном пороге и второстепенных вопросах. Чтобы у него все получалось.

[identity profile] theiced.livejournal.com 2013-08-04 08:00 am (UTC)(link)
ооп - сложно и говно (да и вообще не нужно).

(no subject)

[identity profile] vp.livejournal.com - 2013-08-04 08:09 (UTC) - Expand

(no subject)

[identity profile] pascendi.livejournal.com - 2013-08-04 11:39 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 13:37 (UTC) - Expand

(no subject)

[identity profile] pascendi.livejournal.com - 2013-08-04 16:33 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 19:02 (UTC) - Expand

(no subject)

[identity profile] pascendi.livejournal.com - 2013-08-05 06:07 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-05 08:36 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 13:37 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-04 13:53 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 13:55 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 09:31 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-04 12:51 (UTC) - Expand

(no subject)

[identity profile] timon-aeg.livejournal.com - 2013-08-04 15:42 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-04 16:21 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-04 17:26 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-04 18:16 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-04 18:18 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 03:58 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-05 07:18 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 09:29 (UTC) - Expand

(no subject)

[identity profile] timon-aeg.livejournal.com - 2013-08-04 17:44 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-04 08:01 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-04 08:22 (UTC) - Expand

(no subject)

[identity profile] dizel-by.livejournal.com - 2013-08-04 11:26 (UTC) - Expand

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-04 11:35 (UTC) - Expand

(no subject)

[identity profile] dizel-by.livejournal.com - 2013-08-04 11:37 (UTC) - Expand

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-04 11:57 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-04 12:34 (UTC) - Expand

(no subject)

[identity profile] dizel-by.livejournal.com - 2013-08-04 12:35 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 08:02 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-05 08:05 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 08:13 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-05 08:43 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 09:06 (UTC) - Expand

(no subject)

[identity profile] vp.livejournal.com - 2013-08-05 09:09 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 09:23 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 09:27 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 09:27 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 10:10 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 11:57 (UTC) - Expand

[identity profile] vit-r.livejournal.com 2013-08-04 07:56 am (UTC)(link)
Практика показывает, что совершенно пофиг с чего и по какой методе начинать, если выполнено основное правило: изучаться сразу должны два языка разной философии. Разве что бейсик и подобное безобразие не стоит показывать сразу.

[identity profile] exemok.livejournal.com 2013-08-04 08:31 am (UTC)(link)
С алгоритмов надо начинать. Кнута читать не предлагаю, ибо толстый слишком, но что нить такое обязательно
Edited 2013-08-04 08:32 (UTC)

[identity profile] jek-hor.livejournal.com 2013-08-04 10:29 am (UTC)(link)
А зачем? Абстракции без перспектив применения, программирование ради программирования — вот как эти все алгоритмы на первых порах воспринимаются. Соответственно, их нравится изучать только совсем психам вроде нас.

(no subject)

[identity profile] pascendi.livejournal.com - 2013-08-04 11:40 (UTC) - Expand

(no subject)

[identity profile] exemok.livejournal.com - 2013-08-04 12:16 (UTC) - Expand

[identity profile] tzirechnoy.livejournal.com 2013-08-04 08:51 am (UTC)(link)
Предлагаю с микроконтроллеров. Сейчас -- с армовских. Бутстрэп, все дела, диодики.

Потом можно либо схему под это дать, либо предложыть написать форт.

[identity profile] permea-kra.livejournal.com 2013-08-04 08:55 am (UTC)(link)
Я бы предложил начать с хаскеля и численных методов. Без IO поначалу или давать его чисто феноменологически.
Просто, наглядно и т.п.

[identity profile] aamonster.livejournal.com 2013-08-04 09:58 am (UTC)(link)
Ага, человека всё равно не жалко - давайте на нём экспериментировать.

(no subject)

[identity profile] voidex.livejournal.com - 2013-08-04 10:52 (UTC) - Expand

(no subject)

[identity profile] aamonster.livejournal.com - 2013-08-04 11:35 (UTC) - Expand

(no subject)

[identity profile] dizel-by.livejournal.com - 2013-08-04 11:24 (UTC) - Expand

(no subject)

[identity profile] aamonster.livejournal.com - 2013-08-04 11:36 (UTC) - Expand

(no subject)

[identity profile] permea-kra.livejournal.com - 2013-08-05 07:51 (UTC) - Expand

[identity profile] bydlorus.livejournal.com 2013-08-04 09:08 am (UTC)(link)
Я бы предложил начать с детских книжек про алгоритмы, например, какой-нибудь путешествие Маши и Коли в стране Эвээм. Где-то через год можно браться за более серьёзные задания - скажем, искать букву Ы на клавиатуре.

[identity profile] exemok.livejournal.com 2013-08-04 12:22 pm (UTC)(link)
А что за книжка? Что то ненагулилось. Мне как раз ребенка надо к прекрасному привлекать. Не Кнута же ей в 6 лет давать читать ))

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-08-04 12:27 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-04 16:12 (UTC) - Expand

[identity profile] peric.livejournal.com 2013-08-04 09:27 am (UTC)(link)
начинать с художественной литературы.
само по себе программирование - несложный процесс, любой более-менее мозговитый перец осилит любую задачу, тяжело только выбрать, чем именно заниматься.

[identity profile] exemok.livejournal.com 2013-08-04 12:17 pm (UTC)(link)
Это говорит, человекпериц, закончивший юрфак?

[identity profile] guamoka.livejournal.com 2013-08-04 09:40 am (UTC)(link)
Имхо, начинать тренероваться действительно лучше на кошках на алгоритмах. А Ку-Те/Шму-Те-- это вторично. Проблема не научить "с нуля". А не оставить "нулём" с багажем бессистемных знаний.

[identity profile] aamonster.livejournal.com 2013-08-04 10:06 am (UTC)(link)
Даже в этих рамках остаётся несколько совершенно разных подходов. Как минимум - императивщина vs декларативщина. Так что общего решения нет.

[identity profile] aamonster.livejournal.com 2013-08-04 10:05 am (UTC)(link)
Вообще-то надо для начала понять, кого учишь и чего от этого человека можно добиться.
Второе - чего от этого человека нужно добиться (ну, можно с этого начать).

И уже имея в голове эти знания - можно попытаться составить если не учебную программу, то хотя бы намётки - учить его Хаскелю или C#, ассемблеру или C++, а может, как тут предложили, вообще начать с микроконтроллеров (беспаечная макетка, attiny, несколько светодиодов и резисторов - доступно даже детям; AtmelStudio - это тот же Visual Studio; ну а ощущение, что ты сам сделал и запрограммировал настоящее компьютерное устройство - бесценно).

[identity profile] inhate.livejournal.com 2013-08-04 10:43 am (UTC)(link)
Зачем?
1) Научиться программировать.
2) Научиться "программировать".
3) Впихнуть на работу в ЕПАМ, чтобы не сдох с голоду.

[identity profile] belezbar.livejournal.com 2013-08-04 10:53 am (UTC)(link)
Взять предметную область, в которой человек немного шарит, и придумать ему задачу, которую можно решить с помощью компьютера. А программу пусть на псевдокоде пока пишет, хоть своими словами.

[identity profile] Дима Тихвинский (from livejournal.com) 2013-08-04 11:25 am (UTC)(link)
Расписал простыню и стёр, попробую коротко.

Проблема образовательных проста — объяснять как (физически, логически, программно) работают внутренности ПК или конкретного ЯП обычно некогда, обучаемому даётся окошко для ввода магических заклинаний, показывается пара примеров заклинаний и книжка, где описано как их составлять и из чего они состоят. В современной версии книжка может заменяться гуглом или встроенным хелпом IDE (это для MS).
,
Это — хреново и непрофессионально, но если задача — запустить процесс, то сойдёт, главное чтобы пытался что-то писать и задавал вопросы. Отсюда и обучение начиная с синтаксиса магических заклинаний.

По хорошему, это нужно делать объясняя границы черного ящика — "как работает X описано вот здесь, а как оно сделано внутри — вот здесь, а почему оно так сделано — вот эти пять томов." При правильном темпе подачи круг знаний расширяется от прикладного до общеобразовательного.

---- теперь мысли

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

Возможно где-то это реализовано в нужной пропорции, но я такого не видел — либо лютое дрочево на машину Тьюринга и формальную логику, либо "курсовая работа — написать интернет-магазин". И нигде — длительной практики с постоянным контролем и корректировкой. Такое обучение — полный капец для индустрии, но пока есть запас прочности в виде возможности доучивать, направлять, ревьюить код — перевариваем тех, кого дают.

P.S. Да, я успел побыть "преподом" — два семестра IT-кружков, и семестр пед. практики физиком

[identity profile] berezovsky.livejournal.com 2013-08-04 11:32 am (UTC)(link)
А почему человек должен подстраиваться под "индустрию"? :-)

(no subject)

[identity profile] pascendi.livejournal.com - 2013-08-04 11:41 (UTC) - Expand

[identity profile] serbod.livejournal.com 2013-08-04 11:52 am (UTC)(link)
Если учить хорошему, доброму, вечному, то советую начать с python.

Потом основы Си для грамотности и QT как пример продуманной библиотеки/фреймворка.

Если нужен фрилансер-быдлокодер - HTML, JavaScript.

Если нужен ванильно-энтерпрайзный быдлокодер - 1С.

Если нужен кроваво-энтерпрайзный быдлокодер - Java.

Если нужен хардкорно-кроссплатформенный быдлокодер - FreePascal.

[identity profile] exemok.livejournal.com 2013-08-04 12:18 pm (UTC)(link)
А про патерны программирования кому-нить надо изучать?

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-04 12:27 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 13:47 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-05 07:10 (UTC) - Expand

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-05 11:36 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-08-05 11:48 (UTC) - Expand

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-05 12:29 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-05 11:59 (UTC) - Expand

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-05 12:48 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-05 13:02 (UTC) - Expand

(no subject)

[identity profile] serbod.livejournal.com - 2013-08-05 15:19 (UTC) - Expand

(no subject)

[identity profile] bydlorus.livejournal.com - 2013-08-05 16:06 (UTC) - Expand

[identity profile] vit0ld.livejournal.com 2013-08-04 01:06 pm (UTC)(link)
Качественных ресурсов на английском языке предостаточно, кмк.

Э.Танненбаум, как минимум

Structured Computer Organization
Computer Networks

это теория для общей грамотности и понимания как всё устроено.

ОнлайнКурсы , как тот же CS 101, тут тоже уместны .

Паралельно с общей теорией, нужно выбрать пару ЯП, оч желательно чтоб один из них был скриптовый ( какой - зависит от, Питон хорошо, Руби тоже неплохо, но Руби не так распространён в дистрибутивах, пока что, насколько я вижу ),
и тренироваться в написании кода, начиная с простейших задачек.
Задачки можно брать с уже упоминавшегося Project Euler, подсмотреть у Д. Кнута в TAOCP, кроме них есть сборники олимпиадных задачек, ....

Но одному всё равно слишком сложно, на мой взгляд, нужен наставник, учитель, мотиватор, или на худой конец "поводырь" :)

[identity profile] theiced.livejournal.com 2013-08-04 02:58 pm (UTC)(link)
>Э.Танненбаум, как минимум

эээ? нахуя? первая для совсем дибилов а вторая нихуя не основы.

>Паралельно с общей теорией, нужно выбрать пару ЯП, оч желательно чтоб один из них был скриптовый

лисп же. один. можно елисп.

>Руби тоже неплохо, но Руби не так распространён в дистрибутивах, пока что, насколько я вижу

а это тут причём

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-04 16:19 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-08-04 19:03 (UTC) - Expand

(no subject)

[identity profile] vit0ld.livejournal.com - 2013-08-05 12:46 (UTC) - Expand

[identity profile] blackyblack.livejournal.com 2013-08-04 03:25 pm (UTC)(link)
1. Пройти курс на intuit.ru или подобном ресурсе для начала лучше для Си. Обязательно прорешивать задания к курсу.
2. Выяснить, нравится ли программирование человеку. Если нет, то лучше на этом и остановиться.
3. Дать в зубы дельфи и пускай рисует формочки. Получившиеся формочки те что похуже в мусорку, те что получше в работу.
4. Через год показать лисп. Решить на нём не очень сложное задание.
5. Решить сложное задание для работы на лиспе/кложури.
6. Заставить осваивать основной язык для работы.

[identity profile] arthin.livejournal.com 2013-08-04 04:40 pm (UTC)(link)
Дык HTDP.

(Anonymous) 2013-08-04 07:48 pm (UTC)(link)
совсем-совсем с нуля - смотрите "комплект учебных миров". проверено на собственном племяннике %)
PS: там в самом начале вообще ассемлер из трех команд, исполнитель - робот, программирование драг-н-дропом %)

Page 1 of 2