dil: (Default)
dil ([personal profile] dil) wrote2009-10-05 04:00 pm

А я потом удивляюсь,

откуда берётся столько быдлокодеров на PHP. А вот откуда.

Начав с языка, провоцирующего на написание поганого кода, дисциплине программирования уже не научиться.

Правильно кто-то написал в комментах: слишком низкий порог вхождения..

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

[identity profile] tullamoredew.livejournal.com 2009-10-05 03:18 pm (UTC)(link)
напомнило:
http://imgs.xkcd.com/comics/11th_grade.png

[identity profile] dil.livejournal.com 2009-10-05 03:19 pm (UTC)(link)
перл тоже не лучшее средство для обучения программированию, но картинка по сути правильная

[identity profile] tullamoredew.livejournal.com 2009-10-05 03:20 pm (UTC)(link)
если чисто эстетически то наверное надо начинать с пайтона. ну а если учить всерьез то конечно с С

[identity profile] dil.livejournal.com 2009-10-05 03:23 pm (UTC)(link)
учиться хорошо на паскале. или на модуле. или вот на аде. но у них практического применения нет.
так что да, на питоне, наверное.. только после него остальные языки будут казаться очень ограниченными :)

[identity profile] tullamoredew.livejournal.com 2009-10-05 03:27 pm (UTC)(link)
потому я и говорю - С как язык для общего понимания процессов, чтоб народ врубался что массивы и переменные просто так не назначаются, чтоб поняли кто такие поинтеры, malloc и прочие страшилки, а потом толкнуть в сторону джавы и пайтона

я сам учился на паскале и (наверное извращения ради на прологе), и после этого в С например с налета не врубаюсь, да и ООП тоже не так легко дается

[identity profile] dil.livejournal.com 2009-10-05 03:28 pm (UTC)(link)
а я начинал с фортрана и PL/1 :)

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 17:44 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 15:30 (UTC) - Expand

(no subject)

[identity profile] deadkittten.livejournal.com - 2009-10-05 16:47 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 16:03 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 16:07 (UTC) - Expand

(no subject)

[identity profile] ivlad.livejournal.com - 2009-10-05 18:35 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 20:12 (UTC) - Expand

[identity profile] motto.livejournal.com 2009-10-05 03:41 pm (UTC)(link)
слушай, а вот что это за вера, что языки имени Вирта хороши в учебных целях?

Ну что в том же Паскале есть такого, что мешает Ц?
кроме того факта, что Ц -гадость

Мне, кстати, если серьезно Objective-C кажется весьма годным именно с учебной точки зрения

Хотя, может быть, честный smalltalk будет педагогичнее и правильнее

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 15:47 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:08 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 17:11 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:33 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:38 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 17:39 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:51 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:59 (UTC) - Expand

(no subject)

[identity profile] ivlad.livejournal.com - 2009-10-05 18:37 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 18:56 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 21:08 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 20:17 (UTC) - Expand

(no subject)

[identity profile] ivlad.livejournal.com - 2009-10-05 18:36 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 16:06 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 16:55 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 16:58 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:09 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 17:06 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:11 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 17:12 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:15 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 17:18 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:21 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 17:48 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 17:22 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:25 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 17:30 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 17:48 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 17:46 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 17:52 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 17:55 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 18:04 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 18:07 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 19:04 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 19:49 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 19:53 (UTC) - Expand

(no subject)

[identity profile] motto.livejournal.com - 2009-10-05 19:57 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:56 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 18:01 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 18:16 (UTC) - Expand

(no subject)

[identity profile] alexott.livejournal.com - 2009-10-05 18:26 (UTC) - Expand

(no subject)

[identity profile] dim-hj - 2009-10-14 12:54 (UTC) - Expand

[identity profile] danfe.livejournal.com 2009-10-05 03:58 pm (UTC)(link)
Я бы вот Паскаль как раз запретил в качестве учебного языка. Базовую алгоритмистику на нем, может, и проще преподавать, чем на [put your favorite tongue here], но так как язык не "чист", у людей формируется какое-то совершенно превратное представление о том, "как же оно на самом деле работает". Люди пишут "var" в function declaration и не понимают, что за этим стоит указатель; пишут func_name := value вместо return (value) и не понимают, как именно происходит возвращение; не могут впоследствии объяснить calling conventions и почему работает printf() в Си с переменным числом аргументов; не понимают сути lvalue vs. rvalue и почему нельзя написать foo := bar := baz и т.п.

Думаю, что преподавать программирование имеет смысл либо на Lisp/Scheme, как это делали в митовском SICP до недавнего времени, либо на традиционных фон-неймановских языках, но тогда уж без этой пошлой паскалевской маскировки указателей (к слову, они там все равно есть в явном виде), которая только запутывает и сбивает с толку, и прочей шелухи, толстым слоем оседающей на мозгах юных падаванов от программирования.

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 16:05 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:02 (UTC) - Expand

(no subject)

[identity profile] dil.livejournal.com - 2009-10-05 17:05 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:21 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 17:26 (UTC) - Expand

(no subject)

[identity profile] danfe.livejournal.com - 2009-10-05 17:40 (UTC) - Expand

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 16:09 (UTC) - Expand

[identity profile] bormotov.livejournal.com 2009-10-05 04:04 pm (UTC)(link)
дак смотря чему учиться.

Я тут как-то sicp решил зачитать, очень пожалел, что нас в ВУЗе не со схемы/лиспа начинали учить :)))

[identity profile] dil.livejournal.com 2009-10-05 04:09 pm (UTC)(link)
да, у меня тоже моск закостенел на процедурных языках. ООП в него потом вписалось, функциональное программирование в лице лиспа - очень с трудом, а пролог совсем не пошел :(

(no subject)

[identity profile] bormotov.livejournal.com - 2009-10-05 16:11 (UTC) - Expand

[identity profile] blacklion.livejournal.com 2009-10-05 03:28 pm (UTC)(link)
Это в точности про меня. 1-в-1.

[identity profile] blacklion.livejournal.com 2009-10-05 03:29 pm (UTC)(link)
Т.е. учислся я на паскаел, потом был C, только потом — perl, но моя первая работа была на perl, да и вторая тоже.

[identity profile] dil.livejournal.com 2009-10-05 03:31 pm (UTC)(link)
и это правильный подход, товарищи!

[identity profile] blacklion.livejournal.com 2009-10-05 03:36 pm (UTC)(link)
Я вообще благодаря отцу прошёл интересный путь. Первая PC'шка появилась у них на работе в.. Эээ.. 89-ом что ли, я в третьем (!) классе был. А ещё там был класс ямах. И вот прежде чем давать мне играть на ямахах он заставлял писать на паскале на PC'шке (это был TurboPascal, как бы не 3.0, хотя вроде уже четвёрка, надо даты сравнивать)…

А потом PC'шка дома — классе в 5-ом уже. А играть мне надоело быстро (навсегда).

Это лишило меня Спектрума, но заодно и Бейсика. А ассемблер был сразу x86 (кстати, раньше C, я писал на асме резиденты и вставки в паскалевский код). К C я пришёл только в 10-ом классе, выбирая спецкурс. А перл — где-то на первом курсе, не помню зачем. А на втором курсе нашёл первую работу (ещё удалённую) и вылетел из института первый раз заодно :)

[identity profile] dil.livejournal.com 2009-10-05 03:37 pm (UTC)(link)
третий паскакаль был еще для CP/M на Z80 :)

(no subject)

[identity profile] blacklion.livejournal.com - 2009-10-05 15:40 (UTC) - Expand

[identity profile] blacklion.livejournal.com 2009-10-05 03:37 pm (UTC)(link)
Да, четвёрка вышла 87. это была она.

[identity profile] tullamoredew.livejournal.com 2009-10-05 03:34 pm (UTC)(link)
моя первая работа была на Magic5-BTrieve, вторая на Prolog, а остальные на баше

сейчас вот на пайтон приходится переползать, баш не со всем справляется

[identity profile] mcjabberwock.livejournal.com 2009-10-05 03:53 pm (UTC)(link)
...я сам учусь в универе на курсе "Computer Science" там у нас и прогромирование, и базы данных...

Прэлэстно, прэлэстно!!! :)

Есличё, я начинал с Fortran IV, 77-й, C, C++, ну и разные понемногу — не в счёт.

[identity profile] dil.livejournal.com 2009-10-05 04:01 pm (UTC)(link)
ну у нас тоже было и программирование, и базы данных, и алгоритмы, и теория алгоритмов и формальных языков, и ещё много чего. в результате, когда я вижу базы данных, спроектированные нынешними выпускниками этих computer science за 21 день, мне становится дурно. а когда я вижу их программы, я начинаю ругаться матом вслух

[identity profile] mcjabberwock.livejournal.com 2009-10-05 08:22 pm (UTC)(link)
Да уж.

[identity profile] gabaidulin.livejournal.com 2009-10-08 01:40 pm (UTC)(link)
PHP вовсе не провоцирует на написание плохого кода. Или по крайней мере не более чем с или с++.

PHP/Perl и прочие скриптовые языки плохи прежде всего тем, что в них нельзя например "чисто" реализовать структуры данных или алгоритмы, хотя безусловно возможно.

То есть курс "структуры данных и алгоритмы", если мы говорим о традиционной императивной школе, наверное лучше оставить на совести с/c++. Здесь сразу же убиваем двух зайцев(позволяем на практике управлять памятью в ручную).

ООП наверное лучше всего изучать опять же на java. Здесь есть еще один плюс - язык крайней популярен в данный момент времени и компилятор не привязан к платформе(чего не скажешь о c#, например).

И обязательно нужно ввести курс по ФЯ, например по Haskell. Чтобы человек мог понимать, что есть иные парадигмы, которые также имеют право на существование.

[identity profile] dil.livejournal.com 2009-10-08 01:49 pm (UTC)(link)
если сравнивать с c/c++, то PHP (и перл) хуже отсутствием необходимости объявления переменных и отсутствием строгой типизации. и вытекающими из этого ошибками.
но у перла применение use strict и -w позволяет большинство глупых ошибок отловить,а у php такого режима нет, насколько я знаю.
поэтому я продолжаю считать, что PHP именно провоцирует на написание "грязного" кода.

[identity profile] gabaidulin.livejournal.com 2009-10-08 02:02 pm (UTC)(link)
Это можно отнести в той или иной степени к любому языку с динамической типизацией. Сама по себе эта типизация на том уровне котором находится студент ему повредить никак не может.

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

Грубо говоря, что он должен понять, что поиск значения в списке делается за O(n), а вставка за O(1).

[identity profile] dil.livejournal.com 2009-10-08 01:55 pm (UTC)(link)
а про функциональные языки - это я полностью поддерживаю. и про другие концепции не забыть, типа логического программирования в прологе или хотя бы правил вывода в make.

Flapjax

[identity profile] dim-hj (from livejournal.com) 2009-10-14 01:02 pm (UTC)(link)
Функционально–реактивное программирование можно изучать на примере Flapjax. Как побочный, будет освоена прикольная Javascript библиотека.