November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Monday, October 5th, 2009 04:00 pm

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

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

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

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

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

Monday, October 5th, 2009 03:18 pm (UTC)
напомнило:
http://imgs.xkcd.com/comics/11th_grade.png
Monday, October 5th, 2009 03:19 pm (UTC)
перл тоже не лучшее средство для обучения программированию, но картинка по сути правильная
Monday, October 5th, 2009 03:20 pm (UTC)
если чисто эстетически то наверное надо начинать с пайтона. ну а если учить всерьез то конечно с С
Monday, October 5th, 2009 03:23 pm (UTC)
учиться хорошо на паскале. или на модуле. или вот на аде. но у них практического применения нет.
так что да, на питоне, наверное.. только после него остальные языки будут казаться очень ограниченными :)
Monday, October 5th, 2009 03:27 pm (UTC)
потому я и говорю - С как язык для общего понимания процессов, чтоб народ врубался что массивы и переменные просто так не назначаются, чтоб поняли кто такие поинтеры, malloc и прочие страшилки, а потом толкнуть в сторону джавы и пайтона

я сам учился на паскале и (наверное извращения ради на прологе), и после этого в С например с налета не врубаюсь, да и ООП тоже не так легко дается
Monday, October 5th, 2009 03:28 pm (UTC)
а я начинал с фортрана и PL/1 :)

(no subject)

[identity profile] tullamoredew.livejournal.com - 2009-10-05 03:32 pm (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

[identity profile] tullamoredew.livejournal.com - 2009-10-05 04:14 pm (UTC) - Expand

(no subject)

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

(no subject)

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

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

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

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

[identity profile] dim-hj - 2009-10-14 12:54 pm (UTC) - Expand
Monday, October 5th, 2009 03:58 pm (UTC)
Я бы вот Паскаль как раз запретил в качестве учебного языка. Базовую алгоритмистику на нем, может, и проще преподавать, чем на [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 04:05 pm (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

Я тут как-то sicp решил зачитать, очень пожалел, что нас в ВУЗе не со схемы/лиспа начинали учить :)))
Monday, October 5th, 2009 04:09 pm (UTC)
да, у меня тоже моск закостенел на процедурных языках. ООП в него потом вписалось, функциональное программирование в лице лиспа - очень с трудом, а пролог совсем не пошел :(

(no subject)

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

(no subject)

[identity profile] tullamoredew.livejournal.com - 2009-10-05 05:01 pm (UTC) - Expand
Monday, October 5th, 2009 03:28 pm (UTC)
Это в точности про меня. 1-в-1.
Monday, October 5th, 2009 03:29 pm (UTC)
Т.е. учислся я на паскаел, потом был C, только потом — perl, но моя первая работа была на perl, да и вторая тоже.
Monday, October 5th, 2009 03:31 pm (UTC)
и это правильный подход, товарищи!
Monday, October 5th, 2009 03:36 pm (UTC)
Я вообще благодаря отцу прошёл интересный путь. Первая PC'шка появилась у них на работе в.. Эээ.. 89-ом что ли, я в третьем (!) классе был. А ещё там был класс ямах. И вот прежде чем давать мне играть на ямахах он заставлял писать на паскале на PC'шке (это был TurboPascal, как бы не 3.0, хотя вроде уже четвёрка, надо даты сравнивать)…

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

Это лишило меня Спектрума, но заодно и Бейсика. А ассемблер был сразу x86 (кстати, раньше C, я писал на асме резиденты и вставки в паскалевский код). К C я пришёл только в 10-ом классе, выбирая спецкурс. А перл — где-то на первом курсе, не помню зачем. А на втором курсе нашёл первую работу (ещё удалённую) и вылетел из института первый раз заодно :)
Monday, October 5th, 2009 03:37 pm (UTC)
третий паскакаль был еще для CP/M на Z80 :)

(no subject)

[identity profile] blacklion.livejournal.com - 2009-10-05 03:40 pm (UTC) - Expand
Monday, October 5th, 2009 03:37 pm (UTC)
Да, четвёрка вышла 87. это была она.
Monday, October 5th, 2009 03:34 pm (UTC)
моя первая работа была на Magic5-BTrieve, вторая на Prolog, а остальные на баше

сейчас вот на пайтон приходится переползать, баш не со всем справляется
Monday, October 5th, 2009 03:53 pm (UTC)
...я сам учусь в универе на курсе "Computer Science" там у нас и прогромирование, и базы данных...

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

Есличё, я начинал с Fortran IV, 77-й, C, C++, ну и разные понемногу — не в счёт.
Monday, October 5th, 2009 04:01 pm (UTC)
ну у нас тоже было и программирование, и базы данных, и алгоритмы, и теория алгоритмов и формальных языков, и ещё много чего. в результате, когда я вижу базы данных, спроектированные нынешними выпускниками этих computer science за 21 день, мне становится дурно. а когда я вижу их программы, я начинаю ругаться матом вслух
Monday, October 5th, 2009 08:22 pm (UTC)
Да уж.
Thursday, October 8th, 2009 01:40 pm (UTC)
PHP вовсе не провоцирует на написание плохого кода. Или по крайней мере не более чем с или с++.

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

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

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

И обязательно нужно ввести курс по ФЯ, например по Haskell. Чтобы человек мог понимать, что есть иные парадигмы, которые также имеют право на существование.
Thursday, October 8th, 2009 01:49 pm (UTC)
если сравнивать с c/c++, то PHP (и перл) хуже отсутствием необходимости объявления переменных и отсутствием строгой типизации. и вытекающими из этого ошибками.
но у перла применение use strict и -w позволяет большинство глупых ошибок отловить,а у php такого режима нет, насколько я знаю.
поэтому я продолжаю считать, что PHP именно провоцирует на написание "грязного" кода.
Thursday, October 8th, 2009 02:02 pm (UTC)
Это можно отнести в той или иной степени к любому языку с динамической типизацией. Сама по себе эта типизация на том уровне котором находится студент ему повредить никак не может.

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

Грубо говоря, что он должен понять, что поиск значения в списке делается за O(n), а вставка за O(1).
Thursday, October 8th, 2009 01:55 pm (UTC)
а про функциональные языки - это я полностью поддерживаю. и про другие концепции не забыть, типа логического программирования в прологе или хотя бы правил вывода в make.
[identity profile] dim-hj (from livejournal.com)
Wednesday, October 14th, 2009 01:02 pm (UTC)
Функционально–реактивное программирование можно изучать на примере Flapjax. Как побочный, будет освоена прикольная Javascript библиотека.