1. JavaScript / Говнокод #27998

    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
    function* map<T, R>(a: T[], f:(i: T) => R)
    {
    	for (const v of a) yield f(v);
    }
    
    function main()
    {
    	let count = 0;
    	for (const v of map([1, 2, 3], (i) => { count++; return i + 1; }))
    	{
    		print(v);
    	}
    
    	assert(count == 3);
    }

    а ты, а ты так можешь на своем говно-с++ компиляторе ваять?

    Запостил: ASD_77, 07 Февраля 2022

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

    • результат работы

      C:\temp>rem C:\dev\TypeScriptCompiler\__build\tsc-release\bin\tsc.exe --emit=jit --shared-libs=C:\dev\TypeScriptCompiler\__build\tsc-release\bin\TypeScriptRuntime.dll C:\temp\1.ts  
      
      C:\temp>C:\dev\TypeScriptCompiler\__build\tsc\bin\tsc.exe --emit=jit --opt --shared-libs=C:\dev\TypeScriptCompiler\__build\tsc\bin\TypeScriptRuntime.dll C:\temp\1.ts 
      2
      3
      4
      Ответить
    • а кто хорошо попросит - получит дмпик
      Ответить
    • могу.
      Ответить
    • #include <iostream>
      #include <ranges>
      
      int main()
      {
          using std::views::transform;
          
          auto count = 0;
          auto numbers = {1, 2, 3};
          
          for(auto i:  numbers | transform( [&](auto x){ ++count; return x+1; } ) )
          {
              std::cout << i << '\n';
          }
      }
      Ответить
      • блядь что это за палочка? гоператор перегруженный чтобы как пайп выглядить?
        Ответить
        • > гоператор перегруженный чтобы как пайп выглядить

          Это кажись C++20.
          Я не фанат крестухи и значков, но по-моему няшно.
          Наконец-то украли что-то хорошее.

          В идеале конечно лолжно быть конь-сиськентнее
          {1, 2, 3}  | transform( [&](x){ ++count; return x+1; } ) | println
          Ответить
          • > но по-моему няшно.

            А по-моему херня
            Ответить
            • А мне нравитяся, можно писать:
              "my_file.txt"
              | read_all
              | process
              | ([](auto x){skhoronit("output.txt", x);});


              Постфикс!
              Ответить
            • Стандартизатор хватается за сердце. Его уносят.
              Ответить
          • это хуйня. views на то и views что трансформируют данные, тут петушни не нужно. для подобного есть копирование в острим используемое со времен 98
            #include <ranges>
            #include <iostream>
            int main(void)
            {
            	auto count = 0;
            	auto numbers = {1, 2, 3};
            	auto view = numbers | std::views::transform([&](auto x) -> decltype(x) { ++count; return x + 1; });
            	std::copy(std::begin(view), std::end(view), std::ostream_iterator<int>(std::cout, " "));
            
            	return 0;
            }

            https://godbolt.org/z/c6erz864r
            Ответить
            • ссылка на годболт к тому что компилится в честный цикл
              Ответить
      • а где "елды" ? как она тут представлена ?
        Ответить
      • а вообще скажи спасибо кто у вас "ranges" завезли.. "вот если бы еще концепты доделали"..
        Ответить
    • Говно какое-то нечитаемое, какие-то лямбды-хуямбды, генереторы, мапы-хуяпы.

      То ли дело "Си":
      #include <stdio.c>
      
      int main(void)
      {
          for (int i = 2; i <= 4; ++i) {
              printf("%d\n", i);
          }
          return 0;
      }
      Ответить
      • что это такое "%d\n"
        Ответить
        • Строка.
          Ответить
          • это я вижу. а "почему <=4 а не <5" а почему "++i" а не "i++" или "i = i + 1". а что будет если я напишу "%h\n\r". и кто меня остановит?
            Ответить
            • > почему "++i" а не "i++"
              i++ нипирфомансно и так пишут только анскильные лалки.

              > что будет если я напишу "%h\n\r". и кто меня остановит?
              Никто. Одной и основных парадигм С является «не мешай стрелять себе в ноги». Малоизвестный факт, что программисты на С являются pro-choice и поддерживают легализацию эфтаназии.
              Ответить
              • Есть такое наивное представление, что другие языки якобы мешают стрелять себе в ноги.
                На самом деле они мешают ходить на улицу без шапки (потому что программисты на других языках недостаточно умны чтобы принимать такие решения) а отстрелить себе ногу можно и в bash
                Ответить
              • > i++ нипирфомансно и так пишут только анскильные лалки.

                Поэтому сишники презирают C++? Надо было называть ++С?
                Ответить
              • я хоть и крестовик, но под каждым словом подписываюсь
                Ответить
              • рзница между i++ и ++i только в разных временах запихивания результата в стэк.... а так одно и тоже
                Ответить
                • Да, если результ инкремента не используется, однохуйственно. Но если конпелятор не умеет в оптимизации может выйти неоптимальный код.

                  Я это прочитал в статье про разработку под какую-то древнюю платформу, там не рекомендовалось использовать постинкремент.

                  Какая оптимизация )))
                  Ответить
                • > рзница между i++ и ++i только в разных временах запихивания результата в стэк.... а так одно и тоже

                  И это говорит программист на С++.

                  Hint: перегрузка операторов.
                  Ответить
                • > одно и тоже
                  #include <iostream>
                  
                  int main()
                  {
                      int i = 5;
                      std::cout << ++i << '\n';
                      
                          i = 5;
                      std::cout << i++ << '\n';
                      
                  }
                  
                  6
                  5

                  Хм...

                  #include <iostream>
                  #include <format>
                  
                  int main()
                  {
                      char drive = 'C';
                      std::string format1 = std::format("format {}: /P:1 /X", ++drive);
                      
                           drive = 'C';
                      std::string format2 = std::format("format {}: /P:1 /X", drive++);
                      std::cout << format1 << '\n' << format2 << '\n'; 
                      
                      std::string& format = format2;
                      // system(format.c_str());
                      
                  }
                  
                  format D: /P:1 /X
                  format C: /P:1 /X
                  Да, одно и то же. Никаких проблем.
                  Ответить
        • >что это такое "%d\n"

          чувак, как ты умудрился дожить до седых мудей, и ниразу в жизни не столкнуться с printf?
          У тебя в школе или инстике сишки не было?
          Ответить
          • Он скорее о том, что это тоже говно какое-то нечитаемое, о котором знать надо. Паттерны-хуяттерны.
            Ответить
            • Кстати о нечитаемом говне. Каждый раз, когда я вижу =>, я пытаюсь понять, что с чем сравнивается.
              Ответить
            • В смысле надо почитать мануал по printf?
              Ответить
            • Всё в мире можно назвать говном нечитаемым, о котором знать надо.

              Когда ты не умеешь читать, тоже нихуя непонятно. Именно поэтому я за иероглифы.
              Ответить
              • Ойй, простие, я имел ввиду пиктограммы.
                Ответить
              • Именно поэтому я против чтения.
                Ответить
              • Совершенно верно.
                Взять, к примеру, воть такой код:
                <?php echo 'Привет мир!'; ?>

                Почему php слева есть, а справа нет?
                Зачем они нужны если уже есть точка с запятой?
                Что значит "эхо"? Эхо обычно отражает что-то (дальнее эхо, ближнее эхо), а тут какое?

                Пиздец заебный язык, вообще не верю, что кто-то может его реально выучить
                Ответить
                • Взять, к примеру, вот такой код:
                  #include <iostream>
                  using namespace std;
                   
                  int main() 
                  {
                      cout << "Hello, World!";
                      return 0;
                  }

                  Что за странная конструкция "main" с фигурными скобками? Почему нельзя просто написать "коут ёлочка привет мир"?
                  Что, собственно, значит "коут"? В англо-русском словаре такое слово отсутствует.
                  Зачем нужны два знака "меньше"? Почему не написать "привет мир" сразу после "коута"?
                  Какую смысловую нагрузку несут в себе первые две строки этого кода? Зачем мне инклюдить какой-то "иострим" и обозначать юзинг какого-то "намеспаца"? Почему я не могу просто написать "коут привет мир"?
                  Зачем ретурнить какой-то ноль?

                  Пиздец заёбный язык, вообще не верю, что кто-то может его реально выучить. Поэтому я за PHP.
                  Ответить
                  • По этому я за "PHP":
                    Привет!
                    Ответить
                  • main()
                    {puts("Привет!");}


                    Вот:
                    https://ideone.com/DjArdD

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

                        main — это точка входа в программу на Си, но точка входа находится в __libc_start_main.

                        Подумайте об этом, в этом нет смысла! С чего бы программе печатающей "Привет" начинаться с __libc_start_main?

                        В этом нет смысла!

                        Но что ещё более важно, вы должны спросить себя, а при чём тут данное дело? Да ни при чём, леди и джентльмены, это не имеет никакого отношения к данному делу. В этом нет никакого смысла!

                        Взгляните на меня, я адвокат, защищающий «PHP», и я веду речь о точке входа в программу на Си. Какой в этом смысл? Леди и джентльмены, я несу бессмыслицу, во всём этом вообще нет смысла!

                        Итак, запомните, когда вы, сидя в этой комнате, взвешиваете и сопрягаете «main» с фигурными скобками, есть ли в этом смысл? Нет, в этом нет смысла!

                        Итак, леди и джентльмены, если точка входа начинается в __libc_start_main, вы обязаны использовать «PHP».
                        Спасибо, ваша честь, я закончил.
                        Ответить
                        • Зависит от реализации библиотеки (даже не компилятора). В какой-нибудь другой библиотеке настоящая точка входа может называться не __libc_start_main либо она может вызывать не main.

                          Например, рантайм для подсистемы GUI Винды может требовать наличия WinMain в твоей программе, а main он будет игнорировать.

                          Но под гуй новичку вообще тяжело писать: какие-то коллбеки, какая-то обработка сообщений...
                          Ответить
                    • Попробуй на рубях
                      Ответить
                    • puts не будет без include работать в общем случае
                      Ответить
                      • Вообще программировать на няшной без прототипов стрёмно. Мой код работает только потому, что размер указателя на строку совпал с размером int, который в синтаксисе K&R выводился автоматически.

                        Хотя... тут даже совпадение не нужно. Вызов пихает указатель и puts ожидает указатель.
                        Ответить
                        • Но на PHP ты всё равно не перейдёшь.
                          Ответить
                        • Верно.

                          Потому я стараюсь в коде не использовать никакие типы данных, кроме int.
                          Это позволяет мне обходиться без .h файлов, то есть без дублирования кода.

                          Думаю, запретить все другие типы на уровне кодстайла в компании.
                          Ответить
                          • > Потому я стараюсь в коде не использовать никакие типы данных, кроме int.

                            Какой Б )))
                            Ответить
                          • У меня в "Assember" нет никаких типов
                            Ответить
                            • А как же, byte, word, dword, qword?
                              Ответить
                              • И ещё ptr
                                Ответить
                              • Это не "типы", это какие-то спецификаторы для мнемоник
                                Ответить
                                • А когда я объявляю
                                  x dd 0

                                  а потом пишу
                                  mov x, [ebx]
                                  и он понимает что надо мувать dword это разве не означает, что x имеет тип dword?
                                  Ответить
                                  • Блин, масма/тасма под рукой нет. ЕМНИП в них такое работало
                                    Ответить
                                  • Для фасма роботает
                                    Ответить
                                  • mov [x], eax
                                    Ответить
                                    • И mov [x], 42
                                      Ответить
                                      • > И mov [x], 42

                                        А если
                                        mov eax, x
                                        mov [eax], 42

                                        То он как-нибудь запомнит, что в eax вносился адрес на дворд, и поэтому 42 надо туда писать как дворд?
                                        Ответить
                                        • Нет, при такой адресации нужно явно указывать, сколько вешать в байтах.
                                          Ответить
                                  • > и он понимает что надо мувать dword это разве не означает, что x имеет тип dword?

                                    Это какая-то препроцессорная хуйня, а не "тип".
                                    Ответить
                                    • Кстати в "GAS" такой хуйни нет. Там директивами типа ".byte", ".float", ".double", ".string", ".string8", ".string16", ".2byte", ".4byte", ".8byte", ".hword", ".short" ".long", ".int", ".word" https://sourceware.org/binutils/docs/as/Pseudo-Ops.html ... можно нахуярить каких-то байтиков, но чтобы пропихнуть адрес тех байтиков в инструкцию, надо поставить перед нахуяренными байтиками метку, в инструкцию эту метку упомянуть, и в мнемонике явно упомянуть размер хуйни, если там это важно
                                      Ответить
                                      • Ну вот, значит, в GAS типов нет, а в ассемблерах, основанных на масмовском синтаксисе, типы есть.
                                        Ответить
                                        • Называть подобную хрень "типом" можно только с рядом оговорок. Это скорее неявная метка с подсказкой ассемблеру, что по этой метке хуйня с таким-то размером в байтах.

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

                                              Ну например как мне такой "тип" выделить на стеке? Это не "тип", это какой-то узкозаточенный костыль для того, чтоб не прописывать явно количество байт в мнемониках при записи в/из памяти
                                              Ответить
                                              • > Ну например как мне такой "тип" выделить на стеке?
                                                fld qword [F] 
                                                fstp qword [F]
                                                Чем не стек?
                                                Ответить
                                              • Что значит "выделить тип нас теке"?
                                                Ответить
                                                • В си это выглядит так
                                                  int main(void)
                                                  {
                                                    int a = 666; // я выделил int на стеке и присвоил туда 666
                                                    printf("%d\n" a);
                                                    return 0;
                                                  }


                                                  Можно еще массив так выделить.

                                                  Где в ассемблере "типы" для хуйни, которая существует в стекфрейме "функций"?
                                                  Ответить
                                                  • > я выделил int на стеке
                                                    Нет, ты объявил локальную переменную, она может быть и в регистре.

                                                    В ассемблере нету функций в таком понимании как в Си, со своим скоупом. Там ручками на стеке всё выделяется.

                                                    Но зато в фасме есть локальные метки и переменные, объявляются через local, область видимости — тело макроса.
                                                    Ответить
                                                    • > Нет, ты объявил локальную переменную, она может быть и в регистре.

                                                      А если массив из int размером в 300 элементов?
                                                      Ответить
                                                      • Если регистр достаточно разработан... то в него и банка сгущёнки влезет.
                                                        Ответить
                                                    • > В ассемблере нету функций в таком понимании как в Си, со своим скоупом. Там ручками на стеке всё выделяется.

                                                      То есть в Сишке таки есть примитивный stack-based hardware-accelerated сборщик мусора.

                                                      В принципе если писать код без маллоков, или в начале аллоцировать сколько нужно, то память течь не будет.

                                                      Хотя в systemd вовсю юзают атрибут ((cleanup(...))).
                                                      Ответить
                                                    • > В ассемблере нету функций в таком понимании как в Си, со своим скоупом

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

                                                      Но это всё говно убогое в любом случае. https://github.com/project-everest/vale - вот например херня для верификации ассемблера
                                                      Ответить
                                                      • https://www.cs.cornell.edu/talc/releases.html

                                                        The current implementation of Typed Assembly Language, TALx86, is based on Intel's IA32 architecture. This implementation extends the theoretical calculi described in our papers and provides support for sums, arrays, references, recursive types, subtyping, type tagging, and modules, among other features. Our distributions contain our Objective Caml source code and executables for the following:
                                                        * TAL tools including a type-checker for the assembly language.
                                                        * Popcorn: A prototype compiler for a safe C-like language.
                                                        * SCHEME--: A prototype compiler for a subset of the scheme language (written in Popcorn).

                                                        Опять это окамлеебство. Почему эти компутер сцаентисты так полюбили семейство ML язычков? Говно же
                                                        Ответить
                                                        • https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/coqasm.pdf
                                                          Coq: The world’s best macro assembler?

                                                          Abstract
                                                          We describe a Coq formalization of a subset of the x86 architecture.
                                                          One emphasis of the model is brevity: using dependent types, type
                                                          classes and notation we give the x86 semantics a makeover that
                                                          counters its reputation for baroqueness. We model bits, bytes, and
                                                          memory concretely using functions that can be computed inside
                                                          Coq itself; concrete representations are mapped across to math-
                                                          ematical objects in the SSREFLECT library (naturals, and inte-
                                                          gers modulo 2n) to prove theorems
                                                          Ответить
                                                      • > в этом куске, ограниченной такими-то директивами доступ к адресам по смещению относительно ESP в таком-то диапазоне надо рассматривать как 16-битные переменные
                                                        a equ word[esp]
                                                        Ответить
                                                        • Нет, это недостаточно гибко. Надо чтобы например "вот там-то и там-то относительно ESP мы интерпретируем как 16-бит, а вот там как 8-бит переменные"
                                                          Ответить
                                                          • a equ word[esp]
                                                            b equ byte[esp+2]
                                                            Ответить
                                                            • А диапазоном задать можно? Может у меня там массив из 10 элементов размером 16 бит на стеке, и я не хочу под каждую по переменной
                                                              Ответить
                                                              • В тасме/масме был синтакс a[index] (раскроется в word[esp][index]) в фасме только одни квадратные скобочки, не могу ничего придумать
                                                                Ответить
                                                  • > я выделил int на стеке
                                                    ты выделил это в .data :p
                                                    Ответить
                              • Ещё есть tbyte для плавающего питуха.
                                Ответить
                      • Можно написать
                        int puts(const char*);
                        и течь
                        Ответить
                        • Я как-то приносил историю про первый юникс, в котором не было SDK с .h файлами, а сигнатуры функций печтатались в обычной книжке.

                          И программист должен был их оттуда брать
                          Ответить
                          • Видимо препроцессор ещё не успели завезти?
                            Ответить
                    • То ли дело Forth:
                      .( Hello!)
                      Ответить
                    • > main() {puts("Привет!");}

                      Так это же православная СБишка.
                      Потому и выглядит заебато.
                      Ответить
                      • Посмотрел...

                        Единственый тип данных в бишке — мышиное слово, которое может интерпретироваться как целый питух, как символ и как указатель (значит, длинные указатели бишка поддержать не сможет). Отсюда и «автовывод» в инт у K&R, и неявные касты типов (целое <-> символ, целое <-> указатель).

                        А вот BCPL и CPL, считающиеся предшественниками бишки, на неё совсем не похожи. Они даже на Алгол непохожи.
                        Ответить
                        • > Единственый тип данных в бишке — мышиное слово, которое может интерпретироваться как целый питух, как символ и как указатель

                          Да.
                          И этот язык ГОРАЗДО ближе к тому что обсуждается выше:
                          >> Потому я стараюсь в коде не использовать никакие типы данных, кроме int.
                          >>У меня в "Assember" нет никаких типов

                          То есть на самом деле высокоуровневый, портируемый ассемблер это «B».
                          Есть машинный регистр, и все значения в программе неявно сводятся к нему.

                          Там всё просто и понятно: нет никаких опциональных int64_t и всякой дрисни вроде int_fast64_t.
                          И x86 говнища вроде cbw, cwd, cdq; mov dword ptr или fld dword[ref] там тоже нет.
                          Ответить
                          • А как тогда байт из структуры достать? Только масками и сдвигами?
                            Ответить
                            • Так же как и бит из байта. Масками и сдвигами.
                              Ответить
                              • Какой хардкор )))

                                Зато всё всегда выравнено на мышиное слово.
                                Ответить
                                • Мышиное слово хоть 64 бита в длинном режиме или как всегда в gcc?
                                  Ответить
                                  • До пришествия инцела же словом всегда было именно машинное слово.
                                    Ответить
                            • > А как тогда байт из структуры достать? Только масками и сдвигами?

                              Ява-скипетры же вытаскивают баты & 0xFF, а их сердце даже человеку пересаживают.
                              Ответить
                      • в С# main() уже писать не надо
                        Ответить
                        • А как выглядит минимальная программа на C#, которая, например, выводит строку «Привет»?
                          Ответить
                        • Конечно, нужно писать класс и внутри него public static void Main
                          Ответить
                    • __cdecl printf(...);
                      main(void)
                      {
                          printf("Hello, world!\n");
                          return 0;
                      }
                      Ответить
                      • > return 0;
                        Зачем? Зачем?
                        Ответить
                        • Для поддержки старых стандартов, проверь на чём-нибудь в духе С89.

                          З.Ы. Вот реально не понимаю, что выигрывает конпелятор, возвращая мусор из main. Это не какой-нибудь горячий цикл ведь.
                          Ответить
                          • Откуда глупому компилятору знать замыслы гениального программиста? Может, он уже положил в стэк всё, что нужно, и вернётся как раз то, что он хочет. Так что не дело это, компилятору делать то, что от него не просили.
                            Ответить
                            • Почему так делали старые конпеляторы -- понятно. И, в принципе, для других функций они и сейчас так делают и это помогает в оптимизации.

                              Потом зачем-то объявили return в main опциональным (нахуя?) Но тот же гцц строго следует стандарту и делает его опциональным только в новых стандартах, а в старых продолжает возвращать мусор.

                              Т.е. код конпелятора сложнее, чем мог бы быть, если бы он просто всегда считал его опциональным. И кроме как желанием отстрелить ногу программисту это сложно объяснить.
                              Ответить
                              • каждый раз когда вижу когда кто-то не пишет в main return хочется кодописателю пальцы выдрать.
                                хуже только void main...
                                Ответить
                                • Хуже только public static void main.
                                  Ответить
                                  • Звучит как заговор на стабильную работу программы.
                                    public — это чтобы продукт популярным был.
                                    static — это чтобы в компании реорганизаций и сокращений не было.
                                    void — это чтобы проекту постоянно денег давали, как в бездонную дыру.
                                    Ответить
                                  • friend int main(void)
                                    Ответить
                                    • Я целый день ходила по разным инстанциям и мне везде улыбались. Думаю: надо же, какие приветливые люди! А оказалось, что я платье надела наизнанку
                                      Ответить
                                      • ты заебал своей нейросетью весь сток забивать
                                        Ответить
                                        • Я думаю, что Тайсон победил бы Федора Емельяненко, потому что Тайсон откусывает уши
                                          Ответить
                                        • Ecjlu 6bl y me69 6bljla xomb kanejlbka mo3ra, mbl 6bl noH9jl, 4mo 3to He Heupocemb.
                                          Ответить
                                          • В августе мухи делятся на два вида – отмороженные и те, которые кусаются
                                            Ответить
                                          • Классический чат-бот, который выбирает готовые цитаты поиском по ключевому слову или псевдослучайно?
                                            Ответить
                                            • Ленский вышел на дуэль в панталонах. Они разошлись и раздался выстрел
                                              Ответить
                                        • Семь бед — один ответ:
                                          govnokod.ru##.entry-comment-wrapper:has(> .entry-info > .entry-author > a[href="https://govnokod.ru/user/26089"])
                                          Ответить
                                          • я специально оставил вас одних, чтобы вы убедились, кто истинное посрамление сия вертепа. Видите теперь, как всё вышло? И даже такой дырявый утырок, как Снаут, уже блокирует петухов, устав от их спамминга. Как поэтично! Пойду, просрусь.
                                            Ответить
                  • > Что, собственно, значит "коут"? В англо-русском словаре такое слово отсутствует.
                    > Зачем нужны два знака "меньше"? Почему не написать "привет мир" сразу после "коута"?

                    Вот мнение адекватного, незашоренного плюсами человека.
                    Зачем нужны два знака «меньше»? Зачем нужны два «двоеточия»? Зачем? Зачем?

                    >Что за странная конструкция "main" с фигурными скобками?

                    Кстати «B» был консистентнее. Как мы все знаем операторные скобки { ... } в си-подобных языках опциональны.
                    В «B» можно было опускать их и для функций если их тело состояло из одного гетигпа
                    add3(a) return (a+3);
                    Для этого нужно было написать return (...);
                    Но в Сишке, к сожалению, эту чудесную фичу похерили.
                    Осталась только малополезная возможность оборачивать возвращаемое значение круглыми скобками.

                    Короче въебал плюс.
                    Ответить
                  • > using namespace std
                    какой анскилл
                    Ответить
                    • Ротоёб прав. С эстетической точки зрения cout — омерзительное название.

                      Ещё более омерзительно писать джва джвоеточия std::cout.

                      А wcout подсказывает нам где место крестов. У параши.
                      Ответить

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