1. Pascal / Говнокод #27031

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // добавляем новые ссылки
      for i := 0 to ATags.Count - 1 do
      begin
        // так мне кажется лучше
        Application.ProcessMessages;

    кому или чему лучше кроме тебя, автор ?

    Запостил: xoodoo, 15 Октября 2020

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

    • Переведи на "PHP".
      Ответить
    • зачем ?
      Ответить
    • Что делает Application.ProcessMessages? Диспатчит WM_ сообщения окну? У автора впереди долгий цикл, и он хотел обработать существующие сообщения?
      Ответить
      • У автора впереди долгая ночь, потому что он Стертор
        Ответить
      • Да, я подобную хуету видел в C# приложении. Только там
        if (i % 10000 == 0) Application.ProcessMessages();
        Ответить
        • Ну это опасная практика, на самом деле, можно в уробороса превратиться. В шарпе лучше через async/await, имхо.

          Ну а в делфи выбора тупо не было.
          Ответить
          • Так и в шарпе это писалось поди когда осинков овейтов не было.
            Ответить
            • Да я думаю и сейчас по-инерции пишут.
              Ответить
              • а я не думаю

                там даже до осинок и апельсинок вот такая хуйня была
                https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker

                попижжена из
                https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html
                Ответить
          • Вообще, я против делфи. Язык для школьников и пидоров.
            Ответить
        • А что, многопоточность в ПТУ не проходят?

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

          Заблочить UI прогрессбаром (чтобы юзер никуда не тыкнул) и дёргать ProcessMessages (чтобы не висело) на порядок проще.
          Ответить
          • Да их много где не было. В джаве их не было до шестерки вроде или до пятерки, например.

            Это какая-то блин кооперативная многозадачность почти: чуть-чуть посчитал что-то, процесснул меседжи, еще чуть-чуть посчитал..
            Ответить
            • > кооперативная многозадачность

              Скорее эмуляция старой доброй однозадачной системы. Когда можно было просто нарисовать юзеру прогрессбар с кнопочкой отмены и заняться расчётами, периодически проверяя мышку с клавой.
              Ответить
              • Даже DOS не был в полном смысле однозадачным: TSRы же были
                Ответить
                • Причём по аппаратному прерыванию задача TSR вытесняла все остальные задачи. В принципе, программа могла потеснить TSR'ы, выполнив инструкцию CLI. Однако, было немаскируемое прерывание №2 (NMI), которое этой инструкцией не маскировалось. Однако, и его можно было замаскировать, перепрограммировав контроллер прерываний.

                  Блядь, как всё сложно.
                  Ответить
                  • NMI же не дёрнуть самому?
                    Ответить
                    • А инструкцией INT 2?
                      Ответить
                      • Так не честно. От явного вызова int ты ничем не замаскируешься.
                        Ответить
                        • Кстати, контроллер прерываний я зря упомянул. Он же обрабатывает только IRQ (прерывания 0x08 — 0x0F и 0x70 — 0x77, если я не путаю). А сигнал для NMI приходит по другим ножкам. И маскируются NMI они через какой-то отладочный регистр. Придётся гуглить, короче.
                          Ответить
                          • Короче странное это NMI, по сути аналог нынешнего MCE - репорт о том, что железу совсем хуёво.
                            Ответить
                      • Честных способов получается два:

                        - послать сигнал снаружи через соотв. пин процессора
                        - кинуть IPI через APIC (но во времена DOS его не было)
                        Ответить
                        • >> The first APIC was the 82489DX – it was a discrete chip that functioned both as local and I/O APIC. The 82489DX enabled construction of symmetric multiprocessor (SMP) systems with the Intel 486 and early Pentium processors.

                          Во времена «четвёрок» и первых «пней» «DOS» ещё активно использовали.
                          Ответить
                          • Офигеть, они его ради серверов запилили? На десктопе в то время SMP явно никто не юзал.
                            Ответить
                            • > На десктопе в то время SMP явно никто не юзал.

                              Лол, ты мне напомнил очень смешное предсказание создателя OCaml [1]:

                              Самая мякотка:

                              > Shared-memory multiprocessors have
                              never really "taken off", at least in the general public. For large
                              parallel computations, clusters (distributed-memory systems) are the
                              norm. For desktop use, monoprocessors are plenty fast. Even if you
                              have a 4-processor SMP machine, it isn't clear whether you should
                              write your program using shared memory or using message passing -- the
                              latter is slightly more expensive, but scales to clusters...

                              > What about hyperthreading? Well, I believe it's the last convulsive
                              movement of SMP's corpse :-) We'll see how it goes market-wise. At
                              any rate, the speedups announced for hyperthreading in the Pentium 4
                              are below a factor of 1.5; probably not enough to offset the overhead
                              of making the OCaml runtime system thread-safe.

                              [1] https://groups.google.com/forum/?_escaped_fragment_=msg/fa.caml/0CN8LIYDX0Y/xMsXNbB5csoJ
                              Ответить
                              • То есть мультиядра и гипертрединг на бытовых компьютерах — это мошенничество, чтобы содрать с покупателей побольше денег?
                                Ответить
                                • OCaml на это мошенничество до сих пор не повёлся, хотя подвижки есть вроде. Плавающий питух — тоже мошенничество, ибо только двойной питух масштабируется на кластеры.
                                  Ответить
                                  • Нет тредов - нет проблем с ними. В общем-то норм ход с точки зрения предсказуемости кода.
                                    Ответить
                                    • Ну окамл и создавался изначально для символьных вычислений. Их можно тупо майкфайлом параллелить. Это потом его за каким-то хером потащили в задний конец.
                                      Ответить
                                    • Именно поэтому я за "PHP".
                                      Ответить
                                  • А какую архитектуру создатель OCaml'а считает единственной вменяемой?
                                    Ответить
                              • >not enough to offset the overhead
                                of making the OCaml runtime system thread-safe.

                                У гиловцев примерно такой же аргумент: поддержите мне норальную многопоточность не уронив скорость и не усложнив код
                                Ответить
                                • > у гиловцев

                                  (запрещённой на территории с++ организации)

                                  Не усложнив скорость и не уронив код.
                                  Ответить
                                  • не ускорив возрастание сложности:)
                                    Вообще это аргумент Гвидо был. Но ведь GIL есть не только в cPython, но и в MRI. Возможно, Мац думает так же.

                                    Оба языка появились, когда большинство компов были однопроцессорными, и смысла в параллельно работающих тредах не имали
                                    Ответить
                                • > Python
                                  > не уронив скорость

                                  ^___~
                                  Ответить
                                  • Ну они таки ускорили GIL. Первый был вообще анскилльным и трешил ядра от любой многопоточной нагрузки. А от ctrl-c вместо выхода превращался в cpu burn.
                                    Ответить
                                    • Поэтому я за "Erlang". SMP там был со времён царя гороха, эриксоновцы просто взяли и запилили.
                                      Ответить
                                  • В это трудно поверить, но не только ПХПшники обсуждают какие кавычки быстрее. У питонистов тоже есть свои хитрости:
                                    https://stackoverflow.com/questions/41565219/why-can-using-slots-make-attribute-access-faster

                                    Какая вообще самая быстрая скриптуха сейчас? JS с JITом?
                                    Ответить
                                  • > ^___~
                                    Именно поэтому я за «Numba».
                                    Ответить
                                    • ты его форсил, я помню, и я проверял, и получились очень крутые результаты

                                      но джитится, понятное дело, далеко не всё)
                                      Ответить
                          • APIC работает в режиме эмуляции PIC, если его явно не переключить.
                            Дос не переключал, и думал, что он работает с 8259.

                            Это конечно не давало ему возможности использовать SMP (и еще таймеры какие-то), но досу было похуй
                            Ответить
                            • В теории я могу запустить APIC и пробудить остальные ядра, а потом сделать вид, что ничего не было...
                              Ответить
                              • а остальные ядра будут крутиться, и греть воздух?

                                Емнип, там нужно поставить в памяти спец трамплин, и послать IPI другим ядрам. Они проснутся, полезут в трамплин, ну и дальше куда он их направит
                                Ответить
                                • Дык я подставлю им трамплин в свой код и буду их юзать. А "DOS" об этом не узнает.
                                  Ответить
                                  • ты вирус что-ли?
                                    Ответить
                                    • Да нет, просто можно тогда не пердолиться со всякими dos extender'ами. Запустился на втором ядре, настроил себе там уютное 32-битное окружение и работаешь.
                                      Ответить
                                      • типа одно ядро в реальном, а второе нет? Ого)
                                        А IOPIC сдюжит?
                                        Ответить
                                        • Да APIC'у то насрать, он интеррапт зарепортит ядру, дальше не его проблема. Другое дело, что DOS офигеет от того, что эмуляция PIC'а отвалилась.
                                          Ответить
                                          • ну да, офигеет: ведь протокол работы у PIC другой.

                                            А еще нужно, чтобы дос случайно не затер какие-то структуры.. защищенному режиму вообещ нужен первый мегабайт?
                                            Ответить
                                            • > защищенному режиму вообещ нужен первый мегабайт

                                              Нет. Можно всё повыше закинуть. Ну кроме трамплинов в реалмод и обратно, если они нужны.
                                              Ответить
                                      • Приведи реальный пример кода.
                                        Ответить
                                        • > Приведи реальный пример кода

                                          Код по запуску второго ядра у меня где-то был. А вот флешки с досом, к сожалению, нету.
                                          Ответить
                              • Типа как «нереальный режим», когда переключаешься в защищённый, ставишь лимиты по 4 гига, а потом возвращаешься и делаешь вид, что ничего не было?
                                Ответить
                                • да, но это хак конечно, но многим помогал

                                  а вот идея держать два ядра в разных режимах -- этолул, я такого еще не видел
                                  Ответить
                                  • Потому что тогда не было двух ядер?
                                    Ответить
                                    • и это тоже

                                      я впервые увидел мать с двумя сокетами в 2002 где-то году, кажется это была мать под пень OverDrive (помнишь его?)

                                      А много позже я увидел тему на форуме про "как писать под два процессора? нужно два main()?"
                                      Ответить
                                      • int main() {     int main() {
                                            // thread 1      // thread 2
                                        }                }
                                        Ответить
                                        • ты видел эту тему? а как мне ее найти?
                                          Ответить
                                          • Спроси у Тараса Б.
                                            Ответить
                                            • гейдевкина тема чтоль?
                                              Ответить
                                              • Там были похожие приколы. Но я тоже не знаю, как найти.
                                                Ответить
                                                • Там еще был такой коммент: "я один раз видел программу под мощный сервер с 64-мя ядрами, так там было 64 main"

                                                  Нон коммент не точный, так что не нагуглить
                                                  Ответить
                                                  • Мне всегда интересно было, покажет ли слака 64 пингвина на 64 ядрах (это же фича ванильного ядра?)
                                                    Ответить
                                                    • Покажет ли 448 пингвинов ты хотел сказать?
                                                      Ответить
                                                      • Там под консоль что-нибудь остаётся?
                                                        Ответить
                                                        • надо же, в кои-то веке слово "окнсоль" правильно испольхзовали
                                                          Ответить
                                                    • ты про
                                                      https://cateee.net/lkddb/web-lkddb/LOGO.html ?

                                                      Это параметр CONFIG_LOGO ядра, угу

                                                      Ну вот ща на виртуалке врубил 12 (больше не могу), получил 12 пингвинов))

                                                      Так что может и покажет
                                                      Ответить
                                      • Здравствуйте! С вами мастер игры и вот его решение:
                                        https://www.gamedev.ru/code/forum/?id=19939

                                        Тот самый код на второй странице.
                                        Ответить
                                        • да, да, да! оно!! спасибо!
                                          Ответить
                                          • Там, кстати, есть реально рабочий код на «Паскале»:
                                            Begin               Begin               Begin              Begin              Begin
                                             Begin               Begin               Begin              Begin              Begin
                                              Write('H   H ');    Write('EEEEE ');    Write('L     ');   Write('L     ');   Writeln(' OOO ');
                                              Write('H   H ');    Write('E     ');    Write('L     ');   Write('L     ');   Writeln('O   O');
                                              Write('HHHHH ');    Write('EEE   ');    Write('L     ');   Write('L     ');   Writeln('O   O');
                                              Write('H   H ');    Write('E     ');    Write('L     ');   Write('L     ');   Writeln('O   O');
                                              Write('H   H ');    Write('EEEEE ');    Write('LLLLL ');   Write('LLLLL ');   Writeln(' OOO ');
                                             End;                End;                End;               End;               End;
                                            End;                End;                End;               End;               End.
                                            Ответить
                                          • А ещё там была шиза про торсионные поля и вихревое программирование:
                                                     . . }          
                                                   .    ( .         
                                                 {   1     .)       
                                                )  i    (..)   {    
                                               .      0      {   .  
                                               .  a  n     v  .     
                                               (     i      o  . .  
                                               2   m  a    i   .    
                                                n       m d   }  .  
                                                 i   d      v       
                                                  a    i  o    }    
                                                    m        v      
                                                       d i o
                                            Ответить
                                          • Не зря я гейдев вспомнил. Значит, моя память не спит с другим.
                                            Ответить
                                        • Какой багор )))
                                          Ответить
                                          • инью, ты не читал что-ли?

                                            Советую прочитать первые пять-шесть страниц минимум, там очень крутые комменты
                                            / на пять процессоров
                                            
                                            Begin               Begin               Begin              Begin              Begin
                                             Begin               Begin               Begin              Begin              Begin
                                              Write('H   H ');    Write('EEEEE ');    Write('L     ');   Write('L     ');   Writeln(' OOO ');
                                              Write('H   H ');    Write('E     ');    Write('L     ');   Write('L     ');   Writeln('O   O');
                                              Write('HHHHH ');    Write('EEE   ');    Write('L     ');   Write('L     ');   Writeln('O   O');
                                              Write('H   H ');    Write('E     ');    Write('L     ');   Write('L     ');   Writeln('O   O');
                                              Write('H   H ');    Write('EEEEE ');    Write('LLLLL ');   Write('LLLLL ');   Writeln(' OOO ');
                                             End;                End;                End;               End;               End;
                                            End;                End;                End;               End;               End.
                                            Ответить
                                            • Чтобы на CUDA писать нужно как минимум 100 мониторов, иначе каждую строчку по горизонтали скроллить придётся пять минут.
                                              Ответить
                                              • Код под CUDA на плоскости показать не получится. Нужно что-то в духе стопки из сотни-другой полупрозрачных мониторов, на каждом из которых видно код для 16 тредов.
                                                Ответить
                                                • Не обязательно. SIMD код просто редактируют с помощью Sublime Text, там лучшая поддержка multi-cursor editing.
                                                  Ответить
                                              • причем там все mainы будут одинаковые, single instruction же. Заебешься копипастить...

                                                А если они разные, то это нарушение ODR, и UB:(
                                                Ответить
                                                • Не все. Только в пределах одного варпа (тех самых 16 "тредов").

                                                  На других экранах ты можешь другой код написать при желании.
                                                  Ответить
                                                  • То есть я могу взять 16 курсоров по совету Снаута, и писать целиком под варп?
                                                    Ответить
                                                    • Ага.
                                                      Ответить
                                                    • А теперь представь сколько тредов тебе придётся написать для пост-обработки каждого пикселя на 4к экране.

                                                      Геймдев - очень скучное занятие, походу.
                                                      Ответить
                                                      • А если я пишу под разные ядра, то мне еще нужно синхронизировать код.

                                                        Например, в одном мейне я установил переменную в шареной памяти, и чтобы она была видна в другом, нужно чтобы строчка была ниже.

                                                        Я иногда переводами строк добиваю второй мейн, чтобы он совпадал.. Один раз случайно включил в редакторе soft wrap, длинные строчки перенеслись, и код сломался(
                                                        Ответить
                                                        • Для синхронизации тебе нужно провести барьер:
                                                          // примерно так
                                                              a[0] = 1;    a[1] = 1;
                                                          // -----------------------
                                                              x = a[1];    y = a[0];
                                                          Ответить
                                                          • а если я не хочу остальные треды тормозить об этот барьер, я вроде могу сделать вот такую воронку:
                                                            // примерно так
                                                                a[0] = 1;    a[1] = 1; some_Fun()
                                                            // ------------------------\                   /-----
                                                                x = a[1];    y = a[0];


                                                            но там нужно название функции по короче выбрать, иначе не пролезет. Потому в сишке такие короткие названия обычно?
                                                            Ответить
                                                            • Ну да, ты даже можешь изогнуть его для оптимизации, чтобы пустыми строками не разбавлять код:
                                                              // вот так
                                                                 a[0] = 1;    a[1] = 1;     a[2] = 1;
                                                              // -----------------------\\  a[2] += 1; 
                                                                 x = a[1];    y = a[2]   \\-------------
                                                                 x *= 2;      y *= 2;       z = a[0];
                                                              Ответить
                                                              • А вообще почему исполние идет сверху вниз? потому что intel?
                                                                Вот стек же может на разных архитектурах в разную сторону расти, и байтордер может быть разный.
                                                                Если я пишу под Sparc, то у меня код вверх идет, или в бок?
                                                                Ответить
                                                                • > байтордер
                                                                  int x;char y;int z; // эти переменные упакованы
                                                                  int x; char y; int z; // а между этими есть паддинг
                                                                  
                                                                  gnol x; // little-endian
                                                                  long x; // big-endian
                                                                  nglo x; // pdp-endian
                                                                  Ответить
                                                                  • Я так структуру оптимизировал для 32-х битного режима.
                                                                    struct foo {
                                                                        uint8_t a;
                                                                        uint8_t b;
                                                                    //1   
                                                                    //2    
                                                                       uint32_t c;
                                                                    }

                                                                    А потом под 64 пришлось переделывать
                                                                    struct foo {
                                                                        uint8_t a;
                                                                        uint8_t b;
                                                                    //1   
                                                                    //2
                                                                    //3   
                                                                    //4
                                                                    // 5
                                                                    // 6
                                                                       uint32_t c;
                                                                    }


                                                                    думаю, препроцессор использовать, чтобы он эти переносы строк встапвлял
                                                                    Ответить
                                                      • > А теперь представь сколько тредов тебе придётся написать для пост-обработки каждого пикселя на 4к экране.

                                                        Пиксельные шейдеры на Piet программируют, в MS Paint.
                                                        Ответить
                                        • Почему этого кода нет на "Говнокоде"?
                                          Ответить
    • Автор есть говнокодер по неуважительной причине - никто кроме него не знает по какому чиху он воткнул в цикл обработку очереди оконных сообщений, да он и сам вряд ли знает, ему всего лишь "кажется".. Начитался букварей и воткнул)

      То приложение, из которого процитирован этот фрагмент говнокода, просто напичкано асинхронными событиями, базирующихся в том числе и на оконных сообщениях основной нити, и бездумное впендюривание в свой цикл такой огульной обработки может повлечь (и по факту влечет) за собой нарушение ожидаемой последовательности их обработки.

      Сам же по себе Application.ProcessMessages не есть проблема, если он используется по уму, осознанно и только там где без него действительно сложно обойтись по объективным причинам
      Эти причины говнокодеру и следовало хотя бы кратко изложить ув комменте вместо своего школотного "кажется"
      Ответить
      • Рекомендую перейти на "PHP". Там такой хуйни нет.
        Ответить
        • Носовский Пилюлькин всех касторкой лечил, а ты свой пхп тычешь к месту и не к месту, даже не вдупляя о чём идёт речь)
          Рекомендую не рекомендовать.
          Ответить
          • Это уринотерапия
            Ответить
          • "PHP" - это единственный язык программирования, который не ебёт мозги программисту. Ты просто набираешь код, загружаешь его на сервер и течёшь от наслаждения. Никаких доёбов до типов данных, никаких компиляций - просто спокойное, течное программирование.
            Ответить
            • В пхп есть типы данных и компиляция.

              Типов данных нет в языке Fort. Компиляции нет в языке Bash. И в TCL. Но в TCL, к сожалению, есть типы данных. Целых три.
              Ответить
    • Смешной багор: один heavyweight компонент в свинге скролится мышкой в обратную сторону, причем только на винде, вызывая у всех бугор.

      heavyweight это нативное окошко операционки, которое получает от нее события, и перенаправляет их в джаву.

      Внимательный читатель сразу доагадется, чего не учли авторы компонента:
      https://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseWheelEvent.html#getWheelRotation()
      https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-mousewheel (wParam)
      Ответить
    • На какой язык backend-разработки лучше всего переходить с уёбищного PHP?
      Ответить
      • Erlang.
        Ответить
        • Каковы его достоинства и для чего конкретно он подойдёт?
          Ответить
          • > Каковы его достоинства

            Асинхронный код выглядит как обычный код, а не целебный обмаз колбэками.

            > и для чего конкретно он подойдёт?

            Для любого сетевого кода
            Ответить
            • Зачем нужен асинхронный код, если можно запустить ещё один инстанс "PHP" и течь?
              Ответить
              • Совершенно верно. Все фоновые задачи нужно сохранать в "май эс ку эл" и выполнять по крону.
                Ответить
              • Зачем запускать PHP если у Erlang есть свой шаблонизатор "Yaws"[1] (не трогайте его ради Мадоками).

                [1] http://yaws.hyber.org/dynamic.yaws
                Ответить
              • Ты ведь понимаешь, что мои призывы писать скрипты на PHP были всего лишь воплем отчаяния и я латентно мечтал перейти на более профессиональный язык?
                Ответить
                • И какой пароль был у ротоёба?
                  Ответить
                  • Это я и есть. Просто "троллинг" про элитарность PHP и помешанность на кавычках уже давно себя изжили и стали крайне унылы. Кстати, когда-то всё это мне действительно было свойственно, но постепенно я убедился в том, что PHP - устаревшее говно, а с тоннами кавычек я со стороны выгляжу полным дебилом. Но озарение пришло, а образ остался (должен был кто-то ворошить это гнездо, в которое уже десять лет никто со стороны не приходит).
                    Ответить
              • Именно поэтому я за "PHP".
                Ответить
                • А я что-то уже заебался, если честно. На нём в последнее время ничего годного не написать. Действительно, как я писал ранее, - язык для кулинарных блогов.
                  Ответить
                  • Залей же ещё одну гостевуху по «FTP», да выпей чаю.
                    Ответить
            • Можно ли его сравнивать с Go?
              Ответить
              • Go сделан для гоферов, которым гугл боится доверить в руки стеклянный хуй. Erlang сделан для про, которые заходят в REPL на живой ноде и делают sys:replace_state.
                Ответить
                • То есть, в Erlang можно писать как попало (я привык к этому в PHP и мне сложно привыкнуть к той ректальной огороженности каждой строки, которая есть в Go)? Я имею в виду - импортировать библиотеки и временно не использовать их, комментировать одну строку без комментирования десятка других и т.д.
                  Ответить
                  • Erlang доверяет программисту. Чекеры у него идут в комплекте (xref, dialyzer), но их можно не включать, лол.
                    Ответить
                    • И даже "типы" не нужно указывать, как и в "PHP".
                      Ответить
                      • Мой бывший коллега скоро это сломает (((
                        Ответить
                • > гугл боится доверить в руки стеклянный хуй.
                  ну да, там же вроде такой аргумент и был: "мы не можем ждать, что к нам придут С++ программмисты, нам нужен язык для быдла"

                  алсо
                  а разве за заход программиста на живой сервер не отрезают руку?
                  Ответить
                  • > а разве за заход программиста на живой сервер не отрезают руку?

                    Если анальные логи ведутся и формально допуск к данным одобрен, то не отрезают. Девопс культура, мать её.
                    Ответить
                    • А если у него палец дрогнет, и он всё сломает?
                      Ответить
                      • Ну починит обратно к утру, что делать. Сегодня девопсу предстоит трудная ночь.
                        Ответить
                      • Как у долбоёба, несколько лет назад удалившего базу данных GitHub (если я правильно помню это события).
                        Ответить
                      • Всё самопочинится. На прошлом месте я от скуки писал тесты, которые брали и рандомные места в коде ломали.
                        Ответить
                        • А если оно не в то состояние самопочинится, как гитхаб?
                          Ответить
                          • REPL -> sys:replace_state | application:stop(foo), application:start(foo, temporary). -> profit
                            Ответить
                          • Тогда все будут очень смешно бегать и хвататься за голову.
                            Ответить
                        • Есть такие тесты на тесты

                          Они ломают куски кода, и смотрят -- упадут-ли тесты

                          Если не упали, значит тесты -- говно
                          Ответить
              • Кстати, Go бы тебе подошел.

                Он не сложный, и по идее ПХП программисту не должно быть с ним тяжко.
                Ответить
                • Можно ли переносить скомпилированную программу на другой сервер той же архитектуры и запускать её там без установки самого Go?
                  Ответить
                  • да, можно.

                    Go линкуется статически, и получается огроооомный файл. Но один.

                    Например yourproject.exe.
                    Ты просто запускаешь его, и течешь.
                    Ответить
                    • Ещё нужно перезапускать, если программа упала.
                      Ответить
                    • Повлечёт ли активное использование interface в структурах значительную утечку памяти?
                      Ответить
                      • Я не знаю как это работает в go, к сожалению.

                        Виртуальные методы через указатель в целом медленнее по понятным причинам, но например в Java все методы виртуальные, и ты всё равно получаешь invokevirtual даже если у тебя класс закрытый и не может иметь детей
                        Ответить
                  • Да, там вроде всё статически линкуется, можно прогу закинуть на сервак и течь. Ставить "го" будешь только на свою тачку.
                    Ответить
      • «ASP.NET».
        Ответить
      • попробуй сначала аккуратно питон или руби
        там много ваших
        Ответить
        • Ruby дохл.
          Ответить
          • Вовсе нет
            https://gorails.com/forum/create-little-parse-data-formatting-and-counting-project
            Ответить
        • Пиздец, у тебя хоть что-то человечное есть?
          Если я обращусь тебе с советом как мне лучше покончить собой, ты мне расскажешь как, или попытаешься отговорить?
          Ответить
          • Если вдруг решишься, то помни, что резать нужно вертикально, а не горизонтально, не смотря на то, как это принято в массовой культуре
            Ответить
            • > резать нужно вертикально, а не горизонтально

              Ты про масштабирование серверов?
              Ответить
              • Масштабировать как раз лучше горизонтально. Это Фаулер еще в 2003-м году писал, за долго до облаков и вообще хардварной виртуализации
                Ответить
                • Дык ты и делаешь вертикальные разрезы чтобы масштабировать горизонтально.
                  Ответить
                  • а) типа запускаю N виртуалок/контейнеров/микросервисов на одном сервере?
                    Ответить
                • Фаулер, который придумал класть пациентов в промежуточное положение между лежачим и сидячим, или Фаулер, который изобрёл выдвижные закрылки самолёта?
                  Ответить
                  • Воспитанник «Ливерпуля», один из наиболее выдающихся футболистов в истории клуба
                    Ответить

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