<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>برمجة on kenji.blog</title><link>http://kenji.blog/ar/tags/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><description>Recent content in برمجة on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ar</language><copyright>kenjinote</copyright><lastBuildDate>Tue, 15 Jul 2025 18:03:03 +0900</lastBuildDate><atom:link href="http://kenji.blog/ar/tags/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/index.xml" rel="self" type="application/rss+xml"/><item><title>حدسية كولاتز</title><link>http://kenji.blog/ar/p/collatz-conjecture/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/ar/p/collatz-conjecture/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img.png" alt="Featured image of post حدسية كولاتز" />&lt;h1 id="هل-حقا-ينتهي-أي-رقم-بالعدد-1--اللعب-بحدسية-كولاتز">&amp;ldquo;هل حقًا ينتهي أي رقم بالعدد 1؟&amp;rdquo; ── اللعب بحدسية كولاتز
&lt;/h1>&lt;p>مرحبًا! أنا كينجي.&lt;/p>
&lt;p>سؤال مفاجئ: عندما تسمع &amp;ldquo;قاعدة تجعل أي رقم ينتهي في النهاية إلى 1&amp;rdquo;،
ألا يبدو ذلك غريبًا بعض الشيء؟&lt;/p>
&lt;blockquote>
&lt;p>على سبيل المثال، 19، أو 87، أو حتى 1000000.
إذا اتبعت قاعدة معينة وتلاعبت بالأرقام، لسبب ما تنتهي دائمًا عند &amp;ldquo;1&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>هذه القصة التي تشبه الحلم هي &lt;strong>حدسية كولاتز (Collatz Conjecture)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="في-البداية-ما-هي-حدسية-كولاتز">في البداية، ما هي حدسية كولاتز؟
&lt;/h2>&lt;p>أولاً، دعني أقدم لك القواعد.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>البداية: اختر أي &lt;strong>عدد صحيح موجب&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>العملية:&lt;/p>
&lt;ul>
&lt;li>إذا كان زوجيًا → اقسمه على النصف (n → n / 2)&lt;/li>
&lt;li>إذا كان فرديًا → اضربه في 3 وأضف 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>إذا كررت هذا مرارًا وتكرارًا، فإن التوقع هو أن &lt;strong>أي رقم سيصل في النهاية إلى 1&lt;/strong>.&lt;/p>
&lt;p>على سبيل المثال، إذا بدأنا بـ &lt;code>6&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>أصبح &amp;ldquo;1&amp;rdquo; بالفعل. مرحبًا بعودتك!&lt;/p>
&lt;hr>
&lt;h2 id="لنجرب-ذلك-بالرموز-كولاتز-باستخدام-بايثون">لنجرب ذلك بالرموز: كولاتز باستخدام بايثون
&lt;/h2>&lt;p>حسنًا، في مثل هذه الحالات، من الأسرع تجربة الكود!
دعنا نطبع &amp;ldquo;متتالية كولاتز&amp;rdquo; باستخدام بايثون.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">steps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># مثال: لنبدأ بـ 19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>عند التشغيل:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>يصل إلى 1 بنجاح.
لقد اتخذ طريقًا التفافيًا طويلاً، لكنه وصل إلى خط النهاية في النهاية!&lt;/p>
&lt;p>بالمناسبة، حتى لو بدأنا بـ 29، فإنه يصل إلى 1 بنفس الطريقة.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pythonprint(collatz(29))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>عند التشغيل:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>يستغرق الأمر 111 خطوة مذهلة!&lt;/p>
&lt;p>وعلاوة على ذلك، في بعض الأحيان يتضخم إلى أكثر من 9000 في الطريق.
هذا نمط يأخذ طريقًا التفافيًا ضخمًا قبل الوصول إلى خط النهاية.&lt;/p>
&lt;hr>
&lt;h2 id="إذن-ما-هو-الشيء-المذهل-في-النهاية">إذن، ما هو الشيء المذهل في النهاية؟
&lt;/h2>&lt;p>الشيء المذهل في هذه الحدسية هو،&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>على الرغم من أنها لم تُثبت، يبدو أنها تصل دائمًا إلى 1 بغض النظر عن الرقم الذي تستخدمه&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>هنا تكمن الروعة.&lt;/p>
&lt;p>ماذا؟ إذن، ماذا عن تريليون، أو كوادريليون&amp;hellip;؟&lt;/p>
&lt;p>لمن فكر في ذلك، أنت حاد الذكاء.
في الواقع، باستخدام أجهزة الكمبيوتر، تم التحقق من ذلك حتى &amp;ldquo;2 أُس 68&amp;rdquo;،
و &lt;strong>جميعها تصل إلى 1&lt;/strong>. أمر لا يصدق&amp;hellip;&lt;/p>
&lt;p>ولكن، &lt;strong>لم يُثبت نظريًا أن &amp;ldquo;كل شيء سيكون على هذا النحو&amp;rdquo;&lt;/strong>.
هذا ما يسمى &amp;ldquo;مشكلة غير محلولة&amp;rdquo; في عالم الرياضيات.&lt;/p>
&lt;hr>
&lt;h2 id="من-هو-السيد-كولاتز">من هو السيد كولاتز؟
&lt;/h2>&lt;p>والآن، بعد قراءة هذا الحد، قد تتساءل: &amp;ldquo;من هو كولاتز في المقام الأول؟&amp;rdquo;
سأقدمه لك بشكل صحيح!&lt;/p>
&lt;ul>
&lt;li>الاسم: &lt;strong>لوثار كولاتز (Lothar Collatz)&lt;/strong>&lt;/li>
&lt;li>الجنسية: ألماني&lt;/li>
&lt;li>سنة الميلاد: 1910 - 1990&lt;/li>
&lt;li>المسمى الوظيفي: عالم رياضيات (نشط في مجالات التحليل الدالي ونظرية الأعداد)&lt;/li>
&lt;/ul>
&lt;p>اقترح هذه الحدسية في عام 1937،
ومنذ ذلك الحين، لأكثر من 80 عامًا، &lt;strong>لم يتمكن أحد من إثباتها أو دحضها&lt;/strong>.&lt;/p>
&lt;p>بالمناسبة، هذه المشكلة بسيطة للغاية ولكنها عميقة جدًا،
حتى أن بول إيردوس (عالم الرياضيات الشهير) قال شيئًا كهذا.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;الرياضيات ليست ناضجة بما يكفي للتعامل مع كولاتز بعد&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>بمعنى آخر، النظرية هي أن رياضيات البشرية لم تلحق بعد بهذا اللغز&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="الصيغ-الرياضية-المعقدة-ليست-ضرورية">&amp;ldquo;الصيغ الرياضية المعقدة&amp;rdquo; ليست ضرورية
&lt;/h2>&lt;p>الشيء الجيد في حدسية كولاتز هو أنه يمكن لـ &lt;strong>أي شخص اللعب بها&lt;/strong>.&lt;/p>
&lt;p>كل ما تحتاجه هو ورقة وقلم.
إذا كتبت كودًا بلغة بايثون، يمكنك اختباره تلقائيًا.
ومع ذلك، &lt;strong>يتحدى علماء الرياضيات البارزون ذلك بجدية&lt;/strong>.&lt;/p>
&lt;p>ألا يبدو ذلك مثيرًا؟&lt;/p>
&lt;hr>
&lt;h2 id="مكافأة-كود-لاختبار-العديد-من-الأرقام-دفعة-واحدة">مكافأة: كود لاختبار العديد من الأرقام دفعة واحدة
&lt;/h2>&lt;p>سأقوم أيضًا بتضمين كود لاختبار العديد من الأرقام معًا.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">21&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (عدد الخطوات: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>هذا سيخرج متتالية كولاتز للأرقام من &amp;ldquo;1 إلى 20&amp;rdquo; دفعة واحدة.&lt;/p>
&lt;hr>
&lt;h2 id="الخلاصة-هذا-العالم-غريب-حقا">الخلاصة: هذا العالم غريب حقًا
&lt;/h2>&lt;p>إذن، هذه هي حدسية كولاتز.&lt;/p>
&lt;ul>
&lt;li>على الرغم من أنها بسيطة جدًا&lt;/li>
&lt;li>لا يمكن لأحد إثباتها&lt;/li>
&lt;li>إنها مشكلة كبيرة في عالم الرياضيات&lt;/li>
&lt;/ul>
&lt;p>لقد كان وجودًا يبدو ككتلة من الغموض.&lt;/p>
&lt;p>حتى المبتدئين في البرمجة يمكنهم تجربتها، لذا يرجى اللعب بها!&lt;/p>
&lt;hr>
&lt;h2 id="روابط-موصى-بها-للمهتمين">روابط موصى بها (للمهتمين)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ar.wikipedia.org/wiki/%d8%ad%d8%af%d8%b3%d9%8a%d8%a9_%d9%83%d9%88%d9%84%d8%a7%d8%aa%d8%b2" target="_blank" rel="noopener"
>ويكيبيديا: حدسية كولاتز&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>ورقة تيرينس تاو (باللغة الإنجليزية)&lt;/a>&lt;/li>
&lt;li>قد يكون من الممتع أيضًا إنشاء نسخة مرئية باستخدام بايثون! (سأفعل ذلك إذا كان هناك طلب)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>إذا كنت ترغب في معرفة المزيد من القصص حول &amp;ldquo;الرياضيات الغامضة × البرمجة&amp;rdquo;،
لا تتردد في طلب &amp;ldquo;أخبرني المزيد&amp;rdquo;.
قريبًا، سأقدم لك فرضية ريمان، الأعداد الأولية، والمزيد!&lt;/p>
&lt;hr>
&lt;p>📮 النهاية!&lt;/p>
&lt;hr></description></item><item><title>مزايا وعيوب إنشاء برامج باستخدام Win32API + C++</title><link>http://kenji.blog/ar/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</link><pubDate>Sat, 12 Jul 2025 12:30:35 +0900</pubDate><guid>http://kenji.blog/ar/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</guid><description>&lt;img src="http://kenji.blog/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/img_1.png" alt="Featured image of post مزايا وعيوب إنشاء برامج باستخدام Win32API + C++" />&lt;h1 id="جاذبية-وتحديات-التطوير-باستخدام-win32api--c">جاذبية وتحديات التطوير باستخدام Win32API + C++
&lt;/h1>&lt;p>بالنسبة لأولئك الذين يرغبون في إتقان تطوير تطبيقات Windows، لا يزال &lt;strong>Win32API + C++&lt;/strong> خيارا قويا.
تجمع هذه المجموعة، التي تتيح لك التفاعل مع نظام التشغيل بأقرب مسافة، بين السرعة العالية والمرونة.&lt;/p>
&lt;p>من ناحية أخرى، نظرا لأنها تختلف اختلافا كبيرا عن أساليب التطوير الحديثة، فإن إتقانها يتطلب أيضا تصميما.&lt;/p>
&lt;p>في هذه الصفحة، سنشرح المزايا والعيوب بطريقة سهلة الفهم من &lt;strong>منظور مطور تطبيقات Windows نشط&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="المزايا">المزايا
&lt;/h2>&lt;h3 id="تنفيذ-أصلي-فائق-السرعة">تنفيذ أصلي فائق السرعة
&lt;/h3>&lt;p>نظرا لأن C++ و Win32API يعملان في الطبقة الأقرب لنظام التشغيل، فلا يوجد تقريبا أي عبء إضافي.
كفاءة استخدام وحدة المعالجة المركزية والذاكرة عالية جدا، وتتميز بـ &lt;strong>سرعة تنفيذ ساحقة&lt;/strong> .&lt;/p>
&lt;h3 id="مرونة-وحرية-عالية">مرونة وحرية عالية
&lt;/h3>&lt;p>يمكنك &lt;strong>التحكم الدقيق بنفسك&lt;/strong> في كل سلوك للتطبيق، مثل التحكم في النوافذ، والمعالجة غير المتزامنة، وتكامل COM، وإدارة العمليات.
من الممكن أيضا بناء أدوات متخصصة لغرض معين، أو إطارات عمل مخصصة خاصة بك.&lt;/p>
&lt;h3 id="سهل-التوزيع-بدون-الحاجة-إلى-وقت-تشغيل">سهل التوزيع بدون الحاجة إلى وقت تشغيل
&lt;/h3>&lt;p>نظرا لعدم الحاجة إلى أوقات تشغيل خارجية مثل .NET أو Java، &lt;strong>يمكن توزيعه كملف تنفيذي واحد فقط&lt;/strong> .
من الصعب حدوث مشاكل عند إعادة التوزيع، ومن الجذاب أنه من السهل تشغيله حتى بدون مثبت.&lt;/p>
&lt;h3 id="يمكن-إنشاء-تطبيقات-خفيفة-الوزن">يمكن إنشاء تطبيقات خفيفة الوزن
&lt;/h3>&lt;p>نظرا لأنه يتطلب فقط الحد الأدنى من التكوين، فإن الميزة هي أن &lt;strong>بصمة الذاكرة صغيرة جدا&lt;/strong> .
يعمل بشكل مريح حتى على أجهزة الكمبيوتر ذات المواصفات المنخفضة وبيئات الأجهزة الافتراضية.&lt;/p>
&lt;h3 id="تحكم-متقدم-على-مستوى-نظام-التشغيل-ممكن">تحكم متقدم على مستوى نظام التشغيل ممكن
&lt;/h3>&lt;p>يمكن أيضا تحقيق &lt;strong>تحكم يصعب باستخدام اللغات والمكتبات العادية&lt;/strong> ، مثل الخطافات العالمية للماوس ولوحة المفاتيح، والضبط الدقيق لأنماط النوافذ، وعمليات قائمة النظام.&lt;/p>
&lt;hr>
&lt;h2 id="العيوب">العيوب
&lt;/h2>&lt;h3 id="كفاءة-تطوير-منخفضة">كفاءة تطوير منخفضة
&lt;/h3>&lt;p>يجب أن يتم بناء واجهة المستخدم الرسومية بالكامل من خلال الكود، و &lt;strong>قد يتطلب إنشاء زر واحد عشرات الأسطر من التعليمات البرمجية&lt;/strong> .
تعديل التصميم عند التغيير مرهق أيضا، والإنتاجية منخفضة مقارنة بالتطوير باستخدام أطر عمل واجهة المستخدم.&lt;/p>
&lt;h3 id="الصيانة-تميل-إلى-الانخفاض">الصيانة تميل إلى الانخفاض
&lt;/h3>&lt;p>يحتوي على الكثير من &lt;strong>التعليمات البرمجية ذات البنية الخاصة&lt;/strong> ، مثل حلقات الرسائل وإجراءات النوافذ، مما يجعل من الصعب قراءتها وإعادة استخدامها.
هناك أيضا جوانب تجعلها غير مناسبة لتطوير الفريق أو الصيانة طويلة الأجل.&lt;/p>
&lt;h3 id="التكيف-مع-واجهة-المستخدم-الحديثة-مرهق">التكيف مع واجهة المستخدم الحديثة مرهق
&lt;/h3>&lt;p>&lt;strong>من الصعب التكيف مع تجربة المستخدم المطلوبة في السنوات الأخيرة&lt;/strong> ، مثل دعم DPI العالي، وواجهة اللمس، وإمكانية الوصول، والوضع المظلم.
يجب معالجة كل منها يدويا، الأمر الذي يتطلب الكثير من الجهد.&lt;/p>
&lt;h3 id="غير-مدعوم-عبر-المنصات">غير مدعوم عبر المنصات
&lt;/h3>&lt;p>نظرا لأنها واجهة برمجة تطبيقات مخصصة بالكامل لـ Windows، &lt;strong>لا يمكن نقلها إلى macOS أو Linux&lt;/strong> .
إذا كنت تتوقع النشر عبر منصات متعددة، فستحتاج إلى اختيار تقنية أخرى.&lt;/p>
&lt;h3 id="تكلفة-تعلم-عالية-جدا">تكلفة تعلم عالية جدا
&lt;/h3>&lt;p>يجب أن تفهم &lt;strong>المفاهيم والآليات التي نادرا ما تستخدم اليوم&lt;/strong> ، مثل المقابض، و GDI، و COM، و OLE.
العديد من المستندات قديمة أيضا، ويتطلب التعلم وقتا وصبرا.&lt;/p>
&lt;hr>
&lt;h2 id="الاستخدامات-المناسبة">الاستخدامات المناسبة
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>أدوات خفيفة الوزن&lt;/strong> مثل مشغلات الملفات ومساعدات مفاتيح الاختصار&lt;/li>
&lt;li>&lt;strong>أدوات النظام المساعدة&lt;/strong> مثل معالجة الحافظة والتحكم في IME&lt;/li>
&lt;li>&lt;strong>تطبيقات نظام التحكم الأصلي&lt;/strong> مثل الخطافات العالمية والتقاط النوافذ&lt;/li>
&lt;li>&lt;strong>أدوات مساعدة السائق&lt;/strong> التي ترتبط ارتباطا وثيقا بالأجهزة&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="الاستخدامات-غير-المناسبة">الاستخدامات غير المناسبة
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>التطبيقات الموجهة للمستهلكين العاديين&lt;/strong> حيث يتم التركيز على واجهة المستخدم / تجربة المستخدم الحديثة&lt;/li>
&lt;li>&lt;strong>النماذج الأولية وتطوير MVP&lt;/strong> حيث يتم تحديد الأولويات للسرعة&lt;/li>
&lt;li>&lt;strong>مشاريع واسعة النطاق&lt;/strong> تعتمد على التشغيل طويل الأجل وتطوير الفريق&lt;/li>
&lt;li>&lt;strong>المنتجات عبر المنصات&lt;/strong> التي تحتاج إلى دعم أنظمة تشغيل متعددة&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="ملخص-التقييم">ملخص التقييم
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>الجانب&lt;/th>
&lt;th>التقييم&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>سرعة التنفيذ&lt;/td>
&lt;td>◎ سريع جدا&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>كفاءة الذاكرة&lt;/td>
&lt;td>◎ ممتاز&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>سرعة التطوير&lt;/td>
&lt;td>× بطيء&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>الصيانة&lt;/td>
&lt;td>× منخفض&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>دعم عبر المنصات&lt;/td>
&lt;td>× غير مدعوم&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>دعم واجهة المستخدم الحديثة&lt;/td>
&lt;td>× ضعيف&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>حرية تحكم نظام التشغيل&lt;/td>
&lt;td>◎ عالية جدا&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="الخاتمة">الخاتمة
&lt;/h2>&lt;p>&lt;strong>Win32API + C++ أداة مناسبة للمطورين الذين &amp;ldquo;يريدون التعامل مع كل شيء في نظام التشغيل بأنفسهم&amp;rdquo;.&lt;/strong>
في حين أن قوتها كبيرة جدا، إلا أن التعلم والتشغيل يتطلبان استعدادا مقابلا.&lt;/p>
&lt;blockquote>
&lt;p>ما إذا كان الأمر يستحق &amp;ldquo;الخيار المتعمد&amp;rdquo; يعتمد على طبيعة التطبيق الذي تهدف إليه.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>القفز إلى عالم &lt;code>#include &amp;lt;windows.h&amp;gt;&lt;/code> دون الاعتماد على أطر عمل واجهة المستخدم الرسومية أو اللغات الحديثة ――
هذا الاختيار لا يزال مهما كما كان دائما.&lt;/p></description></item><item><title>مجموعة خطوط للبرمجة</title><link>http://kenji.blog/ar/p/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A9-%D8%AE%D8%B7%D9%88%D8%B7-%D9%84%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><pubDate>Sat, 30 Mar 2024 02:21:31 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A9-%D8%AE%D8%B7%D9%88%D8%B7-%D9%84%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/img.png" alt="Featured image of post مجموعة خطوط للبرمجة" />&lt;h2 id="jetbrains-mono">JetBrains Mono
&lt;/h2>&lt;p>إنه خط برمجة مفتوح المصدر مقدم من JetBrains.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://www.jetbrains.com/ja-jp/lp/mono/" target="_blank" rel="noopener"
>https://www.jetbrains.com/ja-jp/lp/mono/&lt;/a>&lt;/p>
&lt;h2 id="hackgen">HackGen
&lt;/h2>&lt;p>Hakugen (HackGen) هو خط برمجة تم إنشاؤه من خلال دمج الخط الإنجليزي Hack المخصص للبرمجة مع خط Genjyuu Gothic، وهو خط مشتق من Source Han Sans.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://github.com/yuru7/HackGen/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/HackGen/releases&lt;/a>&lt;/p>
&lt;h2 id="ricty-diminished">Ricty Diminished
&lt;/h2>&lt;p>&lt;code>Ricty Diminished&lt;/code> هو خط شقيق لـ &lt;code>Ricty&lt;/code>، وهو خط تم إنشاؤه بدمج &lt;code>Inconsolata&lt;/code> و &lt;code>Circle M+ 1m&lt;/code> باستخدام برنامج نصي لإنشاء &lt;code>Ricty&lt;/code> بدلاً من &lt;code>Inconsolata&lt;/code> و &lt;code>Migu 1M&lt;/code>. نظراً لأنه لا يحتوي على رموز IPA Gothic، فإن عدد رموز الكانجي القابلة للاستخدام قليل، ولكن في المقابل يمكن توزيعه بموجب ترخيص &lt;code>SIL Open Font License&lt;/code>.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://rictyfonts.github.io/diminished" target="_blank" rel="noopener"
>https://rictyfonts.github.io/diminished&lt;/a>&lt;/p>
&lt;h2 id="cica">Cica
&lt;/h2>&lt;p>خط برمجة يستخدم &lt;code>Hack&lt;/code> + &lt;code>DejaVu Sans Mono&lt;/code> للأحرف والأرقام الإنجليزية والرموز.
ويستخدم &lt;code>Rounded Mgen+&lt;/code> للأحرف الأخرى.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://github.com/miiton/Cica/releases" target="_blank" rel="noopener"
>https://github.com/miiton/Cica/releases&lt;/a>&lt;/p>
&lt;p>مرجع:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://sourcefoundry.org/hack/" target="_blank" rel="noopener"
>Hack&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://dejavu-fonts.github.io/" target="_blank" rel="noopener"
>DejaVu Sans Mono&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="http://jikasei.me/font/rounded-mgenplus/" target="_blank" rel="noopener"
>Rounded Mgen+&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="migu">Migu
&lt;/h2>&lt;p>إنه خط مدمج من M+ و IPA.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://itouhiro.github.io/mixfont-mplus-ipa/migu/" target="_blank" rel="noopener"
>https://itouhiro.github.io/mixfont-mplus-ipa/migu/&lt;/a>&lt;/p>
&lt;h2 id="osaka">Osaka
&lt;/h2>&lt;p>إنه خط يتيح لك استخدام &lt;code>Osaka&lt;/code>، وهو خط قياسي في Mac OS، على نظام Windows.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/" target="_blank" rel="noopener"
>http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/&lt;/a>&lt;/p>
&lt;h2 id="plemoljp">PlemolJP
&lt;/h2>&lt;p>إنه خط برمجة يجمع بين خط &lt;code>IBM Plex Sans JP&lt;/code> الياباني مفتوح المصدر الذي أصدرته IBM و &lt;code>IBM Plex Mono&lt;/code> من سلسلة Plex الخاصة بـ IBM.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://github.com/yuru7/PlemolJP/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/PlemolJP/releases&lt;/a>&lt;/p></description></item><item><title>【حسب اللغة】ملخص بيئات تنفيذ الأكواد عبر الإنترنت</title><link>http://kenji.blog/ar/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</link><pubDate>Sun, 09 Apr 2023 14:01:00 +0900</pubDate><guid>http://kenji.blog/ar/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/img.png" alt="Featured image of post 【حسب اللغة】ملخص بيئات تنفيذ الأكواد عبر الإنترنت" />&lt;h2 id="python">Python
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"
>Google Colaboratory&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة Google Colaboratory هي بيئة لتنفيذ Python يمكن تشغيلها عبر الإنترنت.&lt;/p>
&lt;ul>
&lt;li>يمكن أيضاً استخدام GPU.&lt;/li>
&lt;li>باستخدام دفاتر Colab، يمكنك كتابة كود قابل للتنفيذ ونص غني (مثل الصور و HTML و LaTeX وما إلى ذلك) في مستند واحد.&lt;/li>
&lt;/ul>
&lt;p>وهي مبنية على Jupyter Notebook.&lt;/p>
&lt;h2 id="rust">Rust
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.rust-lang.org/?version=stable&amp;amp;mode=debug&amp;amp;edition=2021" target="_blank" rel="noopener"
>Rust Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="javascript">JavaScript
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://playcode.io/" target="_blank" rel="noopener"
>Javascript Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="java">Java
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/ja/projects/new?language=java" target="_blank" rel="noopener"
>paiza.IO Online Java compiler&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="haskell">Haskell
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.haskell.org/" target="_blank" rel="noopener"
>Haskell Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="swift">Swift
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://online.swiftplayground.run/" target="_blank" rel="noopener"
>Online Swift Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="c">C++
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.onlinegdb.com/online_c&amp;#43;&amp;#43;_compiler" target="_blank" rel="noopener"
>C++ 14&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="أخرى">أخرى
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aws.amazon.com/jp/cloud9/" target="_blank" rel="noopener"
>AWS Cloud9&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تطوير متكاملة عبر الإنترنت تقدمها Amazon AWS. تأتي مع أدوات مجمعة مسبقاً لأكثر من 40 لغة برمجة مثل Node.js و JavaScript و Python و PHP و Ruby و Go و C++ وغيرها.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://vscode.dev/" target="_blank" rel="noopener"
>Visual Studio Code for the Web&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تطوير عبر الإنترنت تقدمها Microsoft. ومع ذلك، لا يمكن تنفيذ أو تصحيح اللغات التي تتطلب تجميعاً (compile).&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/projects/CGAcQLfW-IOXYy8Dq2OHBw?locale=ja-jp" target="_blank" rel="noopener"
>paiza.IO&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تنفيذ عبر الإنترنت تدعم 24 لغة رئيسية مثل C و C++ و Java و Ruby و Python و PHP و Perl وغيرها.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codepen.io/" target="_blank" rel="noopener"
>CodePen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تنفيذ عبر الإنترنت لـ HTML و CSS و JavaScript.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codeanywhere.com/" target="_blank" rel="noopener"
>codeanywhere&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تطوير متكاملة (IDE) عبر الإنترنت. يمكنك مشاركة الكود والدردشة.&lt;/p></description></item></channel></rss>