1. 1C / Говнокод #2948

    −138.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    ........
    Перем Cont Экспорт;
    ........
    
    Процедура ЗаписатьКонтекст(Конт) export
    	Cont = Конт;
    КонецПроцедуры

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

    конфа комплексная...

    Запостил: s.komaroff, 07 Апреля 2010

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

    • в комплексной если что уже есть функция
      глВзятьКонтекст(Конт)

      которая возвращает контекст
      Ответить
    • а 1с "export" перевести на русский религия не позволяет?
      Ответить
    • oop!
      Ответить
    • а что такое конфа в контексте 1C? конфиг? или что?
      Ответить
    • Непонятно зачем смешивать русскую и латинскую нотации. А так вполне нормальный код для 7-ки. Помещение текущего контекста в глобальную переменную. Это можно сделать только в глобальном модуле. Для того и процедуру сделали. В модуле формы или в модуле объекта такая запись
      Cont = Контекст;

      почему-то не работает
      Ответить
      • я еще раз повторюсь
        накой бес делать ПРОЦЕДУРУ
        в которой делается запись глобальной переменной. потом она сбрасывается...когда все уже придумано до нас

        //**************************************** **************************************
        // глВзятьКонтекст(Конт)
        //
        // Параметры:
        // Конт - значение типа "Контекст"
        //
        // Возвращаемое значение:
        // Переданный контекст
        //
        // Описание:
        // Функция возвращает переданное значение параметра (для получения Контекста)
        //
        Функция глВзятьКонтекст(Конт) Экспорт
        Возврат Конт;
        КонецФункции // глВзятьКонтекст()

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

          //*****************************************************************************
          //
          // plus(a, b)
          // 
          // Параметры:
          // a -- параметр типа "целое"
          // b -- параметр типа "целое"
          //
          //
          // Семантика:
          // Данная функция возвращает сумму переданных ей аргументов
          //
          // Особые замечания:
          // 
          // ВНИМАНИЕ: Данная функция обладает свойством коммутативности!!!
          ///
          // Возвращаемое значение:
          // 
          // Сумма переданных аргументов
          // 
          //*****************************************************************************
          int plus(int a, int b) {
           return a + b;
          }
          Ответить
          • Автор забыл упомянуть возможность переполнения. Плохо сделано, тупо.
            Ответить
    • пздц, TextMate запускается ПРОСТО МГНОВЕННО
      Ответить
      • И vim
        И Notepad++
        И EditPlus

        Что заставляет долбоёбов ставить свои Idea с Visual Studio?
        Ответить
        • idea ce тупо виснет при попытке тупо прописать тупо пути к тупо тулам

          ты конечно всё на жабу свалишь, но что-то мне подсказывает
          Ответить
          • Где жаба, там и жаба-программисты
            Ответить
            • java.lang.Throwable: AWT events are not allowed inside write action

              я хуею без баяна
              Ответить
              • Это же очевидно что делать обратись к системному администратору

                WriteAction это глобальный лок в Intellij. Когда он взят -- вся система стоит рачком. Обрабатывать события гуя в нем нельзя видимо.

                Напиши им багу в шью треккер
                Ответить
                • с пятой попытки ШМОГЛО
                  Ответить
                • видал кстати

                  https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax#D_programmi ng_language
                  Ответить
                  • >allows any function to be called using the syntax for method calls (as in object-oriented programming), by using the receiver as the first parameter
                    похоже на extension функции в коко и шарпее

                    Тема полезная для дискаверабилити, но быстро-ли это компилируется?
                    Ответить
                    • не знаю, а почему не должно?

                      плак-плак, без автодополнения для миксинов:
                      https://github.com/dlang-community/DCD/issues/515
                      Ответить
                      • Когда кокошников спрашиваешь "хули у вас коко кокококкокококпилируется медлее чем си плюс плюс" они говорят "ну вот глобально доступные extension methods медленные"
                        Ответить
                    • Не дольше, чем кресты с их конь-текстнозависимой грамматикой.

                      a.petuh(b) компилируется как petuh(a, b)

                      В языках с ООП по типу Симулы (C++) ведь тоже this по факту неявно передаётся самым первым аргументом метода. Сложности начинаются, когда метод виртуальный.
                      Ответить
                      • во некоторых япах он даже явно туда перепадется, да.

                        Кстати, в го и расте нужно указывать как именно ты его принимаешь: по значению или по ссылке. А в рустне поскоку всё по умолчанию мувается, то вызов метода может превратить объект в какашку, потому что объект двинется внутрь метода и там в бозе почит
                        Ответить
                        • Какой багор )))
                          Ответить
                          • пруфану
                            c:\temp>type foo.rs
                            struct Rooster;
                            
                            impl Rooster {
                                    fn do_all(self){} //вот тут перед self нужно вставить амперсанд, тогда починица
                            }
                            
                            fn main() {
                                    let ruster = Rooster{};
                                    ruster.do_all();
                                    ruster.do_all();
                            }
                            
                            c:\temp>rustc foo.rs
                            error[E0382]: use of moved value: `ruster`
                              --> foo.rs:10:2
                               |
                            8  |     let ruster = Rooster{};
                               |         ------ move occurs because `ruster` has type `Rooster`, which does not implement the `Copy` trait
                            9  |     ruster.do_all();
                               |            -------- `ruster` moved due to this method call
                            10 |     ruster.do_all();
                               |     ^^^^^^ value used here after move
                               |
                            note: `Rooster::do_all` takes ownership of the receiver `self`, which moves `ruster`
                              --> foo.rs:4:12
                               |
                            4  |     fn do_all(self){}
                               |               ^^^^
                            
                            error: aborting due to previous error
                            
                            For more information about this error, try `rustc --explain E0382`.
                            Ответить
    • https://ec-lang.org/

      какая хуйня обнаружилась, а

      An Expressive and Intuitive, C Style Object-Oriented Programming Language.

      import "ecere"
      
      class HelloForm : Window
      {
         text = "My First eC Application";
         borderStyle = sizable;
         clientSize = { 304, 162 };
         hasClose = true;
      
         Label label
         {
            this, position = { 10, 10 }, font = { "Arial", 30 },
            text = "Hello, World!!"
         };
      };
      
      HelloForm hello { };
      Ответить
      • еще один бетер си?
        Ответить
        • не, это какое-то эталонное ненужно. просто чего только не придумают

          на планете пять
          миллионов групп
          и это нннн
          Ответить
          • Когда я вижу ключевое слово "class", я сразу понимаю, что язык опоздал на тридцать лет, и не нужен
            Ответить
            • А как надо?
              Ответить
              • Быстро расскажи мне что такое класс и чем он отличается от типа или структуры
                Ответить
                • Тип — более общий термин. Тип не обязательно описывает ООП. Скаляр — это тоже тип.

                  Структура — более частный. Структура обычно состоит из полей. Но в крестах struct ничем не отличается от класса (разве что по дефолту видимость другая). Не знаю, нафиг так сделали.
                  Ответить
                  • >разве что по дефолту видимость другая)
                    ну вот видишь, офигенная разнциа, правда? Сделано так ради совместимости с няшной и ради того, чтобы форсить приватность в новом коде.

                    А чем в C# отличается знаешь?

                    Я не люблю когда завозят мутные хуйни заради нихуя. Все сменяются на джавушками с их StringBuilder/StringBuffer или Hashtable/Map, а разница между class и struct не менее всратая же
                    Ответить
                    • Да, кстати, в Йаже я без шпаргалки не вспомню, кто из них мудакбелен, а кто потокобезопасен. Очень удобные названия, как copy, copy2 и copyfile в Питоне.
                      Ответить
                • Classes: structures that inherit
                  Ответить
            • я вообще не понимаю, откуда это слово взялось и почему

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

              и в некоторые говна вроде скриптопараши для gamemaker это просочилось
              Ответить
              • Никлаус наш Вирт говорил, что это какой-то ненужный баззворд. Ну вот есть слово "тип", так хули вам еще надо?


                Ну реально, спроси питуха чем "class" отличается от "struct"
                C++ и C# петухи дадут настолько разные ответы, что я ебал.

                В Rust и Go нету никаких "class": только struct, и всем хорошо
                Ответить
                • Object-oriented programming is th e
                  new "hot" topic echoing through th e
                  computer software industry .

                  https://dl.acm.org/doi/pdf/10.1145/122106.122113
                  Ответить
                • Within Turbo Pascal, encapsulation i s
                  accomplished by defining an object type ,
                  more commonly called a class . A class i s
                  defined in the type section using a ne w
                  reserved word object, as the example belo w
                  shows

                  это ж охуеть можно

                  кстати, классно у них пдф прикинулся djvu
                  Ответить
              • Слово class появилось в Delphi 1.0. Теперь там object и class существуют параллельно.

                Object можно создавать, где угодно: в глобалках, в стеке, в куче. Class сам создаётся в куче, и управлять его размещением нельзя.

                Class поддерживает новые фишки: properties, перегрузки операторов. Object застрял в том состоянии, в котором он был в BP 7.0.
                Ответить
                • >Class сам создаётся в куче, и управлять его размещением нельзя.

                  ну вот началось, блин. Какое-то множество фичей мы выделим, и наделим ими случайное ключ слово

                  давайте добавим ключ слово "real_class" и разрешим там множественное наследование
                  Ответить
                  • Представляешь, да?

                    Вместо того, чтобы новые фичи добавить к object, ничего не ломая, они взяли новое ключевое слово class и стали навешивать новые фичи на него, а object перестали развивать.

                    Кстати, object требует меньше функций рантайма, чем class. Формат VMT разный. Хотя кто ковыряется в VMT напрямую?
                    Ответить
                    • А зачем они стали форсить кучу? Чтобы школоло не ловило SO и не копировало туда/сюда пачку данных?
                      Там же нету RC и GC? Вручную нужно удалять/добавлять?

                      Сложрность VMT/vtable важна когда у тебя много виртуальных методорв же
                      Ответить
                      • RC точно есть у новых строк (AnsiString/WideString/UnicodeString).
                        Ответить
                      • Из документации Фрипаскаля:

                        Class instances must be destroyed using the destructor. In difference with the constructor, there is no choice in destructors: the destructor must have the name Destroy, it must override the Destroy destructor declared in TObject, cannot have arguments, and the inherited destructor must always be called.
                        Destroy will call FreeInstance, which, in its default implementation, calls FreeMem to release the memory occupied by the instance.
                        To avoid calling a destructor on a Nil instance, it is best to call the Free method of TObject. This method will check if Self is not Nil, and if so, then it calls Destroy. If Self equals Nil, it will just exit.
                        Ответить
                        • >Destroy
                          >FreeInstance
                          >Free
                          Бедный Никлаус, он проклял наверное то, во что превратили его детище
                          Ответить
                          • Угу. А у object ты деструктор можешь назвать как угодно, а для удаления объекта (если он в куче) вызываешь Dispose(petuh, имя_деструктора);
                            Ответить
                          • А знаешь, кто придумал Дельфи? Тот же, кто придумал TypeScript и C#. Датчанин Андерс Хейлсберг.
                            Ответить
                            • А Шарп начинался как копия жабы после того, как свою реализацию жабы майкам иметь запретили?
                              Ответить
                          • А что не так? Destroy ты пишешь сам, а вызываешь через унаследованный Free.
                            Ответить
                  • А ещё все class являются наследниками какого-то говна типа TObject или TClass. Ничего не напоминает?

                    А object можно создать from scratch, ни от чего не наследуя, не засирая ненужными методами и полями.
                    Ответить
                    • ахаха, надеюсь там есть метод для получения хеша и фунция бесселя?

                      PS: T я помню еще по пасклю. TMenuBar был? TRadioButton, еще чото
                      Ответить
                      • Описание всех методов в 2000 символов не влезло.

                        Вот от Фрипескаря, в Дельфи будет похоже:

                        https://www.freepascal.org/docs-html/current/rtl/system/tobject.html
                        Ответить
                        • Какой NSObject )))
                          Ответить
                        • procedure DispatchStr(); virtual; Dispatch a string message.

                          запахно руби, смолтоком и объектными беттерсями

                          function GetInterfaceByStr(); Return an interface based on its GUID

                          пахнуло COMом


                          procedure DefaultHandler(); virtual;
                          
                            
                          
                          Default handler for integer message handlers.

                          блядь всё
                          Ответить
                          • Это, похоже, для динамических методов. У них ещё более позднее связывание, чем у виртуальных.

                            Я пока не изучал, как ими пользоваться.
                            Ответить
                            • Ждёшь, пока ещё настоятся лет двадцать?
                              Ответить
                              • Сейчас Иканус ответит на вопросы по программированию на BASIC под CP/M, и займется Дельфм
                                Ответить
                          • Нашёл. Это для так называемых мессаг:

                            https://www.freepascal.org/docs-html/current/ref/refsu31.html
                            Ответить
                            • >The TObject.DispatchStr method can be used to call a message handler

                              удобно
                              Ответить
    • Если складывается пасьян то сбегает уголовник
      Если техника Делл загружается с первого раза то сбегает два уголовника

      К счастью такого никогда не бывает
      Ответить

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