komar 03.03.2013 16:54 thinkpad

Ruby-way:
1) Попробовать получить значение. Если это невозможно, то не вызывать исключение, а просто вернуть значение nil.
2) Провести это значение через 200 переменных и 300 функций так, чтобы никому не было понятно, откуда именно оно было получено.
3) Вызвать у этого nil’а какой-нибудь метод, например #key?
4) Повалиться со стектрейсом, в котором, благодаря пунктам 1 и 2, не будет никакой информации о том, что же, блять, пошло не так.

Recommended by: @Crazy_Owl
1. Voker57 03.03.2013 16:56 nbl-desktop

это быдлокодер-вей

2. L29Ah 03.03.2013 16:58 tkabber-l300

Отличная иллюстрация к необходимости использования вменяемой типизации.

3. komarL29Ah /2 03.03.2013 16:59 thinkpad

Лях, миленький, ну что за хуйню ты несешь?

4. komarVoker57 /1 03.03.2013 17:00 thinkpad

Это Ruby-way. А все потому, что вот такие же пидорасы пишут. Ниче не надо, а! Код, блять, писать надо! А они берут на работу макбуки, текстмейты, и все там проебывают. У них исключения, видите ли, выглядят НЕКРАСИВО, и буков лишних много. А вот nil — это красота, да.

5. L29Ahkomar /3 03.03.2013 17:00 tkabber-l300

Почему хуйню?
В нормальных языках когда у значения есть тип, в него нельзя передать какое-либо левое говно.

6. Voker57komar /4 03.03.2013 17:01 nbl-desktop

пидорасы пишут хуйню, а при чем тут руби?

7. komarL29Ah /5 03.03.2013 17:01 thinkpad

Чувак, съеби и не позорься.

8. L29Ahkomar /7 03.03.2013 17:01 tkabber-l300

Это не ответ.

9. Voker57L29Ah /5 03.03.2013 17:01 nbl-desktop

а еще можно себя яйца дверью прищемить

10. komarVoker57 /6 03.03.2013 17:01 thinkpad

При том, что это популярная практика среди рубистов. Поэтому я и назвал это ruby-way’ем.

11. L29AhVoker57 /9 03.03.2013 17:01 tkabber-l300

Зачем в языке дополнительные двери, используемые исключительно для яйцезащемления?

12. Voker57komar /10 03.03.2013 17:01 nbl-desktop

нет.

13. Voker57L29Ah /11 03.03.2013 17:02 nbl-desktop

двери в языке используются для перемещения между помещениями

14. L29AhVoker57 /13 03.03.2013 17:02 tkabber-l300

Ответь таки, зачем.

15. komarL29Ah /8 03.03.2013 17:02 thinkpad

Кто мешает тебе вызвать какой-нибудь maybe_find и точно так же протащить значение через 500 функций, а потом повалиться где-нибудь в противоположном конце программы на паттерн-матчинге?

16. Voker57L29Ah /14 03.03.2013 17:03 nbl-desktop

что зачем? иметь возможность возвратить любой тип?

17. L29Ahkomar /15 03.03.2013 17:03 tkabber-l300

Тот факт, что maybe_find вернёт не Int, а Maybe Int, что не даст его использовать как конкретное значение. А в Int никаких волшебных нилов не запихнуть.

18. Voker57L29Ah /17 03.03.2013 17:04 nbl-desktop

я тебе undefined верну

19. L29AhVoker57 /16 03.03.2013 17:04 tkabber-l300

А там можно возвратить любой тип? Тогда вопросов больше не имею.

20. L29AhVoker57 /18 03.03.2013 17:04 tkabber-l300

И сразу же повалишься с эксепшоном.

21. Voker57L29Ah /20 03.03.2013 17:04 nbl-desktop

это ты повалишься когда его евальнешь

22. komarL29Ah /17 03.03.2013 17:04 thinkpad

Даст. Есть такая штука, называется «полиморфизм». (Если б) среди хаскеллистов (были) такие долбоебы, они бы тоже все в maybe клали вместо вызова исключений.

23. hirthwork 03.03.2013 17:06 mcabber

да ты гонишь, не бывает в объектно-ориентированных языках такого

24. komarhirthwork /23 03.03.2013 17:08 thinkpad

Такое хоть в функциональном языке возможно. Нужно только иметь ораву долбоебов с собственным представлением о красоте кода.

25. komarVoker57 /12 03.03.2013 17:09 thinkpad

Какого хера я тогда вижу это только в ruby?

26. hirthworkkomar /4 03.03.2013 17:09 mcabber

“You have too many hipsters, you won’t scale like that. Hire some fat guys who know C++.” © http://medriscoll.com/post/9117396231/th...

27. Voker57komar /25 03.03.2013 17:09 nbl-desktop

потому что ты работаешь руби-кодером, долбоеб

28. komarVoker57 /27 03.03.2013 17:10 thinkpad

Не вижу связи.

29. Voker57komar /28 03.03.2013 17:10 nbl-desktop

ты близко общаешься с ынтерпрайзным закрытым кодом который пишут жопой

30. komarVoker57 /29 03.03.2013 17:11 thinkpad

Блять, я общаюсь с РЕЛЬСАМИ. С РЕЛЬСАМИ, блять. С РЕЛЬСАМИ. Это в РЕЛЬСАХ такая хуйня, понимаешь?

31. Voker57komar /30 03.03.2013 17:11 nbl-desktop

ну и где в рельсах такая хуйня?

32. komarVoker57 /29 03.03.2013 17:12 thinkpad

Олсо, это ты общаешься с ынтерпрайзным закрытым кодом, который пишу жопой. Мой текущий пишут хорошо.

33. hirthworkVoker57 /31 03.03.2013 17:12 mcabber

ппц ты тупой, тебе ещё /4 всё пояснили по хардкору

34. komarVoker57 /31 03.03.2013 17:12 thinkpad

Принципиально? Я могу потом откатиться и показать.

35. hirthworkkomar /32 03.03.2013 17:12 mcabber

+1. работаем в разных конторах

36. Voker57komar /34 03.03.2013 17:12 nbl-desktop

куда откатиться? ты в рельсах код покажи

37. L29AhVoker57 /21 03.03.2013 17:14 tkabber-l300

Ну повалюсь, и что? Дебаггер же мне скажет, откуда оно прилетело.

38. zw0rk 03.03.2013 17:15 home19DD664B

тогда надо расширить nil метод_миссингом (это же вроде стандартный способ написания "программ" на руби) и скрыть косяк еще на 200-300 шагов стектрейса

39. L29Ahkomar /22 03.03.2013 17:15 tkabber-l300

Что такое "вместо"? Если бы ты не был таким долбоёбам, ты бы понял, что возвращать исключения в чистый код, мягко говоря, неудобно и нехаскельвейно.

40. Voker57L29Ah /37 03.03.2013 17:15 nbl-desktop

ну и руби тоже скажет

41. komarzw0rk /38 03.03.2013 17:16 thinkpad

Но это не поможет получить хоть сколько-нибудь рабочий код.

42. zw0rkkomar /41 03.03.2013 17:16 home19DD664B

а разве у рубистов обычно есть такая цель?

43. komarVoker57 /40 03.03.2013 17:17 thinkpad

Лолшто? Научи.

44. komarzw0rk /42 03.03.2013 17:17 thinkpad

Вообще-то да.

45. L29AhVoker57 /40 03.03.2013 17:17 tkabber-l300

Ну и вот: в руби мы можем возвращать всякое говно, а в нормальном языке нам тайпчекер яйца оторвёт, если у нас не эксепшон.

46. zw0rkkomar /44 03.03.2013 17:17 home19DD664B

ломающие новости

47. komarL29Ah /39 03.03.2013 17:17 thinkpad

Сто раз возвращал исключения в чистый код. Что с ними не так?

48. L29Ahkomar /47 03.03.2013 17:17 tkabber-l300

То, что их нужно обрабатывать в IO.

49. zw0rkkomar /44 03.03.2013 17:18 home19DD664B

вроде же всегда считалось, что рубисты пишут код исключительно в качестве фонового занятия между питьём латте-макиато и ебашеньем луков

50. komarL29Ah /45 03.03.2013 17:18 thinkpad

> тайпчекер яйца оторвёт
Не оторвет, см. #tshtif/22

51. komarzw0rk /49 03.03.2013 17:19 thinkpad

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

52. L29Ahkomar /50 03.03.2013 17:19 tkabber-l300

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

53. komarL29Ah /48 03.03.2013 17:20 thinkpad

Обработай.

54. komarL29Ah /52 03.03.2013 17:21 thinkpad

Лях, если тебе нужно обосраться еще сотней комментарев на счет того, что руби говно без тайпчекера, то сделай это где-нибудь в сторонке.

55. L29Ahkomar /53 03.03.2013 17:21 tkabber-l300

Для этого придётся большое чистое вычисление разбивать на куски, вводить порядок исполнения и тем самым резать крылья оптимизатору.

56. L29Ahkomar /54 03.03.2013 17:21 tkabber-l300

Я ссал тебе в ротешник, лолка.

57. komarL29Ah /55 03.03.2013 17:21 thinkpad

Че-то нихуя я не понимаю в ваших х-лях, так что сливаюсь тут.

58. L29Ahkomar /57 03.03.2013 17:23 tkabber-l300

В наших хаскелях есть гейская проблема: для стандартных чистых функций с возможностью вернуть говно есть эксепшон-вариант, а есть "safe"-вариант с мейби, обычно из левого модуля.

59. zw0rkkomar /51 03.03.2013 17:28 homeA4EF319E

которые потом приходится переписывать на нормальных ЯП в адских условиях. нормальный подход, руби-вей

60. komarzw0rk /59 03.03.2013 17:29 thinkpad

Обычно серверов добавляют. Всякие твиттеры — скорее исключение.

61. L29Ahzw0rk /59 03.03.2013 17:29 tkabber-l300

А что не так-то? Руби и есть язык для быстрого прототипирования ведь. Задачу нужно решить вчера? Ляпаем говнокод на руби за три дня и удовлетворяем заказчика, параллельно переписывая это по-человечески на каком-нибудь цэ по вкусу.

62. komarL29Ah /61 03.03.2013 17:30 thinkpad

То, что пишут на руби, на цэ ты не перепишешь никогда.

63. zw0rkL29Ah /61 03.03.2013 17:30 homeA4EF319E

просто дело в том, что "попутно переписываем код" делает другие люди, за другие деньги всё того же заказчика, хехе

64. L29Ahkomar /62 03.03.2013 17:32 tkabber-l300

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

65. L29Ahzw0rk /63 03.03.2013 17:33 tkabber-l300

Why not? Если быстрых говнолепателей мало, то вполне логично, что они будут получать много бабла.

66. komarL29Ah /64 03.03.2013 17:44 thinkpad

Жавка, хасцелл и оцамл не справляются.

67. L29Ahkomar /66 03.03.2013 17:44 tkabber-l300

С чем?

68. komarL29Ah /67 03.03.2013 17:45 thinkpad

С веб-разработкой.

69. L29Ahkomar /68 03.03.2013 17:45 tkabber-l300

В чём это выражается?

70. komarL29Ah /69 03.03.2013 17:48 thinkpad

В отсутствии инструментов для этой самой разработки. И не надо меня, как дедфуд, тыкать в дерьм^Wхаппстак.

71. L29Ahkomar /70 03.03.2013 17:50 tkabber-l300

Отсутствуют — напиши. И хеппстек есть, да. Я не вебмартышка, правда, поэтому не могу оценить его годноту; будет мило, если ты потыкаешь его и напишешь об этом пост на хабре^W^W.
Собственно, твоё кукареканье и так укладывается в мою фразу про скорость разработки. Какие-нибудь ещё замечения будут?

72. komarL29Ah /71 03.03.2013 17:52 thinkpad

Я натыкан уже по самые небалуй. Собираюсь, вон, написать таки адекватную замену. Когда-нибудь. :'(
Да, все дело в скорости разработки. Нет, переписывать на ассемблере за 500 лет то, что мы наухярили за два часа на рельсах — мы не будем.

73. L29Ahkomar /72 03.03.2013 17:54 tkabber-l300

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

74. komarL29Ah /73 03.03.2013 17:54 thinkpad

Твое мнение было очень важно для меня, спасибо.

75. kb 03.03.2013 21:08

Это не только руби-вей. Отвечаю.

76. kbkb /75 03.03.2013 21:09

Видел попытку в моём проекте протащить

try
...
except Exception:
error = "Could not do <foo>"

Видимо, по той же причине "некрасиво если эксепшны падают".

77. Voker57kb /76 03.03.2013 21:12 nbl-desktop

PUTS "ERROR IN HUIPIZDA.RB" + __LINE__.TO_S

78. kbL29Ah /2 03.03.2013 21:19

Типизация не гарантирует ни корректность работы программы, ни корректность значений. Ну и что, собственно, мешает говнарям-программистам где не надо использовать Maybe Int и протаскивать Nothing. Короче ты тупой.

79. L29Ahkb /78 03.03.2013 21:21 tkabber-l300

Я и не утверждал, что она что-то гарантирует. Я лишь указал, что она бьёт по рукам за очевидные ошибки. За дизайн по рукам должен бить тимлид, и в случае х-ля он увидит Maybe Int сразу в интерфейсе, в отличие от глубоко запрятанной свистопляски с нилами.
Короче ты тупой ©

80. kbL29Ah /79 03.03.2013 21:24 3b662f5e

мне это напомнило типа, который после слов "sql-инъекция" начал утверждать, что "в строгих статически-типизированных ЯП такого не было бы". Пиздец. Автор описал проблему, ты пришёл кукарекать о типизации, которая эту проблему не решает.

Точно так же в данном случае должен прийти тимлид и ударить по рукам, чтоб вместо возвращения nil делать что-то иное. При чем здесь типизация?

81. L29Ahkb /80 03.03.2013 21:27 tkabber-l300

Решает.
/79.
Посмотри ещё тег *noruby.

82. kbL29Ah /81 03.03.2013 21:29 3b662f5e

так как решает? Так, что тимлид увидит интерфейс, а не имплементацию?

83. L29Ahkb /82 03.03.2013 21:32 tkabber-l300

Да. Потому что сферический тимлид управляет интерфейсами между подсистемами, а не подтирает быдлокод, читая построчно высеры подчинённых.
Опять же, повторюсь, что это не панацея, а лишь способ отловить больше типичных проблем с кодом и при этом дать оптимизатору больше свободы и информации.

84. kbL29Ah /83 03.03.2013 21:35 3b662f5e

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

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

85. L29Ahkb /84 03.03.2013 21:38 tkabber-l300

> (плюс не уверен, что данные рубисты её бы осилили впринципе, потому оценивать её практическую пользу смысла ноль).
Это же охуенно: кто не осилил — не попадает на работу, в результате имеем в среднем по больнице более вменяемых сотрудников за те же (или меньшие, учитывая количество хаскель-фанбоев) деньги. Вон, @dmz в жуйке вообще студентов заставляет практически бесплатно хаскели ему в конторе писать.

86. rtsome 03.03.2013 22:10

tl;dr: в етом йтт треде комар (в который раз подряд уже) несет сказочную хуйню про программирование (и не только)
пиздец, как люди в офисе быстро деградируют.
полгода ещё ведь не прошло.

87. Voker57rtsome /86 03.03.2013 22:11 nbl-desktop

а он еще и женился

88. L29AhVoker57 /87 03.03.2013 22:11 tkabber-l300

А он ещё и женился?!

89. Voker57L29Ah /88 03.03.2013 22:12 nbl-desktop

ну, неформально

90. rtsomeVoker57 /87 03.03.2013 22:12 home

ну, тут я некомпетентен. но прозреваю хуиту, да.

91. komarkb /80 04.03.2013 05:40 thinkpad

> Автор описал проблему, ты пришёл кукарекать о типизации, которая эту проблему не решает.
exactly
Теперь носится со своей типизацией, как сраный фанбой.

92. kbL29Ah /85 04.03.2013 05:42

> Это же охуенно: кто не осилил — не попадает на работу, в результате имеем в среднем по больнице более вменяемых сотрудников за те же (или меньшие, учитывая количество хаскель-фанбоев) деньги. Вон, @dmz в жуйке вообще студентов заставляет практически бесплатно хаскели ему в конторе писать.

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

93. komarrtsome /86 04.03.2013 05:42 thinkpad

Мы ждем твоих комментариев по поводу того, как СТАТИЧЕСКАЯ ТИПИЗАЦИЯ помешает долбоебам не использовать исключения там, где они нужны, по причине того, что НЕКРАСИВО.

94. komarkb /80 04.03.2013 09:54 thinkpad

Лях — он весь такой. Вот здесь он, например, предлагает маркдаун для замены HTML’а в вебе:
http://juick.com/Zert/1378992
http://juick.com/Darion/489587
Потому что маркдаун — это же круто и молодежно, а HTML — говно-говно, ага.

95. kbkomar /94 04.03.2013 11:52 3b662f5e

ну, конкретно с утверждением:
> Окей, как костыль для разметки текста — аналогично отвратительное неюзабельное дерьмище, используемое исключительно роботоподобным веббыдлом. Везде, где мне нужно пописать (x)html, я стараюсь откосить и поюзать markdown/doxygen/et cetera.
я полностью согласен и полностью поддерживаю. В смысле, я тоже пишу контент в маркдаунах-реструктуредтекстах. А остальной html я не видел чтоб он хотел заменить. Ну там на бинарный формат какой-то, да.

96. rtsomekomar /93 04.03.2013 17:53 home

не пишу ничего конкретного, ибо впадлу коментить КАЖДЫЙ ТВОЙ ЁБАНЫЙ ПОСТ.

97. komarrtsome /96 04.03.2013 17:58 thinkpad

Напиши статью.

98. rtsomekomar /97 04.03.2013 18:02 home

про тебя штоле статью? или про всё на свете?

99. komarrtsome /98 04.03.2013 18:03 thinkpad

Про то, где именно и как помогает статическая типизация.

100. rtsomekomar /99 04.03.2013 18:10 home

как я уже не раз говорил, ты поехавший на статической типизации.
она здесь ни при чём же.

101. komarrtsome /100 04.03.2013 18:11 thinkpad

И я говорю, что не при чем.

102. rtsomekomar /101 04.03.2013 18:11 home

ну заебись теперь.

103. komarrtsome /102 04.03.2013 18:13 thinkpad

И это было единственное, о чем я здесь говорил. Что тебе еще не понравилось?

104. rtsomekomar /103 04.03.2013 18:17 home

>Короче, если грань условна, то я тогда вообще не понимаю сути срача "диманика вс статика".
начать можено с етого.

105. kbrtsome /104 05.03.2013 09:21

Здесь такого не видно.

106. komar 18.03.2013 09:59 thinkpad

http://dump.bitcheese.net/texts/ozyruta/...
В стектрейсе куча говна из потрохов рельсов.
Где я накосячил в приложении — ума не приложу.
Следующий час уйдет на отлов вот этой вот хуйни.

107. komarkomar /106 18.03.2013 14:25 thinkpad

А причина оказалась совершенно неожиданной: я написал Srring вместо String.

108. kbkomar /107 18.03.2013 16:24

В Руби что, отсутствует линтер, который скажет тебе "символ Srring андефайнед" еще до выполнения?

109. Voker57kb /108 18.03.2013 16:24 nbl-desktop

и сопли подотрет

110. Voker57kb /108 18.03.2013 16:25 nbl-desktop

нету и не может быть потому что этот символ может определиться в любой момент

111. L29AhVoker57 /109 18.03.2013 16:26 tkabber-itk

Прямо как в языках для академиков.

112. Voker57Voker57 /110 18.03.2013 16:26 nbl-desktop

не говоря уже о const_missing который его определит при обращении

113. L29AhVoker57 /112 18.03.2013 16:26 tkabber-itk

Ух блядь.

Do you really want to delete ?