1. C++ / Говнокод #24241

    0

    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
    https://github.com/dotnet/coreclr/blob/a589e3926a1780256fdb52376f8681fe047daf54/src/vm/i386/cgenx86.cpp#L1551-L1553
    
        PAL_TRY(Param *, pParam, &param)
        {
            unsigned char buffer[16];
            DWORD* dwBuffer = NULL;
    
            DWORD maxCpuId = getcpuid(0, buffer);
    
            if (maxCpuId < 1)
                goto lDone;
    
            dwBuffer = (DWORD*)buffer;
    
            if (dwBuffer[1] == 'uneG') {
                if (dwBuffer[3] == 'Ieni') {
                    if (dwBuffer[2] == 'letn')  {  // get SMT/multicore enumeration for Intel EM64T

    С каких пор в одинарные кавычки можно писать больше одного символа? Это какое-то MSVC или что?

    Запостил: j123123, 09 Мая 2018

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

    • Вообще-то помимо MSVC этот код должен и в GCC собираться (для этого туда ifdef-ов понапихали, там например есть варианты асмовставок как для вижуалстудии, так и для GCC), но в GCC я таких расширений не видел
      Ответить
      • https://wandbox.org/permlink/E9PNvaASaW8PrU9w
        С педантиком ругается, но компилируется и работает нормально
        Ответить
      • http://en.cppreference.com/w/cpp/language/character_literal
        > 6) Multicharacter literal, e.g. 'AB', has type int and implementation-defined value.
        Я бы конечно не стал использовать implementation-defined фичу без необходимости.
        Ответить
    • > С каких пор
      Да даже в C89 эта херня уже была задокументирована.
      Ответить
      • https://wandbox.org/permlink/9su9f9AKL98RBSw2 хрень какая-то

        int a = 'abcd', b;
        memcpy(&b, "abcd", sizeof(b));
        printf("%x %x\n", a, b);

        выводит 61626364 64636261

        А вот такая вот хрень:
        printf("%zu\n", sizeof('a'));
        printf("%zu\n", sizeof('ab'));
        printf("%zu\n", sizeof('abcd'));
        printf("%zu\n", sizeof('abcdefgh'));

        Дает в плюсах:
        1
        4
        4
        4
        т.е. символьный литерал в плюсах не всегда однобайтный, но восьмибайтным он никак не становится
        Ответить
        • # memcpy(&b, "abcd", sizeof(b));

          memcpy(&b, "dcba", sizeof(b));
          Ответить
          • Познакомь меня с каким-нибудь красивым, чернокожим юношей, который бы сделал из меня мужчину.
            Ответить
            • Поезжай в Камерун. Надеюсь, что языкового барьера не возникнет, ведь ты всегда сможешь прокричать "Deeper, deeper".
              Ответить
              • Ну, я это прокричу, когда уже буду болтаться на хуе, а как же быть до этого?
                Ответить
        • Вообще-то символьный литерал в Си имеет тип инт, а вот в плюсах я не знаюю. Восьмибайтным наверно не становится потому что 32бтиный член.
          Ответить
      • Лучще б вместо implementation-defined чтобы эту херню вообще запретили
        Ответить
        • ты как будто не в курсе что ms всегда были на своей волне, и пользоваться нестандартными фишками у них в крови

          зато блин операторы +-*/ и пр. для SSE сделать видимо пипец как сложно
          Ответить
      • О, борманд, реши загадку (я еще в сырцы не лазил и сам ответа не знаю)

        Известно что некоторая операционная система не дает программам поступа к debug регистрам: и через ptrace из никак не изменить, потому она не уязвима для CVE-2018-8897.

        Однако на ней как-то работает gdb и делает watch (memory breakpoint)
        Вопрос: как?
        Ответить
        • Дык поди само ядро пишет в них значения (предварительно проверив, само собой), ловит отладочное исключение и сообщает о нём отладчику.
          Ответить
          • тогда в ptrace должен быть какой-то API для "установки watch"?

            просто в linux-то это не так.
            Там в "asm/user.h" есть u_debugreg и его через PTRACE_POKEUSER ставят
            Ответить
            • Ну если оно в DRx само не пишет и другим никак не даёт, то остаётся только грубая сила -- отключать доступ ко всей странице с вотчпоинтом и ловить пейджфолты.
              Ответить
              • само приложение в DR не пишет, да это и запрещено наверняка.

                просто API у юниксообразных обычно такой:

                1) дебагер берет ptrace и просит ядро писнуть в DR у дебаги
                2) ядро пишет
                3) ядро ловит debug exception
                4) ставит дебагера в известность

                Хз как DbgHelp работает у Win, но думаю что так же.

                Ну вот одна OS вдруг не имеет API для установки DR* через ptrace, я и задумался как же они жвут

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

                  З.Ы. А может у них просто какое-то своё расширение ptrace для таких бряков?
                  Ответить
                  • >>Всё, что эту страничку задевает
                    так страница-то 4К (если не huge/large -- тогда еще больше)

                    я за один сраный uint32 на стеке буду страдать, ох

                    >> А может у них просто какое-то своё расширение ptrace

                    В доке не видать:)
                    Всё то я знаю это что
                    1) userspace apps can't access debug registers (инфа почти 100% ибо от кордевов)
                    2) gdb там умеет watch

                    буду смотреть сырцы, имею подозрение что они инструментят код увставляя int 3 перед mov: то-есть так же, как софтварные брекпоинты.
                    Ответить
                    • > инструментят
                      Да не, маловероятно, каждая вторая команда же в память лезет... И мы не знаем, какая из них может задеть нужный адрес. Это будет лагать даже хуже чем мой вариант со страничками.
                      Ответить
                      • Блядь, я тут два часа лазил по сырцам gdb, узнал что нативные вещи лежат в файлах -nat-, что в i386-linux-nat начинает собираться структура с колбеками в которую добавляется код для работы с debug registers, а в bsd configure проверяет GETDBREGS из sys/ptrace.h (он есть у FreeBSD но нет у OpenBSD, зацени кстати насколько это изящнее сделано у бздунов чем у линукса), узнал что hbreak в gdb не работает если не сделать run (вероятно потому что страницу не создали пока не запустили программу), и что на linux он говорит "Hardware assisted break..." а на openbsd "No harware breakpoint support" (макрос target_can_use_hardware_watchpoint из breakpoint.c) и пасьянс уже начал складываться, и тут я решил почитать доку, и там:


                        https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html
                        Depending on your system, watchpoints may be implemented in software or hardware. GDB does software watchpointing by single-stepping your program and testing the variable’s value each time, which is hundreds of times slower than normal execution. (But this may still be worth it, to catch errors where you have no clue what part of your program istyp the culprit.)

                        Короче, вот ответ: на obsd (речь шла о ней, как ты наверное догадался) хардварных брекпоинтов нет а вотчи там софтварные.

                        Это один из десятков примеров того что linux использует интел-специфик штуки, а бздуны лозжат на них хуй
                        Ответить
                      • Блядь, я тут два часа лазил по сырцам gdb, узнал что нативные вещи лежат в файлах -nat-, что в i386-linux-nat начинает собираться структура с колбеками в которую добавляется код для работы с debug registers, а в bsd configure проверяет GETDBREGS из sys/ptrace.h (он есть у FreeBSD но нет у OpenBSD, зацени кстати насколько это изящнее сделано у бздунов чем у линукса), узнал что hbreak в gdb не работает если не сделать run (вероятно потому что страницу не создали пока не запустили программу), и что на linux он говорит "Hardware assisted break..." а на openbsd "No harware breakpoint support" (макрос target_can_use_hardware_watchpoint из breakpoint.c) и пасьянс уже начал складываться, и тут я решил почитать доку, и там:


                        https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html
                        Depending on your system, watchpoints may be implemented in software or hardware. GDB does software watchpointing by single-stepping your program and testing the variable’s value each time, which is hundreds of times slower than normal execution. (But this may still be worth it, to catch errors where you have no clue what part of your program istyp the culprit.)

                        Короче, вот ответ: на obsd (речь шла о ней, как ты наверное догадался) хардварных брекпоинтов нет а вотчи там софтварные.

                        Это один из десятков примеров того что linux использует интел-специфик штуки, а бздуны лозжат на них хуй
                        Ответить
                        • Вот нахуя и как ты постишь по 2 раза?
                          Ответить
                        • Как ты докатился до такой жизни, что свободно ориентируешься в коде ГЦЦ, и ещё по памяти сравниваешь с бздями? Ты что, борманд?
                          Ответить
                          • Не gcc, а gdb. И нифига не свободно: я несколько часов там ковырялся чтобы понять как и что. И не по памяти: весь код есть на гитхабе.

                            Я просто вдруг осознал что не все умеют debug регистры (да и интел раньше не умел) и задумался как же тогда работает watch.

                            Про то, как делают софтварный брейк (заменяют вызов на 0xCC кторый INT 13h) я знал а как делают софтварный watch (aka data breakpoint) я не знал, ну вот оказывается сделают через пошаговое выполнение (не быстро!)
                            Ответить
                            • А хардверный watch как делают?
                              Ответить
                              • через дебаг регистры

                                пишешь туда адрес, и процессор вызывает прерываение когда по этому адресу обращается

                                https://en.wikipedia.org/wiki/X86_debug_register
                                Ответить
                                • И какой софт так делает?
                                  Ответить
                                  • Да все дебагеры. Windbg (точнее их там целая стайка), lldb, gdb.
                                    Но не все ОС это позволяют, и не все платформы.

                                    Дебаг регистры не у всех процессоров есть
                                    Ответить
                            • Как ты докатился до такой жизни, что пишешь сам себе вопросы, и сам на них же отвечаешь? Vistefan, ты что, борманд?
                              Ответить
                          • @Ты что, борманд?
                            Борманд сидит под несколькими учётками, в том числе и под этой. Когда ему становится скучно, он ведёт просветительскую работу, общаясь сам с собой.
                            Ответить
                          • Вероятно, он barop.
                            Ответить
                            • А кем он был до баропа? Я вот и не видел его до этого вроде.
                              Ответить
                              • Вот этот комент похож на баропа http://govnokod.ru/19903#comment324902
                                Значит, раньше бароп сидел под гостем и гостезаменителями.
                                Ответить
                  • ps:
                    3) ну еще я лично смотрел на структуру которую можно передать в ptrace: там куча регистров (даже r* есть для amd64) но вот dr* нет

                    инструментить можно тоже не всегда же?
                    если я там адрес переменной положил в int, тудасюда его помножил то уже не понятно что тот адрес значит
                    Ответить
    • 6) Multicharacter literal, e.g. 'AB', has type int and implementation-defined value.

      Иными словами, тебе это никогда не нужно
      Ответить
    • if (dwBuffer[1] == 'uneG') {
                  if (dwBuffer[3] == 'Ieni') {
                      if (dwBuffer[2] == 'letn')  {

      Оператор && там не проходили?
      Ответить
      • 8==э
        Это тоже
        Ответить
      • Либо это писало такое же гвно как и я, либо
        // оно посчитало,
                }
                //  что здесь
            }
            // могут понадобится ещё операторов
        }
        Ответить
    • Нуу, какбэ:
      Если 1 условие не выполняется, то проверять 2 других не имеет смысла, со 2-м условием то же самое. Ленивость в Си(в плюсах же тоже, да?) не завезли.
      Ответить
      • Это для суомы.
        Ответить
      • Ээээээээ... Как не завезли?????
        Ответить
      • Тут говорят что ты неправ https://stackoverflow.com/questions/3958864/c-is-there-lazy-evaluation-when-using-operator-as-in-c
        Ответить
        • Ебать, сколжо же я лишних строчек напесал. Я мудило.
          А я думал, что в Си такого ещё не было. И что так было всегда?
          Ответить
          • шёрт сирукит в си был всегда

            по крайней мере в 90х (c89?)он уже был
            Ответить
            • Зато в крестах перегруженные && и || выполняются по полной схеме, хотя неперегруженные выполняются по укороченной.

              Собираются ли в кресты завозить "ленивость" для перегруженных?
              Ответить
              • А можно пример перегрузки || со смыслом?
                Ответить
                • Перегрузил твой анус, проверь.
                  Ответить
                • > пример перегрузки || со смыслом

                  Любой DSL. У нас в одном проекте был DSL для конструирования запросов к хранилке, что-то вроде
                  find(ObjType(Is(TYPE)) && Revision(Is(LATEST)))
                  Т.е. по сути тут манипуляция AST запроса, она должна быть неленивой.
                  Ответить
                  • #оффтоп
                    Куда высылать баг-репорты к бесконечному стоку Борманда? Желательно бесплатно, без регистрации, анонимно и без СМС.
                    https://i.imgur.com/TOxEnQS.png
                    Ответить
                    • https://github.com/bormand/ngk/issues
                      Ответить
                      • Так тут неанонимно и с регистрацией.
                        Ответить
                    • > https://i.imgur.com/TOxEnQS.png

                      Это я случайно Ctrl+Enter нажал, потом поправил. Пока новый коммент не появился, сток не обновился.
                      Ответить
                    • http://govnokod.ru/23795
                      Ответить
                  • Я вообще к DLSям отношусь насторожено, хотя написанное тобою выглядит, вроде бы, понятно
                    Ответить
                  • А что можно сделать, если надо перегрузить || чтобы оно было ленивым?
                    Ответить
          • >> Я мудило.

            Самозванец!
            Ответить
    • Ебать, надо мною все такие умные. "C" знают.
      Ответить
      • За всех не скажу, но борманд и j123123 точно знают
        Ответить
      • Программисты обычно знают С.
        А всякая околокомптютерная хипстерская тусофка: там дизайнеры, блогеры, пхперы, фронтэндеры итд -- они не знают, ну им и не надо
        Ответить
        • Назови 10 отличий "PHP" от "C"
          Ответить
          • 1) коммуюнити
            2) остальное вытекает из первого
            Ответить
            • Тогда назови 10 отличий комьюнити "PHP" от комьюнити "C".
              Ответить
              • В комьюнити сишников принято понимать что они делают, а в коммьюнити PHP -- https://tinyurl.com/y7uh7sph
                Ответить
                • Как в силосную яму нырнул... Предупреждать же надо!
                  Ответить
                  • Нырнул в твою силосную яму, проверь!..
                    Ответить
                  • Вот еще пост охуенггный


                    :
                    написал такой мини код для проверки отклика от сокета

                    if (false !== ($bytes = socket_recv($sock, $buf, 2048, MSG_WAITALL))) {
                    echo "readed $bytes bytes from socket_recv(). close...";
                    } else {
                    echo "Dont can read becouse " . socket_strerror(socket_last_error($sock) ) . "\n" ;
                    }
                    socket_close($sock);

                    Получил такой вот такой странный результат

                    "Dont can read becouse Операция успешно завершена."

                    т.е. сработала ветка с не выполненным условием однако результат (ошибка) пишет что все успешно завершено

                    может кто то подсказать где у меня ошибка?

                    и еще один вопрос можно как то настроить кодировку отдельно взятой строки? (сайт на utf 8 а отклик с сокета пришел в windows 1251)
                    Ответить
                    • Deed faking of your anus, check.
                      Ответить
                    • > Dont can read becouse

                      Donc merci beaucoup!

                      > можно как то настроить кодировку отдельно взятой строки?

                      В php.ini
                      Ответить
                      • > отдельно взятой строки

                        Перед выводом каждой строки переписывать php.ini?
                        Ответить
                        • > переписывать php.ini?

                          Зачем? один раз запомнить, в каком файле и в какой строчке нужно сконвертировать, и добавить станцу
                          [convert-from-win1251-to-utf8]
                            target=shit.php:95:imya_stroki
                          неужели ты подумал, что я в серьёз про php.ini???
                          Ответить
                          • И при изменении номера строки переписывать php.ini?
                            Есть простой способ: по регулярке устанавливать определенную кодировку для строки.
                            Ответить
                            • > устанавливать определенную кодировку для строки

                              Устанавливать через менеджер пакетов, разумеется?
                              Ответить
                • https://phpclub.ru/talk/threads/85068/

                  Нет смысла думать плохо о целом языке, ориентируясь на единичные вопросы такого уровня.
                  Ответить
                  • Педь, ну какие единичные?
                    Найди там хоть один серьезный вопрос

                    Человек с ником "Фанат" в этом говноклубе тусит уже 20 лет. Он еще в 2003м там уже был за главного.

                    И вот он в 2017м году рассуждает в таких выражениях "Вот смотрю я на аннотации и мне кажется, что это какое-то извращение.
                    Но, как Василь Иваныч, нутром чую, а доказать не могу."

                    Заебись анализ, правда?
                    Ответить
                • Как будто по C таких вопросов нету
                  Ответить
            • А где собирается сообщество сишников, кроме ГК и оффлайна?
              Ответить
              • На небесах.
                Ответить
                • Неужели язык такой сложный, что никто кроме Ритчи на вопрос не ответит?
                  Ответить
                  • Это вопрос из серии, где собирается сообщество любителей нормальных мультиков, а не анимешников.
                    Ответить
                  • Кен Томпсон може
                    Ответить
          • "C" - низкоуровневое говно.
            Ответить
            • А "PHP" - высокоуровневое говно? )
              Ответить
              • Там гц есть хотя бы
                Ответить
                • Пиздец, зачем в Си ГЦ? Си — язык для системного программирования. Бородатые системщеги взрослые дяденьки — сами за собой мусор убирают.

                  ЗЫ. В компиляторе DigitalMars, вроде бы, есть либа gc.h и gc.dll, но я её особо не изучал.
                  Ответить
            • Всегда приятно услышать серьезное и аргументированное мнение эксперта, подкрепленное многими годами опыта разработки
              Ответить
              • Хуясе нахрюк. Ну давай, расскажи мне про области применения "C". Про его стандартную библиотеку.
                Ответить
                • >>области применения "C".
                  ну вот ты сидишь на сайте LAMP: Linux, Apache, PHP, MySQL.

                  Угадай, на чем написаны эти четыре предмета?
                  Ответить
                  • Сравни сколько людей пишут на "C" и сколько на "Java", сравни количество строчек кода. На "Java" пишут на порядок больше, просто этот софт ты не видишь.
                    Попробуй устроиться на работу "сишником" и расскажешь об опыте.
                    Ответить
                    • >>Сравни сколько людей пишут на "C" и сколько на "Java",
                      Зачем мне это сравнивать?
                      Довольно очевидно что джавистов больше, а пхпшников еще больше, а а пишущих на Verilog людей меньше. Что это доказывает?

                      >>просто этот софт ты не видишь.
                      Я знаю что дофига софта на джаве написано и не спорю с этим

                      >>Попробуй устроиться на работу "сишником" и расскажешь об опыте.
                      А, ну если мы сравниваем количество вакансий то ты прав конечно: си тут проигрывает. Но тогда надо говорить про JavaScript или про PHP: их будет больше.

                      Вообще программирование говно, потому что вакансий курьера гораздо больше, и кстати устроиться туда куда проше
                      Ответить
                      • Ну бля, я даже не знаю как на твою демагогию ответить. Как мне тебе доказать, что "C" - низкоуровневое говно и вообще мало где нужно, если количество вакансий и количество строк кода для тебя не аргумент?
                        Ок, что там со стандартной библиотекой?
                        Ответить
                        • По стандартной библиотеке выигрывает "PHP": там всё включено и не нужно писать дурацкие import/using.
                          Ответить
                          • Но "Composer" заебал. Теперь ни один халявный проект с "GitHub"-а не обходится без этой поеботни. Когда два-три года назад на вашем любимом "Хабрахабре" стали появляться статьи, опровергающие важность и необходимость фреймворков, я было разомлел, но, как оказалось, рано: с тех пор всё перешло в другую крайность, выражающуюся в максимальной зависимости конкретно взятого проекта от десятков левых библиотек. С этим "PSR-4" в край остоебли.
                            Ответить
                        • >>если количество вакансий
                          см про курьера

                          >>Ок, что там со стандартной библиотекой?

                          ну она лучше чем у JavaScript, например

                          зы: я, кстати, ни разу не защищаю си: в нем говна предостаточно, но сравнивать языки разного уровня по количеству вакансий это, конечно, феерия
                          Ответить
                          • >>>Ок, что там со стандартной библиотекой?
                            >
                            > ну она лучше чем у JavaScript, например
                            Это по каким критериям?

                            Именование - в стиле Вонни; функциональность - практически в зачаточной стадии. Консистентности нет.

                            OK, без f - в консоль, с f - в файл, с s - в строку:
                            int printf ( const char * format, ... );
                            int fprintf ( FILE * stream, const char * format, ... );


                            Набор *printf/*scanf - print vs scan.
                            * Но! Для строк и символов - put vs get.
                            * Но! Строка формата ни черта не соответствует, %* в print/scan значит разное; %f для double и %d для char printf прощает.

                            Ладно, давайте читать символ. Мы знаем, что без f - в консоль, с f - в файл, с s - в строку.
                            Но строку в строку можно записать только с помощью Вонни-функции strcpy или явно с sprintf("%s"....

                            Хорошо, считаем из консоли/файла. Из файла всё читается как надо, а из консоли - только со срывом буфера. Разница - в одном сраном параметре.
                            char * gets ( char * str );
                            char * fgets ( char * str, int num, FILE * stream );

                            В *scanf считать нужное количество символов можно, но нужно вкорячивать его в строку формата! В то время, как *printf умеет передавать ширины через аргументы.

                            Ладно, со строками не сложилось. Ну хоть символ-то можно считать без пердолинга.
                            Итак, без f - в консоль, с f - в файл:
                            int fgetc ( FILE * stream );
                            int getc ( FILE * stream );

                            ЧИВО? Вы издеваетесь? А как считать из консоли?

                            getchar.
                            int getchar ( void );


                            До какого символа считывается строка? *scanf - до пробельного, fgets - до конца буфера или \n, gets - до срыва буфера. Консистентность есть? Нет. Настраиваемость? Нет.

                            Регулярки? Нет, только диапазон символов в *scanf.
                            Строки? Набор Вонни-функций для пердолинга памяти.
                            Массивы может есть? Нет, только набор Вонни-функций для пердолинга памяти плюс ручная передача размера.

                            И это лучше, чем в JS? В каком подвале Вас держат сишники, дайте нам знак?
                            Ответить
                            • > %f для double и %d для char printf прощает
                              Так printf не знает какого типа значения ему были переданы.

                              > Из файла всё читается как надо, а из консоли - только со срывом буфера
                              Никто не запрещает читать с консоли fgets'ом, а gets вообще не рекомендуется использовать.

                              > В *scanf считать нужное количество символов...
                              fgets, fread

                              > До какого символа считывается строка?
                              Если не нравится, читай посимвольно

                              > Набор Вонни-функций для пердолинга памяти.
                              Си для этого и создан.

                              Да, библиотека говно. Но есть ли у кого-то лучше? (для тех же целей) Rust? Go? (мне кажется, что говном можно полить всё, что угодно)
                              Ответить
                              • >Так printf не знает какого типа значения ему были переданы.
                                А в чем, кстати, проблема сделать макрос?

                                >> Набор Вонни-функций для пердолинга памяти.
                                >Си для этого и создан.
                                Так я это и пытаюсь втолковать человеку.
                                Ответить
                                • Проблема в слабой типизации. Если бы была сильная, значение другого размера не прошло бы.
                                  Ответить
                            • >>без f - в консоль, с f - в файл, с s - в строку:
                              да, говнецо

                              а напомни мне пожалуйста как кросс-платформенно вывести что-то в stderr в javascript?
                              Ответить
                              • throw new Error('123');

                                Работает практически везде.

                                Ещё можно
                                process.stderr.write('123');

                                в Node.js, и будет кроссплатформенно. Node.js работает на большой тройке ОС и вроде ещё в андроиде.
                                Ответить
                                • >>Работает практически везде.
                                  и завешает работу программы

                                  впорос был как написать что-то в сдтерр

                                  >>в Node.js,
                                  нод джс это всего лишь одна реализиация

                                  а вот под WSH не сработает: там надо по-другому писать
                                  и под asp classic тоже
                                  потому что спецификации языка такой функциональности нет

                                  а в си есть)
                                  Ответить
                                  • > а в си есть)
                                    Уж лучше, когда где-то конкретно, но работает как надо, чем работает везде, но коряво (с ID, UB, переменными неизвестного размера).

                                    > впорос был как написать что-то в сдтерр
                                    process.stderr.write
                                    Работает, пишет.

                                    И регулярки без смс и регистрации работают.
                                    Ответить
                          • > ну она лучше чем у JavaScript, например

                            лолчто

                            Стандартная сишная либа это просто эталон пиздеца. Попробуй перечислить файлы в каталоге кроссплатформенно, ага.
                            Ответить
                            • Мы про браузерный жс? В его библиотеки реально нихуя нет. Даже, блядь, URL нельзя отпрсить, и нет нормального способа устанавливать, СУКА, куки!
                              Ответить
                              • Установить ладно, а вот прочитать или удалить...
                                Ответить
                                • А есть ещё куки с флажком httponly, которые принципиально недоступны для js.
                                  Ответить
                                  • Которого ещё не было, когда писался этот сайт?
                                    Ответить
                                    • На govnokod.ru кукисы авторизации не httponly. Страйко не догадался, или их тогда ещё не было?
                                      Ответить
                                • Установить можно только все сразу. Нету доступа к кукам как к объекту
                                  Ответить
                            • Попробуй перечислить файлы в каталоге на JavaScript кросс-платформенно.
                              Ответить
                              • > перечислить файлы в каталоге
                                Кинуть HTTP запрос к серваку и готово.
                                Ответить
                                • Иными словами такого способа нет, так?

                                  Кстати, а как кросс-платформенно кинуть стандартный запрос к HTTP серверу?
                                  Ответить
                          • В жаваскрипт хотя бы есть хоть намёк на ООП, а в сишке приходится писать conn_get_account(c).

                            >языки разного уровня
                            Так я тебе и говорю, что си - низкоуровневое говно, за пределами драйверов практически не нужное.
                            Ответить
                            • > за пределами драйверов
                              Да и в пределах драйверов его юзают в основном по традиции.
                              Ответить
                              • А что там щас юзают?
                                Ответить
                                • Кресты местами. Альтернатив особо то и нету, разве что rust. Но он сырой.
                                  Ответить
                                  • Что из крестов ты будешь использовать в написании драйверов?
                                    Виртуальные методы? Шаблоны?
                                    Ответить
                                    • > Виртуальные методы
                                      Не смешно. Посмотри сколько структурок-с-указателями в том же ядре линукса.

                                      > Шаблоны
                                      Вай нот?

                                      Да и RAII ещё никому не повредило.
                                      Ответить
                                      • Раиииии - русское радио
                                        Раиииии - всё будет хорошо!
                                        Ответить
                                      • >Посмотри сколько структурок-с-указателями в том же ядре линукса.

                                        Да, это тот самый "ооп без ооп". Ты вкурсе же что Линус думает про С++, кстати?

                                        >>Вай нот?
                                        Окей, C vs C++ это другая тема, у меня нет тут strong opinion потому что таки да: почти все, написанное на си, можно заменить на плюсы (кроме vla и еще там всяких void * без кастов).

                                        Я возбудился изначально на заявление что си не нужен, и давайте писать всё на JavaScript и PHP.
                                        Ответить
                                        • >>>"Ты вкурсе же что Линус думает про С++, кстати?"

                                          Кого ебёт, что думает Линус?
                                          Ответить
                                          • Не знаю, меня не ебет. Кто это вообще такой?

                                            Меня ебет что думает pedikulez_v3 и syoma.
                                            Ответить
                                            • На самом деле, тебя наверняка больше всего ебет сколько тебе приходит на счет каждый месяц. И сколько из этого приходит за знание си?
                                              Ответить
                                              • >> И сколько из этого приходит за знание си?

                                                В листке из бухгалтерии у меня написана только общая сумма. Там не сказано какой процент из нее приходится на использование каждого из языков или технологий, с которыми я сталкиваюсь.
                                                Ответить
                                                • Ну и сколько % времени ты используешь си?
                                                  Ответить
                                                  • Я не веду подсчетов, но в целом мало конечно: когда нужно посмотреть как что-то реализовано в интерпретаторе или сервере или сделать что-то про родной API операционки.

                                                    Не очень понятно причем тут я, конечно: у меня есть коллеги которые пишут на С++ довольно много, при том что ваканский на JavaScript куда больше. Вот же странные люди
                                                    Ответить
                                                    • >когда нужно посмотреть как что-то реализовано в интерпретаторе или сервере
                                                      Ох блядь. Я бы не сказал, что знаю C, но с этим бы и я справился.

                                                      >пишут на С++
                                                      Мы же про C? Сколько на нем пишут?
                                                      Ответить
                                                      • >>Мы же про C?
                                                        То-есть С++ это не низкоуровневное говно? Только С низкоуровневое говно?
                                                        Ответить
                                                    • Потому что вокансии на C++ более высокооплачиваемые?
                                                      Ответить
                                                      • Судя по всему, они есть, в отличие от C. Я даже в душе неебу, что им платят.
                                                        Ответить
                                                      • Высокооплатил твою мамку.
                                                        Ответить
                                                      • Окей,значит кроме количества вакансий у нас есть еще фактор зарплаты?

                                                        Это очень интересно. Возможно, скоро окажется что еще есть интересные проекты и интересные области, и замаячит на горизонте крамольная мысль что кроме разработки вебсайтов на ангуляре есть еще другие виды деятельности, и некоторые люди ими тоже занимаются.
                                                        Ответить
                                                        • Чем люди лабающие на си лучше стертора лабающего на делфи?
                                                          Ответить
                                            • >>>"Меня ебет что думает pedikulez_v3."

                                              Собственно говоря, сарказм не в жилу. Мнение конечных пользователей должно ебать больше, чем мнение причастных к истокам и навязывающих своё видение с высоты своего положения. К примеру, сейчас всем навязывают нахуй никому не сдавшиеся SSL-сертификаты под угрозой исключения из поисковых систем и присвоения пугающих значков, но это не значит, что все автоматически возлюбили весь этот воздух лишь потому, что так сказал великий "Google".
                                              Ответить
                                              • Мнение конечных пользователей о языках программирования?
                                                Ответить
                                                • Пользователей этих языков, наверно.
                                                  Ответить
                                                  • Вы с педикулёзом пользователи тех языков, которые вы тут обсуждаете?
                                                    Ответить
                                                • >>>"Мнение конечных пользователей о языках программирования?"

                                                  Именно. Потреблять-то эти языки наёмным программистам, а не quasi умным мужикам, случайно оказавшимся в нужном месте в нужное время (твой Линус вполне мог бы мыть унитазы в "Mc'donalds").
                                                  Ответить
                                                  • Конечные пользователи обычно не имеют отношения к программистам.

                                                    >>твой Линус
                                                    Он не мой, и я не согласен с его критикой C++.

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

                                                      Ну, да, про него ведь есть статья в "Википедии".
                                                      Ответить
                                                    • > если выбирать между мнением педикулёза и торвальса
                                                      Блджад! Ну охренеть объективный научный подход подход.
                                                      На самом деле, мнения педикулёза и торвальса одинаково важны. Оба этих мнения можно выбросить в мусорку, если они без нормальных аргументов, а мы не собираемся устраиваться к ним на работу. Каждое из этих мнений необходимо анонимизировать и прочитать вместе с аргументами не зная, кто его написал, чтобы авторитеты не заслоняли истину.
                                                      Ответить
                                                      • Аргументы умножаются на коэффициент, и коэффициент этот зависит от опыта говорящего.

                                                        Например: Борманд считает что большинство лоу-левел кода можно переписать с си на си плюс плюс. Это умножается на тот факт, что у Борманда есть опыт с лоу-левел кодом и си плюс плюс, и потому его мнение мне интересно.

                                                        Кое-кто другой, никогда в жизни не работавший ни в каком проекте, где используется С или С++, и ни один из эти языков не знающий, сообщает мне что си это ненужное говно потому что по нему "меньше вакансий", а в те проекты, где си используется "нас всех все равно не возьмут".
                                                        Такое мнение для меня гораздо менее ценно.
                                                        Ответить
                                                        • Да мне похуй на то что какому-то клоуну из чужой страны с непонятным опытом ценно. Есть какие-то объективные показатели, которые ты все без исключения игнорируешь по принципу "они противоречат моим желаниям - они нинужны". Ну пизди дальше сам с собой. Что на тебя время тратить, что на стертора - один хер.
                                                          Ответить
                                                          • >>Есть какие-то объективные показател

                                                            Какие "объективные показатели"? Количество вакансий на hh.ru?

                                                            Я тебе еще раз говорю что во-первых на первом месте там будет PHP, во-вторых больше всего вакансий там будет вообще не программистских.
                                                            Ответить
                                                            • А какие ты объективные показатели предлагаешь?
                                                              Ответить
                                                              • Я предлагаю выбрать задачу, узнать какие языки используются для ее решения, послушать тех, кто эти языки использовал и их аргументы.

                                                                На самый худой конец можно выбрать фирму или проект, в которые ты хочешь попасть, и посмотреть что они используют.

                                                                Выбирать язык по количеству вакансий в Интернете я считаю неправильным, потому что иначе всем придется идти писать на 1с.

                                                                вот hh.ru за Москву:

                                                                14 971 вакансия «1с»
                                                                1 867 вакансий «java»
                                                                1 316 вакансий «php»
                                                                1 101 вакансия «c++»
                                                                Ответить
                                                                • Объективные - это числовые. Всё остальное сведется к демагогии, в которой ты мастер. Это пока единственное, что у тебя получается.
                                                                  Ответить
                                                                  • Я тебе привел числовые показатели с hh.ru по Москве
                                                                    По ним языки ранжированы так: 1С, Java, PHP, C++.

                                                                    Значит-ли это C++ ненужное говно, PHP более нужное, а 1С это самый нужный и полезный язык?
                                                                    Ответить
                                                                    • Давай объективные показатели - тогда можно будет дальше говорить.
                                                                      Ответить
                                                                    • А это вопрос чем ты на нём собрался заниматься. 1с как я понимаю вообще не для чистых программистов, там нужно иметь какое-то представление о бизнесе.
                                                                      Хочешь писать прикладные программы? Смотри C# как минимум. Ой, что, отсосала твоя сишка?
                                                                      Ответить
                                                                      • Бамп вопросу. Роскомговно, ты где?
                                                                        Ответить
                                                                        • Я тут. Мониторю ГК 24 часа в сутки и 7 суток в неделю, чтобы мгновенно тебе ответить.
                                                                          Ответить
                                                                    • > Значит-ли это C++ ненужное говно, PHP более нужное, а 1С это самый нужный и полезный язык?
                                                                      Значит.
                                                                      Это значит, что C++ - сложное почти ненужное говно, которое никто не осилил, программа на котором будет стоить заказчики таких денег, за которые можно раз в полгода нанимать школьника, который напишет то же самое на PHP. Да, будет говнокод, но зато можно каждые полгода полностью менять требования, что в случае с C++ вылетит в копеечку.
                                                                      Ответить
                                              • >>SSL
                                                TLS

                                                >> под угрозой исключения из поисковых систем
                                                Это не правда

                                                >> нахуй никому не сдавшиеся
                                                Конечно же сдавшиеся, особенно если на сайте есть личный кабинет
                                                Ответить
                                                • >> под угрозой исключения из поисковых систем
                                                  >Это не правда
                                                  В ранке гугля понижает
                                                  Ответить
                                              • > никому не сдавшиеся SSL-сертификаты
                                                С другой стороны, использование TLS почти ничего не стоит ни в плане вычресурсов, ни в плане затрат времени.
                                                Ответить
                                        • Ии что думает Линус?
                                          Ответить
                            • >>хотя бы есть хоть намёк на ООП,
                              Ты не поверишь, но прекрасно можно построить объектно-ориентированные API без ООП.

                              >>, за пределами драйверов практически не нужное
                              никакой язык не нужен, любой из них можно заменить на другой
                              Ответить
                              • Причем тут api?

                                >пук
                                Принеси мне области применения C, наконец уже.
                                Ответить
                                • При том что ООП (довольно плохо реализованное в JS до версии 2015 кстати) далеко не во всех задачах нужно , и довольно спорно

                                  >>Принеси мне области применения C,
                                  Я наверху привел: операционные системы, базы данных, веб-сервера, интерпретаторы языков.
                                  Ответить
                                  • >операционные системы
                                    Низкоуровневое говно. Туда же дрова.

                                    >базы данных, веб-сервера, интерпретаторы языков.
                                    Мизерный спрос.
                                    Ответить
                                    • >>операционные системы
                                      >Низкоуровневое говно. Туда же дрова.

                                      По какому принципу ты определяешь что говно, а что нет?
                                      Почему вебсайты не говно, а операционные системы говно?

                                      >>Мизерный спрос.
                                      Да, спрос меньше чем на JavaScript или 1С.
                                      Я вроде с этим не спорил
                                      Ответить
                                      • Сайты - говно. Оси - низкоуровневое говно. Доволен?

                                        Спрос меньше чем на любой другой язык: жава, c# итд
                                        Ответить
                                        • А что не говно, и по какому принципу ты это определяешь?
                                          Ответить
                                          • Всё говно.
                                            Ответить
                                            • Соглашусь.

                                              Си низкоуровневое говно, javascript выскоуровневое говно.
                                              В целом программирование это говно
                                              Ответить
                                              • В целом программирование не ненужное говно, а вот "си" - да.
                                                Ответить
                                            • Не говно то, на чем лабает Ромка Кашицын (лиспы там всякие, хуиспы)
                                              Ответить
                          • >см про курьера
                            Тогда C - это что-то вроде совковой ракеты, которая еще каким-то чудом летает в космос, но скоро придет маск, который обвалит цены и она отправится на помойку истории.
                            Ответить
                            • Может быть, кажется раст уже пытался это сделать:)
                              Когда API операционок и популярный софт перейдут на раст, можно будет отправить си туда же, куда уже отправился паскаль.

                              Но пока что этого не произошло
                              Ответить
                              • > Но пока что этого не произошло
                                Староверы.
                                Ответить
                      • > Довольно очевидно что джавистов больше, а пхпшников еще больше, а а пишущих на Verilog людей меньше. Что это доказывает?
                        Что программы на джаве писать легче, эффективней и выгодней для бизнеса, а на пхп - ещё дешевле и эффективней, а Verilog почти никому не нужен?

                        Делали языки (те, на которых реально пишут) не для демонстрации в музеях, а для работы. Если PHP бьёт рекорды, значит это как раз таки самый годный язык, который на практике лучше работает, а для других языков придётся долго учиться (5+ лет для Hello, world на C++), и ту же программу писать сложнее и дороже.

                        Или будем сравнивать языки по бесполезным теоретическим критериям вроде средней научной степени программиста?
                        Или назовём те языки, где нужно много пердолиться - хорошими? Чтобы чувствовался труд программиста, а не какая-то питонная фигня с вызовом пары функций, которые делают больше, чем тысяча строк кода на C. Тогда malbolge - идеальный язык.
                        Ответить
                        • Verilog же язык для описания электронных схем, да? Как он сюда прокрался?
                          Ответить
                          • Прокрался в твой анус, проверь.
                            Ответить
                          • Пример языка от РКГ, который, мягко говоря, не стоит на первом месте по использованию.
                            Ответить
                            • Роскомговна?
                              Ответить
                            • "не стоит на первом месте по использованию" где?
                              Ответить
                              • В мире среди всех языков.
                                (Конечно, в задачах, где нужен именно Верилог и где по каким-то причинам *ХДЛ нельзя использовать, Верилог будет на первом месте, но искусственные топы никого не волнуют.)
                                Ответить
                                • >>В мире среди всех языков.
                                  Мне не очень интересна средняя температура по больнице.

                                  Для меня это всё равно что сравнивать профессии по популярности. Самая популярная профессия далеко не программист;)

                                  Думаю что больше всего людей, называющих себя "программист" в моем городе пишут на PHP и 1С.

                                  Это не значит что мне нужно срочно переквалифицироваться в 1С программисты.
                                  Ответить
                                  • > Мне не очень интересна средняя температура по больнице.
                                    Выходит книга рекордов Пиваса, где каждый первый - победитель. Один стометровку быстрее всех пробежал на ходулях с собакой на руках (потому, что никто больше такой хренью не страдал), другой - плюнул с трёх метров в тарелку с изображением лесов Австралии.

                                    > Это не значит что мне нужно срочно переквалифицироваться в 1С программисты.
                                    Конечно, не значит. Это значит, что 1C более востребованный, чем всякие бесполезные сиплюсы и хаскели, сколько бы пейсатели на них ни кукарекали.
                                    Ответить
                                    • > Выходит книга рекордов Пиваса, где каждый первый - победитель.
                                      Сук :)))
                                      РКГ, ты ответь на такой вопрос: вот сидит какой-нибудь стертор на делфи. Вот ты сидишь на си. Чем ты его лучше?
                                      Ответить
                                      • >>. Вот ты сидишь на си
                                        я не понимаю что такое "сидеть на языке". Я использую более одного языка
                                        Ответить
                                    • >>. Это значит, что 1C более востребованный, чем
                                      чем javascript тоже, например (см пример с вкансиями)
                                      Ответить
                                      • Ожидаемо. Язык для серьёзных программ vs язык для рисования часиков в вэбе.
                                        Ответить
                        • >Или назовём те языки, где нужно много пердолиться - хорошими?
                          Это же мечта пердолика. Поэтому у них и перл хороший, хотя вот это дейстительно говнище из прошлого века.
                          Ответить
                        • >>и выгодней для бизнеса
                          нет, это значит что задач для бизнеса, которые проще решить на PHP больше, чем задач которые проще решить на C.

                          Есть бизнес написания операционных систем.
                          Есть бизнес написания вебсайтов.
                          Есть бизнес продажи гамбургеров.

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

                          >>Или будем сравнивать языки по бесполезным теоретическим критериям
                          Языки нужно сравнивать с учетом конкретной задачи, иначе это сравнение бессмысленно.

                          Разумеется, вебсайт лучше написать на PHP чем на ассмеблере.
                          Разумеется, загрузчик в MBR лучше написать на ассемблере, чем на PHP.
                          Ответить
                          • >нет, это значит что задач для бизнеса, которые проще решить на PHP больше, чем задач которые проще решить на C.
                            Ну! А какие задачи проще решить на C?

                            >нет, это значит что задач для бизнеса, которые проще решить на PHP больше, чем задач которые проще решить на C.
                            Нужны, но писать за деньги тебе их не дадут. Без тебя разберутся.
                            Ответить
                            • >>Ну! А какие задачи проще решить на C?
                              Тебе правда еще раз перечислить? Ты кащенит может быть?

                              >>Нужны, но писать за деньги тебе их не дадут. Без тебя разберутся.
                              Вот с этого и надо было начинать: си используется в тех проектах, куда тебя не берут, а PHP в тех, куда тебя берут.

                              Потому разумеется для тебя PHP более ценен чем си.
                              Ответить
                              • А был уже ответ?

                                >куда тебя не берут
                                И тебя тоже.

                                >для тебя
                                То же самое.

                                Это реинкарнация кого? Кегдана?
                                Ответить
                                • Ты понятия не имеешь что я пишу, и где. Но это и не важно, потому что кажется ты уже обозначил свою позицию: области, в которых не разбираешься ты называешь "ненужным говном".
                                  Твоя позиция мне ясна.
                                  Ответить
                                  • Так расскажи нам, мы тебя с удовольствием послушаем.
                                    >области, в которых не разбираешься ты называешь "ненужным говном".
                                    Технологии, на которые нет спроса, я называю ненужным говном. Я понятия не имею как ты пришел к своему выводу. Наверно, тебе просто очень хотелось к нему прийти.
                                    Ответить
                                    • >>Технологии, на которые нет спроса, я называю ненужным говном

                                      Каким образом ты определяешь спрос?
                                      Ответить
                                      • Ты дебил или придуриваешься? На это я уже отвечал в треде, перечитай еще раз. Повторяться не буду.
                                        Ответить
                          • > Мы смотрим на вакансии, узнаем что гамбурегов требуется больше, чем операционных систем, и на основе этого делаем вывод что операционные системы не нужны.

                            Но ведь так и есть! Только соль в том, что надо было добавить слово "новых".
                            Мы смотрим на вакансии, узнаем что новых гамбурегов требуется больше, чем новых операционных систем, и на основе этого делаем вывод что новые операционные системы не нужны.

                            Один гамбургер нельзя перепродать миллионам покупателей, поэтому свежие гамбургеры всегда нужны. ОС можно сделать один раз и продавать всем.

                            > Языки нужно сравнивать с учетом конкретной задачи, иначе это сравнение бессмысленно.
                            Тогда языки становятся эквивалентными, ведь для каждого языка можно выдумать конкретную задачу. С помощью HQ9+ можно эффективно и кратко решить четыре задачи, в которых этот язык будет лучше всех. И что теперь? Это как американская толерантность, где в компании обязательно нужен один сишник, один жсник, один брейнфаковец и один прогарммист HQ9+, иначе нетолерантно.

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

                              >>Тогда языки становятся эквивалентными,
                              еще раз: надо плясать от задачи

                              Сначала выбирается проект, затем под него выбираются языки.

                              Платят же не за использование языка, а за создание проекта.

                              >>Язык решает только одну задачу - говно.
                              Не говно, если других языков для этой задачи нет.

                              С, кстати, решает более одной задачи: он используется более чем в одной области.
                              Ответить
                              • > Платят же не за использование языка, а за создание проекта.
                                Да. И, соответственно, выбирается самый уместный язык под задачу. Берём большую долю реальных задач и смотрим, какие языки хорошо подходят. В итоге получаем список самых удобных в использовании языков для реальных задач.

                                Всякие единичные и редкие задачи в расчёт не берём потому, что (а) соответствие язык-задача для них статистически мало значит и (б) опыт таких проектов практически нельзя воспроизвести, там требуются люди, знающие 100500 разных языков (для которых не важно их сравнение), дело там не в конкретных языках, а в постановке задачи, архитектуре, расчётах, разведывании пути, по которому пойдёт проект.

                                >>Язык решает только одну задачу - говно.
                                > Не говно, если других языков для этой задачи нет.
                                На то был первый пункт:
                                >> Язык решает одну задачу, но идеально - годный язык.
                                Если язык решает одну задачу и не делает это идеально, то это не просто говно, это жуткое говнище. От универсальной питушни можно ожидать среднего уровня, но специализированный инструмент либо делает свою задачу качественно, либо выбрасывается к хренам.
                                Ответить
                    • Сишникам некогда работать — сишники пишут котъ.
                      Ответить
                  • > Linux, Apache, PHP, MySQL.
                    > Угадай, на чем написаны эти четыре предмета?
                    Да хоть на XML. В позапрошлом веке книги вообще при свечах писали пером. Технологии, проверенные временем.
                    Чего комментарии на новомодном ПК строчите, давайте пером пишите.
                    Ответить
                    • Воткнул перо тебе в анус.
                      Ответить
                    • Но мы же не отказываемся от использования серверов, написанных на "C".
                      Ответить
                      • Не отказываемся, т.к. они уже написаны.
                        Но если решим писать новые - посмотрим, на чём пишут серверы сейчас.
                        Ответить
                        • 1023, nginx на джаве не нужен. Но не все пишут nginx. Далеко не все.
                          Ответить
                    • Какой из этих проектов написан в позапрошлом веке?
                      Ответить
                      • Никакой. Их вообще не было. Ведь проверенные инструменты "свеча" и "перо" такое сделать не позволяют.
                        Ответить

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