<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915515</guid>
        <pubDate>Tue, 24 Dec 2024 15:44:58 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915515</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>Qraizer</strong>, ты с godbolt разобрался, увидел ссылку мою? Там можно выбрать разные компиляторы (и архитектуры) и ключи разные прописать. Очень удобно. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-24T18:45:33+03:00">24.12.24, 15:45</time></span></span><br>
И про noexcept согласен с комментарием? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-24T15:50:57+00:00">24.12.24, 15:50</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-24T13:58:51+00:00">24.12.24, 13:58</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915433'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T19:45:42+00:00">23.12.24, 19:45</time></span><div class='quote '>На общее определение не претендую, но я бы сформулировал как &quot;обходной путь для решения проблемы, который использует какие-то нестандартные и зачастую ненадежные инструменты, когда полноценное решение недоступно или слишком дорого</div></div>Ну т.е. ты сейчас обозвал костылями любые библиотеки</div></div><br>
Нет, не любые. Иногда это как раз прямой путь со стандартными подходами и надежными инструментами :) <br>
<br>
В данном случае не костылями была бы такая реализация, которая действительно работала бы на уровне синтаксического сахара. Это могла бы быть и библиотека, если бы у C++ были для этого средства. Или если бы данный кейс можно было бы разрулить за счет исключительно метапрограммирования и, например, компайл-тайм рефлексии.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915514</guid>
        <pubDate>Tue, 24 Dec 2024 15:12:50 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915514</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915505'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-24T15:00:22+00:00">24.12.24, 15:00</time></span><div class='quote '>Если UB задокументировано в Стандарте, то её наличие в языке не проблема. Многие реализации доопределяют те или иные аспекты, Стандарт оставляет за ними такое право как раз для непереносимых аспектов исполнительных платформ. Например, разыменование nullptr во многих реализация более чем допустимо, т.к. там лежат таблицы векторов прерываний, например. Программа при этом не будет соответствовать Стандарту, т.к. корректно отработать ей на другой реализации запросто будет невозм</div></div><br>
Не сочти за неуважение :) Но наличие ссылок на возможные UB уничижает понятие &quot;надёжности&quot; в/на 100500 раз. Не нужно больше слов&#33; Есть недетерминированное поведение в ряде случаев - просто в тут забудь про слово &quot;надёжность&quot; желательно надёжно  :lol:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915505</guid>
        <pubDate>Tue, 24 Dec 2024 15:00:22 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915505</link>
        <description><![CDATA[Qraizer: Что б далеко не ходить, <strong class='tag-b'>D_KEY</strong>, вот что на гитхабе написано:<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><ul class="tag-list"><li>header only lib;</li><li>unbounded N-arity (except C++03, but very simply extendable);</li><li>separate linkage type (static or dynamic) for each param;</li><li>static linkage allow any types, any indirection (r-value refs included, excepting C++03 of course) and any cv-qualification (excepting r-value refs, I&#39;m lazy);</li><li>dynamic linkage also allow same, excepting param-by-value of course (but C++03 allow only cv-nonqualified pointers); you can use same or different class hierarchies for different dynamic params;</li><li>simple and intuitive definition of dispatcher (C++03 is more comprehensive);</li><li>you don&#39;t must to create full set of overriding combination for dynamic params; dynamic linkage uses rules of Standard overload rules; you will get a compile-time error on ambiguous or undecidability;</li><li>base multimethod and all its overrides are encapsulated within one scope;</li><li>no reinterpret_cast&lt;&gt;, no dynamic_cast&lt;&gt;;</li><li>full params type control for static linkage params on entire path from dispatcher call to getting execution by multimethod; only Standard implicit conversions are allowed; (C++03 has some troubles there); no unneeded copies (but not for return value, sorry);</li><li>great performance; Visitor (both of them) extremely close to native implementation (whether it existed).</li></ul></div></div>Чего тут реально не хватает, так это возможности раскидать перекрытия базового мультиметода по разным единицам трансляции, т.к. для этого требуется либо перенести компиляцию частично в линк-тайм, либо перенести разрешение перегрузки в ран-тайм. Остальное использование практически никак не ограничивает обычное использование обычных функций, расширяя однако его до возможности позднего связывания некоторых (или всех) аргументов.<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-24T15:06:04+00:00">24.12.24, 15:06</time></span></span><br>
Если UB задокументировано в Стандарте, то её наличие в языке не проблема. Многие реализации доопределяют те или иные аспекты, Стандарт оставляет за ними такое право как раз для непереносимых аспектов исполнительных платформ. Например, разыменование nullptr во многих реализация более чем допустимо, т.к. там лежат таблицы векторов прерываний, например. Программа при этом не будет соответствовать Стандарту, т.к. корректно отработать ей на другой реализации запросто будет невозможным, однако конкретно в этой реализации она будет иметь строго определённое поведение. За эти качества C/C++ и получили свою нишу, которую у них отобрать непросто. Надёжность кода измеряется ...немного другими метриками.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915504</guid>
        <pubDate>Tue, 24 Dec 2024 14:47:45 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915504</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915499'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-24T13:58:51+00:00">24.12.24, 13:58</time></span><div class='quote '>И они целиком и полностью отвечают Стандарту.</div></div><br>
Не вдаваясь в подробности, и нагло влезая в ваш спич ... спешу сообщить - твой аргумент говно :lool: До той поры, когда в Стандарте будут явные ссылки на UB (а порой и неопубликованные и обсуждаемые) - это не будет &quot;индульгенцией&quot; для надёжности. Прости - просто логика  :rolleyes:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915499</guid>
        <pubDate>Tue, 24 Dec 2024 13:58:51 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915499</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915433'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T19:45:42+00:00">23.12.24, 19:45</time></span><div class='quote '>На общее определение не претендую, но я бы сформулировал как &quot;обходной путь для решения проблемы, который использует какие-то нестандартные и зачастую ненадежные инструменты, когда полноценное решение недоступно или слишком дорого</div></div>Ну т.е. ты сейчас обозвал костылями любые библиотеки. Ок.<br>
И к слову, что ты имеешь против надёжности тут? Во-первых, это не библиотека, а только лишь концепт. Во-вторых, я бы не назвал свои мультиметоды ненадёжными. И они целиком и полностью отвечают Стандарту. Почитай их фичи. Как бы взятые оттуда решения не будут менее надёжными и в этом концепте.<br>
У меня складывается впечатление, что ты просто не понимаешь, для чего вообще применяется метакод. Не открою большой секрет, если скажу, что как раз для того, чтобы научить компилятор делать то, что ранее он был делать не способен. Качество такого обучения естественно зависит от обучающего, так что костыли могут попадаться. Но не априори же.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915435</guid>
        <pubDate>Tue, 24 Dec 2024 05:10:27 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915435</link>
        <description><![CDATA[D_KEY: Вообще, все верно, clang и gcc правы. std::function не умеет работать с noexcept функциями (а с C++17 они другой тип). Но твой код будет работать, если взять std::move_only_function из С++23 :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915434</guid>
        <pubDate>Tue, 24 Dec 2024 00:29:30 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915434</link>
        <description><![CDATA[D_KEY: <a class='tag-url' href='https://godbolt.org/z/94f7E4nPd' target='_blank'>Вот твой код с msvc и c /std:c++20</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-24T00:43:57+00:00">24.12.24, 00:43</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915428'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T15:24:21+00:00">23.12.24, 15:24</time></span><div class='quote '>ему категорически не травится атрибут noexcept у strcmp(), из-за которого он отказывается конкретизировать параметр std::function&lt;&gt; и идёт по обобщённой ветке, которая не реализована, и это правильно. Правильно, что не реализована для не подходящего типа, но вот то, что noexcept-функция является неподходящей – это ни разу не правильно. И это хороший вопрос к тамошней реализации STL</div></div><br>
С этим интересно было бы разобраться, кстати. И gcc и clang не компилят. А они стандарту обычно следуют лучше msvc. На днях может быть посмотрю. Или если ты глянешь, то напиши.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915433</guid>
        <pubDate>Mon, 23 Dec 2024 19:45:42 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915433</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915432'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T18:01:04+00:00">23.12.24, 18:01</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915429'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T15:42:23+00:00">23.12.24, 15:42</time></span><div class='quote '>В плане онлайн компиляторов, я лучше godbolt пока не видел.</div></div>Он не умеет C++20. Внезапно std::source_location ему неведом.</div></div><br>
А ты какой компилятор выбрал? А ключик прописал? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-23T19:51:00+00:00">23.12.24, 19:51</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915432'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T18:01:04+00:00">23.12.24, 18:01</time></span><div class='quote '>Дай определение термина &quot;костыль&quot;</div></div><br>
Хороший вопрос. На общее определение не претендую, но я бы сформулировал как &quot;обходной путь для решения проблемы, который использует какие-то нестандартные и зачастую ненадежные инструменты, когда полноценное решение недоступно или слишком дорого&quot;. Как правило имеет ограничения и может привести к другим проблемам при использовании для решения исходной.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915432</guid>
        <pubDate>Mon, 23 Dec 2024 18:01:04 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915432</link>
        <description><![CDATA[Qraizer: А что тогда не костыль с твоей точки зрения, <strong class='tag-b'>D_KEY</strong>? Не, лучше не так. Дай определение термина &quot;костыль&quot;, плз. Списки типов изобрёл Александреску, и ничего лучше пока не придумали. Да, есть вариадики, но это не эквивалент, т.к. их невозможно надёжно специализировать, постоянно выползают неоднозначности сопоставления, т.к. ... стремится попадать под что угодно. Автоматическую генерацию иерархий классов по спискам тоже он изобрёл, и что-то получше пока только обещают. Рекурсивный обход иерархии, применяя указанную стратегию к каждому узлу, опять же его заслуга. По факту весь шаблонный метапрогамминг от него, мои первые мультиметоды на C++03 зарелизились. Если подзабыл, то это изобретения более чем 20-летней давности, так что если б были намерения заменить на более другое, давно б уже зарелизили в Стандарте.<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-23T18:10:29+00:00">23.12.24, 18:10</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915429'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-23T15:42:23+00:00">23.12.24, 15:42</time></span><div class='quote '>В плане онлайн компиляторов, я лучше godbolt пока не видел.</div></div>Он не умеет C++20. Внезапно std::source_location ему неведом.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915429</guid>
        <pubDate>Mon, 23 Dec 2024 15:42:23 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915429</link>
        <description><![CDATA[D_KEY: Ещё костыльнее оказалось :) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-23T15:43:53+00:00">23.12.24, 15:43</time></span></span><br>
В плане онлайн компиляторов, я лучше <a class='tag-url' href='https://godbolt.org/' target='_blank'>godbolt</a> пока не видел.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915428</guid>
        <pubDate>Mon, 23 Dec 2024 15:24:21 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915428</link>
        <description><![CDATA[Qraizer: Оказалось, что препроцессор я в руки брал ещё давнее, чем мне казалось. Мне было лень возиться со списками типов, но я вспомнил за вариадик-макросы, и думал, что они мне помогут. Не помогли. Вылетело из головы, что макросы в принципе нерекурсивны, и вариадики этого не изменяют. Так что нужно было бы по старинке, нумеровать 1, 2, 3 итд до нужного количества, которые бы ссылались на предыдущие.<br>
В общем пофик. Нате нормальную версию. Препроцессор остался только в определении параметров, потому что удобно. Но и там можно от него избавиться, если обеспечить уникальность типов свойств как-нибудь иначе.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;cstdint&#62;</div><div class="code_line">#include &#60;source_location&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;functional&#62;</div><div class="code_line">#include &#60;type_traits&#62;</div><div class="code_line">#include &#60;cstring&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename Param&#62; struct Node</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;using value_type = Param;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;static value_type set(value_type&amp; l, const value_type&amp; r) { return l = r; }</div><div class="code_line">&nbsp;&nbsp;static value_type get(const value_type&amp; v) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ return v; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;static inline const value_type default_value = value_type{};</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename T, std::uint_least32_t L, std::uint_least32_t C&#62; struct Value_Base</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;static const std::uint_least32_t line &nbsp; = L;</div><div class="code_line">&nbsp;&nbsp;static const std::uint_least32_t column = C;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;using node_type = Node&#60;T&#62;;</div><div class="code_line">&nbsp;&nbsp;using value_type= typename node_type::value_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;value_type value;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Value_Base(): value(node_type::default_value) {}</div><div class="code_line">&nbsp;&nbsp;Value_Base&amp; operator=(const typename node_type::value_type&amp; v) { value = v; return *this; }</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename Type&#62;</div><div class="code_line">struct Value: public Type</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp;using node_type = typename Type::node_type;</div><div class="code_line">&nbsp;&nbsp;using value_type= typename node_type::value_type;</div><div class="code_line">&nbsp;&nbsp;value_type Name;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp;explicit Value(const value_type&amp; v = node_type::default_value): Name(v) {}</div><div class="code_line">};</div><div class="code_line">#define Prop(Type) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">typedef struct Value_Base&#60;Type, std::source_location::current().line(), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::source_location::current().column()&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">struct NullType{};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename T, typename H&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; struct TList;</div><div class="code_line">template &#60;typename T, typename L, typename R&#62; struct TList&#60;T, TList&#60;L, R&#62;&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;using Node = T;</div><div class="code_line">&nbsp;&nbsp;using Tail = TList&#60;L, R&#62;;</div><div class="code_line">};</div><div class="code_line">template &#60;typename T&#62; struct TList&#60;T, NullType&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;using Node = T;</div><div class="code_line">&nbsp;&nbsp;using Tail = NullType;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename N, typename ...Args&#62; struct MakeList</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;using type = TList&#60;Value&#60;N&#62;, typename MakeList&#60;Args...&#62;::type&#62;;</div><div class="code_line">};</div><div class="code_line">template &#60;typename N&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; struct MakeList&#60;N&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;using type = TList&#60;Value&#60;N&#62;, NullType&#62;;</div><div class="code_line">};</div><div class="code_line">template &#60;typename N, typename ...T&#62;</div><div class="code_line">using MakeTList = typename MakeList&#60;N, T...&#62;::type;</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename N, typename ...T&#62;</div><div class="code_line">using MakeProps = typename MakeTList&#60;N, T...&#62;::type;</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename F, typename Param&#62;</div><div class="code_line">struct Builder: public Param::Node, public Builder&#60;F, typename Param::Tail&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;template &#60;typename Args&#62;</div><div class="code_line">&nbsp;&nbsp;void setArgs(Args &amp;&amp;args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto &amp;value &nbsp; &nbsp; = static_cast&#60;Value&#60;std::remove_reference_t&#60;Args&#62;&#62;&amp;&#62;(*this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;using node_type = typename std::remove_reference_t&#60;decltype(value)&#62;::node_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;node_type::set(value.Name, args.value);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;auto getValue()</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto &amp;value &nbsp; &nbsp; = static_cast&#60;typename Param::Node&amp;&#62;(*this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;using node_type = typename std::remove_reference_t&#60;decltype(value)&#62;::node_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return node_type::get(value.Name);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;explicit Builder(F f): Builder&#60;F, typename Param::Tail&#62;(f) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;template &#60;typename ...Args&#62;</div><div class="code_line">&nbsp;&nbsp;typename std::function&#60;F&#62;::result_type call(Args... args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return Builder&#60;F, typename Param::Tail&#62;::call(args..., getValue());</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;template &#60;typename ...Args&#62;</div><div class="code_line">&nbsp;&nbsp;typename std::function&#60;F&#62;::result_type operator()(Args... args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;(setArgs(args), ...);</div><div class="code_line">&nbsp;&nbsp; &nbsp;return call();</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename F&#62;</div><div class="code_line">struct Builder&#60;F, NullType&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::function&#60;F&#62; fn;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;explicit Builder(F f): fn(f) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;template &#60;typename ...Args&#62;</div><div class="code_line">&nbsp;&nbsp;typename std::function&#60;F&#62;::result_type call(Args... args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return (this-&#62;fn)(args...);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">void f(int x, int y, int z)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; x &#60;&#60; &#39;\t&#39; &#60;&#60; y &#60;&#60; &#39;\t&#39; &#60;&#60; z &#60;&#60; std::endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">Prop(const char*) param1;</div><div class="code_line">Prop(const char*) param2;</div><div class="code_line">&nbsp;</div><div class="code_line">Builder&#60;decltype(strcmp), MakeTList&#60;param1, param2&#62;&#62; build(strcmp);</div><div class="code_line">&nbsp;</div><div class="code_line">Prop(int) par1;</div><div class="code_line">Prop(int) par2;</div><div class="code_line">Prop(int) par3;</div><div class="code_line">&nbsp;</div><div class="code_line">Builder&#60;decltype(f), MakeTList&#60;par1, par2, par3&#62;&#62; f_proxy(f);</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abc&quot;, param2() = &quot;abc&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abc&quot;, param2() = &quot;abd&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param2() = &quot;abd&quot;, param1() = &quot;abc&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abd&quot;) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param2() = &quot;ab&quot; ) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;f_proxy(par2() = 456, par1() = 789);</div><div class="code_line">&nbsp;&nbsp;f_proxy(par3() = 123);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>Добавил функцию с тремя параметрами, чисто шоп потестить. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-23T15:34:28+00:00">23.12.24, 15:34</time></span></span><br>
<strong class='tag-b'>Majestio</strong>, разобрался с вашим доблестным компилером онлайн. Во-первых, ему нужно явное включение &lt;cstdint&gt;, чтобы были доступны определения типов типа uint_least32_t. Что очень странно, ибо этот тип используется в классе std::source_location, и он должен его включать сам. Ну ок, как бы не обязан, и как-то выкручивается. Во-вторых, ему категорически не травится атрибут noexcept у strcmp(), из-за которого он отказывается конкретизировать параметр std::function&lt;&gt; и идёт по обобщённой ветке, которая не реализована, и это правильно. Правильно, что не реализована для не подходящего типа, но вот то, что noexcept-функция является неподходящей – это ни разу не правильно. И это хороший вопрос к тамошней реализации STL, разбирайся с этой байдой сам, тут я не помощник. Во всяком случае ты можешь заменить std::function&lt;&gt; просто на указатель и везде вместо длинных bla_bla::return_type наставить auto. Должно работать, но это уж точно костыль.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915362</guid>
        <pubDate>Sun, 22 Dec 2024 18:46:18 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915362</link>
        <description><![CDATA[Qraizer: У C++ нет таких возможностей для того, что не может быть разрешено в компайл-тайм и требует линк-тайм. Например, полноценные мультиметоды. Но можно к такому приблизиться очень близко. Если ты имеешь в виду что-то типа рефлексии, то это уже не грамматика. Но её тоже обещают через пару лет, посмотрим]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915361</guid>
        <pubDate>Sun, 22 Dec 2024 18:13:22 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915361</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915358'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-22T15:13:20+00:00">22.12.24, 15:13</time></span><div class='quote '><strong class='tag-b'>D_KEY</strong>, это не костыли, это расширение возможностей языка его же средствами.</div></div><br>
Костыли. У C++ нет достаточных возможностей для расширения языка и добавления синтаксического сахара в данном случае (а такой способ передачи аргументов это именно синтаксический сахар). Препроцессор тут помог не сильно.<br>
А по поводу идеи, да, кажется норм.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915358</guid>
        <pubDate>Sun, 22 Dec 2024 15:13:20 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915358</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>D_KEY</strong>, это не костыли, это расширение возможностей языка его же средствами. С тем же успехом можно назвать костылями все эти &lt;type_traits&gt;, &lt;ratio&gt; итп.<br>
Идея в том, что построенное на основе шаблонного вариадика дерево Builder содержит узлы Value для хранения переданных параметров, которые в свою очередь унаследованы от Value_base, хранящие значения по умолчанию. На случай особых типов, чтение и установка параметра вынесено в стратегию Node, которая легко специализируется. (Например, для указателей может захотеться намутить контейнер, владеющий контентом, вместо хранения собственно указателя.) Каждый Value_base уникален, благодаря зависимости от строки/колонки в сырце, и производный от него Value наследует зависимость от строки/колонки, позволяя работать с Value_base уже без этой зависимости. Каждый Value представлен в дереве Builder отдельный узлом, так что static_cast&lt;&gt; легко кастует Builder вниз к нужному Value. В вызове Builder создаются лёгкие rvalue этих Value_base, которые заменяют значения по умолчанию из Node на указанные, и Builder сначала последовательно проходит по всем переданным Value_base (извлекая инфу для зависимого от него Value из своего дерева), переносит значения из них в найденные у себя Value, а затем проходит по своим Value уже в порядке шаблонных параметров и собирает вариадиком значения для передачи в функцию. Конечно, надо бы ещё добавить в Node какие-нибудь set_default/get_default() для управления умолчаниями в ран-тайм и сброс значений Value к хранимым в Node, чтоб совсем шоколадно.<br>
Посмотри, там оверхеда нет вообще:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">00007FF6363C96F0 &nbsp;push &nbsp; &nbsp; &nbsp; &nbsp;rbx &nbsp;</div><div class="code_line">00007FF6363C96F2 &nbsp;sub &nbsp; &nbsp; &nbsp; &nbsp; rsp,20h &nbsp;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abc&quot;, param2() = &quot;abc&quot;) &#60;&#60; std::endl;</div><div class="code_line">00007FF6363C96F6 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; rcx,qword ptr [build+58h (07FF6364C3B28h)] &nbsp;</div><div class="code_line">00007FF6363C96FD &nbsp;lea &nbsp; &nbsp; &nbsp; &nbsp; rbx,[string &quot;%p&quot; (07FF63649A6CCh)] &nbsp;</div><div class="code_line">00007FF6363C9704 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; qword ptr [build+8h (07FF6364C3AD8h)],rbx &nbsp;</div><div class="code_line">00007FF6363C970B &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; qword ptr [build+18h (07FF6364C3AE8h)],rbx &nbsp;</div><div class="code_line">00007FF6363C9712 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; qword ptr [rsp+30h],rbx &nbsp;</div><div class="code_line">00007FF6363C9717 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; qword ptr [rsp+38h],rbx &nbsp;</div><div class="code_line">00007FF6363C971C &nbsp;test &nbsp; &nbsp; &nbsp; &nbsp;rcx,rcx &nbsp;</div><div class="code_line">00007FF6363C971F &nbsp;je &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;main+1B5h (07FF6363C98A5h) &nbsp;</div><div class="code_line">00007FF6363C9725 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; rax,qword ptr [rcx] &nbsp;</div><div class="code_line">00007FF6363C9728 &nbsp;lea &nbsp; &nbsp; &nbsp; &nbsp; r8,[rsp+30h] &nbsp;</div><div class="code_line">00007FF6363C972D &nbsp;lea &nbsp; &nbsp; &nbsp; &nbsp; rdx,[rsp+38h] &nbsp;</div><div class="code_line">00007FF6363C9732 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; qword ptr [rsp+40h],rdi &nbsp;</div><div class="code_line">00007FF6363C9737 &nbsp;call &nbsp; &nbsp; &nbsp; &nbsp;qword ptr [rax+10h] &nbsp;</div><div class="code_line">00007FF6363C973A &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; edx,eax &nbsp;</div><div class="code_line">00007FF6363C973C &nbsp;lea &nbsp; &nbsp; &nbsp; &nbsp; rcx,[std::cout (07FF6364C5B70h)] &nbsp;</div><div class="code_line">00007FF6363C9743 &nbsp;call &nbsp; &nbsp; &nbsp; &nbsp;std::basic_ostream&#60;char,std::char_traits&#60;char&#62; &#62;::operator&#60;&#60; (07FF6363B1D70h) &nbsp;</div><div class="code_line">00007FF6363C9748 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; rcx,rax &nbsp;</div><div class="code_line">00007FF6363C974B &nbsp;call &nbsp; &nbsp; &nbsp; &nbsp;std::endl&#60;char,std::char_traits&#60;char&#62; &#62; (07FF6363B1320h) &nbsp;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abc&quot;, param2() = &quot;abd&quot;) &#60;&#60; std::endl;</div><div class="code_line">00007FF6363C9750 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; rcx,qword ptr [build+58h (07FF6364C3B28h)]</div></ol></div></div></div></div>Если включить -O2, конечно. Точнее, он есть, принадлежит std::function&lt;&gt;, но разглядеть его непросто, чекает инкапсулированную функцию на nullptr. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-22T15:29:43+00:00">22.12.24, 15:29</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915333'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-20T20:21:36+00:00">20.12.24, 20:21</time></span><div class='quote '>И еще один недостаток  Я не смог твой пример откомпилячить тут - <a class='tag-url' href='https://www.onlinegdb.com' target='_blank'>https://www.onlinegdb.com</a>.</div></div>std::source_location требует C++20. Кроме того, VS тоже ругается, если не указать ключик /Zc:preprocessor, который разрешает variadic macro... Хм, что-то у меня есть подозрение, что с препроцессором я облажался <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-22T15:38:11+00:00">22.12.24, 15:38</time></span></span><br>
P.S. На всякий случай результат исполнения:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">0</div><div class="code_line">-1</div><div class="code_line">-1</div><div class="code_line">0</div><div class="code_line">1</div></ol></div></div></div></div>]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915348</guid>
        <pubDate>Sat, 21 Dec 2024 15:38:37 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915348</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915343'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-21T11:07:30+00:00">21.12.24, 11:07</time></span><div class='quote '>Majestio, в твоём варианте оверхед в рантайме, что для синтаксического сахара плохо </div></div><br>
Согласен, вааще не вопрос&#33; :rolleyes:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915343</guid>
        <pubDate>Sat, 21 Dec 2024 11:07:30 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915343</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>Qraizer</strong>, норм вроде (позже гляну повнимательнее). Но, сам понимаешь, костыли это все :D<br>
<br>
Есть уже boost.parameter. Но тоже костыли (особенно страшно выглядит объявление функций). <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-21T11:08:08+00:00">21.12.24, 11:08</time></span></span><br>
<strong class='tag-b'>Majestio</strong>, в твоём варианте оверхед в рантайме, что для синтаксического сахара плохо :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915333</guid>
        <pubDate>Fri, 20 Dec 2024 20:21:36 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915333</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915332'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-20T18:42:36+00:00">20.12.24, 18:42</time></span><div class='quote '>В общем, я тут сварганил на коленке концепцию.</div></div><br>
Как всегда :lol: Даже разбираться не буду, мне страшно :lol:<br>
<br>
Ну я тоже решил сварганить свой подход:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;any&#62;</div><div class="code_line">#include &#60;map&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">enum class KeyType {</div><div class="code_line">&nbsp;&nbsp;One, Two, Three</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">using ParamsType = std::map&#60;KeyType, std::any&#62;;</div><div class="code_line">&nbsp;</div><div class="code_line">void TestFunc(ParamsType param) {</div><div class="code_line">&nbsp;&nbsp;for(const auto &amp;i: param) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;param [&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;switch(i.first) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case KeyType::One: &nbsp; std::cout &#60;&#60; &quot;One]: &quot; &nbsp; &#60;&#60; std::any_cast&#60;std::string&#62;(i.second); break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case KeyType::Two: &nbsp; std::cout &#60;&#60; &quot;Two]: &quot; &nbsp; &#60;&#60; std::any_cast&#60;int&#62;(i.second); break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;case KeyType::Three: std::cout &#60;&#60; &quot;Three]: &quot; &#60;&#60; std::any_cast&#60;double&#62;(i.second); break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;default: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cout &#60;&#60; &quot;Unknown]&quot;; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; std::endl; &nbsp;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp;TestFunc({</div><div class="code_line">&nbsp;&nbsp; &nbsp;{KeyType::Two, 2}, &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;{KeyType::One, std::string{&quot;Один&quot;}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;// можно пропустить, а можно не пропустить {KeyType::Three, 2.71828}</div><div class="code_line">&nbsp;&nbsp;});</div><div class="code_line">&nbsp;&nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">param [One]: Один</div><div class="code_line">param [Two]: 2</div></ol></div></div></div></div><br>
Позволяет какбэ реализовать именованные параметры, и позволяет параметрам быть необязательными. Но недостатков тоже масса:<br>
<br>
1) Гораздо многословнее чем в Dart<br>
2) Проверку наличия обязательных параметров можно обеспечить только проверками в рантайме в теле функции/конструктора/метода<br>
3) Инициализацию по-умолчанию можно реализовать только в рантайме в теле функции/конструктора/метода<br>
4) Чтобы не ошибиться в передаче и последующей обработке имен параметров пришлось запилить enum class<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915332'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-20T18:42:36+00:00">20.12.24, 18:42</time></span><div class='quote '>Недостатков уйма.</div></div><br>
И еще один недостаток  ;) Я не смог твой пример откомпилячить тут - <a class='tag-url' href='https://www.onlinegdb.com' target='_blank'>https://www.onlinegdb.com</a>. Свой пример <a class='tag-url' href='https://onlinegdb.com/8cgidNU5E' target='_blank'>я проверил</a>, для С++17.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915332</guid>
        <pubDate>Fri, 20 Dec 2024 18:42:36 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915332</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915264'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-20T00:40:49+00:00">20.12.24, 00:40</time></span><div class='quote '>Для такой гарантии в WinAPI должны присутствовать системные вызовы с явным указанием желаемых тайм-аутов на исполнение. Оно там действительно есть?</div></div>В WinAPI нет, но оно и не RT. Ты тоже невнимателен, я говорил за ядро ОСи. В ядре винды RT вполне себе есть.<br>
Но следует учитывать, конечно, что она никогда не позиционировалась как RTOS, поэтому гарантий MS не предоставляет. И тем не менее анализ ядерного API показывает, что чёткое вытеснение на основе приоритетов там присутствует, и практика это <s class='tag-s'>подтверждает</s> ну, не опровергает.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915314'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-20T11:48:37+00:00">20.12.24, 11:48</time></span><div class='quote '>Узкая ниша (плюс ещё и перекос на российскую специфику, а я не уверен, что она отражает мировые тренды). Не вижу смысла обсуждать тут, оно не имеет отношения к winapi vs posix.</div></div>За российскую специфику это ты зря. Как раз российская специфика, особенно с недавних пор, должна бы по идее убить в себе зависимость от проприетарных технологий недружественных стран, ан нет. Не то что не смогли, даже не собирались начинать. <span class="tag-color tag-color-named" data-value="gray" style="color: gray">Только тс-с-с, не дай бог нас <strong class='tag-b'>там</strong> услышат.</span> Оффтоп, конечно, но напомню, что речь об этом зашла в контексте надёжности и безопасности ПО, а этот контекст появился от меня как практическая демонстрация безопасности APIs. И мне правда жаль, что из соображений конфиденциальности интеллектуальной собственности (в частности не нашей, а заказчиков) не могу предоставить что-нибудь более материальное.<br>
<br>
В общем, я тут сварганил на коленке концепцию.<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;source_location&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;functional&#62;</div><div class="code_line">#include &#60;type_traits&#62;</div><div class="code_line">#include &#60;cstring&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename Param&#62; struct Node</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;using value_type = Param;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;static value_type set(value_type&amp; l, const value_type&amp; r) { return l = r; }</div><div class="code_line">&nbsp;&nbsp;static value_type get(const value_type&amp; v) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ return v; &nbsp; &nbsp; }</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;static inline const value_type default_value = value_type{};</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename T, std::uint_least32_t L, std::uint_least32_t C&#62; struct Value_Base</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;static const std::uint_least32_t line &nbsp; = L;</div><div class="code_line">&nbsp;&nbsp;static const std::uint_least32_t column = C;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;using node_type = Node&#60;T&#62;;</div><div class="code_line">&nbsp;&nbsp;using value_type= typename node_type::value_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;value_type value;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Value_Base(): value(node_type::default_value) {}</div><div class="code_line">&nbsp;&nbsp;Value_Base&amp; operator=(const typename node_type::value_type&amp; v) { value = v; return *this; }</div><div class="code_line">};</div><div class="code_line">template &#60;typename T, std::uint_least32_t L, std::uint_least32_t C&#62; struct Value;</div><div class="code_line">&nbsp;</div><div class="code_line">#define Prop_Decl(Type) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">struct Value&#60;typename Type::node_type::value_type, Type::line, Type::column&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#define Prop_Impl(Type) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">template&#60;&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">struct Value&#60;typename Type::node_type::value_type, Type::line, Type::column&#62;: public Type &nbsp; &nbsp; &nbsp; \</div><div class="code_line">{ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">public: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp;using node_type = typename Type::node_type; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp;using value_type= typename node_type::value_type; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp;value_type Name; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">public: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp;explicit Value(const value_type&amp; v = node_type::default_value): Name(v) {} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">#define Prop(Type) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\</div><div class="code_line">typedef struct Value_Base&#60;Type, std::source_location::current().line(), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::source_location::current().column()&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#define MakeProps(CurProp, ...) &nbsp; Prop_Impl(CurProp) __VA_OPT__(Prop_Impl(__VA_ARGS__))</div><div class="code_line">#define MakeBuilder(Func, CurProp, ...) Builder&#60;Func, Prop_Decl(CurProp) __VA_OPT__(, Prop_Decl(__VA_ARGS__))&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename F, typename Param, typename ...NextParams&#62;</div><div class="code_line">struct Builder: public Param, public Builder&#60;F, NextParams...&#62;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;template &#60;typename Args&#62;</div><div class="code_line">&nbsp;&nbsp;void setArgs(Args &amp;&amp;args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto &amp;value= static_cast&#60;Value&#60;typename std::remove_cvref_t&#60;Args&#62;::node_type::value_type,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Args&#62;::line,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Args&#62;::column&#62;&amp;&#62;(*this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;using node_type = typename std::remove_reference_t&#60;decltype(value)&#62;::node_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;node_type::set(value.Name, args.value);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;auto doIt()</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto &amp;value= static_cast&#60;Value&#60;typename std::remove_cvref_t&#60;Param&#62;::node_type::value_type,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Param&#62;::line,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Param&#62;::column&#62;&amp;&#62;(*this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;using node_type = typename std::remove_reference_t&#60;decltype(value)&#62;::node_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return node_type::get(value.Name);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;explicit Builder(F f): Builder&#60;F, NextParams...&#62;(f) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;template &#60;typename Arg, typename ...Args&#62;</div><div class="code_line">&nbsp;&nbsp;typename std::function&#60;F&#62;::result_type operator()(Arg arg, Args... args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;setArgs(arg); (setArgs(args), ...);</div><div class="code_line">&nbsp;&nbsp; &nbsp;return (this-&#62;fn)(doIt(), Builder&#60;F, NextParams...&#62;::doIt());</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename F, typename Param&#62;</div><div class="code_line">struct Builder&#60;F, Param&#62;: public Param</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;template &#60;typename Args&#62;</div><div class="code_line">&nbsp;&nbsp;void setArgs(Args &amp;&amp;args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto &amp;value= static_cast&#60;Value&#60;typename std::remove_cvref_t&#60;Args&#62;::node_type::value_type,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Args&#62;::line,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Args&#62;::column&#62;&amp;&#62;(*this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;using node_type = typename std::remove_reference_t&#60;decltype(value)&#62;::node_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;node_type::set(value.Name, args.value);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;auto doIt()</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto &amp;value= static_cast&#60;Value&#60;typename std::remove_cvref_t&#60;Param&#62;::node_type::value_type,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Param&#62;::line,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::remove_cvref_t&#60;Param&#62;::column&#62;&amp;&#62;(*this);</div><div class="code_line">&nbsp;&nbsp; &nbsp;using node_type = typename std::remove_reference_t&#60;decltype(value)&#62;::node_type;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return node_type::get(value.Name);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;std::function&#60;F&#62; fn;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;explicit Builder(F f): fn(f) {}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;template &#60;typename Args&#62;</div><div class="code_line">&nbsp;&nbsp;typename std::function&#60;F&#62;::result_type operator()(Args args)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;setArgs(args);</div><div class="code_line">&nbsp;&nbsp; &nbsp;return (this-&#62;fn)(doIt());</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">Prop(const char*) param1;</div><div class="code_line">Prop(const char*) param2;</div><div class="code_line">&nbsp;</div><div class="code_line">MakeProps(param1, param2);</div><div class="code_line">MakeBuilder(decltype(strcmp), param1, param2) build(strcmp);</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abc&quot;, param2() = &quot;abc&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abc&quot;, param2() = &quot;abd&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param2() = &quot;abd&quot;, param1() = &quot;abc&quot;) &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param1() = &quot;abd&quot;) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; build(param2() = &quot;ab&quot; ) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#60;&#60; std::endl;</div><div class="code_line">}</div></ol></div></div></div></div>Недостатков уйма. Значения по умолчанию по сути не работают (последние два вызова), т.к. задаются только в начале и когда позже перебиваются явными значениями, такими и остаются. Много избыточного, т.к. это третья по счёту наконец-то заработавшая как надо реализация, и мне лень её вычищать и оптимизировать. В конце концов это концепция, а не либа. И да, давненько я не брал в руки препроцессор :D ... Кто если заинтересуется, может заглянуть в мои мультиметоды на гитхабе и стащить оттуда нормальные техники реализации этого безобразия, без препроцесора, со списками типов, нормальной рекурсией по параметрам и деревьям акцепторов. Зато тут уже заложен потенциал стратегии для кастомизации обработки специфических типов параметров (на основе template &lt;typename Param&gt; struct Node) и уже реализована неограниченная N-arity с произвольным порядком передачи параметров в вызов. Второй и третий вызовы показывают, что порядок параметров Builder не влияет на порядок параметров strcmp().<br>
Но лучше, думаю, подождать C++26, куда нам обещали крутейшую рефлексию. Не факт, что успеют, правда.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915314</guid>
        <pubDate>Fri, 20 Dec 2024 11:48:37 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915314</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915034'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T11:57:08+00:00">19.12.24, 11:57</time></span><div class='quote '>Я не слышал по полноценных, 100% перепатченых дистров под реальное время.</div></div><br>
Вроде были. Плюс сейчас в этом году в ядро смержили поддержку реального времени. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-20T11:51:30+00:00">20.12.24, 11:51</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915036'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T16:03:46+00:00">19.12.24, 16:03</time></span><div class='quote '>Ты можешь нагуглить в лучшем случае прототипы систем бортового управления (сиречь менеджмента). У них 100пудово категория E, по которой сертификация требует базовый набор документов из двух комплектов, и на этом всё. Только Р4754 или может быть 4761. Развернуть прототип и связать с компонентами не проблема. Потому что DAL-E не влияет на безопасность. Мы же говорим о компонентах класса 3А или 3Б с категориями через одного DAL-A/B и C и только изредка D. По ним из стандартов не вылезешь, комплектов документов потребуется 3 десятка по каждому, и их на борту сотни. Не все из них используют ПО, многие только электронные или даже электрические, а некоторые вообще просто механика. Но это неважно, те, которые используют ПО, ты даже близко не нагуглишь. Их вне каналов взаимодействия между сертифицирующими органами и разработчиками, включая подрядчиков, нигде нет... а, ну ещё в архивах.<br>
Вот конкретно сейчас мы занимаемся системой торможения для МС-21. Там четыре (хоть и все ARM, но все разные) микроконтроллера с FLASH на 512Кб и 128Кб RAM. Ну-ну запихать туда что-нить не самописное. И оно на 80% состоит из взаимодействия с железом и остальные 20% чутка логики для обхода отказов, включая <a class='tag-url' href='https://en.wikipedia.org/wiki/Single-event_upset' target='_blank'>события единичного отказа</a>. Самолёты целиком состоят из вот таких на наш/ваш взгляд примитивных вычислительных модулей. Что-либо более-менее серьёзное, хотя бы уровня P5M или там Qualcomm S1, которые мы всерьёз не воспринимаем уже лет 10-20, ставят на что-нибудь сугубо интерфейсное или в салон мультики пассажирам крутить. Просто потому что они ненадёжны, и утеря ими функциональности некритична. Вот это ты можешь нагуглить тоннами, это бизнес. P.S. Бизнес – не безопасность.</div></div><br>
Я с тобой во многом не согласен. Но кажется, что это все не имеет отношения к теме дискуссии :) <br>
Так что тут можно закончить. Ты в этом веришся, тебе виднее, наверное.<br>
Узкая ниша (плюс ещё и перекос на российскую специфику, а я не уверен, что она отражает мировые тренды). Не вижу смысла обсуждать тут, оно не имеет отношения к winapi vs posix. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-20T11:53:40+00:00">20.12.24, 11:53</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915036'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T16:03:46+00:00">19.12.24, 16:03</time></span><div class='quote '>За лямбды я сожалел, что они хоть и гораздо удобнее функторов, но всё ж недостаточно и ввиду слабой языковой поддержки их эффективность хуже. Но на C++03 большего и не сделать было. Как концепция лямбды мне очень нравились.</div></div><br>
Ну так я и говорю, что костыльность реализации не означает то, что концепция плоха. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-20T11:55:46+00:00">20.12.24, 11:55</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915036'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T16:03:46+00:00">19.12.24, 16:03</time></span><div class='quote '>В отличие от именованных аргументов, натянуть на каковые объективный смысл весьма затруднительно</div></div><br>
В некоторых случаях было бы удобно для API. Только плюсы и так перегружены сейчас, наверное, оно того не стоит. Но, опять же, это связано с языком, а не концепциями. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-20T11:56:34+00:00">20.12.24, 11:56</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915263'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T17:26:36+00:00">19.12.24, 17:26</time></span><div class='quote '>Винда на уровне ядра это гарантирует посредством уровней IRQL.</div></div><br>
А можно какую-то ссылку на документацию?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915264</guid>
        <pubDate>Fri, 20 Dec 2024 00:40:49 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915264</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915034'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T11:57:08+00:00">19.12.24, 11:57</time></span><div class='quote '>RTOS гарантирует и предоставляет прогеру возможности прогать вызовы в строго детерминированных промежутках времени</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915263'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T17:26:36+00:00">19.12.24, 17:26</time></span><div class='quote '>Вот в этом ты ошибаешься. RTOS гарантирует времена откликов.</div></div><br>
Ну так это какгбэ одно и тоже, только разными словами :blink: Под гарантией понимается возможность задания времён/таимаутов исполнения.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915263'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T17:26:36+00:00">19.12.24, 17:26</time></span><div class='quote '>Винда на уровне ядра это гарантирует посредством уровней IRQL.</div></div><br>
Для такой гарантии в WinAPI должны присутствовать системные вызовы с явным указанием желаемых тайм-аутов на исполнение. Оно там действительно есть? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915263'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T17:26:36+00:00">19.12.24, 17:26</time></span><div class='quote '>Ну так я говорю, Dart переизобрёл MSное OLE Automation, которой 100 лет в обед.</div></div><br>
Дело не в изобретении, а во включении в стандарт языка. Вон там, к примеру, подымали тему лямбд. Тоже могу сказать, что С++ в 2011 году их не изобрели, но их включили в стандарт языка. Я лямбды в Perl пользовал еще в далеком 1997 году, сразу как изучил и начал пользоваться. А сам, еще тогдашний Perl 4, релизнулся в 1993 году.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915263</guid>
        <pubDate>Thu, 19 Dec 2024 17:26:36 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915263</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915028'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T18:13:56+00:00">18.12.24, 18:13</time></span><div class='quote '>А тем более вплетать для этого метапрограммирование - ваще беда. И, если честно, я не совсем понимаю как у тебя это получится. Можешь продемонстрировать?</div></div>Именно метой. А для чего её по-твоему в язык <s class='tag-s'>ввели</s> впрочем да, ввели-то ещё в C++98 случайно, но вот развили в C++11 уже намерено.<br>
Продемонстрировать... ишь ты. Ну как концепт, можно.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915028'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T18:13:56+00:00">18.12.24, 18:13</time></span><div class='quote '>Вот в этом и фишка подхода в Dart - кроме &quot;поименованной&quot; инициализации есть еще возможность объявлять обязательные и необязательные параметры.</div></div>Ну так я говорю, Dart переизобрёл MSное OLE Automation, которой 100 лет в обед. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-19T17:31:52+00:00">19.12.24, 17:31</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915034'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-19T11:57:08+00:00">19.12.24, 11:57</time></span><div class='quote '>Понятие &quot;RTOS&quot; не подразумевает оценку отклика системных вызовов, или качества планировщика многозадачности, ... Но самое главное отличие обычной оси от RTOS, в том, что RTOS гарантирует и предоставляет прогеру возможности прогать вызовы в строго детерминированных промежутках времени. В Уиндовс такого не было, нет, и пока слабо ожидается&#33;</div></div>Вот в этом ты ошибаешься. RTOS гарантирует времена откликов. Они не обязательно какие-то там маленькие, микросекунды или что там, но они точно гарантировано не более чем вот такие-то. Винда на уровне ядра это гарантирует посредством уровней IRQL.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915036</guid>
        <pubDate>Thu, 19 Dec 2024 16:03:46 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915036</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915026'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T15:05:35+00:00">18.12.24, 15:05</time></span><div class='quote '>Ну судя по тому, что гуглится, вполне себе наблюдается</div></div>Ты можешь нагуглить в лучшем случае прототипы систем бортового управления (сиречь менеджмента). У них 100пудово категория E, по которой сертификация требует базовый набор документов из двух комплектов, и на этом всё. Только Р4754 или может быть 4761. Развернуть прототип и связать с компонентами не проблема. Потому что DAL-E не влияет на безопасность. Мы же говорим о компонентах класса 3А или 3Б с категориями через одного DAL-A/B и C и только изредка D. По ним из стандартов не вылезешь, комплектов документов потребуется 3 десятка по каждому, и их на борту сотни. Не все из них используют ПО, многие только электронные или даже электрические, а некоторые вообще просто механика. Но это неважно, те, которые используют ПО, ты даже близко не нагуглишь. Их вне каналов взаимодействия между сертифицирующими органами и разработчиками, включая подрядчиков, нигде нет... а, ну ещё в архивах.<br>
Вот конкретно сейчас мы занимаемся системой торможения для МС-21. Там четыре (хоть и все ARM, но все разные) микроконтроллера с FLASH на 512Кб и 128Кб RAM. Ну-ну запихать туда что-нить не самописное. И оно на 80% состоит из взаимодействия с железом и остальные 20% чутка логики для обхода отказов, включая <a class='tag-url' href='https://en.wikipedia.org/wiki/Single-event_upset' target='_blank'>события единичного отказа</a>. Самолёты целиком состоят из вот таких на наш/ваш взгляд примитивных вычислительных модулей. Что-либо более-менее серьёзное, хотя бы уровня P5M или там Qualcomm S1, которые мы всерьёз не воспринимаем уже лет 10-20, ставят на что-нибудь сугубо интерфейсное или в салон мультики пассажирам крутить. Просто потому что они ненадёжны, и утеря ими функциональности некритична. Вот это ты можешь нагуглить тоннами, это бизнес. P.S. Бизнес – не безопасность. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-19T16:11:02+00:00">19.12.24, 16:11</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915027'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T15:24:59+00:00">18.12.24, 15:24</time></span><div class='quote '>Я помню, как люди плевались на бустовые лямбды, например.</div></div>Хм. Лично я помню, что очень сильно плевался на буст, потому что таскать за собой его было накладно, но не лямбды. За лямбды я сожалел, что они хоть и гораздо удобнее функторов, но всё ж недостаточно и ввиду слабой языковой поддержки их эффективность хуже. Но на C++03 большего и не сделать было. Как концепция лямбды мне очень нравились. В отличие от именованных аргументов, натянуть на каковые объективный смысл весьма затруднительно. Те же пропертя, только горизонтально. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-19T16:21:06+00:00">19.12.24, 16:21</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915027'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T15:24:59+00:00">18.12.24, 15:24</time></span><div class='quote '>Но в любом случае, это лучше тем, что ты можешь про инициализировать один раз и дальше отправлять в нескольких местах без копипасты.</div></div>Ну, за копипасту я слегонца слукавил всё ж. Обычно, если нужен однотипный код в нескольких местах, где копипаста помогает, там нет мульёна параметров или полей структур. Скажем так: мне не приходилось запускать процессы пачками. А с другой стороны, там, где тебе нужно запустить процесс, довольно сложно сделать это поэтапно, ибо старт процесса – это фактически его конструктор. Разделение создания объекта и его последующей инициализации давно уж признано не самым лучших аспектом ООП-модели, ибо в промежутке между этими этапами объект как ресурс существует, но отсутствует как сущность. Так что всё настраиваемые параметры нового процесса нужны здесь и сейчас, а не потом когда-нибудь.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915034</guid>
        <pubDate>Thu, 19 Dec 2024 11:57:08 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915034</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Ты возможно удивишься, но ядро у винды на порядок более реалтаймое, чем у линукса.</div></div><br>
<strong class='tag-b'>Qraizer</strong>, а вот тут, батенька, ты, скорее всего, сам себя заводишь в заблуждение <s class='tag-s'>и пацанов туманишь</s>&#33; :lol:<br>
<br>
Понятие &quot;RTOS&quot; не подразумевает оценку отклика системных вызовов, или качества планировщика многозадачности, или еще чего-то (допустим цвета упаковки коммерческого дистра). Да, если эти параметры на высоте - это супер. Но самое главное отличие обычной оси от RTOS, в том, что RTOS гарантирует и предоставляет прогеру возможности прогать вызовы в строго детерминированных промежутках времени. В Уиндовс такого не было, нет,  и пока слабо ожидается&#33; Хотя Гугыль подсказывает - подвижки есть. Пример Windows 10 IoT Enterprise, в котором частично реализовано т.н. &quot;мягкое реальное время&quot;. Иными словами, часть возможностей реализована.<br>
<br>
<strong class='tag-b'>Что касается Люникса</strong><br>
<br>
Люникс - это не операционная система (это, по сути, просто ядро)&#33; А вот моя любимая Фряха - это полноценная ось. Операционной системой Люникс может быть только в составе дистра(ов). Тогда да.<br>
<br>
<strong class='tag-b'>Что касается RTOS Люникса</strong><br>
<br>
Я не слышал по полноценных, 100% перепатченых дистров под реальное время. Да, есть отдельные &quot;флагманы&quot;, типа RTLinux,  FreeRTOS, Xenomai (но это отдельный догружаемый проект). Таким образом ... пшик :lol: Но есть одно &quot;но&quot;, ну достаточно продолжительное время начинают выпускаться ядра Люникса, разделённые на &quot;обычные&quot; и &quot;RT&quot;. Пример из моего любимого дистра Manjaro (в красных рамках выделены рилтаймовские ядра):<br>
<br>
<span class="b-attach" data-size="130712" data-hits="489" data-attach-id="66641" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=66641' title='Скачать файл' target='_blank'>Screenshot_4.png</a> (, : 489)
		</span><br>
<br>
И, тем не менее ... Даже если я RT-ядро установлю - от этого моя ось полноценной RTOS не станет&#33; Ядро просто предоставляет для рилтайма низкоуровнёвый интерфейс, ко всем прочим интерфейсам. Как мы определились выше (вернее, я вас определил) - ось это ядро  + базовый, коробочный, набор софта. Так вот, если это набор на RT плевать хотел, о какой рилтаймовости может идти речь?<br>
<br>
Все, что писал выше - чисто знакомство последних дней. Понимаю, что по верхам, понимаю, что мог где-то ошибиться. Но чуйка меня редко подводит.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915028</guid>
        <pubDate>Wed, 18 Dec 2024 18:13:56 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915028</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Что тебе мешает то же самое напрограммить на Плюсах? Пишешь один раз шаблон, при конкретизации инстанцируешь набором параметров, при использовании зовёшь метод шаблона, который переводит сие в процедурный вызов. Не скажу, что это легко и быстро, но один раз же. Только потом не огорчайся, когда народ будет реагировать на это как ты на ту хабровую статью про эрроры. Оно надо будет буквально паре человеков.</div></div><br>
Не, спасибо. Это мне кажется не одно и тоже. А тем более вплетать для этого метапрограммирование - ваще беда. И, если честно, я не совсем понимаю как у тебя это получится. Можешь продемонстрировать?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Я поступлю по другому, а именно спрошу &quot;дорогой Majestio, откуда у тебя выродилась такая гора входов в одну подсистему?&quot;, а потом &quot;как система защищена от человеческого фактора? как она реагирует на случайный пропуск инициализации одного поля? а двух? а десятка потому что скопипастил, и поправил со сдвигом в две строки?&quot; Я об этом уже писал выше, третий раз не буду.</div></div><br>
Вот в этом и фишка подхода в Dart - кроме &quot;поименованной&quot; инициализации есть еще возможность объявлять обязательные и необязательные параметры. Случайного пропуска не будет - компилятор не даст. А если пропустили &quot;необязательный&quot;, то у него обязана быть инициализация по умолчанию, или он инициализируется null. Т.е. тут большая ответственность лежит на том, кто написал такую функцию, конструктор или метод. У того, кто пользует - все гарантии есть. А про количество аргументов ... более 5-7 (или около того) я считаю извратом. Я о таком уже писал выше. Но всяко же бывает.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915027</guid>
        <pubDate>Wed, 18 Dec 2024 15:24:59 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915027</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Что тебе мешает то же самое напрограммить на Плюсах? <br>
...<br>
Только потом не огорчайся, когда народ будет реагировать на это как ты на ту хабровую статью про эрроры. Оно надо будет буквально паре человеков..</div></div><br>
Сам же и ответил. И не надо делать вывод, что раз костылями для реализации концепции не пользуются, то и сама концепция не нужна. Я помню, как люди плевались на бустовые лямбды, например. Но как только лямбды появились в языке (стандарте), то почему-то все начали пользоваться.<br>
Потому что проблема в самих костылях, а не концепции. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-18T15:27:57+00:00">18.12.24, 15:27</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Я в общем-то могу повторить про чемлучшемульёнполей буквально.</div></div><br>
Вообще и тут что-то уже не так, многовато полей :) <br>
Но в любом случае, это лучше тем, что ты можешь про инициализировать один раз и дальше отправлять в нескольких местах без копипасты. Ты можешь сделать несколько &quot;стандартных&quot; вариантов заполнения. Тебе легче дизайнить свой прикладной уровень поверх этого.<br>
Тебе легче делать обертки на крестах. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-18T15:32:13+00:00">18.12.24, 15:32</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Ты возможно удивишься, но ядро у винды на порядок более реалтаймое, чем у линукса.</div></div><br>
Не знаю, что там в windows. Линукс раньше и не был rtos, были отдельные версии linux для rtos. Сейчас, насколько я знаю, linux умеет работать в real time режиме (вроде в этом году смержили наконец-то патчи, которые жили много лет отдельно). Для windows это не так :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915026</guid>
        <pubDate>Wed, 18 Dec 2024 15:05:35 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915026</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Я говорил не об изделиях, а о средствах их разработки, верификации и сертификации.</div></div><br>
А, ну тогда это вообще большого значения не имеет, ИМХО. На чем угодно можно разрабатывать :-? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-18T15:08:05+00:00">18.12.24, 15:08</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T14:14:58+00:00">18.12.24, 14:14</time></span><div class='quote '>Изделия-то зачастую работают вообще на чём-то самописном, где и POSIX даже близко не наблюдается.</div></div><br>
Ну судя по тому, что гуглится, вполне себе наблюдается :) <br>
Сам я довольно мало работал с rtos и давно. Но это был ecos, который posix слой предоставлял.<br>
<br>
Ну и мы все упёрлись зачем-то в очень узкую нишу.<br>
<br>
Пока считаю свой тезис о том, что POSIX таки является стандартом для ОСей и таки реально реализуется и используется, верным.<br>
Точно так же как тезис о том, что winapi подобным стандартом не является и потому сравнивать это с posix некорректно.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915024</guid>
        <pubDate>Wed, 18 Dec 2024 14:14:58 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915024</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915011'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T19:01:04+00:00">17.12.24, 19:01</time></span><div class='quote '>В языках программирования нового поколения (Dart, и как оказалось, и Swift) ввели понятие &quot;именованных параметров&quot;. Там это решается проще - просто при инициализации указываем те параметры, которые явно нужно определить (по именам параметров), остальные инициализируются по умолчанию.</div></div>Что тебе мешает то же самое напрограммить на Плюсах? Пишешь один раз шаблон, при конкретизации инстанцируешь набором параметров, при использовании зовёшь метод шаблона, который переводит сие в процедурный вызов. Не скажу, что это легко и быстро, но один раз же. Только потом не огорчайся, когда народ будет реагировать на это как ты на ту хабровую статью про эрроры. Оно надо будет буквально паре человеков.<br>
Я в общем-то могу повторить про чемлучшемульёнполей буквально:<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpApplicantName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPropertyAddress,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpLoanType,</div><div class="code_line">&nbsp;&nbsp; &nbsp;double dLoanAmount,</div><div class="code_line">&nbsp;&nbsp; &nbsp;int nLoanTerm,</div><div class="code_line">&nbsp;&nbsp; &nbsp;double dInterestRate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bFixedRate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpCreditScore,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpEmploymentStatus,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpIncomeVerification,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bCoApplicant,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpCoApplicantName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpCoApplicantCreditScore,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpDownPaymentSource,</div><div class="code_line">&nbsp;&nbsp; &nbsp;double dDownPaymentAmount,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPropertyType,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bFirstTimeHomeBuyer,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpLoanOfficerName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpApplicationID,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bPreApproval,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpReferralSource,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpContactMethod,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bEmailUpdates,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPreferredClosingDate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpInsuranceProvider,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPropertyInspectionStatus,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpAppraisalValue,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bEscrowAccount,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpMonthlyPaymentEstimate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpLoanDisclosureDocuments,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpAdditionalNotes,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bSubmitApplication</div><div class="code_line">) SuperCoolStruct_VS_DeepShitParams, *PSuperCoolStruct_VS_DeepShitParams;</div><div class="code_line">&nbsp;</div><div class="code_line">BOOL OpeningMicrosoftMortgage(PSuperCoolStruct_VS_DeepShitParams cfg);</div></ol></div></div></div></div></div></div>и напомнить, что memset() (неважно, что подкапотный) не решает траблю, т.к. далеко не всегда нулевая последовательность бит подходит для значения по умолчанию. Я поступлю по другому, а именно спрошу &quot;дорогой <strong class='tag-b'>Majestio</strong>, откуда у тебя выродилась такая гора входов в одну подсистему?&quot;, а потом &quot;как система защищена от человеческого фактора? как она реагирует на случайный пропуск инициализации одного поля? а двух? а десятка потому что скопипастил, и поправил со сдвигом в две строки?&quot; Я об этом уже писал выше, третий раз не буду.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915019'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T08:17:44+00:00">18.12.24, 08:17</time></span><div class='quote '>Ты сам пишешь про rtos, но винда к ним не относится </div></div>Ты возможно удивишься, но ядро у винды на порядок более реалтаймое, чем у линукса. Я даже под Win98SE в своё время получал гарантированные микросекунды реакции, тогда как соседний nix-овый отдел оперировал миллисекундами. Под WinXP ситуация не поменялась, а как нынче у того отдела, беспонятия, меня в том КБ уже 20 лет нету. И не надо, что мол ядро и прикладной уровень не сравнимы. Да, не сравнимы, но прикладное ПО с требованиями жёсткого реал-тайма и проектируются соответственно, одного только наличия RTOS недостаточно.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915019'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T08:17:44+00:00">18.12.24, 08:17</time></span><div class='quote '>Может раньше была какая-то старая и другая, а сейчас перешли на что-то новое?</div></div>Скорее просто случайное совпадение аббревиатур. Хотя вариант с развитием ОСи в направлении мультиплатформенности тоже может быть. Тогда действиетльно Honeywell могла взять что-то старое и 20 (?) лет использовать в своих продуктах, а ОСь с тех пор эволюционировала. На тот момент в тестируемых нами шелезяках были P5 и i486.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915019'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T08:17:44+00:00">18.12.24, 08:17</time></span><div class='quote '>Ты хочешь сказать, что в их &quot;RTOS&quot; под капотом была винда?</div></div>Нет. Что её API основан на WinAPI. Реализация ОСи в лучшем случае (не факт, ессно) была лицензирована с Windows CE, которая, как известно, с Windows, кроме API, общего ничего не имеет. Это тем более вероятно, что даже их тестовая среда TATS использовала VBScript под лицензией с некоторыми расширениями языка типа групп, драйверов, мониторов итп. (Это всё не те группы, драйверы и мониторы в известном смысле, это названия подсистем тестирования, управляющие входами и контролирующие выходы.)<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915019'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-18T08:17:44+00:00">18.12.24, 08:17</time></span><div class='quote '>Тут проблема в том, что в публичной информации нет никакого упоминания про windows, есть информация про разные rtos и они основаны не на винде, а или на чем-то своем или на линуксах.</div></div>Ты невнимательно меня читаешь, кажись. Я говорил не об изделиях, а о средствах их разработки, верификации и сертификации. Изделия-то зачастую работают вообще на чём-то самописном, где и POSIX даже близко не наблюдается.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915019</guid>
        <pubDate>Wed, 18 Dec 2024 08:17:44 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915019</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T10:18:54+00:00">17.12.24, 10:18</time></span><div class='quote '>Какие тебе примеры? Falcon, Boeing, Embraer — недостаточно? Могу ещё с десяток наименований накидать.</div></div><br>
Тут проблема в том, что в публичной информации нет никакого упоминания про windows, есть информация про разные rtos и они основаны не на винде, а или на чем-то своем или на линуксах. И даже когда на своем, то есть как минимум частичная реализация posix. Про WinAPI ни слова. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-18T08:21:21+00:00">18.12.24, 08:21</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T10:18:54+00:00">17.12.24, 10:18</time></span><div class='quote '>Вся авионика, с которой я сталкивался, разрабатывается и сертифицируется под виндой.</div></div><br>
Ты сам пишешь про rtos, но винда к ним не относится :-? (были какие-то древние rtos виндовоподобные, но мы холиварим сейчас). <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-18T08:23:43+00:00">18.12.24, 08:23</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T10:18:54+00:00">17.12.24, 10:18</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914951'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T19:42:08+00:00">15.12.24, 19:42</time></span><div class='quote '>Вот офсайт вроде: DEOS</div></div>Это не та DEOS, то была собственная.</div></div><br>
Так DEOS они и делают вроде :-? <br>
Может раньше была какая-то старая и другая, а сейчас перешли на что-то новое? Почему не гуглится ничего?<br>
<br>
Ты только правильно пойми, я тебе верю больше, чем себе, но для холивара нужно что-то более существенное :) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-18T08:27:38+00:00">18.12.24, 08:27</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T10:18:54+00:00">17.12.24, 10:18</time></span><div class='quote '>Хошь кусочек заголовков?</div></div><br>
Извини за нубские вопросы. Ты хочешь сказать, что в их &quot;RTOS&quot; под капотом была винда?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915011</guid>
        <pubDate>Tue, 17 Dec 2024 19:01:04 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915011</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T10:18:54+00:00">17.12.24, 10:18</time></span><div class='quote '>И что с ними не так? Регистров не хватает, компилеру приходится стек юзать? Ай-яй-яй.</div></div><br>
С ними не хватает ... Нормального подхода. Просто подход - полное говно&#33; :lol: Очень часто туча параметров задаётся по умолчанию. И их всех нужно явно указывать. Но если мы более внимательно, чем менее, зададимся вопросом &quot;а как бы лучше сделать&quot;, то сразу обратим свое внимание на паттерн проектирования &quot;<a class='tag-url' href='https://majestio.info/articles/design-patterns-cheat-sheet/builder.html' target='_blank'>Строитель</a>&quot;. Иными словами, сперва просто создаем объект/сущность. А потом из его 32-х параметров задаём там три нам очень нужные путём вызова сеттеров. И замечу, это не обязательно С++, такое и в Си можно и нужно было бы сделать, в рамках WinAPI. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-17T19:12:59+00:00">17.12.24, 19:12</time></span></span><br>
В языках программирования нового поколения (Dart, и как оказалось, и Swift) ввели понятие &quot;именованных параметров&quot;. Там это решается проще - просто при инициализации указываем те параметры, которые явно нужно определить (по именам параметров), остальные инициализируются по умолчанию. В этом случае можно обойтись и без &quot;строителя&quot;, но и вызов будет гораздо компактнее. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-17T19:14:46+00:00">17.12.24, 19:14</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3915001'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T10:18:54+00:00">17.12.24, 10:18</time></span><div class='quote '>Ну так VB.NET. И ещё VBA. А ещё так можно в IDispatch. Только какое отношение это имеет в API?</div></div><br>
Такое не говори&#33; У меня от такого бабки в подъезде крестятся&#33;  :rolleyes:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915001</guid>
        <pubDate>Tue, 17 Dec 2024 10:18:54 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3915001</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914945'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T16:52:44+00:00">15.12.24, 16:52</time></span><div class='quote '>А что-то сертифицируется на WinAPI? Я пока так и не увидел примеров от тебя.</div></div>Какие тебе примеры? Falcon, Boeing, Embraer — недостаточно? Могу ещё с десяток наименований накидать. Вся авионика, с которой я сталкивался, разрабатывается и сертифицируется под виндой. У нас как-то был один проект на LynxOS, договора благополучно подохли (потому что французы; и это не первый раз с ними, никогда с французами не работайте) в 18-м, наклюнулся было ещё один, на этот раз отечественный, сдулся из-за недостатка финансирования.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914951'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T19:42:08+00:00">15.12.24, 19:42</time></span><div class='quote '>Вот офсайт вроде: DEOS</div></div>Это не та DEOS, то была собственная. Нафик им вовне выкладывать собственные IP. Хошь кусочек заголовков?<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#ifndef DEOS_H</div><div class="code_line">#define DEOS_H</div><div class="code_line">&nbsp;</div><div class="code_line">#include &#60;windows.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#define semaphoreHandle HANDLE</div><div class="code_line">#define semaphoreStatus int</div><div class="code_line">#define timeoutSpecifier unsigned int </div><div class="code_line">#define waitIndefinitely 0xFFFFFFFF</div><div class="code_line">#define semaphoreSuccess 0</div><div class="code_line">#define process_handle_t HANDLE</div><div class="code_line">&nbsp;</div><div class="code_line">int waitSemaphore( HANDLE handle, unsigned int timeout );</div><div class="code_line">int signalSemaphore( HANDLE handle );</div><div class="code_line">void waitUntilNextPeriod( );</div><div class="code_line">&nbsp;</div><div class="code_line">...</div></ol></div></div></div></div><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#ifndef EVENTAPI_H</div><div class="code_line">#define EVENTAPI_H</div><div class="code_line">&nbsp;</div><div class="code_line">/*</div><div class="code_line">&nbsp;** HHdr-beg ****************************************************************</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;** Copyright Honeywell Inc 03/01/96</div><div class="code_line">&nbsp;** All Rights Reserved</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;** Honeywell Proprietary</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;** Include File name: EVENTAPI.H</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;** Purpose:</div><div class="code_line">&nbsp;** &nbsp; Everything needed to call event related DEOS API functions.</div><div class="code_line">&nbsp;** &nbsp; Note: &nbsp;This header file MUST be compatible with a &quot;C&quot; compiler.</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;** HPrj-beg ****************************************************************</div><div class="code_line">&nbsp;**</div><div class="code_line">&nbsp;** HPrj-end ****************************************************************</div><div class="code_line">&nbsp;** HHdr-end ****************************************************************</div><div class="code_line">&nbsp;*/</div><div class="code_line">&nbsp;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef __cplusplus</div><div class="code_line">extern &quot;C&quot; {</div><div class="code_line">#endif</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI eventStatus DEOSKERNAPI createEvent(const char * name, eventHandle *createdEvent);</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI eventStatus DEOSKERNAPI getEventHandle( </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const char * name, process_handle_t procHand, eventHandle *createdEvent);</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI eventStatus DEOSKERNAPI waitForEvent(eventHandle theEventHandle, timeoutSpecifier timeout, DWORD currentCount);</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI eventStatus DEOSKERNAPI pulseEvent( eventHandle theEventHandle );</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI DWORD DEOSKERNAPI eventPulseCount( eventHandle theEventHandle );</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI eventStatus DEOSKERNAPI deleteEvent( eventHandle theEventHandle );</div><div class="code_line">&nbsp;</div><div class="code_line">DEOSBASEAPI eventStatus DEOSKERNAPI grantEventAccess( eventHandle theEventHandle, process_handle_t processHandle, eventAccessRightsType access, bool grantToAllProcesses );</div><div class="code_line">&nbsp;</div><div class="code_line">#ifdef __cplusplus</div><div class="code_line">}</div><div class="code_line">#endif</div><div class="code_line">&nbsp;</div><div class="code_line">...</div></ol></div></div></div></div>Думаю, хватит. <span class="tag-color tag-color-named" data-value="gray" style="color: gray">Вроде ничего из конфиденциального не слил, но плз, не распространяйте.</span> Этому коду 15 лет от последнего использования нами. Контракты кончились в кризис 08-09 годов, как у них там нынче, беспонятия.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:08:17+00:00">15.12.24, 21:08</time></span><div class='quote '>Посмотрите на количество аргументов функций, а-ля CreateProcess, NtCreateUserProcess, CreateProcessAsUser, RegCreateKeyEx, NtCreateSection. Это же не хухры-мухры, это уже просто мама-дарагая&#33;</div></div>И что с ними не так? Регистров не хватает, компилеру приходится стек юзать? Ай-яй-яй. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-17T10:20:46+00:00">17.12.24, 10:20</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:08:17+00:00">15.12.24, 21:08</time></span><div class='quote '>Ради прикола, ну и кому не лениво, посмотрите, пожалуйста, как красиво и изящно это обыгрывается в языке программирования Dart</div></div>Ну так VB.NET. И ещё VBA. А ещё так можно в IDispatch. Только какое отношение это имеет в API?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914960</guid>
        <pubDate>Sun, 15 Dec 2024 22:56:58 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914960</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914958'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:37:01+00:00">15.12.24, 21:37</time></span><div class='quote '>Еще раз, winapi корректно сравнивать с API какой-то конкретной ОС. А не с POSIX.</div></div><br>
Не - ну ту без вопросов&#33; WinAPI - это <s class='tag-s'>местячковая</s> корпоративная спецификация. А вот POSIX - хош-не-хош, а это уже стандарт.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914959</guid>
        <pubDate>Sun, 15 Dec 2024 21:53:43 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914959</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914958'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:37:01+00:00">15.12.24, 21:37</time></span><div class='quote '>Dart не изучал</div></div><br>
Ну я сцылку дал - не поленись, посмотри  :lol: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-15T21:55:27+00:00">15.12.24, 21:55</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914958'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:37:01+00:00">15.12.24, 21:37</time></span><div class='quote '> как в Swift сделано</div></div><br>
Бегло глянул - мне кажется почти один-в-один  :-?]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914958</guid>
        <pubDate>Sun, 15 Dec 2024 21:37:01 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914958</link>
        <description><![CDATA[D_KEY: Да, я уже упоминал про количество аргументов. У меня язык не повернется назвать это безумие хорошим дизайном. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-15T21:42:47+00:00">15.12.24, 21:42</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:08:17+00:00">15.12.24, 21:08</time></span><div class='quote '>Да, как писали выше, уже есть костыли в виде epool/kqueue. Но тут, положа честную руку на моё самое доброе сердце - венда тут на этаж впереди.</div></div><br>
Я еще раз напомню, что сранивать некорректно. Захотели MS ввести какой-нибудь IOCP и все, в следующей версии ждите. Одна компания, одно семейство ОС. А теперь для POSIX. Когда-то унифицировали select/poll. Потом времена поменялись, стало недостаточно, разные *nix системы пошли чуть разными путями, придумали epoll(linux), kqueue(*bsd), а сейчас в linux все больше обороты набирает io_uring. И это круто, что в разных ОС продолжают эксперементировать. Это развитие. Но что вы хотите от POSIX? Чтобы он побежал описывать разные эксперементальные штуки и обязал тем самым кучу разных компаний и ОС это все реализовывать? Это же требует согласований. И сертификации.<br>
<br>
Еще раз, winapi корректно сравнивать с API какой-то конкретной ОС. А не с POSIX. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-15T21:51:30+00:00">15.12.24, 21:51</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T21:08:17+00:00">15.12.24, 21:08</time></span><div class='quote '>красиво и изящно это обыгрывается в языке программирования Dart</div></div><br>
Dart не изучал, мне нравится, как в <a class='tag-url' href='https://docs.swift.org/swift-book/documentation/the-swift-programming-language/functions/' target='_blank'>Swift сделано</a>]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914957</guid>
        <pubDate>Sun, 15 Dec 2024 21:08:17 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914957</link>
        <description><![CDATA[Majestio: <span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'>Хе-хе ... немножко про WinAPI ;)</strong></span><br>
<br>
В моем &quot;личном зачёте&quot; для WinAPI я бы поставил оценку &quot;удовлетворительно&quot;. Нельзя сказать что сей стандарт полное удобрение. Кстати, я пишу с Венды. Нет, в нем есть очень и очень здравые моменты проектирования. Меня больше всего радует объектно-событийный подход к проектированию. Мое скромное ИМХО, это - та бомба, которую до сих пор не изобрели и не унифицировали в POSIX. Да, как писали выше, уже есть костыли в виде epool/kqueue. Но тут, положа честную руку на моё самое доброе сердце - венда тут на этаж впереди.<br>
<br>
<strong class='tag-b'>Но есть и тяжелое наследие</strong><br>
<br>
Я имею ввиду Си-наследие. Когда зарплаты платились по 1.5 индийских рупий за килограмм кода. Нужно было добывать, майнить строки и объёмы. Посмотрите на количество аргументов функций, а-ля <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">CreateProcess</span></span>, <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">NtCreateUserProcess</span></span>, <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">CreateProcessAsUser</span></span>, <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">RegCreateKeyEx</span></span>, <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">NtCreateSection</span></span>. Это же не хухры-мухры, это уже просто мама-дарагая&#33; :blink: <br>
<br>
Я вот тоже решил немножко закинуть гиперболоид в тему топика. Как вам моя функция в стиле WinAPI Futures?  :lol:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">BOOL OpeningMicrosoftMortgage(</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpApplicantName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPropertyAddress,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpLoanType,</div><div class="code_line">&nbsp;&nbsp; &nbsp;double dLoanAmount,</div><div class="code_line">&nbsp;&nbsp; &nbsp;int nLoanTerm,</div><div class="code_line">&nbsp;&nbsp; &nbsp;double dInterestRate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bFixedRate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpCreditScore,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpEmploymentStatus,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpIncomeVerification,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bCoApplicant,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpCoApplicantName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpCoApplicantCreditScore,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpDownPaymentSource,</div><div class="code_line">&nbsp;&nbsp; &nbsp;double dDownPaymentAmount,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPropertyType,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bFirstTimeHomeBuyer,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpLoanOfficerName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpApplicationID,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bPreApproval,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpReferralSource,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpContactMethod,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bEmailUpdates,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPreferredClosingDate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpInsuranceProvider,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpPropertyInspectionStatus,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpAppraisalValue,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bEscrowAccount,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpMonthlyPaymentEstimate,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpLoanDisclosureDocuments,</div><div class="code_line">&nbsp;&nbsp; &nbsp;LPCSTR lpAdditionalNotes,</div><div class="code_line">&nbsp;&nbsp; &nbsp;BOOL bSubmitApplication</div><div class="code_line">);</div></ol></div></div></div></div> <br>
<br>
Ради прикола, ну и кому не лениво, посмотрите, пожалуйста, как <a class='tag-url' href='https://majestio.info/notes/programming/dart/dart-language-cheat-sheet/8.dart-language-functions-and-methods-of-classes.html' target='_blank'>красиво и изящно это обыгрывается в языке программирования Dart</a>. Сорян, ссылаюсь на свой же сайт - но это во благо :lol: Поищите там подраздел &quot;Именованные аргументы&quot;. Там очень-очень красиво - ящетаю&#33;]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914953</guid>
        <pubDate>Sun, 15 Dec 2024 19:57:12 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914953</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914951'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T19:42:08+00:00">15.12.24, 19:42</time></span><div class='quote '>Про WinAPI ни слова.</div></div><br>
Возможно <strong class='tag-b'>Qraizer</strong> где-то немного попутал :lol: Там действительно есть упоминания про Венду. Но это в плане окружения для разработки, но не исполнения. Скриню:<br>
<br>
<span class="b-attach" data-size="82523" data-hits="395" data-attach-id="66625" data-attach-post-id="3914953">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3914953&amp;attach_id=66625' title='Скачать файл' target='_blank'>Screenshot_2.png</a> (, : 395)
		</span>]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914951</guid>
        <pubDate>Sun, 15 Dec 2024 19:42:08 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914951</link>
        <description><![CDATA[D_KEY: Вот офсайт вроде: <a class='tag-url' href='https://www.ddci.com/solutions/products/deos/' target='_blank'>DEOS</a><br>
<br>
Про WinAPI ни слова.<br>
<br>
Есть немного про POSIX:<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Deos™, DDC-I’s safety-critical time and space partitioned real-time operating system (RTOS) that has been verified to the guidance of DO-178C/ED-12C Design Assurance Level A (DAL A) for Avionics Applications, supports ARINC 653 APEX, Rate Monotonic Scheduling (RMS), and is targeted at the Future Airborne Capability Environment (FACE™) Safety Extended and Safety Base Profiles. Deos is the first RTOS to receive OSS Conformance Certification for the FACE Technical Standard, Edition 3.1. The Safety Extended Profile, which adds support for TCP/IP communications, multi-process support, and <strong class='tag-b'>expanded POSIX capability (80 extra functions)</strong>, is a superset of the functionality required by the Safety Base and Security Profiles</div></div><br>
<br>
 :-? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-15T19:45:19+00:00">15.12.24, 19:45</time></span></span><br>
И от них же вроде есть HeartOS, которая POSIX.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914950</guid>
        <pubDate>Sun, 15 Dec 2024 19:35:14 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914950</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '>DEOS построена на WinAPI.</div></div><br>
Гугыль молчит. А чят-гпт крутит пальцем у виска. Но последнему доверие так себе - научился врать ппц.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914949</guid>
        <pubDate>Sun, 15 Dec 2024 19:32:28 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914949</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914933'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T10:55:36+00:00">14.12.24, 10:55</time></span><div class='quote '>Чем это лучше-то?</div></div>Два результата сразу: bool и int, причём смысл последнего разный в зависимости от bool. Удобно</div></div><br>
Чем это лучше std::expected того же? Я уже не говорю про безопасный код и пр.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914945</guid>
        <pubDate>Sun, 15 Dec 2024 16:52:44 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914945</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>Потому что не продакшн окружение, не продакшн нагрузки и не продакшн поведение запросов.</div></div>Ну это вы у себя никогда RFS не проводили, оно у нас занимает ~месяца со 100% нагрузкой всех подключённых исполнительных устройств. И ещё WCET, который увеличивает нагрузку раз в 10.</div></div><br>
Ну нагрузочное проходит регулярно. И все равно продакшн - это продакшн :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>Не знаю, о чем ты, но серваки в основном на linux&#39;ах по всему миру. Не помню точно статистику, но под 90%.</div></div>Потому что им не требуется сертифицировать процессы жизненных циклов. WinAPI создаёт вокруг них предсказуемое операционное окружение со свойствами, оцениваемое и измеряемое количественно, а без метрик отраслевые стандарты жить не могут, сразу фтопку. Но ключевое слово всё ж – предсказуемое.<br>
</div></div><br>
А что-то сертифицируется на WinAPI? Я пока так и не увидел примеров от тебя.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>А разве это не linux?</div></div>Вопрос <strong class='tag-b'>Majestio</strong> был за API, а не ОС. И я сразу предупредил, что это не совсем то.<br>
</div></div><br>
Ну т.е. там POSIX поддержан хотя бы отчасти, а winapi - нет. Верно?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '>Наш лучший в 0-ых импортный партнёр Honeywell, чьим подрядчиком был наш основной московский заказчик, и который сам был одним из подрядчиков Boeing, вовсю использовал свою DEOS. Она использовалась на куче всякоразного коммерческого летающего, от Агусты и Цесны до Эмбрайров и Хоризонов.</div></div><br>
Гуглится довольно плохо. И вроде как там тоже POSIX (но не уверен). А с HeartOS не работал? Она точно POSIX, как я понял.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-15T15:07:38+00:00">15.12.24, 15:07</time></span><div class='quote '>DEOS построена на WinAPI.</div></div><br>
А можно подробнее? Гуглится плохо, вместе с winapi вообще ничего не нашел. Есть упоминание POSIX, но как-то невнятно.<br>
<br>
Без обид, но ты как-то очень сильно зациклен на довольно узкую нишу, в которой работаешь :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914944</guid>
        <pubDate>Sun, 15 Dec 2024 15:07:38 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914944</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>Потому что не продакшн окружение, не продакшн нагрузки и не продакшн поведение запросов.</div></div>Ну это вы у себя никогда RFS не проводили, оно у нас занимает ~месяца со 100% нагрузкой всех подключённых исполнительных устройств. И ещё WCET, который увеличивает нагрузку раз в 10. Но так-то да, в обычном режиме нагрузка невелика. Если не считать, что в это время стенд обслуживает &quot;кривые поделки&quot;, ещё не отлаженные.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>Не знаю, о чем ты, но серваки в основном на linux&#39;ах по всему миру. Не помню точно статистику, но под 90%.</div></div>Потому что им не требуется сертифицировать процессы жизненных циклов. WinAPI создаёт вокруг них предсказуемое операционное окружение со свойствами, оцениваемое и измеряемое количественно, а без метрик отраслевые стандарты жить не могут, сразу фтопку. Но ключевое слово всё ж – предсказуемое.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>А разве это не linux?</div></div>Вопрос <strong class='tag-b'>Majestio</strong> был за API, а не ОС. И я сразу предупредил, что это не совсем то.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914933'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T10:55:36+00:00">14.12.24, 10:55</time></span><div class='quote '>Чем это лучше-то?</div></div>Два результата сразу: bool и int, причём смысл последнего разный в зависимости от bool. Удобно <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-15T15:13:59+00:00">15.12.24, 15:13</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914933'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T10:55:36+00:00">14.12.24, 10:55</time></span><div class='quote '>А WinAPI?</div></div>Наш лучший в 0-ых импортный партнёр Honeywell, чьим подрядчиком был наш основной московский заказчик, и который сам был одним из подрядчиков Boeing, вовсю использовал свою DEOS. Она использовалась на куче всякоразного коммерческого летающего, от Агусты и Цесны до Эмбрайров и Хоризонов. DEOS построена на WinAPI.<br>
И кстати, процессы у Honeywell были бесподобные. Мы в своё время многое из них почерпнули как образец для подражания. (Я даже с их подсистемы групп, основанных на скриптовании тестовых воздействий и исполнении их прямо на исполнительных устройствах, слизал архитектуру реал-тайм чеков для внедрения в функциональных тестовых окружениях. И улучшил, конечно :) .) Наши нынешние отечественные заказчики и близко по их качеству не валялись. Ну вот Labs разве что похожа, но пока рано судить, мы с ними только начали.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914937</guid>
        <pubDate>Sat, 14 Dec 2024 11:05:51 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914937</link>
        <description><![CDATA[D_KEY: Ну все тогда, холивар считаем закрытым :lol:]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914936</guid>
        <pubDate>Sat, 14 Dec 2024 11:01:58 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914936</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914933'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T10:55:36+00:00">14.12.24, 10:55</time></span><div class='quote '>А WinAPI? </div></div><br>
 :blink:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914933</guid>
        <pubDate>Sat, 14 Dec 2024 10:55:36 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914933</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914930'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T09:58:09+00:00">14.12.24, 09:58</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T09:15:27+00:00">14.12.24, 09:15</time></span><div class='quote '>А она разве POSIX не поддерживает?</div></div><br>
Вполне себе поддерживает.</div></div><br>
А WinAPI? :D <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-14T10:56:36+00:00">14.12.24, 10:56</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T10:51:54+00:00">14.12.24, 10:51</time></span><div class='quote '>Просто в ответ по мимо ax возвращался еще и cf. cf=0, то ax=результат. cf=1, тогда в ax=код ошибки. И не надо городить огороды со структурами, типизицией итд итп.</div></div><br>
Чем это лучше-то?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914932</guid>
        <pubDate>Sat, 14 Dec 2024 10:51:54 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914932</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '>Пишешь под DOS?</div></div><br>
Освежите у себя в памяти DOS API. Там было простое и элегантное решение по определению ошибок. Просто в ответ по мимо ax возвращался еще и cf. cf=0, то ax=результат. cf=1, тогда в ax=код ошибки. И не надо городить огороды со структурами, типизицией итд итп.]]></description>
        <author>macomics</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914930</guid>
        <pubDate>Sat, 14 Dec 2024 09:58:09 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914930</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914927'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-14T09:15:27+00:00">14.12.24, 09:15</time></span><div class='quote '>А она разве POSIX не поддерживает?</div></div><br>
Вполне себе поддерживает. <br>
<br>
Но гугление немного прояснило суть последних тем. <strong class='tag-b'>POSIX</strong> - это считают стандартом, а <strong class='tag-b'>ARINC-653</strong> - это спецификация, стандартизующая определенный интерфейс(ы). Таким образом, POSIX - предназначен для обеспечения переносимости и повторного использования кода. Тогда как ARINC-653 предназначена для обеспечения пространственной и временной разделяемости в критически важных авионических системах реального времени. И не только в авионических, в любых RTOS системах, где безопасность и надежность являются критически важными. Сюда можно отнести и космонавтику, и военные системы. Таким образом наблюдается &quot;перпендикулярность&quot; :lol: Ибо они решают совсем разные проблемы проектирования.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914927</guid>
        <pubDate>Sat, 14 Dec 2024 09:15:27 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914927</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914923'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T23:42:25+00:00">13.12.24, 23:42</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T17:16:21+00:00">13.12.24, 17:16</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:42:58+00:00">13.12.24, 16:42</time></span><div class='quote '>Похоже это &quot;перпендикулярный&quot; стандарт, который отталкивается не от Оси, а от прикладного применения. </div></div>Угу. С конкретно Wind River я сталкивался, работать с ней сложно и неудобно, зато всё безопасно и уже сертифицировано до нас.</div></div><br>
А разве это не linux?</div></div><br>
Или ты имеешь в виду VxWorks? А она разве POSIX не поддерживает?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914923</guid>
        <pubDate>Fri, 13 Dec 2024 23:42:25 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914923</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:26:47+00:00">13.12.24, 16:26</time></span><div class='quote '>Почему это не считается?</div></div><br>
Потому что не продакшн окружение, не продакшн нагрузки и не продакшн поведение запросов.<br>
<br>
Впрочем, ты прав, возможно что у вас супер стенды со всем вышеперечисленным и имитацией реальных запросов с реальными данными, реальной частотой и пр. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-13T23:50:19+00:00">13.12.24, 23:50</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:26:47+00:00">13.12.24, 16:26</time></span><div class='quote '>У меня такое впечатление, что ты неправильно употребляешь термин &quot;сервис&quot;. Стандартные сервисы из ОСи вполне себе надёжны, аптайм как бы вот он. Самописные... ну по реализации они не сервисы, но по факту они самые, т.к. работают те же 24/7.</div></div><br>
Ну термины нельзя использовать правильно или неправильно. О терминах договариваются.<br>
<br>
Но я действительно неточно выразился. Имел в виду аптайм именно самих серверов, сервисы оставались доступны вовне за счёт масштабирования, а если ты имеешь в виду сервисы/демоны на конкретной машине, то случались баги, конечно, но я тебе про то, что у нас сами машины перезагружали или ещё что-то с ними делали - хз. Я это видел только в zabbix, в основном. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-13T23:52:06+00:00">13.12.24, 23:52</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:26:47+00:00">13.12.24, 16:26</time></span><div class='quote '>А так-то в целом... не думаю, что открою большой секрет: все процессы разработки и верификации флай-кода ориентированы на винду. POSIX встречается крайне, реально крайне, вот прям очень крайне редко.</div></div><br>
Не знаю, о чем ты, но серваки в основном на linux&#39;ах по всему миру. Не помню точно статистику, но под 90%. А у топовых компаний процент ещё выше. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-14T00:04:04+00:00">14.12.24, 00:04</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914907'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:37:11+00:00">13.12.24, 16:37</time></span><div class='quote '>Как же хорошо на asm x86. Просто возвращаешь CF как идентификатор ошибки, если нужно и не придумываешь костыли типа std::expected</div></div><br>
И что ты предлагаешь? Писать софт на asm x86 из-за этого?<br>
И в чем костыльность std:: expected? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-14T00:06:48+00:00">14.12.24, 00:06</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T17:16:21+00:00">13.12.24, 17:16</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:42:58+00:00">13.12.24, 16:42</time></span><div class='quote '>Похоже это &quot;перпендикулярный&quot; стандарт, который отталкивается не от Оси, а от прикладного применения. </div></div>Угу. С конкретно Wind River я сталкивался, работать с ней сложно и неудобно, зато всё безопасно и уже сертифицировано до нас.</div></div><br>
А разве это не linux? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-14T00:07:54+00:00">14.12.24, 00:07</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914917'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T18:13:27+00:00">13.12.24, 18:13</time></span><div class='quote '>Да я про DOS API вспомнил, пока вы тут про WinAPI и POSIX рассуждаете</div></div><br>
Пишешь под DOS?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914917</guid>
        <pubDate>Fri, 13 Dec 2024 18:13:27 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914917</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914912'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T17:16:21+00:00">13.12.24, 17:16</time></span><div class='quote '>macomics, с ассеблерами плохо даже не то, что они все разные, а то, что конкретное ABI соблюдать придётся руками. Ну или как вариант писать на ассемблере всё, тогда на ABI можно забить, конечно. В частности в ABI для x86/64 через CF ты ничего не передашь, разве что между собственно обоими ассемблерными функциями</div></div><br>
Да я про DOS API вспомнил, пока вы тут про WinAPI и POSIX рассуждаете]]></description>
        <author>macomics</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914912</guid>
        <pubDate>Fri, 13 Dec 2024 17:16:21 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914912</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914908'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:42:58+00:00">13.12.24, 16:42</time></span><div class='quote '>Похоже это &quot;перпендикулярный&quot; стандарт, который отталкивается не от Оси, а от прикладного применения. </div></div>Угу. С конкретно Wind River я сталкивался, работать с ней сложно и неудобно, зато всё безопасно и уже сертифицировано до нас. Причём это вполне себе полноценная ОСь, в ней даже слой OpenGL есть. Но и стоят такие ОСи баснословно. Гораздо чаще выходит дешевле написать свою realtime ОСь на коленке, полностью её оттестировать модульными (а как иначе, если это тупо набор .o собранных в набор либ) со 100% покрытием, предоставить отчёты по WCET и WCSU, разработать и предоставить наборы сценариев для квалификационных её испытаний в составе будущего прикладного ПО под неё и сертифицировать в таком виде. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-13T17:21:22+00:00">13.12.24, 17:21</time></span></span><br>
<strong class='tag-b'>macomics</strong>, с ассеблерами плохо даже не то, что они все разные, а то, что конкретное ABI соблюдать придётся руками. Ну или как вариант писать на ассемблере всё, тогда на ABI можно забить, конечно. В частности в ABI для x86/64 через CF ты ничего не передашь, разве что между собственно обоими ассемблерными функциями]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914908</guid>
        <pubDate>Fri, 13 Dec 2024 16:42:58 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914908</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914906'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-13T16:26:47+00:00">13.12.24, 16:26</time></span><div class='quote '>Majestio, я знаю только один пример: ARINC-653. Очень жёсткий и строгий. Но это не совсем то, что ты имел в виду, похоже.</div></div><br>
Похоже это &quot;перпендикулярный&quot; стандарт, который отталкивается не от Оси, а от прикладного применения. Но, тут соглашусь, не слышал - но варик достойный&#33; Ибо решает вопросы не все, но в своей теме. Тут уважуха&#33;]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914907</guid>
        <pubDate>Fri, 13 Dec 2024 16:37:11 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914907</link>
        <description><![CDATA[macomics: Как же хорошо на asm x86. Просто возвращаешь CF как идентификатор ошибки, если нужно и не придумываешь костыли типа std::expected]]></description>
        <author>macomics</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914906</guid>
        <pubDate>Fri, 13 Dec 2024 16:26:47 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914906</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914738'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-11T14:46:26+00:00">11.12.24, 14:46</time></span><div class='quote '>Ну стендовая это не считается <br>
На моем опыте аптайм на линуксах был всегда очень хороший на реальных серваках. И был всегда такой себе на windows. Но может там админы плохие были у нас, не знаю </div></div>Почему это не считается? Там полноценная ОСь, без отключений чего-либо и кастраций, даже Защитник работает. Файрволл, правда, отключён. Или ты имеешь в виду рабочие нагрузки? Ты ж их даже не спросил.<br>
У меня такое впечатление, что ты неправильно употребляешь термин &quot;сервис&quot;. Стандартные сервисы из ОСи вполне себе надёжны, аптайм как бы вот он. Самописные... ну по реализации они не сервисы, но по факту они самые, т.к. работают те же 24/7. Может быть у вас там с виндой не всё гладко просто потому, что спецы по сервисам не такие уж и спецы? Это не наезд ни в коем случае, создание сервисов не вполне то же самое, что обычных приложений. Я вот по демонам никакой, не приходилось за ненадобностью.<br>
А так-то в целом... не думаю, что открою большой секрет: все процессы разработки и верификации флай-кода ориентированы на винду. POSIX встречается крайне, реально крайне, вот прям очень крайне редко. Как исполнительная платформа для эмбеддед – бывает, но там обычно форкают, <s class='tag-s'>кастрируют</s> скорее даже режут по живому, оставляя только потенциально требуемый минимум функционала. Мы как-то занимались верификацией RTEMS для одного из заказчиков, отправленное количество Сообщений о Проблемах я не припомню, но на каждый модуль (архитектурный) десяток в среднем набирался. Где-то больше, где-то меньше. Та ёлки, там баги даже в системных заголовках были, явно расходились с даташитами к PPC. И это притом, что RTEMS на MPC5200 вполне себе официально портирована и довольно давно.<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-13T16:30:22+00:00">13.12.24, 16:30</time></span></span><br>
<strong class='tag-b'>Majestio</strong>, я знаю только один пример: ARINC-653. Очень жёсткий и строгий. Но это не совсем то, что ты имел в виду, похоже.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914902</guid>
        <pubDate>Fri, 13 Dec 2024 16:09:22 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914902</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914738'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-11T14:46:26+00:00">11.12.24, 14:46</time></span><div class='quote '>Еще раз, по сравнению с чем? У кого-то получилось лучше? Я не вижу </div></div><br>
Наброшу и плюсую :lol: Законный вопрос: а есть какойта более другой способ стандартизации и унификации программных вызовов в сериях независимых осей, кроме как POSIX?]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914738</guid>
        <pubDate>Wed, 11 Dec 2024 14:46:26 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914738</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914735'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-11T14:31:01+00:00">11.12.24, 14:31</time></span><div class='quote '>Ой ли. У тебя какое-то странное мнение о сервисах. У меня вот аптаймы ОСей в стендовой почти по два года</div></div><br>
Ну стендовая это не считается :D <br>
На моем опыте аптайм на линуксах был всегда очень хороший на реальных серваках. И был всегда такой себе на windows. Но может там админы плохие были у нас, не знаю :-? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-11T14:49:30+00:00">11.12.24, 14:49</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914735'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-11T14:31:01+00:00">11.12.24, 14:31</time></span><div class='quote '>Ты вероятно просто не сталкивался с серьёзным тестированием, <strong class='tag-b'>D_KEY</strong>.</div></div><br>
В моей команде или в компании всегда были специалисты сильнее меня в этих вопросах. Вообще у нас были сервисы и с 99.9999% надежностью. И большая часть с 99.999%. Да и багов было немного.<br>
Впрочем, это зависило от компании. Сейчас у меня другая история немного. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-11T14:53:23+00:00">11.12.24, 14:53</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914735'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-11T14:31:01+00:00">11.12.24, 14:31</time></span><div class='quote '>Но ведь появление POSIX ставило своею целью унификацию, разве нет? Но что-то пошло не так.</div></div><br>
Еще раз, по сравнению с чем? У кого-то получилось лучше? Я не вижу :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914735</guid>
        <pubDate>Wed, 11 Dec 2024 14:31:01 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914735</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914660'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T20:16:31+00:00">10.12.24, 20:16</time></span><div class='quote '>Явно надежнее сервисов под windows, кстати.</div></div>Ой ли. У тебя какое-то странное мнение о сервисах. У меня вот аптаймы ОСей в стендовой почти по два года, с момента их переезда с нашего этажа. Четыре штуки. Они от инета отключены, поэтому обновлений на них не прилетает, ребутать нет причин. Свет вырубался, но они под UPSами и хибернетом. Да, мои апликухи там тоже есть. Не оформлены сервисами, но по факту они самые. (Одну из них ты даже должен помнить, архитектуру я малёхо описывал в теме про объекты синхронизации.) С аптаймом поменьше, потому как они изредка апдейтятся под меняющиеся ТЗ на них.<br>
Ты вероятно просто не сталкивался с серьёзным тестированием, <strong class='tag-b'>D_KEY</strong>. Я легко могу поверить и пруфов не потребую, что у тебя там всё хорошо. Потому что вот конкретно твоё окружение не имеет проблем. Вот только когда речь заходит за высококритичное ПО, во главу угла ставится документация, а не испытания. И коли там сказано, что вот так оно могёт быть, твоё ПО не пройдёт аудит, если ты не предусмотришь у себя обработку сего. И пофик, что структурное покрытие его никогда не покроет. Будет написан модульный тест, имитирующий оговоренный отказ. Готовить своё приложение для такого случая придётся. Каждое приложение для каждого подобного случая. Можешь сам зайти на маны, почитать и посчитать ноуты под <strong class='tag-b'>каждой</strong> функцией и прикинуть объём &quot;никому не нужной&quot; работы.<br>
P.S. Библиотеки не спасут вообще ни разу. Только хуже сделают, т.к. для них тоже будет аудит. Я как-то уже упоминал, что флай-код в авионике отключает стандартные библиотеки и в лучшем случае пилит их аналоги, обычно сильно упрощённые. Так их хоть как-то можно сертифицировать за разумные деньги. А уж за third party и говорить нечего.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914660'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T20:16:31+00:00">10.12.24, 20:16</time></span><div class='quote '>Хм. Возможно, вы упускаете, что сначала распладилось куча unix-подобных ОС, с несколько разными API. А потом только появился POSIX, как попытка это все привести в порядок.</div></div>Возможно. Но ведь появление POSIX ставило своею целью унификацию, разве нет? Но что-то пошло не так.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914660</guid>
        <pubDate>Tue, 10 Dec 2024 20:16:31 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914660</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914659'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T19:39:00+00:00">10.12.24, 19:39</time></span><div class='quote '>Смиришься с потенциальными багами раз в полгода в сервисах 24/7? Флаг в руки.</div></div><br>
Писал в течение некольких лет, все было в порядке. Явно надежнее сервисов под windows, кстати. Хотя там сама ОС чудила чаще :D <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-10T20:26:05+00:00">10.12.24, 20:26</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914659'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T19:39:00+00:00">10.12.24, 19:39</time></span><div class='quote '>Ну весело же.</div></div><br>
Нормально :) <br>
Поверь мне, это будет последнее из-за чего упадет твой сервис :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914659'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T19:39:00+00:00">10.12.24, 19:39</time></span><div class='quote '>Пример с INVALIDE_HANDLE_VALUE чётко следует (внезапно) POSIXовой же традиции при ошибках возвращать -1, потому что бинарно с ним совместим, а бинарно совместимый с нулём NULL является вполне себе корректным stdin.</div></div><br>
При чем тут это? У тебя один и тот же тип объектов, возвращенный разными функциями, при ошибке то будет равен одному значению, то другому, в зависимости от конкретной функции. Постоянно нужно сверятся с документацией конкретной функции. Это просто странно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914659'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T19:39:00+00:00">10.12.24, 19:39</time></span><div class='quote '>Ну и странно видеть наезд на WinAPI там, где она унаследовала архитектуру POSIX.</div></div><br>
У POSIX всегда будет -1. А для указателей всегда будет NULL (если одна единственная функция, которая действует не так из-за легаси, но ее очень редко используют - sbrk).<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914659'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T19:39:00+00:00">10.12.24, 19:39</time></span><div class='quote '>Функции с миллионом параметров 100500 дадут вперёд одному структурному параметру с миллионом полей в плане защиты от человеческого фактора.</div></div><br>
Не согласен. С объектами гораздо легче работать, чем с параметрами функций. Их удобо отдельно валидировать, сохранять, модифицировать и т.д.<br>
Писать обертки для C++ так же удобнее.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914659'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T19:39:00+00:00">10.12.24, 19:39</time></span><div class='quote '>Параметр ты не пропустишь, инициализацию поля же легко.</div></div><br>
Да брось ты, зачастую люди просто заглушки туда ставят, погуглив две минуты. Потому что это ад с таким работать.<br>
<br>
Ну и вообще функции с миллионом параметров в принципе означают плохой дизайн. Классика же, &quot;If you have a procedure with 10 parameters, you probably missed some&quot; :D <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-10T20:35:41+00:00">10.12.24, 20:35</time></span></span><br>
А вообще, еще раз, странно сравнивать. Оба API уродливы, каждый по своему (мне posix нравится больше winapi, но он все равно кривой). При этом POSIX касается большого числа совершенно разных ОС, от совершенно разных производителей и для разных задач. Соответственно, кривость хоть как-то можно оправдать. В случае winapi, который является поделкой одной единственной компании, наличие косяков выглядит более странным. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-10T20:40:50+00:00">10.12.24, 20:40</time></span></span><br>
Хм. Возможно, вы упускаете, что сначала распладилось куча unix-подобных ОС, с несколько разными API. А потом только появился POSIX, как попытка это все привести в порядок.<br>
Не было такого, что сначала кто-то придумал стандарт, а остальные начали его реализовывать, делая с нуля свои ОС.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914659</guid>
        <pubDate>Tue, 10 Dec 2024 19:39:00 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914659</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914632'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T14:47:51+00:00">10.12.24, 14:47</time></span><div class='quote '>Ты просто пойми, что линупсы и их апдейты растут как грибы - и гораздо чаще твоей сраной венды апдейтяться&#33; И самое главное, а ни не просто растут - а выставляют стабильные и LTS ветки.</div></div>Ну так я и назвал это зоопарком. Ты пытаешься этим оправдать для себя несовместимость их API? Ну так вспомни, что я вот буквально только что писал про стандартизацию Языка. Оказывается, так можно.<br>
А венда обновляется чаше, чем тебе кажется. Дважды в год. LTS на этом фоне выглядят как-то скромненько. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-10T19:56:49+00:00">10.12.24, 19:56</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914646'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T16:27:20+00:00">10.12.24, 16:27</time></span><div class='quote '>Что я, как разработчик софта, тут изменю в своем коде выше?</div></div>Ничего. Смиришься с потенциальными багами раз в полгода в сервисах 24/7? Флаг в руки. Знаешь, если атомарная операция не гарантирует атомарности... ну это ж POSIX же, чё. В WinAPI никогда новый HANDLE не будет выдан, если он полностью не вышел из использования. А вот в POSIX мультипотоковое ПО, оказывается, должно само об этом заботиться. Ну весело же.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914646'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T16:27:20+00:00">10.12.24, 16:27</time></span><div class='quote '>Так будет код-то?</div></div>А тебе мало было, что ли? Чай не первый холивар-то.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914646'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T16:27:20+00:00">10.12.24, 16:27</time></span><div class='quote '>Зоопарк разнородных подходов (пример привел выше с handle), функции с миллионом параметров, монструозные структуры данных и т.д. и т.п.</div></div>Пример с INVALIDE_HANDLE_VALUE чётко следует (внезапно) POSIXовой же традиции при ошибках возвращать -1, потому что бинарно с ним совместим, а бинарно совместимый с нулём NULL является вполне себе корректным stdin. В совокупности это нивелирует проблемы совместимости с криво писаным легаси, которые в 90-ых были весьма значимы. Нынче это не проблема, однако совместимость документированных интерфейсов ОСей требует. Ну и странно видеть наезд на WinAPI там, где она унаследовала архитектуру POSIX.<br>
Функции с миллионом параметров 100500 дадут вперёд одному структурному параметру с миллионом полей в плане защиты от человеческого фактора. Параметр ты не пропустишь, инициализацию поля же легко. Особо важные параметры, которые если поменять местами, могут поломать поведение кода из-за незамеченной ядром ошибки их порядка в аргументах, не пройдут компиляцию из-за несовместимых типов. Это вам не int на все случаи жизни. А за монструозные структуры вообще странно в контексте негатива в адрес миллиона параметров. Я вот счас ещё вспомню про версии API, которые в WinAPI определяются элементарно sizeof() в первом поле, а в POSIX как (c_legacy_cast)какой_то_поинтер_на_мамой_клянусь_правильную_структуру. Ой, вспомнил.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914647</guid>
        <pubDate>Tue, 10 Dec 2024 16:49:25 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914647</link>
        <description><![CDATA[D_KEY: Зато чет захотелось прям понастольгировать и какую-нибудь кроссплатформенную шляпу запилить. Может что-то на тему iocp, io_uring и пр. (ну и kqueue тож сделать и потом на сдачу posixовый select/poll), но, в отличие от asio, например, накрутить там реактивные стримы или еще чего другого придумать, чтобы оправдать существование поделки :lol:]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914646</guid>
        <pubDate>Tue, 10 Dec 2024 16:27:20 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914646</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '><strong class='tag-b'>D_KEY</strong>, насмешил, ага.<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>close(2) — Linux manual page</span><div class='quote '>A successful close does not guarantee that the data has been successfully saved to disk, as the kernel uses the buffer cache to defer writes.<br>
...<br>
It is probably unwise to close file descriptors while they may be in use by system calls in other threads in the same process. Since a file descriptor may be reused, there are some obscure race conditions that may cause unintended side effects</div></div></div></div><br>
И что? Что я, как разработчик софта, тут изменю в своем коде выше? :) Он будет работать в большинстве случаев, когда мне будет нужно. В некоторых редких я сделаю что-то еще (Deleter добавить не проблема, сам знаешь).<br>
<br>
А отложенная запись нужна для оптимизаций и в реальном софте хорошо себя показывает. Для случаев, когда нужно флашить на диск, ты можешь это специально делать.<br>
За многопоточкой тоже сам следишь, это тож во многом позволяет не накручивать лишней синхронизации со стороны ОС на ровном месте.<br>
<br>
Так будет код-то? Или просто на словах признаешь, что придется писать одинотипные обертки для каждого случая?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Те в натуре серьёзно думаешь, что однотипное API для разнородных объектов является преимуществом?</div></div><br>
Они не разнородны в достаточном смысле для использующего их программиста :) <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Если ты считаешь WinAPI уродским, то интересно почему.</div></div><br>
Зоопарк разнородных подходов (пример привел выше с handle), функции с миллионом параметров, монструозные структуры данных и т.д. и т.п.<br>
<br>
Для одной компании и одной ОС - странно.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Один из таких примеров – как раз отделение INVALID_HANDLE_VALUE от NULL в ряде применений ради обеспечения отсутствия утечек ресурсов и гарантий атомарности сложных операций во многозадачных средах.<br>
</div></div><br>
Можешь подробнее рассказать? Это может быть интересным.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Я вот считаю POSIX спроектированным каким-то индусом без школьной информатики за плечами, и пояснил, почему.</div></div><br>
По-моему, не пояснил. Плюс продолжаешь игнорировать, что он для огромного числа совершенно разных ОС.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Я даже не могу элементарный контейнер из сокетов создать, потому что по факту сокеты полиморфны, а в API они тупо int.</div></div><br>
Поясни, пожалуйста. Не понял.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Вот это ключевая фраза, если подумать. Опенсоурс не бесплатный, у него хоть и местами нулевая стоимость получения, но ни разу не дешёвая стоимость владения.</div></div><br>
При чем тут вообще opensource? Есть и закрытые posix ОС :-? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914626'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-10T13:36:13+00:00">10.12.24, 13:36</time></span><div class='quote '>Скажем так: это не проблема API.</div></div><br>
Это проблема наличия только одной &quot;настоящей&quot; реализации API.<br>
Впрочем, это вообще не проблема.<br>
<br>
Никто на winapi уже почти и не пишет.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914632</guid>
        <pubDate>Tue, 10 Dec 2024 14:47:51 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914632</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Qraizer</strong>, я позволю себе поддержать ДиКея  :lol: <br>
Ты просто пойми, что линупсы и их апдейты растут как грибы - и гораздо чаще твоей сраной венды апдейтяться&#33; И самое главное, а ни не просто растут - а выставляют стабильные и LTS ветки. Когда твоя венда делала раз в пятилетку (максимум). Я понимаю твою &quot;любовь&quot; в виндам, но мир меняется. И не меняться с ним себе дороже.]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914626</guid>
        <pubDate>Tue, 10 Dec 2024 13:36:13 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914626</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>D_KEY</strong>, насмешил, ага.<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>close(2) — Linux manual page</span><div class='quote '>A successful close does not guarantee that the data has been successfully saved to disk, as the kernel uses the buffer cache to defer writes.<br>
...<br>
It is probably unwise to close file descriptors while they may be in use by system calls in other threads in the same process. Since a file descriptor may be reused, there are some obscure race conditions that may cause unintended side effects</div></div><br>
Те в натуре серьёзно думаешь, что однотипное API для разнородных объектов является преимуществом? Ну, даже если натянуть сову и предположить, что это преимущество... POSIX вон не может стравиться даже с гарантиями безотказности атомарной операции для <strong class='tag-b'>одного</strong> типа объектов. Давай уже не надо, правда. Если ты считаешь WinAPI уродским, то интересно почему. Я вот припоминаю, как ругался на то или иное, но поразмыслив всегда приходил к выводу, что это сделано намерено по вполне объективным причинам. Один из таких примеров – как раз отделение INVALID_HANDLE_VALUE от NULL в ряде применений ради обеспечения отсутствия утечек ресурсов и гарантий атомарности сложных операций во многозадачных средах. Я вот считаю POSIX спроектированным каким-то индусом без школьной информатики за плечами, и пояснил, почему. Я даже не могу элементарный контейнер из сокетов создать, потому что по факту сокеты полиморфны, а в API они тупо int. Нафик эту однотипность. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-10T13:47:25+00:00">10.12.24, 13:47</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914563'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T20:27:53+00:00">09.12.24, 20:27</time></span><div class='quote '>У них коммерческая задача - сохранить совместимость.</div></div>Вот это ключевая фраза, если подумать. Опенсоурс не бесплатный, у него хоть и местами нулевая стоимость получения, но ни разу не дешёвая стоимость владения. Ему выгодно выпускать кривое, чтобы зарабатывать на саппорте. Собственно это мы и видим. В этом контексте проприетарщина честнее. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-10T13:49:31+00:00">10.12.24, 13:49</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914563'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T20:27:53+00:00">09.12.24, 20:27</time></span><div class='quote '>По поводу отсутствия читов и недокументированных особеностей почитай что пишут разработчики wine.</div></div>Скажем так: это не проблема API. Я в своём тесте чего-то там могу сломать любой его функционал, но это не значит, что функционал плохо спроектирован.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914566</guid>
        <pubDate>Mon, 09 Dec 2024 21:49:04 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914566</link>
        <description><![CDATA[D_KEY: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct unique_fd</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit unique_fd(int fd = -1) noexcept</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: fd_(fd)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unique_fd(const unique_fd &amp;) = delete;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unique_fd&amp; operator=(const unique_fd &amp;) = delete;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unique_fd(unique_fd &amp;&amp; other) noexcept</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;: fd_(other.release())</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;unique_ptr&amp; operator=(unique_ptr&amp;&amp; other) noexcept</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;reset(other.release());</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return *this;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;~unique_fd()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;reset(-1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void reset(int fd) noexcept</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (fd_ != -1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;::close(fd_);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fd_ = fd;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;[[nodiscard]] int release() noexcept</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int res = fd_;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fd_ = -1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return res;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int get() noexcept</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return fd_;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;int fd_;</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
Вот еще упражнение, написать для winapi с той же степенью применимости для объектов разного рода (файлов, сокетов, pipe, ...).<br>
<br>
P.S. код не проверял, сильно не пинайте. Идея, надеюсь, понятна.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914565</guid>
        <pubDate>Mon, 09 Dec 2024 21:02:23 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914565</link>
        <description><![CDATA[D_KEY: Ну раз мы уже в холиварах, то наброшу.<br>WinAPI не способна даже определиться с тем, что является кривым HANDLE: INVALID_HANDLE_VALUE или NULL (или -1 для 16битных версий, впрочем об этом уже можно забыть). А это ведь базовая вещь, о чем тут вообще можно говорить? :D]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914563</guid>
        <pubDate>Mon, 09 Dec 2024 20:27:53 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914563</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T19:39:11+00:00">09.12.24, 19:39</time></span><div class='quote '><strong class='tag-b'>D_KEY</strong>, а чем тебе Windы не разные ОСи?</div></div><br>
Тем, что это версии одной ОС и производства одной компании. Не смотря на разные технологии и их развитие. Это суть не меняет. У них коммерческая задача - сохранить совместимость.<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-09T20:34:37+00:00">09.12.24, 20:34</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T19:39:11+00:00">09.12.24, 19:39</time></span><div class='quote '>Это всё единый API для целой кучи ОСей, слабо связанных между собой архитектурно, но по-прежнему совместимых програмно. Нормально (без читов в лице юзанья недокументированностей) писанные ещё под Win98 (а может и Win95) приложения до сих пор работают и на ...Win10, за Win11 не скажу, не юзал. Вот это – экосистема.</div></div><br>
Так это одна компания, конечно, она будет бороться за совместимость. Кто будет обновлять ОС, если старые программы перестанут работать? :-? <br>
<br>
По поводу отсутствия читов и недокументированных особеностей почитай что пишут разработчики wine. Как раз основные проблемы, что реальные приложения по факту опираются на недокументированные особенности (причем это происходит зачастую неявно, просто пишут код, тестируют и пр. под одну систему и там все работает, а как только переносим на другую реализацию winapi (wine), формально соответствующую документации, работает иначе).<br>
<br>
Я тебя не понимаю, честно.<br>
Вот живет одна компания, которая одна делает свою ОС. Конечно, она обеспечивает совместимость. Конечно, у нее будет более заточенное под ее применимость API.<br>
<br>
Тут скорее нужно удивляться, почему winapi такое уродливое. Вон macos современный вообще вполне себе хорошо живет еще и с новым нормальным языком (swift), при этом сохраняя совместимость с их старым objective-С (который, кстати, совместим с Си). И там как-то симпатичнее все выглядит.<br>
И сравни с winapi, на котором никто сейчас писать программу не станет, возьмет либы.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914562</guid>
        <pubDate>Mon, 09 Dec 2024 19:39:11 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914562</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>D_KEY</strong>, а чем тебе Windы не разные ОСи? Притом, что родной API для NT линейки вообще ни разу не Win32, а т.н. Native API. Сравни возможности Win32s, упомянутый <strong class='tag-b'>Majestio</strong> костыль для 16-битных Win3xx, Win32c сиречь отменённое обозначение Win32 для Win9x, настоящее Win32 для исходно 32-битных NT до WinXP включительно и нынешнее Win32 под современные Win7/8/10/11, включая редакции для 64-битных ОСей. (Одно время MS хотела, впрочем, отказаться от процедурного API в Win8, заставив всех перейти на объектный API из .NET, но слава богу передумала пересаживать разработчиков исключительно в универсальные приложения, так что классические до сих пор в ходу и ещё долго будут в ходу.) Это всё единый API для целой кучи ОСей, слабо связанных между собой архитектурно, но по-прежнему совместимых програмно. Нормально (без читов в лице юзанья недокументированностей) писанные ещё под Win98 (а может и Win95) приложения до сих пор работают и на ...Win10, за Win11 не скажу, не юзал. Вот это – экосистема. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-09T19:47:24+00:00">09.12.24, 19:47</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914545'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T15:04:19+00:00">09.12.24, 15:04</time></span><div class='quote '>А &quot;во время&quot;. Я просто тебе напомню еще один короткий, но скажем так, &quot;знаменательный&quot; стандарт того времени - Win32s. На сколько я помню, вот именно в этот момент они и ... и что ... они и РАЗОСРАЛИСЬ</div></div>Та не. Win32s (s означает subset, кажется) не планировалась, но в итоге была выпущена для облегчения миграции разработчиков под ...хм, правильные 32-битные ОСи. И это неплохо получилось, я на Win3.1 + Win32s сидел аж до 98-го года, пока не вышла Win98SE, и у меня всё мне нужное работало. Игры под DirectX не работали, да, но тогда это не имело значения, аппаратный рендер был ещё в диковинку. Имеет ли это какое-то отношение к разрыву сотрудничества, ну... честно не знаю, но сомневаюсь. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-09T19:56:12+00:00">09.12.24, 19:56</time></span></span><br>
P.S. Решил погуглить и нашёл <a class='tag-url' href='https://www.osp.ru/pcworld/2005/04/169999' target='_blank'>вот такую статью</a>. Похожа на объективную. Краткое резюме: IBM захотела занять нишу системного ПО для своих же ПК, вытеснив т.с. с рынка Microsoft, последняя решила побороться и выиграла. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-09T19:59:01+00:00">09.12.24, 19:59</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914554'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T15:17:11+00:00">09.12.24, 15:17</time></span><div class='quote '>Просто пройди тест сертификации&#33;</div></div>Свят-свят. Во-первых, если б я что-то мог решать в стандартизации, я б ещё моооооожет быть и подумал &lt;_&lt; , но что-то мне подсказывает с очевидным для вас итогом. Во-вторых, мне наших задач по сертификациям в РосАвиации за глаза хватает.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914556</guid>
        <pubDate>Mon, 09 Dec 2024 15:38:39 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914556</link>
        <description><![CDATA[D_KEY: В общем, winapi можно сравнивать с конкретным API конкретной ОС. Например, macos (которая тож posix, если что). Сравнивать же непосредственно с posix можно будет тогда, когда winapi будет использоваться разными ОС от разных производителей.<br> :-?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914555</guid>
        <pubDate>Mon, 09 Dec 2024 15:37:09 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914555</link>
        <description><![CDATA[Majestio: Ну я не буду Джордано Бруно, и не открою вам секреты мироздания, но кернель спейс и юзер спейс - это всего лишь абстракции. У каждной оси есть свои, скажем так, &quot;области ответственности&quot; для кернеля и юзерспейса. И не для никого не секрет, что если в юзерспейсе что-то запрещено, то мы пишем дрова, и оно, волшебным образом становится/может становиться разрешено. Вывод - везде можно сделать всё&#33;<br>
<br>
Но как говорили многие ораторы в этой теме - важно &quot;договориться&quot;. Для кросс-платформеров вопрос возможностей уже. Для видовс-фагов он почти 100% в своей области. Но нет ничего абсолютно нерешаемого. Цитирую DKE_Y:<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914553'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T15:11:38+00:00">09.12.24, 15:11</time></span><div class='quote '>Ну так библиотеки (хорошие) ты просто используешь, не задумываясь об ОС. Тот же asio тому пример.</div></div><br>
Или, например, <a class='tag-url' href='https://libevent.org' target='_blank'>libevent</a>.<br>
<br>
Другой вопрос кросс-соместимости по всем 100% возможностей разных осей :-? А кто сказал, что вы в сказку попали?]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914554</guid>
        <pubDate>Mon, 09 Dec 2024 15:17:11 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914554</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Qraizer</strong>, конечно шютка  :lol: но у тебя есть возможность стать <a class='tag-url' href='https://www.opengroup.org/posix-systems' target='_blank'>POSIX-совместимым модератором</a> исходников. Просто пройди тест сертификации&#33; :lol:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914553</guid>
        <pubDate>Mon, 09 Dec 2024 15:11:38 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914553</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914541'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T14:36:06+00:00">09.12.24, 14:36</time></span><div class='quote '>тогда как реализации POSIX делают вид, что они совместимы с POSIX, а по факту нет</div></div><br>
Ну так они и не сертифицированы :) linux официально не posix (не сертифицирован), хотя по факту большинство важные вещей использовать можно. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-09T15:15:18+00:00">09.12.24, 15:15</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914541'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T14:36:06+00:00">09.12.24, 14:36</time></span><div class='quote '>Мне чтобы написать полностью переносимое POSIX-приложение придётся опуститься до уровня его API образца эдак 199x-ых и лишиться всего его 30 летнего последующего развития.</div></div><br>
Верно. Но никакой альтернативы не существует. С чем ты сравниваешь? winapi-то вообще не переносимо :) <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914541'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T14:36:06+00:00">09.12.24, 14:36</time></span><div class='quote '>А чтобы воспользоваться этим развитием, оно же вкусное как-никак, я обязан буду сосредотачиваться на его частных реализациях и с головой окунуться в ад портабельности и саппорта.</div></div><br>
Да. Я сам описал выше кейс с epoll/io_uring/kqueue/etc. vs select/poll.<br>
Но вопрос тот же. С чем ты сравниваешь?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914541'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T14:36:06+00:00">09.12.24, 14:36</time></span><div class='quote '>Да-да, есть библиотеки, которые вроде бы должны это брать на себя. Вот только это самое «бы». Ад просто сменил место дислокации и теперь не в POSIX, а в этих библиотеках, потом что у них точно такая же трабля. </div></div><br>
Ну так библиотеки (хорошие) ты просто используешь, не задумываясь об ОС. Тот же asio тому пример.<br>
Хотя бывают специфические траблы и баги под конкретные ОС, то это всегда так в низкоуровневой кроссплатформе.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914550</guid>
        <pubDate>Mon, 09 Dec 2024 15:10:26 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914550</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Qraizer</strong>, сорян, туплю&#33;<br>
Ты вообще о чем? Приведи плс примеры, которые мы вместе с тобой сперва будем гнобить, а потом попробуем порешать. А пока это только твой взрыв негодований. <br>
Давай по полкам? В плане действий - ты делаешь &quot;я сделал всё по доке посикса, а оно-говно не работает&quot;. Мы вместе все смотрим. Oke?]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914546</guid>
        <pubDate>Mon, 09 Dec 2024 15:06:32 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914546</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914230'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-03T18:36:59+00:00">03.12.24, 18:36</time></span><div class='quote '>P.S. Я тем не менее с удовольствием посмотрел бы на транслятор сигналов POSIX в C++EH хотя бы краем глаза.</div></div><br>
Разные реализации JVM делают подобное для java. Можно там поглядеть.<br>
<br>
Я как-то делал костыли тоже сто лет назад, но код не найду уже :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914545</guid>
        <pubDate>Mon, 09 Dec 2024 15:04:19 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914545</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914541'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T14:36:06+00:00">09.12.24, 14:36</time></span><div class='quote '>Что до Win32 API, так он и разрабатывался по заказу самой IBM для использования в её OS/2, которая по итогу должна была выйти как OS/2 NT или как-то так.</div></div><br>
Нет. Ну я &quot;со свечкой не стоял&quot;. Но там был разрыв ни &quot;до&quot; и не &quot;после&quot;. А &quot;во время&quot;. Я просто тебе напомню еще один короткий, но скажем так, &quot;знаменательный&quot; стандарт того времени - <a class='tag-url' href='https://en.wikipedia.org/wiki/Win32s' target='_blank'>Win32s</a>. На сколько я помню, вот именно в этот момент они и ... и что ... они и РАЗОСРАЛИСЬ :lol: Впереди маячило лютое бабло.<br>
<br>
Опять же, я рядом не стоял. Но ты сам прикинь - IBM с кучей баблищя, рядом толковые недооцененные Мелкомягкие. Они щито, по-твоему, могли чисто по-братски разойтись краями? :lool:]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914543</guid>
        <pubDate>Mon, 09 Dec 2024 14:56:30 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914543</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>Majestio</strong>, было бы желание, это решаемо, и весьма недорого. Но ведь желания-то как раз и нет. Та ёлки ж:<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>dup(2) — Linux manual page</span><div class='quote '>The error returned by <strong class='tag-b'>dup2()</strong> is different from that returned by <strong class='tag-b'>fcntl(..., F_DUPFD, ...)</strong>  when <em class='tag-i'>newfd</em> is out of range.  On some systems, <strong class='tag-b'>dup2()</strong> also sometimes returns <strong class='tag-b'>EINVAL</strong> like <strong class='tag-b'>F_DUPFD</strong>.</div></div>Их за ногу — серьёзно??&#33; Вот это вот Стандарт на API? В котором функция может вести себя по-разному по желанию левой пятки очередного форкера? Когда две функции, выполняющие априори одинаковое действие, работают по-разному?&#33;<br>
Не надо защищать очевидное фуфло. И пожалуйста, не называйте POSIX экосистемой. Зоопарк экосистем – согласен.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914542</guid>
        <pubDate>Mon, 09 Dec 2024 14:49:06 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914542</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914541'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T14:36:06+00:00">09.12.24, 14:36</time></span><div class='quote '>Это не проблема, что API ОСей отличаются.</div></div><br>
Дружище - тут ты в корне не прав&#33; :lol: Это ОСНОВНАЯ и &quot;КОРНЕВАЯ&quot; ПРОБЛЕММА. Разные оси &quot;проповедуют&quot; разное. А что разное? Разное много: определение процессов и потоков на уровне ядра, определение понятия ресурсов и его захватов, определение &quot;железа&quot; и его отображения во внутренние сущности, да много чего из. Это большая проблема&#33; Многие ОСи не просто &quot;разговаривают&quot; на разных языках, они часто разговаривают &quot;разными способами&quot;. В этом плане я как-то где-то даже поддерживаю <strong class='tag-b'>macomics</strong> в его презентации HAL, как способа унификации. Но, увы, тут HAL+1 будет на порядок-два сложнее. Не аргументирую, чисто чуйка. Но это, думаю, лучший варик компромиссов кросс-разработок. Но туман тут, к гадалке не ходи&#33;]]></description>
        <author>Majestio</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914541</guid>
        <pubDate>Mon, 09 Dec 2024 14:36:06 +0000</pubDate>
        <title>WinAPI и POSIX</title>
        <link>https://forum.sources.ru/index.php?showtopic=421430&amp;view=findpost&amp;p=3914541</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914478'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2024-12-08T12:07:36+00:00">08.12.24, 12:07</time></span><div class='quote '>POSIX - это попытка описать API, который бы подходил для очень разных ОС. И на практике так и есть. Но иногда это действительно проблема.</div></div>Та нет же. Это не проблема, что API ОСей отличаются. Вон, есть же Стандарт языка и есть агромадная куча несовместимых друг с другом его реализаций. Проблема-то в том, что несовместимые реализации Стандарта языка совместимы однако с самим Стандартом, тогда как реализации POSIX делают вид, что они совместимы с POSIX, а по факту нет. Мне чтобы написать полностью переносимое POSIX-приложение придётся опуститься до уровня его API образца эдак 199x-ых и лишиться всего его 30 летнего последующего развития. А чтобы воспользоваться этим развитием, оно же вкусное как-никак, я обязан буду сосредотачиваться на его частных реализациях и с головой окунуться в ад портабельности и саппорта. Да-да, есть библиотеки, которые вроде бы должны это брать на себя. Вот только это самое «бы». Ад просто сменил место дислокации и теперь не в POSIX, а в этих библиотеках, потом что у них точно такая же трабля. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-09T14:45:46+00:00">09.12.24, 14:45</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421430&view=findpost&p=3914528'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2024-12-09T12:15:56+00:00">09.12.24, 12:15</time></span><div class='quote '>&quot;Заинтересованная&quot; компания IBM разосралась с тогдашним партнёром Microsoft Co., и как итог - проект издох. И потом получилось то, что сейчас радует <strong class='tag-b'>Qraizer</strong>&#39;а.</div></div><br>
Ну, &quot;разосралась&quot; тут неуместно. У них кончился 10-летний контракт, и не стали перезаключать. Если там и были тёрки, послужившие причиной, то вряд ли их можно описать таким эпитетом. Что до Win32 API, так он и разрабатывался по заказу самой IBM для использования в её OS/2, которая по итогу должна была выйти как OS/2 NT или как-то так. Просто посмотрев на маркетинговые успехи MS и сравнив их со своими, IBM решила воспользоваться услугами профессионалов для продвижения своей ОСи. В частности снабдив MS своими консультантами по созданию качественных 32-битных ОСей. Ну и т.к. контракт истёк до финала, разработку MS бросать в мусорник не хотела, то просто выкупила права и переобозвала как Windows NT.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      </channel>
      </rss>
	