Sleep Sort
От: licedey  
Дата: 20.11.18 21:19
Оценка: +1 -2 :))) :))) :))) :))) :)
public class Program
{
   public static void Main(string[] args)
   {
      var toSortInts = new[] {1, 8, 5, 22, 3};
      var sorted = toSortInts.Select(curInt => new Task(() =>
         {
            Thread.Sleep(curInt);
            Console.WriteLine(curInt);
         }))
         .ToList();

      sorted.ForEach(t => t.start());

      Console.ReadLine();
   }
}
Re: Sleep Sort
От: bnk СССР http://unmanagedvisio.com/
Дата: 20.11.18 21:58
Оценка: +7
Здравствуйте, licedey, Вы писали:

Баянище же
Re: Sleep Sort
От: CreatorCray  
Дата: 20.11.18 23:02
Оценка: +1
Здравствуйте, licedey, Вы писали:

Было ж уже
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Sleep Sort
От: VikDD  
Дата: 21.11.18 09:44
Оценка:
Я так понимаю что уже готовы результаты от тестировщиков для проверки на границах int'ов?
С уважением, VikDD
Re: Sleep Sort
От: SaZ  
Дата: 21.11.18 10:14
Оценка:
Здравствуйте, licedey, Вы писали:


L>
L>public class Program
L>{
L>   public static void Main(string[] args)
L>   {
L>      var toSortInts = new[] {1, 8, 5, 22, 3};
L>      var sorted = toSortInts.Select(curInt => new Task(() =>
L>         {
L>            Thread.Sleep(curInt);
L>            Console.WriteLine(curInt);
L>         }))
L>         .ToList();

L>      sorted.ForEach(t => t.start());

L>      Console.ReadLine();
L>   }
L>}
L>


У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:
#include <iostream>
#include <vector>
#include <thread>
#include <chrono>
#include <algorithm>
 
 
template< typename It >
void sleepSort( const It& begin, const It& end )
{
    if ( begin == end )
        return;
    const auto max = *std::max_element( begin, end );
    const auto min = *std::min_element( begin, end );
 
    for ( auto it = begin; it != end; ++it )
    {
        std::thread( [min, i = *it]
        {
            std::this_thread::sleep_for( std::chrono::milliseconds( i - min ) );
            std::cout << i << std::endl;
        } ).detach();
    }
    std::this_thread::sleep_for( std::chrono::milliseconds( max - min + 1 ) );
}
 
int main( int argc, char *argv[] )
{
    std::vector<int> v = { 20, 5, 15, 10, -5, };
    sleepSort( v.begin(), v.end() );
 
    return 0;
}
Re[2]: Sleep Sort
От: Михaил  
Дата: 21.11.18 10:27
Оценка: +1 -3
Здравствуйте, SaZ, Вы писали:


SaZ>У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:

SaZ>
SaZ>#include <iostream>
SaZ>#include <vector>
SaZ>#include <thread>
SaZ>#include <chrono>
SaZ>#include <algorithm>
 
 
SaZ>template< typename It >
SaZ>void sleepSort( const It& begin, const It& end )
SaZ>{
SaZ>    if ( begin == end )
SaZ>        return;
SaZ>    const auto max = *std::max_element( begin, end );
SaZ>    const auto min = *std::min_element( begin, end );
 
SaZ>    for ( auto it = begin; it != end; ++it )
SaZ>    {
SaZ>        std::thread( [min, i = *it]
SaZ>        {
SaZ>            std::this_thread::sleep_for( std::chrono::milliseconds( i - min ) );
SaZ>            std::cout << i << std::endl;
SaZ>        } ).detach();
SaZ>    }
SaZ>    std::this_thread::sleep_for( std::chrono::milliseconds( max - min + 1 ) );
SaZ>}
 
SaZ>int main( int argc, char *argv[] )
SaZ>{
SaZ>    std::vector<int> v = { 20, 5, 15, 10, -5, };
SaZ>    sleepSort( v.begin(), v.end() );
 
SaZ>    return 0;
SaZ>}
SaZ>


Какой же с++ все-таки избыточно-многословный...
Re[3]: Sleep Sort
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 21.11.18 10:57
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Какой же с++ все-таки избыточно-многословный...


Зато работает. В отличие от изначального варианта.
Re[3]: Sleep Sort
От: CreatorCray  
Дата: 21.11.18 11:17
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Какой же с++ все-таки избыточно-многословный...

Это не сам С++, это заюзанная либа из стандартного комплекта.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Sleep Sort
От: Mihas  
Дата: 21.11.18 11:35
Оценка: :))
Здравствуйте, licedey, Вы писали:

Сложность O(n)?
Re[4]: Sleep Sort
От: Михaил  
Дата: 21.11.18 18:57
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Михaил, Вы писали:


М>>Какой же с++ все-таки избыточно-многословный...


N>Зато работает. В отличие от изначального варианта.


Это ж не от языка, а от писателя зависит
Re[4]: Sleep Sort
От: Михaил  
Дата: 21.11.18 18:59
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Михaил, Вы писали:


М>>Какой же с++ все-таки избыточно-многословный...

CC>Это не сам С++, это заюзанная либа из стандартного комплекта.

Она же давно частью стандарта стала.
А вообще, я в том смысле, что по сути пишешь много, а понятно для непосвященного мало). В отличие от той же джавы или с#, которые любой сишник поймет даже не умея программировать на этих языках.
Re[5]: Sleep Sort
От: eskimo82  
Дата: 21.11.18 19:06
Оценка:
М>Она же давно частью стандарта стала.
Она всегда была неотъемлемой частью стандарта языка.
Языка C++ не существует вне стандартной библиотеки, ровно также и наоборот.
Re[5]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 00:16
Оценка: :)
Здравствуйте, Михaил, Вы писали:

М>Она же давно частью стандарта стала.

Ещё раз: это всего лишь либа, поставляемая в комплекте с компилером. Никто не заставляет использовать именно её.

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

Ты только что по сути сказал что шарпеи и жабники заметно тупее любого наСИльника
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 00:16
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Языка C++ не существует вне стандартной библиотеки

Это кардинально не так.
Я видел и участвовал в достаточном колве здоровенных проектов на С++, в которых не использовалось ни единого символа из "std::". Более того, на основании этого опыта я могу сказать что std таки сделана доволько уродливо. Можно сделать то же самое куда более внятно и просто.

E> ровно также и наоборот.

А вот наоборот верно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Sleep Sort
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 22.11.18 03:05
Оценка:
Здравствуйте, Михaил, Вы писали:

М>>>Какой же с++ все-таки избыточно-многословный...

N>>Зато работает. В отличие от изначального варианта.
М>Это ж не от языка, а от писателя зависит

В том-то и дело. Если тебя смущает количество символов, то их можно и на плюсах сократить, использовав using. Но всё равно надо сравнивать одинаковые программы, а не работающую и чуть длиннее и неработающую и короче.
Re[3]: Sleep Sort
От: 0xGreg СССР  
Дата: 22.11.18 06:41
Оценка:
SaZ>>У вас не работает с отрицательными числами. Держите на плюсах, слегка оптимизированный:

А вот на Go.
package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    sleepSort([]int{20, 5, 15, 10, -5})
}

func sleepSort(v []int) {
    if len(v) == 0 {
        return
    }

    min := v[0]
    for _, e := range v {
        if e < min {
            min = e
        }
    }

    wg := sync.WaitGroup{}
    wg.Add(len(v))

    for _, e := range v {
        go func(e int) {
            defer wg.Done()

            time.Sleep(time.Millisecond * time.Duration((e - min)))
            fmt.Println(e)
        }(e)
    }

    wg.Wait()
}
Re[7]: Sleep Sort
От: eskimo82  
Дата: 22.11.18 13:59
Оценка:
CC>Я видел и участвовал в достаточном колве здоровенных проектов на С++, в которых не использовалось ни единого символа из "std::".
У меня для тебя плохие новости — стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.
Re[6]: Sleep Sort
От: eskimo82  
Дата: 22.11.18 14:02
Оценка: -1 :)
М>>Она же давно частью стандарта стала.
CC>Ещё раз: это всего лишь либа, поставляемая в комплекте с компилером. Никто не заставляет использовать именно её.
Еще раз: Это часть компилятора, написаная на специальном (не C++) языке.
Re[6]: Sleep Sort
От: Михaил  
Дата: 22.11.18 14:14
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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

CC>Ты только что по сути сказал что шарпеи и жабники заметно тупее любого наСИльника

Или ленивее разбираться в закорючках, если у них и так все работает. Ну и как говорится, Everyone knows 40% of C++. Unfortunately, it's never the same 40%
Re[8]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 14:34
Оценка: -1 :)
Здравствуйте, eskimo82, Вы писали:

E>У меня для тебя плохие новости

Да ну!

E>стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.

Это называется C++ runtime
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: Sleep Sort
От: eskimo82  
Дата: 22.11.18 14:44
Оценка: -1
E>>У меня для тебя плохие новости
CC>Да ну!

E>>стандартная библиотека это не только символы из std::, но и рантайм поддержка различных конструкций C++, типа dynamic_cast или operator new.

CC>Это называется C++ runtime

Всё вместе это образует стандартную библиотеку. Которую практически невозможно отделить от компилятора, разве что только подхачить, но тогда и C++ уже не будет.
Re[10]: Sleep Sort
От: CreatorCray  
Дата: 22.11.18 23:00
Оценка: -1 :)
Здравствуйте, eskimo82, Вы писали:

E>Всё вместе это образует стандартную библиотеку. Которую практически невозможно отделить от компилятора, разве что только подхачить, но тогда и C++ уже не будет.


Дюд, не неси пурги. Ничего неотделимого там нет, это всё сказки.
Я лично писал на С++ там, где не было предусмотрено родного рантайма. Реально необходимые функции пишутся на том же С++, пара функций либо naked с интринсиками либо просто сразу на асме.
C++ это именно то, что встроено в язык. Всё что написано на самом С++ — вспомогательные либы.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: Sleep Sort
От: SaZ  
Дата: 23.11.18 10:38
Оценка:
Здравствуйте, Mihas, Вы писали:

M>Сложность O(n)?


Да, но только в абстрактной операционной системе, где сложность реализации таймеров О(1). Увы, в реальности таких ОС пока нет .
Re[3]: Sleep Sort
От: Mihas  
Дата: 23.11.18 11:30
Оценка:
Здравствуйте, SaZ, Вы писали:

M>>Сложность O(n)?

SaZ>Да,

SaZ>но только в абстрактной операционной системе, где сложность реализации таймеров О(1). Увы, в реальности таких ОС пока нет .

Это другое
Re[11]: Sleep Sort
От: eskimo82  
Дата: 23.11.18 12:55
Оценка: :)
CC>Я лично писал на С++ там, где не было предусмотрено родного рантайма. Реально необходимые функции пишутся на том же С++, пара функций либо naked с интринсиками либо просто сразу на асме.
Ты занимался хакерским анонизмом, т.к. поддерживать этот геморой людям теперь приходится с каждым выходом новой версии компилятора/платфоры/железа.
И еще поди ушел оттуда оставив это "подарком" для последователей.
Re[12]: Sleep Sort
От: CreatorCray  
Дата: 24.11.18 06:13
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Ты занимался хакерским анонизмом, т.к. поддерживать этот геморой людям теперь приходится с каждым выходом новой версии компилятора/платфоры/железа.

Дооо, драйвера конечно же пересобирают каждый раз как новый компайлер выйдет, ага. И в каждой версии конечно же меняют ABI.

E>И еще поди ушел оттуда оставив это "подарком" для последователей.

Где юг показать или сам найдёшь?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[13]: Sleep Sort
От: eskimo82  
Дата: 24.11.18 19:25
Оценка: -1
CC>Дооо, драйвера конечно же пересобирают каждый раз как новый компайлер выйдет, ага.
Драйвера не пишут на С++. А если и пишут то на уродливом "Си с классами и темплейтами без всего остального".
Даже без шикого использования темплейтов, т.к. многие вещи требуют поддержки со стороны компилятора и стандартной библиотеки
(например предикат std::is_pod или std::is_trivial, не говоря уже о всяких std::move и std::forward)

CC>И в каждой версии конечно же меняют ABI.

Именно так дело и обстоит — ABI С++ настолько нестабильно что двоичную совместимоть C++ кода никто серьезно даже и не рассматривает в виде ее отсутсвия.

E>>И еще поди ушел оттуда оставив это "подарком" для последователей.

CC>Где юг показать или сам найдёшь?
Наговнокодил и свалил — теперь сознаваться неудобно вдруг стало ?

PS: Юг ты и сам найдеш.
Re: Sleep Sort
От: vsb Казахстан  
Дата: 24.11.18 19:26
Оценка: :)
А как оно работает? Я так понимаю, на каждый элемент создаётся новый поток. Т.е. где-то в ОС создаётся список потоков. Потом каждый поток засыпает на N секуд. Это помещает поток в некую очередь спящих потоков. Эта очередь спящих потоков упорядочена? Насколько я понимаю, да, то собственно тут сортировка и происходит, т.е. мы используем сортировку из ядра ОС. Вероятно эта очередь реализована, как дерево. Поэтому такая сортировка по сути есть сортировка с помощью вставки в дерево поиска.
Re[14]: Sleep Sort
От: CreatorCray  
Дата: 24.11.18 23:10
Оценка: +2
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[2]: Sleep Sort
От: Vi2 Удмуртия http://www.adem.ru
Дата: 25.11.18 07:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>А как оно работает? Я так понимаю, на каждый элемент создаётся новый поток. Т.е. где-то в ОС создаётся список потоков. Потом каждый поток засыпает на N секуд. Это помещает поток в некую очередь спящих потоков. Эта очередь спящих потоков упорядочена? Насколько я понимаю, да, то собственно тут сортировка и происходит, т.е. мы используем сортировку из ядра ОС. Вероятно эта очередь реализована, как дерево. Поэтому такая сортировка по сути есть сортировка с помощью вставки в дерево поиска.


Нет, это стометровка бегунов с известными скоростями бега: стартуют все вместе, а финишируют как раз по сортированной последовательности.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[15]: Sleep Sort
От: eskimo82  
Дата: 26.11.18 13:32
Оценка: -2
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>Давай давай, ветер в спину
У тебя штаны упали и шнурки развязались, одна голая жопа сверкает.
Re[16]: Sleep Sort
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 26.11.18 14:09
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Ты там слово class увидел и решил что это C++ ?

E>В этом случае у меня для тебя плохие новости.

AMD драйвера для видеокарт на плюсах пишет, классы, наследование и шаблоны там есть. Так что у меня для тебя плохие новости — ты застрял в 80-х.
Re[17]: Sleep Sort
От: eskimo82  
Дата: 26.11.18 14:53
Оценка: :)
N>AMD драйвера для видеокарт на плюсах пишет, классы, наследование и шаблоны там есть. Так что у меня для тебя плохие новости — ты застрял в 80-х.
У меня для тебя тоже плохие новости: AMD драйвера на плюсах не пишет и не может писать полноценно на плюсах т.к. поддержка исключений C++ отсутсвует в Linux kernel.

А это значит — чуть что и kernel panic.
Т.к. исключение мы не то что обработать не можем, мы даже выбросить его не можем. В целом так себе удовольствие. И влечет это за собой невозможность полноценно использоваать плюсы, начиная от невозможности корректно сообщить об ошибке из конструктора (привет двум стадиям конструирования из MFC и признакам isValid), заканчивая невозможностью использовать почти весь функционал стандартной библиотеки (контейнеры, некоторые алгоритмы типа sort, умные указатели, etc...)
Т.е. практически всего того что делает язык именно плюсами.

Что остается ? Остается "Си с класами" и наивное убеждение что код написан на плюсах.
Отредактировано 26.11.2018 14:55 eskimo82 . Предыдущая версия .
Re[18]: Sleep Sort
От: CreatorCray  
Дата: 26.11.18 18:10
Оценка: -1
Здравствуйте, eskimo82, Вы писали:

E>Т.к. исключение мы не то что обработать не можем, мы даже выбросить его не можем.

А, ну понятно какого уровня у тебя понимание.
И бросаем и ловим, более того в кернеле дохрена чего надо заворачивать в catch, даже C API.

E>заканчивая невозможностью использовать почти весь функционал стандартной библиотеки (контейнеры, некоторые алгоритмы типа sort, умные указатели, etc...)

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

E>Т.е. практически всего того что делает язык именно плюсами.

плюсами язык делают исключительно те фичи, которые нельзя реализовать библиотечно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[19]: Sleep Sort
От: eskimo82  
Дата: 26.11.18 18:53
Оценка:
E>>Т.к. исключение мы не то что обработать не можем, мы даже выбросить его не можем.
CC>А, ну понятно какого уровня у тебя понимание.
CC>И бросаем и ловим, более того в кернеле дохрена чего надо заворачивать в catch, даже C API.
У тебя путаница между C++ исключениями, SEH и расширениеями одного компилятора.
Видимо вызвананая професиональной деформацией на почве одной и далеко не лучшей платформы.

E>>заканчивая невозможностью использовать почти весь функционал стандартной библиотеки (контейнеры, некоторые алгоритмы типа sort, умные указатели, etc...)

CC>Весь функционал как раз доступен, не в std реализации разумеется.
Не доступен, либо доступен ногами через одно место. И я уже привел выше некоторые примеры, которые ты благополучно проигнорировал.

E>>Т.е. практически всего того что делает язык именно плюсами.

CC>плюсами язык делают исключительно те фичи, которые нельзя реализовать библиотечно.
Стандартная библиотека не реализуется "библиотечно", это неотьемлимая часть языка с точки зрения API и неотьемлимая часть (библиотек поддержки) компилятора с точки зрения реализации.
Re[20]: Sleep Sort
От: CreatorCray  
Дата: 26.11.18 21:33
Оценка:
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[21]: Sleep Sort
От: eskimo82  
Дата: 27.11.18 17:55
Оценка:
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.
Re[21]: Sleep Sort
От: Михaил  
Дата: 27.11.18 19:17
Оценка:
Здравствуйте, CreatorCray, Вы писали:

E>>Видимо вызвананая професиональной деформацией на почве одной и далеко не лучшей платформы.

CC>А, ещё один адепт "элитной ОС", где главный пингвин С++ ниасилил а потому в ядро его не пускает. Ну да, у вас там в общем случае с заменой RTL плоховато.
CC>Благо есть другие ОС, где народ не хочет бойлерплейтить и таки почесался по поводу C++ RTL для ядра.

А какие еще существующие сегодня ОС, кроме макос (и то, только в IOKit) используют С++ в драйверах?
Re[22]: Sleep Sort
От: CreatorCray  
Дата: 27.11.18 19:41
Оценка:
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[22]: Sleep Sort
От: CreatorCray  
Дата: 27.11.18 19:43
Оценка:
Здравствуйте, Михaил, Вы писали:

М>А какие еще существующие сегодня ОС, кроме макос (и то, только в IOKit) используют С++ в драйверах?

Да так же винда
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[23]: Sleep Sort
От: eskimo82  
Дата: 27.11.18 23:40
Оценка:
М>>А какие еще существующие сегодня ОС, кроме макос (и то, только в IOKit) используют С++ в драйверах?
CC>Да так же винда
Фи. Все думали щас он возьмет и вытащит из за запазухи голубя. Ну чудо не случилось и вытащил он дырявые носки.

С Вендой тут все очень не просто, т.к. она имплементирует исключения C++ через свой ядровый SEH.
А это значит, что писать можно только с компилятором C++ поддерживающим конкретно эту имплементацию, другой компилятор, например с sjlj, или более быстрым dwarf уже не подойдет...
И этот человек еще что-то проповедловал про замену рантайма
Re[23]: Sleep Sort
От: eskimo82  
Дата: 28.11.18 02:07
Оценка: :)
E>>Чувак, ты перепутал в кучу разные сущности и уровни. И все только из-за с виду одного catch, а на самом деле это совершенно разные catch.
CC>Зависит от того как ты реализуешь под капотом.
Ты конечно можеш сделать людей подмножеством коней, как это сделала микрософт. Но это совершенно не значит, что это одинаковый сущности на одном и том же уровне абстракции.
Более того, возможны другие имплементации людей. Это также к вопросу совместимости ABI.

CC>>>Если чо в ядре макоси в кернеле поддержка C++ имеется.

E>>Это ты про FreeBSD сейчас? Там все также на Си.
CC>


E>>Достаточно чтобы открыть тебе глаза.

CC>Так бы и сказал что ничего всерьёз не писал.
Я довольно много видел такого "C++ кода" порожденного горе-архитекторами-плюсовиками и затем забитого в ядро кувалдами.
После того как этот код реанимируют к жизни чтобы он ну хоть как-то работал, от плюсов там остается только слово class да и то не всегда, и куча хаков-подпорок впридачу.

E>>Это совсем перепендикулярно языку.

CC>А, т.е. язык это что то божественное и непостижимое, а в реальности используется что то совсем другое?
Твои высказывания про хлеб, масло, и личинки рыбы к языку имеют отношение чуть меньше чем ничего.

E>>Кто тебе сказал, что это header файлы ?

CC>А что это? Магия?
Магия, узаконеная стандартом языка. Тебе процитировать или сам найдеш ?
Ты никогда не задавался вопросом почему у большинства этих "хеадеров" нет расширения ни .hpp и ни .h ?

CC>>>Т.е. если я сотру все headers от std то внезапно всё перестанет работать?

E>>А ты уверен что всегда сможеш их найти ?
CC>Что за бред ты несёшь?
Т.е. в итоге ты и языка С++ не знаеш ? Неудивительно, учитывая твою позицию.

CC>>>Даже RTL таки заменяемая часть, так что чушь.

E>>У меня для тебя совсем плохие новости.
CC>Дооо! А если надо С++ на платформе где его раньше не было то с горы спускаются старцы, проводят ритуал и RTL спускается с небес, да!
Примерно так и есть. Тебе напомнить историю Симбиана, Бады и Андроида ? Когда там C++ появился ты видимо не вкурсе ?

CC>Это просто кусок кода, platform support library.

CC>И всё.
Это очень сложный "кусок кода", настолько сложный, что не все вендоры готовы вот прям щас взять и спортировать его на свою платформу.
Да и просто пересобрать его для существующей платформы с первого раза еще ни у кого не получалось правильно.
И все это — при открытых исходниках.
А ты, гусар, собрался его в легкую заменять. Ну вперед — замени, например у студии, на собственный.

CC>>>Берёшь компилер, пишешь на том же самом С++ пару платформенных функций, на которые тот вставляет референсы, ожидая что поддержка платформы будет прилинкована и всё.

E>>Ну напиши на том же самом C++ крючек для dynamic_cast или throw.
CC>Ох деточка, не боги горшки обжигают.
Ты сначала попробуй а потом мне рассказывай про свои горшки.
А потом еще раз попробуй, на следующей версии компилятора.
И потом еще один раз, через версию, если не дойдет.

CC>Для Wintel будет так:

CC>extern "C" void __stdcall _CxxThrowException (void* pExceptionObject, _ThrowInfo* pThrowInfo)
CC>{
CC>... а тут пиши что хочешь.
CC>Можешь перезавернуть в платформенные, можешь сам корячиться.
CC>}
А тут ничего особо не напишеш особо кроме kernel panic.
Но ты ведь наверно понимаеш что кидать kernel panic тут как-то не по джентельменски — соседнии приложения, и юзер, да и босс юзера, купивший твой софт не оценят.
А если еще твой софт где-ть на АЭС работает — тут не просто не поймут, но еще и бо-бо могут сделать....
Поэтому ты конечно можеш пореверсить твой любимый компилятор на предмет stack frames, честно откатываться к ним, вызывать деструкторы (что там у нас за недокументированая структурка _ThrowInfo ? ).
А потом еще раз... и еще один... И еще один через пару лет — поддержка она такая. И даже еще разок, лет через пять...
Пока не обанкротишся — всё бабло ушло на поддержку этого говна, либо не уволишся, оставив подарок последователям (что видимо и произошло в твоем случае).

CC>PVOID __RTDynamicCast (PVOID inptr, LONG VfDelta, PVOID SrcType, PVOID TargetType, BOOL isReference) throw(...)

CC>{
CC>документацию в руки и вперёд!
CC>Функции для того чтоб парсить инфу о типах что нагенерил компилятор в доках описаны, в платформе есть.
CC>}
В случае Visual Studio — выделенное является враньем. Частично инфу конечно можно добыть методом гугла и реверса, но...
Re[24]: Sleep Sort
От: CreatorCray  
Дата: 28.11.18 05:00
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Ты конечно можеш сделать людей подмножеством коней, как это сделала микрософт. Но это совершенно не значит, что это одинаковый сущности на одном и том же уровне абстракции.

Это всё чепуха. Компилятору пофигу как ты будешь RTL внутри реализовывать: проедешься на готовом или сделаешь отдельно, если контракт по вызовам соблюдается — всё работает замечательно.

E>Более того, возможны другие имплементации людей. Это также к вопросу совместимости ABI.

И чо? Семейство компилятора и платформа для писанины в кернел величина постоянная, так что мимо.

E>Я довольно много видел такого "C++ кода" порожденного горе-архитекторами-плюсовиками и затем забитого в ядро кувалдами.

Я видел много говнокода на самых разных языках, и что с того?

E>от плюсов там остается только слово class да и то не всегда, и куча хаков-подпорок впридачу.

Ну я тоже видел что если дать поддерживать С++ код сишникам то в итоге там остаётся только то, что сишники хоть как то понимают, да
Всё остальное объявляется непонятной ересью и яростно переписывается.

E>Твои высказывания про хлеб, масло, и личинки рыбы к языку имеют отношение чуть меньше чем ничего.

Это инструмент, которым я зарабатываю на жизнь.

CC>>А что это? Магия?

E>Магия, узаконеная стандартом языка.
Please! Перестань уже молиться и посмотри наконец под капот!

E>Ты никогда не задавался вопросом почему у большинства этих "хеадеров" нет расширения ни .hpp и ни .h ?

А ты никогда не задавался вопросом почему директиве #include пофигу вообще на все расширения и прочее?
Так вот, это всё "синтаксический сахар" (тм)

CC>>А если надо С++ на платформе где его раньше не было то с горы спускаются старцы, проводят ритуал и RTL спускается с небес, да!

E>Примерно так и есть.
Вай какой дремучий пц!

E>Это очень сложный "кусок кода", настолько сложный, что не все вендоры готовы вот прям щас взять и спортировать его на свою платформу.

Ну и на какую же платформу вендоры отказываются "портировать", аргументируя именно как "вай как сложно, слющай!"?

E>Да и просто пересобрать его для существующей платформы с первого раза еще ни у кого не получалось правильно.

E>И все это — при открытых исходниках.
Руки из жопы никто не отменял.

E>А ты, гусар, собрался его в легкую заменять.

Более того, уже несколько раз заменял для разных платформ.

E> Ну вперед — замени, например у студии, на собственный.

Уже было, два раза.

E>Ты сначала попробуй а потом мне рассказывай про свои горшки.

Я это уже делал, причём за деньги

E>А потом еще раз попробуй, на следующей версии компилятора.

Да вот спросил у бывших коллег, они пользуют примерно 8 лет назад написанный рантайм и горя не знают.
Или ты не про промышленные компиляторы а про всякое экспериментальное, где всё перехреначивают каждый месяц?

E>И потом еще один раз, через версию, если не дойдет.



E>А тут ничего особо не напишеш особо кроме kernel panic.

Ты — безусловно, у меня тут сомнений уже не осталось.

E>Но ты ведь наверно понимаеш что кидать kernel panic тут как-то не по джентельменски

Дык не кидай, зачем? Или ты других способов не знаешь?

E>что видимо и произошло в твоем случае.

Хреновый из тебя "телепатор"

E>В случае Visual Studio — выделенное является враньем. Частично инфу конечно можно добыть методом гугла и реверса, но...

Дооо, страшный секрет охраняемый драконом!

...\VC\crt\src\eh\rtti.cpp
/***
*rtti.cxx - C++ runtime type information
*
*       Copyright (c) Microsoft Corporation.  All rights reserved.
*
*Purpose:
*       Implementation of C++ standard runtime type information
****/
...
extern "C" PVOID __CLRCALL_OR_CDECL __RTDynamicCast (
    PVOID inptr,            // Pointer to polymorphic object
    LONG VfDelta,           // Offset of vfptr in object
    PVOID SrcType,          // Static type of object pointed to by inptr
    PVOID TargetType,       // Desired result of cast
    BOOL isReference)       // TRUE if input is reference, FALSE if input is ptr
    throw(...)
{
    PVOID pResult=NULL;
    _RTTIBaseClassDescriptor *pBaseClass;

    if (inptr == NULL)
            return NULL;

    __try {

        PVOID pCompleteObject = FindCompleteObject((PVOID *)inptr);
        _RTTICompleteObjectLocator *pCompleteLocator =
            (_RTTICompleteObjectLocator *) ((*((void***)inptr))[-1]);
#if (defined(_M_X64)) && !defined(_M_CEE_PURE)
        unsigned __int64 _ImageBase;
        if (COL_SIGNATURE(*pCompleteLocator) == COL_SIG_REV0) {
            _ImageBase = GetImageBase((PVOID)pCompleteLocator);
        }
        else {
            _ImageBase = ((unsigned __int64)pCompleteLocator - (unsigned __int64)COL_SELF(*pCompleteLocator));
        }
#endif

        // Adjust by vfptr displacement, if any
        inptr = (PVOID *) ((char *)inptr - VfDelta);

        // Calculate offset of source object in complete object
        ptrdiff_t inptr_delta = (char *)inptr - (char *)pCompleteObject;

        if (!(CHD_ATTRIBUTES(*COL_PCHD(*pCompleteLocator)) & CHD_MULTINH)) {
            // if not multiple inheritance
            pBaseClass = FindSITargetTypeInstance(
                            pCompleteLocator,
                            (_RTTITypeDescriptor *) SrcType,
                            (_RTTITypeDescriptor *) TargetType
#if (defined(_M_X64)) && !defined(_M_CEE_PURE)
                            , _ImageBase
#endif
                            );
        }
        else if (!(CHD_ATTRIBUTES(*COL_PCHD(*pCompleteLocator)) & CHD_VIRTINH)) {
            // if multiple, but not virtual, inheritance
            pBaseClass = FindMITargetTypeInstance(
                            pCompleteObject,
                            pCompleteLocator,
                            (_RTTITypeDescriptor *) SrcType,
                            inptr_delta,
                            (_RTTITypeDescriptor *) TargetType
#if (defined(_M_X64)) && !defined(_M_CEE_PURE)
                            , _ImageBase
#endif
                            );
        }
        else {
            // if virtual inheritance
            pBaseClass = FindVITargetTypeInstance(
                            pCompleteObject,
                            pCompleteLocator,
                            (_RTTITypeDescriptor *) SrcType,
                            inptr_delta,
                            (_RTTITypeDescriptor *) TargetType
#if (defined(_M_X64)) && !defined(_M_CEE_PURE)
                            , _ImageBase
#endif
                            );
        }

        if (pBaseClass != NULL) {
            // Calculate ptr to result base class from pBaseClass->where
            pResult = ((char *) pCompleteObject) +
                      PMDtoOffset(pCompleteObject, BCD_WHERE(*pBaseClass));
        }
        else {
            pResult = NULL;
            if (isReference)
#ifndef _SYSCRT
                throw std::bad_cast("Bad dynamic_cast!");
#else
                throw bad_cast("Bad dynamic_cast!");
#endif
        }

    }
    __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION
              ? EXCEPTION_EXECUTE_HANDLER: EXCEPTION_CONTINUE_SEARCH)
    {
        pResult = NULL;
#ifndef _SYSCRT
        throw std::__non_rtti_object ("Access violation - no RTTI data!");
#else
        throw __non_rtti_object ("Access violation - no RTTI data!");
#endif
    }

    return pResult;
}


Официальный С++ исходник того самого магического кода, кто бы мог подумать!!!

Ну и о чём с тобой дальше вообще можно разговаривать?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[24]: Sleep Sort
От: CreatorCray  
Дата: 28.11.18 05:00
Оценка:
Здравствуйте, eskimo82, Вы писали:

E>Фи. Все думали щас он возьмет и вытащит из за запазухи голубя. Ну чудо не случилось и вытащил он дырявые носки.

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

E>А это значит, что писать можно только с компилятором C++ поддерживающим конкретно эту имплементацию, другой компилятор, например с sjlj, или более быстрым dwarf уже не подойдет...

С чего бы? В винде SEH просто удобен, но тебе ничего не мешает написать поиск правильного frame handler по готовым таблицам и его вызвать, если уж работаешь в таком окружении где этого хелпера под рукой нет.

Скучно с тобой.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[25]: Sleep Sort
От: eskimo82  
Дата: 29.11.18 15:34
Оценка: :)
E>>Фи. Все думали щас он возьмет и вытащит из за запазухи голубя. Ну чудо не случилось и вытащил он дырявые носки.
CC>В винде сам производитель в DDK добавил всякого разного чтоб людям жизнь упростить, там допиливать надо только если уж совсем размахнуться хочешь.
Винда — вообще помойка всего.

CC>Во всяких ваших луниксах народ плюсов истерически боится — раз главный пингвин не умеет то нефиг и начинать.

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

E>>А это значит, что писать можно только с компилятором C++ поддерживающим конкретно эту имплементацию, другой компилятор, например с sjlj, или более быстрым dwarf уже не подойдет...

CC>С чего бы? В винде SEH просто удобен, но тебе ничего не мешает написать поиск правильного frame handler по готовым таблицам и его вызвать, если уж работаешь в таком окружении где этого хелпера под рукой нет.
И также ничего тебе не мешает поддерживать выделеную жирным поделку при выходе новых версий компилятора. Ну первые 5 раз хотя бы...

CC>Скучно с тобой.

А ты сам встал в такую позу.
Re[25]: Sleep Sort
От: eskimo82  
Дата: 29.11.18 16:03
Оценка:
E>>Ты конечно можеш сделать людей подмножеством коней, как это сделала микрософт. Но это совершенно не значит, что это одинаковый сущности на одном и том же уровне абстракции.
CC>Это всё чепуха. Компилятору пофигу как ты будешь RTL внутри реализовывать: проедешься на готовом или сделаешь отдельно, если контракт по вызовам соблюдается — всё работает замечательно.
Ключевая фраза. Ты уверен что ты соблюдаеш недокументированный контракт ?
Ты уверен что соблюсти этот контракт возможно в лимитированных условиях ядра ?

E>>Более того, возможны другие имплементации людей. Это также к вопросу совместимости ABI.

CC>И чо? Семейство компилятора и платформа для писанины в кернел величина постоянная, так что мимо.
Ну да, есть студия, есть icc, есть clang... И у всех у них разные и различающиеся точки зрения на имплементацию.

E>>Я довольно много видел такого "C++ кода" порожденного горе-архитекторами-плюсовиками и затем забитого в ядро кувалдами.

CC>Я видел много говнокода на самых разных языках, и что с того?
С того что голова дана чтобы делать выводы, а не только есть икру с маслом.

E>>от плюсов там остается только слово class да и то не всегда, и куча хаков-подпорок впридачу.

CC>Ну я тоже видел что если дать поддерживать С++ код сишникам то в итоге там остаётся только то, что сишники хоть как то понимают, да
CC>Всё остальное объявляется непонятной ересью и яростно переписывается.
А почему код попадает к сишникам ? Псевдоплюсовики несправляются со своими порождениями ?

E>>Твои высказывания про хлеб, масло, и личинки рыбы к языку имеют отношение чуть меньше чем ничего.

CC>Это инструмент, которым я зарабатываю на жизнь.
Да, но по факту ты его не знаеш.

CC>>>А что это? Магия?

E>>Магия, узаконеная стандартом языка.
CC>Please! Перестань уже молиться и посмотри наконец под капот!
Зачем мне смотреть под капот твоего пепелаца ?

E>>Ты никогда не задавался вопросом почему у большинства этих "хеадеров" нет расширения ни .hpp и ни .h ?

CC>А ты никогда не задавался вопросом почему директиве #include пофигу вообще на все расширения и прочее?
CC>Так вот, это всё "синтаксический сахар" (тм)
Это не так.

CC>>>А если надо С++ на платформе где его раньше не было то с горы спускаются старцы, проводят ритуал и RTL спускается с небес, да!

E>>Примерно так и есть.
CC>Вай какой дремучий пц!
E>>Это очень сложный "кусок кода", настолько сложный, что не все вендоры готовы вот прям щас взять и спортировать его на свою платформу.
CC>Ну и на какую же платформу вендоры отказываются "портировать", аргументируя именно как "вай как сложно, слющай!"?
А чтож ты примеры реальных платформ поскипал ? Не вписываются в твою вселенную ?

E>>Да и просто пересобрать его для существующей платформы с первого раза еще ни у кого не получалось правильно.

E>>И все это — при открытых исходниках.
CC>Руки из жопы никто не отменял.
E>>А ты, гусар, собрался его в легкую заменять.
CC>Более того, уже несколько раз заменял для разных платформ.
Так что потом тебе очень сильно били и завязали руки узлом в рот через жопу ?

E>> Ну вперед — замени, например у студии, на собственный.

CC>Уже было, два раза.
Стесьняюсь спросить — а почему два ?
Или во второй раз заставили все переписывать для новой версии ?

E>>Ты сначала попробуй а потом мне рассказывай про свои горшки.

CC>Я это уже делал, причём за деньги
Еще и приплачивал чтобы взяли поделку ?

E>>А потом еще раз попробуй, на следующей версии компилятора.

CC>Да вот спросил у бывших коллег, они пользуют примерно 8 лет назад написанный рантайм и горя не знают.
CC>Или ты не про промышленные компиляторы а про всякое экспериментальное, где всё перехреначивают каждый месяц?
В "промышленных" все перехреначивают довольно часто.

E>>И потом еще один раз, через версию, если не дойдет.

CC>
И не только часто, а еще и в самый неподходящий момент.

E>>А тут ничего особо не напишеш особо кроме kernel panic.

CC>Ты — безусловно, у меня тут сомнений уже не осталось.
Я всего лишь свидетель этого.

E>>Но ты ведь наверно понимаеш что кидать kernel panic тут как-то не по джентельменски

CC>Дык не кидай, зачем?
И что делать ?

CC>Или ты других способов не знаешь?

Ну как, ну ка расскажи ? Или опять сольешся ?

E>>что видимо и произошло в твоем случае.

CC>Хреновый из тебя "телепатор"
А чтоже это тебя так тронуло то ?

E>>В случае Visual Studio — выделенное является враньем. Частично инфу конечно можно добыть методом гугла и реверса, но...

CC>Дооо, страшный секрет охраняемый драконом!
Он не документирован полностью.

CC>...\VC\crt\src\eh\rtti.cpp

Ну что-ты кусочек кода выдернул, стековые фреймы 1) недокументированы, 2) меняются от версии к версии.

CC>Официальный С++ исходник того самого магического кода, кто бы мог подумать!!!

То-то народ потихоньку занимается реверсом этих "оффициальных исходников":
https://www.cnblogs.com/sunkang/archive/2011/05/06/2038810.html

CC>Ну и о чём с тобой дальше вообще можно разговаривать?

Сливаешся.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.