E>>У меня для тебя плохие новости CC>Да ну!
E>>стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new. CC>Это называется C++ runtime
Всё вместе это образует стандартную библиотеку. Которую практически невозможно отделить от компилятора, разве что только подхачить, но тогда и C++ уже не будет.
Здравствуйте, eskimo82, Вы писали:
E>Всё вместе это образует стандартную библиотеку. Которую практически невозможно отделить от компилятора, разве что только подхачить, но тогда и C++ уже не будет.
Дюд, не неси пурги. Ничего неотделимого там нет, это всё сказки.
Я лично писал на С++ там, где не было предусмотрено родного рантайма. Реально необходимые функции пишутся на том же С++, пара функций либо naked с интринсиками либо просто сразу на асме.
C++ это именно то, что встроено в язык. Всё что написано на самом С++ — вспомогательные либы.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, SaZ, Вы писали:
M>>Сложность O(n)? SaZ>Да,
SaZ>но только в абстрактной операционной системе, где сложность реализации таймеров О(1). Увы, в реальности таких ОС пока нет .
Это другое
CC>Я лично писал на С++ там, где не было предусмотрено родного рантайма. Реально необходимые функции пишутся на том же С++, пара функций либо naked с интринсиками либо просто сразу на асме.
Ты занимался хакерским анонизмом, т.к. поддерживать этот геморой людям теперь приходится с каждым выходом новой версии компилятора/платфоры/железа.
И еще поди ушел оттуда оставив это "подарком" для последователей.
Здравствуйте, eskimo82, Вы писали:
E>Ты занимался хакерским анонизмом, т.к. поддерживать этот геморой людям теперь приходится с каждым выходом новой версии компилятора/платфоры/железа.
Дооо, драйвера конечно же пересобирают каждый раз как новый компайлер выйдет, ага. И в каждой версии конечно же меняют ABI.
E>И еще поди ушел оттуда оставив это "подарком" для последователей.
Где юг показать или сам найдёшь?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
CC>Дооо, драйвера конечно же пересобирают каждый раз как новый компайлер выйдет, ага.
Драйвера не пишут на С++. А если и пишут то на уродливом "Си с классами и темплейтами без всего остального".
Даже без шикого использования темплейтов, т.к. многие вещи требуют поддержки со стороны компилятора и стандартной библиотеки
(например предикат std::is_pod или std::is_trivial, не говоря уже о всяких std::move и std::forward)
CC>И в каждой версии конечно же меняют ABI.
Именно так дело и обстоит — ABI С++ настолько нестабильно что двоичную совместимоть C++ кода никто серьезно даже и не рассматривает в виде ее отсутсвия.
E>>И еще поди ушел оттуда оставив это "подарком" для последователей. CC>Где юг показать или сам найдёшь?
Наговнокодил и свалил — теперь сознаваться неудобно вдруг стало ?
А как оно работает? Я так понимаю, на каждый элемент создаётся новый поток. Т.е. где-то в ОС создаётся список потоков. Потом каждый поток засыпает на N секуд. Это помещает поток в некую очередь спящих потоков. Эта очередь спящих потоков упорядочена? Насколько я понимаю, да, то собственно тут сортировка и происходит, т.е. мы используем сортировку из ядра ОС. Вероятно эта очередь реализована, как дерево. Поэтому такая сортировка по сути есть сортировка с помощью вставки в дерево поиска.
Здравствуйте, eskimo82, Вы писали:
CC>>Дооо, драйвера конечно же пересобирают каждый раз как новый компайлер выйдет, ага. E>Драйвера не пишут на С++.
Доброе утро! Много лет уже как.
E> А если и пишут то на уродливом "Си с классами и темплейтами без всего остального".
А можно перечислить это самое "остальное"?
E>Даже без шикого использования темплейтов, т.к. многие вещи требуют поддержки со стороны компилятора и стандартной библиотеки
И какие же?
E>(например предикат std::is_pod или std::is_trivial, не говоря уже о всяких std::move и std::forward)
Ты правда думаешь что это можно только через std сделать?
И самому написать аналог ну никак?
Более того, что эти врапперы реально кому то всерьёз настолько нужны что надо применять именно их.
Совсем народ отучился понимать что происходит под капотом.
CC>>И в каждой версии конечно же меняют ABI. E>Именно так дело и обстоит — ABI С++ настолько нестабильно что двоичную совместимоть C++ кода никто серьезно даже и не рассматривает в виде ее отсутсвия.
Вот поднял ты версию одного и того же production grade компилятора а там — трах тибидох, всё поменялось, да?
Самому не смешно?
E>PS: Юг ты и сам найдеш.
Давай давай, ветер в спину
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, vsb, Вы писали:
vsb>А как оно работает? Я так понимаю, на каждый элемент создаётся новый поток. Т.е. где-то в ОС создаётся список потоков. Потом каждый поток засыпает на N секуд. Это помещает поток в некую очередь спящих потоков. Эта очередь спящих потоков упорядочена? Насколько я понимаю, да, то собственно тут сортировка и происходит, т.е. мы используем сортировку из ядра ОС. Вероятно эта очередь реализована, как дерево. Поэтому такая сортировка по сути есть сортировка с помощью вставки в дерево поиска.
Нет, это стометровка бегунов с известными скоростями бега: стартуют все вместе, а финишируют как раз по сортированной последовательности.
CC>>>Дооо, драйвера конечно же пересобирают каждый раз как новый компайлер выйдет, ага. E>>Драйвера не пишут на С++. CC>Доброе утро! Много лет уже как.
Ты там слово class увидел и решил что это C++ ?
В этом случае у меня для тебя плохие новости.
E>> А если и пишут то на уродливом "Си с классами и темплейтами без всего остального". CC>А можно перечислить это самое "остальное"? E>>Даже без шикого использования темплейтов, т.к. многие вещи требуют поддержки со стороны компилятора и стандартной библиотеки
Ну открой стандарт и почитай. Или читать не умееш, хочеш чтобы тебе рассказали ?
E>>(например предикат std::is_pod или std::is_trivial, не говоря уже о всяких std::move и std::forward) CC> CC>Ты правда думаешь что это можно только через std сделать? CC>И самому написать аналог ну никак? CC>Более того, что эти врапперы реально кому то всерьёз настолько нужны что надо применять именно их.
Эти "враперы" — часть компилятора и могут быть написаны на специальном вендоро-зависимом не C++ языке.
А могут и вообще не иметь исходника.
CC>Совсем народ отучился понимать что происходит под капотом.
По капотом стандартной библиотеки нет никакого C++. А есть совершенно другой compiler-bound язык.
CC>>>И в каждой версии конечно же меняют ABI. E>>Именно так дело и обстоит — ABI С++ настолько нестабильно что двоичную совместимоть C++ кода никто серьезно даже и не рассматривает в виде ее отсутсвия. CC> CC>Вот поднял ты версию одного и того же production grade компилятора а там — трах тибидох, всё поменялось, да? CC>Самому не смешно?
Нет не смешно. Именно так и обстоят дела и в gcc, и в clang, и даже в студии.
E>>PS: Юг ты и сам найдеш. CC>Давай давай, ветер в спину
У тебя штаны упали и шнурки развязались, одна голая жопа сверкает.
N>AMD драйвера для видеокарт на плюсах пишет, классы, наследование и шаблоны там есть. Так что у меня для тебя плохие новости — ты застрял в 80-х.
У меня для тебя тоже плохие новости: AMD драйвера на плюсах не пишет и не может писать полноценно на плюсах т.к. поддержка исключений C++ отсутсвует в Linux kernel.
А это значит — чуть что и kernel panic.
Т.к. исключение мы не то что обработать не можем, мы даже выбросить его не можем. В целом так себе удовольствие. И влечет это за собой невозможность полноценно использоваать плюсы, начиная от невозможности корректно сообщить об ошибке из конструктора (привет двум стадиям конструирования из MFC и признакам isValid), заканчивая невозможностью использовать почти весь функционал стандартной библиотеки (контейнеры, некоторые алгоритмы типа sort, умные указатели, etc...)
Т.е. практически всего того что делает язык именно плюсами.
Что остается ? Остается "Си с класами" и наивное убеждение что код написан на плюсах.
Здравствуйте, eskimo82, Вы писали:
E>Т.к. исключение мы не то что обработать не можем, мы даже выбросить его не можем.
А, ну понятно какого уровня у тебя понимание.
И бросаем и ловим, более того в кернеле дохрена чего надо заворачивать в catch, даже C API.
E>заканчивая невозможностью использовать почти весь функционал стандартной библиотеки (контейнеры, некоторые алгоритмы типа sort, умные указатели, etc...)
Весь функционал как раз доступен, не в std реализации разумеется.
E>Т.е. практически всего того что делает язык именно плюсами.
плюсами язык делают исключительно те фичи, которые нельзя реализовать библиотечно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
E>>Т.к. исключение мы не то что обработать не можем, мы даже выбросить его не можем. CC>А, ну понятно какого уровня у тебя понимание. CC>И бросаем и ловим, более того в кернеле дохрена чего надо заворачивать в catch, даже C API.
У тебя путаница между C++ исключениями, SEH и расширениеями одного компилятора.
Видимо вызвананая професиональной деформацией на почве одной и далеко не лучшей платформы.
E>>заканчивая невозможностью использовать почти весь функционал стандартной библиотеки (контейнеры, некоторые алгоритмы типа sort, умные указатели, etc...) CC>Весь функционал как раз доступен, не в std реализации разумеется.
Не доступен, либо доступен ногами через одно место. И я уже привел выше некоторые примеры, которые ты благополучно проигнорировал.
E>>Т.е. практически всего того что делает язык именно плюсами. CC>плюсами язык делают исключительно те фичи, которые нельзя реализовать библиотечно.
Стандартная библиотека не реализуется "библиотечно", это неотьемлимая часть языка с точки зрения API и неотьемлимая часть (библиотек поддержки) компилятора с точки зрения реализации.
Здравствуйте, eskimo82, Вы писали:
CC>>И бросаем и ловим, более того в кернеле дохрена чего надо заворачивать в catch, даже C API. E>У тебя путаница между C++ исключениями, SEH и расширениеями одного компилятора.
Это ты по какой то причине пытаешься разделить по сути одну и ту же сущность на какие то совершенно раздельные.
E>Видимо вызвананая професиональной деформацией на почве одной и далеко не лучшей платформы.
А, ещё один адепт "элитной ОС", где главный пингвин С++ ниасилил а потому в ядро его не пускает. Ну да, у вас там в общем случае с заменой RTL плоховато.
Благо есть другие ОС, где народ не хочет бойлерплейтить и таки почесался по поводу C++ RTL для ядра.
Если чо в ядре макоси в кернеле поддержка C++ имеется.
E>Не доступен, либо доступен ногами через одно место.
И много ты кода в кернеле написал чтоб заявлять подобную чушь?
Для меня это bread, butter с толстым слоем икры поверху. Win/BSD/Darwin
E> И я уже привел выше некоторые примеры, которые ты благополучно проигнорировал.
Это просто тебе ответы не понравились.
E>Стандартная библиотека не реализуется "библиотечно"
А header файлы это тогда что?
Т.е. если я сотру все headers от std то внезапно всё перестанет работать?
Вот только на практике компилятору они нафиг не упали — всё работает.
E>, это неотьемлимая часть языка с точки зрения API и неотьемлимая часть (библиотек поддержки) компилятора с точки зрения реализации.
Даже RTL таки заменяемая часть, так что чушь. Берёшь компилер, пишешь на том же самом С++ пару платформенных функций, на которые тот вставляет референсы, ожидая что поддержка платформы будет прилинкована и всё.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
CC>>>И бросаем и ловим, более того в кернеле дохрена чего надо заворачивать в catch, даже C API. E>>У тебя путаница между C++ исключениями, SEH и расширениеями одного компилятора. CC>Это ты по какой то причине пытаешься разделить по сути одну и ту же сущность на какие то совершенно раздельные.
Чувак, ты перепутал в кучу разные сущности и уровни. И все только из-за с виду одного catch, а на самом деле это совершенно разные catch.
E>>Видимо вызвананая професиональной деформацией на почве одной и далеко не лучшей платформы. CC>А, ещё один адепт "элитной ОС", где главный пингвин С++ ниасилил а потому в ядро его не пускает. Ну да, у вас там в общем случае с заменой RTL плоховато. CC>Благо есть другие ОС, где народ не хочет бойлерплейтить и таки почесался по поводу C++ RTL для ядра. CC>Если чо в ядре макоси в кернеле поддержка C++ имеется.
Это ты про FreeBSD сейчас ? Там все также на Си.
E>>Не доступен, либо доступен ногами через одно место. CC>И много ты кода в кернеле написал чтоб заявлять подобную чушь?
Достаточно чтобы открыть тебе глаза.
CC>Для меня это bread, butter с толстым слоем икры поверху. Win/BSD/Darwin
И что ? Это совсем перепендикулярно языку.
E>> И я уже привел выше некоторые примеры, которые ты благополучно проигнорировал. CC>Это просто тебе ответы не понравились.
Да небыло у тебя никаких вменяемых ответов кроме мычания.
E>>Стандартная библиотека не реализуется "библиотечно" CC>А header файлы это тогда что?
Кто тебе сказал, что это header файлы ?
CC>Т.е. если я сотру все headers от std то внезапно всё перестанет работать?
А ты уверен что всегда сможеш их найти ?
E>>, это неотьемлимая часть языка с точки зрения API и неотьемлимая часть (библиотек поддержки) компилятора с точки зрения реализации. CC>Даже RTL таки заменяемая часть, так что чушь.
У меня для тебя совсем плохие новости.
CC>Берёшь компилер, пишешь на том же самом С++ пару платформенных функций, на которые тот вставляет референсы, ожидая что поддержка платформы будет прилинкована и всё.
Ну напиши на том же самом C++ крючек для dynamic_cast или throw.
Здравствуйте, CreatorCray, Вы писали:
E>>Видимо вызвананая професиональной деформацией на почве одной и далеко не лучшей платформы. CC>А, ещё один адепт "элитной ОС", где главный пингвин С++ ниасилил а потому в ядро его не пускает. Ну да, у вас там в общем случае с заменой RTL плоховато. CC>Благо есть другие ОС, где народ не хочет бойлерплейтить и таки почесался по поводу C++ RTL для ядра.
А какие еще существующие сегодня ОС, кроме макос (и то, только в IOKit) используют С++ в драйверах?
Здравствуйте, eskimo82, Вы писали:
E>Чувак, ты перепутал в кучу разные сущности и уровни. И все только из-за с виду одного catch, а на самом деле это совершенно разные catch.
Зависит от того как ты реализуешь под капотом.
CC>>Если чо в ядре макоси в кернеле поддержка C++ имеется. E>Это ты про FreeBSD сейчас? Там все также на Си.
E>Достаточно чтобы открыть тебе глаза.
Так бы и сказал что ничего всерьёз не писал.
E>Это совсем перепендикулярно языку.
А, т.е. язык это что то божественное и непостижимое, а в реальности используется что то совсем другое?
E>Кто тебе сказал, что это header файлы ?
А что это? Магия?
CC>>Т.е. если я сотру все headers от std то внезапно всё перестанет работать? E>А ты уверен что всегда сможеш их найти ?
Что за бред ты несёшь?
CC>>Даже RTL таки заменяемая часть, так что чушь. E>У меня для тебя совсем плохие новости.
Дооо! А если надо С++ на платформе где его раньше не было то с горы спускаются старцы, проводят ритуал и RTL спускается с небес, да!
Это просто кусок кода, platform support library.
И всё.
CC>>Берёшь компилер, пишешь на том же самом С++ пару платформенных функций, на которые тот вставляет референсы, ожидая что поддержка платформы будет прилинкована и всё. E>Ну напиши на том же самом C++ крючек для dynamic_cast или throw.
Ох деточка, не боги горшки обжигают.
Для Wintel будет так:
extern "C" void __stdcall _CxxThrowException (void* pExceptionObject, _ThrowInfo* pThrowInfo)
{
... а тут пиши что хочешь.
Можешь перезавернуть в платформенные, можешь сам корячиться.
}
PVOID __RTDynamicCast (PVOID inptr, LONG VfDelta, PVOID SrcType, PVOID TargetType, BOOL isReference) throw(...)
{
документацию в руки и вперёд!
Функции для того чтоб парсить инфу о типах что нагенерил компилятор в доках описаны, в платформе есть.
}
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока