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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    namespace Test;
    
    /**
     * MyTest (test/mytest.zep)
     */
    class MyTest
    {
        public function someMethod()
        {
            /* Variables must be declared */
            var myArray;
            int i = 0, length;
    
            /* Create an array */
            let myArray = ["hello", 0, 100.25, false, null];
    
            /* Count the array into a 'int' variable */
            let length = count(myArray);
    
            /* Print value types */
            while i < length {
                echo typeof myArray[i], "\n";
                let i++;
            }
    
            return myArray;
        }
    }

    Язык программирования «Зефир».

    https://docs.zephir-lang.com/0.12/en/introduction

    Запостил: TEH3OPHblu_nemyx, 03 Июня 2020

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

    • SEO-пост: извращения, компиляция, тупизация, языки.
      Ответить
    • Земфир
      Ответить
      • Я задыхаюсь от ворентности,
        От твоей-моей кобенности,
        Я помню все твои байтики, ага-ага.
        Пишу твои-мои функции.

        Зачем? Зачем? Лааааай-ла-лаа
        Зачем? Зачем? Лааааай-ла-лаа
        Ответить
    • Йажа какая-то.

      >while i < length {
      Видимо сделали фигурные {} скобки обязательными, что дало возможность сделать круглые () скобки опциональными.
      Ответить
    • Фу блять, фу нахуй, какое же говнище.

      unsigned integer variables are like integer but they don’t have sign, this means you can’t store negative numbers in these sort of variables:
      
      uint a;
      
      let a = 50; 
      
      let a = -70; //automatically casted to 70
      
      let a = 100.25;//automatically casted to 100
      
      let a = null; //automatically casted to 0
      
      let a = false; //automatically casted to 0
      
      let a = "hello";//throws a compiler exception


      Особенно когда -70 НЕЯВНО превращается в 70.
      Ответить
      • > throws a compiler exception

        Это в рунтиме?
        Ответить
        • В рунтиме конеплятора.
          Ответить
          • Кококококой рунтиме )))

            А компилтиме конпелятора — это то, что зашито в сам конпелятор, и чтобы его изменить, нужно переконпилировать сам кокококонпелятор?
            Ответить
      • >> Особенно когда -70 НЕЯВНО превращается в 70.

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

        Разработчик sergeyklay не видит проблемы:
        https://github.com/phalcon/zephir/issues/1291
        Ответить
        • Дык сишное -70 это не 70. Как оно так получается то?
          Ответить
        • Some platforms have 9-bit,
          а можно пруфоф?

          Формально Питуз прав.
          может быть
          sizeof(char) == sizeof(long)
          и оба 11 бит.
          Но где такое?
          Ответить
          • У «PDP-10» в машинном слове 36 бит, причём машинные слова не разбиты на байты.

            Авторы одного из компиляторов «Си» для этой платформы решили разбить машинное слово на четыре байта по 9 бит.

            Ещё в DSP (digital signal processors) бывают большие байты. Там в байте спокойно может оказаться 64 бита.
            Ответить
    • https://docs.zephir-lang.com/0.12/en/motivation

      If You Are a C Programmer…
      
      C is one of the most powerful and popular languages ever created. In fact, PHP is written in C, which is one of the reasons why PHP extensions are available for it. C gives you the freedom to manage memory, use low level types and even inline assembly routines.
      
      However, developing big applications in C can take much longer than expected compared to PHP or Zephir, and some errors can be tricky to find if you aren’t an experienced developer.
      
      Zephir was designed to be safe, so it does not implement pointers or manual memory management, so if you’re a C programmer, you will feel Zephir less powerful, but more friendly, than C.
      Почему всякий отброс с «новым крутым языком» равняется на божественную Сишку?
      Ответить
      • >Zephir was designed to be safe, so it does implicitly convert -70 to 70
        Ответить
        • А -2147483648?
          Ответить
          • Проверяем:
            namespace Pituh;
            
            class Pituh {
                public function main() {
                    int i = -2147483648;
                    echo i;
                }
            }
            Выхлоп:
            ...
            PHP_METHOD(Pituh_Pituh, main) {
            
            	zend_long i;
            
            
            	i = -2147483648;
            	php_printf("%d", i);
            
            }
            Ответить
          • Пример с типом uint у меня не компилируется:
            [ERROR] Unknown type: uint in C:\pituh\pituh.zep on line 7

            Не знаю, как исправить.

            Вообще у них есть странные глюки парсера:
            https://github.com/phalcon/zephir/issues/309
            Ответить
            • С типом uchar прокатило. Выдал в сишный выхлоп литерал -2147483648 даже без ворнинга.
              Ответить
    • https://youtu.be/0GIcP6xvW5Q
      Ответить
      • Испытательный полигон:
        namespace Pituh;
        
        class Test {
            public static function main() {
                uchar i = 0;
                let i = -2147483648;
                let i = -70;
                let i = 3.62;
                echo i;
            }
        }

        Выхлоп:
        PHP_METHOD(Pituh_Test, main) {
        
        	unsigned char i;
        
        
        	i = 0;
        	i = -2147483648;
        	i = -70;
        	i = (long) (3.62);
        	php_printf("%c", i);
        
        }


        Какой анскилл )))
        Ответить
        • > Pituh_Test

          Падажжи, то есть классы Pituh\Test и Pituh_Test вызовут коллизию имен?
          Ответить
    • Ещё один багор:
      https://github.com/phalcon/zephir/issues/653

      Ворнинг при объявлении класса, имя которого начинается на букву «u», потому что после склейки имени неймспейса с именем класса получается «\u», что трактуется как начало литерала уникодного символа с шестнадцатеричным кодом.

      Т. е. если у нас в неймспейсе «Nya» объявлен класс «Uwu», то после склейки получается «Nya\Uwu», и компилятор ищет шестнадцатеричные цифры после «\U».
      Ответить
      • Ой пиздец... А экранировку нельзя добавить?
        Ответить
      • Фидо_и_буква_н.txt
        Ответить
      • Судя по тому, что тикету уже шесть лет, стюардессу заебались выкапывать и закапывать обратно.
        Ответить
      • Кстати, а на буквы x, t, n и т.п. тоже нельзя называть классы?
        Ответить
        • На t можно, если верить issue (я пока не проверял).
          Ответить
          • Да и на uabba наверное тоже...
            Ответить
            • Сейчас проблема возникает на стороне сишки:
              #include "pituh\uwu.zep.h"

              Эти пидоры не могли додуматься использовать правый слеш вместо бекслеша.

              А то, что было в issue, кажется, пофиксили.
              Ответить
              • Напомнило про "vlc". Если его собирать под юзером, имя которого начинаетя с "u" или "x", то получается ошибка конпеляции.
                Ответить
                • Какой багор )))
                  Ответить
                • лол, а дай пруфоф?;)
                  Ответить
                • В это трудно поверить, но вот этот код на Java тоже не компилируется
                  https://ideone.com/LU6O9r
                  /**
                   * WinNT syntax: "computer\user"
                   */
                  public class Spam {
                  
                  
                  
                  }
                  Ответить
                  • «Йажац» ищет эскейпы в кококококомментариях?
                    Ответить
                    • угу
                      Ответить
                      • Зачем? Зачем? Комментарии же никуда не выводятся.
                        Ответить
                        • Чтобы исходники можно было хранить в православной 8-битной ANSI, а не мерзких многобайтных говнокодировках.
                          Вспомним про byte-order, BOMы и прочую хуиту.

                          Это касается и комментов к коду, если в них есть спец. символы.
                          Ответить
                          • Я должен комментарии через \uFF записывать? А как их потом прочитать? Через какой-нибудь docgen или IDE умеют их показывать?
                            Ответить
                  • В Йажа \uFF специальные литералы для экранирования уникода.
                    Это не баг, а фича.
                    Ответить

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