1. Ruby / Говнокод #17631

    −98

    1. 1
    [1,2,3,11,12,13,14,15,17].to_a

    Чтобы наверняка..

    Запостил: rezerbit, 12 Февраля 2015

    Комментарии (97) RSS

    • > to_a
      Дурацкое имя какое-то. Что такое a?
      Ответить
      • obj.to_a # array representation
        obj.to_s # string representation
        obj.to_i # integer representation
        obj.to_f <...
        Ответить
        • to_o
          Ответить
          • to_o --> to_to --> to_tu --> tutu --> plie --> releve --> plie --> releve --> batman --> batman --> batman --> spiderman!
            Ответить
            • Охуительно бессмысленная логическая цепочка! Так же в южном парке пародировали https://www.youtube.com/watch?v=zgvYdfQxxZc
              Видимо мало тут любителей абсурдистского юмора.
              Ответить
              • Хм, может Вы поделитесь радостью и расскажете по-простому для русских ванек, что же сказал за чашкою английского чаю сей благородный человек?
                P.S. А, уже рассказали.
                Ответить
                • В ихней культуре вообще любят бессмысленно упоминать бетмана.
                  http://gaspull.geeksaresexytech.netdna-cdn.com/wp-content/uploads/2012/07/batman-name.jpg
                  Ответить
                • tutu - пачка (балетная).
                  plie-releve - типичное упражнение для разминки в балете (сесть-встать).
                  batman - опять же, из балета, шпагат в прыжке.

                  Обычно вся связка выглядит типа: же-те (поднять ногу параллельно другой ноге, согнув в колене, с оттянутым носком), пике (выпрямить ногу и поставить на носок перед собой, повернув на 90 градусов), же-те, пике, же-те, фуете (поворот на 180), батман, батман, батман - и на поклон (но обычно после нескольких фуете получается спайдермен а не батман).

                  https://www.youtube.com/watch?v=J8nIV9Wiruo
                  Ответить
                  • http://fr.wikipedia.org/wikiBatman,_la_relève
                    Ответить
                    • Batman, une ville de Turquie.
                      Batman, une province de Turquie.
                      Batman, une rivière de Turquie.

                      Вот где его любят!
                      Ответить
                  • Я боюсь, что я не хочу знать ответ, но всё же спрошу: откуда у программиста такие познания? :D
                    Ответить
                    • А по твоему мнению программист должен сидеть и кодить круглыми сутками прерываясь на сон, пельмени и (дотку, вовку, кээску, нужное подчеркнуть)?
                      Ответить
                    • > откуда у программиста такие познания
                      Программист - не человек. Он не должен знать ничего кроме программирования.
                      Ответить
                      • Но даже в программировании он ограничен - VB нинужен, perl нинужен, жаба нинужна, решетка нинужна, крестынинужны, ооп нинужно, фунциАнальщина нинужна... Сидишь и кодишь на сишке (зато как царь!)
                        Ответить
                        • Но даже в программировании он ограничен - VB нинужен, perl нинужен, жаба нинужна, решетка нинужна, крестынинужны, сишка нинужна, асм нинужен, ЭКМАСкрипт нинужен, ооп нинужно, фунциАнальщина нинужна, процедурщина нинужна, 1с нинужно... Сидишь и конфигурируешь себе гипертекстовый шаблонизатор (зато кормят!)
                          Ответить
                        • на wct
                          Ответить
                          • Не, на Wct очень высокий порог вхождения - нужно быть питухом
                            Ответить
                      • Именно!
                        Ответить
                    • Когда-то в молодости занимался бальными танцами. До классики бальникам, конечно, далеко, но обычно хотябы основы нужно знать.
                      Ответить
      • to_a - это метод приведения к массиву.

        В руби - все объекты. И массивы в том числе.
        Ответить
      • Это руби, детка

        На самом деле очень удобно

        Еще есть is_a?

        и what_a?
        Ответить
        • > На самом деле очень удобно
          Чем это to_a удобнее наглядного to_array?
          Ответить
          • или хотя бы [1,2,3,11,12,13,14,15,17] даже пых новый так умеет.
            Ответить
          • Это рубивэй

            "Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист. Однако в контексте Ruby это означает наименьшее удивление не при знакомстве с языком, а при его основательном изучении. "

            Сначала бесит а потом познаешь дзен
            Ответить
            • Тогда это и крестовэй. "Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист. Однако в контексте C++ это означает наименьшее удивление не при знакомстве с языком, а при основательном изучении спецификации и запоминании всех UB".
              Ответить
              • Не, как раз ub противоречит рубивэй

                Все видели чудесный тест на знание тонкостей работы с JS (== - оператор сатаны)? Рубивэй как раз говорит, что такого быть не должно

                Ну и что бы познать рубивэй нужно познать рубивэй (тут должна быть ссылка на лурк/рекурсия)
                Ответить
                • Просто "при его основательном изучении" любой язык начинает соответствовать этому принципу, даже ЭКМАСкрпт, на то оно и основательное. Получается фраза вообще ни о чем.
                  Ответить
                • Этот ролик можно смотреть бесконечное кол-во раз
                  https://www.destroyallsoftware.com/talks/wat
                  Ответить
                  • АААААА!!!!!11111 Блеадь! И тут Вэтмэн.
                    Вэтмэн! Вэтмэн! Не трожь меня! Я люблю javascript. Возьми свой камень, оставь мне хлеб. Вэтмэн, не трожь меня. Не трожь меня. Вэтмэн! Вэтмэн! Вэтмэн! Не трожь меня! Вэтмэн! Вэтмэн!
                    Ответить
            • Сначала бесит а потом сваливаешь на питон.
              Ответить
              • Пей кофе, программируй джава

                Души змея, программируй на питоне
                Ответить
                • Бухай колись программируй на крестах
                  Ответить
                  • Сиди в крестах - программируй на крестах
                    Ответить
                    • Рубишь бабло - программируй в Руби ))))
                      Любишь Пхп люби и доширак
                      Ответить
                      • >Рубишь бабло - программируй в Руби ))))
                        У вас аж 4 ошибка в слове Java.
                        Ответить
            • > наименьшей неожиданности

              ага.

              `do |var|` - очень очевидный синтакс.

              или хез какая ошибка когда напишешь `if condition do ... end`.

              > Это рубивэй

              синтакс отстой. единственное что спасает что язык сам по себе примитивный. ... хотя не уверен что это спасает, потому что каких то сильных конкретный преимуществ у него нету. между перлом и питоном, для руби места остается мало.
              Ответить
              • >> `do |var|` - очень очевидный синтакс.

                я тоже предпочитаю \x->...

                Зажрались вы, господа, языками-похожими-на-С

                >> между перлом и питоном, для руби места остается мало.

                Синдром утенка?

                Язык как язык. Че бугуртить то?
                Ответить
                • > > каких то сильных конкретный преимуществ у него нету

                  я как бы больше про это. за три дня делал крэш курс руби/рэйк. просто нафиг поразило что у языка вообще нет никакой специальной заточки. нет вообще ничего что язык умеет делать оссобенно хорошо. it is so middle of the road, it could be arrested for jaywalking.
                  Ответить
                • > Зажрались вы, господа, языками-похожими-на-С

                  это не про похожесть на С.

                  это про что язык в синтаксисе должен стараться хотя бы как то приближатся к естественным языкам.

                  `foreach (item in list)` на порядок читабельнее чем `list.each { |item| ... }`. потому что первое почти англиский. второе - даже не йода.
                  Ответить
                  • По мне второе так на порядок логичнее - передается функция для обработки
                    Ответить
                    • да. естественные языки не совсем логичны.

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

                      логичней != лучше для человечского понимания.
                      Ответить
                      • А так ну блеать для человеческого понимания лучше? Программирование ну - это не интуитивно кароч понятная вещь, ему учиться сука ну нужно. И если сука для блеать ептить кого то рекурсия, лямбда исчисление и ООП лежат ептить все нах пределов типа понимания сука - GTFO.
                        Ответить
                        • блятификатор работает всё лучше
                          Ответить
                        • "А так ну блеать для человеческого понимания лучше?"

                          Да.

                          "Программирование ну - это не интуитивно кароч понятная вещь, ему учиться сука ну нужно."

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

                          Как раз то же ООП родилось более или менее как концепция приблизающая языки программирования к естественным языкам:

                          subject->action( object )

                          Например: "Я иду гулять в парк" -> "me->take_walk( park )"
                          Ответить
                        • А вот Матц в Beautiful Code считал иначе.
                          Ответить
                          • Бывает, что поделаешь. За всеми японцами не уследишь
                            Ответить
                          • Да у япошек и в родном языке порядок слов несколько иной.
                            Ответить
                  • > list.each { |item| ... }
                    А нам норм.
                    Ответить
                  • Если list - это глагол, то вполне похоже на естесственный язык. Кроме того, японский же, а у них порядок другой: SOV, например "я коробка открывать" (я открыл коробку).
                    Ответить
                    • Нет, list здесь iterable.
                      boxes.each { |box| box.open }
                      А еще можно так: boxes.map(:&open)
                      Ответить
                    • > "я коробка открывать" (я открыл коробку).
                      Я коробку открыл. Там столько добра лежит, столько детских фотографий моих...
                      Я открыл твою коробку, ни черта там нет.

                      Жс просто создан для русского человека:
                      var f = function(x){ return x*2; };
                      var map = [].map.call.bind([].map);
                      array.map(f);
                      map(array, f)
                      Ответить
                      • + русский человек ленится что то искать, а интерпретатор ЖС всегда под рукой
                        Ответить
                    • Самый естественный язык - J - и глаголы и существительные и наречия в нем имеются
                      Ответить
                      • А почему зелёным? У нас половина России на таком языке говорит по выходным.
                        Ещё и правительство ввело в январе декаду языка J.
                        Ответить
                • > Зажрались вы, господа, языками-похожими-на-С
                  Но ведь C - удачный язык с удачными скобочками. Красиво, просто и понятно. И если менять внешний вид, то только в хаскельных целях, когда внешний вид действительно мешает.

                  А создавать ещё один язык только ради того, чтобы он не был не похож на C... Ну не знаю.
                  Это не просто C. Это не просто восьмеричная система. Это не просто. А создам-ка я официальный сайт своего творения!
                  Ответить
                  • >> Но ведь C - удачный язык с удачными скобочками.

                    дык и не спорю. Дело в том, что руби строит из себя полуфункциональный язык. Я, например, пришел к Истинной Лямбде через него, и синтаксис блока мне кажется весьма удачным.
                    Ответить
                    • А я после жс пошёл к Истинной Лямбде (правда, не пришёл ещё)
                      Только в руби мне не нравится (и я об этом говорил), что функции хрен передашь.
                      В жс: g = function(){}; f(g,3) - всё просто и понятно, передал функцию как обычное значение. А в руби какие-то проки, амперсанды и прочее.
                      Ответить
                      • каждому свое.

                        Я могу ошибаться, но ты же хаскель знаешь -практикуешь. Значит пришел. Любой кто могет в чистой функциональной парадигме - пришел
                        Ответить
                        • Да я только чуть-чуть осилил, только чуть-чуть потрогал...
                          Вон, Роман про монадные трансформеры и морфизмы разные говорит, а мне до этого далеко, да и лень.
                          Как-то раз Борманд показывал что-то с монадами и guard. Вроде бы, если раскрутить do-нотацию, всё выходит логично и красиво, но нет той очевидности и простоты, нет той уверенности, с которой я пишу for(var i=0; i<N; ++i), чтобы пройтись по [0; N).
                          Ответить
                          • Для этого просто практика нужна. Я в том семе, например, 2 лабы по теории информации сдал на хаскеле.
                            Ответить
                            • Кроме практики, надо знать много.
                              Хотя, когда я читаю ГК... битва с Царём: питухи, канонiчное среднее целое без потери точности, структуры данных и алгоритмы; ассемблер, хаки, ънтерпрайз, гейдев, опять алгоритмы... понимаю, что и в императивном программировании тоже ничего не понимаю.
                              Но вот, что интересно, непонимание функциональщины печалит больше, чем непонимание императивщины. Видимо, там я на несколько лет раньше начал и уже привык.
                              Ответить
                              • "Но вот, что интересно, непонимание функциональщины печалит больше, чем непонимание императивщины."

                                Функциональные языки страдают комплексом превосходства.

                                Что ведет к тому что простого функционального языка/среды разработки, нацеленого на простых смертных, просто не существует.

                                ЗЫ эрланг наверное единственный функ язык который я знаю который хотя бы пытается.
                                Ответить
                                • >Функциональные языки страдают комплексом превосходства.

                                  Я всегда это чувствовал, но мог выразить в такой кратко-афористичной форме.
                                  Ответить
                                  • Злой Вы...
                                    Ответить
                                  • > страдают комплексом превосходства

                                    Такое ещё Дядюшка Боб говорил, когда размышлял, почему смоллтолк толком не взлетел. Типа смоллтолкеры черезчур возгордились и считали, что они слишком крутые и особенные для того, чтобы решать обычные задачи.
                                    Это была речь - предостережение рубистам.
                                    Ответить
                              • ну я почитывал мат теорию. теорию категорий, комбинаторную логику, все такое. Суть ясна. А подводных камней везде навалом. Я порой смотрю на обсуждения наших топовых коллег и чувствую себя барашком. А потом смотрю на кодеров с факультета и мое ЧСВ приходит в норму
                                Ответить
                              • > непонимание функциональщины печалит больше, чем непонимание императивщины

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

                                Язык может сделать некоторые задачи проще, но всё равно слишком многое зависит от опыта, знания предметной области и алгоритмов.
                                В ФП много красивых идей, которые используются на практике, и его изучение определённо сделает твой код на других языках лучше (особенно в плане проектирования интерфейса). Но действительно полезные фп-идеи не особо сложны, и уж монадные трансформеры - точно не самая полезная вещь на свете.
                                Ответить
                                • >>что фп может сделать программирование существенно проще. Что любая задача станет по плечу, стоит лишь взять чудоязык. Печаль в том, что это не так.
                                  Опять реинкарнация какой-то безумной веры в silver bullet.
                                  Ответить
                                • silver bullet
                                  Oval shaped, female sex toy with a radio control variable speed setting.
                                  My girlfriend used her "silver bullet last night. Hence I was cockblocked by a toy.

                                  silver bullet
                                  Having a large silver thermometer stuck in your rectum after being a heat casualty...dont at USMC boot camp
                                  Ralston passed out and took the silver bullet

                                  silverbullet
                                  The act of being a complete homosexual but to scared the world will reject him for being an ass pirate
                                  Bro-stop being a silverbullet, no one cares your gay, just come out the closet
                                  Ответить
                                • > в глубине души есть надежда, что фп может сделать программирование существенно проще
                                  Скорее, надежда на то, что думать будет проще. Знание ещё одной парадигмы, новые абстракции, новый опыт, возможность мыслить шире (выход в N+1 измерение).

                                  >> Видимо, там я на несколько лет раньше начал и уже привык.
                                  Всё же, я пока останусь наедине с этой своей формулировкой. Знакомство с ФП произошло у меня "на днях", ФП у меня ещё "в фокусе", я словно стою и смотрю на свою границу с неведомым.

                                  Знаете, вот бывает прочитаешь там статью про какую-то новую фигню и думаешь "О, какая интересная фигня, уже пятая за месяц, жаль, что мне лень её изучать", а потом проходит время, фигня кажется какой-то ненужной, а там и новая фигня появляется, но она уже действительно нужна для работы.
                                  Ответить
    • Кстати, зачем это вообще надо было?
      Ответить
      • Человек перестраховался =) Вдруг [1, 2, 3] не массив =)
        Ответить
        • А если массив, то возвращается копия или он сам?
          Ответить
          • >> a = [1,2,3]
            => [1, 2, 3]
            >> a.id
            => 70245797730820
            >> a.to_a.id
            => 70245797730820

            Возвращает тот же самый объект
            Ответить
        • Так то понятно, что перестраховка.
          Вопрос в том, что это за magic numbers и зачем они были нужны.
          Ответить
    • http://php.net/manual/en/function.is-a.php
      Ответить
    • [1,2,3,11,12,13,14,15,17].map{|x|[x]}.reduce(:+)
      Ответить
      • to_a забыл.
        Ответить
        • Array("[1,2,3,11,12,13,14,15,17]".scan(/\d+/).to_a.map(&:to_i).to_a) # tochno array
          Ответить
          • я всегда подозревал, что борманд - черный маг, но грязные манипуляции - это слишком! Shame on you!
            Ответить
    • Короче ИТТ руби, как и предполагалось, соснул у всех языков сразу.
      Почему to_a, вместо to_arr, почему не сделать еще короче t_a?
      А может сразу ta? Удобно же!
      Ответить
      • А еще лучше – просто а. Будет прямо как минимизированный ЭКМАСкрипт.
        Ответить
        • Блин! Действительно же, дешевле и проще заюзать один толковый минификатор, чем 10 руби-погромистов.
          Ответить
          • За доширак толковый минификатор не добудешь, а обезьянок - запросто.
            Ответить
      • кстати, выглядит как детская попытка сократить имя (типа "и так понятно") при_исп__подч
        Ответить
        • Мне всегда казалось, что Матц любит какие-то полуэзотерические сокращения. Это мне сразу бросилось в глаза, когда я читал про то, что звездочка может сделать с массивом (я вообще не знаю, как это по-русски будет, но что-то вроде раскрытия или разворачивания, хотя все равно какая-то хуйня), и про &, являющийся сахарком для вызова :to_proc. Не знаю, почему, но это все мне сразу показалось логичным и понятным. Это, наверное, странно, но все мы ебанутые по-своему.
          Ответить
          • >это все мне сразу показалось логичным и понятным
            +1.
            to_array - нормально, но очень длинно.
            to_arr - убого, произносить неудобно, да и вообще сокращение до arr смотрится по-нубски.
            to_a - стильно, модно, молодежно
            t_a, ta, a - ничего не понятно.
            Ответить
      • 2a
        Ответить
        • В фоксе вроде бы касты писались как d2c(), c2d() и т.п.
          Ответить

    Добавить комментарий