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

    +160

    1. 1
    http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T

    Часовая презентация Герб Саттера о будущем C++.
    От себя хочется добавить: "Где здесь С++, Герб Саттер?"

    Запостил: CPPGovno, 22 Сентября 2011

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

    • В целом получился какой-то С++\CLI....
      Ответить
    • Doh! Your browser doesn't seem to support Silverlight or HTML5 video or we don't have an HTML5 video for this one.
      Ответить
    • Где здесь код, CPPGovno?
      Ответить
    • Похоже комитет стандартизации С++ ведет нас прямо в лапы ненасытного Майкрософт. :(
      Ответить
    • Там даже генерики для С++ обещали, совместимые с виндовыми. :(
      Ответить
    • Вообще, С++ для встроенных контроллеров - проёбан чуть более чем полностью с выходом нового стандарта C++0x (C++11). А после этого стандартавысера - его даже в линуксе нельзя будет использовать.
      Ответить
      • //fix
        C will dominate in the Linux
        Ответить
      • Почему? Что в новом стандарте помешает контроллерам?
        Ответить
        • То, что под эти контроллеры ещё попробуй напиши компиль под стандарт С++0х... Разработчики не станут до конца стандарт этот реализовывать. Слишком большой получился.
          Ответить
          • вы компилируете прямо на контроллере?

            или... вы хотели сказать/хотите сказать что еще живут/продаются кросс компиляторы помимо GCC - и ими кто-то пользуется??
            Ответить
            • >продаются кросс компиляторы помимо GCC - и ими кто-то пользуется
              Да, например у нас. :(
              Ответить
            • gcc отвратителен.
              http://osdev.ru/viewtopic.php?f=6&t=433
              Ответить
              • да. но зато работает.

                когда я последний раз на С++ под motorola 86k и ppc программировал, коммерческие компиляторы делали отличный код - только пару раз в неделю были либо ICE (internal compiler error) или выскакивали проблемы что то что компилировалось под моторолу не компилировалось под ибм (или наоборот).

                когда перешли на GCC, чистая производительность упала на процентов ~20, но зато появилась возможность вычистить почти весь мусор совместимости компиляторов. когда перешли на 4й GCC, ICE или несовместимостей вообще больше никто не видел - не смотря на то что код компилируется под три платформы.

                это и binutils - и были основными причинами перехода.
                Ответить
              • .
                Ответить
          • Исключения, неймспейсы и что там ещё тоже долго реализовали.

            C++11 и сейчас нигде не реализован полностью. Часть фич просто сахар (auto, новый for) — удобно нетрудно (наверное) в реализации, нулевой оверхед. Часть библиотечных классов функций и так были в бусте. Атомики и т.п. — просто стандартизированные расширения компиляторов. Регэкспы в контроллерах не нужны. Кое-где уточнены формулировки, даны новые гарантии (они и так были де-факто).

            Всё реализовывать и не нужно, только то, что имеет смысл и удобно.
            Ответить
    • Руками так машет, хочется взять и подключить к динамо-машине...
      Ответить
    • Гет Сеттер?
      Ответить
    • Щас придёт тарас и скажет, что С++ хотят превратить в дельфу.
      Ответить
    • Вкратце, про что там? Нет желания воспринимать видео на слух.
      Ответить
      • Посмотри код из последних минут 5-10. Там язык, очень похожий на С++\CLI - это предлагается в следующем стандарте С++ ввести.
        Ответить
        • Постараюсь кратко рассказать, о том что произошло:
          1. MS выдвигает тезис: "Go native! Go C++!"
          Что мы слышим в этой фразе?
          Я, как и многие С++ программисты ожидал, что MS сделают клевую реализацию стандарта C++11, сделают клевые инструменты для разработки/отладки/профилирования.

          2. Нам показывают эту презентацию, суть такова:
          Мы забили на C++11;
          зато, мы сделали generics, property, partial classes, interfaces. (А зачем???)
          У windows8 будет новый API, плотно завязанный на вышеупомянутых возможностях( т.е. он будет не совместим с C++ )
          Ответить
          • раздолбаи.

            у мелкософта, по слухам, привязка чего либо к релизу версии виндов это почти как проклятие: либо ничего из этого не выйдет или если выйдет то будет убито при начале разработки новой версии виндов.
            Ответить
          • У МС и не было никогда по-настоящему компилятора C или C++. Всё время с какими-то загибонами.
            Ответить
            • Тогда у них еще никогда не было браузера
              Ответить
            • Потому что MS всегда было плевать на стандарты с высокой колокольни. Они считают, что только они вправе задавать стандарты, и все должны подстраиваться под них. Продукции, отличной от продукции MS, не существует.
              Ответить
              • ну так следовали бы, напр., Эплу. те так вообще использует Objective C, и не называют же это С++
                Ответить
          • >мы сделали property
            Боян.
            >interfaces
            По моему тоже боян.
            Ответить
            • Я знаю, Саттера об этом даже спрашивали из зала, он ответил:
              С++/CX( так оно называется ) основан на C++/CLI, но компилируется в нативный код.
              Ответить
              • Есть поддержка GC? Или поддержка синтаксического сахара для смартпоинтеров\смартссылок?
                Ответить
                • GC нахуй

                  я хочу управлять временем жизни объектов, а не заниматься джавакрестоблядством
                  Ответить
                  • да ну? я джва года ждал такой с++, чтобы заниматься джваблядством
                    Ответить
                    • не понимаю, в чем проблема делать сразу нормальную архитектуру и пользоваться smart ptr? оверхед не нужен
                      Ответить
                  • Обнаружен нуб
                    Ответить
    • показать все, что скрытоКагбэ второе десятилетие XXI века на носу. Прогрессивное программерское человечество стремится к полностью управляемому коду, без утечек памяти и прочей лабуды. Естественно, вместе с развитием платформы .NET Мелкософт развивает в этом направление и нативные средства разработки. Вроде как драйвера под Семёрку стали в разы стабильнее, чем когда-либо. Во многом благодаря VCC - verified c compiler (помню какой-то евангелист в своей лекции упомянул его).
      Так вот, что вас удивляет? Если Мелкософт добивается стабильности своей оси, зачем им равняться на отсталость других осей и компиляторов?

      [color=grey]ой щас заминусуют линупсоиды и яблофилы...[/color]
      Ответить
      • Вы тэг color на shit-scared заменили бы
        Ответить
      • >линупсоиды
        Ну и как ту не минусовать?
        inb4:припекло
        Ответить
      • >Мелкософт
        >стабильность
        ISHYGDTS
        Ответить
        • Да, стабильность. Благодаря VCC драйвера Семёрки реально стали стабильнее. Но при этом их исходники не скомпилируются никаким другим компилятором Си. Но оно надо? Ведь это драйвера именно для данной конкретной оси.
          Ответить
      • Ставленник майкрософта? За сколько он тебя купил? Ты же понимаешь, что против линукса сейчас идешь? Не тебе прощения!
        Ответить
        • >Мелкософт

          Ставленник майкрософта не размывает бренд.
          Ответить
        • Я не за майкрософт. Я за хороший софт. Если новые средства разработки позволят делать меньше ошибок - я обеими руками за.
          Посмотрим, что получится из WinRT, нового API и нового C++. Надеюсь, всё это скажется положительно.
          Ответить
          • Да этот WinRT- галимая платформа для создания html xaml программ.
            Во всех исходниках С++ гуи для winrt есть переменная mainpage, что нам какбе намикает
            Ответить
      • толсто!

        З.Ы. компилятор в мсвц8 - кал
        про мсвц10 ничего плохого пока сказать не могу, ибо недавно стал пользоваться
        Ответить
        • А я разве упоминал компилятор msvc? Глаза-то разуй! Или жиром глазки заплыли?
          Ответить
      • > Так вот, что вас удивляет?

        Лично меня ничего не удивляет, а лишь просто разочаровывает.

        > Если Мелкософт добивается стабильности своей оси, зачем им равняться на отсталость других осей и компиляторов?

        Мда? Единственная цель Microsoft - это всеми путями получить больше денег, а не сделать свою ОС стабильнее, в отличие как раз от "других осей". Естественно, microsoft-у будет выгодно, если у неё будет качественаня ОС, т.к. будет проще её проталкивать, но тем ни менее, их основной целью является именно втюхивать свой товар, а не делать его качественее. Вот хороший пример их политики - http://www.opennet.ru/opennews/art.shtml?num=31810 .

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

          > я бы сказал тонну слов о некроссплатформенности, неприменимости .NET в высоконагруженных или критических программах
          фэйспалм.жпг
          А мужики-то не знают!

          > патенты
          см. Apple

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

            Продукцию Apple я и без вас ненавижу и никогда не куплю :)

            > А мужики-то не знают!
            Помню в каком-то фильме друг за другом было две фразы "Я знаю, что они обивают людей, но ведь все жерты - преступники!" и "Я знаю что все жертвы - преступники, но ведь они убивают людей!". В фразах одни и те же тезисы, но от манеры изложения мысл меняется на противоположный. Если вспомнить всю кучу дерьма, которая связана с .NET, то я вообще не понимаю, как можно вообще даже задумываться о том, чтобы его хоть где-то применять.

            > см. Apple
            По мне, Apple ничем не лучше Microsoft. Более хитрый и гибкий, но тем ни менее :)
            Ответить
          • >> А вы про продукцию Apple никогда не слышали, не? На их компы всегда было сложно установить чужой софт.

            правда?

            appstore +
            http://www.macports.org/ +
            vmware || parallèles +
            bootcamp
            etc
            Ответить
          • > На их компы всегда было сложно установить чужой софт
            поскольку Mac OS X является полноценным UNIX, для яблофилов открыт путь в безграничный мир OpenSource. Есть даже умельцы, которые прикрутили к маку gentoo-репозитории.
            Ответить
      • Виндузятникам нужен нормальный аналог Valgrind... Замечательная тулза, все утечки у меня находит (которые случаются раз в год, т.к. я использую умные указатели и подсчёт ссылок). И всего-то нужно пару минут на его использование, чтобы всё пофиксить.

        И никаких супер-систем не нужно.
        Ответить
    • http://goo.gl/TWF6N
      Ответить
    • Как Герб Саттер нас умудрился предать? Ему не стыдно?
      Ответить
    • Няшная сишка крест крест грядёт. :(
      Ответить
    • Инфа про новые возможности C++/CX для WinRT:
      http://msdn.microsoft.com/en-us/library/windows/apps/hh454062(v=VS.85).aspx
      Ответить
      • А ведь же не пишут, есть ли реализация множественного наследования для ref классов. Вот хитрецы...
        Ответить
        • Но даже ежу понятно, что множественного наследования у них не будет. Максимум добавят через костыли в новую версию COM (ref-классы) множественное наследование от интерфейсов, тк его сейчас там пока нет. И то, скорее всего даже этого не будет.
          Ответить
    • Вообщем, я так понял, C# сейчас стал гораздо менее запланированным для вин8, чем С++ с расширением.

      Представляю, как кучи макак с C# и С++/CLI, привыкшие к сборке мусора ломануться на С++/CX и огребут нехилые утечки памяти из-за циклических ссылок, тк сборки мусора в нем нет.

      Там используется обычный подсчет ссылок.
      Ответить
      • показать все, что скрытоПля, ну как же вы задолбали, злопыхатели дотнета!
        Не нравится шарп - не пишите на нём. И не пишите ничего о нём.
        C# в частности и платформа .NET в целом живут и здравстуют. Framework 4.5 и C#5 на подходе. MS от них не отказывается и продолжает развивать. Судя по последним новостям, происходит наоборот некоторый отказ от нативного C++ - его делают более управляемым.
        Ответить
        • >Судя по последним новостям, происходит наоборот некоторый отказ от нативного C++ - его делают более управляемым
          Лолчто? Видео смотрели? По ссылке ходили? Ну хорошо управляемым и полностью подконтрольным программисту С++ был всегда. А вот C++/CLI они решили заменить на полностью нативный unmanaged С++/CX с поддержкой на уровне стандарта языка новой версии COM-интерфейсов и объектов. И GC там совсем нет.
          По сути ничего нового в язык не добавляется - просто стандартизированный на уровне стандарта ABI, ECMA и в соглашении с комитетом стандартизации С++: расширение языка, поддерживающее интерфейс взаимодействия между модулями.
          Ответить
          • COM - это и есть повышение управляемости, в моём понимании. GC совершенно ни при чём.
            Ответить
            • Вы вообще знаете, что такое управляемый код?
              Управля́емый код (англ. managed code) — термин, введённый Microsoft для обозначения кода программы, исполняемой под «управлением» виртуальной машины .NET — Common Language Runtime. При этом обычный машинный код называется неуправля́емым кодом (англ. unmanaged code).
              Ответить
        • WinRT - замена win api в Windows 8. Они решили забыть про DLLhell раз и навсегда. Хорошее начинание. Вся win api теперь будет в COM. Имхо, давно пора.
          Плохая новость: GDI не будет в вин8. Остальные врапперы для апи вроде поддерживаются пока...
          Ответить
          • А как быть с COM hell?
            Ответить
            • Можно определение COMhell?
              DLLhell:
              Когда программа работает лишь с одной версией библиотеки. Пытаешься ставить более новую или более старую - начинает работать одна программа, а другая перестаёт. И с этим ничего не поделать. Приходится придумывать всякие режимы совместимости для программ и тд. С COM эта проблема легко решаема.
              Ответить
              • Это частный случай dependency hell. А пока продолжают выходить новые программы и новые версии компонент, от него полностью избавиться невозможно. И всё имеет свою цену.
                Ответить
                • В COM такой проблемы нет. Просто выходит пропатченная версия COM-объекта и при этом меняется его GUID или GUID его фабрики. Всё. И старые программы работают и новые. Так в чем COMhell заключается? Неужели неудачная шутка?
                  Ответить
                  • Ну вот вышла новая версия продукта, предоставляющего новую, расширенную версию COM-интерфейса. Старая версия тоже предоставляется. Но внутренняя реализация её поменялась и в некоторых особенных случаях работает не так, как в предыдущей версии этого продукта. В некоторых программах, использующих первую версию интерфейса, глюки при работе с новой версией по старому интерфейсу. А другие программы требуют уже вторую версию интерфейса. Более того, появятся программы которые используют как компонент, зависящих от первой версии, так и зависящих от второй. Проблема?

                    Да, это была неудачная шутка. Термина такого нет, COM избавился от наиболее одиозных проблем DLL (ценой громоздкости и распухания), но на более высоком уровне конфликты возможны.
                    Ответить
                    • >Старая версия тоже предоставляется. Но внутренняя реализация её поменялась

                      Я уже сказал, что гуид у новой реализации тоже поменялся. Поэтому старая программа использует не старую не изменившуюся реализацию со старым гуидом, а новая только скомпилированная прога - новую реализацию с новым гуидом.
                      Поэтому никаких ошибок быть не может, кроме кривых рук разработчиков или осдевелоперов.
                      Ответить
                      • > гуид у новой реализации тоже поменялся
                        а прогид остался таким же как и был :-Р
                        Ответить
                        • Я уже упомянул про возможность ошибок девелоперов.
                          Ответить
          • люди говорят, WinRT - это просто COM-подобная обёртка вокруг win32. Under hood, он всё равно ссылается на обычные kernel32 и user32.

            в принципе никто не мешает вам прямо щас сделать COM-wrapper для winapi и представлять, что это WinRT.

            но маркетологи уже окрестили это революцией и прорывом... очередной vendor-lock in же, чтобы покупали новую ось, так как старые WinRT не поддерживают.
            Ответить
            • CAPICOM так устроен.
              тут они как бы подводят к тому, чтобы не документировать всякие ZwXXX и RtlXXX, а получить свободу их изменять
              Ответить
              • дык насколько я помню ZwXXX и RtlXXX и так не документированы. они экспозируются программистам через промежуточный слой без префиксов.

                про писательство драйверов правда ничё сказать не могу, может там и действительно напрямую ссылаются в те функции

                вообще я насколько понял, единственный плюс WinRT -- это повышение скорости .NET, потому что теперь вызов к ядру будет не через тяжеловесный P/invoke, а напрямую
                Ответить
                • он хотел сказать, что все функции winapi хотят сделать не документированными, вплоть до полного выпиливания их из системы.
                  Ответить
    • Хуйня, в любом случае никто будет мешать вам писать в старом стиле, на старом subset'е.

      Как будто кто-то заставляет пользоваться всем этим.

      Забейте болт.

      Ну а вообще что каждый год Майкрософт изобретает новый язык/инструмент, забрасывая предудыщие, как-то начинает заёбывать.
      Ответить
      • > каждый год Майкрософт изобретает новый язык/инструмент, забрасывая предудыщие
        а вот это действительно выбешивает
        Ответить
    • Вообще, когда WinApi пойдет под снос, то перестанет куча библиотек работать. GDI они в 8ке уже пообещали снести. Куча оконных библиотек пойдет Билу под копчик. Будет только QT работать, в виду его особого строения, после небольшой переделки.
      Ответить
      • >GDI они в 8ке уже пообещали снести
        они просто не включили GDI в WinRT, который есть просто стандартазированная COM-обёртка вокруг winapi.

        winapi всё равно присутствует в win8, в том числе и GDI.

        ведь до сих пор даже Windows 7 эмулирует MSDOS программы. они сильно заботятся о backward compatibility. не говоря уже о более позднем GDI. никуда его не денут.

        просто их маркетологи запутали всех.
        Ответить

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