1. Куча / Говнокод #15863

    +118

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    put 'Сейчас я загадаю число от 1 до 100, и это будет..'
    a = rnd(100)
    put a.to_s + ' - загаданное число! В конце мы получим 4!'
    b = a*2
    put b.to_s + ' - это ' + a.to_s + ', умноженное на 2!'
    c = b+8
    put c.to_s + ' - это ' + b.to_s + ', к которому мы прибавили 8!'
    e = c/2 
    put e.to_s + ' - это ' + c.to_s + ', которое мы разделили на 2!'
    d = e-a
    put d.to_s + ' - это результат. То есть мы отняли от ' + e.to_s + ' - ' + a.to_s + '. Видите, это же ' + d.to_s + '!'

    С названием языка всё-таки решился, называл его "Lapis". (На Ruby синтаксис немного похож, но очень много будет отличий)!
    Кто-нибудь хочет принять участие в разработке интерпретатора? Пишу на javascript-е, будет транслируемый язык.
    Кто за, ставьте плюс посту и пишите в комментарии.

    Запостил: Mobac, 29 Апреля 2014

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

    • Результат выполнения (пример):

      Сейчас я загадаю число от 1 до 100, и это будет..
      40 - загаданное число! В конце мы получим 4!
      80 - это 40, умноженное на 2!
      88 - это 80, к которому мы прибавили 8!
      44 - это 88, которое мы разделили на 2!
      4 - это результат. То есть мы отняли от 44 - 40. Видите, это же 4!
      Ответить
    • инты - объекты... Полная жопа, до такого даже в пистоне не додумались.
      Ответить
      • Разве? Инты много где объекты.
        Ответить
      • Питон не такой уж и плохой язык, чтоб его пистоном называть.
        Ответить
      • https://docs.python.org/2/c-api/int.html

        >>> int(20).bit_length()
        5
        Ответить
      • В руби 5 это объект.
        Ответить
    • Назовите 3 основных преимущества вашего языка над другими уже существующими.
      Ответить
    • Ну вот зачем называть методы сокращениями, неужели чтобы съекономить пару символов, никогда этого не понимал.
      rnd(100)
      что лучше смотрится чем
      random(100)

      a.to_s
      что лучше смотрится чем
      a.to_string(100)

      Такими темпами обычно доходит до абривиатур, известных только автору
      Ответить
      • >a.to_s
        >что лучше смотрится чем
        >a.to_string(100)
        atoi
        atof
        Ответить
        • У сишки ограничения были на линкер (понимавший до 6 первых символов, потому и memcpy), которые сейчас смотрятся просто смешными. Но и в obj-c скатываться тоже всё-же не стоит...
          Ответить
          • Но малолетние кулхацкеры думают, что это на самом деле очень илитный стиль - делать мудацкие названия типов и функций.
            Ответить
            • винтажненько
              Бесят методы у iostream-ов и streambuf, всё время приходится в справку лазить чтобы вспомнить, как они называются. У плюсов же не было ограничений на длину имён... ЗА ЧТО, УРОДЫ?
              Ответить
            • Но зато те, кто "в теме", могут крайне быстро читать короткую хрень. Например, 2 + 2 + 3 вместо sum(sum(2, 2), 3). Только сокращения кулхацкеров не так удачны, как "+".

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

                в фортране можно неявно задавать типы необъявленным переменным в стиле "если начинается на c, то комплексное двойной точности", причём можно маппить целые наборы букв
                IMPLICIT DOUBLE PRECISION(A-Z)
                Приходилось иметь дело с рутинами, написанными с плотным использованием этого функционала. это НЕНАВИСТЬ.
                Ответить
              • > еще лучше заменить греческой буквой из барочной гарнитуры, которую еще хуй пойми как читать.

                И ещё вот эти "а-готическое, а-красивое, а-офигеть какое красивое, а-поуродливее".
                Ответить
              • А еще, сука, бесят электронщики. Все эти RDY, RST, BLK, GRND. Места им на плате мало? Или они все на иврите пишут, где гласные не пишутся?
                Ответить
                • Н ВС УПРС
                  Ответить
                  • TL;DR
                    Ответить
                  • ну ладно, а с ассемблерщиками что не так?!

                    Допустим, имена публичного символа должны быть короткими (ибо линкер), Но на кой хрен все эти PSRAD и PMADDWD?

                    Чтобы в 80 символов влезать? Так влезают же (по оператору на строке).

                    Транслятору-то все равно
                    Ответить
                    • Мне порой кажется, что плохие соглашения используются специально, чтобы можно было сходу определить язык.
                      Ответить
                • Ой, да ладно RDY, RST, GND... С именами сигналов как раз всё понятно - на принципиальной схеме длинные имена много места занимают.

                  Но вт с ргстрми и бтми рльно ккй-то пздц: The application must meet the following conditions to set up the device core to handle traffic: NPTXFEM and RXFLVLM in the OTG_FS_GINTMSK register must be cleared. On catching an RXFLVL interrupt (OTG_FS_GINTSTS register), the application must read the Receive status pop register OTG_FS_GRXSTSP.
                  Ответить
                  • Зато сейчас все эти OMG WTF AFAIK RTFM легко гуглить, потому что в текстах для здоровых людей такие комбинации букв не встречаются.
                    Ответить
          • А почему же creat - это пять символов?
            http://en.wikiquote.org/wiki/Kenneth_Thompson
            > Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: "I'd spell creat with an e."
            Ответить
            • > А почему же creat - это пять символов?
              Никто не знает. Может, у томпсона в редакторе с creat строчка ровнее смотрелась. Или пятка зачесалась, а дописывать слово было лень
              http://stackoverflow.com/questions/8390979/why-create-system-call-is-called-creat
              Ответить
      • Я не согласен с тобой. Да, чтоб байты экономить.
        >Такими темпами обычно доходит до абривиатур, известных только автору
        Если я напишу учебник, то нет. Все будут знать.
        rnd(100)
        Не так уж и плохо выглядит.
        Ответить
      • >rnd(100)
        >что лучше смотрится чем
        >random(100)
        А мне rnd всегда больше нравился. Тут же еще дело зависит от сокращения. В rnd просто выброшены все гласные.

        В общем нужен баланс. Читать теорию кодирования, думать какие выражения чаще всего используются и сокращать именно их. И то без фанатизма.
        Если предстоит написать это тысячи раз, то разумно было сократить - int лучше чем integer. Если в js очень часто используется function, то имело смысл сократить до func.

        Например uint32_t - говно. Имхо ui32 гораздо красивее, и вообще неплохо чтоб можно было вписать любую константу степени 2 вместо 32.
        Ответить
        • > В общем нужен баланс

          Есть очень простой приём - прочитать код вслух. Если читать легко и звучит понятно, то ок. Представляю себе мелкософтовцев: "Эй, а что это у нас за тип такой, ЭЛПИСИДАБЛВИЭСТИЭР?"

          > ui32 гораздо красивее
          можно просто u32 и i32
          Ответить
          • >можно просто u32 и i32
            Можно. Можно вообще выпилить uint :)
            Я понимаю что это сильно смахивает на llvm, но я б вообще всё унифицировал.

            И флоаты тоже назвать: f16, f32, f64, f128 согласно IEEE 754. И расширять в этом ключе (f80 для x86).
            А не: isHalfTy () ,isFloatTy () ,isDoubleTy (), isX86_FP80Ty () ,isFP128Ty ()
            Ответить
            • > f16, f32, f64, f128
              Или f<16>, чтобы не говнокодить при выборе типа, если он вычисляется на основе каких-то параметров. Впрочем, не удивлюсь, если в крестах такой механизм уже был и успел устареть.
              Ответить
              • для интов что-то похожее есть в Boost.Integer
                http://www.boost.org/doc/libs/1_55_0/libs/integer/doc/html/boost_integer/integer.html
                Ответить
              • >Или f<16>, чтобы не говнокодить при выборе типа
                Да-да-да. Как параметр в шаблоне вообще самое оно.
                Только с флоатами там произвольное не втулишь (ибо стандартизированы ровно 4 варианта со строго опредленной длинной мантиссы и порядка), да и смысла особо нет - железо поддерживает только стандартные.
                Вот инты - пожалуйста.
                Ответить
                • А не лучше тогда будет указывать пределы, как в Аде?
                  http://en.wikibooks.org/wiki/Ada_Programming/Types/range
                  Ответить
                  • Не знаю.
                    Громозко для записи, тормознуто (проверки диапазона) да и получить исключение при сложении - вряд ли часто такое нужно.
                    Ответить
                    • Зато при взятии индекса в массиве не надо проверку делать.
                      Если переменная i уже имеет тип a'Range, то a[i] автоматом корректно.
                      Ответить
        • А ui32 это видимо '32х дюймовый пользовательский интерфейс'?
          Ответить
        • а потом будет phpLapisSaddnes.com, где будут функции типа http://ru2.php.net/unixtojd
          http://ru2.php.net/nl2br
          http://ru2.php.net/strcoll
          http://ru2.php.net/strcmp
          http://ru2.php.net/strchr (alias strstr)

          для чего все это? почему нельзя написать функцию или метод так, чтобы было понятно все. чтобы код можно было читать как книгу....
          для чего делать обфускацию на уровне синтаксиса языка?
          не совсем удачный пример, но мне досталась база, от неких разработчиков PK и FK вообще. дали задание, допилить определенный функционал. я его пилил-пилил, и никак не мог понять, почему же у меня запросы не возвращают данные.
          оказалось - разработчики были ленивыми, и называли столбцы с идентификатором картежа uid, но когда они столкнулись с тем, что нужно было связать данные из разных таблиц в другой таблице, этот uid превратился в kb_id, при этом кое-где они фигурирует еще как kb_uid, а где-то kb_id.
          у меня полгода перед монитором висит бумажка с памяткой, где написано в какой таблице какие названия полей как связаны.
          есть же всякие рекомендации от разработчиков, как нужно писать код, какой стиль, как называть переменные, и делается это все не потому, что кто-то ахуел совсем ленивый написать to_string, и пишет to_s, а потому, что в этом разобраться потом проще будет.
          например для событий каких-нибудь вначале префикс On, или же для получения чего-либо Get.
          #include <stdio.h>
          i; a[] = { 't', 'h', 'e', ' ', 'c', 'l', 'u', 'b', ' ', 'c', 'a', 'n', 'n', 'o', 't', ' ', 'h', 'a', 'n', 'd', 'l', 'e', ' ', 'm', 'e', ' ', 'r', 'i', 'g', 'h', 't', ' ', 'n', 'o', 'w', '.'};
          main() {
          for (i =0; i < 37; i++) {
          printf("%c", a[i]);
          }}

          i; a[] = { 't', 'h', 'e', ' ', 'c', 'l', 'u', 'b', ' ', 'c', 'a', 'n', 'n', 'o', 't', ' ', 'h', 'a', 'n', 'd', 'l', 'e', ' ', 'm', 'e', ' ', 'r', 'i', 'g', 'h', 't', ' ', 'n', 'o', 'w', '.'};
          main() {
          for (i =0;
          #define f(z) sizeof(z)
          #define ck f(s)/f(int)
          i<ck; i++) {
          printf("%c", i[a]);
          }
          Ответить
      • > a.to_s
        a_to.jpg
        Ответить
    • Сравни с руби:
      puts <<TEXT
      Сейчас я загадаю число от 1 до 100, и это будет..
      #{a = rand(100)} - загаданное число! В конце мы получим 4!
      #{b = a*2} - это #{a}, умноженное на 2!
      #{c = b+8} - это #{b}, к которому мы прибавили 8!
      #{e = c/2} - это #{c}, которое мы разделили на 2!
      #{d = e-a} - это результат. То есть мы отняли от #{e} - #{a}. Видите, это же #{d}!
      TEXT

      http://ideone.com/iAKGyp
      Ответить
    • Турчинову и Яценюку - по пожизненному сроку.
      Ответить
      • По два!
        Ответить
        • Но больше всего я хотел бы выбить сахарные зубы и перерезать горло Турчинову. Живо представляю, как ещё несколько секунд после этого его голова живёт и видит, как из артерий гейзером бьёт кровь, из пищевода вытекает желудочный сок, и как мышцы сводит в неимоверной судороге. А глаза можно было бы вырвать из глазниц и скормить рыбам.
          Ответить
      • Почему? Они тебе лично насрали?
        Ответить
    • ИМХО, дело полезное. Вряд ли такой язык будет кому-то нужен на практике, но проектирование и создание языка - довольно интересный опыт.

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

          Так, может, это и есть возвращение Дениса Попова на фронт ударного программирования? И название "языка" по степени тупости похоже...
          Ответить
    • $('a.comment-vote-against').each(function(){comments.vote( $(this))})
      Ответить
    • Когда стандарт языка уже будет?
      Ответить
      • Москва не сразу строилась... Кресты и сишка вон сколько лет без стандарта прожили...
        Ответить
      • Всем говнокодом стандарт запилить.
        Интересный копирайй вырисовывается:
        (с) Разработано сообществом ресурса govnokod.ru
        Ответить

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