Здравствуйте, Pzz, Вы писали:
Pzz>reductor wrote: >> >> A>А чем C++ не язык высокого уровня? >> >> Ничем. >> Это ассемблер. >> Который к тому же медленный и многословный.
Pzz>Не согласен.
Pzz>C (не C++) это язык, который выражает абстрактным образом архитектуру Pzz>современного компутерного железа (современного в смысле повседневного). Pzz>В этом плане он исключительно хорош. Прошло уже 20 лет, а на C Pzz>по-прежнему можно писать железноориентированные программы, не опускаясь Pzz>при этом до уровня особенностей работы ALU на данном конкретном процессоре.
Pzz>Конечно, C не идеален. Например, для полноценной работы хотелось бы Pzz>уметь описывать раскладку данных на биты, не прибегая при этом к Pzz>трюкачеству. Хотелось бы так же, чтобы идея endian'а была как-то Pzz>отражена в языке. И хоть какие-то примитивы синхронизации, типа Pzz>read_and_set, или atomic_increment. В общем, как раз тех вещей, которые Pzz>иначе приходится писать на ассемблере безо всякой осмысленной причины.
Pzz>Мда. Так вот, будучи языком, предназначенным для абстрактного Pzz>представления современного компутера, C, безусловно является языком Pzz>высокого уровня. Просто он не универсален, а domain-specific, но domain Pzz>у него при этом весьма специфический
Pzz>C++ же, это не язык, а какой-то кошмар. Что он отражает, не очень Pzz>понятно. Скорее всего, "все на свете" с весьма переменным успехом...
Ну а с чем не согласен-то? Речь шла о С++, а написано тут все про С. И в общем-то верно написано.
Здравствуйте, c-smile, Вы писали:
CS>D как язык для UI лучше чем C++ скажем в разы. Это я со всей отвественностью CS>могу сказать. Пара D+C вообще круто. хотя в общем-то D сам по себе имеет CS>все возможности C но legacy code и все такое. CS>Templates в D человечнее и мощнее чем в C++.
Моих знаний по D уже достаточно, чтобы согласиться.
Но не покидает ощущение, что ФЯ даст качественно больше.
D — это улучшение С++, ФЯ — это другое измерение.
CS>Из недостатков D: CS>1) концепт const автором игнорируется напрочь и это печалит. CS>В C99 например const есть. CS>2) Нативно поддерживаются только Win и Linux. Все остальное через CS>GDC (GCC codegen) что сыровато в общем-то. И не так эффективно как CS>родной Вальтеровский codegen.
Это серьезные недостатки. Фактически это крест на использовании в моем случае.
CS>Что бы я порекомендовал в качестве пункта #3 — как ни странно но Java. CS>Либо стандартный Java SDK от Sun либо CS>сделать под себя Java VM из тех что есть в сети проблемы не представляет. CS>Использование богатого набора IDE — неоспоримый плюс. CS>Java как "клеевой" язык с C подобной нотацией и вычислительной моделью — самое оно. CS>Java VM как часть своего приложения это примерно 200-250k кода. Ничего по нынешним меркам. CS>И очень просто вяжется с C (JNI или вообще свой протокол).
Слишком "упрощенный" язык. И медленный. Никаких преимуществ перед С++ (разве что GC). В java-стиле я и на C++ мог бы писать.
CS>А в качестве варианта "для сэбэ" я использую tiscript (javascript типа). CS>Удобно иметь под рукой в приложении интерпертатор. Да и вообще
Тоже хотел в помощь C++ прикрутить интерпретатор (lua). И всю логику приложений реализовывать в скриптах, оставив за C++ только минимальное ядро.
Но пришел к выводу, что один нормальный язык высокого уровня запросто может заменить два языка.
zip_ wrote: > > Pzz>C++ же, это не язык, а какой-то кошмар. Что он отражает, не очень > Pzz>понятно. Скорее всего, "все на свете" с весьма переменным успехом... > > Ну а с чем не согласен-то? Речь шла о С++, а написано тут все про С. И в > общем-то верно написано.
Я не согласен с тем, что C++ это ассемблер. Раз C это язык высокого
уровня (мне, кажется, удалось это аргументировать), и при этом C
является подмножеством C++, то и C++ вроде как не ассемблер.
Я его раньше не видел
Сейчас глянул — по-моему очень даже неплохо
Не без маразмов, но неплохо
Правда вот не знаю даже насколько он вообще будет полезен человеку, никогда не програмировавшему на ML и Lisp
Там весь этот "синтаксический оверхед" вместе с какими-то "угодить всем" конструкциями могут заслонять собой то, что по-настоящему там мощно, но что необходимо просто прочувствовать в языках, которые более стройны в этом смысле.
С С++, кстати, та же фигня — до сих пор очень мало народу понимает как по-настоящему можно использовать нормально те же шаблоны и иксепшены.
Или с Javascript — тут вообще жуть. разрыв между тем что он может и что на нем делают (и КАК) — огромен.
Причем в последнем случае еще и разработчики(!!) не просекают что делают и только плодят маразмы , это удивительно.
В общем не знаю, у меня всегда мнение такое, что ML, C.Lisp/Scheme, Smalltalk, Prolog и Forth — это тот минимум который лучше знать.
Здравствуйте, Pzz, Вы писали:
Pzz>Не согласен.
Pzz>C (не C++) это язык, который выражает абстрактным образом архитектуру Pzz>современного компутерного железа (современного в смысле повседневного). Pzz>В этом плане он исключительно хорош. Прошло уже 20 лет, а на C Pzz>по-прежнему можно писать железноориентированные программы, не опускаясь Pzz>при этом до уровня особенностей работы ALU на данном конкретном процессоре.
Pzz>Конечно, C не идеален. Например, для полноценной работы хотелось бы Pzz>уметь описывать раскладку данных на биты, не прибегая при этом к Pzz>трюкачеству. Хотелось бы так же, чтобы идея endian'а была как-то Pzz>отражена в языке. И хоть какие-то примитивы синхронизации, типа Pzz>read_and_set, или atomic_increment. В общем, как раз тех вещей, которые Pzz>иначе приходится писать на ассемблере безо всякой осмысленной причины.
Pzz>Мда. Так вот, будучи языком, предназначенным для абстрактного Pzz>представления современного компутера, C, безусловно является языком Pzz>высокого уровня. Просто он не универсален, а domain-specific, но domain Pzz>у него при этом весьма специфический
Pzz>C++ же, это не язык, а какой-то кошмар. Что он отражает, не очень Pzz>понятно. Скорее всего, "все на свете" с весьма переменным успехом...
Я честно говоря не понял этой иерархической логики и чем отличается язык низкого уровня от "domain specific general purpose языка высокого уровня для низкоуровнего программирования" кроме того, что первый вариант короче и не оставляет вариантов для прочтения.
Кстати против Си я в общем-то и не имею ничего, пока на нем не начинают писать что-то прикладное.
Pzz>C++ же, это не язык, а какой-то кошмар. Что он отражает, не очень Pzz>понятно. Скорее всего, "все на свете" с весьма переменным успехом...
Отражает, как и любое зеркало то, что будет неполиткорректным сказать прямым текстом.
Здравствуйте, zip_, Вы писали:
_>Здравствуйте, c-smile, Вы писали:
CS>>Что бы я порекомендовал в качестве пункта #3 — как ни странно но Java. CS>>Либо стандартный Java SDK от Sun либо CS>>сделать под себя Java VM из тех что есть в сети проблемы не представляет. CS>>Использование богатого набора IDE — неоспоримый плюс. CS>>Java как "клеевой" язык с C подобной нотацией и вычислительной моделью — самое оно. CS>>Java VM как часть своего приложения это примерно 200-250k кода. Ничего по нынешним меркам. CS>>И очень просто вяжется с C (JNI или вообще свой протокол).
_>Слишком "упрощенный" язык.
В простоте Java есть свои плюсы.
_>И медленный.
Смотря для чего опять же. Все на Java писать не надо.
Это очень популярное (сама Sun этим страдает) мммм заблуждение что-ли
Java это "клеевой" или интегрирующий язык с черезвычайно простым
и эффективным интерфейсом Java/C.
_> Никаких преимуществ перед С++ (разве что GC). В java-стиле я и на C++ мог бы писать.
Есть преимущества. GC одно из них. C++у этого не дано и дано не будет.
Принципиально иная архитектура VM
Про другое преимущесво я уже сказал. Изоляция.
Реально было так: команда из трех человек писала mission critical runtime и framework(C/C++/Java)
и банда тех самых чудиков которые переползли "низкий порог вхождения"
готовила другое блюдо под названием бизнес логика.
CS>>А в качестве варианта "для сэбэ" я использую tiscript (javascript типа). CS>>Удобно иметь под рукой в приложении интерпертатор. Да и вообще
_>Тоже хотел в помощь C++ прикрутить интерпретатор (lua). И всю логику приложений реализовывать в скриптах, оставив за C++ только минимальное ядро. _>Но пришел к выводу, что один нормальный язык высокого уровня запросто может заменить два языка.
Разные задачи требуют разных инструментов. Проблема C++ в его суперуниверсальности как бы
есть все, но скажем так отточенности и завершенности не хватат (мое эстэтствующее имхо).
Здравствуйте, Pzz, Вы писали:
Pzz>zip_ wrote: >> >> Pzz>C++ же, это не язык, а какой-то кошмар. Что он отражает, не очень >> Pzz>понятно. Скорее всего, "все на свете" с весьма переменным успехом... >> >> Ну а с чем не согласен-то? Речь шла о С++, а написано тут все про С. И в >> общем-то верно написано.
Pzz>Я не согласен с тем, что C++ это ассемблер. Раз C это язык высокого Pzz>уровня (мне, кажется, удалось это аргументировать), и при этом C Pzz>является подмножеством C++, то и C++ вроде как не ассемблер.
Всё, что там написано, показывает, что С — это низкий уровень
Не знаю, может у всех разное разделение на уровни, но я работу с железом считаю таковым.
Ниже — только ассемблер, но не думаю, что сегодня еще встречаются задачи, решение которых требует его применения.
Здравствуйте, reductor, Вы писали:
R>Ха. R>Он медленный не по сравнению с ассемблером. Он медленный по сравнению с более высокоуровневыми языками, но у которых лучше дизайн и нет всего этого легаси от Си.
Где-то можно посмотреть результаты тестов или что-то, на чём основываются эти тезисы?
Я было подумал посмотреть на эффективность кода произведённого Glasgow Haskell Compiler, скачал, а там оказывается GCC. Так вот, сам по себе GCC вполне не плох, но уступает ряду других компиляторов. Мне приходится заниматься CRE, и я вдоволь насмотрелся на _мусор_ который производят многие компиляторы. Что там у них творится "на верху" — это даже не важно. Компилятор, который генерирует 5-8 инструкций там, где _хороший_ компилятор сделает 2 — не может производить эффективный код.
Логика, кстати, мне не совсем ясна:
С++ практически не проигрывает ассемблеру.
Он заметно проигрывает более высокоуровневыми языками.
Получается, что ассемблер проиграет более высокоуровневыми языками в плане эффективности кода?
R>На любом языке можно написать ОС с нуля.
В самом деле? Давайте возьмём распространённую архитектуру — PC. Как там на Lisp будет выглядеть общение с железом?
R>А насчет использования других языков — это исключительно в голове. Поскольку на любом языке можно написать компилятор Scheme, то и операционную систему с нуля тоже можно.
Да, у меня действительно "в голове". Я не знаю, как можно увязать компилятор Scheme с возможностью реализации ОС.
R>Но вообще странное рассуждение и достоинство.
Я не говорил, что это достоинство. С++ — универсальный язык, это одновременно и достоинство, и недостаток. Достоинство С++ — он быстрый.
R>На конкретном ассемблере тоже можно все написать и что? R>зачем это делать?
А ассемблер вообще при чём?
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, reductor, Вы писали:
R>В общем не знаю, у меня всегда мнение такое, что ML, C.Lisp/Scheme, Smalltalk, Prolog и Forth — это тот минимум который лучше знать.
Да уж. С таким набором тебя ни на одну работу не возьмут.
И кстати, почему в мин. набор попали сразу ML и CLISP?
Здравствуйте, reductor, Вы писали:
EC>>А что скажешь о Nemerle?
R>Я его раньше не видел R>Сейчас глянул — по-моему очень даже неплохо R>Не без маразмов, но неплохо R>Правда вот не знаю даже насколько он вообще будет полезен человеку, никогда не програмировавшему на ML и Lisp R>Там весь этот "синтаксический оверхед" вместе с какими-то "угодить всем" конструкциями могут заслонять собой то, что по-настоящему там мощно, но что необходимо просто прочувствовать в языках, которые более стройны в этом смысле.
Т.е. как первый функциональный язык не рекомендуешь?
R>С С++, кстати, та же фигня — до сих пор очень мало народу понимает как по-настоящему можно использовать нормально те же шаблоны и иксепшены.
Можешь привести краткую иллюстрацию или ссылку дать, раскрывающую эту мысль?
А то за этой фразой слишком много может скрываться, чтобы я мог сделать какие-то осмысленнык выводы...
R>В общем не знаю, у меня всегда мнение такое, что ML, C.Lisp/Scheme, Smalltalk, Prolog и Forth — это тот минимум который лучше знать.
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, reductor, Вы писали:
EC>>>А что скажешь о Nemerle?
R>>Я его раньше не видел R>>Сейчас глянул — по-моему очень даже неплохо R>>Не без маразмов, но неплохо R>>Правда вот не знаю даже насколько он вообще будет полезен человеку, никогда не програмировавшему на ML и Lisp R>>Там весь этот "синтаксический оверхед" вместе с какими-то "угодить всем" конструкциями могут заслонять собой то, что по-настоящему там мощно, но что необходимо просто прочувствовать в языках, которые более стройны в этом смысле. EC>Т.е. как первый функциональный язык не рекомендуешь?
Нет. Тем более, что он и не функциональный язык как таковой.
Просто поддерживает некоторые идиомы.
Это метаязык. Как Common Lisp
R>>С С++, кстати, та же фигня — до сих пор очень мало народу понимает как по-настоящему можно использовать нормально те же шаблоны и иксепшены. EC>Можешь привести краткую иллюстрацию или ссылку дать, раскрывающую эту мысль? EC>А то за этой фразой слишком много может скрываться, чтобы я мог сделать какие-то осмысленнык выводы...
О нет. Можно я не буду этого делать?
Я просто не хочу открывать новый флейм на эту тему. Я уже тут пару раз сделал эту ошибку, потом пришлось отбиваться от жрецов культа
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, reductor, Вы писали:
R>>В общем не знаю, у меня всегда мнение такое, что ML, C.Lisp/Scheme, Smalltalk, Prolog и Forth — это тот минимум который лучше знать. GZ>Да уж. С таким набором тебя ни на одну работу не возьмут.
Ну что ж делать. Буду умирать с голоду, когда не возьмут.
GZ>И кстати, почему в мин. набор попали сразу ML и CLISP?
Я Comon Lisp имел в виду вообще, не только Clisp
Попали за свою фундаментальность. Родили кучу идиом, которые не только в Nemerle а и много где еще используются.
Здравствуйте, gear nuke, Вы писали:
GN>Здравствуйте, reductor, Вы писали:
R>>Ха. R>>Он медленный не по сравнению с ассемблером. Он медленный по сравнению с более высокоуровневыми языками, но у которых лучше дизайн и нет всего этого легаси от Си.
GN>Где-то можно посмотреть результаты тестов или что-то, на чём основываются эти тезисы? GN>Я было подумал посмотреть на эффективность кода произведённого Glasgow Haskell Compiler, скачал, а там оказывается GCC. Так вот, сам по себе GCC вполне не плох, но уступает ряду других компиляторов. Мне приходится заниматься CRE, и я вдоволь насмотрелся на _мусор_ который производят многие компиляторы. Что там у них творится "на верху" — это даже не важно. Компилятор, который генерирует 5-8 инструкций там, где _хороший_ компилятор сделает 2 — не может производить эффективный код.
Давайте так, Haskell — это не совсем тот язык, который стоит здесь рассматривать на тему эффективности. В его случае это не тема, а просто пропасть какая-то.
и еще не хватало устраивать битву GCC vs. ***
GN>Логика, кстати, мне не совсем ясна: GN>С++ практически не проигрывает ассемблеру. GN>Он заметно проигрывает более высокоуровневыми языками. GN>Получается, что ассемблер проиграет более высокоуровневыми языками в плане эффективности кода? GN>
Конечно. Просто чтобы догнать тот код, Который генерят некоторые компиляторы на ассемблере, придется потратить во много раз (даже, наверное, десятков раз) больше времени, чем на том языке который они компилируют.
Все очень просто. Что на С++ или на ассемблере _можно_ обогнать O'Caml, я не спорю. Вопрос чего это будет стоить.
И просьба не устраивать флейм на эту тему.
R>>На любом языке можно написать ОС с нуля.
GN>В самом деле? Давайте возьмём распространённую архитектуру — PC. Как там на Lisp будет выглядеть общение с железом?
Как сделать, так и будет.
R>>А насчет использования других языков — это исключительно в голове. Поскольку на любом языке можно написать компилятор Scheme, то и операционную систему с нуля тоже можно.
GN>Да, у меня действительно "в голове". Я не знаю, как можно увязать компилятор Scheme с возможностью реализации ОС.
Поскольку написать компилятор Scheme означает — написать компилятор чего угодно, то это в свою очередь означает, что не проблема генерировать низкоуровневый код для общения с железом и т.п.
R>>Но вообще странное рассуждение и достоинство.
GN>Я не говорил, что это достоинство. С++ — универсальный язык, это одновременно и достоинство, и недостаток. Достоинство С++ — он быстрый.
Не бывает универсальных языков. И С++ не такой быстрый.
R>>На конкретном ассемблере тоже можно все написать и что? R>>зачем это делать?
GN>А ассемблер вообще при чём?
При том, что ассемблер тоже "универсальный". И на нем тоже можно как proof-of-concept написать OS и все приложения с нуля.
Почему С++ можно, а ассемблеру нет.
Уверен, у него тоже найдется достаточное количество фанатов, чтобы такое делать — даже видел пару проектов.
Здравствуйте, reductor, Вы писали:
R>И С++ не такой быстрый.
Блин, не выдержал ...
Приведи хотя бы один пример где С++ вносит какую-то заведомую неэффективность по сравнению с тем же ассемблером (ограничимся х86).
Restriction: неэффективность должна следовать именно из природы языка, а не из неэффективность кода генерируемого каким-то конкретным
компилятором (т.е. всякие примеры с плавающей точкой и неиспользованием инструкций SSE не канают).
После того как данный пример будет в студии, можешь продолжать свои глубокомысленные высказывания.
P.S. Я много пишу на С++, но к фанатам себя не причисляю. Мой любимый язык Smalltalk .
Здравствуйте, jedi, Вы писали:
J>Блин, не выдержал ...
Иногда лучше читать, чем говорить
J>Приведи хотя бы один пример где С++ вносит какую-то заведомую неэффективность по сравнению с тем же ассемблером (ограничимся х86). J>Restriction: неэффективность должна следовать именно из природы языка, а не из неэффективность кода генерируемого каким-то конкретным J>компилятором (т.е. всякие примеры с плавающей точкой и неиспользованием инструкций SSE не канают).
А я не пропагандировал здесь ассемблер. Я совершенно о другом писал.
В некотором смысле совершенно обратное.
J>После того как данный пример будет в студии, можешь продолжать свои глубокомысленные высказывания.
Спасибо за разрешение.
J>P.S. Я много пишу на С++, но к фанатам себя не причисляю. Мой любимый язык Smalltalk .
Здравствуйте, reductor, Вы писали:
R>Иногда лучше читать, чем говорить
Безусловно, предлагаю помедитировать над этой фразой перед тем как писать следующий опус.
J>>Приведи хотя бы один пример где С++ вносит какую-то заведомую неэффективность по сравнению с тем же ассемблером (ограничимся х86). J>>Restriction: неэффективность должна следовать именно из природы языка, а не из неэффективность кода генерируемого каким-то конкретным J>>компилятором (т.е. всякие примеры с плавающей точкой и неиспользованием инструкций SSE не канают).
R>А я не пропагандировал здесь ассемблер. Я совершенно о другом писал. R>В некотором смысле совершенно обратное.
J>>После того как данный пример будет в студии, можешь продолжать свои глубокомысленные высказывания.
R>Спасибо за разрешение.
J>>P.S. Я много пишу на С++, но к фанатам себя не причисляю. Мой любимый язык Smalltalk .
R>ST хороший
Т.е. по существу вопроса ответить нечего? См. совет вверху.
Здравствуйте, reductor, Вы писали:
R>Здравствуйте, jedi, Вы писали:
J>>Т.е. по существу вопроса ответить нечего? См. совет вверху.
R>По какому существу? Что вы хотели услышать и против какого моего утверждения возражаете? R>Если можно, конкретнее.
"Он медленный не по сравнению с ассемблером. Он медленный по сравнению с более высокоуровневыми языками, но у которых лучше дизайн и нет всего этого легаси от Си."
Хочу услышать: примеры, пожалуйста.
"Все очень просто. Что на С++ или на ассемблере _можно_ обогнать O'Caml, я не спорю. Вопрос чего это будет стоить."
Хочу услышать: конкретный пример где это будет стоить дорого.
"Не бывает универсальных языков. И С++ не такой быстрый."
Хочу услышать: где язык С++ не такой быстрый, как мог бы (не знаю в сравнении с чем вы утверждали).
Вы тут за последние три недели наплодили почти столько же сообщений, как и я за полтора года участия в форумх рсдн.
Вот только конкретики в ваших опусах маловато, все больше какие-то общие фразы. Вам есть что сказать по делу? В конце концов здесь
не религиозный форум, а форум программистов, да и вы претендуете на научный подход. Потрудитесь обосновывать ваши
утверждения в таком случае. Иначе это флуд.
Здравствуйте, jedi, Вы писали:
R>>По какому существу? Что вы хотели услышать и против какого моего утверждения возражаете? R>>Если можно, конкретнее.
J>"Он медленный не по сравнению с ассемблером. Он медленный по сравнению с более высокоуровневыми языками, но у которых лучше дизайн и нет всего этого легаси от Си." J>Хочу услышать: примеры, пожалуйста.
Я уже приводил. Вся эта ветка этому посвящена.
Но, если вы еще раз хотите, то пожалуйста:
Standard ML, O'Caml, Cyclone
J>"Все очень просто. Что на С++ или на ассемблере _можно_ обогнать O'Caml, я не спорю. Вопрос чего это будет стоить." J>Хочу услышать: конкретный пример где это будет стоить дорого.
Во всех случаях, когда количество строк на высокоуровневом языке в системе переваливает за сотню.
J>"Не бывает универсальных языков. И С++ не такой быстрый." J>Хочу услышать: где язык С++ не такой быстрый, как мог бы (не знаю в сравнении с чем вы утверждали).
Везде, где возникает потребность для запуска профайлера.
Самый простейший пример из возможных: http://www.ffconsultancy.com/free/ray_tracer/languages.html
Пожалуйста, не стоит здесь и сейчас начинать флейм по этому поводу и рассказывать, что вы сможете оптимизировать код на С++ или на чем угодно, чтобы он обгонял MLTon или O'Caml
Я сам это могу сделать. Правда за время в несколько раз превышающее то, которое ушло бы на то же самое в случае окамла.
Причем, это очень простой и очень маленький случай. В случае с системами в 100 000 строк разница становится необсуждаемой.
J>Вы тут за последние три недели наплодили почти столько же сообщений, как и я за полтора года участия в форумх рсдн.
Это намек на то, что мне пора прекратить сюда писать?
В общем-то, я и сам начал об этом задумываться. Именно потому, что мне приходится слишком много отвечать на идиотские комментарии, вместо того, чтобы обсуждать конкретные и интересные _мне_ моменты в программировании.
Причем, ваше сообщение — одно из тех, что лишь увеличивает энтропию и в сотый раз заставляет меня повторять одно и то же, вместо занятия полезным делом.
J>Вот только конкретики в ваших опусах маловато, все больше какие-то общие фразы. Вам есть что сказать по делу? В конце концов здесь J>не религиозный форум, а форум программистов, да и вы претендуете на научный подход. Потрудитесь обосновывать ваши J>утверждения в таком случае. Иначе это флуд.
Если не считать того, что сейчас вы меня просите обосновать утверждение обратное тому, что попросили в первом комментарии, то надеюсь, я это сделал.
Еще же, перед тем как говорить, что это не религиозный форум, убедитесь, что в вашем сообщении не содержится ничего личного и религиозного. Иначе, все, что вы говорите, может быть расценено исключительно как кликушество.
Более я надеюсь к теме С++ надеюсь не возвращаться вообще. Если вы с моим решением не согласны, я готов вам посочувствовать.