metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2015-03-11 11:16 am

Говнокод

http://jakobz.livejournal.com/249050.html

Все бы это хорошо, пока речь не идет о многопоточном коде или коде, из которого надо выжать предельную производительность. Вот тут то говнокод работать и перестает, его проще выкинуть и сделать заново, чем исправлять.

А то напихают sleep(1000) в качестве средства синхронизации, а потом запускается это все на каком-нибудь убер-быстром или убер-медленном железе и оно все дохнет в необъяснимых мучениях.

Впрочем, по ссылке "говнокод" - это код без ООП и паттернов, а они откровенно нахер не нужны в большинстве случаев.

[identity profile] raydac.livejournal.com 2015-03-11 08:24 am (UTC)(link)
>>"говнокод" - это код без ООП и паттернов

такой код в баллистических ракетах советских ващето

[identity profile] metaclass.livejournal.com 2015-03-11 08:26 am (UTC)(link)
А кулачковых токораспределителей и электрохимических интеграторов там не осталось?:)

[identity profile] raydac.livejournal.com 2015-03-11 08:28 am (UTC)(link)
не знаю, но если так глянуть, то в говнокод попадут и системы "аполлона" что на луну сажали и система управления воздушным движением в штатах.. как все блин жили до ооп и паттернов? человечество было на волоске ))

(no subject)

[personal profile] alll - 2015-03-11 08:32 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 08:35 (UTC) - Expand

(no subject)

[personal profile] alll - 2015-03-11 09:03 (UTC) - Expand

(no subject)

[identity profile] ext_1684112 - 2015-03-11 12:06 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 12:11 (UTC) - Expand

(no subject)

[identity profile] ext_1684112 - 2015-03-11 12:15 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 12:24 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2015-03-11 13:35 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 13:41 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2015-03-11 13:46 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 13:55 (UTC) - Expand

(no subject)

[identity profile] falcrum.livejournal.com - 2015-03-11 18:24 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 18:45 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2015-03-11 18:44 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 19:06 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2015-03-11 19:13 (UTC) - Expand

(no subject)

[identity profile] raydac.livejournal.com - 2015-03-11 19:22 (UTC) - Expand

(no subject)

[identity profile] rdia.livejournal.com - 2015-03-11 20:02 (UTC) - Expand

(no subject)

[identity profile] bambr77.livejournal.com - 2015-03-11 16:59 (UTC) - Expand

[identity profile] vit-r.livejournal.com 2015-03-11 08:32 am (UTC)(link)
Там механические механические гироскопы.

[personal profile] fortness90 (from livejournal.com) 2015-03-11 10:43 am (UTC)(link)
Ребе не псите. ООП в ЧМ не нужно. А паттернов там и так полно . Взгляните на код MITgcm например

[identity profile] dimaby1.livejournal.com 2015-03-11 08:56 am (UTC)(link)
Я не видел код баллистических ракет, но имею на этот счет 2 мысли:
1) на военщину никогда денег не жалели, так что на гражданке такой метод может быть просто не оправдан.
2) ООП и в особенности паттерны появились не на пустом месте. То что хипстеры читают в учебнике банды четырех более старшее поколение усвоило на своих ошибках. Соответственно и книжка банды четырех для них не такое уж и откровение. Так что вполне вероятно что и свои паттерны были в балистических ракетах и свое наколенное ООП

[identity profile] binf.livejournal.com 2015-03-11 09:10 am (UTC)(link)
нахуй ооп. Нет ни одного нормального аргумента в пользу ооп за исключением "нам так проще смоделировать объекты реального мира" или "нам нужно делать ИНКАПСУЛЯЦИЮ а в с++ нет замыканий", сплошная ёбаная гуманитарщина. рфму

(no subject)

[identity profile] dimaby1.livejournal.com - 2015-03-11 09:38 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 09:54 (UTC) - Expand

(no subject)

[identity profile] tonsky.livejournal.com - 2015-03-11 12:28 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 12:54 (UTC) - Expand

(no subject)

[identity profile] gineer.livejournal.com - 2015-03-11 14:25 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 17:08 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 17:17 (UTC) - Expand

(no subject)

[identity profile] gineer.livejournal.com - 2015-03-11 14:22 (UTC) - Expand

(no subject)

[identity profile] crastinus.livejournal.com - 2015-03-23 04:58 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-23 06:01 (UTC) - Expand

[identity profile] eternal-leave.livejournal.com 2015-03-11 09:17 am (UTC)(link)
я видел куски кода, которые отвечали за навигацию в Р36. Вернее сказать, перфокарты видел :)

(no subject)

[identity profile] dimaby1.livejournal.com - 2015-03-11 09:37 (UTC) - Expand

(no subject)

[identity profile] fhjs9.livejournal.com - 2015-03-11 11:17 (UTC) - Expand

[identity profile] lekard.livejournal.com 2015-03-11 09:04 am (UTC)(link)
http://mi3ch.livejournal.com/2773220.html

[identity profile] vit-r.livejournal.com 2015-03-11 08:31 am (UTC)(link)
Говнокод - это код одноразовый. Он хорош, пока с ним не надо что-то делать или его для чего-то не используют. Сбацал и забыл.

[identity profile] raydac.livejournal.com 2015-03-11 08:45 am (UTC)(link)
стоимость изменений вобщем показатель

[identity profile] plumqqz.livejournal.com 2015-03-11 09:00 am (UTC)(link)
его проще выкинуть и сделать заново, чем исправлять.
Говнокод - это не код, имманентно говенный, но результат алхимического брака платоновских идей разработчика и заказчика. Ну то есть второй что-то там нарассказывал первому, первый преломил в своем кристалле сознания это понимание как-то по-своему, накалякал, показал второму, второй посмотрел, ужаснусся, внес уточнения, описал их как мог первому, который снова понял в силу своего разумения, что-то написал, показал - и так асимптотически они и приближались.
Так что выкинуть и сделать заново может и можно, кто бы спорил - только вот а)без говнокода это все равно не получится б)при изменении требований см. абзац выше.

PS ООП и паттерны действительно обычно нахер не впились.
PPS Вырожденные случаи с неправильным использованием апи и т.п. рассматривать не будем.

[identity profile] binf.livejournal.com 2015-03-11 09:35 am (UTC)(link)
Вот правильно. Говнокод - это прототип в некоторой степени приближенный к желаемому результату. Работающий синхронно прототип можно рефакторить под многопоточность. В слуае сабжа - ачинхронные монады, Async.Sleep вместо sleep, ReadFileAsync вместо ReadFile. Чтобы рефакторить неработающий (не)говнокод , надо сначала сделать чтобы он работал

[identity profile] metaclass.livejournal.com 2015-03-11 09:38 am (UTC)(link)
Async.Sleep это какое-то феерическое безумие :)

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 09:43 (UTC) - Expand

[identity profile] binf.livejournal.com 2015-03-11 09:24 am (UTC)(link)
Изначальная идея ООП, как его понимал Алан Кей - динамическая маршрутизация вызовов на основе окружения средствами рантайма. Она не плоха. Проблема в дуракахб задроченных на классы, которые интерпретируют ООП в духе java/c++

[identity profile] fhjs9.livejournal.com 2015-03-11 11:16 am (UTC)(link)
сразу видно что ты задроченный чувак.

[identity profile] binf.livejournal.com 2015-03-11 12:07 pm (UTC)(link)
ебанись мудило. Я не задорчен, это просто ты тупой, не понимаешь простейших терминов

(no subject)

[identity profile] metaclass.livejournal.com - 2015-03-11 13:33 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 13:43 (UTC) - Expand

(no subject)

[identity profile] 6w5c.livejournal.com - 2015-03-12 10:50 (UTC) - Expand

(no subject)

[identity profile] 6w5c.livejournal.com - 2015-03-12 10:47 (UTC) - Expand

(no subject)

[identity profile] 6w5c.livejournal.com - 2015-03-12 10:49 (UTC) - Expand

[identity profile] vinslivins.livejournal.com 2015-03-11 12:11 pm (UTC)(link)
просто бля уже надоело объяснять жавистам и шарперам что их обделили,
и теперь нам остаётся только вяло отмахиваться и относится со снисходительностью к братьям нашим меньшим

которые в упор не подозревают, какие вредители делали их платформу

[identity profile] cross-join.livejournal.com 2015-03-11 12:19 pm (UTC)(link)
Изначальная идея ООП - симуляция процессов средствами процедурного и модульного программирования тяжела.
http://arbinada.com/main/node/1376

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 13:11 (UTC) - Expand

(no subject)

[identity profile] cross-join.livejournal.com - 2015-03-11 13:15 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 13:45 (UTC) - Expand

(no subject)

[identity profile] cross-join.livejournal.com - 2015-03-11 13:55 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 16:45 (UTC) - Expand

(no subject)

[identity profile] cross-join.livejournal.com - 2015-03-11 16:56 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 18:26 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-11 20:01 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-12 06:46 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-12 13:11 (UTC) - Expand

[identity profile] maxdz.livejournal.com 2015-03-11 03:11 pm (UTC)(link)
>это код без ООП и паттернов, а они откровенно нахер не нужны в большинстве случаев

ООП и паттерны - это разные вещи. Можно пользоваться многими паттернами, не пользуясь при этом языком с поддержкой ООП.

ООП сам по себе тоже имеет смысл, т.к. разрабатывать крупные проекты с применением декомпозиции на классы проще, чем с декомпоцизией на функции. Потому, даже в языках без классов (типа, С) большие проекты разрабатываются объектно-ориентированно (структуры, указатели на функции в качестве членов-функций, итп).

Но всякая дополнительная ООП мишура, типа виртуальных функций/полиморфизма, перегруженных функций/операторов - это зло, т.к. сильно снижает читаемость/понимание кода, повышает связанность кода, снижает переносимость.
Edited 2015-03-11 15:17 (UTC)

[identity profile] binf.livejournal.com 2015-03-11 07:12 pm (UTC)(link)
бгггг)))))))
особенно мне панравилос про виртуальные функции
где вы такой фееричной хуеты насосались? у 15-и летнего манагера на шышке?
впрочем пейшыте исчо, каращо получаица

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-11 19:20 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 19:32 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-11 19:37 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-11 19:43 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-11 19:56 (UTC) - Expand

(no subject)

[identity profile] binf.livejournal.com - 2015-03-12 06:56 (UTC) - Expand

[identity profile] vinslivins.livejournal.com 2015-03-11 07:26 pm (UTC)(link)
с декомпозицией на функции имеет смысл сначала ознакомиться.

"процедурное" программирование даже отдалённо не лежит в этой области, ага.

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-11 19:32 (UTC) - Expand

[identity profile] m-krokodilov.livejournal.com 2015-03-12 08:28 am (UTC)(link)
> код без ООП и паттернов, а они откровенно нахер не нужны в большинстве случаев

После таких заявлений в профессиональной (не история, не культура, не языкознание, блин), области совет и вам, и всей вашей тусовочке только один.

ВОН ИЗ ПРОФЕССИИ, КРИВОРУКИЙ ЛАМЕР!

[identity profile] metaclass.livejournal.com 2015-03-12 10:13 am (UTC)(link)
О, адепты ООП что ле?
Такие заявления неплохо подкрепить бы доказательствами для разнообразия.

[identity profile] metaclass.livejournal.com 2015-03-12 10:30 am (UTC)(link)
Так, небольшое уточнение - вы хотите обсудить этот тезис ("ооп не всегда нужно") всерьез, или просто желаете поругаться?
Потому что я могу расписать подробнее, что имелось в виду, но если оно все равно сведется к хохлосрачу, смысла нет :)

(no subject)

[identity profile] metaclass.livejournal.com - 2015-03-12 13:07 (UTC) - Expand

(no subject)

[identity profile] artureg.livejournal.com - 2015-03-12 13:11 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2015-03-12 13:30 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-12 13:40 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2015-03-12 15:22 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-12 13:13 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-12 16:03 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-12 13:23 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-12 16:04 (UTC) - Expand

(no subject)

[identity profile] maxdz.livejournal.com - 2015-03-13 13:06 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2015-03-12 16:16 (UTC) - Expand