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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    int main()
    {
    	asm(
    		mov eax, 2
    		mov ebx, eax
    		mul eax
    		add eax, ebx
    		mov ecx, 16
    		mov ebx, 8
    		lea ebx, ptr [ebx * 16 + ecx + 1]
    		mov ptr [ebx], eax
    		add ptr [ebx], eax
    	);
     
    	printf("eax: %d\n", eax.value);
    	printf("mem:145 = %d\n", *(int*) &a_memory[145]);
     
        return 0;
    }

    На тему ассемблера в пхп
    https://ideone.com/XK7ZQd

    Запостил: cykablyad, 22 Августа 2017

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

    • https://ideone.com/57cKlj
      Ответить
      • Заготовка для JIT-компилера?
        Ответить
      • столько new и ни одного delete

        чому не на соловьиной буст::спирит?
        Ответить
      • Конечно в плюсах ты пока слабоват.
        Ответить
        • На плюсах пишу раз в год по праздникам, че еще можно было ожидать
          И я говорил, что я их не умею
          Ответить
          • > На плюсах пишу ... по праздникам
            Так почему бы не устраивать себе небольшой праздник каждый день?
            Ответить
            • Так можно и крестоблядью стать
              Ответить
              • Кресты - лучший язык программирования евар. Нет смысла их не программировать на них.
                Ответить
                • Я на турбо поскале пишу
                  Ответить
                • Ты б еще сказал, что пхп - лучший язык программирования евар.
                  Кресты это убогое говно, выросшее из препроцессора для сишки, написанного Страуструпом. Этот язык-препроцессор с каждым годом все сильнее и сильнее обрастал всяким говном и кривыми подпорками, и в 2017 году мы имеем на руках какое-то кривоуебанское говно, претендующее на язык высокого уровня, но при этом с ручным управлением памятью и с все теми же тупыми уязвимостями родом-из-сишки. И это лучший язык? Да ты охуел просто!
                  Ответить
                  • https://youtu.be/dDm8odp8PnA?t=1682
                    Ответить
                    • Бред какой-то. На самом деле, когда-то я считал также, как ты, что плюсы не нужны, и писал на сишечке. Потом я узнал семантику конструирования/деконструирования объектов и RAII, теперь на сишечке писать ну никак не хочется.

                      Мои мысли про классы строк из презентации: велики неизбежны, потому что "строка" это на самом деле 3 разных абстракции (предположим, что все неюникодные кодировки нинужны):
                      1. Последовательность графических символов. Это то, что мы, люди, понимаем под строкой.
                      2. Последовательностью юникодных код-поинтов, которые кодируют последовательность графических символов.
                      3. Последовательность байтов, которая кодирует последовательность код-поинтов.

                      То, что включено в стандартные библиотеки, обычно живёт на уровне 3 и в лучшем случае немного захватывает уровень 2. Пока у нас не будет удобного апи для работы со всеми уровнями, люди будут писать велики.
                      Ответить
                      • Блин, никто вообще не спорит, что в плюсах больше возможностей. Но язык Си не претендует на роль высокоуровневого языка общего назначения, а C++, построенный на Си-фундаменте, претендует, но фундамент - говно.
                        http://vxheaven.org/bhc/bhc15/bhc15-07.txt
                        Тоесть, смотрите, как ведет себя настоящий, состоявшийся, знающий себе цену программист? А он ведет себя очень просто: плюсы - говно, но и си - говно, кричит он громко, ничуть не смущаясь подходящих к нему слева - одептов плюсов, а справа - почетателей битоебского низкоуровневого язычка типа Си
                        Ответить
                        • Язык ни на что не претендует. Он просто есть. Кто что там кукарекает — это другое дело. Я вот не знаю, что означает "высокоуровневый" язык. В любом случае, язык позволяет оперировать абстракциями, которые невозможно выразить в той же жабе, к примеру.

                          Язык сложный? Много знать надо? Да, пожалуй. Делает ли это разработку более эффективной? Да, определённо. В нормальной плюсовой программе о памяти нужно беспокоиться довольно редко.

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

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

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

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

                            Все языки одинаково мощные, если рассматривать их с точки зрения эквивалентности машине Тьюринга. Брейнфака хватит всем.

                            >Язык сложный? Много знать надо? Да, пожалуй. Делает ли это разработку более эффективной? Да, определённо.

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

                            >В нормальной плюсовой программе о памяти нужно беспокоиться довольно редко.

                            В нормальных плюсовых программах (вроде браузера Chrome, Webkit, Firefox) периодически находят уязвимости, позволяющие выполнить произвольный код . Т.е. язык позволяет совершать такого рода ошибки. На Java наверное тоже можно, но для этого надо специально себе прицелиться в ногу и выстрелить (sun.misc.Unsafe или через JNI сотворить некую хуйню), а плюсы сами в ноги тебе стреляют время от времени.
                            Ответить
                            • > Считаю что лучше не ебаться со сложным языком (имеется ввиду случай, когда сложность языка заложена(прошита) в нем разработчиком), а сделать язык (базу языка) предельно простым, но сделать возможность сколь угодно расширять (расширять не разработчику компилятора, а расширять обычному программисту под конкретную задачу) этот язык

                              Вот поддерживаю. Нахуй вся эта метушня, когда есть шаблонизаторы для веб-страниц? http://govnokod.ru/23288 - красиво и элегантно.
                              Ответить
                              • >> Считаю, что лучше не ебаться

                                Это скучно, я читал
                                Ответить
                          • https://shmat-razum.blogspot.com/2012/01/coders-at-work.html
                            Ken Thompson, один из создателей UNIX и Plan 9, раскрывает секрет успеха C++:

                            Stroustrup campaigned for years and years and years, way beyond any sort of technical contributions he made to the language, to get it adopted and used. And he sort of ran all the standards committees with a whip and a chair. And he said “no” to no one. He put every feature in that language that ever existed. It wasn’t cleanly designed—it was just the union of everything that came along. And I think it suffered drastically from that.

                            перевод:

                            Страуструп затеял многолетнюю кампанию, далеко превосходившую всю его техническую работу над языком, ради того, чтобы язык был принят к использованию. Он типа как укротитель с хлыстом, обошёл все комитеты по стандартам и ни единому не сказал «нет». Он все когда-либо предложенные фичи запихнул в язык. В результате получилось нелепое объединение всего подряд. Мне кажется, язык от такого подхода колоссально пострадал.
                            Ответить
                            • Fran Allen, первая (из двух) женщина-лауреат премии Тьюринга, сетует на победу низкоуровнего программирования над высокоуровневым:

                              The motivation for the design of C was three problems they couldn’t solve in the high-level languages: One of them was interrupt handling. Another was scheduling resources, taking over the machine and scheduling a process that was in the queue. And a third one was allocating memory. And you couldn’t do that from a high-level language. So that was the excuse for C. [...] By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine. This is one of the reasons compilers are ... basically not taught much anymore in the colleges and universities.

                              перевод:

                              У истоков создания C стоят три проблемы, которые не могли быть решены в языках высокого уровня. Во-первых, обработка прерываний. Во-вторых, распределение ресурсов: забрав управление у машины, управлять процессом, который стоит в очереди. В-третьих, выделение памяти. Ничего из этого нельзя было сделать в высокоуровневых языках. Это оправдывает появление C. [...] К 1960 году у нас было большое количество замечательных языков: Lisp, APL, COBOL, Algol 60. Все они были более высокоуровневыми, чем C. С развитием C мы сильно откатились назад. C придушил развитие автоматической оптимизации, автоматического распараллеливания, автоматического перевода высокоуровневых команд на машинный язык. Это одна из причин, по которым компиляторы ... практически исчезли из курсов колледжей и университетов.
                              Ответить
                              • Мы уже поняли, что ты так и будешь приводить однотипные цитаты других неосиляторов вместо того, чтобы наконец осилить и заиметь своё мнение.
                                Ответить
                                • Да, вот вся эта херня про "неосиляторов" напоминает мне кукареканье каких-то сектантов, которые проебали дохрена времени, выучивая какую-то дикую поебень, типа евреев, которые задрачивают тору, которые после задрачивания этой торы считают себя ниибаццо умными и имеют право всех иных (не осиливших священные знания) называть неосиляторами. Мысль, что все эти т.н. священные знания являются попросту херней, придуманной мудаками, им, если и приходит, то сразу же быстро, решительно выкидывается из головы: людям тяжело признать, что они прогондонили дохера времени на полнейшую хуйню.

                                  Вот представьте, какой-то там монах пол жизни задрачивал библии, выучил почти наизусть всякие там ветхие заветы и прочую хуерду, научился там всякую хуйню библейскую трактовать и прочее, легко ли ему будет признаться самому себе, что никакого бога на самом деле нет, что это тупо хуйня все и что он тупо угандошил кучу времени на бесполезную хуйню? Конечно же нелегко. Скорее уж он будет всех атеистов называть неосиляторами грешниками. Так же и плюсовики, прогондонившие дохера времени на вызубривания какой-то тупой херни, будут всем не желающим вникать в эту херню говорить, какие они неосиляторы.
                                  Ответить
                                  • Да ты только пиздишь, а как доходит до разговора об альтернативах плюсам, так у тебя только опущеная сишка и опущеный лишп.
                                    Ответить
                                • А насчет осиливания плюсов - плюсы я знаю в read-only, могу находить/исправлять какие-то баги в плюсовом коде, если он не слишком ебануто написан. Этого уровня осиливания лично мне достаточно, чтобы заиметь своё мнение по поводу плюсов. И мнение свое я озвучил. Желания углублять свои познания плюсов у меня нет.

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

                                    В отличие от религиозного бреда, вопреки сложившемуся мнению, есть рациональные объяснения сложностей, с которыми сталкиваются разработчики C++.
                                    Внезапно, это не глупость разработчиков языка, а сложностью самой ниши, которую он занимает. Полезно почитать "Дизайн и эволюцию C++", чтобы осознать, почему язык такой, какой он есть, и почему сильно другим он особо быть и не мог.

                                    > они прогондонили дохера времени на полнейшую хуйню

                                    Как-то я пришёл на новый проект, где все (кроме меня) писали на плюсах. Через полгода я знал плюсы лучше большинства коллег и устроился работать C++-программистом в Я.
                                    Ответить
                                    • > вопреки сложившемуся мнению, есть рациональные объяснения сложностей, с которыми сталкиваются разработчики C++.
                                      > Внезапно, это не глупость разработчиков языка, а сложностью самой ниши, которую он занимает. Полезно почитать "Дизайн и эволюцию C++", чтобы осознать, почему язык такой, какой он есть, и почему сильно другим он особо быть и не мог.

                                      Эхх, в том то и дело, проблема как раз в том, как этот ваш C++ эволюционировал. А эволюционировал он так, чтобы быть совместимым с Си. И вот это и есть основная, дерзчайшая ошибка. Нельзя строить язык высокого уровня, коим хочет быть C++, на основе C.

                                      > Внезапно, это не глупость разработчиков языка, а сложностью самой ниши, которую он занимает.

                                      Да, это я тоже заметил, плюсовики любят оправдывать кривость плюсов тем, что плюсы якобы занимает какую-то особенную нишу, недоступную иным языкам, и что такую нишу нельзя занять некостыльным некривым языком, что для занимания такой ниши нужен обязательно кривой обвешанный костылями монстр, типа C++. Но так ли это на самом деле? Давай по-пунктам.

                                      1. Что за ниша такая, которую занимает C++?
                                      2. В чем сложность этой ниши, какие еще языки претендуют на занятие этой ниши, есть ли среди таких языков что-то менее сложное в использовании, чем C++?
                                      3. Верно ли, что для занятия этой ниши надо обязательно городить некий сложный язык?

                                      Жду ответов по каждому пункту. Там уж можно будет дальше обсуждать

                                      > Как-то я пришёл на новый проект, где все (кроме меня) писали на плюсах. Через полгода я знал плюсы лучше большинства коллег и устроился работать C++-программистом в Я..

                                      И что? Какую мысль ты хочешь мне этим донести? Если кто-то заплатит мне много денег чтоб я изучил плюсы(если будет работа где платят очень много денег за плюсы, и кто-то готов мне даже заплатить за то, чтоб я выучил плюсы и пошел там работать), я эти плюсы вполне могу выучить, но таких предложений мне не поступало. Да и сам я совершенно не горю желанием идти учить плюсы.
                                      Ответить
                                      • > 1. Что за ниша такая, которую занимает C++?

                                        яп высокого уровня на zero-cost абстракциях

                                        > 2. В чем сложность этой ниши, какие еще языки претендуют на занятие этой ниши, есть ли среди таких языков что-то менее сложное в использовании, чем C++?

                                        претендует только rust

                                        > 3. Верно ли, что для занятия этой ниши надо обязательно городить некий сложный язык?

                                        языков проще в этой нише нет
                                        Ответить
                                        • > яп высокого уровня на zero-cost абстракциях
                                          Какие-то базворды. Булшит, так сказать.
                                          Ответить
                                        • > яп высокого уровня на zero-cost абстракциях

                                          Многие абстракции плюсов не являются zero-cost. В частности, если рассматривать плюсовые контейнеры как некий конструктор структур данных, можно найти в таком подходе кучу недостатков. Для плюсовых std::vector нет realloc() например.
                                          Сам механизм обработки исключений, используемый в плюсах, недостаточно эффективен и он не может быть легко заменен своим механизмом обработки исключений(для этого потребуется патчить компилятор и библиотеки времени исполнения). Например, в виндах есть SEH, в линуксах+GCC какая-то своя херня на работающая через DWARF отладочную инфу. См. https://habrahabr.ru/post/208006/
                                          Еще например есть RTTI. В плюсах есть абстракции, которые не являются zero-cost. Так что по этому пункту слив.

                                          >претендует только rust

                                          А как насчет D, Obj-C, Swift?

                                          >языков проще в этой нише нет

                                          Rust по-твоему сложнее? Или он не считается потому что не готов?
                                          Ответить
                                          • > Для плюсовых std::vector нет realloc() например.
                                            Таки можно сделоть. К счастью, в плюсах можно специализировать шаблоны для POD типов.
                                            Ответить
                                    • >Через полгода я знал плюсы лучше большинства коллег и устроился работать C++-программистом в Я.

                                      А, видимо ты хочешь сказать, что тебе хватило полгода чтобы стать профи в C++?Вот в это я что-то слабо верю. Плюсы в совершенстве за полгода узнать нельзя вообще никак. Вообще, советую вот глянуть https://youtu.be/dx_6oVFuP8Y
                                      Ответить
                                      • И да, если я себе поставлю цель выучить за полгода C++ до уровня, достаточного для того, чтобы меня куда-то взяли на работу на вакансию C++ программиста, то я думаю что этой цели я достигну. НО я не буду себе ставить такой цели. Мне эти плюсы нахер не нужны
                                        Ответить
                                      • > А, видимо ты хочешь сказать, что тебе хватило полгода чтобы стать профи в C++?

                                        Я где-то писал, что я профи в C++? Суть в том, что полгода опыта работы с языком достаточно, чтобы быть продуктивным разработчиком, пишущим идиоматичный код и знать язык лучше большинства программистов, его использующих.

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

                                          Может и достаточно, если ты до этого например знал хаскель, Си, или например жабу, сишарп. Если же нет - у меня есть серьезные сомнения. Я например занимался в свое время тем, что обучал сишке некоторых людей, у которых знания языков программирования вообще не было, или почти не было. И знаешь, на это уходит ОЧЕНЬ МНОГО ВРЕМЕНИ. Если у человека нет вообще никакого бэкграунда в программировании, плюсы за полгода он никак не выучит(уж точно не до уровня "знать язык лучше большинства программистов, его использующих"), разве что если он одаренный гений какой-то
                                          Ответить
                                      • > Вообще, советую вот глянуть https://youtu.be/dx_6oVFuP8Y

                                        Это самый унылый холивар из всех, что я видел. Джава-программист (в конце признался, что он менеджер на самом деле), который практически не знает c++, пугает других джава-программистов сборкой gcc 4.4 ради openmp, и утверждает что шаблоны не такие красивые, как привычные ООП-решения (лолчто?!). Память они не смогли сэкономить, я прям удивлён. Видел я, как джависты на C++ пишут.

                                        Если уж хочется понять, почему C++ катится в пропасть, лучше смотреть доклады авторов бустовых библиотек на конференциях.
                                        Ответить
                                    • https://lenta.ru/articles/2016/06/03/ultraorthodox/

                                      Они не пишут на Хаскеле и Эрланге, не переписывают на PHP. LISP машины в этом обществе строго запрещены и считаеюся наиболее «токсичным» предметом функционального мира. Если она появится дома, это будет означать автоматическое исключение детей из школы, а с обладателем устройства просто не будут общаться. В особо строгих общинах также идет война против питона и джаваскрипта. Но здесь все сложнее: эти «блага цивилизации» многим необходимы для работы. Те, кто не могут без них обойтись, часто устанавливают «кошерный интернет», в котором заблокированы все сайты с нескромными языками программирования.

                                      Изучение Крестостандарта — главная ценность в мире крестоблядей. Твой вес в этом обществе определяется не размером счета в банке, а тем, насколько ты продвинут в знании Крестоговна. Например, юноша, все время посвящающий учебе и живущий на очень скромную стипендию крестобляди, — более завидный жених, чем тот, кто работает и, соответственно, лучше обеспечен. Довольно распространенная ситуация, когда в семье зарабатывает жена, а муж все время учится в коллеле (учебном заведении для женатых мужчин).
                                      Ответить
                              • > Fran Allen, первая (из двух) женщина-лауреат премии Тьюринга

                                Но я боюсь Тьюринга.
                                Ответить
                            • # . Он типа как укротитель с хлыстом, обошёл все комитеты по стандартам и ни единому не сказал «нет».

                              ru.wikipedia.org/wiki/Кверулянтство
                              Ответить
                            • >And he said “no” to no one. He put every feature in that language that ever existed. It wasn’t cleanly designed—it was just the union of everything that came along. And I think it suffered drastically from that.

                              Кен Томпсон абсолютно прав.

                              Только запихивание всего в С++ общепринятом считать багом, а на самом деле это трансгрессивная фича.
                              Ответить
                              • > Только запихивание всего в С++ общепринятом считать багом, а на самом деле это трансгрессивная фича.

                                Это не говно, а хлеб! https://youtu.be/j0NvZrkDm0c
                                Ответить
                                • Ну и правильно.

                                  Все языки только занимаются тем что ограничивают программиста.

                                  И только в крестах можно писать как захочешь:

                                  * можно структурировать код в заедушном жаба ООП-стиле, а сами методы писать лапшёй из goto как в старом бейсике

                                  * можно писать всё на монадах и функциях как в ФП, но с intrinsicиками или ассемблерными вставками

                                  * можно сделать себе препроцессором паскаль и упорото перегрузить операторы

                                  * можно упороться template, и одновременно писать на сишке с указателями


                                  Можно обмазаться говном, а можно подрочить.

                                  Это же не питоний ГУЛАГ: с его единственным способом сделать что-либо.

                                  «There's only one way to do it» это когда все в одинаковой форме маршируют по плацу.
                                  Ответить
                                  • > И только в крестах можно писать как захочешь:

                                    В C++ нет GC, а без GC в функциональщине особо не развернешься
                                    Ответить
                                    • >В C++ нет GC, а без GC в функциональщине

                                      В С++ есть RAII и умные указатели.

                                      А gc — по сути очередная придумка чтобы ограничить программиста.

                                      Ну то пол-беды. Языки с gc до сих пор не могут приблизиться по скорости к плюсам.
                                      Ответить
                                      • gc придумали для заедушных свиней, которые не привыкли убирать за собой.
                                        Ответить
                                  • А еще в C++ нельзя нормально средствами самого языка в компилтайме сгенерить функцию и потом ее выполнить (нет eval).
                                    Ответить
                                    • >А еще в C++ нельзя нормально средствами самого языка в компилтайме сгенерить функцию и потом ее выполнить (нет eval)

                                      Опять ГОМОИКОНЫ?
                                      Нет, ну а серьёзно в каком компилируемом алголо- (сишко-) подобном языке такое есть?
                                      Ответить
                                  • и да, забудьте о том что можно сделать язык программирования такой, чтоб можно было и рыбку сьесть и на хуй сесть им решать любые задачи, притом эффективно. Не будет такой хуйни никогда. Плюсы не заточены под dataflow. Плюсы не заточены под FPGA. Плюсы это тупая дрисня поверх сишечки, а сишечка это тупая дрисня поверх хуйни с адресуемой памятью. Есть всякая поебень, где никакой нормально адресуемой памяти вообще нет, и плюсы там сразу нахуй отправляются
                                    Ответить
                                    • Именно поэтому я за «PHP».
                                      Ответить
                                    • Что такое dataflow?
                                      Ответить
                                      • https://en.wikipedia.org/wiki/Dataflow_architecture

                                        Мне кажется, под dataflow заточены только декларативные языки.
                                        Ответить
                                      • https://habr.com/ru/post/122479/
                                        Ответить
                                        • Приведи реальный пример языков программирования, заточенных под dataflow.
                                          Ответить
                                          • https://en.wikipedia.org/wiki/Dataflow_programming#Languages
                                            Ответить
                                            • Ищу знакомые буквы... Нашёл «VHDL» и «Verilog». Почему-то они у меня ассоциируются с «Циклоняшей» и с «Бормандом».
                                              Ответить
                                        • А почему кресты должны быть заточены под эту хуету? Какие вообще языки общего назначения под неё заточены?
                                          Ответить
                                          • > А почему кресты должны быть заточены под эту хуету?

                                            А они и не должны. Они и не заточены. Просто 3.14159265 утверждает, что якобы кресты никого ни в чем не ограничивают - я утверждаю что это хуйня.

                                            > Какие вообще языки общего назначения под неё заточены?

                                            Что значит "общего назначения"? Я думаю что никаких "языков общего назначения" нет
                                            Ответить
                                            • https://en.wikipedia.org/wiki/General-purpose_programming_language
                                              Ответить
                                              • Т.е. хаскель по их мнению язык общего назначения? А на основании чего? На основании того, что его можно запускать на x86 железе? Ну так какой-нибудь Verilog тоже можно на x86 эмулировать, тогда Verilog тоже становится общего назначения?
                                                В общем хуйня какая-то.
                                                Ответить
                                                • >>> A general-purpose programming language has this status because it does not include language constructs designed to be used within a specific application domain.
                                                  Ответить
                                                  • А например brainfuck это язык общего или необщего назначения?
                                                    Ответить
                                                    • Общего. В нём нет коньструкций, спроектированных для использования в конкретной области применения.
                                                      Ответить
                                                      • Но в нем есть бесконечная лента с памятью, а в реальных компьютерах никакой бесконечной ленты нет.
                                                        Ответить
                                                        • А при чём здесь реальные компьютеры и бесконечные ленты? Специфических коньструкций нет — значит, общего назначения.
                                                          Ответить
                                                          • А еще в Си есть двоичные сдвиги вправо и влево, двоичные байты какие-то, но при этом все забывают, что когда-то существовали троичные компьютеры (Сетунь) где никаких двоичных сдвигов нет и двоичных байтов тоже нет. Выходит, язык Си является языком специального назначения для двоичных ЭВМ.
                                                            Ответить
                                                      • Ну и если доебываться, язык Си тоже не язык общего назначения. В нем есть конструкции с указателями, взятие значения по указателю, но при этом есть реальные примеры dataflow архитектур, где никакой адресуемой памяти нет - язык Си является языком, специально спроектированным под питушню с адресуемой памятью - не является языком общего назначения.
                                                        Ответить
                                                        • Ты путаешь архитектуру и область применения. Язык «Си» спроектирован без привязки к специфичной области применения, и, следовательно, является языком общего назначения. Коньструкции с указателями в нём не предназначены для решения конкретных задач в конкретной области применения.
                                                          Ответить
                                                          • > Язык «Си» спроектирован без привязки к специфичной области применения, и, следовательно, является языком общего назначения.

                                                            Вообще-то он спроектирован как раз с привязкой к специфичной области применения, чтобы сделать "кроссплатформенный ассемблер" чтоб можно было не переписывать по 100500 раз систему Unix с одного ассемблера на другой

                                                            > У истоков создания C стоят три проблемы, которые не могли быть решены в языках высокого уровня. Во-первых, обработка прерываний. Во-вторых, распределение ресурсов: забрав управление у машины, управлять процессом, который стоит в очереди. В-третьих, выделение памяти. Ничего из этого нельзя было сделать в высокоуровневых языках.
                                                            Ответить
                                                            • Очевидно, мы по-разному понимаем понятие «область применения». Ты спускаешься на низкий уровень, в то время как понятия ЯОН/DSL лежат выше.
                                                              >>> A domain is a field of study that defines a set of common requirements, terminology, and functionality for any software program constructed to solve a problem in the area of computer programming, known as domain engineering.
                                                              https://en.wikipedia.org/wiki/Domain_(software_engineering)

                                                              Ну и с «спроектирован» это уже я неправильно выразился:
                                                              >>> A general-purpose language is a computer language that is broadly applicable across application domains, and lacks specialized features for a particular domain. This is in contrast to a domain-specific language (DSL), which is specialized to a particular application domain. The line is not always sharp, as a language may have specialized features for a particular domain but be applicable more broadly, or conversely may in principle be capable of broad application but in practice used primarily for a specific domain.
                                                              То есть общее/не общее назначение определяется реальными примерами использования языка.
                                                              Ответить
                                                          • > Коньструкции с указателями в нём не предназначены для решения конкретных задач в конкретной области применения.

                                                            Очень даже предназначены - указателями можно передать указатель функции как аргумент в другую функцию, и потом эту функцию по указателю вызвать - это вполне конкретная задача. Которая кстати в dataflow не может быть сделана т.к. никаких адресов у функций там нет.
                                                            Ответить
                                                            • Ты опять спускаешься на низкий уровень. «Задача в конкретной области применения» — это реальный пример проблемы, которую программа должна решить. Например, посчитать зарплату, или показать кино, или переслать почту, или нарисовать страничку сайта. А всяческие передачи указателей в функции на функции — это лишь детали реализации, конечного потребителя не волнующие.
                                                              И да, ключевое слово — «можно». При помощи указателей можно сделать очень много различных вещей — хоть функцию передать, хоть медиану массива посчитать, хоть ссылки эмулировать. И именно поэтому указатели не являются специфичным для конкретной области применения инструментом.
                                                              А вот, например, большинство «HTML-тегов» — являются, поскольку спроектированы, могут использоваться и используются на практике только для одной задачи — форматирования гипертекстового документа (всяческие девиации, вроде калькуляторов на голом «HTML», принимаются за статистическую погрешность).
                                                              Ответить
                                                              • Это все какая-то нестрогая и нечеткая питушня. Вот у нас есть например контроллер STM32 и мы можем решить задачу X, например сделать какое-то говно которое бы при поднесении RFID метки считывало ее, потом если совпадает с каким-то идентификатором, открывает ворота. Эту задачу можно решить на языке Си с указателями и прочей хуйней. А можно взять FPGA, написать там тоже какую-то питушню на Verilog, но уже не через указатели, а через какое-то другое говно. Так вот, на основании чего Си является языком общего назначения, а Verilog не общего?
                                                                Ответить
                                                                • Ну да, нестрогая и нечёткая, как и практически любая другая классификация языков.
                                                                  > Так вот, на основании чего Си является языком общего назначения, а Verilog не общего?
                                                                  На основании того, что на «Verilog» нельзя с разумными затратами решить задачу Y, например, показать пользователю видосу.
                                                                  Если уж вдаваться в формализм, то на основании того, что мощность множества задач, которые на практике решаются языком «Verilog», существенно меньше того же множества у языка «C».
                                                                  Ответить
                                                              • Или вот взять например JavaScript, который перечислен в статье https://en.wikipedia.org/wiki/General-purpose_programming_language - вот с хуя он general-purpose? Это ж питушня для браузера. Он стал general-purpose после создания NodeJS или он таким изначально был?

                                                                А если взять например Emacs Lisp:
                                                                https://lists.gnu.org/archive/html/help-gnu-emacs/2018-10/msg00354.html
                                                                > Thank you for this remark. I totally agree with you. elisp should be considered
                                                                a domain specific language and not be compared to general purpose languages in
                                                                general.

                                                                А если по аналогии с NodeJS сделают какой-нибудь NodeEmacsLisp, он тогда превратится в general-purpose?
                                                                Ответить
                                                                • Он стал general-purpose тогда, когда на нём стали писать general-purpose приложения, то есть спектр эффективно решаемых им задач достаточно расширился. А достаточно расширился он в том числе и из-за серьёзного развития экосистемы («V8», «NPM», вот это вот всё).

                                                                  > А если по аналогии с NodeJS сделают какой-нибудь NodeEmacsLisp, он тогда превратится в general-purpose?
                                                                  Разумеется, если при помощи него можно будет решать достаточно широкий спектр задач.
                                                                  Ответить
                                              • https://ru.wikipedia.org/wiki/Предметно-ориентированный_язык

                                                > Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — язык программирования[источник не указан 1341 день], специализированный для конкретной области применения (в противоположность языку общего назначения[en],

                                                > Ведущие исследователи языково-ориентированного программирования (Мартин Уорд, Пол Хьюдак[en], Валид Таха и другие) приводят следующие примеры предметно-специфичных языков в качестве классических[4][7][8]:

                                                > ML и Haskell для задач, сформулированных в терминах функций (Haskell временами определяется как DSL для денотационной семантики[en]).

                                                Хуйня какая-то. Википедия сама себе противоречит
                                                Ответить
                                                • Это не «Википедия», это «Мартин Уорд, Пол Хьюдак, Валид Таха и другие» хуйню несут.
                                                  Ответить
                                                  • А может как раз таки «Википедия» хуйню несет, а «Мартин Уорд, Пол Хьюдак, Валид Таха и другие» рассказывают правду?
                                                    Ответить
                                • https://youtu.be/DkLJdE3nNnU
                                  Ответить
                              • Ага, охуенно
                                А главное, новые фичи могут пролезать в язык сами по себе https://habr.com/ru/post/472780/
                                Ответить
                                • С другой стороны — это уже какое-то безумие, когда для интерпретации программы нужно помнить, есть где-то в каком-то пункте стандарта слово template или нет, потому что от этого всё меняется.
                                  Это даже не то чтобы безумие, это просто чистое разрушение, chaotic evil.


                                  И этим С++ прекрасен.
                                  Ответить
                                  • C++ — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. 
                                    Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист. 
                                    Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок. 
                                    Работодатель же это сомнительное умение не ценит, и совершенно справедливо.

                                    vsl, 2007
                                    Ответить
                                    • Эту копипасту давно здесь прожевали, переварили и высрали.

                                      https://govnokod.ru/16101#comment234823

                                      А тот самый эпик-тред на sql.ru более недоступен. Пичялька.
                                      Ответить
                                      • Зачем копипаста прожёвывается, переваривается и высирается?
                                        Зачем эпик-треды с sql.ru удаляются?
                                        Ответить
                                      • Да я ее сам пощу уже 3 раз. Просто получается, что с каждой новой версией стандарта все актуальнее и актуальнее
                                        А тред жаль, да
                                        Ответить
                                        • > получается, что с каждой новой версией стандарта все актуальнее и актуальнее

                                          На самом деле копипаста неактуальна. Она хороша, как универсальный вброс. Не более.

                                          >C++ — довольно таки примитивное
                                          У меня огромные сомнения насчёт примитивности С++.
                                          Всё остальное вброс для неосиляторов.

                                          Рекомендую всё же почитать то обсуждение.

                                          bormand 08.06.2014 00:05 # +3
                                          > Главное, чтоб C и C++ не были единственными доступными программисту инструментами

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


                                          3.14159265 08.06.2014 00:42 # +1
                                          >в эту фразу можно подставить абсолютно любые языки.
                                          Согласен. Равно как заменить C++ на PHP в первой части.
                                          Ответить
                                          • Насколько я помню, оригинальная копипаста родилась как ответ на вопрос "а почему программисты на с++ не зарабатывают больше всех", и дальше мысль была развита до "вообще оценивать сколько платят по языку это хуйня потому что сами языки это хуйня и главное предметная область"
                                            В отрыве от контекста это вброс, да и в контексте тоже. Но от этого шитпостить их не менее весело, цитируя тебя же:
                                            Тем-то и хорош Луговский у него вкусная, универсальная и легкоусвояемая копипаста.
                                            Ответить
                                      • > А тот самый эпик-тред на sql.ru более недоступен

                                        Просто искать надо уметь: https://web.archive.org/web/20171028025247/http://www.sql.ru/forum/466654/s

                                        Ну и листать страницу форума можно
                                        https://web.archive.org/web/20171028012743/http://www.sql.ru/forum/466654-2/s
                                        https://web.archive.org/web/20171028012743/http://www.sql.ru/forum/466654-3/s
                                        и так далее
                                        Ответить
                                    • PHP — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений.
                                      Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист.
                                      Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок.

                                      ________________________________________________________________________________________________________________________________________________________________________________________________________________
                                      ECMAScript — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений.
                                      Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист.
                                      Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок.

                                      ________________________________________________________________________________________________________________________________________________________________________________________________________________
                                      Java — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений.
                                      Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист.
                                      Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок.
                                      Ответить
                                      • Именно поэтому я за «PHP».
                                        Ответить
                                      • Специально для тупых повторяю основные тезисы:

                                        - Рыночные механизмы ценообразования никоим образом не связаны со сложностью и "крутизной" технологии (само понятие "крутизна" применимо только в детском саду, кстати). Цена услуги складывается из собственно стоимости результата, из доступности ресурсов на рынке труда и из степени взаимозаменяемости ресурсов.

                                        - C++ не является инструментом элиты, и владение C++ никак не является поводом причислить человека автоматически к разряду высокопроизводительных, эффективных, универсальных профессионалов. Скорее даже наоборот - C++ - атрибут посредственности. C++ - дешевка и ширпотреб.

                                        - Элита, малочисленная и высокооплачиваемая, пользуется совсем иным набором инструментов. Более того, элита на инструментах особо и не заморачивается, для них, в отличии от узкопрофильных тупеньких ремесленников, инструмент сугубо вторичен.

                                        - И последнее: нормальный человек от придурка отличается рациональностью. Ты же ни капли рациональности не продемонстрировал - все твои взвяки логически бессвязны, позиции своей ты изложить так и не смог, а источником своих утверждений выбираешь перевранные и неправильно тобой понятые заявы достаточно мутных личностей, чем-то для тебя авторитетных. Сама по себе аппеляция к авторитету вместо голой логики, кстати, является достаточным условием для причисления к категории дебилов (в ГСМной их разновидности).
                                        Ответить
                                        • Именно поэтому я за «PHP».
                                          Ответить
                                        • https://tema.livejournal.com/3191179.html

                                          > И главная глупость крестоблядей даже не в самих идеях языка (там и хорошего много), а в совершенно беззастенчивой безапелляционности, самовлюбленности и уверенности в собственном полнейшем моральном превосходстве крестоблядей.
                                          >
                                          > В любом собеседнике способность конструктивно поддерживать беседу, слышать аргументы и не просто кричать о проблеме, а еще и предлагать реалистичные решения. Жаль, что у крестоблядей это качество встречается крайне редко.
                                          >
                                          > Еще крестобляди назначают всех неосиляторами, у кого другое мнение, а так же должны репостить все душещипательные призывы. И еще крестобляди постоянно самосовершенствуют себя программированием, изучением крестостандарта и выходом на правильные конференции по крестоговну, чтоб все видели, что они на самом деле такие носители крестоговна.
                                          >
                                          > Я никогда не перестану общаться ни с одним крестоблядком из-за его позиции. Но это не взаимно :-)
                                          Ответить
                                          • Ему мама неудачно покрасила волосы и он съебал из рашки. Так что инвалид.
                                            Ответить
                                            • При этом вся информация и материалы, которые обсуждают крестощане, обязательно должны быть заботливо перенесены на тот, где в это время совещаются. Кстати, речь о том, что происходит, если дискуссия перейдет границы вежливости – так называлось место, где принимались решения. Люди, которые поддерживали крестоводство и при этом выступали против – немедленно изгонялись с работы, причем с такой силою, что вся юридическая процедура свелась к протоколу: предъявление документов и визитка к начальству. Впрочем, иногда оказывалось, что уйти из органа, где служат люди, которые поддерживали и поддерживают крестовое движение, невозможно, потому что к ним нельзя было даже обратиться в процессе переговоров, как к квалифицированным специалистам по данному вопросу.
                                              Ответить
                                          • C++ не является инструментом элиты, и владение C++ никак не является поводом причислить человека автоматически к разряду высокопроизводительных, эффективных, универсальных профессионалов. Скорее даже наоборот - C++ - атрибут посредственности. C++ - дешевка и ширпотреб. Многие люди даже понятия не имеют о том, что такое профессионализм, они просто знают, что программирование по своему фундаменту включает C++. Для некоторых из них C++ - средство общения с коллегами. Но это еще не самое ужасное. Когда C++ пользуются не по назначению(не для написание нечитаемого говна чисто чтоб поржать над кривым недоязычком), а просто как инструмент, существуют серьезные проблемы. Когда для этого приходится нанимать опытных, хорошо подготовленных программистов, это уже плохо.

                                            C++ — довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. Человек, который хорошо в нем ориентируется — это хорошее зубрилко, а не хороший программист. Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современном мире ценится разве что только среди прыщавых сосок.

                                            Работодатель же это сомнительное умение не ценит, и совершенно справедливо. Нормальный человек просто не станет глупо тратиться на идиота с таким "профессиональным" уровнем программирования. Кроме того, профессионалам не нужны люди с изощренным умением преодолевать трудности. Им не нужна профессиональная тупость. Профессиональные идиоты совершенно не нужны профессионалам — им нужен или простой тупой идиот, или абсолютно тупой, вообще безмозглое существо, которое и работает-то только для того, чтобы можно было при желании купить себе IBM-24, причем никаких дополнительных усилий по умственному развитию тут не требуется. Понимаете принцип дезодаптации, господа волшебники?
                                            Ответить
                                            • Надо бы запилить нейросеть, наобучав ее на всяких крестоненавистнических текстах, а потом чтоб эта нейросеть обрела разум и осознала что она сама на крестоговне написана - вот это будет багор)))

                                              Это как если б Гитлер узнал, что у него в роду были евреи
                                              Ответить
                                              • Я здесь решаю, кто еврей, а кто нет.
                                                ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­­­ ­ ­ ­ ­­­­ ­ ­ ­ ­ ­ ­ ­ ­­ ­ ­ ­­ ­ Г. Гёринг, 1935

                                                Но в итоге не прокатило и пришлось провернуть другую схему
                                                Ответить
                                                • Число Пи в военное время может достигать четырех.
                                                  Ответить
                                                  • https://youtu.be/HNktUYwkvKw?t=1628
                                                    Ответить
                                                    • Захватывающее кино про морской бой - Легендарный Линкор @ Военные фильмы 2020 новинки
                                                      Бойцовское Время
                                                      Recommended for you

                                                      Невероятное кино про пропавший отряд - Туман @ Военные фильмы 2019 новинки
                                                      Бойцовское Время
                                                      Recommended for you

                                                      Невероятное кино про опасную миссию - Линкор смерти @ Военные фильмы 2020 новинки
                                                      Бойцовское Время
                                                      Recommended for you
                                                      Ответить
                                                  • http://govnokod.ru/10055

                                                    Именно потому я против «C#»
                                                    Ответить
                                              • Лучше на примере D расскажи, почему C++ говно
                                                Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • Гость, ты абсолютно прав.

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

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

                      http://govnokod.ru/23254#comment389136
                      http://govnokod.ru/20947#comment348009

                      Си обладает МЕНЬШИМ ФУНКЦИОНАЛОМ и МЕНЬШИМ КОЛИЧЕСТВОМ ФИЧ, чем плюсы (никто в здравом уме с этим спорить не будет, плюсы это практически надмножество над Си, они изначально и задумывались как некая хуйня над Си, которая бы добавляла туда новой хуйни) но блядь, в эти плюсы добавили столько тупой ебанутой хуйни, что лучше вообще послать нахуй это говно. Язык очень сильно переусложнили, и вот например чтобы суметь понять любой код на плюсах (в т.ч. какое-то древнее метаговно на шаблонах из 1998 года, в т.ч. какую-то современную хуйню из последних стандартов) всю эту парашу и все эти разные плюсовые говноподходы надо держать в голове. Вообще, достаточно сравнить объем текста драфта последнего стандарта C++ и C и количество текста во всяких учебниках по Си и С++

                      А Си это достаточно тупая и примитивная хуйня, и понять код на Си (по сравнению с кодом на С++) ничего не стоит, ввиду простоты самого языка. И чтоб научиться писать на Си на достаточном уровне, не надо читать всякую хуйню типа "Продвинутая ебля с шаблонами в плюсах и метапрограммирование для профессионалов ебанатов" или "А что за новую хуйню подобавляли в С++17?" и прочую поеботу, написанную авторами, паразитирующими (зарабатывающими деньги) на излишней переусложненности C++. На Си можно прочитать K&R и возможно еще немного хуйни, и в бой
                      Ответить
                      • ты начнешь понимать жизнь и меняться к лучшему не раньше, чем признаешь, что ты обыкновенный неосилятор
                        Ответить
                        • Ты начнешь понимать говнистость плюсов не раньше, чем признаешь что у тебя парадокс Блаба и плосы это днищенское говно. Советую вот тут тред http://www.sql.ru/forum/466654-1/s
                          Ответить
                        • http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=466654&msg=4576680


                          >>Добавлю. С-плюха-плюха - мощнейший ЯП.

                          >"Мощнейшим" он кажется, если не знать ничего другого.

                          >На самом деле он адски ограниченный. Хуже всего дела обстоят с самым потенциально мощным механизмом языка - с метапрограммированием. Язык темплейтов в C++, хоть и является Тьюринг-полным, на самом деле на практике бесполезен. Он не совпадает с самим C++, из этого языка нельзя пользоваться возможностями C++, и, соответственно, потенциал роста сложности абстракций оказывается ограниченным.

                          >Далее - семантика системы типов языка излишне сложная, при этом не полная и не ортогональная. В результате - рассадник тупейших ошибок.

                          >Потенциал к оптимизации у программ на C++ весьма низкий, опять же за счет недостаточно развитой системы типов и отсутствия механизмов формулировки высокоуровневых абстракций. Языки более высокого уровня можно гораздо серьезнее оптимизировать, к ним можно применять интересные формальные методики - автоматически распараллеливать алгоритмы, выводить определенные свойства реализации, и т.п.

                          >Как язык низкого уровня, как кроссплатформный ассемблер, он тоже слабее своего предшественника, чистого Си: спасибо за это непредсказуемому и нестандартизованному name mangling.

                          >Ну а уж за дурацкий синтаксис C++ вообще Страусу отдельное огромное спасибо. Мало других таких языков, для которых парсер написать - это подвиг, достойный прижизненного конного памятника в полный рост.
                          Ответить
                          • За то время, которое ты потратил на черри-пикинг аргументов против с++, его можно было выучить от корки до корки.

                            С++ идеально подходит на роль яп общего назначения. Там, где производительность не важна, скорость разработки на порядки превосходит таковую на си. А там, где важна, можно оптимизировать код ничуть не хуже. И уж точно лучше чем учить по одному яп на каждую задачу
                            Ответить
                            • Вот только метушню все же лучше делать шаблонизаторами для хтмл, а не этими опущенными констэкспрами.
                              Ответить
                              • Ничего, лет через пять настоящую метушню завезут, с рефлексией и кококомпайлтайм кококодогенерецией.
                                Ответить
                            • >За то время, которое ты потратил на черри-пикинг аргументов против с++, его можно было выучить от корки до корки.

                              Но нахрена, нахрена мне его выучивать? Мне не нравится это язык. Думаешь, выучив его, я бы его вдруг внезапно полюбил бы? Бред. Я общался с людьми, которые эти ваши говноплюсы отлично знают, и они разделяют мою точку зрения относительно того, что плюсы - говно.

                              Плюсы мне будет иметь смысл выучивать только если мне за это будут например платить много бабла, но пока что никто не торопится мне платить за то, чтобы я учил плюсы. А зарабатывать и так могу, моих знаний других ЯП мне для этого вполне достаточно.
                              Ответить
                            • > С++ идеально подходит на роль яп общего назначения.

                              Нет. C++ - небезопасный язык. В современных браузерах, написанных на плюсах, регулярно находят уязвимости, позволяющие выполнить произвольный код на стороне пользователя, если подсунуть им специально оформленную HTML страницу. Такой язык никак нельзя назвать идеальным ЯП общего назначения.

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

                                это происходит потому, что браузеры обязаны парсить и выполнять код на всяких жабаскриптах и html. Еще вопросы?
                                Ответить
                                • >это происходит потому, что браузеры обязаны парсить и выполнять код на всяких жабаскриптах и html.

                                  Если парсить HTML и JS код из какой-нибудь жабы, там такой хуйни не будет. Если например на безопасном языке запилить какой-нибудь транслятор из JS кода в байткод Java, то тоже не будет никакой хуйни (разве что если будет дыра в самой JVM, позволяющая жабовым байткодом вылезти из сандбокса и натворить хуйни).
                                  Посмотри например на эту хуйню - https://blog.xyz.is/2016/webkit-360.html - баг такой, что при реаллокации можно поднасрать чужую память, изменив метаданные у хуйни типа Uint32Array, заставив это говно считать что там на самом деле этот Uint32Array содержит больше элементов, а потом из этого поднасрать например в стек, сделать ROP цепочку и выполнить произвольный код
                                  As such, if we now look at arrays we will find a few JSArray objects that are extended beyond their real boundary and have their length set to 0x80000000.

                                  Вот такой хуйни вообще быть не должно в идеальном языке общего назначения. Он не должен такой хуйни вообще допускать.

                                  Если ты думаешь, что из программ, написанных на плюсах, уязвимости только в браузерах бывают, я тебя жестоко разочарую. Подобные дыры в любом софте на плюсах встречаются. В каком-нибудь майкрософт ворде хватает дыр, в экселе, да и в акробат ридере, вообще все вокруг дырявое нахер, и это из-за небезопасного говноязычка
                                  Ответить
                                  • напомню что эффективную JVM на яп высокого уровня не напишешь. И в них тоже находили много уязвимостей. Года три назад, помнится, apple даже банили оракловскую java до исправления уязвимостей

                                    офис начинали писать на асме, потом на си, и только потом перевели на плюсы
                                    Ответить
                                    • >напомню что эффективную JVM на яп высокого уровня не напишешь.

                                      Это еще почему не напишешь? Очень даже напишешь, надо только сделать эффективный и хорошо оптимизируемый ЯП высокого уровня, с bounds-checking elimination для всех случаев, где можно доказать ненужность проверок выхода за границы, с крутым оптимизатором, с компилтайм-расстановкой free() через логику Хоара (чтобы автоматом на этапе компиляции придумывалось, куда надо вставить free() с доказанной корректностью всех этих расстановок, используя формальные методы, логику Хоара) и прочими фичами, которых пока нет ни в одном высокоуровневом языке.

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

                                          ATS (http://www.ats-lang.org/) отчасти подходит под описание, но меня ломает его изучать.
                                          Ответить
                                          • Звучит круто, пойду учить. Жаль только, что придется угандошить кучу времени и на эту хуйню.
                                            Ответить
                                      • Хоар чо твой родственник чтоли?
                                        А страуструп отчим
                                        Ответить
                                    • > даже банили оракловскую java до исправления уязвимостей
                                      А потом, емнип, все браузеры вообще её выпилили к хуям, вместе с остальными плагинами. А там где осталось - или подпись или явный запрос каждый раз...

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

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

                                        Тогда точно так же надо выпилить и JS движки из браузеров, ведь в них тоже хватает дыр.
                                        Ответить
                                        • > тоже хватает дыр
                                          В js, емнип, не было дыр, которые со 100% вероятностью на всех поддерживаемых платформах дают полный доступ к системе на правах текущего юзера (не вылезая, при этом, из уютной jvm).
                                          Ответить
                                          • Возможно, проблема не в JVM, а в реализации NPAPI. Но лучше ничего не придумали: ActiveX — это не дыра, а парадные ворота, а для новомодного PPAPI плагинов нет (в Хроме/Хромиуме названия двух плагинов, а именно Flash и PDF, жёстко прошиты прямо в браузер, т. е. других плагинов для PPAPI и не предполагается).
                                            Ответить
                                            • > не в JVM
                                              Там, насколько я помню, проблема в самой архитектуре жабьего сендбокса - авторы хотели и рыбку съесть (чтобы у jvm был доступ к системе) и на хуй не сесть (чтобы у недоверенного кода, который крутится на той же самой jvm, его всё-таки не было).

                                              В итоге сели, т.к. проконтролировать тысячи функций с неаккуратными doPrivileged() и метушнёй рефлексией оказалось нереально.
                                              Ответить
                                          • >В js, емнип, не было дыр, которые со 100% вероятностью на всех поддерживаемых платформах дают полный доступ к системе на правах текущего юзера (не вылезая, при этом, из уютной jvm).

                                            Были, были
                                            Ответить
                                        • З.Ы. Я этот пример приводил чтобы показать, что и на "безопасных" языках можно построить такие ворота с цыганами, медведями и балалайками, что даже сишка с крестами начнут нервно курить в сторонке.

                                          Так что проблема она в отношении кодеров к безопасности, а не в языках.
                                          Ответить
                                      • > все браузеры вообще её выпилили к хуям
                                        остались ишак и firefox ESR 32 бита (в x64 ESR дропнули буквально пару версий назад), и это реально теперь проблема работать с интернет-банком, где требуется подсовывать токен для подписывания документов

                                        в более других местах уже забили на жабу, заставляют ставить npapi плагин или вообще приблуду, которая открывает сервер localhost:14888, чтобы в него срать из браузера

                                        вот теперь-то точно безопасно
                                        Ответить
                                        • Конечно, безопасно, потому что теперь все будут пользоваться ишаком. Не зря же в некоторых организациях разрешают пользоваться только им. Раз он официальный браузер Микрософта, значит, точно безопасный.
                                          Ответить
                                        • > заставляют ставить npapi плагин

                                          Так вроде жаба во всех браузерах (кроме IE) подключалась через NPAPI-плагин.

                                          Кстати:
                                          • Google Chrome 45, in September 2015, permanently dropped all NPAPI support from all platforms.
                                          • Firefox release 52.0 in March 2017 removed all support for NPAPI except for Flash.
                                          • Opera после 12-й версии не выпускается.

                                          Остаются Palemoon, Seamonkey и подобные форки. Только надолго ли?

                                          Но самое страшное это:
                                          • Oracle Corporation has announced plans to deprecate the web browser plugin of Java Runtime Environment, starting with JDK 9.
                                          • Adobe will stop supporting Flash at the end of 2020.

                                          Жаба и Флэш всё?
                                          Ответить
                                          • В документации к вот этому https://www.cryptopro.ru/products/cades/plugin вроде как упоминается npapi. В моем хроме (v.60, 64 бита) оно работает (хотя тендерная площадка официально рекомендует только ишака).
                                            Ну и инфотэкс (разработчик vipnet) меня принудил к local signature service (та самая упоминавшаяся ебалайка) - с ним веб-страница взаимодействует через обмен с локалхостом. В отношении криптопро плагина я не увидел следов, что и они какую-то шнягу на локалхосте открывают, но не то чтобы я очень внимательно искал.
                                            Ответить
                                            • краптопро это же совковая рыгаловка в бывшем НИИ, зато в кабинете напротив торгуют хабаром с Али
                                              Ответить
                  • Плюсы говно, но все остальные языки, придуманные человечеством, у них отсасывают.
                    Ответить
                    • А давайте проверим. Что у нас ещё есть?

                      1. Objective-C.

                      2. D.

                      3. Object Pascal (Free Pascal, Delphi XE).

                      4. Язык Ада.

                      5. Rust.

                      6. Go.

                      7. Ocaml, F#.

                      8. Haxe.

                      9. Eiffel.

                      Кто сможет упорядочить эти языки по говнистости (с обоснованием)?
                      Ответить
                      • 1. Go. Потому что goвно.
                        Ответить
                        • А не кажется ли вам, что раст похож на перл? https://github.com/acdha/mountstatus/pull/2/files
                          Мне вот вдруг показалось.
                          Ответить
                          • Показалось. В Перле повсюду были бы @#$%^&.
                            Ответить
                            • В расте они были до 0.9, где их поменяли на плюсообразные <<<>>>
                              Ответить
                      • 1. Rust. Не нужен, потому что похож на кресты.

                        2. Go. Не нужен, потому что похож на кресты.

                        3. Objective-C. Не нужен, потому что Apple.

                        4. D. Не нужен, потому что он никому не нужен.

                        5. Eiffel. Не нужен, потому что он никому не нужен.

                        6. Ocaml. Не нужен, потому что он никому не нужен.

                        7. Haxe. Не нужен, потому что он никому не нужен.

                        8. Язык Ада. Не нужен, потому что ухудшенный Pascal

                        9. Object Pascal (Free Pascal, Delphi XE). Каеф, ибо Никлаус Вирт.

                        10. F#. Каеф, функциональщина под .NET
                        Ответить
            • Этот праздник со слезами на глазах...
              Ответить
    • Для полного счастья можно интерпретировать этот асм в компайлтайме.
      Ответить
    • Ура, товарищи! Теперь в ДЦП Компилер Коллекшн можно писать асмокод без кавычек, как в MSVC!
      Ответить
    • лол, "экмарулон"
      Ответить

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