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

    +119

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    class Greeter {
      static var prefix = 'Hello,';
    
      static greet(name) {
        print('$prefix $name');
      }
    }
    
    main() {
      var greeter = new Greeter();
      greeter.greet("govnokod!");
    }

    Решил потыкать в Dart (http://www.dartlang.org/), а он мне:
    greeter.greet$named is not a function

    Запостил: rat4, 10 Октября 2011

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

    • Естественно. Ведь статические методы относятся к классу, а не к объекту.
      Ответить
      • http://codepad.org/9W6R7iDP
        Ответить
      • однако, во многих подобных языках можно вызывать статический метод и через объект

        p.s.
        > "статические методы относятся к классу"
        а объект относится к классу, следовательно статические методы относятся и к объекту :)
        Ответить
        • Конечно, можно.
          Не понимаю, зачем алехуй такую фразу обронил, а еще больше не понимаю, почему его плюсанули.
          Статические члены-данные хранятся в единственном числе и к ним имеют доступ все экземпляры класса.
          Тоже самое и в случае с методами(хотя и обычные методы тоже хранятся в единственном числе каждый).
          Просто статические методы будут иметь доступ только к статическим членам-данным класса. К ним же как и в случае со статическими данными имеют доступ все экземпляры класса.
          Ответить
    • У метода greet() static зачем?
      И вообще, что это за язык? Похож на выкидыш какой-то.
      Ответить
      • Похоже на С#, но не скомпилится
        static string prefix = 'Hello,';
        ...
        static void greet(name)
        Ответить
      • Написал же, что Dart (http://www.dartlang.org/)
        Ответить
      • Что-то вроде попытки превратить JavaScript в C#. Ну чтоб удобненько.
        Вроде, как пока работает через трансляцию дарта в JS.(пишу на Dart ООПэшно, транслирую в JS и заливаю на сай)
        Ответить
        • Не в C#, а в Java.
          Ответить
          • некоторые конструкции отдалённо напоминают Scala
            Ответить
            • Ну так а Scala на чём выросла?
              Ответить
              • На Java, Pizza, Haskell, Erlang, Standard ML, C#, Objective Caml, Smalltalk, Scheme :P

                я разве спорю? очень похоже на Java с небольшой примесью функциональщины
                Ответить
                • > очень похоже на Java с небольшой примесью функциональщины
                  это я про Dart.
                  Scala dramatically отличается от Java
                  Ответить
                  • Да понятно. Внешне это немного улучшенная Java (плюс сахар, который в Java появится только через пару версий, если вообще появится, минус статичность и ошибки прошлого), внутри — тот же JavaScript (только от некоторых ошибок дизайна избавились).
                    Ответить
          • Вот чего ж сразу яву не использовать?
            Ответить
            • Статически типизированная (мешает быстрому прототипированию), низкоуровневая, слишком большой и тяжёлый рантайм, большой хвост совместимости с ошибками прошлого.

              Синтаксис роли не играет, но если уж решили специально мимикрировать под жаву — значит думают, что это поможет. Удачи.
              Ответить
              • >низкоуровневая
                в каком месте?

                >слишком большой и тяжёлый рантайм
                Никто не мешает использовать сабсет только с тем, что нужно для веба. Имхо, на пару мегабайт наскребётся. Алсо, у меня папка с Фаерфоксом весит 35 мб, а Хром так и вовсе генерит кеш на гигабайты. Не так уж критично.

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

                >Статически типизированная (мешает быстрому прототипированию)
                дык а кто мешает впендюрить туда слой DLR?

                Тут они явно переизобретают велосипед, ява-апплеты, флеш, Сильверлайт и прочие RIA давно уже существуют, вот их бы взять лучше за основы "убивцы Яваскрипта", чем клепать очередной язык
                Ответить
                • Примитивы: 4 вида целых (не считая BigInteger), 2 вида нецелых (не считая BigDecimal), char, да ещё и ссылочные пары к ним. Это нужно для эффективного отображения на команды процессора, но при программировании простой логики только мешает — нужно помнить о переполнении, приведении. Лучше иметь дело с абстрактным целым, а сколько там байт внутри — забота компилятора, лишь бы хватило. Копеечная экономия на char и float тут тоже не нужна. Массивы неизменяемого размера — тоже низкоуровневая оптимизация.

                  Семантика не должна сильно зависеть от того, указаны ли типы явно, иначе никто не будет их указывать, чтобы не «сломать». Если делать всё в динамике, почистить рантайм, избавится от груза прошлого — как раз и придём к обычному «скриптовому» языку. От Java только внешнее, синтаксис (чтобы привлечь понятно кого). Можно было бы сделать синтаксис похожим на Питон, Паскаль или Лисп — в самом языке это ничего не меняет.

                  От JavaScript (и других «скриптовых» языков) есть серьёзные отличия — неизменяемые классы. Класс не изменяется после определения и класс объекта не изменяется после его создания. Это позволит немного уменьшить расход памяти на JIT или делать его более агрессивно.
                  Ответить
                  • Дешёвые прототипные языки были хороши, когда Вася делал свою хоумпагу в 90ых и хотел удивить друзей, особо не заморачиваясь.

                    Щас браузерные приложения всё сложнее и сложнее, и я не понимаю, почему надо цепляться за прототипность/динамичность (то бишь "груз прошлого"), а не идти в сторону статики, которая, как известно, более scalable.
                    Ответить
                    • Статические языки есть. Кто их использует в вебе?

                      Гугл мог бы хоть Haskell в свой браузер засунуть. Но кто им будет пользоваться?

                      А вот 99% веба написано на PHP. Потому, что низкий порог вхождения, потому, что можно «быстро и грязно». И JavaScript лезет уже на десктопы, планшеты, смартфоны.
                      Ответить
                      • > Но кто им будет пользоваться?
                        я :)
                        Ответить
                        • … и чукча даже видел этого человека.

                          Да, какая-то доля процента веба на Java пишется.
                          Ответить
                          • GWT
                            Ответить
                            • Во-первых, это только для тех, кто пишет что-то действительно большое и сразу. Во-вторых — оверхед. Медленнее Java, медленнее JavaScript. Для небольших проектов особенно.

                              Компилировать Java в Dart будет немного эффективнее. Хотя я бы предпочёл вообще стандартную абстрактную виртуальную машину — и пиши на чём хошь.
                              Ответить
                      • >Статические языки есть. Кто их использует в вебе?
                        Ну мы говорим о гипотетической революции. А то так тоже можно сказать, "кто использует Дарт?"

                        >Гугл мог бы хоть Haskell в свой браузер засунуть. Но кто им будет пользоваться?
                        Передёргивание.

                        >А вот 99% веба написано на PHP
                        Ну мы как бы говорим про клиентскую сторону.

                        >Потому, что низкий порог вхождения, потому, что можно «быстро и грязно».
                        Да хуйня всё это, на том же сишарпе индусы с удовольствием ваяют код (который хотя бы в 9000 раз быстрее). Просто так исторически сложилось. Говнохуйня не равно "низкий порог вхождения".
                        Ответить
                        • У Java было негипотетических полтора десятилетия. У машинонезависимого языка, рассчитанного на выполнение недоверенного кода, при этом с богатой библиотекой и на порядок лучшей, чем у «скриптовых» языков производительностью. На апплеты Java остались экзотикой. А пародия на Java, JavaScript, лезет уже повсюду, даже Microsoft бросает .NET ради HTML5.

                          У Гугла может и нашлось бы достаточно вундеркиндов, чтобы переписать все свои веб-приложения хоть на Go, но о среднем уровне программистов они справедливо невысокого мнения. То, что синтаксис Dart намеренно маскируется под Java, говорит о том, что они, наверное, считают целевую аудиторию достаточно тупой, чтобы пугаться незнакомых ключевых слов и с пеной у рта спорить о преимуществе разного типа скобочек. А так у них уже есть толпа со стороны, пишущая для Андроида, осилят и Dart. Говнокод там или нет, главное, чтобы писали и продавали.

                          Другой вариант — авторы языка сами такие. Но это слишком печальный вариант.

                          Dart проще и Java, и JavaScript. Теоретически продуктивнее JavaScript. То, что надо. По крайней мере, на это надеются.
                          Ответить
                          • >На апплеты Java остались экзотикой
                            Имхо, ява-апплеты просто обгоняли своё время, тогда был web 1.0 и особо сложных скриптов не требовалось
                            + они слишком поторопились и выпустили медленную интерпретируемую версию, а встречают по одёжке...

                            >даже Microsoft бросает .NET ради HTML5.
                            Это так только в Metro IE10 для тач-устройств, там причины какие-то другие (любые плагины запрещены, хрен знает почему), мне кажется чисто технические. В IE10 для десктопа всё ОК.
                            Ответить
                      • > Гугл мог бы хоть Haskell в свой браузер засунуть.
                        Накаркаете ведь так тонны быдлокода на ХаскеллСкрипте :-)
                        Ответить
            • Если бы Google решил использовать Java в качестве нового языка для браузера, я бы усомнился в дееспособности руководства/инженеров. Их бы сразу послали.
              Ответить
    • очень пазнавательно
      Ответить

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