komar
03.03.2013 16:54 thinkpad
Ruby-way:
1) Попробовать получить значение. Если это невозможно, то не вызывать исключение, а просто вернуть значение nil.
2) Провести это значение через 200 переменных и 300 функций так, чтобы никому не было понятно, откуда именно оно было получено.
3) Вызвать у этого nil’а какой-нибудь метод, например #key?
4) Повалиться со стектрейсом, в котором, благодаря пунктам 1 и 2, не будет никакой информации о том, что же, блять, пошло не так.
Recommended by:
@Crazy_Owl
это быдлокодер-вей
Отличная иллюстрация к необходимости использования вменяемой типизации.
Лях, миленький, ну что за хуйню ты несешь?
Это Ruby-way. А все потому, что вот такие же пидорасы пишут. Ниче не надо, а! Код, блять, писать надо! А они берут на работу макбуки, текстмейты, и все там проебывают. У них исключения, видите ли, выглядят НЕКРАСИВО, и буков лишних много. А вот nil — это красота, да.
Почему хуйню?
В нормальных языках когда у значения есть тип, в него нельзя передать какое-либо левое говно.
пидорасы пишут хуйню, а при чем тут руби?
Чувак, съеби и не позорься.
Это не ответ.
а еще можно себя яйца дверью прищемить
При том, что это популярная практика среди рубистов. Поэтому я и назвал это ruby-way’ем.
Зачем в языке дополнительные двери, используемые исключительно для яйцезащемления?
нет.
двери в языке используются для перемещения между помещениями
Ответь таки, зачем.
Кто мешает тебе вызвать какой-нибудь maybe_find и точно так же протащить значение через 500 функций, а потом повалиться где-нибудь в противоположном конце программы на паттерн-матчинге?
что зачем? иметь возможность возвратить любой тип?
Тот факт, что maybe_find вернёт не Int, а Maybe Int, что не даст его использовать как конкретное значение. А в Int никаких волшебных нилов не запихнуть.
я тебе undefined верну
А там можно возвратить любой тип? Тогда вопросов больше не имею.
И сразу же повалишься с эксепшоном.
это ты повалишься когда его евальнешь
Даст. Есть такая штука, называется «полиморфизм». (Если б) среди хаскеллистов (были) такие долбоебы, они бы тоже все в maybe клали вместо вызова исключений.
да ты гонишь, не бывает в объектно-ориентированных языках такого
Такое хоть в функциональном языке возможно. Нужно только иметь ораву долбоебов с собственным представлением о красоте кода.
Какого хера я тогда вижу это только в ruby?
“You have too many hipsters, you won’t scale like that. Hire some fat guys who know C++.” © http://medriscoll.com/post/9117396231/th...
потому что ты работаешь руби-кодером, долбоеб
Не вижу связи.
ты близко общаешься с ынтерпрайзным закрытым кодом который пишут жопой
Блять, я общаюсь с РЕЛЬСАМИ. С РЕЛЬСАМИ, блять. С РЕЛЬСАМИ. Это в РЕЛЬСАХ такая хуйня, понимаешь?
ну и где в рельсах такая хуйня?
Олсо, это ты общаешься с ынтерпрайзным закрытым кодом, который пишу жопой. Мой текущий пишут хорошо.
ппц ты тупой, тебе ещё /4 всё пояснили по хардкору
Принципиально? Я могу потом откатиться и показать.
+1. работаем в разных конторах
куда откатиться? ты в рельсах код покажи
Ну повалюсь, и что? Дебаггер же мне скажет, откуда оно прилетело.
тогда надо расширить nil метод_миссингом (это же вроде стандартный способ написания "программ" на руби) и скрыть косяк еще на 200-300 шагов стектрейса
Что такое "вместо"? Если бы ты не был таким долбоёбам, ты бы понял, что возвращать исключения в чистый код, мягко говоря, неудобно и нехаскельвейно.
ну и руби тоже скажет
Но это не поможет получить хоть сколько-нибудь рабочий код.
а разве у рубистов обычно есть такая цель?
Лолшто? Научи.
Вообще-то да.
Ну и вот: в руби мы можем возвращать всякое говно, а в нормальном языке нам тайпчекер яйца оторвёт, если у нас не эксепшон.
ломающие новости
Сто раз возвращал исключения в чистый код. Что с ними не так?
То, что их нужно обрабатывать в IO.
вроде же всегда считалось, что рубисты пишут код исключительно в качестве фонового занятия между питьём латте-макиато и ебашеньем луков
> тайпчекер яйца оторвёт
Не оторвет, см. #tshtif/22
Друг, хипстерство хипстерством, но серьезные хипстоватые рубисты бабло поднимают именно за счет того, что быстро выводят тучу проектов в эксплуатацию.
Ну дык руби и не нормальный язык, а динамическое говно, где вместо тайпчекера обогреватель цпу.
Обработай.
Лях, если тебе нужно обосраться еще сотней комментарев на счет того, что руби говно без тайпчекера, то сделай это где-нибудь в сторонке.
Для этого придётся большое чистое вычисление разбивать на куски, вводить порядок исполнения и тем самым резать крылья оптимизатору.
Я ссал тебе в ротешник, лолка.
Че-то нихуя я не понимаю в ваших х-лях, так что сливаюсь тут.
В наших хаскелях есть гейская проблема: для стандартных чистых функций с возможностью вернуть говно есть эксепшон-вариант, а есть "safe"-вариант с мейби, обычно из левого модуля.
которые потом приходится переписывать на нормальных ЯП в адских условиях. нормальный подход, руби-вей
Обычно серверов добавляют. Всякие твиттеры — скорее исключение.
А что не так-то? Руби и есть язык для быстрого прототипирования ведь. Задачу нужно решить вчера? Ляпаем говнокод на руби за три дня и удовлетворяем заказчика, параллельно переписывая это по-человечески на каком-нибудь цэ по вкусу.
То, что пишут на руби, на цэ ты не перепишешь никогда.
просто дело в том, что "попутно переписываем код" делает другие люди, за другие деньги всё того же заказчика, хехе
Ты читаешь жопой. Под цэ подразумевались высокопроизводительные и/или контролирующие качество кода инструменты, разработка до уровня минимально работоспособного варианта на которых отнимает времени больше, чем на руби. Хоть та же жавка или хасцелл.
Why not? Если быстрых говнолепателей мало, то вполне логично, что они будут получать много бабла.
Жавка, хасцелл и оцамл не справляются.
С чем?
С веб-разработкой.
В чём это выражается?
В отсутствии инструментов для этой самой разработки. И не надо меня, как дедфуд, тыкать в дерьм^Wхаппстак.
Отсутствуют — напиши. И хеппстек есть, да. Я не вебмартышка, правда, поэтому не могу оценить его годноту; будет мило, если ты потыкаешь его и напишешь об этом пост на хабре^W^W.
Собственно, твоё кукареканье и так укладывается в мою фразу про скорость разработки. Какие-нибудь ещё замечения будут?
Я натыкан уже по самые небалуй. Собираюсь, вон, написать таки адекватную замену. Когда-нибудь. :'(
Да, все дело в скорости разработки. Нет, переписывать на ассемблере за 500 лет то, что мы наухярили за два часа на рельсах — мы не будем.
Ну вот и жрите говно и удивляйтесь вездесущему говнокоду быстрых, олимпиадных программистов, будучи неспособными это дело остановить из-за отсутствия карающего тайпчекера.
Твое мнение было очень важно для меня, спасибо.
Это не только руби-вей. Отвечаю.
Видел попытку в моём проекте протащить
try
...
except Exception:
error = "Could not do <foo>"
Видимо, по той же причине "некрасиво если эксепшны падают".
PUTS "ERROR IN HUIPIZDA.RB" + __LINE__.TO_S
Типизация не гарантирует ни корректность работы программы, ни корректность значений. Ну и что, собственно, мешает говнарям-программистам где не надо использовать Maybe Int и протаскивать Nothing. Короче ты тупой.
Я и не утверждал, что она что-то гарантирует. Я лишь указал, что она бьёт по рукам за очевидные ошибки. За дизайн по рукам должен бить тимлид, и в случае х-ля он увидит Maybe Int сразу в интерфейсе, в отличие от глубоко запрятанной свистопляски с нилами.
Короче ты тупой ©
мне это напомнило типа, который после слов "sql-инъекция" начал утверждать, что "в строгих статически-типизированных ЯП такого не было бы". Пиздец. Автор описал проблему, ты пришёл кукарекать о типизации, которая эту проблему не решает.
Точно так же в данном случае должен прийти тимлид и ударить по рукам, чтоб вместо возвращения nil делать что-то иное. При чем здесь типизация?
Решает.
/79.
Посмотри ещё тег *noruby.
так как решает? Так, что тимлид увидит интерфейс, а не имплементацию?
Да. Потому что сферический тимлид управляет интерфейсами между подсистемами, а не подтирает быдлокод, читая построчно высеры подчинённых.
Опять же, повторюсь, что это не панацея, а лишь способ отловить больше типичных проблем с кодом и при этом дать оптимизатору больше свободы и информации.
да бред какой. Если человек занимается подобной хуйнёй, то ему нужно делать код ревью (не обязательно тим лид), и ревьювить весь код, а не только интерфейсы.
По поводу пользы типизации, конечно, я согласен. Но никаких гарантий она не даёт (плюс не уверен, что данные рубисты её бы осилили впринципе, потому оценивать её практическую пользу смысла ноль).
> (плюс не уверен, что данные рубисты её бы осилили впринципе, потому оценивать её практическую пользу смысла ноль).
Это же охуенно: кто не осилил — не попадает на работу, в результате имеем в среднем по больнице более вменяемых сотрудников за те же (или меньшие, учитывая количество хаскель-фанбоев) деньги. Вон, @dmz в жуйке вообще студентов заставляет практически бесплатно хаскели ему в конторе писать.
tl;dr: в етом йтт треде комар (в который раз подряд уже) несет сказочную хуйню про программирование (и не только)
пиздец, как люди в офисе быстро деградируют.
полгода ещё ведь не прошло.
а он еще и женился
А он ещё и женился?!
ну, неформально
ну, тут я некомпетентен. но прозреваю хуиту, да.
> Автор описал проблему, ты пришёл кукарекать о типизации, которая эту проблему не решает.
exactly
Теперь носится со своей типизацией, как сраный фанбой.
> Это же охуенно: кто не осилил — не попадает на работу, в результате имеем в среднем по больнице более вменяемых сотрудников за те же (или меньшие, учитывая количество хаскель-фанбоев) деньги. Вон, @dmz в жуйке вообще студентов заставляет практически бесплатно хаскели ему в конторе писать.
Да, фанбойство — единственная надежда при найме хаскелистов, чувствую. Но я бы не стал сегодня на него рассчитывать, уже успокоились все, вроде бы.
Мы ждем твоих комментариев по поводу того, как СТАТИЧЕСКАЯ ТИПИЗАЦИЯ помешает долбоебам не использовать исключения там, где они нужны, по причине того, что НЕКРАСИВО.
Лях — он весь такой. Вот здесь он, например, предлагает маркдаун для замены HTML’а в вебе:
http://juick.com/Zert/1378992
http://juick.com/Darion/489587
Потому что маркдаун — это же круто и молодежно, а HTML — говно-говно, ага.
ну, конкретно с утверждением:
> Окей, как костыль для разметки текста — аналогично отвратительное неюзабельное дерьмище, используемое исключительно роботоподобным веббыдлом. Везде, где мне нужно пописать (x)html, я стараюсь откосить и поюзать markdown/doxygen/et cetera.
я полностью согласен и полностью поддерживаю. В смысле, я тоже пишу контент в маркдаунах-реструктуредтекстах. А остальной html я не видел чтоб он хотел заменить. Ну там на бинарный формат какой-то, да.
не пишу ничего конкретного, ибо впадлу коментить КАЖДЫЙ ТВОЙ ЁБАНЫЙ ПОСТ.
Напиши статью.
про тебя штоле статью? или про всё на свете?
Про то, где именно и как помогает статическая типизация.
как я уже не раз говорил, ты поехавший на статической типизации.
она здесь ни при чём же.
И я говорю, что не при чем.
ну заебись теперь.
И это было единственное, о чем я здесь говорил. Что тебе еще не понравилось?
>Короче, если грань условна, то я тогда вообще не понимаю сути срача "диманика вс статика".
начать можено с етого.
Здесь такого не видно.
http://dump.bitcheese.net/texts/ozyruta/...
В стектрейсе куча говна из потрохов рельсов.
Где я накосячил в приложении — ума не приложу.
Следующий час уйдет на отлов вот этой вот хуйни.
А причина оказалась совершенно неожиданной: я написал Srring вместо String.
В Руби что, отсутствует линтер, который скажет тебе "символ Srring андефайнед" еще до выполнения?
и сопли подотрет
нету и не может быть потому что этот символ может определиться в любой момент
Прямо как в языках для академиков.
не говоря уже о const_missing который его определит при обращении
Ух блядь.