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

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

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

[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)
А про патерны программирования кому-нить надо изучать?

[identity profile] serbod.livejournal.com 2013-08-04 12:27 pm (UTC)(link)
Не надо. Паттерны, лямбды и прочий brainfuck - внеклассное чтение.

[identity profile] theiced.livejournal.com 2013-08-04 01:47 pm (UTC)(link)
про паттерны нужно изучать будущим мудакам

[identity profile] bydlorus.livejournal.com 2013-08-05 07:10 am (UTC)(link)
Если нужен человек, разбирающийся в компьютерах - то основы архитектуры ЭВМ (АЛУ и пр), ассемблер в рамках "как на самом деле работает ваша программа на оперденном языке" и конечно же основы ОС. Параллельно можно и задачки давать решать - всё равно на каком языке, абы человек не заскучал.

А то потом приходят люди...

[identity profile] serbod.livejournal.com 2013-08-05 11:36 am (UTC)(link)
Быдлокодеру устройство ЭВМ совершенно не нужно, и даже вредно. Потому что языки высокого уровня полностью прячут от программера всю железную херню.

Я, к примеру, знаю устройство ЭВМ от логических элементов процессора (триггеры, (де)мультиплексоры, сумматоры, сдвигаторы, итд.) до стандартной и нестандартной периферии на шине и на портах. Но эти знания нужны только при написании прог под DOS. Даже сейчас, когда я пишу драйвера для USB и для всякой RaspberryPi/CubieBoard периферии, эти знания не востребованы. Даже частотой процессора можно управлять путем записи нужного числа в нужный файл.

Единственное, что постоянно используется, и о чем нужно помнить - старые добрые указатели. И то, благодаря старому доброму WinAPI.

[identity profile] berezovsky.livejournal.com 2013-08-05 11:48 am (UTC)(link)
Мультиплексоры-сумматоры - это Коротаев?

[identity profile] serbod.livejournal.com 2013-08-05 12:29 pm (UTC)(link)
Не помню.

[identity profile] serbod.livejournal.com 2013-08-05 12:48 pm (UTC)(link)
Наброс защитан!

Особенно жырный последний абзац - типа, без абстракций развитие невозможно, но абстракции тормозят развитие. Трололо!

На самом деле это проблема качества абстракций, и она успешно решается со временем. Скоро поголовье облачных программеров превысит (если еще не превысило) поголовье хардкодеров.

[identity profile] bydlorus.livejournal.com 2013-08-05 01:02 pm (UTC)(link)
Абстракции тормозят развитие? Цитату можно? "abstractions we've created over the years do allow us to deal with new orders of complexity" не очень похоже на "тормозят".

[identity profile] serbod.livejournal.com 2013-08-05 03:19 pm (UTC)(link)
-- The Law of Leaky Abstractions is dragging us down

[identity profile] bydlorus.livejournal.com 2013-08-05 04:06 pm (UTC)(link)
Точно, пропустил. Единство и борьба противоположностей в действии.