Здравствуйте, eskimo82, Вы писали:
CC>>Рассматривать реализацию в отрыве от ОС просто не имеет смысла. E>C++ традиционно не привязан к какой либо ОС.
Подкапотные детали рантайма — привязаны.
CC>>Ещё раз, у нас это вообще то уже лет пять назад работало в production. E>То что это как-то работало в момент написания — нет сомнений. Более интересный вопрос — а сейчас то работает ? Если пересобрать другой версией компилятора — будет работать ?
Версии DDK меняли один раз, когда W2012 вышла. Работало.
E>>>Что касается gcc то там С++ исключения реализованы по другому. Поэтому ты не сможеш просто-так собрать модуль ядра с поддержкой исключений. CC>>Кстати, а чем же так отличается GCC реализация что в линуксовом кернеле её нельзя использовать для бросания исключений внутри модуля? E>Надо писать собственную реализацию раскрутки стека. Учитывая то, что ABI С++ постоянно нестабилен (как в винде, так и в линуксах), то поддержка этого кода для разных версий gcc становится проблемой. В тех же виндах стековый фрейм с информацией о catch меняется от версии к версии — каике-то поля добавляются, какие-то исчезают.
Не надо, она уже написана микрософтом и не менялась почти лет 10 как.
В Win x64 больше нет стековых фреймов для exceptions: http://msdn.microsoft.com/en-us/library/8ydc79k6.aspx
Там же кстати можно покликать на версию студии и убедиться что никакой разницы нету.
E>Вторая проблема, как я уже говорил, состоит в сопряжении уже существующего сишного кода с исключениями. Сишные код не предполагает что точка возврата может произойти в любом месте, и поэтому в нем изначально нет никакой exception-safety.
У нас нет сишного кода. Что за код вызывает нас — нас не интересует, потому как любые исключения из нашего модуля мы не выпускаем, ибо будет гарантированный бадабум.
E>>> Более того, если ты вдруг собереш свой приплюсный виндово-ядровый код другим компилятором, или даже другой версией студии у тебя будет масса интересных сюрпризов. CC>>В винде драйвера собираются с помощью DDK, там вообще свой компилятор идёт в комплекте. E>Это компилятор С++ ? Он развивается ? У него одна единственая версия ?
Да, да, нет.
E>>> Ты вообще соображаеш какую говнояму ты таким образом выкапываеш для дальнейшей поддержки твоего кода ? CC>>Я прекрасно понимаю как оно внутри работает. 4 года поддерживали, никаких проблем. E>А 10 лет сможете поддерживать?
Лехко. Впрочем тот проект уже закрыт ибо нас купила не MS.
E>>>Ты даже не понял о чем я говорю. CC>>Про макросы. E>Про макросы, но про немного другие макросы, чем ты себе представляеш.
Те макросы определяются не через #define?
E>>>И, пока ты там не появился, весь в белом и на коне, ничего взлететь не могло. Ага, унылый сказочник. CC>>Нет, я занимался другими вещами, попутно наблюдая за их танцами с саблями. E>Т.е. ты не знаком с деталями танцев, а делаеш вывод глядя со стороны ?
Ещё как знаком, ибо дебажил код с результатами их трудов.
CC>>
Имеенно тогда увидел его уродливость С++. С++-кривое, уродливое безобразие.
E>Он пишет про уродливость (в каком-то его понимании), а не про то, что язык плохой.
Т.е. "кривое, уродливое безобразие" означает что язык хороший?
E>>>Ты опять мешаеш всё в кучу, толи по глупости, толи из-за не понимания. Аксес виолайшен — это SEH исключение, оно из более низкого уровня абстракции. В языке С++ нет никаких access violation. CC>>Ты ж сам только что писал что в винде вся исплементация рантайма для исключений сделана через SEH, забыл? Поэтому что SEH что С++ исключение в ядре суть одно и то же, только с разными параметрами. E>Нет. Ты допускаеш грубую ошибку — путая уровни абстракции — либо ты пишеш на С++ и не знаеш ни о каких access violation, либо ты пишеш на каком-то другом, своем собственном, языке.
Я системщик. Для меня "уровни абстракции" которые надо учитывать и использовать простираются вплоть до железа. Поэтому знать обо всём что происходит неявно — моя прямая обязанность.
E>Это тоже самое, например, что в коде на С++ исилено использовать низкоуровневые функции Си, с соответсвующими следствиями.
Что такое "низкоуровневые функции Си" и почему это их вдруг нельзя вызывать?
E>А вот сгенерированые фреймы имеют кучу различных версий свой структуры.
Судя по докам они с VS2005 не менялись.
CC>>>>Можно прикрутить RTTI, можно сделать свои классы с блекджеком и всем что к нему прилагается. E>>>Тебе это придется делать в любом случае — что бы понять что за исключение ты поймал и надо ли продолжать раскрутку стека. CC>>__except позволяет решать этот вопрос без RTTI. E>Этот вариант даже еще хуже чем собственый unwind. В первом случае — у тебя хотя бы весь бойлерплайтный код вынесен в одно место.
Я тебе дал два варианта: вернуть RTTI или сделать через except если твоему коду достаточно всё ловить через аналог catch(...)
E>>>Ты хоть понимаеш сколько малокоректного говнокда из полухаков это стоит ? Такое достойно только зеленого юнца воображающего себя кулхацкером. На самом деле — это даже не смех, а сплошные слезы глядя на этого горе-кулхакера. CC>>На сколько поинтов выросло твоё ЧСВ при написании этой фразы? E>Ни на сколько, просто констатирую факт.
Не надо ложной скромности!
E>>>Нормальным разработчикам. CC>>Под нормальным разработчиком ты явно понимаешь себя. CC>>+100 к ЧСВ?
Значит угадал.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[29]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, eskimo82, Вы писали:
E>На устройстве — несколько дырок ефернета, немного юсб и разьем питания. E>Собрали сборку — ничего не работает. Зайти по ssh невозможно. E>Будь добр, озвучь свои дальнейшие действия.
Принудительно крэшай через serial debug port, смотри потом в дамп.
Или у вас этой возможности нету?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[12]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, CreatorCray, Вы писали:
CC>Userspace тут вообще ни при делах, в DDK свой рантайм и свой компилятор. Драйвера собираются им.
Ага, чествуется эксперт. Извини — без обид, но нет DDK уже как сто лет, есть WDK. И идет он такой с висты.
ИМХА больше тут тереть нечего. О чем мы говорим?
Не все кто уехал, предал Россию.
Re[13]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Ага, чествуется эксперт.
Ну всё, ты меня раскусил, вот тебе пирожок.
AWW> Извини — без обид, но нет DDK уже как сто лет, есть WDK. И идет он такой с висты.
Да мне пофигу. Я им пользоваться начал ещё когда он назывался DDK. И ставлю я их в пути типа D:\WinDDK\7600.16385.1\
AWW>ИМХА больше тут тереть нечего.
Ну так проходи дальше тогда.
AWW> О чем мы говорим?
Судя по написанному тобой — обо мне.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
A>у нас тут есть специальный тег для кода, если ты не знал.
Извиняйте, знаю про тег, но он, похоже, не работает: на предпосмотре всё сбилось в одну
строчку, без перевода строк. Разбираться не стал, некогда, отправил так.
Re[29]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, eskimo82, Вы писали:
ХГД>>Код в студию сначала. Равно как и версии всего софта, что использовался. Не охота гадать по каким-то мутным сказкам. E>В этом коде несколько миллионов строк, над ним одновременно работают больше сотни человек. Ты столько прочесть не сможеж.
E>Вот тебе воодная: E>На устройстве — несколько дырок ефернета, немного юсб и разьем питания. E>Собрали сборку — ничего не работает. Зайти по ssh невозможно. E>Будь добр, озвучь свои дальнейшие действия.
Ты, милок, рамсы не попутал? Ты кто ваще такой чтобы мне экзамены устраивать? Усохни.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[30]: Достаточно ли знать С без знания С++ для устройства
BZ>вот мы и выяснили какой язык необходимо знать для устройства в рф на работу...
Блин, Булат, ну сыграй ты уже в игру тушка-или-чучело, хоть к Р-шняку стукнись, он в Германии сейчас. Больно видеть, как ты на оно исходишь, живя здесь.
<Подпись удалена модератором>
Re[32]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, denisko, Вы писали:
D>>Блин, Булат, ну сыграй ты уже в игру тушка-или-чучело
BZ>и что от этого изменится?
Мироощущение и пищеварение. Будешь жить в нормальной стране пить пиво и есть колбасу, заниматься работой и не лезть в политику.
<Подпись удалена модератором>
Re[34]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, denisko, Вы писали:
D>Мироощущение и пищеварение. Будешь жить в нормальной стране пить пиво и есть колбасу, заниматься работой и не лезть в политику.
а вариант что в этой стране всё же научатся варить пиво — даже не рассматривается?
Люди, я люблю вас! Будьте бдительны!!!
Re[35]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, denisko, Вы писали:
D>>Мироощущение и пищеварение. Будешь жить в нормальной стране пить пиво и есть колбасу, заниматься работой и не лезть в политику.
BZ>а вариант что в этой стране всё же научатся варить пиво — даже не рассматривается?
Не обижайся, но как тебе нравится, варить точно не научатся. Точнее пиво по объективным показателям будет не хуже, но твое мироощущение не изменится. Пкм в ближайшие лет > 300.
<Подпись удалена модератором>
Re[36]: Достаточно ли знать С без знания С++ для устройства
Здравствуйте, denisko, Вы писали:
D>Не обижайся, но как тебе нравится, варить точно не научатся. Точнее пиво по объективным показателям будет не хуже, но твое мироощущение не изменится. Пкм в ближайшие лет > 300.
Здравствуйте, CreatorCray, Вы писали:
CC>Знание всего подмножества никого не интересует. Всем почему то надо умение решать задачу, используя данный инструмент. CC>Если для решения задачи какие то возможности инструмента никогда в жизни не пригодятся — никого не волнует, знаешь ты их или нет.
А вот представь, задача — изменить фунциональность системы в соответсвии с изменившимися спецификациями. А твой предшественник Василий П. тщательно изучал стандарт С++ и методично внедрял в код каждую показавшуюся ему интересной фичу.
Re[10]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Трурль, Вы писали:
Т>А твой предшественник Василий П. тщательно изучал стандарт С++ и методично внедрял в код каждую показавшуюся ему интересной фичу.
Правильный менеджер выгонит Василия ещё до того как он внедрит каждую фичу. Ибо это типичный синдром "укушенных Александреску"
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
R>>99% тех, кто на нем пишет — это те что ниасилили Scala. A>только C vs C++ не имеет никакого отношения к Java vs Scala. A>Java и Scala — это разные языки для одной платформы, как например Delphi, С++ и D, или C# и VB.
A>А С — это просто урезанный С++, по этому если ты знаешь С, но не знаешь С++,
Здравствуйте, Abyx, Вы писали:
A>- предпочитает использование небезопасных конструкций языка
Пришел к нам как-то чувак, который был икспертом в C++. И нашел код, в котором кастились указатели. Почему они кастились, этого я не помню, но была уважительная причина. Скорее всего, они рутились через LPARAM. Важно, как они обратно приводились к Type* — через старый добрый C-cast. Но это же, плять, так небезопасно! Конечно же, надо вставить сиплюсплюсный супербезопасный dynamic_cast<> и проверку на 0. Чего несчастный урод не потрудился выяснить, это что мы собираем проект под платформу, которая не поддерживает RTTI. Как я узнал об этом замечательном рефакторинге? А в посленовогодние праздники написали мне в скайп из европы: йебалайтунг руссиш швайнен программен краш-краш!! Они там с 1 января пытались заюзать новую версию.
Вот такие вот они, безопасные конструкции языка. Что характерно, компилятор, линкер, IDE — никто даже не пискнул.
Затем, в моем личном хит-параде идут любителя заменять небезопасные указатели на ссылки. Это ничего, что объект создается на куче чуть выше по колстеку. Это ничего, что по своей сути родительская и дочерняя функции имеют трехзначную логику. Это ничего, что теперь для вызова функции на стеке надо создавать немалый суррогатный объект, а в его конструктор добавлять детектор суррогатности (зачем выполнять дорогостоящие операции, если объект все равно — пустышка?). Ничего, что в сигнатуру дочерней функции надо добавлять булевский параметр isValid, а поскольку булевские параметры — моветон, заводить enum, выносить его в околокорневой неймспейс. Главное, что теперь все это будет — БЕЗОПАСНО!
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, 0BD11A0D, Вы писали:
BDA>Пришел к нам как-то чувак, который был икспертом в C++. BDA>они обратно приводились к Type* — через старый добрый C-cast. Но это же, плять, так небезопасно! Конечно же, надо вставить сиплюсплюсный супербезопасный dynamic_cast<> и проверку на 0.
Это не настоящий С++сник, это просто каску нашёл теоретик. Надо гнать сцаными тряпками.
Вообще порой думается что и к С и к С++ без ассемблерного и системного бэкграунда нельзя подпускать. Обколются своей марихуаной понаизучают по книжкам и пишут потом такой же теоретический код.
BDA>Затем, в моем личном хит-параде идут любителя заменять небезопасные указатели на ссылки. Это ничего, что объект создается на куче чуть выше по колстеку.
Это тоже теоретик, гнать его нафиг.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Достаточно ли знать С без знания С++ для устройства на работу?