<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x645;&#x642;&#x627;&#x644;&#x627;&#x62A; &#x639;&#x627;&#x645;&#x629; &#x62D;&#x648;&#x644; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>https://academy.hsoub.com/programming/general/page/4/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x645;&#x642;&#x627;&#x644;&#x627;&#x62A; &#x639;&#x627;&#x645;&#x629; &#x62D;&#x648;&#x644; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</description><language>ar</language><item><title>&#x628;&#x631;&#x645;&#x62C;&#x629; &#x627;&#x644;&#x62D;&#x627;&#x633;&#x648;&#x628; &#x644;&#x644;&#x645;&#x628;&#x62A;&#x62F;&#x626;&#x64A;&#x646;</title><link>https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_04/942948854_.png.c8dae097fe95b75dcbeca0327e0d5e5a.png" /></p>
<p>
	في عصرنا الحالي الذي هيمنت فيه التقنية على نواحي الحياة المختلفة وباتت الروبوتات والآلات الذكية تحيط بنا في كل مكان أصبح تعلم برمجة الحاسوب أمرًا ضروريًا للجميع.
</p>

<p>
	قد تكون متحمسًا لتعلّم برمجة الحاسوب وبدء خطوتك الأولى في هذا المجال لكنك متردد وتشعر أنك تائه وأن البرمجة وعلوم الحاسوب والخوازميات مصطلحات معقدة وصعبة الفهم في هذه الحالة دعني أدعوك لقراءة هذا المقال.
</p>

<p>
	سأوفر في مقال اليوم كل المعلومات اللازمة للمبتدئين للتعرف على مفهوم برمجة الحاسوب ونوضح أهميتها وأهم الطرق لتعلّمها بسرعة وكفاءة وبطريقة ممتعة.
</p>

<h2>
	ما هي برمجة الحاسب؟
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="123287" href="https://academy.hsoub.com/uploads/monthly_2023_04/180751347_.png.68efa4f58b12ade7b10572b30468ee44.png" rel=""><img alt="برمجة الحاسوب" class="ipsImage ipsImage_thumbnailed" data-fileid="123287" data-ratio="62.50" data-unique="9jtauvl9g" style="width: 600px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_04/.thumb.png.cfa3605b448be83c5e957d710e672117.png"></a>
</p>

<p>
	برمجة الحاسب ببساطة ليست سوى إخبار جهاز الحاسوب بالأوامر التي تريد منه القيام بها فالحاسوب بدون برمجة ليس سوى خردة من البلاستيك والمعدن وهو يحتاج إلى برمجة كي يعمل بالشكل المطلوب وبرمجة الحاسوب هي العملية التي تمكنك من تصميم وبناء برامج تؤدي مهام محددة.
</p>

<p>
	تسمى جميع أجزاء الحاسوب التي يمكنك لمسها باسم <a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B1%D8%B6-%D9%85%D9%88%D8%A7%D8%B5%D9%81%D8%A7%D8%AA-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%83-%D8%B9%D9%86-%D8%B7%D8%B1%D9%8A%D9%82-%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r583/" rel="">العتاد Hardware</a> أما الأجزاء التي لا يمكنك لمسها تسمى <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/" rel="">البرمجيات أو البرامج Software</a>، عندما تشغل الحاسوب فإنه يقوم بتشغيل هذه البرامج، ولعل أهم برنامج يحتاجه الحاسوب ولا يعمل بدونه هو <a href="https://academy.hsoub.com/apps/operating-systems/%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84/" rel="">نظام التشغيل</a> الذي يعتبر بمثابة القلب النابض للحاسوب لذا يجب أن يعمل طول الوقت في الخلفية دون أن تطلب منه العمل في حين تعمل البرامج الأخرى كالآلة الحاسبة ومشغل الموسيقى ومتصفح الإنترنت وألعاب الحاسوب عند الطلب.
</p>

<p>
	من أشهر <a href="https://academy.hsoub.com/apps/operating-systems/" rel="">أنظمة التشغيل للحواسيب</a> نظام ويندوز ولينكس وماك، كما تحتاج الأجهزة الأخرى كالهواتف المحمولة والأجهزة اللوحية إلى أنظمة تشغيل خاصة بها مثل نظام أندرويد Android ونظام iOS.
</p>

<h3>
	لغات برمجة الحاسوب
</h3>

<p>
	ولغة البرمجة هي وسيلتك الوحيدة للتخاطب مع الأجهزة من حولك وتطوير البرامج المختلفة، وإذا كنا نحن البشر نستخدم لغات مختلفة كالعربية والإنجليزية والفرنسية للتواصل مع بعضنا فإننا نتواصل مع أجهزة الحاسوب كذلك بإحدى لغات البرمجة التي يفهمها.
</p>

<p>
	هناك مئات من <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> التي تختلف فيما بينها حسب الغرض منها ونوع الجهاز الذي تتخاطب معه لكنها في النهاية تعمل وفق نفس المبدأ، وتستخدم لكتابة البرامج التي هي في النهاية سلسلة من الأوامر والتعليمات المفصلة والمرتبة وفق تسلسل معين لتحدد للحاسوب ما الذي يتوجب عليه القيام به.
</p>

<p>
	ركز على كلمة مفصلّة ومرتبة فالحاسوب ليس ذكيًا كالإنسان ويحتاج لأن تلقنه الأوامر بشكل بدائي للغاية، على سبيل المثال إذا طلبت من صديقي أن يحضر لي عبوة ماء من آلة البيع، فسوف يفهم قصدي ويجلب لي طلبي مباشرة لكن إذا طلبته من جهاز الحاسوب فلن يفهم الأمر بهذه السهولة.
</p>

<h3>
	الخوارزميات واستعمالها في برمجة الحاسوب
</h3>

<p>
	لكي ينجز لك الحاسوب أمرًا بسيطًا مثل الأمر السابق، يحتاج لأن تخبره بالتعليمات التفصيلية خطوة بخطوة كما يلي:
</p>

<ol>
	<li>
		اذهب إلى آلة البيع وقف أمامها.
	</li>
	<li>
		تأكد من وجودة عبوات ماء في الآلة.
	</li>
	<li>
		ضع مقدار المال المطلوب في المكان المخصص.
	</li>
	<li>
		اضغط على رقم الزر المخصص لطلب عبوة الماء.
	</li>
	<li>
		تأكد من أن عبوة الماء سقطت في المنفذ المخصص.
	</li>
	<li>
		أخرج عبوة الماء وأحضرها إلي.
	</li>
</ol>

<p>
	وربما كل خطوة من الخطوات السابقة تحتاج إلى تفصيل، فعندما تخاطب الحاسوب عليك أن تلقنه خطوات العمل بشكل مفصل وواضح على هذا النحو، ويمكن أن تطلق على هذه الخطوات اسم "خوارزمية" وهي مفهوم هام يساعدك على تحسين مهارات البرمجة لديك، وكما تلاحظ الخوازرمية ما هي إلا خطوات لحل مشكلة معينة، وهي غير مرتبطة بلغة برمجة محددة فيمكنك أن تكتبها بأي لغة برمجة تختارها أو حتى ترسمها ضمن مخطط لكن فهم الخوارزميات يساعدك على كتابة تعليمات برمجية أفضل.
</p>

<p>
	بالطبع كانت الخطوات السابقة مجرد خوارزمية بسيطة لشراء عبوة ماء من آلة بيع ويمكنك أن تنجزها بعدة طرق وتفصلّها إذا شئت بشكل أكبر من خلال مراعاة الحالات الخاصة التي قد تواجه الحاسوب خلال عملية البيع.
</p>

<p>
	على سبيل المثال إذا لم يتوفر في آلة البيع ماء يمكنك أن تجلب لي عصير برتقال أو إذا كانت الآلة معطلة ولم تخرج المطلوب فقم باسترداد النقود التي وضعتها …إلخ. وإذا أردت منه أن يشتري لي خمس عبوات ماء سأطلب منه أن يكرر كافة الخطوات أعلاه حتى يصل عدد العبوات لخمسة لأنك إن لم تخبر الحاسوب بكل ما تريده خطوة بخطوة بشكل منطقي وبتسلسل صحيح فلا تتوقع أن يتصرف من تلقاء نفسه!
</p>

<h2>
	كيف يعمل برنامج الحاسوب؟
</h2>

<p>
	كي تكتب أي برنامج على الحاسوب تحتاج بداية لأن تعرف ما هي خطوات الحل أو الخوارزمية التي تحل المشكلة ثم تحولها إلى برنامج مكتوب بلغة برمجة ما وبالطبع إذا كتبت للحاسوب الخوارزمية بلغتك البشرية فلن يفهمها لذلك تحتاج لاستخدام لغة برمجة لها قواعد إملائية وصياغية محددة في كتابة التعليمات وتوفر للمبرمج كافة الوظائف الأساسية التي تمكنه من التحكم في سير عمل البرنامج.
</p>

<p>
	يستخدم المبرمجون لغات برمجة متنوعة لتصميم البرامج والتطبيقات التي نستخدمها على حواسيبنا أو هواتفنا الذكية أو أجهزتنا اللوحية، ومن أشهر لغات البرمجة التي تناسب المبتدئين: لغة بايثون ولغة جافا ولغة جافاسكربت ولغة C++‎ ولغة سكراتش …إلخ. وللمزيد في هذه النقطة، ارجع إلى مقال <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة للمبتدئين</a>.
</p>

<p>
	بعض لغات البرمجة نصية أي تحتاج لكتابة تعليماتها ضمن محرر نصوص، وبعضها الآخر رسومي وسهل التعلم حيث تمكنك من كتابة البرنامج بشكل مشابه لقطع الليغو بحيث تعبر كل قطعة فيها عن تعليمة وكل ما عليك هو تركيب هذه التعليمات فوق بعضها البعض لتشكل برنامجًا متكاملاً.
</p>

<p>
	على سبيل المثال البرنامج التالي يحل خوارزمية إيجاد العدد الأكبر بين عددين صحيحين من خلال لغة البرمجة الرسومية <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%B3%D9%83%D8%B1%D8%A7%D8%AA%D8%B4-scratch-r1407/" rel="">سكراتش</a>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="123288" href="https://academy.hsoub.com/uploads/monthly_2023_04/1749368130_.PNG.43f0fc39986b0395d673fdda0e9ab6dc.PNG" rel=""><img alt="برمجة الحاسوب في سكراتش.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="123288" data-ratio="72.50" data-unique="6lm9z84nb" style="width: 600px; height: auto;" width="827" src="https://academy.hsoub.com/uploads/monthly_2023_04/.thumb.PNG.f609fb8c71ccfdd70942a60868372207.PNG"></a>
</p>

<p>
	في حين سيبدو هذا البرنامج بلغة برمجة نصية مثل بايثون بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8067_10" style=""><span class="com"># برنامج لطباعة العدد الأكبر بين عددين</span><span class="pln">
num1 </span><span class="pun">=</span><span class="pln"> input </span><span class="pun">(</span><span class="str">" أدخل العدد الأول "</span><span class="pun">)</span><span class="pln">
num2 </span><span class="pun">=</span><span class="pln"> input</span><span class="pun">(</span><span class="str">" أدخل العدد الثاني "</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">if</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">num1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&gt;</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">num2</span><span class="pun">):</span><span class="pln"> 
    </span><span class="kwd">print</span><span class="pun">(</span><span class="str">"العدد الأكبر هو"</span><span class="pun">,</span><span class="pln">num1</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
    </span><span class="kwd">print</span><span class="pun">(</span><span class="str">"العدد الأكبر هو"</span><span class="pun">,</span><span class="pln">num2</span><span class="pun">)</span></pre>

<p>
	بعد أن تكتب البرنامج بأي لغة برمجة تختارها لن يتمكن الحاسوب من فهمه وتنفيذه مباشرة، وإذا كنت تتساءل لماذا؟ فالجواب هو أن الحاسوب لا يفهم في الواقع سوى لغة الآلة المكونة من 0 و 1.
</p>

<p>
	لهذا السبب عليك أن تستعين ببرنامج خاص يأتي مع كل لغة وتطلب منه أن يقوم بتحويل كود البرنامج المكتوب بتلك اللغة إلى <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%B3%D8%AA%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغة الآلة</a> لينفذها الحاسوب. يقوم المترجم أو المُحوِّل بالتأكد من أنك كتبت البرنامج بشكل صحيح أثناء تحويله ثم يقوم بتشغيله، وإذا كان البرنامج يحتوي على بعض الأخطاء فسيتم عرض الخطأ ويطلب منك المترجم تصحيحه قبل أن ينفذ أوامرك.
</p>

<h2>
	فوائد تعلم برمجة الحاسوب
</h2>

<p>
	يقدم تعلم برمجة الحاسوب لك العديد من الفوائد أهمها:
</p>

<ul>
	<li>
		تطور البرمجة قدرتك على حل المشكلات وتحسن قدرتك على التفكير المنطقي.
	</li>
	<li>
		سوق العمل في مجال برمجة الحاسوب كبير مما يسهل عليك الحصول فرصة عمل جيدة بسهولة.
	</li>
	<li>
		ذات مردود مالي مرتفع فالوظائف التي تتطلب خبرة برمجية مجزية وعالية الأجر.
	</li>
	<li>
		تمكنك من العمل بشكل حرّ إن أردت بأوقات عمل مرنة ومن أي مكان في العالم.
	</li>
	<li>
		بعيدًا عن مجال العمل، تعتبر البرمجة مهارة مهمة تساعدك على التكيف بسهولة مع التطور الرقمي الذي يطال كافة المجالات.
	</li>
	<li>
		يمكنك تعلمها بشكل ذاتي من عدة مصادر دون الحاجة للدراسة الجامعية.
	</li>
</ul>

<h2>
	كيف أتعلم برمجة الحاسوب؟
</h2>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="450" id="ips_uid_7678_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="800" data-embed-src="https://www.youtube.com/embed/zaJQAOSKgPI"></iframe>
</p>

<p>
	تأكد أن <a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a> ليس بهذه الصعوبة في الواقع، إلا إذا كنت غير جديّ في التعلم أو كنت تتعلمها بطريقة خاطئة تركز على المعلومات النظرية المملة.
</p>

<p>
	وإليك خطوات سريعة تساعدك على تعلم برمجة الحاسوب:
</p>

<ul>
	<li>
		تعلم الرياضيات ومنهجية التفكير المنطقي، وبالطبع لا يستلزم تعلّم البرمجة تعلّم أمور رياضية متقدمة ويمكنك الاكتفاء بالأمور الأساسية التي تساعدك على إيجاد الحلول للمشكلات التي تواجهك برمجيًا.
	</li>
	<li>
		حدد <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">مجالات البرمجة</a> التي تفضلها والتي توافق ميولك ومجال اهتمامك مثل تطوير مواقع الويب أو تطوير الألعاب أو تطبيقات الجوال أو برمجة الروبوتات …إلخ. وركز على تعلم لغات البرمجة والأدوات التي تساعدك على تحقيق هذا الهدف.
	</li>
	<li>
		ابدأ تعلم البرمجة بلغة سهلة وبسيطة تناسب المبتدئين مثل بايثون وروبي. ويمكنك مطالعة مقال <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a> لتتعرف على المزيد من لغات البرمجة المناسبة لبدء التعلم.
	</li>
	<li>
		إذا لم تكن قادرًا حتى الآن على تحديد اللغة التي ينبغي عليك أن تتعلمها يمكنك البدء بتعلم <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أساسيات البرمجة</a> بلغات برمجة مختلفة، وستجد العديد من الدروس والمقالات على الإنترنت التي تساعدك على فهم هذه الأساسيات بغض النظر عن اللغات المستخدمة.
	</li>
	<li>
		ثبت جميع البرامج والأدوات المطلوبة للتعلم مثل محرر الكود والمترجم لتنفيذ البرامج بنفسك وتطبيق ما تعلمته بشكل عملي.
	</li>
	<li>
		تعلم كيف تصحح أخطاء البرامج وتأكد أنك إن لم تخطئ وتتعلم كيف تعثر على هذه الأخطاء وتصححها فلن تتعلم أبدًا.
	</li>
	<li>
		إن تمكنت من التعلم مع صديق له نفس اهتماماتك فهذا سيساعدك ويحفزك على التعلم بصورة أفضل، كما يمكنك الانضمام للمنتديات والمجتمعات المختصة بالبرمجة والمشاركة فيها وتبادل الخبرات والأسئلة حول المواضيع التي تهمك.
	</li>
	<li>
		كن صبورًا ومستعدًا لتعلم الأشياء الجديدة فمجال البرمجة واسع ومتجدد ويتطلب شخصًا لديه قابلية التعلّم المستمر ومواكبة كل جديد ولا تستعجل النتائج.
	</li>
</ul>

<p>
	اختر ما يلائمك من مصادر التعلّم، فتعلّم البرمجة متاح بطرق عديدة متنوعة من بينها الحصول على التعليم الأكاديمي من جامعة أو مدرسة متخصصة، أو التعلم بشكل ذاتي من مصادر التعلم المتعددة مثل المعسكرات التدريبية والكتب والدروس والمدونات ومقاطع الفيديو عبر الإنترنت.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<p>
	إذا كنت تبحث عن مصدر موثوق لتعلم البرمجة توفر لك أكاديمية حسوب دورة تدريبية مميزة مختصة بتعليم البرمجة وعلوم الحاسوب وهي دورة <span ipsnoautolink="true">تعلم علوم الحاسب</span> التي تتيح لك دراسة البرمجة بشكل ذاتي وتمكنك من احتراف البرمجة بأقصر الطرق دون الحاجة لأي خبرة مسبقة والحصول على شهادة معتمدة وفرصة للعمل في هذا المجال.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="450" id="ips_uid_7678_7" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="800" data-embed-src="https://www.youtube.com/embed/EkvUFDevMlM"></iframe>
</p>

<p>
	كما أنصح بمطالعة مقال <a href="ttps://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%84%D8%B1%D8%AD%D9%84%D8%AA%D9%83-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r206/" rel="">كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة</a> الذي يستعرض لك خيارات منوعة لتعلم برمجة الحاسب لتختار منها ما يناسبك.
</p>

<h2>
	الخلاصة
</h2>

<p>
	شرحنا في مقال اليوم مفهوم برمجة الحاسوب وأهميتها لأجهزة الحاسوب التي لن تتمكن من فعل أي شيء دون البرمجيات، وبيّنا أهمية تعلم البرمجة على الصعيد المهني والشخصي، وكيف يمكنك تعلمها ذاتيًا بطريقة سهلة وسريعة وتذكّر أن إتقان البرمجة يحتاج للممارسة والتطبيق العملي فكلما مارستها أكثر كلما أصبحت أكثر كفاءة واحترافية.
</p>

<p>
	ماذا تنتظر؟ ابدأ من الآن وابدأ طريقك نحو أهم مهنة في المستقبل! وإذا كان لديك أي سؤال أو استفسار حول برمجة الحاسوب فنرحب بأن تشاركنا به وتكتبه في قسم التعليقات أسفل المقال.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">المدخل الشامل لتعلم علوم الحاسوب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A8%D8%B1%D9%85%D8%AC-%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%AA%D9%83-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%89-%D8%B9%D8%A8%D8%B1-%D8%B3%D9%83%D8%B1%D8%A7%D8%AA%D8%B4-scratch-r1619/" rel="">برمج خوارزميتك الأولى عبر سكراتش Scratch</a>
	</li>
	<li>
		دليلك الشامل إلى:  <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/" rel="">برمجة التطبيقات</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1956</guid><pubDate>Fri, 14 Apr 2023 15:06:00 +0000</pubDate></item><item><title>&#x627;&#x633;&#x62A;&#x631;&#x627;&#x62A;&#x64A;&#x62C;&#x64A;&#x627;&#x62A; &#x627;&#x62E;&#x62A;&#x628;&#x627;&#x631;&#x627;&#x62A; &#x645;&#x634;&#x627;&#x631;&#x64A;&#x639; &#x627;&#x644;&#x648;&#x64A;&#x628; &#x644;&#x644;&#x62A;&#x648;&#x627;&#x641;&#x642; &#x645;&#x639; &#x627;&#x644;&#x645;&#x62A;&#x635;&#x641;&#x62D;&#x627;&#x62A;</title><link>https://academy.hsoub.com/programming/general/%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%D9%8A%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%84%D9%84%D8%AA%D9%88%D8%A7%D9%81%D9%82-%D9%85%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1954/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_04/-------.png.2b3f429fcda48652608e228e55e26b32.png" /></p>
<p>
	سننتقل في هذا المقال إلى إجراء اختبارات التوافق مع المتصفحات Cross Browser Testing والنظر في تحديد الجمهور المستهدف مثل المتصفحات والأجهزة والمجالات الأخرى التي يجب التأكد من اختبارها واستراتيجيات اختبار Lo-fi مثل الحصول على مجموعة من الأجهزة وبعض الآلات الافتراضية وإجراء الاختبارات المخصَّصة Ad-hoc عند الحاجة، واستراتيجيات التقنيات المتقدمة مثل الاختبارات الآلية واستخدام تطبيقات الاختبار المخصَّصة، والاختبار مع مجموعات المستخدِمين.
</p>

<ul>
	<li>
		<strong>المتطلبات الأساسية</strong>: يجب أن تتعلم أساسيات لغات <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> و<a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> و<a href="https://wiki.hsoub.com/JavaScript" rel="external">جافاسكربت JavaScript</a>، وأن يكون لديك فكرة عن <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%84%D9%84%D8%AA%D9%88%D8%A7%D9%81%D9%82-%D9%85%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1953/" rel="">المبادئ عالية المستوى لاختبار التوافق مع المتصفحات</a>.
	</li>
	<li>
		<strong>الهدف</strong>: اكتساب فهم للمفاهيم عالية المستوى المتضمّنة في اختبار مشاريع الويب للتوافق مع المتصفحات.
	</li>
</ul>

<h2>
	هل يجب اختبار كل شيء؟
</h2>

<p>
	يجب وضع قائمة بالمتصفحات التي تريد اختبارها عند إجراء اختبار التوافق مع المتصفحات، إذ لا توجد طريقة يمكنك من خلالها اختبار مجموعة المتصفحات والأجهزة التي يمكن أن يستخدِمها المستخدِمون لعرض موقعك، فهناك عدد كبير جدًا منها مع ظهور متصفحات وأجهزة أخرى جديدة طوال الوقت، لذا يجب عليك محاولة التأكد من أنّ موقعك يعمل على أهم المتصفحات والأجهزة المُستهدَفة، ثم أنشئ شيفرة دفاعية Defensive Code لمنح موقعك أكبر قدر من الدعم الذي يمكن توقعه.
</p>

<p>
	نعني هنا بالشيفرة الدفاعية محاولة بناء تراجعات ذكية بحيث إذا لم تعمل الميزة أو التنسيق في المتصفح، فسيكون الموقع قادرًا على الرجوع إلى إصدار أقدم ولكنه لا يزال يوفر <a href="https://academy.hsoub.com/design/user-experience/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%AC%D8%B1%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-user-experience-r149/" rel="">تجربة مستخدِم</a> مقبولة مع توفّر المعلومات الأساسية حتى إذا لم يكن يبدو جيدًا تمامًا.
</p>

<p>
	هدفنا هو بناء مخطط للمتصفحات/الأجهزة الذي يمكنك الرجوع إليه أثناء الاختبار، كما يمكنك جعل هذا المخطط بسيطًا أو معقدًا كما يحلو لك، إذ تتمثل الطريقة الشائعة لذلك في إنشاء درجات متعددة من مستوى الدعم مثلًا كما يلي:
</p>

<ol>
	<li>
		الدرجة A: المتصفحات المشهورة والحديثة والمعروفة بقدرتها والتي يجب أن تختبرها بدقة وتقدّم لها الدعم الكامل.
	</li>
	<li>
		الدرجة B: المتصفحات الأقدم ذات الإمكانات الأقل التي يجب اختبارها وتقديم تجربة أساسية تتيح الوصول الكامل إلى المعلومات والخدمات الأساسية.
	</li>
	<li>
		الدرجة C المتصفحات النادرة وغير المعروفة التي يمكنك ألّا تختبرها، إذ يجب أن يعمل موقعك بالكامل على الأقل مع الاحتياطات التي توفرها الشيفرة الدفاعية.
	</li>
</ol>

<p>
	سننشئ مخطط دعم بهذا الشكل في الأقسام التالية.
</p>

<p>
	<strong>ملاحظة</strong>: جعل ياهو Yahoo هذا الأسلوب شائعًا في البداية من خلال استخدام أسلوب دعم المتصفح المُصنَّف Graded Browser Support.
</p>

<h3>
	التخمينات المتعلمة
</h3>

<p>
	يمكنك تسميتها بالافتراضات، فهي لا تُعَدّ نهجًا علميًا دقيقًا، ولكن ستكون لديك بصفتك شخصًا لديه خبرة في مجال الويب فكرةً جيدةً عن بعض المتصفحات التي يجب عليك اختبارها على الأقل، ويمكن أن يشكّل ذلك أساسًا جيدًا لمخطط الدعم.
</p>

<p>
	إذا كنت من سكان أوروبا الغربية أو أمريكا الشمالية مثلًا، فستعرف أن الكثير من الأشخاص يستخدِمون الحواسيب المكتبية أو المحمولة التي تعمل باستخدام نظام ويندوز وماك Mac بحيث تكون المتصفحات الرئيسية هي كروم Chrome وفايرفوكس Firefox وسفاري Safari و IE و Edge، وتريد مثلًا اختبار أحدث إصدارات المتصفحات الثلاثة الأولى فقط، حيث تتلقى هذه المتصفحات تحديثات منتظمة، ويمكن أن ترغب في اختبار إصدارَي Edge و IE الأخيرين، وبالتالي يجب أن تنتقل هذه المتصفحات إلى مستوى الدرجة A.
</p>

<p>
	يستخدِم الكثير من الأشخاص نظامَي iOS وأندرويد Android، لذا لا بد أنك ترغب في اختبار أحدث إصدارات iOS Safari، وآخر إصدارات متصفح Android القديم، والمتصفحين Chrome و Firefox لنظامَي التشغيل iOS و Android، كما يجب عليك اختبارها بطريقة مثالية على كل من الهاتف والجهاز اللوحي للتأكد من أن التصميمات المتجاوبة مع الشاشات تعمل بنجاح.
</p>

<p>
	يمكن أن يكون عددٌ من الأشخاص يستخدِمون المتصفح IE 9 الذي يُعَدّ قديمًا وخارج نطاق الدعم والتطوير من مايكروسوفت ويمتلك إمكانات أقل، لذلك سنضعه في الدرجة B.
</p>

<p>
	يعطينا ذلك مخطط الدعم التالي حتى الآن:
</p>

<ol>
	<li>
		الدرجة A: تتضمن Chrome و Firefox لنظامَي التشغيل Windows و Mac، و Safari لنظام التشغيل Mac، وEdge لنظام التشغيل ويندوز، و iOS Safari لأجهزة iPhone و iPad، ومتصفح Android القديم (الإصداران الأخيران) على الهاتف أو الجهاز اللوحي، و Chrome و Firefox لنظام Android (الإصداران الأخيران) على الهاتف اللوحي.
	</li>
	<li>
		الدرجة B: تتضمن IE لنظام التشغيل ويندوز و Opera Mini.
	</li>
	<li>
		الدرجة <span class="ipsEmoji">?</span> غير متوفر.
	</li>
</ol>

<p>
	إذا كنت تعيش في مكان آخر أو تعمل على موقع يخدّم مكانًا آخر مثل بلدان أو مناطق معينة، فيُحتمَل أن يكون لديك متصفحات مختلفة لاختبارها.
</p>

<h3>
	إحصائيات دعم المتصفح
</h3>

<p>
	أحد الإجراءات المفيدة التي يمكنك استخدامها لاختبار المتصفحات هو إحصائيات <a href="https://academy.hsoub.com/programming/html/html5/%D8%A7%D9%83%D8%AA%D8%B4%D8%A7%D9%81-%D8%AF%D8%B9%D9%85-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%84%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-html5-r340/" rel="">دعم المتصفح</a>، وهناك عدد من المواقع التي تقدم مثل هذه الإحصائيات مثل: <a href="https://gs.statcounter.com/" rel="external nofollow">Statcounter</a>.
</p>

<h3>
	استخدام التحليلات
</h3>

<p>
	يأتي مصدر البيانات الأدق من تطبيقات التحليلات مثل <a href="https://academy.hsoub.com/marketing/performance-marketing/analytics/%D9%83%D9%8A%D9%81-%D9%8A%D8%B9%D9%85%D9%84-google-analytics-r6/" rel="">Google Analytics</a> الذي يمنحك إحصائيات دقيقة حول المتصفحات التي يستخدِمها الأشخاص لتصفح موقعك، ويعتمد ذلك على أن يكون لديك موقع مسبقًا لاستخدام هذا التطبيق عليه، لذلك لا يُعَدّ جيدًا للمواقع الجديدة كليًا.
</p>

<p>
	لكن يمكن أن يكون سجل التحليلات مفيدًا في العثور على إحصائيات الدعم للتأثير على إصدار جديد من موقع الشركة أو الميزات الجديدة التي تضيفها إلى موقع قائم، ويُعَدّ ذلك -إذا توفّر- أدق بكثير من إحصائيات المتصفح العامة التي ذكرناها سابقًا.
</p>

<p>
	كما يمكنك التفكير في استخدام منصات التحليلات مفتوحة المصدر التي تركز على الخصوصية مثل <a href="https://www.openwebanalytics.com/" rel="external nofollow">Open Web Analytics</a> و <a href="https://matomo.org/" rel="external nofollow">Matomo</a> التي تتوقع منك استضافة منصة التحليلات بنفسك.
</p>

<h4>
	إعداد Google Analytics
</h4>

<p>
	يمكنك إعداد <a href="https://academy.hsoub.com/tags/%D9%85%D8%AF%D8%AE%D9%84%20%D8%A5%D9%84%D9%89%20google%20analytics/" rel="">Google Analytics</a> باتباع الخطوات التالية:
</p>

<ol>
	<li>
		ستحتاج أولًا إلى حساب جوجل لتسجيل الدخول إلى Google Analytics.
	</li>
	<li>
		اختر خيار Google Analytics للويب وانقر على زر التسجيل Sign Up.
	</li>
	<li>
		أدخِل تفاصيل موقعك أو تطبيقك في صفحة التسجيل، حيث يكون الإعداد بسيطًا، ولكن أهم حقل هو <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%B9%D9%86%D9%88%D8%A7%D9%86-url-%D9%88%D8%A3%D9%86%D9%88%D8%A7%D8%B9%D9%87-r1435/" rel="">عنوان URL</a> لموقع الويب الذي يجب أن يكون عنوان URL الجذر لموقعك أو تطبيقك.
	</li>
	<li>
		اضغط بعد ذلك على زر الحصول على معرّف التتبّع Get Tracking ID ثم اقبل شروط الخدمة التي ستظهر.
	</li>
	<li>
		توفِّر لك الصفحة التالية بعض مقتطفات الشيفرة البرمجية وإرشادات أخرى، فذا كان لديك موقع ويب أساسي، فما عليك فعله هو نسخ كتلة شيفرة تتبع موقع الويب Website Tracking ولصقها في جميع الصفحات التي تريد تتبعها باستخدام Google Analytics على موقعك، كما يمكنك وضع مقتطفات الشيفرة البرمجية بعد <a href="https://wiki.hsoub.com/HTML/body" rel="external">وسم الإغلاق &lt;‎/body&gt;</a> أو في مكان آخر مناسب لا يتداخل مع شيفرة تطبيقك.
	</li>
	<li>
		حمّل التغييرات على خادم التطوير أو في أيّ مكان آخر تحتاج فيه لشيفرتك البرمجية.
	</li>
</ol>

<p>
	يجب أن يكون موقعك جاهزًا الآن لبدء إصدار تقارير بالبيانات التحليلية.
</p>

<h4>
	دراسة البيانات التحليلية
</h4>

<p>
	يجب الآن أن تكون قادرًا على العودة إلى <a href="https://analytics.google.com/analytics/web" rel="external nofollow">صفحة تحليلات الويب Analytics Web</a> والاطلاع على البيانات التي جمعتها حول موقعك، ويجب بالطبع أن تنتظر قليلًا من الوقت لجمع بعض البيانات.
</p>

<p>
	يُفترَض أن ترى تبويب إعداد التقارير Reporting افتراضيًا كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="122739" href="https://academy.hsoub.com/uploads/monthly_2023_04/01_analytics-reporting.png.4150dbf654aacc9ce18c443c57673a89.png" rel=""><img alt="01_analytics-reporting.png" class="ipsImage ipsImage_thumbnailed" data-fileid="122739" data-unique="g54f6xohn" src="https://academy.hsoub.com/uploads/monthly_2023_04/01_analytics-reporting.png.4150dbf654aacc9ce18c443c57673a89.png"> </a>
</p>

<p>
	هناك قدر هائل من البيانات التي يمكنك الاطلاع عليها باستخدام Google Analytics مثل التقارير المخصَّصة ضمن فئات مختلفة وغير ذلك، كما يجب النظر إلى الخيارات المختلفة على الجانب الأيسر ومعرفة أنواع البيانات التي يمكنك اكتشافها، إذ يمكنك مثلًا معرفة المتصفحات وأنظمة التشغيل التي يستخدمها المستخدمون من خلال تحديد خيار القائمة Audience ثم Technology ثم Browser &amp; OS من القائمة اليسرى.
</p>

<p>
	<strong>ملاحظة</strong>: يجب أن تكون حذرًا عند استخدام Google Analytics إذا كان لديك شيء مثل النتيجة "لا يوجد لدينا مستخدِمون للمتصفح Firefox Mobile" التي يمكن أن تقودك إلى عدم دعم Firefox mobile، ولكن لن يكون لديك أيٌّ من مستخدِمي المتصفح Firefox Mobile إذا كان موقعك معطَّلًا على متصفح Firefox mobile بالأصل.
</p>

<p>
	هناك أمور أخرى يجب عليك تضمينها، إذ يجب بالتأكيد تضمين <a href="https://academy.hsoub.com/programming/html/%D8%B3%D9%87%D9%88%D9%84%D8%A9-%D9%88%D8%B5%D9%88%D9%84-%D8%AC%D9%85%D9%8A%D8%B9-%D8%A7%D9%84%D8%B2%D9%88%D8%A7%D8%B1-%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1323/" rel="">سهولة الوصول Accessibility</a> على أساس شرط اختبار من الدرجة A، وسنغطي بالضبط ما يجب عليك اختباره في مقال معالجة مشاكل الشمولية الشائعة للتوافق مع المتصفحات لاحقًا.
</p>

<p>
	إذا أردت إنشاء شبكة داخلية Intranet خاصة بالشركة لتوصيل أرقام المبيعات للمديرين مع تزويد جميع المديرين بهواتف ويندوز مثلًا، فيمكن أن ترغب في إعطاء الأولوية لدعم المتصفح IE على الهواتف المحمولة.
</p>

<h3>
	مخطط الدعم النهائي
</h3>

<p>
	سيكون مخطط الدعم النهائي بالصورة التالية:
</p>

<ol>
	<li>
		الدرجة A: تتضمن Chrome و Firefox لنظامَي التشغيل Windows و Mac، و Safari لنظام التشغيل Mac و Edge لنظام التشغيل Windows (الإصداران الأخيران) و iOS Safari لأجهزة iPhone و iPad ومتصفح Android القديم (الإصداران الأخيران) على الهاتف والجهاز اللوحي و Chrome و Firefox لنظام Android (الإصداران الأخيران) على الهاتف اللوحي، مع النجاح في اختبارات الشمولية الشائعة.
	</li>
	<li>
		الدرجة B: تتضمن IE 8 و9 لنظام التشغيل Windows و Opera Mini.
	</li>
	<li>
		الدرجة <span class="ipsEmoji">?</span> تتضمن Opera والمتصفحات الحديثة المتخصصة الأخرى.
	</li>
</ol>

<h2>
	ماذا يجب أن نختبر؟
</h2>

<p>
	إذا كان لديك إضافة جديدة إلى قاعدة شيفرتك البرمجية والتي يجب اختبارها، فيجب كتابة قائمة بمتطلبات الاختبار التي يجب اجتيازها قبل أن تبدأ الاختبار حتى تُقبَل، ويمكن أن تكون هذه المتطلبات مرئيةً أو وظيفيةً، إذ يجتمع هذان النوعان لإنشاء ميزة موقع ويب <a href="https://academy.hsoub.com/design/user-experience/%D9%82%D8%A7%D8%A8%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87%D8%A7-%D9%81%D9%8A-%D8%AA%D8%AC%D8%B1%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-r728/" rel="">قابلة للاستخدام</a>.
</p>

<p>
	لنفترض المثال التالي (اطلع على <a href="https://github.com/mdn/learning-area/blob/main/tools-testing/cross-browser-testing/strategies/hidden-info-panel.html" rel="external nofollow">الشيفرة البرمجية</a>)<span>:</span>
</p>

<p style="text-align: center;">
	<img alt="02_sliding-box-demo.png" class="ipsImage ipsImage_thumbnailed" data-fileid="122741" data-ratio="65.00" data-unique="jccbx4d4q" width="700" src="https://academy.hsoub.com/uploads/monthly_2023_04/02_sliding-box-demo.png.fd3a5a62c240e6c96b976b7bbfbc432b.png">
</p>

<p>
	يمكن كتابة معايير الاختبار لهذه الميزة على النحو التالي:
</p>

<ul>
	<li>
		الدرجة A و B:
		<ul>
			<li>
				يجب أن يكون الزر قابلًا للتنشيط باستخدام آلية التحكم الأساسية للمستخدِم، كما يجب أن يشمل ذلك مستخدِمي الفأرة ولوحة المفاتيح وشاشات اللمس.
			</li>
			<li>
				يجب أن يؤدي تبديل الزر إلى ظهور أو إخفاء مربع المعلومات.
			</li>
			<li>
				يجب أن يكون النص مقروءًا.
			</li>
			<li>
				يجب أن يتمكن المستخدِمون المعاقون بصريًا الذين يستخدِمون قارئات الشاشة من الوصول إلى النص.
			</li>
		</ul>
	</li>
	<li>
		الدرجة A:
		<ul>
			<li>
				يجب أن يتحرك مربع المعلومات بسلاسة عندما يظهر أو يختفي.
			</li>
			<li>
				يجب أن يظهر التدرج اللوني وظل النص لتحسين مظهر المربع.
			</li>
		</ul>
	</li>
</ul>

<p>
	لاحظ في هذا المثال أنّ النص لن يعمل في المتصفح IE8، ويُعَدّ ذلك مشكلةً وفقًا لمخطط الدعم ويجب إصلاحها باستخدام مكتبة اكتشاف الميزات مثلًا لتطبيق الوظيفة بطريقة مختلفة إذا لم يدعم المتصفح انتقالات <a href="https://academy.hsoub.com/programming/css/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-css-r70/" rel="">CSS</a>، كما يمكن ألّا يكون الزر قابلًا للاستخدام لمستخدِمي لوحة المفاتيح فقط، ويجب معالجة ذلك من خلال استخدام شيفرة جافاسكربت لتطبيق التحكم بلوحة المفاتيح لتبديل الزر أو باستخدام طريقة أخرى.
</p>

<p>
	تُعَدّ هذه المعايير للاختبار مفيدةً للأسباب التالية:
</p>

<ul>
	<li>
		تعطي مجموعةً من الخطوات التي يجب اتباعها عند إجراء الاختبارات.
	</li>
	<li>
		يمكن تحويلها بسهولة إلى مجموعات من التعليمات لمجموعات المستخدِمين لاتباعها عند إجراء الاختبارات مثل "حاول تنشيط الزر باستخدام الفأرة ثم باستخدام لوحة المفاتيح …".
	</li>
	<li>
		يمكنها توفير أساس لكتابة الاختبارات الآلية، ويمكن كتابة مثل هذه الاختبارات بسهولة إذا عرفتَ بالضبط ما تريد اختباره وما هي شروط النجاح.
	</li>
</ul>

<h2>
	إنشاء مختبر لإجراء الاختبارات
</h2>

<p>
	أحد الخيارات لإجراء اختبارات المتصفحات هو إجراء الاختبار بنفسك من خلال استخدام مجموعة من الأجهزة الحقيقية الفعلية والبيئات المقلِّدة باستخدام إما مقلِّد أو محاكٍ Emulator أو آلة افتراضية.
</p>

<h3>
	الأجهزة الحقيقية
</h3>

<p>
	يُفضَّل أن يكون لديك جهاز حقيقي يشغّل المتصفح الذي تريد اختباره، وهذا يوفر أكبر قدر من الدقة من حيث السلوك وتجربة المستخدِم الإجمالية، كما يمكن استخدام جهاز منخفض المستوى ليكون مختبرًا مقبولًا كما يلي:
</p>

<ul>
	<li>
		جهاز Mac مثبَّتٌ عليه المتصفحات التي تريد اختبارها، ويمكن أن يشمل ذلك المتصفحات Firefox و Chrome و Opera و Safari.
	</li>
	<li>
		حاسوب يعمل بنظام ويندوز مثبَّت عليه المتصفحات التي يجب اختبارها، ويمكن أن يشمل ذلك Edge أو IE و Chrome و Firefox و Opera.
	</li>
	<li>
		هاتف وجهاز لوحي يعملان بنظام Android عالي المواصفات مع تثبيت المتصفح الذي تريد اختباره، ويمكن أن يشمل ذلك المتصفحات Chrome و Firefox و Opera Mini لنظام Android، بالإضافة إلى متصفح Android الأصلي القديم.
	</li>
	<li>
		هاتف وجهاز لوحي يعمل بنظام iOS عالي المواصفات مع تثبيت المتصفحات التي تريد اختبارها، ويمكن أن يشمل ذلك المتصفحات iOS Safari و Chrome و Firefox و Opera Mini لنظام التشغيل iOS.
	</li>
</ul>

<p>
	الخيارات التالية هي خيارات جيدة أيضًا إذا كان بإمكانك الحصول عليها:
</p>

<ul>
	<li>
		حاسوب يعمل بنظام لينكس Linux في حالة احتياجك لاختبار <a href="https://academy.hsoub.com/programming/javascript/%D8%A7%D9%84%D8%B2%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r1245/" rel="">الزلات البرمجية</a> الخاصة بإصدارات لينكس للمتصفحات، إذ يستخدِم مستخدِمو نظام لينكس المتصفحات Firefox و Opera و Chrome، فإذا كان لديك جهاز واحد فقط متاح، فيمكنك التفكير في إنشاء جهاز ذي إقلاع مزدوج Dual Boot يعمل بنظام التشغيل <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">لينكس Linux</a> وويندوز Windows على قطاعات منفصلة، حيث يسهّل مُثبِّت نظام أبونتو Ubuntu هذا الإعداد.
	</li>
	<li>
		هواتف محمولة منخفضة المواصفات، بحيث يمكنك اختبار أداء الميزات مثل الحركة على معالجات أقل قوة.
	</li>
</ul>

<p>
	كما يمكن أن يكون جهاز عملك الرئيسي مكانًا لتثبيت أدوات أخرى لأغراض محددة مثل أدوات تدقيق سهولة الوصول وقارئات الشاشة والمحاكيات أو الآلات الافتراضية Virtual Machines.
</p>

<p>
	تمتلك بعض الشركات الكبيرة مختبرات للأجهزة التي تحتوي على مجموعة كبيرة جدًا من الأجهزة المختلفة، مما يمكّن المطورين من تعقب الأخطاء في مجموعات محددة جدًا من المتصفحات والأجهزة. الشركات الصغيرة والأفراد غير قادرين على تحمّل تكلفة مثل هذا المختبر المعقد، لذلك يميلون إلى التعامل مع المختبرات الصغيرة والمحاكيات والآلات الافتراضية وتطبيقات الاختبار التجارية.
</p>

<p>
	<strong>ملاحظة</strong>: هناك بعض الجهود المبذولة لإنشاء مختبرات عامة لاختبار سهولة وصول الأجهزة، إذ يجب وضعها في الحسبان، فهناك عدد من الأدوات المفيدة التي يمكنك تثبيتها على جهازك لتسهيل اختبار سهولة الوصول، ولكننا سنغطيها لاحقًا.
</p>

<h3>
	المحاكيات Emulators
</h3>

<p>
	تُعَدّ المحاكيات أو المقلّدات برامجًا تُشغَّل ضمن حاسوبك وتقلّد جهازًا أو حالة جهاز معيّن من نوع ما، مما يسمح بإجراء بعض اختباراتك بصورة ملائمة أكثر من الاضطرار إلى العثور على مجموعة معينة من العتاد أو البرمجيات لاختبارها.
</p>

<p>
	يمكن أن يكون المحاكي بسيطًا مثل اختبار حالة الجهاز، فإذا أردت مثلًا إجراء بعض الاختبارات السريعة وغير المتوقَّعة لاستعلامات وسائط Media Queries العرض أو الارتفاع للتصميم المتجاوب مع الشاشات، فيمكنك استخدام وضع <a href="https://academy.hsoub.com/design/user-experience/%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%A7%D9%84%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8-responsive-design-r751/" rel="">التصميم المتجاوب Responsive Design Mode</a> في فايرفوكس Firefox، كما يحتوي المتصفح Safari على وضع مشابه يمكن تفعيله من خلال الانتقال إلى قائمة Safari ثم التفضيلات Preferences وتحديد قائمة إظهار التطوير Show Develop، ثم خيار التطوير Develop ثم إدخال وضع التصميم المتجاوب Enter Responsive Design Mode، كما يحتوي Chrome على شيء مشابه أيضًا هو وضع الجهاز Device mode.
</p>

<p>
	يجب عليك في كثير من الأحيان تثبيت محاكٍ، حيث تكون الأجهزة/المتصفحات الأكثر شيوعًا التي تريد اختبارها على هذه المحاكيات هي كما يلي:
</p>

<ul>
	<li>
		تُعَدّ بيئة التطوير Android Studio IDE الرسمية لتطوير تطبيقات Android ثقيلة الوزن بعض الشيء لمجرد اختبار مواقع الويب على Google Chrome أو متصفح Android القديم، ولكنها تأتي مع محاكٍ قوي، فإذا أردت شيئًا خفيف الوزن قليلًا، فإنّ المحاكي <span ipsnoautolink="true">Andy</span> هو خيار مقبول يعمل على كل من نظامَي Windows و Mac.
	</li>
	<li>
		توفِّر Apple تطبيقًا يسمى <a href="https://help.apple.com/simulator/mac/current/#/" rel="external nofollow">Simulator</a> يعمل على بيئة تطوير <a href="https://developer.apple.com/xcode/" rel="external nofollow">XCode</a>، ويحاكي أجهزة iPad و iPhone و Apple Watch و Apple TV، ويتضمن ذلك متصفح iOS Safari الأصلي، ولكنه للأسف يعمل فقط على أجهزة Mac.
	</li>
</ul>

<p>
	يمكنك في أغلب الأحيان العثور على محاكيات Simulators لبيئات الهواتف المحمولة الأخرى مثل:
</p>

<ul>
	<li>
		يمكنك محاكاة المتصفح Opera Mini بمفرده إذا أردت اختباره.
	</li>
	<li>
		تتوفر محاكيات لأنظمة تشغيل Windows Mobile مثل المحاكي Windows Phone لنظام Windows Phone 8 والمحاكي Microsoft Emulator لنظام التشغيل Windows 10 Mobile، حيث تعمل هذه المحاكيات على نظام ويندوز فقط.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: تتطلب العديد من المحاكيات استخدام آلة افتراضية، حيث تُعطَى الإرشادات لذلك في أغلب الأحيان و/أو يُدمَج استخدام الآلة الافتراضية في مثبِّت المحاكي.
</p>

<h3>
	الآلات الافتراضية
</h3>

<p>
	تُعَدّ <a href="https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-kvm-%D9%88%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A2%D9%84%D8%A7%D8%AA-%D8%A7%D9%81%D8%AA%D8%B1%D8%A7%D8%B6%D9%8A%D8%A9-virtual-machines-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D9%87-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-r286/" rel="">الآلات الافتراضية</a> تطبيقات تعمل على حاسوبك وتسمح بتشغيل عمليات المحاكاة لأنظمة التشغيل بأكملها، حيث يكون لكل نظام قسمه الخاص من القرص الصلب الافتراضي، إذ يُمثَّل في أغلب الأحيان بملف واحد كبير موجود على القرص الصلب للجهاز المضيف، كما يتوفر عدد من تطبيقات الآلات الافتراضية الشائعة مثل Parallels و VMWare و Virtual Box المجاني.
</p>

<p>
	<strong>ملاحظة</strong>: يجب أن يكون لديك مساحة كبيرة على القرص الصلب لتشغيل عمليات محاكاة الآلة الافتراضية، إذ يمكن أن يستهلك كل نظام تشغيل تريد محاكاته قدرًا كبيرًا من الذاكرة، كما يمكنك اختيار مساحة القرص الصلب التي تريدها لكل تثبيت، حيث يمكنك الحصول على 10 جيجابايتات، ولكن توصي بعض المصادر بمساحة تصل إلى 50 جيجابايت أو أكثر ليعمل نظام التشغيل على نحو موثوق، كما توفِّر معظم تطبيقات الآلات الافتراضية مجموعة من الخيارات الجيدة مثل إنشاء قرص صلب مخصَّص ديناميكيًا يكبر ويصغر حسب الحاجة.
</p>

<p>
	تحتاج ما يلي لاستخدام برنامج Virtual Box:
</p>

<ol>
	<li>
		احصل على قرص أو صورة مثل ملف ISO لتثبيت لنظام التشغيل الذي تريد محاكاته، فإن Virtual Box غير قادر على توفير ذلك، لأنها مثل أنظمة تشغيل ويندوز والتي تُعَدّ منتجات تجارية لا يمكن توزيعها مجانًا.
	</li>
	<li>
		<a href="https://www.virtualbox.org/wiki/Downloads" rel="external nofollow">نزِّل برنامج التثبيت المناسب</a> لنظام التشغيل لديك ثم ثبّته.
	</li>
	<li>
		افتح التطبيق وسيظهر ما يلي:
	</li>
</ol>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="122737" href="https://academy.hsoub.com/uploads/monthly_2023_04/03_virtualbox.png.516c825950280c8e6a6659c6d5d285de.png" rel=""><img alt="03_virtualbox.png" class="ipsImage ipsImage_thumbnailed" data-fileid="122737" data-unique="9u9qri1hy" src="https://academy.hsoub.com/uploads/monthly_2023_04/03_virtualbox.png.516c825950280c8e6a6659c6d5d285de.png"> </a>
</p>

<ol start="4">
	<li>
		<p>
			اضغط على زر "جديد New" أعلى الزاوية اليسرى لإنشاء آلة افتراضية جديدة.
		</p>
	</li>
	<li>
		<p>
			اتبع التعليمات واملأ مربعات الحوار التالية بطريقة مناسبة كما يلي:
		</p>

		<ul>
			<li>
				أدخِل اسمًا للآلة الافتراضية الجديدة.
			</li>
			<li>
				اختر نظام التشغيل والإصدار الذي تريد تثبيته.
			</li>
			<li>
				حدّد مقدار الذاكرة RAM التي يجب تخصيصها، إذ نوصي باستخدام 2048 ميجابايت أو 2 جيجابايت.
			</li>
			<li>
				أنشئ قرصًا صلبًا افتراضيًا، واختر الخيارات الافتراضية عبر مربعات الحوار الثلاثة التي تحتوي على "إنشاء قرص صلب افتراضي الآن Create a virtual hard disk now" و VDI -أي صورة قرص افتراضي Virtual Disk Image- و"التخصيص الديناميكي Dynamically Allocated".
			</li>
			<li>
				اختر موقع وحجم ملف القرص الصلب الافتراضي، واختر اسمًا وموقعًا معقولًا للاحتفاظ به، وحدِّد الحجم إلى حوالي 50 جيجابايت أو بالمقدار الذي ترغب فيه.
			</li>
		</ul>
	</li>
</ol>

<p>
	يجب الآن أن يظهر المربع الافتراضي الجديد في القائمة اليسرى لنافذة واجهة مستخدِم Virtual Box الرئيسية، ويمكنك النقر نقرًا مزدوجًا لفتحه وسيبدأ تشغيل الآلة الافتراضية، ولكن لن يُثبَّت نظام التشغيل OS عليه بعد، إذ يجب توجيه مربع الحوار إلى صورة أو قرص التثبيت، وسيُشغَّل على خطوات لتثبيت نظام التشغيل تمامًا كما هو الحال على أيّ جهاز حقيقي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="122736" href="https://academy.hsoub.com/uploads/monthly_2023_04/04_virtualbox-installer.png.5026ad3b3f08a3e92dfd6d1517ef5d80.png" rel=""><img alt="04_virtualbox-installer.png" class="ipsImage ipsImage_thumbnailed" data-fileid="122736" data-unique="uwugvv0to" src="https://academy.hsoub.com/uploads/monthly_2023_04/04_virtualbox-installer.png.5026ad3b3f08a3e92dfd6d1517ef5d80.png"> </a>
</p>

<p>
	<strong>تحذير</strong>: يجب التأكد من توفر صورة نظام التشغيل التي تريد تثبيتها على الآلة الافتراضية وتثبيتها مباشرةً، فإذا ألغيت العملية في هذه المرحلة، فيمكن أن يؤدي ذلك إلى جعل الآلة الافتراضية غير قابلة للاستخدام، وبالتالي يجب حذفها وإنشاؤها مرةً أخرى.
</p>

<p>
	يجب بعد اكتمال العملية أن يكون لديك آلة افتراضية تشغّل <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام تشغيل</a> ضمن نافذة على الحاسوب المضيف.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="122735" href="https://academy.hsoub.com/uploads/monthly_2023_04/05_virtualbox-running.png.56624d28a1b5552d9a97b97ba9bd8bff.png" rel=""><img alt="05_virtualbox-running.png" class="ipsImage ipsImage_thumbnailed" data-fileid="122735" data-unique="0fba57kf5" src="https://academy.hsoub.com/uploads/monthly_2023_04/05_virtualbox-running.png.56624d28a1b5552d9a97b97ba9bd8bff.png"> </a>
</p>

<p>
	يمكنك التعامل مع تثبيت نظام التشغيل الافتراضي تمامًا كما تفعل مع أيّ تثبيت حقيقي، إذ يمكنك مثلًا تثبيت برنامج مكافحة الفيروسات لحمايته من الفيروسات بالإضافة إلى تثبيت المتصفحات التي تريد اختبارها.
</p>

<p>
	يُعَدّ امتلاك آلات افتراضية متعددة مفيدًا جدًا خاصة بالنسبة لاختبار Windows IE/Edge، إذ لا يمكنك على نظام ويندوز تثبيت إصدارات متعددة من المتصفح الافتراضي مع بعضها بعضًا، لذلك يمكن أن ترغب في إنشاء مكتبة من الآلات الافتراضية للتعامل مع اختبارات مختلفة حسب الحاجة مثل:
</p>

<ul>
	<li>
		Windows 10 مع Edge 14.
	</li>
	<li>
		Windows 10 مع Edge 13.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: هناك شيء جيد آخر تتمتع به الآلات الافتراضية، وهو أن صور القرص الصلب الافتراضي مستقلة بذاتها إلى حد ما، فإذا كنت تعمل ضمن فريق، فيمكنك إنشاء صورة قرص افتراضي واحدة ثم نسخها وتمريرها، لذا تأكد فقط من أنه لديك التراخيص المطلوبة لتشغيل جميع نسخ ويندوز أو أيّ شيء آخر تريد تشغيله إذا كان منتجًا مرخصًا.
</p>

<h3>
	الاختبارات الآلية والتطبيقات التجارية
</h3>

<p>
	يمكنك التخلص من معاناة اختبار المتصفحات باستخدام نظام اختبار آلي، إذ يتطلب إعداد نظام اختبار آلي مثل التطبيق Selenium بعض الإعداد، ولكنه يستحق هذا العناء عند تشغيله، كما توجد أدوات تجارية متاحة مثل Sauce Labs و Browser Stack و LambdaTest المفيدة في هذا المجال دون الحاجة إلى القلق بشأن الإعداد إن أردت استثمار بعض المال في الاختبار، وهناك بديل آخر وهو استخدام أدوات الاختبار الآلية بدون شيفرة برمجية مثل <a href="https://endtest.io/" rel="external nofollow">Endtest</a>.
</p>

<h2>
	اختبار المستخدمين
</h2>

<p>
	سننهي هذا المقال بالحديث قليلًا عن <a href="https://academy.hsoub.com/design/user-experience/%D8%A3%D9%81%D8%B6%D9%84-%D8%AE%D9%85%D8%B3-%D8%B7%D8%B1%D9%82-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D9%84%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-r385/" rel="">اختبار المستخدِم User Testing</a> الذي يمكن أن يكون خيارًا جيدًا إذا كان لديك مجموعة مستخدِمين راغبين في اختبار وظائفك الجديدة، وضَع في الحسبان أنّ هذا الاختبار يمكن أن يكون بسيطًا أو معقدًا حسب رغبتك، إذ يمكن أن تكون مجموعة المستخدِمين مجموعةً من الأصدقاء أو الزملاء أو مجموعة من المتطوعين بدون أجر أو بأجر اعتمادًا على ما إذا كان لديك أية أموال تريد إنفاقها على الاختبار.
</p>

<p>
	سينظر المستخدموِن إلى الصفحة أو العرض الذي يحتوي على الوظيفة الجديدة الموجودة على خادم تطوير، لذا لا تضع الموقع النهائي أو تجعله حيًا مباشرًا حتى تنتهي من الاختبار، ويجب أن تجعلهم يتبعون بعض الخطوات ويعطون تقريرًا بالنتائج التي يحصلون عليها، ويُعَدّ تقديم مجموعة من الخطوات التي تسمى سكربتًا في بعض الأحيان أمرًا مفيدًا بحيث تحصل على نتائج أكثر وثوقية فيما يتعلق بما تحاول اختباره، كما يمكن تحويل معايير الاختبار المفصلة إلى خطوات يجب اتباعها مثل الخطوات التالية التي تصلح لمستخدِم يمكنه الرؤية:
</p>

<ul>
	<li>
		انقر على زر علامة الاستفهام باستخدام الفأرة على حاسوبك عدة مرات وحدّث نافذة المتصفح.
	</li>
	<li>
		حدّد زر علامة الاستفهام وفعّله باستخدام لوحة المفاتيح على حاسوبك عدة مرات.
	</li>
	<li>
		اضغط على زر علامة الاستفهام عدة مرات على جهازك الذي يعمل باللمس.
	</li>
	<li>
		يجب أن يؤدي تبديل الزر إلى ظهور أو إخفاء مربع المعلومات. هل يحصل ذلك في جميع الحالات الثلاث السابقة؟
	</li>
	<li>
		هل النص مقروء؟
	</li>
	<li>
		هل يتحرك مربع المعلومات بسلاسة عندما يظهر أو يختفي؟
	</li>
</ul>

<p>
	كما تُعَدّ الإجراءات التالية مفيدة عند إجراء الاختبارات:
</p>

<ul>
	<li>
		اضبط ملف تعريف منفصل للمتصفح مع تعطيل ملحقات هذا المتصفح، وأجرِ اختباراتك في هذا الملف التعريفي.
	</li>
	<li>
		استخدِم وظيفة وضع التصفح الخاص أو المتخفي للمتصفح مثل التصفح الخاص Private Browsing في فايرفوكس Firefox ووضع التصفح المتخفي Incognito Mode في كروم Chrome عند إجراء الاختبارات حتى لا تُحفَظ أشياء مثل ملفات الارتباط Cookies والملفات المؤقتة.
	</li>
</ul>

<p>
	صُمِّمت هذه الخطوات للتأكد من أنّ المتصفح الذي تختبره "نقي" قدر الإمكان، أي أنه لا يوجد شيء مُثبَّت يمكن أن يؤثر على نتائج الاختبارات.
</p>

<p>
	<strong>ملاحظة</strong>: يوجد خيار آخر مفيد من استراتيجية اختبار Lo-fi إذا كان لديك الأجهزة المتاحة، وهو اختبار موقع الويب على الهواتف أو الأجهزة الأخرى منخفضة الإمكانات، فهناك فرصة أكبر لتباطؤ الموقع نظرًا لأن المواقع تكبر وتزيد فيها التأثيرات مع الوقت، لذلك عليك أن تبدأ في منح الأداء مزيدًا من الاهتمام. ستؤدي محاولة تشغيل وظائفك على جهاز منخفض الإمكانات إلى زيادة احتمالية أن تكون التجربة جيدةً على الأجهزة المتطورة.
</p>

<p>
	<strong>ملاحظة</strong>: توفِّر بعض بيئات التطوير من جانب الخادم آليات مفيدةً لنشر تغييرات الموقع لمجموعة محددة من المستخدِمين فقط، مما يوفر آلية مفيدة للحصول على ميزة تختبرها مجموعة من المستخدِمين دون الحاجة إلى استخدام خادم تطوير منفصل، ومن الأمثلة على ذلك الميزة <a href="https://github.com/django-waffle/django-waffle" rel="external nofollow">Django Waffle Flags</a>.
</p>

<h2>
	الخلاصة
</h2>

<p>
	يجب أن يكون لديك الآن فكرة جيدة عما يمكنك تطبيقه لتحديد جمهورك المستهدَف أو قائمة المتصفحات المستهدفة، ثم إجراء اختبار التوافق مع المتصفحات على تلك القائمة بفعالية، وسنوجِّه اهتمامنا في المقال التالي إلى مشاكل الشيفرة البرمجية الفعلية التي يكشف عنها الاختبار بدءًا من مشاكل HTML و CSS.
</p>

<p>
	ترجمة -وبتصرُّف- للمقال <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies" rel="external nofollow">Strategies for carrying out testing</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%84%D9%84%D8%AA%D9%88%D8%A7%D9%81%D9%82-%D9%85%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1953/" rel="">مدخل إلى اختبار مشاريع الويب للتوافق مع المتصفحات</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%85%D8%B7%D9%88%D8%B1%D9%8A-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D8%AF%D9%85%D8%AC%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1439/" rel="">أدوات مطوري الويب المدمجة في المتصفحات</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1954</guid><pubDate>Thu, 13 Apr 2023 15:07:00 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x627;&#x62E;&#x62A;&#x628;&#x627;&#x631; &#x645;&#x634;&#x627;&#x631;&#x64A;&#x639; &#x627;&#x644;&#x648;&#x64A;&#x628; &#x644;&#x644;&#x62A;&#x648;&#x627;&#x641;&#x642; &#x645;&#x639; &#x627;&#x644;&#x645;&#x62A;&#x635;&#x641;&#x62D;&#x627;&#x62A;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%84%D9%84%D8%AA%D9%88%D8%A7%D9%81%D9%82-%D9%85%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1953/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_04/-------.png.e6dadca3b24808dff6e404c365cb0ac8.png" /></p>
<p>
	سنركِّز في هذه السلسلة <a href="https://academy.hsoub.com/tags/%D8%AA%D8%B9%D9%84%D9%85%20%D8%AA%D8%B7%D9%88%D9%8A%D8%B1%20%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تعلم تطوير الويب</a> من المقالات على اختبار مشاريع الويب للتوافق مع المتصفحات Cross Browser Testing، حيث سنحدِّد الجمهور المستهدَف مثل معرفة المستخدِمين والمتصفحات والأجهزة التي يجب أخذها في الحسبان، وسنتعلّم كيفية إجراء الاختبار والمشاكل الرئيسية التي ستواجهها مع أنواع مختلفة من الشيفرات البرمجية وكيفية التخفيف من هذه المشاكل، كما سنتعرّف على الأدوات المفيدة لمساعدتك على اختبار المشاكل وإصلاحها وكيفية استخدام الاختبارات الآلية لتسريع عملية الاختبار.
</p>

<ul>
	<li>
		<strong>المتطلبات الأساسية</strong>: يجب أن تتعلم أساسيات لغات <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> و<a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> و<a href="https://wiki.hsoub.com/JavaScript" rel="external">جافاسكربت JavaScript</a> أولًا قبل محاولة استخدام الأدوات التي سنشرحها لاحقًا.
	</li>
</ul>

<p>
	تتألف هذه السلسلة من المقالات التالية:
</p>

<ul>
	<li>
		مدخل إلى اختبار مشاريع الويب للتوافق مع المتصفحات (المقال الحالي): سنقدم في هذا المقال نظرةً عامةً حول موضوع اختبار مشاريع الويب للتوافق مع المتصفحات، وسنجيب على أسئلة مثل "ما هو اختبار التوافق مع المتصفحات؟" و"ما هي أكثر أنواع المشاكل شيوعًا التي ستواجهها؟" و"ما هي الطرق الرئيسية لاختبار المشاكل وتحديدها وإصلاحها؟".
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%D9%8A%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%84%D9%84%D8%AA%D9%88%D8%A7%D9%81%D9%82-%D9%85%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r1954/" rel="">استراتيجيات اختبارات مشاريع الويب للتوافق مع المتصفحات</a>: سننتقل بعد ذلك إلى إجراء الاختبارات، وتحديد الجمهور المستهدَف مثل المتصفحات والأجهزة والمجالات الأخرى التي يجب التأكد من اختبارها، وتحديد استراتيجيات اختبار Lo-fi مثل الحصول على مجموعة من الأجهزة وبعض الآلات الافتراضية وإجراء اختبارات مخصصة Ad-hoc عند الحاجة، واستراتيجيات التقنيات المتقدمة مثل الاختبارات الآلية واستخدام تطبيقات الاختبار المخصَّصة، وإجراء الاختبارات مع مجموعات المستخدِمين.
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D9%83%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D9%84%D9%84%D8%AA%D9%88%D8%A7%D9%81%D9%82-%D9%85%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%81%D9%8A-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-html-%D9%88-css-r1955/" rel="">معالجة المشاكل الشائعة للتوافق مع المتصفحات في شيفرة HTML وCSS</a>: سننظر بعد ذلك على وجه التحديد في المشاكل الشائعة للتوافق مع المتصفحات التي ستواجهها في شيفرة <a href="https://academy.hsoub.com/programming/html/%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-html-r1702/" rel="">HTML</a> و<a href="https://academy.hsoub.com/programming/css/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-css-r70/" rel="">CSS</a>، بالإضافة إلى الأدوات التي يمكن استخدامها لمنع حدوث هذه المشاكل أو إصلاحها،كما يتضمن ذلك فحص أخطاء الشيفرة Linting Code والتعامل مع بادئات CSS واستخدام أدوات تطوير المتصفح لتتبّع المشاكل واستخدام تعويض دعم المتصفحات Polyfill لإضافة الدعم إليها ومعالجة مشاكل التصميم المتجاوب مع الشاشات وغير ذلك الكثير.
	</li>
	<li>
		معالجة المشاكل الشائعة للتوافق مع المتصفحات في <a href="https://academy.hsoub.com/programming/javascript/%D9%86%D9%85%D8%B7-%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r785/" rel="">شيفرة جافاسكربت</a>: سننظر بعد ذلك في مشاكل جافاسكربت الشائعة للتوافق مع المتصفحات وكيفية إصلاحها، ويتضمن ذلك معلومات حول استخدام أدوات تطوير المتصفح لتتبّع المشاكل وإصلاحها واستخدام تعويض دعم المتصفحات Polyfill والمكتبات لحل المشاكل والحصول على ميزات <a href="https://academy.hsoub.com/programming/javascript/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r1689/" rel="">جافاسكربت</a> الحديثة التي تعمل في المتصفحات القديمة وغير ذلك الكثير.
	</li>
	<li>
		معالجة مشاكل <a href="https://academy.hsoub.com/programming/html/%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%82-%D9%85%D9%86-%D8%B3%D9%87%D9%88%D9%84%D8%A9-%D8%A7%D9%84%D9%88%D8%B5%D9%88%D9%84-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1328/" rel="">سهولة الوصول Accessibility</a> الشائعة للتوافق مع المتصفحات: سننتقل بعد ذلك إلى سهولة الوصول Accessibility وتوفير معلومات حول مشاكلها الشائعة، وكيفية إجراء اختبار بسيط والاستفادة من أدوات التدقيق والاختبارات الآلية للعثور على مشاكل سهولة الوصول.
	</li>
	<li>
		كيفية اكتشاف دعم المتصفحات للميزات أثناء اختبار مشاريع الويب: يتضمن اكتشاف الميزات معرفة ما إذا كان المتصفح يدعم كتلةً معينةً من الشيفرة البرمجية، ويعتمد تشغيل شيفرة برمجية على كونها مدعومة أم لا، بحيث يمكن للمتصفح دائمًا توفير تجربة عمل ناجحة بدلًا من التعطل أو ظهور الأخطاء في بعض المتصفحات، إذ يوضح هذا المقال بالتفصيل كيفية كتابة اكتشاف المتصفحات للميزات البسيطة وكيفية استخدام مكتبة لتسريع التطبيق واستخدام الميزات الأصيلة Native لاكتشاف الميزات مثل الميزة <code>‎@supports</code>.
	</li>
	<li>
		مدخل إلى اختبارات مشاريع الويب الآلية للتوافق مع المتصفحات: يمكن أن يصبح إجراء الاختبارات يدويًا على العديد من المتصفحات والأجهزة عدة مرات في اليوم أمرًا مملًا ويستغرق وقتًا طويلًا، لذا يمكن معالجة ذلك بكفاءة من خلال استخدام الأدوات الآلية، إذ سنلقي نظرةً في هذا المقال على الأدوات المتاحة وكيفية استخدام مشغّلي المهام وأساسيات كيفية استخدام تطبيقات الاختبارات الآلية للمتصفحات التجارية مثل Sauce Labs و Browser Stack.
	</li>
	<li>
		إعداد بيئتك للاختبارات الآلية في مشاريع الويب للتوافق مع المتصفحات: سنعلِّمك في هذا المقال كيفية تثبيت بيئة الاختبار الآلية وإجراء اختباراتك الخاصة باستخدام بيئة Selenium/WebDriver ومكتبة الاختبارات مثل المكتبة selenium-webdriver الخاصة ببيئة <a href="https://academy.hsoub.com/programming/javascript/nodejs/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-nodejs-r1463/" rel="">Node</a>، كما سنتعرّف على كيفية دمج بيئة اختبارك المحلية مع التطبيقات التجارية.
	</li>
</ul>

<p>
	لنبدأ بمقالنا الأول ولنتعرف على مفهوم اختبار مشاريع الويب للتوافق مع المتصفحات Cross Browser Testing.
</p>

<h2>
	ما هو اختبار التوافق مع المتصفحات؟
</h2>

<p>
	يُستخدَم اختبار التوافق مع المتصفحات للتأكد من أنّ مواقع وتطبيقات الويب التي تنشئها تعمل بنجاح على عدد مقبول من متصفحات الويب، إذ تقع على عاتقك -بصفتك مطور ويب- مسؤولية التأكد من أنّ مشاريعك لا تعمل فقط، ولكنها تعمل مع جميع المستخدِمين بغض النظر عن المتصفح أو الجهاز أو الأدوات المساعدة الإضافية التي يستخدمونها، إذ عليك التفكير فيما يلي:
</p>

<ul>
	<li>
		متصفحات مختلفة غير المتصفح أو المتصفحَين اللذين تستخدِمهما بانتظام على أجهزتك بما في ذلك المتصفحات الأقدم قليلًا التي يُحتمَل أنه لا يزال بعض الأشخاص يستخدِمونها والتي لا تدعم أحدث ميزات CSS وجافاسكربت.
	</li>
	<li>
		أجهزة مختلفة ذات قدرات مختلفة من أحدث الحواسيب إلى الأجهزة اللوحية والهواتف الذكية وأجهزة التلفاز الذكية وصولًا إلى الأجهزة اللوحية الرخيصة وحتى الهواتف ذات الميزات القديمة التي يمكن أن تشغّل متصفحات ذات إمكانات محدودة.
	</li>
	<li>
		الأشخاص ذوو الاحتياجات الخاصة الذين يستخدِمون الويب بمساعدة التقنيات المساعدة مثل قارئات الشاشة أو الأشخاص الذين لا يستخدِمون الفأرة، إذ يستخدِم بعض الأشخاص لوحة المفاتيح فقط.
	</li>
</ul>

<p>
	تذكَّر دائمًا أنك لست أحد المستخدِمين، إذ لا يعني عمل موقعك بنجاح على جهاز MacBook Pro أو جهاز Galaxy Nexus المتطور أنه سيعمل مع جميع المستخدِمين، فهناك الكثير من الاختبارات التي يجب إجراؤها.
</p>

<p>
	إذا تحدّثنا عن <a href="https://academy.hsoub.com/design/general/50-%D8%AA%D8%B5%D9%85%D9%8A%D9%85%D9%8B%D8%A7-%D9%85%D9%85%D9%8A%D8%B2%D9%8B%D8%A7-%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A%D8%A9-%D9%86%D9%85%D9%88%D8%B0%D8%AC%D9%8A%D8%A9-%D9%8A%D8%AD%D8%AA%D8%B0%D9%89-%D8%A8%D9%87%D8%A7-r488/" rel="">المواقع الإلكترونية</a> التي تعمل على متصفحات مختلفة، فهذا يعني أنه يجب أن توفر تجربة مستخدِم مقبولة على متصفحات مختلفة، وقد يُحتمَل ألّا يقدم الموقع التجربة نفسها بالضبط على جميع المتصفحات طالما أن الوظيفة الأساسية يمكن الوصول إليها بطريقة ما، إذ يمكن أن تحصل في المتصفحات الحديثة على شيء متحرك وثلاثي الأبعاد وحديث، في حين يمكن أن تحصل في المتصفحات القديمة على رسم مسطح يمثل المعلومات نفسها، وطالما أنّ صاحب الموقع سعيد بذلك، فهذا يعني أنك نجحت في عملك.
</p>

<p>
	من ناحية أخرى، ليس مقبولًا أن يعمل الموقع بنجاح مع المستخدِمين المبصرين مع تعذر الوصول إليه بالنسبة للمستخدِمين ضعاف البصر لأن تطبيق قارئ الشاشة لا يمكنه قراءة أيٍّ من المعلومات المخزنة عليه.
</p>

<p>
	لا نعني بعبارة "عبر عدد مقبول من متصفحات الويب" نسبةَ 100% من المتصفحات في العالم، فهذا مستحيل تقريبًا، إذ يمكنك إجراء بحث بشأن المتصفحات والأجهزة التي سيستخدِمها مستخدمو موقعك كما سنناقش في المقال التالي من هذه السلسلة، ولكن لا يمكنك ضمان كل شيء، وتحتاج -بصفتك مطور ويب- الموافقة على مجموعة من المتصفحات والأجهزة التي تحتاجها الشيفرة البرمجية للعمل عليها مع مالك الموقع، ولكنك ستحتاج بعد ذلك لاستخدام البرمجة الدفاعية Defensive Coding لمنح المتصفحات الأخرى أفضل فرصة ممكنة لتكون قادرةً على استخدام محتواك، ويُعَدّ ذلك أحد أكبر التحديات التي تواجه <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تطوير الويب</a>.
</p>

<h2>
	سبب حدوث مشاكل التوافق مع المتصفحات
</h2>

<p>
	هناك العديد من الأسباب المختلفة لحدوث مشاكل التوافق مع المتصفحات، ولاحظ أننا هنا نتحدث عن المشاكل التي تتصرف فيها الأشياء بطريقة مختلفة على مختلف المتصفحات أو الأجهزة أو تفضيلات التصفح، ولكن يجب عليك إصلاح الأخطاء الموجودة في شيفرتك البرمجية قبل أن تحل مشاكل التوافق مع المتصفحات.
</p>

<p>
	تحدث مشاكل التوافق مع المتصفحات للأسباب التالية:
</p>

<ul>
	<li>
		تحتوي المتصفحات في بعض الأحيان على أخطاء أو يمكن أن تطبّق ميزات بطريقة مختلفة، ولكن يُعَدّ هذا الوضع أقل سوءًا بكثير مما كان عليه في السابق، إذ عمدت شركات المتصفحات إلى تطبيق الأشياء بطريقة مختلفة عن بعضها البعض في محاولة لاكتساب ميزة تنافسية عندما تنافسَ كل من IE4 و Netscape 4 على موقع المتصفح المهمين في التسعينات، مما صعّب الأمور كثيرًا على المطورين، وقد أصبحت المتصفحات أفضل بكثير في اتباع المعايير حاليًا، ولكن لا يخلو الأمر من بعض الاختلافات والأخطاء.
	</li>
	<li>
		يمكن أن تحتوي بعض المتصفحات على مستويات مختلفة من الدعم للميزات التقنية عن غيرها من المتصفحات، وهذا أمر لا مفر منه عندما تتعامل مع ميزات متطورة بدأت المتصفحات في تطبيقها، أو إذا كان عليك دعم المتصفحات القديمة التي لم تَعُدّ قيد التطوير وجُمِّدت، أي لم يُطبَّق عليها أيّ عمل جديد قبل وقت طويل من اختراع ميزة جديدة، فإذا أردت مثلًا استخدام أحدث ميزات جافاسكربت في موقعك، فيمكن ألّا تعمل في المتصفحات القديمة، وإذا كنت بحاجة إلى دعم المتصفحات القديمة، فيمكن أن تضطر إلى عدم استخدام هذه الميزات أو تحويل شيفرتك البرمجية إلى صيغة قديمة الطراز باستخدام نوع من <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%AA%D8%B5%D8%B1%D9%8A%D9%81-compilation-%D9%81%D9%8A-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r976/" rel="">المُصرِّفات Compilers</a> عند الحاجة.
	</li>
	<li>
		يمكن أن تحتوي بعض الأجهزة على قيود تؤدي إلى بطء تشغيل موقع الويب أو عرضه بطريقة سيئة، فإذا صُمِّم موقع ما ليبدو جميلًا على حاسوب مكتبي مثلًا، فيُحتمَل أن يبدو صغيرًا ويصعب قراءته على هاتف محمول، وإذا احتوى موقعك على عدد كبير من الرسوم المتحركة الكبيرة، فيمكن أن يكون الأمر جيدًا على جهاز لوحي عالي المواصفات، ولكنه سيكون بطيئًا على جهاز منخفض المواصفات.
	</li>
</ul>

<p>
	هناك المزيد من الأسباب الأخرى، وسنتعرّف في المقالات اللاحقة على مشاكل التوافق مع المتصفحات للوصول إلى حلول لها.
</p>

<h2>
	سير عمل اختبار التوافق مع المتصفحات
</h2>

<p>
	يمكن أن يبدو هذا الاختبار مستهلِكًا للوقت ومخيفًا، ولكن لا داعي لأن يكون كذلك، فكل ما عليك فعله هو التخطيط له بعناية والتأكد من إجراء اختبارات كافية في الأماكن الصحيحة للتأكد من عدم ظهور مشاكل غير متوقعة، فإذا أردت العمل في مشروع كبير، فيجب اختباره بانتظام للتأكد من أنّ الميزات الجديدة تعمل بنجاح مع جمهورك المستهدَف وأن الإضافات الجديدة إلى الشيفرة البرمجية لا تعطِّل الميزات القديمة التي كانت عاملةً في السابق، فإذا تركت جميع الاختبارات إلى نهاية المشروع، فستكون أيّ أخطاء أو زلات برمجية تكتشفها أكثر تكلفةً وستستغرق وقتًا طويلًا لإصلاحها مما لو اكتشفتها وأصلحتها أثناء العمل على المشروع.
</p>

<p>
	يمكن تقسيم سير عمل الاختبار وإصلاح <a href="https://academy.hsoub.com/programming/javascript/%D8%A7%D9%84%D8%B2%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r1245/" rel="">الزلات البرمجية</a> في المشروع إلى المراحل الأربع التالية تقريبًا، وهذا تقسيم تقريبي فقط، إذ يمكن أن يعمل أشخاص آخرون بطريقة مختلفة:
</p>

<ol>
	<li>
		التخطيط الأولي Initial Planning.
	</li>
	<li>
		التطوير Development.
	</li>
	<li>
		الاختبار Testing/الاكتشاف Discovery
	</li>
	<li>
		الإصلاحات Fixes/التكرار Iteration
	</li>
</ol>

<p>
	تُكرَّر الخطوات 2 و3 و4 عدة مرات حسب الضرورة لإنجاز التنفيذ بالكامل، كما سنتعرّف على الأجزاء المختلفة من عملية الاختبار بمزيد من التفصيل في المقالات اللاحقة، ولكن لنلخّص فقط ما يحدث في كل خطوة حاليًا.
</p>

<h3>
	التخطيط الأولي
</h3>

<p>
	يُحتمَل أن يكون لديك في <a href="https://academy.hsoub.com/design/user-interface/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8%D8%A9-r784/" rel="">مرحلة التخطيط الأولي</a> العديد من اجتماعات التخطيط مع مالك الموقع أو العميل الذي يمكن أن يكون رئيسك في العمل أو شخصًا من شركة خارجية تبني موقع ويب لها، حيث تحدد بالضبط ما يجب أن يكون عليه موقع الويب، وما هو المحتوى والوظائف التي يجب أن يحتوي عليها وكيف يجب أن يبدو وما إلى ذلك، كما سترغب في هذه المرحلة في معرفة مقدار الوقت المتاح لك لتطوير الموقع أي الموعد النهائي Deadline، وكم سيدفعون لك مقابل عملك، ولن نخوض في الكثير من التفاصيل حول هذا الأمر، ولكن يمكن أن يكون لمشاكل التوافق مع المتصفحات تأثير خطير على هذا التخطيط.
</p>

<p>
	يجب أن تبدأ في استكشاف الجمهور المستهدَف بمجرد حصولك على فكرة عن مجموعة الميزات المطلوبة والتقنيات التي ستبني هذه الميزات بها، مثل استكشاف المتصفحات والأجهزة وغير ذلك والتي سيستخدِمها الجمهور المستهدَف لهذا الموقع، فيمكن أن يكون لدى العميل بيانات حول هذه الأمور من بحث سابق أجراه من مواقع الويب الأخرى التي يمتلكها أو من الإصدارات السابقة من موقع الويب الذي تعمل عليه الآن مثلًا، فإذا لم يكن الأمر كذلك، فستتمكن من الحصول على فكرة جيدة من خلال النظر إلى مصادر أخرى مثل إحصائيات الاستخدام للمنافسين أو البلدان التي سيخدّمها الموقع، كما يمكنك استخدام بعض التخمين.
</p>

<p>
	يمكن أن تنشئ مثلًا موقعًا للتجارة الإلكترونية يخدّم العملاء في أمريكا الشمالية، ويجب أن يعمل الموقع بالكامل في الإصدارات الأخيرة من متصفحات الحواسيب المكتبية والهاتف المحمول (iOS و Android و Windows phone) الأكثر شيوعًا، إذ يجب أن يشمل ذلك كروم Chrome وأوبرا Opera الذي يعتمد على محرّك التصيير Rendering نفسه الخاص بكروم، بالإضافة إلى فايرفوكس Firefox و IE/Edge وسفاري Safari، كما يجب أن توفر تجربة مقبولة في الإصدارين IE 8 و9 ويمكن الوصول إليها باتباع تعليمات WCAG AA.
</p>

<p>
	أصبحتَ الآن تعرف منصات الاختبار المستهدفة، لذا يجب العودة ومراجعة مجموعة الميزات المطلوبة والتقنيات التي ستستخدِمها. إذا أراد مالك موقع التجارة الإلكترونية مثلًا جولةً ثلاثية الأبعاد مدعومة من WebGL لكل منتج مُضمَّن في صفحات <a href="https://academy.hsoub.com/marketing/core-concepts-of-marketing/%D8%AA%D8%B9%D8%B1%D9%8A%D9%81-%D8%A7%D9%84%D9%85%D9%86%D8%AA%D8%AC-%D9%88%D8%A3%D9%86%D9%88%D8%A7%D8%B9%D9%87-r433/" rel="">المنتجات</a>، فيجب قبول أنّ ذلك لن يعمل في إصدارات المتصفح IE قبل الإصدار 11، كما يجب أن توافق على توفير نسخة من الموقع بدون هذه الميزة لمستخدِمي إصدارات IE الأقدم، كما يجب عليك تجميع قائمة بمواقع المشاكل المحتمَلة.
</p>

<p>
	<strong>ملاحظة</strong>: يمكنك الرجوع إلى موقع <a href="https://caniuse.com/" rel="external nofollow">caniuse.com</a> للحصول على مزيد من تفاصيل معلومات دعم المتصفحات للتقنيات.
</p>

<p>
	يمكنك المضي قدمًا والبدء في تطوير الموقع بمجرد الاتفاق على هذه التفاصيل.
</p>

<h3>
	التطوير
</h3>

<p>
	لننتقل الآن إلى تطوير الموقع، إذ يجب عليك تقسيم الأجزاء المختلفة من عملية التطوير إلى وحدات، حيث يمكنك تقسيم مناطق الموقع المختلفة إلى الصفحة الرئيسية وصفحة المنتجات وعربة التسوق وسير عملية الدفع مثلًا، ثم يمكنك تقسيم هذه الأجزاء إلى تطبيق جزأي الترويسة والتذييل المشتركَين في الموقع، وتطبيق عرض تفاصيل صفحة المنتجات، وعنصر عربة التسوق الدائم وغير ذلك.
</p>

<p>
	هناك العديد من الاستراتيجيات العامة لتطوير التوافق مع المتصفحات مثل:
</p>

<ul>
	<li>
		الحصول على جميع الوظائف التي تعمل بنجاح قدر الإمكان في جميع المتصفحات المستهدفة، ويمكن أن يتضمن ذلك كتابة مسارات شيفرات برمجية مختلفة تعيد إنتاج الوظائف بطرق مختلفة تستهدف متصفحات مختلفة، أو استخدام تعويض دعم المتصفحات Polyfill لتقليد أيّ دعم مفقود باستخدام جافاسكربت أو تقنيات أخرى، أو استخدام مكتبة تسمح لك بكتابة جزء من الشيفرة البرمجية ثم تطبيق أشياء مختلفة في الخلفية اعتمادًا على ما يدعمه المتصفح.
	</li>
	<li>
		القبول بأن بعض الأشياء لن تعمل بالطريقة نفسها على جميع المتصفحات، وتقديم حلول مختلفة مقبولة في المتصفحات التي لا تدعم الوظائف الكاملة، ويكون ذلك في بعض الأحيان أمرًا لا مفر منه بسبب قيود الجهاز، إذ لن تقدِّم شاشة السينما العريضة التجربة المرئية نفسها لشاشة الجوال التي مقاسها 4 بوصات بغض النظر عن كيفية برمجة موقعك.
	</li>
	<li>
		القبول بأن موقعك لن يعمل في بعض المتصفحات القديمة، ثم المضي قدمًا في عملية التطوير، ويُعَدّ ذلك جيدًا بشرط عدم وجود مشكلة لدى عميلك أو قاعدة المستخدِمين في ذلك.
	</li>
</ul>

<p>
	تتضمن عملية التطوير مزيجًا من الأساليب الثلاثة السابقة، ولكن أهم شيء هو أن تختبر كل جزء صغير قبل تنفيذه وألّا تترك جميع الاختبارات حتى النهاية.
</p>

<h3>
	الاختبار/الاكتشاف
</h3>

<p>
	يجب اختبار الوظيفة الجديدة بعد كل مرحلة تطبيق، إذ يجب عليك أولًا التأكد من عدم وجود مشاكل عامة في شيفرتك البرمجية تعطل عمل الميزة كما يلي:
</p>

<ol>
	<li>
		اختبرها في بعض المتصفحات المستقرة على نظامك مثل Firefox أو Safari أو Chrome أو IE/Edge.
	</li>
	<li>
		أجرِ اختبارات سهولة الوصول Lo-fi مثل محاولة استخدام موقعك باستخدام لوحة المفاتيح فقط أو استخدام موقعك عبر قارئ الشاشة لمعرفة ما إذا كان قابلًا للتنقل عبره أم لا.
	</li>
	<li>
		أجرِ اختبارات على منصة للهاتف المحمول مثل Android أو iOS.
	</li>
</ol>

<p>
	أصلِح أيّ مشاكل تجدها في شيفرتك البرمجية الجديدة في هذه المرحلة، ثم يجب أن تحاول توسيع قائمة المتصفحات التي تريد اختبارها إلى قائمة كاملة من متصفحات الجمهور المستهدف والبدء في التركيز على التخلص من مشاكل التوافق مع المتصفحات، فمثلًا:
</p>

<ul>
	<li>
		حاول اختبار أحدث تغيير على جميع متصفحات الحواسيب المكتبية الحديثة بما في ذلك Firefox و Chrome و Opera و IE و Edge وSafari على أنظمة التشغيل Mac و Windows و <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">Linux</a>.
	</li>
	<li>
		اختبرها في متصفحات الهاتف المحمول والأجهزة اللوحية الشائعة مثل iOS Safari على أجهزة iPhone/iPad و Chrome و Firefox على أجهزة iPhone/iPad/Android.
	</li>
	<li>
		أجرِ اختبارات أيضًا على أيّ متصفحات أخرى ضمّنتها في قائمة أهدافك.
	</li>
</ul>

<p>
	خيار اختبار Lo-fi الأكثر استخدامًا هو إجراء جميع الاختبارات التي يمكنك تطبيقها بنفسك مثل أن يجرّب زملاؤك في الفريق الموقع إذا كنت تعمل في فريق، إذ يجب أن تحاول اختباره على أجهزة حقيقية إذا أمكن ذلك، فإذا لم تكن لديك الوسائل اللازمة لاختبار جميع مجموعات المتصفحات وأنظمة التشغيل والأجهزة المختلفة على العتاد الفيزيائي، فيمكنك الاستفادة من المقلّدات أو المحاكيات Emulators -التي تقلد جهازًا باستخدام برنامج على حاسوبك المكتبي- والآلات الافتراضية التي هي برامج تسمح بمحاكاة مجموعات متعددة من أنظمة التشغيل والبرامج على حاسوبك.
</p>

<p>
	يُعَدّ ذلك خيارًا شائعًا جدًا خاصةً في ظروف معينة مثل ألّا يتيح نظام ويندوز تثبيت إصدارات متعددة منه في الوقت ذاته وعلى الجهاز نفسه، لذا يكون استخدام آلات افتراضية متعددة هو الخيار الوحيد في هذه الحالة.
</p>

<p>
	يوجد خيار آخر هو استخدام مجموعات المستخدِمين، أي استخدام مجموعة من الأشخاص من خارج فريقك لاختبار موقعك مثل مجموعة من الأصدقاء أو العائلة أو مجموعة من الموظفين الآخرين أو صف دراسي في جامعة محلية أو إعداد اختبار احترافي بحيث يُدفَع للأشخاص لاختبار موقعك وتقديم النتائج.
</p>

<p>
	أخيرًا، يمكنك استخدام الاختبار باستخدام أدوات التدقيق أو الاختبارات الآلية، حيث يُعَدّ هذا الاختيار معقولًا مع المشاريع الكبيرة، إذ يمكن أن يستغرق إجراء هذا الاختبار يدويًا وقتًا طويلًا جدًا، كما يمكنك إعداد نظام اختبار آلي مثل تطبيق Selenium الشهير الذي يمكنه تحميل موقعك في عدد من المتصفحات المختلفة مثلًا، ويمكنه:
</p>

<ul>
	<li>
		معرفة ما إذا كان النقر على الزر يؤدي إلى حدوث شيء ما بنجاح مثل عرض خريطة، وعرض النتائج بمجرد اكتمال الاختبارات.
	</li>
	<li>
		التقاط لقطة شاشة لكل من هذه الاختبارات، مما يسمح لك بمعرفة ما إذا كان تخطيط الموقع متناقسًا على المتصفحات المختلفة.
	</li>
</ul>

<p>
	هناك أدوات تجارية متاحة مثل Browserling و Sauce Labs و Browser Stack و Endtest و LambdaTest و TestingBot و CrossBrowserTesting التي تطبّق هذه الاختبارات دون الحاجة إلى القلق بشأن الإعداد إذا أردت استثمار بعض المال في الاختبارات، كما يمكنك إعداد بيئة تشغّل الاختبارات تلقائيًا نيابةً عنك ثم تتيح لك فقط التحقق من التغييرات التي أجريتها على مستودع الشيفرة المركزي إذا نجحت الاختبارات باستمرار.
</p>

<h4>
	الاختبار على المتصفحات التجريبية
</h4>

<p>
	يكون اختبار الإصدارات التجريبية من المتصفحات فكرة جيدة في أغلب الأحيان، لذا اطّلع على الروابط التالية:
</p>

<ul>
	<li>
		<a href="https://www.mozilla.org/en-US/firefox/developer/" rel="external nofollow">Firefox Developer Edition</a>.
	</li>
	<li>
		<a href="https://insider.windows.com/" rel="external nofollow">Edge Insider Preview</a>.
	</li>
	<li>
		<a href="https://developer.apple.com/safari/technology-preview/" rel="external nofollow">Safari Technology Preview</a>.
	</li>
	<li>
		<a href="https://www.google.com/chrome/canary/" rel="external nofollow">Chrome Canary</a>.
	</li>
	<li>
		<a href="https://www.opera.com/ar/computer/beta" rel="external nofollow">Opera Developer</a>.
	</li>
</ul>

<p>
	ينتشر هذا النوع من الاختبارات خاصةً إذا استخدمتَ تقنيات حديثة جدًا في موقعك ورغبت في اختبار أحدث التطبيقات؛ أو إذا صادفت زلةً برمجيةً في أحدث إصدار من المتصفح وأردت معرفة إذا أصلح مطورو المتصفح هذه الزلة البرمجية في إصدار أحدث.
</p>

<h3>
	الإصلاحات/التكرار
</h3>

<p>
	يجب محاولة <a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-r1342/" rel="">إصلاح الزلة البرمجية</a> بمجرد اكتشافها، فأول شيء يجب فعله هو تضييق نطاق مكان حدوث الزلة البرمجية قدر الإمكان، لذا احصل على أكبر قدر ممكن من المعلومات من الشخص الذي يبلّغ عن الزلة البرمجية مثل معرفة ما هي المنصة أو المنصات، والجهاز أو الأجهزة، وإصدار أو إصدارات المتصفح التي يستخدمها، وجرب هذا الاختبار على إعدادات مماثلة مثل إصدار المتصفح نفسه على منصات حواسيب مختلفة أو عدة إصدارات مختلفة من المتصفح نفسه على المنصة نفسها لمعرفة مدى انتشار الزلة البرمجبة.
</p>

<p>
	يمكن ألّا يكون هذا خطأك، لذا نأمل إصلاح الزلة البرمجية بسرعة في حالة وجودها في المتصفح، كما يمكن أن تكون الزلة البرمجية قد أُصلِحت مسبقًا مثل وجود خطأ في الإصدار 49 من Firefox، ولكنها لم تَعُد موجودةً في Firefox Nightly (الإصدار 52)، فعندئذٍ تكون قد أُصلِحت فعليًا، فإذا لم تكون قد أُصلِحت مسبقًا، فيمكنك إرسال تقرير بالزلة البرمجية.
</p>

<p>
	إذا كان ذلك خطأك، فيجب عليك إصلاحه، إذ يتضمن اكتشاف سبب الزلة البرمجية الإستراتيجية نفسها لأي زلة برمجية في عملية تطوير الويب، فإذا اكتشفتَ سبب الزلة البرمجية، فيجب أن تقرر كيفية التعامل معها في المتصفح التي تتسبب في حدوث مشاكل، ولا يمكنك تعديل شيفرة المشكلة البرمجية فقط، إذ يمكن أن يؤدي ذلك إلى تعطّل الشيفرة في المتصفحات الأخرى، والأسلوب العام في هذه الحالة هو تفرّع الشيفرة البرمجية بطريقةٍ ما مثل استخدام شيفرة اكتشاف المتصفحات لميزة جافاسكربت لاكتشاف المواقف التي لا تعمل فيها الميزة التي تؤدي إلى المشكلة، وتشغيل الشيفرة البرمجية الأخرى في الحالات التي تعمل فيها هذه الميزة.
</p>

<p>
	يجب تكرار عملية الاختبار بعد إصلاح المشكلة للتأكد من أنّ الإصلاح يعمل بنجاح ولا يتسبب في تعطل الموقع في أماكن أخرى أو في متصفحات أخرى.
</p>

<h2>
	إصدار تقارير بالأخطاء
</h2>

<p>
	إذا اكتشفت أخطاءً في المتصفحات، فيجب عليك التبليغ عنها باستخدام ما يلي:
</p>

<ul>
	<li>
		<a href="https://bugzilla.mozilla.org/home" rel="external nofollow">Firefox Bugzilla</a>.
	</li>
	<li>
		<a href="https://developer.microsoft.com/en-us/microsoft-edge/" rel="external nofollow">متعقّب مشاكل EdgeHTML</a>.
	</li>
	<li>
		<a href="https://bugs.webkit.org/" rel="external nofollow">Safari</a>.
	</li>
	<li>
		<a href="https://bugs.chromium.org/p/chromium/issues/list" rel="external nofollow">Chrome</a>.
	</li>
	<li>
		<a href="https://help.opera.com/en/computer-bug-wizard/" rel="external nofollow">Opera</a>.
	</li>
</ul>

<h2>
	الخلاصة
</h2>

<p>
	يُفترَض أن يمنحك هذا المقال فهمًا عالي المستوى لأهم المفاهيم التي تحتاج معرفتها حول اختبار التوافق مع المتصفحات، وبالتالي أصبحت الآن جاهزًا للمضي قدمًا والبدء في التعرف على استراتيجيات اختبار التوافق مع المتصفحات.
</p>

<p>
	ترجمة -وبتصرُّف- للمقالين <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing" rel="external nofollow">Cross browser testing</a> و<a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Introduction" rel="external nofollow">Introduction to cross browser testing</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/javascript/angular/%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%AE%D8%A7%D8%B5%D9%8A%D8%A9-%D8%AA%D8%B1%D8%B4%D9%8A%D8%AD-%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-angular-%D9%88%D8%AA%D8%AC%D9%87%D9%8A%D8%B2%D9%87-%D9%84%D9%84%D9%86%D8%B4%D8%B1-r1900/" rel="">إضافة خاصية ترشيح لتطبيق Angular وتجهيزه للنشر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/%D9%81%D9%87%D9%85-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%85%D9%86-%D8%B7%D8%B1%D9%81-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%84-r1462/" rel="">فهم أدوات تطوير الويب من طرف العميل</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1953</guid><pubDate>Thu, 06 Apr 2023 15:00:00 +0000</pubDate></item><item><title>&#x646;&#x635;&#x627;&#x626;&#x62D; &#x644;&#x62A;&#x639;&#x644;&#x64A;&#x645; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629; &#x644;&#x644;&#x623;&#x637;&#x641;&#x627;&#x644;</title><link>https://academy.hsoub.com/programming/general/%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%84%D8%AA%D8%B9%D9%84%D9%8A%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%84%D9%84%D8%A3%D8%B7%D9%81%D8%A7%D9%84-r2054/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/---(1).png.0e0371c04cac1d1b228614541afa0c5c.png" /></p>
<p>
	بعد أن تحدثنا <a href="https://academy.hsoub.com/programming/general/%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%AC%D8%A8-%D8%A3%D9%86-%D8%AA%D8%B9%D9%84%D9%85-%D8%B7%D9%81%D9%84%D9%83-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9%D8%9F-r2052/" rel="">لماذا عليك أن تعلم ابنك البرمجة</a>، لنتحدث عن الخطوات العملية والنصائح المناسبة لتعليم البرمجة للأطفال بطريقة مناسبة لعمرهم، وكيف نحببهم بالبرمجة والحواسيب ونجد المواد التعليمية المناسبة لهم.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_8859_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="نصائح لتعليم البرمجة للأطفال" width="1072" data-embed-src="https://www.youtube.com/embed/3s7WJ0lhVjE"></iframe>
</p>

<p>
	إذا أردت التعرف أكثر على  مجال البرمجة ودعم تعلمك أو تعليم طفلك، فننصحك تعلم البرمجة بنفسك ومحاولة شرحها لابنك. يمكنك البدء مع دورة <a href="https://academy.hsoub.com/learn/computer-science/" rel="">أساسيات علوم الحاسوب</a> المقدمة من أكاديمية حسوب، ولا تنسَ الاستعانة خلال هذه الرحلة بتوثيقات <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة في أكاديمية حسوب</a>، كما يمكن متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">2054</guid><pubDate>Thu, 06 Apr 2023 15:00:00 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644;&#x643; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644; &#x625;&#x644;&#x649; &#x628;&#x631;&#x645;&#x62C;&#x629; &#x627;&#x644;&#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A;</title><link>https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_03/----.png.d479965037328baa7b3e50faee525258.png" /></p>
<p>
	تلعب برمجة التطبيقات دورًا مهمًا في توفير خدمات وأدوات تساعدنا وتحسن من إنتاجية أعمالنا اليومية سواء على الصعيد الشخصي أو على صعيد الشركات والمؤسسات، فنحن نتعامل يوميًا مع عدد كبير من التطبيقات على حواسبنا وهواتفنا الذكية وغيرها من الأجهزة، وهذه التطبيقات تلبي مختلف متطلبات حياتنا كالبرامج المكتبية ومشغلات الوسائط وتطبيقات المتاجر الإلكترونية ووسائل التواصل الاجتماعي والألعاب وحتى تطبيقات الطبخ والرياضة والبودكاست وغيرها، ولا نستطيع أن نتخيل حياتنا اليوم دونها والفضل يعود إلى تخصص علوم الحاسوب و<a href="https://academy.hsoub.com/programming/general/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">هندسة البرمجيات</a> -وضمنها البرمجة- المصانع التي تُنتج لنا تلك التطبيقات المختلفة.
</p>

<p>
	سنسلط الضوء في مقال اليوم على كل ما يخص مجال برمجة التطبيقات باختلاف أنواعها، ونتعرف على أهم التقنيات والأدوات المستخدمة في تطوير كل نوع من هذه الأنواع، ونختم بأهم النصائح والمصادر المفيدة التي تساعدك في تعلم برمجة التطبيقات بسرعة واحترافية.
</p>

<h2>
	ما هي التطبيقات؟
</h2>

<p>
	التطبيق application أو ما يعرف باسم البرنامج التطبيقي application program أو اختصارًا برنامج program هو نوع خاص من البرامج مصمم ليساعدك على أداء وظيفة محددة ومباشرة بواسطة جهاز الحاسوب أو الجوال أو غيرها من الأجهزة القابلة للبرمجة فهو يُبرمج أساسًا باستخدام حاسوب، وبدون وجود التطبيقات على هذه الأجهزة لن تتمكن من الاستفادة من الحاسوب وعتاده المكون أساسًا من معالج وذاكرة ووحدة تخزين ولن تستطيع أداء المهام والعمليات بالاستعانة بذلك العتاد.
</p>

<p>
	على سبيل المثال بدون تطبيقات متصفح الإنترنت على حاسوبك لن تتمكن من البحث عبر الإنترنت وبدون تطبيق المنبه على جوالك لن تتمكن من ضبط ساعة جوالك على تنبيهك في وقت محدد وبدون تطبيقات الشبكات الاجتماعية المختلفة لن يكون بإمكانك تصفح حسابات التواصل الاجتماعي الخاصة بك…إلخ. فلكل مهمة محددة تقوم بها على أجهزتك هناك تطبيق محدد يساعدك.
</p>

<h3>
	ما الفرق بين البرمجيات وبين التطبيقات والبرامج؟
</h3>

<p>
	قد يكون هناك فارق بين مصطلح تطبيق application أو برنامج program المستخدمين غالبًا بشكل متبادل للدلالة على الأمر نفسه وبين مصطلح برمجية software الذي يُطلق أحيانًا على التطبيق وأحيانًا على برمجية مكونة من عدة تطبيقات أو منتج إلكتروني يوفر مجموعة حلول متكاملة مثل<a href="https://academy.hsoub.com/apps/operating-systems/%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84/" rel=""> نظام التشغيل</a>.
</p>

<p>
	كما أن مصطلح برمجيات softwares يستخدم للدالة على الأجزاء غير الملموسة للحاسب ومنها نظام التشغيل وهو معاكس لمصطلح hardware الذي يعني عتاد الحاسب أو الأجزاء المادية الملموسة التي يتكون منها الحاسب. ولمعرفة المزيد من المعلومات حول الفرق بينهما يمكنك مطالعة المناقشة <a href="https://io.hsoub.com/programming/32042-%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-software-%D9%88-hardware-%D9%88%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%B9%D9%84%D8%A7%D9%82%D8%A9-%D8%A8%D9%8A%D9%86%D9%87%D9%85%D8%A7" rel="external">ما هو الفرق بين Software و Hardware وما هي العلاقة بينهما؟</a>.
</p>

<h2>
	برمجة التطبيقات وسوق العمل
</h2>

<p>
	تعد برمجة التطبيقات أحد <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">مجالات البرمجة</a> الرائجة والمطلوبة بكثرة في سوق العمل فمعظم الشركات في جميع المجالات تبحث اليوم عن مبرمجي تطبيقات للعمل لديها لبرمجة التطبيقات الخاصة بها أو لصيانة تحسين التطبيقات الجاهزة التي تستخدمها.
</p>

<p>
	وقد بين <a href="https://survey.stackoverflow.co/2022/#developer-profile-developer-roles" rel="external nofollow">الاستبيان الذي أصدره موقع Stack Overflow الشهير نهاية عام 2022</a> الذي شارك به آلاف المبرمجين والمطورين حول العالم أن أول أكثر خمس مهن يعمل بها التقنيون حول العالم متعلقة ببرمجة التطبيقات وشملت تطبيقات الويب باختلاف أنواعها كتطوير الواجهة الأمامية أو الخلفية أو التطوير الكامل وتطبيقات سطح المكتب وتطبيقات الجوال وهذا إن دل على شيء فإنما يدل على أهمية هذا التخصص وطلبه المتنامي في سوق العمل.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="122429" href="https://academy.hsoub.com/uploads/monthly_2023_03/286656275_.PNG.3c29371a3f41df6854006a2901dfa05a.PNG" rel=""><img alt="أكثر مهن البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="122429" data-ratio="51.33" data-unique="e9nnynlzs" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.PNG.738d3a68aa9b20f585e0810ebf4722f3.PNG"> </a>
</p>

<p>
	كما أن برمجة التطبيقات تخصص مربح وعالي الأجر فبحسب <a href="https://survey.stackoverflow.co/2022/#work-salary" rel="external nofollow">نفس الاستبيان</a> يمكن أن يصل متوسط الراتب السنوي لمطور التطبيقات في الولايات المتحدة الأمريكية لغاية 68  ألف دولار وهذه الأرقام تتفاوت بالطبع حسب المنطقة الجغرافية وسنوات الخبرة إلا أنها تبقى مرتفعة مقارنة ببقية المهن والوظائف الأخرى، ففي حال قررت التخصص في برمجة التطبيقات على اختلاف أنواعها فستضمن بلا شك الحصول على وظيفة مجزية وتكسب امتيازات وظيفية رائعة وتحقق الأمان الوظيفي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="122428" href="https://academy.hsoub.com/uploads/monthly_2023_03/1041119499_.PNG.9315d877ab142c0798a48b2d2ad356db.PNG" rel=""><img alt="أجور تخصصات البرمجة ومبرمجي التطبيقات" class="ipsImage ipsImage_thumbnailed" data-fileid="122428" data-ratio="62.67" data-unique="p7eubnx2e" style="width: 600px; height: auto;" width="857" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.PNG.8f9b66cd30ab300d361ea70f3fa0c0f4.PNG"> </a>
</p>

<p>
	فإذا كنت تحب تخصص البرمجة وكتابة الشيفرات وتملك تفكيرًا إبداعيًا وقدرة على حل المشكلات وتفضل نظام العمل المعتمد على المشاريع أو العمل عن بعد في بيئة عمل مرنة فإن برمجة التطبيقات مسار وظيفي مناسب لك حتمًا لذا لا تضيع وقتك وابدأ بتحديد نوع التطبيقات التي تفضلها وابدأ فورًا بتعلم أدواتها وتقنياتها.
</p>

<h2>
	أهمية برمجة التطبيقات
</h2>

<p>
	برمجة التطبيقات واحدة من أهم التخصصات في عالمنا الحديث فلا غنى عنها في عصر التطور التقني الذي نشهده اليوم، وتأتي أهمية التخصص في مجال برمجة التطبيقات من أهمية التطبيقات نفسها والفوائد التي تعود بها على الأفراد والأعمال التجارية على حد سواء.
</p>

<p>
	وفيما يلي قائمة ببعض الفوائد التي يمكن أن تعود على الأعمال التجارية من برمجة التطبيقات:
</p>

<ul>
	<li>
		تساهم التطبيقات في أتمتة أعمال الشركات وتنظمها وتبسط إجراء الحسابات والمعاملات المعقدة.
	</li>
	<li>
		تساعد برمجة تطبيقات الويب والجوال الشركات على توسيع نطاق عمل الشركات والوصول إلى المستخدمين عبر كافة المنصات ومختلف الأسواق.
	</li>
	<li>
		تساهم التطبيقات المعتمدة على الإنترنت في بناء قناة اتصال فعالة مع العملاء وإطلاعهم على آخر العروض والمستجدات.
	</li>
	<li>
		تحسن التطبيقات تجربة العملاء وتمكنهم من إنجاز معاملاتهم بسرعة وسلاسة ما يساهم بدوره في كسب مزيد من العملاء وزيادة الإيرادات.
	</li>
	<li>
		تساعد التطبيقات في جمع البيانات المختلفة حول العمل وتمكن من تحليل هذه البيانات باستخدام أدوات التحليل المناسبة والحصول على معلومات قيمة لتطوير العمل واستهداف الأسواق المناسبة.
	</li>
</ul>

<h2>
	خطوات برمجة التطبيقات
</h2>

<p>
	رغم التنوع الكبير في أنواع التطبيقات وخصائصها إلا أن برمجة التطبيقات تتبع دومًا نفس الخطوات في برمجتها وهذه الخطوات هي كالتالي
</p>

<ol>
	<li>
		<strong>وضع متطلبات التطبيق</strong>: تحدد هذه الخطوة كافة الوظائف والميزات التي تريد تضمينها في التطبيق وتحتاج للمناقشة مع العميل أو صاحب التطبيق لتحديد كافة المواصفات بدقة.
	</li>
	<li>
		<strong>تصميم واجهات التطبيق</strong>: في هذه الخطوة عليك وضع نماذج أو تصاميم أولية لتطبيقك بالاستعانة <a href="https://academy.hsoub.com/design/user-interface/%D9%85%D9%88%D8%A7%D8%B2%D9%86%D8%A9-%D8%A8%D9%8A%D9%86-%D8%A3%D9%81%D8%B6%D9%84-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-r634/" rel="">ببرامج تصميم واجهات المستخدم UI</a> مثل فيجما Figma أو <a href="https://academy.hsoub.com/design/graphic/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-adobe-xd-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-r548/" rel="">أدوبي إكس دي Adobe X‎D</a>.
	</li>
	<li>
		<strong>برمجة التطبيق</strong>: وهي أهم خطوة ففيها يبدأ العمل الفعلي لتطوير التطبيق وتتم كتابة الأكواد البرمجية التي تحقق تصميم التطبيق ووظائفه التي تم تحديدها في الخطوات السابقة.
	</li>
	<li>
		<strong>اختبار التطبيق ونشره</strong>: بعد الانتهاء من برمجة التطبيق تبدأ مرحلة اختباره والتأكد من أنه خالي من الأخطاء ويعطي نتائج صحيحة وبعدها يتم نشره وإتاحته للاستخدام من قبل المستخدمين.
	</li>
</ol>

<h2>
	الفرق بين برمجة التطبيقات وتطوير التطبيقات
</h2>

<p>
	قد تتساءل عن الفرق بين برمجة التطبيقات وتطوير التطبيقات وهل هما الشيء نفس الشيء؟ الجواب نعم تقريبًا فمصطلح برمجة التطبيقات ومصطلح تطوير التطبيقات يستخدمان بالتبادل ويعنيان في الواقع الأمر ذاته ويشيران إلى عملية تصميم وإنشاء واختبار وتشغيل تطبيقات تلبي احتياجات المستخدمين.
</p>

<p>
	وأحيانًا يشير مصطلح تطوير التطبيقات إلى عملية تطوير التطبيق ككل وهي الخطوات السابقة الذي ذكرناها للتو كلها بينما تقتصر برمجة التطبيقات على الخطوة الثالثة فقط لذلك ستجد في مقال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-r1827/" rel="">تطوير التطبيقات</a> أنه يركز على منهجيات تطوير التطبيقات وطرقها أكثر من تركيزه على الجانب البرمجي و<a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a>.
</p>

<p>
	وتجدر الإشارة لأن برمجة التطبيقات لا تشير بشكل محدود إلى تطبيقات الهواتف الذكية فقط بل يشمل على اختلاف أنواعها والتي سنتطرق لها بالتفصيل في فقرتنا التالية.
</p>

<h2>
	أنواع التطبيقات
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="122431" href="https://academy.hsoub.com/uploads/monthly_2023_03/194052743_.png.933a064328f9ef41b74ef705156caa14.png" rel=""><img alt="أنواع برمجة التطبيقات" class="ipsImage ipsImage_thumbnailed" data-fileid="122431" data-ratio="62.50" data-unique="tp9jyv4q1" style="width: 800px; height: auto;" width="857" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.5ff2b8b8aae858f1838d7c600436ac58.png"> </a>
</p>

<p>
	قبل أن نشرح تقنيات برمجة التطبيقات من المهم معرفة الأنواع المختلفة للتطبيقات التي نحتاج إلى استخدامها فكما هو معروف هناك طيف واسع من التطبيقات المتنوعة التي تعمل على أنظمة ومنصات مختلفة وبرمجة التطبيق ولغات البرمجة والأدوات المستعملة تختلف باختلاف النوع.
</p>

<p>
	عند برمجة التطبيقات ستلاحظ أن وجود عدة أنواع من التطبيقات وهي:
</p>

<ul>
	<li>
		تطبيقات الحاسوب (سطح المكتب)
	</li>
	<li>
		تطبيقات الويب
	</li>
	<li>
		تطبيقات الجوال والأجهزة المحمولة
	</li>
	<li>
		تطبيقات الأجهزة الملبوسة
	</li>
</ul>

<p>
	دعنا نستكشف في فقراتنا التالية مميزات كل نوع من هذه التطبيقات وآلية عملها والفروقات الأساسية فيما بينها وأهم لغات البرمجة والتقنيات المستخدمة في برمجة التطبيقات على اختلاف أنواعها.
</p>

<h3>
	تطبيقات الحاسوب (سطح المكتب)
</h3>

<p>
	تعرف تطبيقات البرامج باسم تطبيقات الحاسوب أو الاسم الشائع سطح المكتب -إشارة إلى الحاسوب المكتبي والذي يدخل ضمنه الحاسوب المحمول أيضًا- وهي برامج مصممة للعمل على أجهزة الحاسوب وهي تعمل مع نظام التشغيل مباشرة وتُثبَّت عليه. لذا فإن <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" rel="">برمجة تطبيقات سطح المكتب</a> تعني إنشاء برامج مخصصة لأجهزة الحاسوب المكتبية والمحمولة.
</p>

<p>
	تستخدم هذه التطبيقات موارد النظام لأداء وظائفها وتخزن كل ملفاتها وبياناتها على الحاسوب نفسه وتعمل بشكل منفصل على أنظمة تشغيل الحواسيب مثل ويندوز Windows ولينكس Linux وماك أو إس macOS حيث يحتوي كل نظام من أنظمة التشغيل هذه على مجموعة أوامر خاصة به للوصول إلى موارد وخدمات الجهاز كما أنها تخزن البيانات بشكل محلي مما يسمح للمستخدمين بالوصول إلى كامل وظائف التطبيق دون الحاجة إلى الاتصال بالإنترنت.
</p>

<p>
	تُبرمج هذه التطبيقات لكل نظام تشغيل على حدة مثلًا تطبيق ويندوز وهو ملف ينتهي غالبًا بالامتداد exe. لن يعمل على تطبيق ماك الذي ينتهي بالامتداد app. أو حتى لينكس ولو كان التطبيق نفسه ويحتاج إلى برمجة كاملة من جديد، وأحيانًا يُلجأ إلى أدوات برمجة قادرة على برمجة تطبيق واحد ونشره على مختلف أنظمة التشغيل وهذا ما سنتطرق إليه في قسم البرمجة.
</p>

<p>
	توجد أمثلة كثيرة على تطبيقات سطح المكتب تتفاوت فيما بينها من حيث التعقيد والوظائف التي تؤديها، مثل مايكروسوفت أوفيس Microsoft Office والرسام والآلة الحاسبة ومشغل الوسائط ومكافح الفيروسات أمثلة على تطبيقات سطح المكتب كما أن الألعاب تندرج ضمن هذه الفئة فهي في النهاية برامج تؤدي وظيفة معينة وهي اللعب والترفيه.
</p>

<p>
	تتطلب بعض تطبيقات سطح المكتب مواصفات وموارد معينة للمعالج أو وحدة معالجة رسومات GPU أو سعة ذاكرة الوصول العشوائي أو إصدار محدد من نظام التشغيل وتوفر مساحة تخزين كافية كي تتمكن من العمل على حاسوبك.
</p>

<p>
	ولاستخدام تطبيق سطح المكتب عليك أولًا تنزيل البرنامج المتوافق مع نظام تشغيلك وموارد جهازك على جهاز الحاسوب الخاص بك من المتجر المخصص، فلكل نظام متجره الخاص مثل متجر تطبيقات مايكروسوفت المخصص لنظام ويندوز Windows App Store أو متجر تطبيقات ماك Mac App Store أو تبحث عن الإصدار المناسب لك للتطبيق من داخل موقعه الرسمي ثم تقوم بتثبيت هذا التطبيق على جهازك وبعد اكتمال عملية التثبيت يمكنك تشغيله ولتسهيل العثور على التطبيق وتشغيله بسرعة تضع معظم تطبيقات سطح المكتب أيقونات خاصة بها على سطح المكتب.
</p>

<h3>
	تطبيقات الويب
</h3>

<p>
	تطبيق الويب web application أو اختصارًا web app هو برنامج تفاعلي تم إنشاؤه باستخدام تقنيات الويب الأساسية <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> و <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> و<a href="https://wiki.hsoub.com/JavaScript" rel="external">جافا سكريبت JavaScript</a> وهو يخزن ملفات التطبيق والبيانات فيه على <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r574/" rel="">خادم ويب</a> بعيد ويعالج هذه البيانات.
</p>

<p>
	تُشغَّل تطبيقات الويب عبر أحد متصفحات الإنترنت مثل جوجل كروم أو فايرفوكس والانتقال إلى عنوان URL محدد خاص بالتطبيق ويعد محرر مستندات جوجل مثالًا على تطبيق ويب.
</p>

<p>
	قد يملك تطبيق الويب بعض القيود على استخدام الموارد مثل قيود على استخدام الكاميرا أو الميكروفون على أجهزة معينة، وقد يمنع من التفاعل مع جوانب معينة من نظام التشغيل مثل منع التطبيق من إرسال الإشعارات هذا لأنه يُشغل ضمن حاوية وسيطة تصله مع نظام التشغيل وهو المتصفح ويحتاج إلى اتصال بالإنترنت على عكس تطبيقات سطح المكتب التي تتواصل مباشرة مع نظام التشغيل ولا تحتاج إلى اتصال إنترنت -عادةً- لذلك فهي أسرع تفاعلًا وأكثر أمانًا.
</p>

<p>
	كي تتمكن من برمجة تطبيقات الويب يجب أن تضع بالحسبان أن هذه التطبيقات لها طرفان أو جهتان هما طرف العميل أو ما يعرف بالواجهة الأمامية للتطبيق وهي تتضمن المحتوى الذي تراه عند التفاعل مع تطبيقك مثل القوائم والأزرار والرسوم المتحركة، وطرف الخادم أو ما يعرف بالواجهة الخلفية للتطبيق وهي المسؤولة عن إدارة الخادم وإدارة البيانات عبر <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> وتحقيق وظائف الموقع.
</p>

<p>
	يمكنك تعلم برمجة الواجهة الأمامية Front-End Developer أو برمجة الواجهة الخلفية Back-End Developer فلكل منهما تقنيات وأدوات مخصصة سنفصلها في الفقرة التالية وفي حال كنت مسؤولًا عن برمجة كل من الواجهة الأمامية والخلفية بذات الوقت سيطلق عليك اسم مطور كامل Full Stack Developer.
</p>

<h4>
	تطبيقات الويب التقدمية PWAs
</h4>

<p>
	<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D8%AA%D9%82%D8%AF%D9%85%D9%8A%D8%A9-pwa%D8%9F-r1480/" rel="">تطبيقات الويب التقدمية Progressive Web Apps</a> أو اختصارًا PWA ويطلق عليها أيضًا اسم تطبيقات الويب للجوال Mobile web apps هي نوع حديث من تطبيقات الويب طورتها شركة جوجل كي تسمح لتطبيقات الويب بالعمل بطريقة مشابهة لتطبيقات الأجهزة المحمولة إلا أنها تطبيقات تعمل على المتصفح وهي بالأساس تطبيقات ويب مُغلفة بحاوية ويب مخصصة تُسمى على أجهزة الجوال عادة WebView توفر لها هذه الميزات يتم تحميلها فورًا بغض النظر عما إذا كنت متصلاً أو غير متصل بالإنترنت. وهي متوافقة مع كافة أنواع الأجهزة وأنظمة التشغيل ولكنها تسمح بالوصول فقط إلى ميزات النظام الأساسي التي توفرها المتصفحات.
</p>

<p>
	يسمح لك بتحميل هذه التطبيقات على المتاجر الرسمية مثل متجر جوجل بلاي ومتجر تطبيقات آبل وتثبيتها على أنظمة التشغيل ويندوز وماك بخلاف تطبيقات الويب العادية، وعند تشغيلها لا يبدو لك أنك في المتصفح بل يبدو أنك تشغل تطبيق جوال أو سطح مكتب عادي ومن الأمثلة على هذا النوع من التطبيقات نذكر Google Office Suite وتويتر لايت Twitter Lite وأوبر Uber و Pinterest …إلخ. وانظر مقال <a href="https://academy.hsoub.com/programming/general/%D8%AC%D8%B9%D9%84-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D8%AA%D9%82%D8%AF%D9%85%D9%8A-pwa-%D9%8A%D8%A8%D8%AF%D9%88-%D9%83%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-r1528/" rel="">جعل تطبيق الويب التقدمي PWA يبدو كتطبيق أساسي في نظام التشغيل</a> لمزيد من التفاصيل.
</p>

<p>
	يمكن لهذه التطبيقات العمل في الخلفية إذا توفر اتصال بالإنترنت من خلال تقنية خاصة تسمى <a href="https://academy.hsoub.com/programming/general/%D9%85%D9%81%D9%87%D9%88%D9%85-service-worker-%D9%88%D8%AA%D8%A3%D8%AB%D9%8A%D8%B1%D9%87-%D9%81%D9%8A-%D8%A3%D8%AF%D8%A7%D8%A1-%D9%88%D8%A8%D9%86%D9%8A%D8%A9-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r833/" rel="">منجز الخدمة service worker</a> وهي تستفيد من ميزة ذاكرة التخزين المؤقت في المتصفحات، وقد بدأ هذا النوع من التطبيقات يلقى رواجًا بين أوساط المستخدمين لا سيما أصحاب الأعمال الصغيرة ورغم ذلك لا يزال دعم نظام التشغيل لهذه التطبيقات محدودًا عند مقارنتها بتطبيقات الأجهزة المحمولة أو سطح المكتب كما أن العديد من الأجهزة والمتصفحات لا تدعم جميع وظائف التطبيقات التقدمية. ولمعرفة المزيد حول تطبيقات الويب التقدمية وفوائدها يمكنك الاطلاع على مقال <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D8%AA%D9%82%D8%AF%D9%85%D9%8A%D8%A9-pwa%D8%9F-r1480/" rel="">ما هي تطبيقات الويب التقدمية PWA؟</a>
</p>

<h2>
	تطبيقات الجوال والأجهزة المحمولة Mobile Apps
</h2>

<p>
	تطبيقات الجوال Mobile applications أو ما يعرف اختصارًا بالتطبيقات apps هي تطبيقات مصممة للعمل على الأجهزة المحمولة مثل الهواتف الذكية أو الأجهزة اللوحية ويتم تحميلها من متاجر التطبيقات الرسمية مثل جوجل بلاي Google Play ومتجر تطبيقات آبل App Store التي تضم ملايين التطبيقات المتنوعة التي تخدم كافة الأغراض والاستخدامات مثل تطبيقات شبكات التواصل الاجتماعي والأخبار والألعاب والصحة والرياضة والطبخ والتعليم وغيرها.
</p>

<p>
	تتضمن متاجر التطبيقات الرسمية ملايين التطبيقات المتنوعة التي تخدم كافة الأغراض والاستخدامات مثل تطبيقات شبكات التواصل الاجتماعي والأخبار والألعاب والتغذية والرياضة والصحة والتعليم والخرائط والتنقل GPS …إلخ.
</p>

<p>
	تقسم تطبيقات الجوال إلى عدة أنواع هي:
</p>

<ul>
	<li>
		تطبيقات الجوال الأصيلة Native mobile apps وهي تطبيقات مخصصة للعمل على جهاز محمول معين ولنظام تشغيل معين فقط.
	</li>
	<li>
		تطبيقات الجوال الهجينة Hybrid mobile apps وهي تطبيقات تستخدم تقنيات الويب لبناء تطبيقات الجوال وتعد بمثابة حل وسط بين التطبيقات الأصيلة وتطبيقات الويب.
	</li>
</ul>

<h3>
	تطبيقات الأجهزة الملبوسة Wearable Devices App
</h3>

<p>
	هي تطبيقات مخصصة للعمل على الأجهزة القابلة للارتداء وأشهرها الساعات الذكية والنظارات الذكية وكاميرات المراقبة وسماعات الرأس الذكية وتعتمد على تقنية <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D8%A3%D8%B4%D9%8A%D8%A7%D8%A1-iot-r1514/" rel="">إنترنت الأشياء IoT</a>.
</p>

<p>
	شاعت هذه التطبيقات حديثًا بسبب الانتشار الكبير للأجهزة الإلكترونية الذكية القابلة للارتداء وتُصنف أحيانًا ضمن تطبيقات الأجهزة المحمولة لأننا تتشابه نوعًا ما بعملية البرمجة فغالبية أنظمة تشغيل الأجهزة الملبوسة هي آندرويد حاليًا وبعضها له نظام تشغيل خاص مثل المنتجات التي تصدرها شركة آبل وغيرها.
</p>

<h2>
	لغات برمجة التطبيقات
</h2>

<p>
	في هذه الفقرة سنوضح أهم التقنيات والأدوات التي تستخدم في برمجة التطبيقات على اختلاف أنواعها فلكل نوع من أنواع التطبيقات التي ذكرناها سابقًا لغات وأدوات برمجية متخصصة.
</p>

<h3>
	لغات برمجة تطبيقات سطح المكتب
</h3>

<p>
	كي تتمكن من برمجة تطبيقات سطح المكتب عليك تعلم إحدى لغات البرمجة المتخصصة مثل:
</p>

<ul>
	<li>
		‏#C⁦
	</li>
	<li>
		++C⁦
	</li>
	<li>
		Objective-C
	</li>
	<li>
		جافا Java
	</li>
	<li>
		بايثون Python
	</li>
	<li>
		روبي Ruby
	</li>
	<li>
		جافا سكريبت JavaScript
	</li>
	<li>
		سويفت Swift
	</li>
	<li>
		جو Go
	</li>
</ul>

<p>
	يمكنك برمجة تطبيق سطح مكتب بالكامل من البداية بالاعتماد على إحدى لغات البرمجة فقط كل ما عليك هو تحديد نظام التشغيل الذي تريد تطوير تطبيقك له ثم تختار إحدى لغات البرمجة المناسبة لذلك النظام حيث تعد لغات مثل C++‎ و C#‎ مفضلة عند برمجة تطبيقات ويندوز، بينما تستخدم Objective-C في برمجة تطبيقات ماك أو إس macOS …إلخ.
</p>

<p>
	لكن انتبه إن برمجة التطبيقات بهذه الطريقة قد يستغرق منك وقتًا طويلاً وجهدًا مضاعفًا إن كنت تريد برمجة تطبيق يعمل على نظامي تشغيل مثل ويندوز وماك، لذا يمكنك الاعتماد على خيار آخر وهو تعلم المنصات أو <a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel="">أطر العمل</a> المساعدة التي تسرع من مهمة تطوير تطبيقات سطح المكتب وتحسن عملك من خلال توفير الكثير من العناصر الجاهزة وقد تمكنك من تطوير التطبيقات مرة واحدة متوافقة مع عدة أنظمة تشغيل ومن أبرز هذه المنصات:
</p>

<ul>
	<li>
		منصة إلكترون Electron JS وهي منصة مخصصة لتطوير تطبيقات تعمل على أنظمة ويندوز ولينكس وماك باستخدام نفس الكود البرمجي فهي تستخدم تقنيات تطوير الويب لتطوير تطبيقات سطح المكتب، ومن أشهرها تطبيق سلاك Slack و Visual Studio Code.
	</li>
	<li>
		منصة Universal Windows Platform أو اختصارًا UWP وهي منصة متخصصة في برمجة التطبيقات المخصصة للعمل على نظام التشغيل Windows10 و Windows11 تتيح لك تحقيق الدخل من تطبيقك من خلال تقنيات مثل عمليات الشراء والإعلانات داخل التطبيق أو عن طريق تحديد رسوم تنزيل قياسية على متجر تطبيقات مايكروسوفت.
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel="">إطار عمل</a> Cocoa الذي يستخدم لإنشاء تطبيقات سطح مكتب خاصة بأنظمة التشغيل iOS و OS X و macOS.
	</li>
</ul>

<h3>
	لغات برمجة تطبيقات الويب
</h3>

<p>
	هناك مجموعة من المهارات الفنية ولغات البرمجة المطلوبة في برمجة التطبيقات المخصصة للويب وفيما يلي نذكرها لكم حسب تخصص التطوير.
</p>

<h4>
	لغات برمجة الواجهة الأمامية لتطبيقات الويب
</h4>

<p>
	تستخدم ثلاث لغات أساسية في تطوير الواجهة الأمامية وهي:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/html/%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-html-r1702/" rel="">لغة HTML</a> لإنشاء بنية موقع الويب
	</li>
	<li>
		لغة CSS لتغيير مظهر موقع الويب
	</li>
	<li>
		لغة جافا سكريبت JavaScript لإضفاء التفاعلية على صفحة الويب.
	</li>
</ul>

<p>
	وهناك عدة مكتبات وأطر عمل مساعدة تسهل على المطورين مهمة برمجة وتطوير الواجهات الأمامية لتطبيقات الويب نذكر منها:
</p>

<ul>
	<li>
		<a href="https://wiki.hsoub.com/Next.js" rel="external">Next.js</a> المبني على مكتبة <a href="https://wiki.hsoub.com/React" rel="external">React</a>
	</li>
	<li>
		إطار عمل أنغولار <a href="https://academy.hsoub.com/programming/javascript/angular/%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-angularjs-r176/" rel="">Angular</a>
	</li>
	<li>
		إطار عمل فيو <a href="https://academy.hsoub.com/files/22-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-vuejs/" rel="">Vue</a>
	</li>
</ul>

<p>
	هذه أشهرها وهنالك غيرها الكثير.
</p>

<h4>
	لغات برمجة الواجهة الخلفية لتطبيقات الويب
</h4>

<p>
	يتضمن تطوير الواجهة الخلفية المهام التي لا يراها المستخدم والتي تعمل على الخوادم وتتعامل مع قواعد البيانات وخيارات تطوير الواجهة الخلفية كثيرة وليس محصورة بلغة برمجة معينة وهذا ما يميزها عن عملية تطوير الواجهات الخلفية لأن عملية البرمجة تعتمد على التواصل مع نظام التشغيل مباشرة وأغلب لغات البرمجة تفعل ذلك (باستثناء لغة جافا سكريبت إلا عبر بيئة Node.js التشغيلية)، لذا الخيار متاح أمامك لاختيار اللغة التي تعرفها أو تحب تعلمها، وكل لغة بطبيعة الحال لها أدوات ومكتبات وأطر عمل مساعدة ولن تكتب كل شيء من الصفر.
</p>

<p>
	ومن بين لغات برمجة الواجهات الخلفية لتطبيقات الويب نذكر:
</p>

<ul>
	<li>
		لغة بايثون Python مع إطار العمل جانغو Django أو فلاسك flask
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r2040/" rel="">لغة PHP</a> مع إطار العمل لارافل Laravel الشهير.
	</li>
	<li>
		لغة جافا سكريبت JavaScript مع بيئة Node.js
	</li>
	<li>
		لغة روبي Ruby مع إطار العمل ريلز Rails
	</li>
	<li>
		لغة جافا Java يمكن أيضًا أن تستخدم بشكل فعال في برمجة تطبيقات الويب
	</li>
</ul>

<h4>
	لغات برمجة تطبيقات الويب التقدمية
</h4>

<p>
	يتوقع أن تحظى برمجة تطبيقات الويب التقدمية بمستقبل باهر لكونها تطبيقات تعمل على أي متصفح ويب على أجهزة سطح المكتب والأجهزة المحمولة وتستخدم في برمجتها نفس التقنيات المستخدمة في تطوير تطبيقات الويب الأساسية HTML و CSS وجافا سكريبت.
</p>

<p>
	ولا تختلف برمجة تطبيقات الويب التقدمية عن برمجة تطبيقات الويب بالعموم فتطبيق الويب التقدمي ليس في نهاية المطاف سوى تطبيق ويب له ضبط مخصص بسيط فقط.
</p>

<p>
	عمومًا، ننصحك بالرجوع إلى مقال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع</a> لتفاصيل أوسع حول هذا المجال.
</p>

<h3>
	لغات برمجة تطبيقات الجوال والأجهزة المحمولة
</h3>

<p>
	من أبرز لغات <strong>برمجة تطبيقات الجوال الأصيلة</strong> نذكر:
</p>

<ul>
	<li>
		لغة جافا Java أو كوتلن Kotlin لتطبيقات أندرويد
	</li>
	<li>
		لغة Objective-C أو Swift لتطبيقات iOS
	</li>
	<li>
		لغات C#‎ و C++‎ وفيجوال بيزك لهواتف ويندوز
	</li>
</ul>

<p>
	كما توفر آبل Apple وغوغل Google أيضًا أدوات وحزم <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">تطوير البرمجيات</a> SDK التي يمكن للمطورين استخدامها لإنشاء تطبيقات الأجهزة المحمولة الأصيلة.
</p>

<p>
	ومن أجل <strong>برمجة تطبيقات الجوال الهجينة</strong> يمكنك استخدام لغات HTML و CSS وجافا سكريبت وبمجرد الانتهاء من عملية البرمجة يتم تجميع الكود البرمجي الخاص للاستخدام على Android و iOS أي يتم توفير تطبيق مخصص لكل نظام تشغيل أو منصة محددة تجميع خاص بها. كما يمكنك الاستعانة بأطر عمل مساعدة لبرمجة التطبيقات وتصديرها للعمل على مختلف المنصات مثل فلاتر Flutter و ريآكت نيتف React Native
</p>

<h3>
	برمجة تطبيقات الأجهزة الملبوسة
</h3>

<p>
	وكي تتخصص في <strong>برمجة تطبيقات الأجهزة الملبوسة</strong> عليك بدايةّ تحديد نظام التشغيل للجهاز المستهدف الذي تريد أن تطور له تطبيقك وتحدد لغات البرمجة والتقنيات المتاحة لهذه المنصة وبعدها يمكنك استخدام محاكي لاختبار تطبيقك وتصحيح أخطائه كما يمكنك اختبار تطبيقك على جهاز فعلي باستخدام USB أو Wi-Fi أو Bluetooth لتتمكن من تقييم تجربة المستخدم بشكل أفضل.
</p>

<p>
	ومن أبرز تقنيات برمجة التطبيقات المخصصة للأجهزة الملبوسة نذكر لغة سي C و PHP وجافا Java ولغة بايثون Python التي تعتبر لغة مثالية لتطوير تطبيقات إنترنت الأشياء، كما تعد جافا سكريبت JavaScript إحدى لغات البرمجة الأكثر شيوعًا لتطوير أجهزة iOS الملبوسة.
</p>

<p>
	وأخيرًا وليس آخرًا وفي هذا الصدد، يمكنك الرجوع إلى مقال <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%AC%D9%88%D8%A7%D9%84-r1801/" rel="">برمجة تطبيقات الجوال</a> لمزيد من التفاصيل أو إن أردت التخصص في هذا المجال.
</p>

<h2>
	كيف أتعلم برمجة التطبيقات
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="122430" href="https://academy.hsoub.com/uploads/monthly_2023_03/192086145_.png.f66a30485dc4506cc213461b6d85f28d.png" rel=""><img alt="تعلم برمجة التطبيقات" class="ipsImage ipsImage_thumbnailed" data-fileid="122430" data-ratio="62.50" data-unique="c2f4qbqc9" style="width: 800px; height: auto;" width="857" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.239f140487dbdbf9a3dc8fd0769360c3.png"> </a>
</p>

<p>
	إذا كنت تنوي العمل كمبرمج تطبيقات وتتخصص في كتابة الأكواد البرمجية لإنشاء برامج تؤدي مهام محددة بناءً على متطلبات العملاء وصيانة هذه البرامج وتحسينها فلا بد أنك لاحظت مدى التنوع الكبير في هذا المجال وتتساءل كيف أتعلم برمجة التطبيقات في كل هذا الزخم من لغات البرمجة والتقنيات والأدوات؟
</p>

<p>
	بالطبع لا يتوجب عليك تعلم كل هذه التقنيات وإنما عليك أن تركز جهودك بحسب نوع التطبيقات التي ترغب بتطويرها والعمل فيها ويفضل بدايةً أن تُحدد المجال الفرعي ضمن نوع التطبيق نفسه مثلًا في تطبيقات سطح المكتب حدد نظام التشغيل أو في تطبيقات الويب حدد إن كنت تريد التخصص في الواجهات الأمامية أم الخلفية وهكذا لأنه سيسهل عليك تحديد اللغات والتقنيات من البداية ويجنبك الضياع والتشتت.
</p>

<p>
	بعد تحديد التخصص بالضبط، يمكنك بدء رحلتك والبحث عن مصادر تعلم إذ سواءً اتبعت المسار الجامعي الذي لا تُدرَّس عملية برمجة التطبيقات بشكل مخصص أو يتم التطرق لأحد أنواعها بسطحية أو كنت تريد تعلم المجال بمفردك، فستحتاج إلى مصادر خارجية ومواد تخصصية وربما تكون هذه الحلقة الأصعب لذلك توفر أكاديمية حسوب العديد من مصادر التعلم المفيدة والمقالات والدروس المجانية لمعظم التقنيات ولغات البرمجة والأطر المنوعة التي ذكرناها في سياق مقالنا.
</p>

<p>
	توفر أكاديمية حسوب أيضًا دورات تدريبية متخصصة تساعدك على تعلم برمجة التطبيقات بسرعة من خلال التدرب العملي على برمجة تطبيقات حقيقية مثل <a href="https://academy.hsoub.com/learn/javascript-application-development/" rel="">دورة تطوير التطبيقات باستخدام جافا سكريبت</a> التي توفر العديد من المسارات التي تعلمك طريقة استخدام تقنيات الويب من أجل برمجة التطبيقات الهجينة مثل تطبيق مشاركة وصفات باستخدام أيونيك Ionic مع React.j وتطبيق طبيبي باستخدام React Native وتطبيق محادثة يشبه واتس أب باستخدام React Native وغيرها من المسارات.
</p>

<p>
	كما توفر الأكاديمية <a href="https://academy.hsoub.com/learn/ruby-web-application-development/" rel="">دورة تطوير تطبيقات الويب باستخدام لغة Ruby</a> التي تعلمك برمجة تطبيقات الويب وتطوير الواجهات الخلفية باستخدام إطار العمل Rails من بينها تطبيق شبكة اجتماعية وتطبيق مجتمع إلكتروني وغيرها من التطبيقات التي تؤهلك لدخول سوق العمل بسرعة واحترافية.
</p>

<p>
	وتقدم الأكاديمية كذلك <a href="https://academy.hsoub.com/learn/python-application-development/" rel="">دورة تطوير التطبيقات باستخدام لغة Python</a> والتي ستتمكن من خلالها من تطوير تطبيق لإدارة المهام و متجر إلكتروني متكامل باستخدام إطار العمل جانغو Django وهو إطار قوي يمكنك من تطوير مواقع الويب وتطبيقات ويب آمنة وسهلة الصيانة بسرعة كبيرة.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="450" id="ips_uid_648_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="800" data-embed-src="https://www.youtube.com/embed/1niwEWY7CN4"></iframe>
</p>

<h2>
	نصائح لتعلم برمجة التطبيقات
</h2>

<p>
	دعنا نختم مقالنا الشامل هذا بأهم النصائح والخطوات التي يمكنك اتباعها للبدء في برمجة التطبيقات أيًا كان نوعها:
</p>

<ol>
	<li>
		حدد فكرة التطبيق وكافة الميزات التي ستحققها في هذا التطبيق.
	</li>
	<li>
		صمم التطبيق وحدد النماذج الأولية له بمساعدة أدوات مثل Adobe XD و Moqups.
	</li>
	<li>
		اختر لغة البرمجة أو إطار العمل الأنسب لتطوير تطبيقاتك وتحقيق الأهداف المطلوبة منها. 4.استخدم بيئة تطوير متكاملة IDEs تسهل عليك كتابة التعليمات البرمجة وإكمالها وتوفر لك أدوات التصحيح.
	</li>
	<li>
		تعلم استخدام المنصات والأطر التي تسرع من وتيرة عملك وتوفر عليك الكثير من الوقت والجهد.
	</li>
	<li>
		تدرب على برمجة التطبيقات الخاصة بك بشكل عملي ونفذ الميزات واحدة تلو الأخرى وتدرب على حل المشكلات والأخطاء التي تواجهك في عملية التطوير كي تكتسب الخبرة.
	</li>
	<li>
		بعد الانتهاء من برمجة تطبيقاتك احرص على اختبارها جيدًا والتأكد من أن جميع الميزات تعمل كما هو متوقع قبل نشرها بشكل نهائي.
	</li>
</ol>

<h2>
	الخلاصة
</h2>

<p>
	بهذا نكون قد وصلنا لنهاية مقالنا الشامل الذي تعرفنا فيه على كل ما يخص مجال برمجة التطبيقات أحد مجالات البرمجة الرائجة والمطلوبة بكثرة في سوق العمل فلا غنى عن التطبيقات على اختلاف أنواعها سواء تطبيقات الويب أو الهاتف المحمول أو سطح المكتب في بيئة الأعمال لذا إذا كنت مهتمًا بالبرمجة والتطوير يمكنك بدء مسارك المهني في تطوير التطبيقات ما يضمن لك فرصة عمل مميزة.
</p>

<p>
	وشرحنا كذلك العديد من الطرق المختلفة التي تمكنك من برمجة التطبيقات المتنوعة وتأدية الوظائف المفيدة من خلالها لذا من الضروري أن تحدد بدقة نوع التطبيقات الذي تنوي التخصص فيه كي تكون خطة تعلم واضحة ولا تتشتت بين التقنيات المختلفة.
</p>

<p>
	إذا كان لديك أي تساؤل حول تعلم برمجة التطبيقات يسرنا أن تكتبه في التعليقات أسفل المقال، وإذا كنت قد بدأت بالفعل في العمل كمطور تطبيقات فما هو نوع التطبيقات التي تهتم ببرمجتها، وما هي التقنيات التي تستخدمها في عملك؟ يسرنا أن تشاركنا تجربتك ونصائحك.
</p>

<p>
	 
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r662/" rel="">دليلك الشامل لتعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة من الصفر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF-r1802/" rel="">برمجة تطبيقات الأندرويد</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1940</guid><pubDate>Mon, 03 Apr 2023 15:01:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; &#x623;&#x639;&#x644;&#x649; &#x62A;&#x62E;&#x635;&#x635;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629; &#x623;&#x62C;&#x631;&#x64B;&#x627;</title><link>https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D8%B9%D9%84%D9%89-%D8%AA%D8%AE%D8%B5%D8%B5%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A3%D8%AC%D8%B1%D9%8B%D8%A7-r1939/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_04/607100491_.png.41d37339194d8cf2fe0e16e427420b9b.png" /></p>
<p>
	تعرف البرمجة بأنها من الوظائف عالية المردود، لذلك نجد أن العديد من الأشخاص يتجهون إلى <span ipsnoautolink="true">تعلم تخصصات البرمجة</span> والعمل في أحد مجالاتها المختلفة رغبة منهم بالحصول على مهنة مرتفعة الدخل تضمن لهم مستقبلهم.
</p>

<p>
	وإذا كنت تتساءل ما هي أعلى تخصصات البرمجة مردودًا وما هي المسؤوليات المنوطة بكل تخصص في سوق العمل فأنت في المكان الصحيح حيث سنوضح لك في هذه المقالة أهم التخصصات البرمجية التي تحقق لك رواتب مجزية.
</p>

<h2>
	ما هي أعلى تخصصات البرمجة أجرا؟
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="123398" href="https://academy.hsoub.com/uploads/monthly_2023_04/252634568_.png.62fef381da48142d603da2b20fc0589c.png" rel=""><img alt="رواتب تخصصات البرمجة.png" class="ipsImage ipsImage_thumbnailed" data-fileid="123398" data-ratio="103.09" data-unique="73c2nm2lo" width="582" src="https://academy.hsoub.com/uploads/monthly_2023_04/.thumb.png.13a0f8f82c783725d0e3af268ae07d38.png"></a>
</p>

<p style="text-align: center;">
	 
</p>

<p>
	أظهر موقع Stack Overflow الشهير الذي يجمع خبرات آلاف المبرمجين لتبادل الأسئلة حول أي موضوع يتعلق بالبرمجة والتقنية، أن متوسط رواتب البرمجة قد ارتفع بنحو 23% بين عامي 2021 و2022 وقد اخترنا لكم اليوم من بين التخصصات الأعلى أجرًا وفق <a href="https://survey.stackoverflow.co/2022/#work-salary" rel="external nofollow" target="_blank">الاستبيان الذي أصدره الموقع نفسه نهاية عام 2022</a> عشرة تخصصات برمجية عالية المرود عالميًا.
</p>

<p>
	دعنا في الفقرات التالية نستكشف المزيد حول كل تخصص من هذه التخصصات، ونتعرف على متوسط أجره السنوي ونستعرض أهم الأعمال والمهام الوظيفية والتقنيات المنوطة بكل تخصص منها.
</p>

<h3>
	1. تخصص محترف أمن تكنولوجيا المعلومات Security professional
</h3>

<p>
	محترف أمن تكنولوجيا المعلومات هو الشخص المسؤول بشكل أساسي عن حماية أجهزة الحاسوب والشبكات والبرامج والبيانات الخاصة بالشركة أو المؤسسة التي يعمل بها من الوصول غير المصرح به وحمايتها من التلف أو التخريب.
</p>

<p>
	يعتبر هذا التحصص أعلى تخصصات البرمجة أجرًا حيث يبلغ متوسط دخله السنوي في الولايات المتحدة الأمريكية 91 ألف دولار، ولا غرابة في ذلك فهو دور محوري ومهم ومطلوب منه أن يتعامل مع المعلومات الحساسة الخاصة بالشركات التجارية أو المستشفيات أو الدوائر الحكومية التي تخزن كميات كبيرة من البيانات والمعلومات على أنظمتها ويبقى متيقظًا دومًا للتعامل مع أي انتهاكات أمنية تطالها كي تظل آمنة.
</p>

<p>
	قد يضم المجال نفسه عدة تخصصات تشمل استكشاف أخطاء الشبكة وإصلاحها وإدارة جدار الحماية والاختراق الأخلاقي وإدارة النظام وتحليل أمن المعلومات …إلخ. ويحتاج العمل فيه لامتلاك مجموعة من المهارات أهمها خلفية قوية في مجال تكنولوجيا المعلومات أو علوم الحاسوب وتوفر مهارات التحليل والتفكير المنطقي، ومعرفة بمفاهيم <a href="https://academy.hsoub.com/devops/security/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D8%A7%D9%84%D8%B3%D9%8A%D8%A8%D8%B1%D8%A7%D9%86%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87%D8%9F-r664/" rel="">الأمن السيبراني</a> وآخر المستجدات في هذا المجال وفهم <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> والشبكات والأنظمة، وخبرة في التعامل مع برامج مكافحة الفيروسات وجدران الحماية وبروكسي الويب إضافة لضرورة امتلاك معرفة كافية بقوانين وسياسات أمن المعلومات المعمول بها في بلده.
</p>
<iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3889" data-embedcontent="" data-embedid="embed6181254891" src="https://academy.hsoub.com/files/20-%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A/?do=embed" style="overflow: hidden; height: 473px; max-width: 502px; margin: auto;"></iframe>

<h3>
	2. تخصص برمجة DevOps
</h3>

<p>
	متخصص DevOps أو ما يعرف أحيانًا بمهندس DevOps وإذا كنت تتساءل عن معنى DevOps فهي دمج لكلمتين هما التطوير development والعمليات operations وقد ظهر هذا المفهوم لسد الفجوة الحاصلة بين تطوير البرامج وعمليات تكنولوجيا المعلومات فهو بمثابة غراء لاصق يربط كافة وظائف تكنولوجيا المعلومات مع بعضها البعض.
</p>

<p>
	ومتخصص DevOps هو شخص متخصص في تكنولوجيا المعلومات يعمل مع فريق مطوري البرمجيات وفريق مشغلي النظام والمسؤولين وموظفي عمليات تكنولوجيا المعلومات وغيرهم للإشراف على عمليات إصدارات الكود وضمان التعاون الفعال بينهم وإزالة العوائق التي تؤخر سير عملهم ويجعل عمليات <a href="https://trello.com/c/5c6Rr1nF/73-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA" rel="external nofollow">تطوير البرمجيات</a> أكثر كفاءة.
</p>

<p>
	يساوي أخصائي DevOps المحترف وزنه ذهبًا ويتقاضى راتبًا سنويًا مجزيًا يبلغ في الولايات المتحدة حوال 79 ألف دولار فهو يقدم فوائد جلية لأصحاب العمل من خلال جعل فرق التطوير وتقنية المعلومات تعمل معًا بشكل أفضل وتسريع إصدار تحديثات المنتجات وأتمتة جزء كبير من العمليات الداخلية وتوفير الكثير من الوقت على مهام أخرى.
</p>

<p>
	كي يقوم أخصائي DevOps بعمله على أكمل وجه عليه القيام بعدة أمور أهمها المهام الإدارية التي تحدد أوقات وأماكن وكيفية تنفيذ المشروع والتأكد من وضوح الأهداف والمواعيد النهائية للجميع وتصميم بنية تحتية تساعد على تسريع إصدار البرامج وإجراء اختبارات الأداء وتقييم جودة ووثوقية الأنظمة وأتمتة المهام المتكررة لجعلها تنفذ بوتيرة أسرع.
</p>

<p>
	ومن أهم المهارات التي يتوجب على متخصص DevOps امتلاكها هي المهارات الناعمة كالانضباط والتنظيم والتعامل مع الآخرين إضافة للمعرفة التقنية في <a href="https://academy.hsoub.com/programming/general/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">هندسة البرمجيات</a> أو <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">علوم الحاسب</a> فبالرغم من أن مهندسي DevOps لا يعملون بشكل مباشر على كتابة الأكواد البرمجية لتطوير المشاريع البرمجية، فهذه مهمة مطوري البرامج عادةً، إلا أنهم قد يحتاجون لكتابة أكواد برمجية لأتمتة المهام الرئيسية أو إنشاء مكونات إضافية تجعل أدوات التطوير والنشر تلبي احتياجات فرق العمل بشكل أفضل.
</p>

<p>
	ومن المفيد كذلك أن يتقن متخصص DevOps استخدام أي أدوات تساعده في أداء عمله وأهمها أدوات الأتمتة مثل Jenkins  وأدوات التحكم بالإصدارات مثل Git ومستودعات استضافة الكود مثل Github و Bitbucket وبرامج الحاويات مثل <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AF%D9%88%D9%83%D8%B1-docker-r607/" rel="">Docker</a> وأدوات إدارة المشاريع مثل <a href="https://ana.hsoub.com/" rel="external">أنا</a> و تريللو للتحقق من تقدم أعضاء الفرق والتأكد من أن الجميع يعمل وفق المسار الصحيح.
</p>

<p>
	إن أردت التعرف على المجال أكثر، فارجع إلى مقال <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%80-devops%D8%9F-r413/" rel="">ما هو DevOps</a>
</p>

<h3>
	3. تخصص محلل بيانات أو محلل أعمال Data or business analyst
</h3>

<p>
	يتطلب كل من مجال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">تحليل البيانات</a> أو تحليل الأعمال الفهم الدقيق لتحليلات البيانات ويفيد في هذا المجال استخدام تقنيات الذكاء الاصطناعي لتعزيز عملية اتخاذ القرارات، وهو من التخصصات المربحة التي يبلغ أجرها السنوي في الولايات المتحدة حوالي 69 ألف دولار ولكن قد تختلف المهام المطلوبة قليلًا بين المجالين.
</p>

<p>
	يحتاج محلل البيانات لامتلاك فهم قوي لكافة الأمور المتعلقة بعلوم البيانات، في حين يحتاج محلل الأعمال إلى التفاعل مع الأشخاص بصورة أكبر. فمحلل البيانات يعمل فقط مع البيانات ويستخدم العديد من الأدوات والتقنيات لجمع وتحليل البيانات وتحديد الضروري منها وإزالة كل ما هو خاطئ أو غير ضروري ثم معالجتها وإدارتها والتنبؤ بأي قرارات من شأنها مساعدة الأعمال على تحقيق أهدافها الاستراتيجية.
</p>

<p>
	أما محلل الأعمال فهو يعمل على حل المشكلات التنظيمية المختلفة وقد تختلف طبيعة عمله حسب احتياجات كل مؤسسة إلا أنه يكون مسؤولًا بشكل أساسي عن التحقق من متطلبات العمل وتحليل البيانات التجارية كالميزانيات ونتائج المبيعات وتقدير التكاليف والأرباح والتعاون مع فرق تكنولوجيا المعلومات لتنفيذ تغييرات معينة مثل تطوير منتج جديد أو التوسع في سوق جديد أو تحسين تجربة العملاء أو إحداث أنظمة جديدة لتكنولوجيا المعلومات بهدف تحسين العمل وحل مشاكله وزيادة أرباحه.
</p>

<p>
	كلا الاختصاصين ضروريان ومطلوبان بكثرة في المؤسسات المختلفة ومجالات العمل العديدة التي تولد يوميًا كمية هائلة من البيانات وتحتاج لإدارتها واستثمارها بأفضل طريقة، وهما يتطلبان وجود مجموعة مهارات أهمها معرفة قوية بالرياضيات والإحصاء والتحليل الرياضي وعلوم الحاسوب وبلغات البرمجة الإحصائية مثل Python أو R وبرامج الجداول الإلكترونية مثل Excel إضافة لمهارات جيدة أساسيات الذكاء الاصطناعي وقدرة جيدة على التواصل وإدارة المهمام.
</p>

<p>
	لمزيد من التفاصيل، ارجع إلى مقال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">الدليل الشامل إلى تحليل البيانات</a>.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي AI" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<h3>
	4. تخصص برمجة الواجهة الخلفية Back-end Development
</h3>

<p>
	مطور الواجهة الخلفية هو المسؤول عن كتابة الكود البرمجي الذي يعمل من طرف الخادم والذي يعالج بيانات المواقع وينفذ كافة العمليات والإجراءات المطلوبة على مواقع الويب ويعمل على صيانتها وتحسين أمنها ويتعامل مع <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> وواجهة برمجة التطبيقات <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr> وغيرها من الوظائف الأخرى التي تجري خلف كواليس متصفحات المستخدمين عند تنفيذ أي إجراء على مواقع الويب.
</p>

<p>
	من أهم المهارات التقنية التي عليك تعلمها لتتمكن من العمل كمطور واجهة خلفية معرفة بأحد لغات برمجة الويب التي تعمل على الخادم مثل بايثون و PHP وروبي …إلخ. وكيفية التعامل مع قاعدة البيانات <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-api-r1314/" rel="">وواجهة برمجة التطبيقات <abbr title="Application Programming Interface | واجهة برمجية"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr></abbr></a> وإدارة ذاكرة التخزين المؤقت والتعامل مع الاستضافات إضافة لمعرفة أهم الأدوات وأطر العمل التي تساعده في عملية التطوير ومعرفة قواعد البرمجة التي تمكنه من بناء مواقع عالية الجودة ومكتوبة بكود نظيف.
</p>

<p>
	من المستحسن كذلك أن يكون لديه معرفة أساسية بتقنيات الواجهة الأمامية مثل HTML و CSS وجافا سكريبت، إضافة للمهارات الأخرى مثل التفكير التحليلي وحل المشكلات والتعاون الفعال ومهارات التواصل الشفوي والكتابة لأنه يحتاج عادة للتواصل مع مدراء المشاريع البرمجية ومطوري الواجهة الأمامية.
</p>

<h3>
	5. تخصص برمجة الواجهة الأمامية Front-end Development
</h3>

<p>
	مطور الواجهة الأمامية هو المسؤول عن تطوير <a href="https://academy.hsoub.com/design/user-interface/%D9%85%D8%B3%D8%AA%D9%82%D8%A8%D9%84-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-%D8%A7%D9%84%D8%AC%D9%8A%D9%84-%D8%A7%D9%84%D9%82%D8%A7%D8%AF%D9%85-%D9%85%D9%86-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-r792/" rel="">واجهة المستخدم</a> UI أو الجزء الأمامي من مواقع وتطبيقات الويب وإنشاء عناصر التصميم التي يراها المستخدمون ويتفاعلون معها ويتأكد من أن مظهر وتخطيط الموقع مناسب على كافة المتصفحات وأنظمة التشغيل ومتجاوب مع كافة أحجام الشاشات وأنه سهل التصفح ويحسن من تجربة المستخدم.
</p>

<p>
	كما أن مطور الواجهة الأمامية قد يحترف بالتصميم أيضًا فهذا يكسبه ميزة إضافية في مجال العمل لأن مطور الواجهة الأمامية الذي يعرف كيف يصمم الموقع ويدرك نظريات التصميم ودلالات الألوان ويصمم واجهات احترافية ثم يبرمجها إلى مواقع ويب سيغني صاحب العمل عن تعيين مصمم أو الاعتماد على تصاميم جاهزة.
</p>

<p>
	كي تختص في مجال تطوير الواجهة الأمامية لمواقع الويب والتطبيقات عليك بداية تعلم لغات الويب التالية HTML و CSS و JavaScript التي تعمل معًا لتحديد شكل صفحات الويب وتسمح للمستخدمين بالوصول إلى الموقع والتفاعل معه. عند زيارة أحد مواقع الويب في حين يهتم مطور الواجهة الخلفية كما ذكرنا بتطوير كل ما يجري وراء الكواليس لموقع الويب هذا مثل تخزين البيانات أو الأمان أو أداء الموقع أو أي وظائف أخرى من جانب الخادم.
</p>

<p>
	كما أن امتلاكك للحس الفني وللمعرفة الأساسية في مبادئ تصميم واجهة المستخدم التي تحدد التخطيط الرسومي للتطبيق UI و تصميم تجربة المستخدم التي تحدد كيف يتفاعل المستخدم مع التطبيق UX واطلاعك على كل جديد في اتجاهات التصميم سيكون نقطة في صالحك.
</p>

<p>
	يعد تطوير الواجهة الأمامية هو أحد اختصاصات البرمجية مستمرة النمو والتي عليها طلب مرتفع في سوق العمل كما أنها توفر لك إمكانية العمل بشكل مستقل عن بعد وأنت مرتاح في منزلك ويبلغ متوسط الراتب الأساسي لمطور الواجهة الأمامية 60 ألف دولارًا كما يتوجب عليك تعلم أطر عمل هذه التقنيات وفهمها بشكل جيد لتطوير المواقع بشكل فعال واحترافي إضافة لبرامج التحكم في الإصدارات مثل GitHub التي تتعقب وتتحكم في التغييرات في الكود الخاص بك.
</p>

<h3>
	6. تخصص برمجة التطوير الشامل Full-stack Development
</h3>

<p>
	التطوير الشامل Full Stack Development هو أحد مجالات البرمجة المطلوبة بكثرة في سوق العمل والتي تتطلب منك أن تكون محترفًا وخبيرًا في تطوير كل ما يتعلق بمواقع وتطبيقات الويب سواء الواجهة الأمامية من طرف العميل أو الواجهة الخلفية من طرف الخادم. توظف الشركات هذا النوع من المطورين إما ليكونوا مسؤولين عن <a href="https://khamsat.com/create-website" rel="external">تطوير المواقع</a>
 من الألف إلى الياء لا سيما في المواقع البسيطة والمتوسطة أما في حال تطوير تطبيقات ويب كبيرة ومعقدة فتحتاج الشركات إلى تعيين مطوري واجهة أمامية وخلفية إضافة لمطور مكدس كامل بغرض الاستفادة من خبراتهم في تقديم الدعم والمساعدة لفريق تطوير الواجهة الخلفية وفريق تطوير الواجهة الأمامية على حد سواء وهم دائمًا متأهبون لتقديم المساعدة كلما دعت الحاجة كما يمكنهم العمل مع مصممي الجرافيك لتصميم ميزات جديدة للتطبيقات.
</p>

<p>
	مطور الويب الشامل شخص موهوب ولهذا يحظى براتب مرتفع يبلغ وسطيًا في الولايات المتحدة الأمريكية 66 ألف دولار سنويًا وهو يملك مهارات شاملة متنوعة في لغات البرمجة التي تعمل من طرف العميل مثل HTML و CSS وجافا سكربت أو التي تعمل على الخادم مثل مثل Python و Ruby و PHP ولديه معرفة جيدة في التعامل مع قواعد البيانات المختلفة مثل SQL و NoSQL والتعامل مع أنظمة التحكم في الإصدارات مثل Git وواجهات برمجة التطبيقات مثل REST إضافة لامتلاك مهارات في التصميم الجرافيكي وإدارة واجهات المستخدم UI UX.
</p>

<p>
	ولكونه شخص متعدد المهارات يحتاج للقيام بعدة مهام في وقت واحد لذا من الضروري أن يتمتع ببعض المهارات الشخصية مثل إدارة الوقت والقدرة على تحديد الأولويات لتسليم العمل ضمن الوقت المطلوب.
</p>
<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			أنشئ موقع احترافي لأعمالك وعزّز حضورك الرقمي
		</p>

		<p class="banner-subtitle">
			صمم موقع إلكتروني فريد وجذاب لعملائك في دقائق دون خبرة برمجية باستخدام سنديان منشئ المواقع العربي
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://sndian.com/?utm_source=academy.hsoub.com&amp;utm_medium=referral&amp;utm_campaign=cademy.hsoub.com-CTA-Block" rel="external">أطلق موقعك الآن</a>
		</div>
	</div>
</div>


<h3>
	7. تخصص برمجة العتاد أو التطبيقات المدمجة Embedded applications or devices Development
</h3>

<p>
	مع تقدم التقنيات ونمو <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%88-%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D8%A3%D8%B4%D9%8A%D8%A7%D8%A1-iot-r1783/" rel="">إنترنت الأشياء IoT</a> ومساهمة البرمجة في كافة الأجهزة من حولنا كالساعات الذكية والألعاب والأجهزة الطبية وصولًا للروبوتات المختلفة، أصبح التخصص في مجال تصميم وتنفيذ برامج مخصصة لهذه الأجهزة المحددة والذي يؤدي غرضًا محددًا اسم تطوير التطبيقات المدمجة أو تطوير العتاد.
</p>

<p>
	هذا الاختصاص البرمجي تنافسي وعالي الأجر ضمن مجالات البرمجة فإذا كنت ترغب في العمل في تخصصات متقدمة مثل العلوم الطبية أو صناعة السيارات أو صناعة الإلكترونيات أو حتى علوم الفضاء فهذا الاختصاص يناسبك.
</p>

<p>
	لكنك تحتاج للعمل في هذا التخصص البرمجي إلى امتلاك مجموعة من المهارات أهمها تعلم إحدى لغات البرمجة المخصصة لتطوير العتاد مثل بايثون أو C أو C++‎ وفهم أنظمة الشرائح الإلكترونية والأجهزة المدمجة والإلكترونيات والأجهزة الطرفية والمترجمات ومعرفة جيدة بالأمن السيبراني للتأكد من أن البرامج والتطبيقات التي تطورها آمنة وموثوقة وتحتاج بالطبع لامتلاك مهارات في التواصل وحل المشكلات والقدرة على العمل ضمن فريق.
</p>

<p>
	كما يمكنك البدء في مجال برمجة العتاد بنفسك من خلال استخدام شرائح مثل <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D9%85%D8%A7-%D9%87%D9%8A-%D9%84%D9%88%D8%AD%D8%A9-%D8%A3%D8%B1%D8%AF%D9%88%D9%8A%D9%86%D9%88-arduino%D8%9F-r1800/" rel="">أردوينو Arduino</a> أو <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%AC%D9%87%D8%A7%D8%B2-%D8%B1%D8%A7%D8%B3%D8%A8%D9%8A%D8%B1%D9%8A-%D8%A8%D8%A7%D9%8A-raspberry-pi-r1356/" rel="">راسبيري باي</a> Raspberry Pi فهي متوفرة في الأسواق ويمكنك من خلالها تعلم استخدام وتطوير الإلكترونيات والتحكم في الأشياء من حولك.
</p>

<h3>
	8. تطوير التطبيقات تجارية أو تطبيقات سطح المكتب Desktop or Enterprise Applications Development
</h3>

<p>
	هذا التخصص البرمجي يهتم بتطوير البرامج التي تعمل على سطح المكتب وتكون مخصصة للعمل على نظام تشغيل ويندوز Windows أو ماك macOS أو لينكس Linux أو غيرها من أنظمة تشغيل سطح المكتب الأخرى. بمعنى آخر البرامج أو التطبيقات المخصصة للتثبيت والإعداد على أجهزة الحاسوب الشخصية وهي تتميز بوجود واجهة مستخدم رسومية ولا تحتاج للاتصال بالإنترنت كي تعمل ولا يخفى عليك هذا النوع من التطبيقات فأنت تستعملها يوميًا.
</p>

<p>
	كما يمكن تطوير تطبيقات سطح مكتب مخصصة تسمى في هذه الحالة تطبيقات الأعمال أو التطبيقات المؤسساتية enterprise applications وهي برامج تطورها الشركات لتحسين أعمالها وزيادة كفاءتها وإنتاجيتها مثل برامج المحاسبة وإدارة المخزون وبرامج إدارة رواتب الموظفين والموارد البشرية وغيرها من الوظائف المهمة لتسيير عمل المؤسسة وإدارة مواردها.
</p>

<p>
	كان الاعتماد على تطبيقات سطح المكتب بصورة أكبر قبل أن تشتهر تطبيقات الويب التي تكون مثبتة على خادم بعيد نصل إليه عبر متصفحاتنا إلا أن تطبيقات سطح المكتب لم تفقد زهوتها ولا زالت أجهزة حواسيبنا ممتلئة بهذه التطبيقات التي نعتمد عليها لأداء العديد من المهام ولا زال تخصص تطوير سطح المكتب مطلوبًا لاسيما للتطبيقات التي تتطلب سرعة في التنفيذ ودرجة أمان عالية ولا تتطلب الاتصال بالإنترنت وهو تخصص مجزٍ ومطلوب في سوق العمل ويبلغ متوسط راتب مطور هذه التطبيقات في الولايات المتحدة حوالي 67 ألف دولار سنويًا.
</p>

<p>
	كي تتخصص في مجال تطوير و<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" rel="">برمجة تطبيقات سطح المكتب</a> عليك تعلم إحدى <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> المخصصة وأبرزها جافا وبايثون و C و C++‎ و C#‎ و Java و Go …إلخ. كما يفيدك في هذا التخصص تعلم أحد أطر عمل تطوير تطبيقات سطح المكتب مثل Electron و WPF.
</p>

<h3>
	9. تخصص برمجة الألعاب Game Development
</h3>

<p>
	تعد برمجة ألعاب الفيديو إحدى تخصصات البرمجة المربحة والمميزة والتي تشهد ازدهارًا كبيرًا في الآونة الأخيرة وهي تخصص يجمع بين مهارات البرمجة ومهارات تصميم الرسوميات ويصل متوسط راتبها في الولايات المتحدة إلى 63 ألف دولار سنويًا فمبرمج الألعاب هو مسؤول عن عدة أمور متقدمة من بينها تصميم كافة العناصر المرئية للألعاب كالنار والجليد والأشجار بحرفية عالية ثم البدء ببرمجتها من خلال دمج كافة العناصر المرئية والصوتية وتحويلها إلى منتج نهائي قابل للعب.
</p>

<p>
	للتخصص في تصميم الألعاب والرسومات تحتاج إلى معرفة جيدة بالرياضيات واستراتيجيات اللعب ورواية القصص وبإحدى لغات البرمجة المخصصة لتطوير الألعاب مثل بايثون أو جافا أو C++‎ ومعرفة منصات ومحركات الألعاب الاحترافية مثل Unity 3D و Unreal Engine/ إضافةً لمعرفة أدوات إنشاء الرسومات ثنائية الأبعاد وثلاثية الأبعاد مثل Maya و Blender و3D Max وأدوات الصوت التي تمكنك من إنشاء مؤثرات صوتية مثل Pro Tools كما تحتاج لمعرفة <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">بالذكاء الاصطناعي</a> في حال كنت تريد تطوير ألعاب تتضمن شخصيات ذكية تحاكي شخصيات العالم الحقيقة وقادرة على إظهار المشاعر المناسبة واكتشاف العناصر من حولها واتخاذ القرارات بشأنها من خلال التعلم الآلي.
</p>

<h3>
	10.تخصص برمجة تطبيقات الجوال
</h3>

<p>
	يعد تطوير تطبيقات الهاتف المحمول أحد تخصصات البرمجة المطلوبة والرائجة في سوق العمل نظرًا للاعتماد الكبيرة على استخدام الجوالات لتسيير الأعمال اليومية كالتعلم والتسوق ودفع الفواتير …إلخ، ويصل متوسط راتبها في الولايات المتحدة إلى 56 ألف دولار سنويًا.
</p>

<p>
	الجدير بالذكر أن تخصصك في هذا المجال يمكنك من إنشاء تطبيقات تعمل على الهواتف الذكية والأجهزة المحمولة الأخرى وتفتح لك باب العمل ضمن شركة أو بشكل مستقل. وكي تتمكن من تعلمه عليك تعلم أساسيات علوم الحاسوب وامتلاك معرفة جيدة بلغات البرمجة المخصصة لتطبيقات الجوال مثل بايثون وجافا و كوتلن والتعامل مع أنظمة التشغيل لمختلف أنواع الأجهزة مثل iOS وأندرويد ومعرفة كيفية تخزين البيانات على الجوال وكيفية تحديثها وحذفها ومعالجتها.
</p>

<p>
	ويمكن أن يمتلك مطور الأجهزة المحمولة معرفة أساسية بتصميم واجهات المستخدم UX و UI أو يعتمد على مصممين متخصصين في تصميم واجهة المستخدم ومصممي UX ومصممي الجرافيك لتصميم التطبيقات التي يحتاج إلى تطويرها.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على أفضل لغات البرمجة وأكثر تخصصات البرمجة المربحة التي تدر مبالغ طائلة للمتخصصين فيها وتوفر لهم مستقبلًا آمنًا ماليًا، وتعرفنا على أهم المهارات التي عليك تعلمها لتتقن كل تخصص من هذه التخصصات وتضمن مستقبلًا مهنيًا ناجحًا ومهنة مميزة ومرموقة تحقق لك أحلامك، وإذا كنت مهتمًا بمعرفة المزيد من التخصصات البرمجية التي يمكنك العمل بها ومعرفة أهم تقنياتها أنصحك بمطالعة مقال <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">مجالات البرمجة</a>.
</p>

<p>
	ما هو التخصص المفضل لك من بين هذه التخصصات وهل بدأته بتعلمه فعلًا؟ شاركنا رأيك في التعليقات أسفل المقال.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%AC%D9%88%D8%A7%D9%84-r1801/" rel="">برمجة تطبيقات الجوال</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/" rel="">دليلك الشامل إلى برمجة التطبيقات</a><br>
		 
	</li>
</ul>
]]></description><guid isPermaLink="false">1939</guid><pubDate>Thu, 30 Mar 2023 15:00:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644; &#x625;&#x644;&#x649; &#x62A;&#x62D;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; Data Analysis</title><link>https://academy.hsoub.com/programming/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_03/111834371_.png.4b125c47b07835db2a8b2fa2ae3eda1a.png" /></p>
<p>
	نعيش اليوم في عصر يتصف بتفجر غير مسبوق في كمية البيانات، فكل الأجهزة التي نتعامل معها في حياتنا اليومية سواء هواتفنا الجوالة أو <a href="https://academy.hsoub.com/entrepreneurship/ecommerce/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D9%85%D8%AA%D8%A7%D8%AC%D8%B1-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A%D8%A9-%D9%88%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D8%A5%D9%8A%D8%B1%D8%A7%D8%AF%D8%A7%D8%AA%D9%87%D8%A7-r733/" rel="">مواقع التجارة الإلكترونية</a> التي نتسوق منها أو شبكات التواصل الاجتماعي التي نتصفحها بشكل يومي وحتى أجهزة الاستشعار الموجودة في أجهزة <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%88-%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D8%A3%D8%B4%D9%8A%D8%A7%D8%A1-iot-r1783/" rel="">إنترنت الأشياء</a> التي باتت منتشرة في كل مكان حولنا…إلخ. كلها تتعقبنا وتسجل بياناتنا والإجراءات التي نقوم بها والخيارات التي نتخذها ولك أن تتخيل كمية البيانات المهولة التي تولد عن كل هذا طوال الوقت!
</p>

<p>
	هذه البيانات الضخمة في شكلها الأولي لا تعني أي شيء في الواقع لذا كان لا بد من تحليلها واستخراج المعلومات المفيدة منها وهنا يأتي دور علم البيانات الحديث الذي يعالج كل جزء من البيانات التي يتم إنشاؤها اليوم لتطوير وتيرة الأعمال واتخاذ القرارات الصائبة والموثوقة التي تعتمد على هذه المعلومات.
</p>

<p>
	سنركز في مقال اليوم على أحد التخصصات المهمة في هذا العلم وهو <strong>تحليل البيانات Data analysis</strong> وهو التخصص الذي يهتم باستخلاص معلومات ذات قيمة من هذه البيانات الخام ونوضح أهميته في عالم الأعمال اليوم ونكتشف أهم الأدوات والتقنيات والمهارات التي تحتاجها لتصبح محلل بيانات محترف، كما سنكتشف أهم الفروقات بين علم البيانات وتحليل البيانات وهندسة البيانات ونسرد بعض الأمثلة الواقعية على شركات تستخدم تحليل البيانات لتحسين أعمالها بأسلوب بسيط وسهل الفهم بعيدًا عن المصطلحات المعقدة.
</p>

<h2>
	ما هو تحليل البيانات Data Analysis؟
</h2>

<p>
	علم تحليل البيانات Data analysis هو تنظيف وتحويل ونمذجة البيانات حتى تحويلها أخيرًا إلى معلومات مفيدة تساعد في اتخاذ قرارات أو توضيح رؤى، حيث يهدف إلى تحويل البيانات إلى معلومات والفرق بين البيانات والمعلومات هو أن الأولى عبارة أن أجزاء بيانات متناثرة تفتقد المعنى مثل عدد 25 أو اسم أحمد بينما الأخيرة هي بيانات لها معنى مثل أن العدد 25 هو عمر أحمد فأصبح له معنى، هذا على مستوى عدد فكيف لو كان لدينا آلاف أو ملايين البيانات والأعداد المماثلة، تخيل!
</p>

<p>
	يقوم محللو البيانات باستخراج البيانات الأولية وتنظيمها ثم تحليلها وتحويلها من أرقام غير مفهومة إلى معلومات مفسرة وواضحة وبعد الانتهاء من تفسير البيانات تصاغ النتائج التي تم التوصل إليها بشكل اقتراحات أو توصيات حول الخطوات التالية التي يجب اتخاذها في العمل وتتقاطع هذه المهام مع مهام <a href="https://academy.hsoub.com/programming/general/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">مهندسي البيانات</a>.
</p>

<p>
	يمكنك التفكير في مجال تحليل البيانات كشكل من أشكال ذكاء الأعمال أو ما يعرف استخبارات الأعمال Business intelligence واختصارًا BI، وهو علم يستخدم لحل مشاكل وتحديات معينة داخل المؤسسات والشركات، وتكمن أهميته وقوته في العثور على مجموعات وأنماط البيانات التي يمكنها أن تخبرنا بشيء مفيد وملائم حول مشكلة أو أمر معين من العمل يخص العملاء أو الموظفين أو المنتجات أو المخزون …إلخ.
</p>

<p>
	ولا يساعد هذا العلم على فهم السلوك الماضي فحسب بل يمكّننا من التنبؤ بالاتجاهات والسلوكيات المستقبلية وبهذا تكون أي قرارات تتخذ مدروسة بناءً على ما تخبرنا به البيانات وليست مجرد قرارات تعتمد على التخمين والحدس.
</p>

<h2>
	الفرق بين علم البيانات Data Science وتحليل البيانات Data Analysis
</h2>

<p>
	لا بد أن نعرف قبل الغوص في الفرق بين علم البيانات وتحليل البيانات أنّ كلا العلمين يتعامل مع البيانات الضخمة لكن لكل منهما نهجه الخاص. وعمومًا يشكل علم البيانات مظلة تضم تحتها علم تحليل البيانات وتستفيد من إمكاناته لكنه يغطي مجالًا أوسع في التعامل مع البيانات.
</p>

<p style="text-align: center;">
	يركز علم البيانات على إيجاد ترابط منطقي بين كم هائل من البيانات، بينما يركز تحليل البيانات على إيجاد ميزات الرؤى المستخلصة من تلك البيانات. بكلمات أخرى: علم البيانات هو فرع من علم البيانات يُعنى بالإجابة عن أسئلة محددة يطرحها علم البيانات وكيفية إنجاز أو تطبيق هذه الإجابات.<br type="_moz">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121192" href="https://academy.hsoub.com/uploads/monthly_2023_03/1164942004_.png.a2a888f814e1e8dc885d0508953daf7c.png" rel=""><img alt="علم البيانات وتحليل البيانات وهندسة البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121192" data-ratio="61.88" data-unique="1jll0zlbz" style="width: 600px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.7857a705ade8a1bfed274c5abc6a437a.png"></a>
</p>

<p>
	يقتضي الفرق بين علم البيانات وتحليلها اختلافًا في الطرق المستخدمة في العمل، إذ يستخدم عالم البيانات الرياضيات والإحصاء <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">وخوارزميات الذكاء الاصطناعي وتعلم الآلة</a> لتصحيح وتنظيف ومعالجة وتفسير البيانات الخام لاستخلاص الرؤى منها وإنجاز نماذج أولية توضح الترابط بين البيانات المدروسة.
</p>

<p>
	أما محلل البيانات فهو من يتفحص مجموعات البيانات ليجد مدلولها ويخلص بنتائج ملموسة، إذ يجمع محلل البيانات كميات كبيرة من البيانات المهيكلة ثم ينظمها ويحللها ليتعرف على الأنماط التي يبحث عنها، ثم يحاول بعد ذلك تصوير هذه الأنماط بعرضها على شكل مخططات ورسومات وغير ذلك من الأشكال التي تسهل الفهم والتفاعل مع النتائج.
</p>

<p>
	باختصار ينقّب علم البيانات في البيانات الخام بحثًا عن رؤى وأفكار منها، بينما يُستخدم تحليل البيانات في نقل هذه الرؤى والأفكار التي قد تبدو معقدة إلى لغة أبسط يفهمها التقنيون وغير التقنيين في المؤسسة التي طلبت الدراسة ويطورون أنظمة لأتمتة وتحسين الأداء العام للعمل مع البيانات.
</p>

<p>
	وقد أفردنا لعلم البيانات مقالًا مفصلًا بعنوان <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">علم البيانات Data science: الدليل الشامل</a> يمكنك الرجوع إليه للاستزادة حول تخصص علم البيانات.
</p>

<h2>
	أهمية تحليل البيانات في شركات الأعمال
</h2>

<p>
	تبرز أهمية تحليل البيانات في المقام الأول بسبب الكمية الضخمة من البيانات التي تجمع في مختلف المنظمات ومؤسسات العمل فعلى سبيل المثال تقوم شركات البيع بالتجزئة اليوم بجمع وتخزين كميات هائلة من البيانات وتتعقب أي منتجات أو خدمات قمت بتصفحها وشرائها وتسجل كافة الصفحات التي قمت بزيارتها على مواقعها الإلكترونية وتتعقب القنوات التي اشتريت منها وتتعرف على عاداتك في الإنفاق وتجمع كل شاردة وواردة عنك!
</p>

<p>
	هذه البيانات التي تجمع بكميات مهولة هي واحدة من أهم أصول الشركات التجارية وأكثرها استراتيجية في <a href="https://academy.hsoub.com/entrepreneurship/business/" rel="">عالم الأعمال</a> لكن هل تساءلت لماذا تتنافس الشركات فيما بينها لجمع كل هذه المعلومات؟ لأن التنقيب في هذه البيانات وتحليلها وفهمها يساعدها على استخراج كنوز منها وهذه الكنوز هي معلومات قيمة تساعد أصحاب العمل على اتخاذ أفضل القرارات وتطوير الأداء بشكل مضمون.
</p>

<p>
	فالحصول على البيانات وجمعها لا يكفي وحده وهو ليس الغاية في الواقع فماذا يفعل صاحب العمل بكميات مهولة من البيانات المختلفة في بنيتها والتي قد تكون في كثير من الأحيان مكررة أو ربما ناقصة أو غير دقيقة، صاحب العمل يريد في النهاية الخلاصة أو بكلام آخر يريد القصة التي ترويها هذه البيانات والمستنتجة من كل هذا الزخم كي يبني عليها قرارًا صائبًا بشأن الميزانية أو الأسعار أو الموارد وفي نهاية المطاف يسعى في المقام الأول لزيادة أرباحه النهائية وهنا يبرز دور علم البيانات وتحليل البيانات.
</p>

<p>
	فشركات البيع على سبيل المثال قادرة الاستفادة من تحليل هذه البيانات في معرفة العادات الشرائية لعملائها وتوصيتهم بأنسب المشتريات وتحديد التحسينات الأنسب في أسعارها وتتبع مخزونها وكشف عمليات الاحتيال ومقارنة مستوى المبيعات وغير ذلك الكثير.
</p>

<p>
	وكي تتمكن الشركات من ذلك يجب أن تتمكن من صياغة البيانات وتمثيلها بشكل تقارير مناسبة توضح لصناع القرار في مجال الأعمال المغزى منها وتمكنهم على فهم دلالاتها واتخاذ إجراءات موثوقة وسريعة بالاعتماد عليها وإحداث تغيير إيجابي داخل الشركات لذا تلجأ إلى تحليل البيانات الذي يفسر لأصحاب العمل كل ما تحاول البيانات إخبارهم به.
</p>

<h2>
	مهام محلل البيانات
</h2>

<p>
	يلعب محلل البيانات دورًا حيويًا ومهمًا في الشركات والمنظمات ويساعدها على فهم البيانات الضخمة المتوفرة لديها ويتعاون مع باقي أعضاء فريق البيانات للمساعدة في استخراج عن أي معلومات مفيدة وقيمة.
</p>

<p>
	كما يقوم محلل البيانات بجمع وتحليل البيانات لحل مشكلة معينة ويكون مسؤولًا عن تحويل البيانات الأولية إلى رؤى ذات مغزى ويستخدم البيانات والأفكار التي توفرها عملية تحليل البيانات لحل مشاكل محددة أو الإجابة على أسئلة محددة.
</p>

<p>
	وإليك قائمة بأهم المهام التي يقوم بها محلل البيانات:
</p>

<ol>
	<li>
		جمع البيانات الأولية
	</li>
	<li>
		معالجة البيانات
	</li>
	<li>
		ضمان أمن وخصوصية البيانات
	</li>
	<li>
		نمذجة البيانات
	</li>
	<li>
		فهم وتفسير البيانات
	</li>
	<li>
		عرض البيانات
	</li>
</ol>

<p>
	نستعرض في الفقرات التالية المزيد من التفاصيل حول كل مهمة من هذه المهام.
</p>

<h3>
	1. جمع البيانات الأولية
</h3>

<p>
	الخطوة الأولى هي جمع البيانات الخام ويمكن أن يقوم محلل البيانات بهذه المهمة ويجمع المعلومات المطلوبة فالبيانات التي سيحللها قد تكون موجودة في مصادر مختلفة، فهي إما أن تكون موجودة في قواعد بيانات الشركة مبعثرة هنا وقد يحتاج لجمعها من خلال إجراء استطلاعات الرأي أو من خلال تتبع بيانات زوار موقع الشركة على الويب، أو من خلال الاستعانة ببيانات الشركات المنافسة حيث يمكن للشركات تبادل البيانات فيما بينها لتحقيق مصالح مشتركة.
</p>

<h3>
	2. معالجة البيانات
</h3>

<p>
	بعد جمع البيانات يجب على محلل البيانات البدء بتنظيف وإعداد هذه البيانات الأولية لأنها في الغالب تحتوي على نسخ مكررة أو قيم خاطئة أو غير دقيقة أو مفقودة للحصول على بيانات سليمة وموثوقة ومفهومة وذات جودة عالية وقد يحتاج إلى تحويل البيانات من هيكل إلى آخر أو من نوع إلى آخر حتى يصبح من الممكن التعامل معها بإحدى <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> أو تخزينها في <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> كي تكون تفسيرات هذه البيانات دقيقة فإذا لم تكن البيانات التي نبني نحللها نظيفة وصحيحة لن تكون التحليلات والنتائج التي تحصل عليها دقيقة.
</p>

<p>
	أحيانًا وفي الشركات أو المشاريع المتوسطة إلى الكبيرة يتولى هذه المهمة مهندس البيانات الذي يركز على هذه المهمة نظرًا لكبر المشروع أو ضخامة البيانات بينما يركز محلل البيانات على عملية التحليل بعيدًا عن عملية الجمع والمعالجة والتجهيز الذي يكون دوره تاليًا.
</p>

<h3>
	3. ضمان أمن وخصوصية البيانات
</h3>

<p>
	قد يحتاج محلل البيانات لإخفاء هوية البيانات الحساسة والشخصية أو حذفها بالكامل لمنع الآخرين من الاطلاع عليها عندما لا تكون هناك حاجة لها للحصول على النتيجة التي يريدها، وأيضًا قد يتولى مهندس البيانات هذه المهمة وتأتي البيانات مشفرة ومحمية إلى محلل البيانات ليقوم بالخطوات التالية.
</p>

<h3>
	4. نمذجة البيانات
</h3>

<p>
	الخطوة التالية هي تحليل وتحديد نقاط البيانات المختلفة التي تم جمعها وإنشاءها بواسطة محللي البيانات واختيار أنواع البيانات المراد تخزينها وجمعها وإنشاء علاقات بينها وتحديد كيفية ترابط مجموعات البيانات مع بعضها البعض وكيفية عرض هذه البيانات وتساعد النمذجة الصحيحة للبيانات على تسريع وتيرة فهمها وإعداد التقارير الخاصة بها.
</p>

<h3>
	5. فهم وتفسير البيانات
</h3>

<p>
	بعد نمذجة البيانات تأتي الخطوة التالية وهي تفسير هذه البيانات من خلال تحديد الأنماط أو الاتجاهات في البيانات التي يمكنها أن توفر معلومات مفيدة تُستخلص منها إجابات على أسئلة توضح سلوكيات أو تفسر أسباب لمشكلات تخص العمل كما تُبنى عليها قرارات وغيرها.
</p>

<h3>
	6. عرض البيانات
</h3>

<p>
	الخطوة الأخيرة والضرورية التي يتوجب على محلل البيانات القيام بها هي عرض وتقديم البيانات بشكل يضفي عليها الحيوية فالمعلومات التي حصلت عليها يجب أن تصاغ على هيئة مخططات ورسوم بيانية وتقارير مكتوبة بألوان متناسقة وخطوط مفهومة ثم تقدم لأصحاب العمل المهتمين لمساعدتهم على فهم ما تعنيه هذه البيانات وتمكينهم من اتخاذ قرارات دقيقة وحيوية بشأنها.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			هل تحتاج إلى تطوير أعمال شركتك وتحسين فرصها؟
		</p>

		<p class="banner-subtitle">
			وظّف محلل بيانات محترف من مستقل لتحليل بياناتك وتقديم رؤى استراتيجية تعزز أداء نشاطك التجاري
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://mostaql.com/freelancers/data-analyst" rel="external" target="_blank">أضف مشروعك الآن</a>
		</div>
	</div>
</div>

<h2>
	مجالات تحليل البيانات
</h2>

<p>
	نظرًا للتطور التقني الحاصل في عصرنا الراهن فقد أصبح جمع البيانات وفرزها وتحليلها أمرًا ضروريًا لأي مجال من مجالات الحياة وبات من الضروري توظيف محللي البيانات في كافة قطاعات العمل، وفيما يلي نستعرض بعض المجالات والتخصصات التي يمكن لمحللي البيانات العمل فيها.
</p>

<h3>
	محلل الأعمال
</h3>

<p>
	محلل الأعمال هو المسؤول عن تحليل ومعالجة البيانات التي تساعد الشركات والمؤسسات على تفسير وتوثيق العمليات التجارية والمنتجات والخدمات والبرامج ويتمثل دوره الأساسي في زيادة كفاءة الأعمال.
</p>

<h3>
	محلل تسويق
</h3>

<p>
	محلل التسويق أو <a href="https://academy.hsoub.com/marketing/core-concepts-of-marketing/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%AC%D8%B1%D8%A7%D8%A1-%D8%A8%D8%AD%D8%AB-%D8%A7%D9%84%D8%B3%D9%88%D9%82-r637/" rel="">محلل أبحاث السوق</a> هو الشخص المسؤول عن جمع وتحليل بيانات المنافسين والعملاء فهو يدرس المنافسين ويبحث عن تفضيلات العملاء وظروف العمل واتجاهات السوق وأي معلومات أخرى تساعد في جهود التسويق للشركة مثل تحديد المبيعات المحتملة لمنتج أو خدمة ما أو تحديد المنتجات التي يفضلها الناس وتقدير تكلفتها وتحديد الفئات التي ستشتريها ويسعى بشكل أساسي لزيادة الإيرادات وتحسين الحملات التسويقية.
</p>

<h3>
	محلل العمليات
</h3>

<p>
	محلل العمليات أو محلل أبحاث العمليات هو المسؤول عن تحليل وتقييم البيانات بهدف تحسين العمليات التجارية وحل المشكلات الداخلية وضمان سير عمليات الشركة بسهولة وسلاسة وإنشاء نماذج التسعير والتسويق، فهو من يحدد الحملات التسويقية التي ستجلب عملاء جدد ويجد الطرق الأنسب لخفض التكاليف دون المساس بجودة المنتج أو الخدمة التي تقدمها الشركة.
</p>

<h3>
	محلل نظم تقنية المعلومات
</h3>

<p>
	يعرف محلل نظم تقنية المعلومات أيضًا باسم محلل النظم وهو متخصص تقني لديه معرفة واسعة بأنظمة التشغيل والبرامج والأنظمة الأساسية ومهمته الأساسية تحليل وتصميم وتنفيذ نظم المعلومات والعمل على مشاكل العمل باستخدام التقنيات والأدوات التي يحترفها.
</p>

<h3>
	المحلل المالي
</h3>

<p>
	المحلل المالي Financial Analyst هو شخص مسؤول عن جمع البيانات وتنظيم المعلومات وتحليل البيانات المالية السابقة للعملاء والشركات بهدف تقديم المشورة الأفضل حول كيفية إنفاق الأموال لتعظيم الأرباح وتقييم نتائج السندات والأسهم والاستثمارات الأخرى.
</p>

<h3>
	محلل كميات
</h3>

<p>
	محلل الكميات أو المحلل الكمي quantitative analyst هو شخص متخصص في حل المشكلات المالية وإدارة المخاطر باستخدام الأساليب الرياضية والإحصائية فهو يطور وينفذ نماذج متقدمة تساعد المؤسسات والشركات التي تعمل في مجال الاستثمار وتداول الأوراق المالية مثل شركات التأمين وشركات المحاسبة وشركات البرمجيات المالية على اتخاذ القرارات المناسبة وتحديد فرص الاستثمار والتسعير المناسبة وإدارة المخاطر.
</p>

<h3>
	محلل ذكاء الأعمال
</h3>

<p>
	محلل <a href="https://ar.wikipedia.org/wiki/%D8%B0%D9%83%D8%A7%D8%A1_%D8%A7%D9%84%D8%A3%D8%B9%D9%85%D8%A7%D9%84" rel="external nofollow" target="_blank">ذكاء الأعمال business intelligence</a> يحلل تقارير أبحاث السوق التي تسلط الضوء على أنماط السوق والاتجاهات التي قد يكون لها تأثير على عمليات الشركة وأهدافها المستقبلية ويعرض النتائج على الجمهور المناسب.
</p>

<h3>
	محلل استراتيجي
</h3>

<p>
	محلل استراتيجيات الشركة هو المختص في حل مشاكل العمل فهو يعتمد على تحليل البيانات التي تمكنه من توفير نتائج مفيدة تساعد الشركات على اتخاذ قرارات أفضل ومعالجة التحديات التي تواجهها وتحديد فرص النمو الجديدة للشركة وتطوير الخطط التي تحدد أفضل الطرق والاستراتيجيات لتحقيق الأهداف.
</p>

<h3>
	محلل طبي
</h3>

<p>
	يهتم المحلل الطبي أو محلل الرعاية الصحية بجمع وتنظيم وتحليل وتفسير البيانات الطبية مثل بيانات المرضى والعلاجات والمنتجات الطبية لتحسين العمليات التجارية للمستشفيات والمرافق الطبية وتطوير أدائها.
</p>

<h3>
	محلل الأمني
</h3>

<p>
	فحص المحلل الأمني البيانات لفحص أي تهديدات محتملة وتحديد ما إذا كان هناك هجوم قد وقع أو على وشك الوقوع. قد يستخدمون أيضًا معرفتهم الإحصائية والرياضية لتطوير طرق جديدة لجمع البيانات حول تهديدات محددة أو هجمات محتملة.
</p>

<h3>
	مدير تحليل البيانات
</h3>

<p>
	يوجه مدير تحليل البيانات فريق محللي البيانات في مقر العمل وينسق العمل بينهم ويشرف على عمليات تحويل البيانات الأولية إلى رؤى تجارية يمكن استخدامها لاتخاذ القرارات ويساعد في التوصية بحلول لإنجاز العمل والبحث عن طرق فعالة لجمع البيانات وإنشاء وتطوير النماذج الإحصائية المعقدة واستخدام الخوارزميات والاستراتيجيات الفعالة لتحليل البيانات.
</p>

<h3>
	مسؤول قاعدة البيانات
</h3>

<p>
	يراقب مسؤول قاعدة البيانات <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قاعدة البيانات</a> ويهتم بسلامة بياناتها وسلامة الأجهزة التي توجد عليها وهو يشارك في معالجة البيانات وتحويلها والتحقق من صحتها وتنظيفها لتلبية احتياجات العمل والمتطلبات كما يهتم بأمن هذه البيانات ومنح الوصول لها واستخدامها وفق احتياجات ومتطلبات العمل فقط وتقييد وصول المستخدمين غير المصرح بهم إليها.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			ارتقِ بأعمالك وابدأ التحول الرقمي
		</p>

		<p class="banner-subtitle">
			انقل نشاطك التجاري إلى الإنترنت وطور أنظمة رقمية شاملة لتنمية أعمالك مع خدمات الخبراء على خمسات
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://khamsat.com/move-offline-business-to-online" rel="external" target="_blank">ابدأ التحول الرقمي الآن</a>
		</div>
	</div>
</div>

<h2>
	أنواع تحليل البيانات
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121190" href="https://academy.hsoub.com/uploads/monthly_2023_03/596338540_.png.4365454a6d3a834358bf370786d4c5f2.png" rel=""><img alt="أنواع تحليل البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121190" data-ratio="61.88" data-unique="u1dpzlnvh" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.ac3acc966e867841e295c8324658ac92.png"> </a>
</p>

<p>
	يقسم تحليل البيانات إلى خمس مكونات أو أنواع وهي كالتالي:
</p>

<ol>
	<li>
		التحليل الوصفي Descriptive
	</li>
	<li>
		التحليل التشخيصي Diagnostic
	</li>
	<li>
		التحليل التنبؤي Predictive
	</li>
	<li>
		التحليل التقديري Prescriptive
	</li>
	<li>
		التحليل الإدراكي أو المعرفي Cognitive
	</li>
</ol>

<p>
	وكلما كان محلل البيانات أكثر خبرة كلما كان قادرًا على تحديد النوع الصحيح من التحليلات بما يتناسب واحتياجات العمل كي يضمن تحقيق أقصى استفادة من البيانات التي تمتلكها المؤسسة وبالتالي تحقيق أفضل النتائج من هذا التحليل.
</p>

<p>
	دعنا نتعرف بالتفصيل على طريقة إجراء كل نوع من هذه التحليلات وأهميتها في مكان العمل.
</p>

<h3>
	1. التحليل الوصفي Descriptive Analytic
</h3>

<p>
	التحليل الوصفي هو نوع التحليل الأبسط والأكثر استخدامًا فهو يمكن محلل البيانات من تحليل البيانات المتوفرة باستخدام أدوات تحليل مثل Google Analytics التي تمكنه من فهم ما جرى في مؤسسته أو شركته، فالتحليل الوصفي يوفر لمحلل البيانات <strong>الإدراك المتأخر</strong> لما يجري في العمل.
</p>

<p>
	على سبيل المثال إذا كنت محلل بيانات وحصل انخفاض مفاجئ في مبيعات موقع التجارة الإلكترونية الخاص بشركتك في شهر ما لن تقف مكتوف الأيدي لتنتظر هل ستتحسن المبيعات في الشهر التالي بل عليك استخدام التحليلات الوصفية لتحليل بيانات كافة الأشخاص الذين زاروا الموقع في هذا الشهر لمعرفة سبب ما حدث وهل هو ناتج عن انخفاض في عدد زيارات الموقع أو خطأ في أحد الصفحات أو مرتبط بموسم محدد وتعثر على إجابة لكافة التساؤلات حياله ووصف النتائج التي حصلت عليها لأصحاب العمل.
</p>

<p>
	يمكن أن تستعين في إجراء هذه المهمة بأدوات التحليل مثل جوجل أناليتكس Google Analytics وتستسخدم <a href="https://academy.hsoub.com/entrepreneurship/business/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D9%88%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D9%85%D8%A4%D8%B4%D8%B1%D8%A7%D8%AA-%D9%82%D9%8A%D8%A7%D8%B3-%D8%A7%D9%84%D8%A3%D8%AF%D8%A7%D8%A1-kpis-r1003/" rel="">مؤشرات قياس الأداء الرئيسية KPIs</a> التي تمكنك من تتبع الأداء ومعرفة مدى نجاح وفشل الأهداف الرئيسية.
</p>

<p>
	فالتحليلات الوصفية باختصار تساعد في معرفة ما حدث في السابق مثل انخفاض المبيعات أو زيادة الإيرادات أو نقص الموارد وتلخص مجموعات البيانات الكبيرة وتصف النتائج التي تم التوصل لها لأصحاب العمل وتستفيد منها في معرفة أسباب النجاح أو الفشل السابق وإنشاء تقارير بها.
</p>

<p>
	هذا النوع من التحليل على أهميته يعطي المحلل نظرة ثاقبة فقط حول ما إذا كان كل شيء في العمل يسير على ما يرام أم لا، لكنه في الواقع لا يفسر السبب الجذري لوقوعها لذا تعمد الشركات عادة على الدمج بين هذا النوع من التحليل وأنواع التحليلات الأخرى للحصول على رؤية أفضل.
</p>

<h3>
	2. التحليل التشخيصي Predictive Analytic
</h3>

<p>
	التحليلات التشخيصية هي الشكل الثاني لتحليل البيانات وهي تساعد أصحاب الأعمال في الإجابة عن السبب الأساسي في وقوع حدث ما أو العوامل التي تؤثر على سير العمل، فعندما يعرف محلل البيانات ما يحدث بالفعل في عمله باستخدام التحليلات الوصفية لكنه يريد أن يعرف الأسباب والعوامل التي تسببت بحدوثها بشكل جذري يأتي دور التحليل التشخيصي للإجابة عن أسئلة حول سبب وقوع الأحداث.
</p>

<p>
	على سبيل المثال كي يشخص محلل الأعمال إن كانت زيادة الأسعار الأخيرة على أسعار منتجات الشركة لها علاقة بانخفاض المبيعات يمكنه استخدام التحليل التشخيصي باستخدام برنامج إحصائي مثل Microsoft Excel أو يستخدم خوارزمية معينة تمكنه من تحليل بيانات المنتجات والعملاء وفحصها ومقارنتها للعثور على الإجابة الدقيقة.
</p>

<p>
	هناك العديد من المفاهيم الإحصائية التي يجب على محلل البيانات فهمها قبل أن يتمكن من إجراء التحليلات التشخيصية وأهمها اختبار الفرضيات والفرق بين الارتباط والسببية وتحليل الانحدار التشخيصي.
</p>

<p>
	تكمل تقنيات التحليلات التشخيصية التحليلات الوصفية الأساسية حيث يساعد دمج التحليلات التشخيصية والوصفية الشركات في العثور على العلاقات بين الأسباب والنتائج وفحص مؤشرات الأداء لاكتشاف سبب التحسن أو التراجع بدقة.
</p>

<p>
	بشكل عام تحدث هذه العملية في ثلاث خطوات:
</p>

<ol>
	<li>
		تحديد الشذوذ في البيانات فقد تكون هذه الحالات الشاذة تغييرات غير متوقعة فيمقياس أو سوق معين.
	</li>
	<li>
		جمع البيانات المتعلقة بهذه الحالات الشاذة.
	</li>
	<li>
		استخدم التقنيات الإحصائية لاكتشاف العلاقات والاتجاهات التي تشرح هذه الحالات الشاذة.
	</li>
</ol>

<h3>
	3. التحليل التنبؤي Predictive Analytic
</h3>

<p>
	يساعد التنبؤ بالمستقبل أصحاب الأعمال على توقع اتجاهات السوق وسلوكيات العملاء وكشف حالات الاحتيال قبل وقوعها وتحليل المنافسين لتحسين وبناء استراتيجيات حديثة لتحسين نتائج الأعمال.
</p>

<p>
	يعتمد التحليل التنبؤي على النتائج التي تم الحصول عليها من التحليل الوصفي والتشخيصي ويستخدم للعثور على إجابات حول الأمور التي من المحتمل أن تحدث في المستقبل بناءً على النتائج والأنماط السابقة.
</p>

<p>
	على سبيل المثال يمكن استخدام التحليل التنبؤي في الشركات والبنوك لتحليل التركيبة السكانية للعملاء وسجلات الدفع السابقة والمنتجات التي اشتروها وأي سلوكيات سلبية حديثة وقعت من قبلهم لتوقع العملاء الذين سيتأخرون في دفع المستحقات والفواتير المترتبة عليهم ولن يسددوها في الوقت المحدد مما يمكنهم من إدارة التدفقات المالية بشكل أفضل واتخاذ خطوات للتخفيف من حدوث هذه المشكلة مثل تقديم خيارات دفع أخرى أو إرسال رسائل تذكير إلى العملاء الذين تم التنبؤ بأنهم سيتأخرون في تسديد المستحقات وتحديد أفضل تاريخ ووقت لإرسال هذه الرسائل وأفضل طريقة للاتصال بهم مثل البريد إلكتروني أو المكالمة الهاتفية أو الرسائل النصية …إلخ.
</p>

<p>
	كما تستخدم النماذج التنبؤية بشكل كبير في مجال الرعاية الصحية وتحلل مجموعة من البيانات المتغيرة حول المرضى مثل العمر أو العلاجات السابقة أو تاريخ المرض ومعدل الكوليسترول والوزن للتنبؤ بما إذا كان الشخص عرضة للإصابة بأمراض معينة كالسكري أو النوبات القلبية أم هشاشة العظام أم لا.
</p>

<p>
	يعتمد إجراء التحليل التنبؤي على الخوارزميات الإحصائية المتنوعة وعلى تقنيات التعلم الإحصائي وخوارزميات التعلم الآلي مثل الشبكات العصبية وأشجار القرار والانحدار …إلخ. التي تساعد محلل البيانات على تقديم توصيات وتوفير إجابات للأسئلة المتعلقة بما قد يحدث في المستقبل ولكونها تحليلات تعتمد على التخمينات والاحتمالات فهي تعطي نتائج تقديرية قد لا تكون صحيحة ودقيقة بنسبة مئة بالمئة.
</p>

<h3>
	4. التحليل التقديري Prescriptive Analytic
</h3>

<p>
	التحليل التقديري هو الخطوة التالية التي تأتي بعد إجراء التحليل التنبؤي وهو يساعد الشركات على امتلاك رؤية ثاقبة عما يجب عليهم القيام به لحل مشاكل العمل بناءً على العوامل المشتقة من البيانات. فأثناء تحليل البيانات الضخمة لا تكون التنبؤات التي حصلنا عليها من المدخلات دقيقة كما ذكرنا وبالتالي لا يمكننا التيقن من السبب الحقيقي في حدوث مشكلات معينة وهنا يأتي دور التحليلات التقديرية.
</p>

<p>
	فعندما يحصل محلل البيانات على النتائج من التحليلات الوصفية والتشخيصية والتنبؤية ويعرف ما حدث ولماذا حدث ويتوقع ما قد يحدث في المستقبل يمكنه أن يستخدم التحليل التقديري لمساعدته في تحديد أفضل مسار للعمل وما الإجراءات التي يجب الإبقاء عليها وما الإجراءات التي يجب التخلي عنها لزيادة نتائج ومخرجات الأعمال.
</p>

<p>
	تعتمد تقنيات التحليلات التقديرية على <strong>تعلم الآلة</strong> لكونها قادرة على تحليل كميات كبيرة من البيانات بسرعة وكفاءة أكبر واختبار مجموعة كبيرة من الشروط والعثور على أنماط محددة في مجموعات البيانات الكبيرة وتقديم التوصيات بناء عليها.
</p>

<p>
	على سبيل المثال تستخدم خرائط جوجل التحليل التقديري لمساعدتك على اختيار وتقدير أفضل طريق عليك اتباعه للوصول لوجهتك من خلال الاعتماد على جميع البيانات ذات الصلة مثل المسافة والسرعة وحركة المرور إضافة للمعلومات السابقة المسجلة عن الأشخاص الذي سلكوا هذه الوجهة من قبل.
</p>

<p>
	ومن الأمثلة الأخرى على هذا النوع من التحليل توقع توصيات المحتوى المناسب لك على منصات التواصل الاجتماعي من خلال تحليل سجلات سلوكك والمحتوى الذي تشاهده وتتفاعل معه سواء على هذه المنصات نفسها أو على أنظمة أخرى وتمرير سلوكياتك السابقة لخوارزمية محددة تحلل هذه البيانات وتقدر بناء على ذلك نوع المحتوى الذي تهتم به وتقترحه لك.
</p>

<h3>
	5. التحليل المعرفي Cognitive Analytic
</h3>

<p>
	هذا النوع من التحليل هو الأكثر تقدمًا ولا زال في بداياته وهو مستوحى من الطريقة التي يعالج فيها دماغنا البشري البيانات أي أنه يحلل البيانات بذكاء يشبه <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A8%D8%B4%D8%B1%D9%8A-%D9%85%D9%82%D8%A7%D8%A8%D9%84-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-r1813/" rel="">ذكاء الإنسان</a> فهو يستخلص النتائج ويكتسب الخبرة من التعلم ويطور نفسه مع الزمن، ويساعدك على معرفة ما قد يحدث إذا تغيرت الظروف وتحديد أفضل الطرق للتعامل معها وهو أمر لا تستطيع التحليلات البسيطة القيام به.
</p>

<p>
	يعتمد هذا النوع من التحليل مجموعة من التقنيات الذكية مثل <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي وخوارزميات التعلم الآلي</a> ونماذج التعلم العميق والمزيد لمعالجة المعلومات واستخلاص النتائج من البيانات والأنماط الموجودة ويتوقع أن تصبح تطبيقاته واستخداماته أكثر فعالية بمرور الوقت من خلال تعلمه وتفاعلاته المستمرة مع البيانات ومع البشر.
</p>

<p>
	وباستخدام هذا النوع من التحليل ستتمكن من معالجة اللغة الطبيعية مباشرة مثل سجلات محادثة مركز الاتصال ومراجعات المنتجات فهو لا يفهم الكلمات في هذه النصوص فقط بل يفهم السياق الكامل لما يتم كتابته أو نطقه! على سبيل المثال تعد كل من Cortana من مايكروسوفت، و Siri من أبل، و Watson من IBM وآخرها ChatGPT من OpenAI روبوتات محادثة تستخدم التحليل المعرفي لتتفاعل معك بلغتك الطبيعية وتوفر لك المعلومات والرؤى التي تريدها.
</p>

<p>
	يمكن أن تستفيد الشركات من هذا التحليل للنظر في أنماط المشتريات من السنوات السابقة وتحديد المنتجات التي قد تكون شائعة العام المقبل وفهم سبب شعبية ورواج منتج معين وما إذا كانت شعبيته ستبقى في السنوات المقبلة مما يساعدها على تحديد فيما إذا كانت ستواصل تخزين كميات كبيرة من هذا المنتج الرائج أم لا كما يمكن للمؤسسات الطبية استخدام التحليل المعرفي لإعطاء أفضل العلاجات الممكنة للمرضى.
</p>

<p>
	هذه كانت نبذة عن أهم أنواع التحليلات التي يمكنك الاعتماد كمحلل بيانات عليها واختيار الأنسب من بينها لتعزيز مسار العمل والحصول على أي إجابات يحتاج صاحب العمل لمعرفتها لتعزيز تواجده في السوق أو زيادة أرباحه أو التخلص من مشاكل العمل الحالية أو المستقبلية …إلخ.
</p>

<p>
	دعنا نلخص هذه التحليلات كما يلي:
</p>

<ul>
	<li>
		إجراء التحليلات الوصفية لإدراك ما حدث بعد وقوعه.
	</li>
	<li>
		إجراء التحليلات التشخيصية إذا طلب منك معرفة لماذا حدث هذا الأمر.
	</li>
	<li>
		إجراء التحليلات التنبؤية إذا طلب منك أن تكون بعيد نظر وتعرف ماذا يمكن أن يحدث في المستقبل.
	</li>
	<li>
		إجراء التحليلات التقديرية لتكسب أصحاب العمل بصيرة ثاقبة يعرفون من خلالها ما الذي يجب عليهم فعله بعد ذلك؟
	</li>
	<li>
		إجراء التحليلات المعرفية للحصول على رؤية صحيحة وصائبة لما يجب أن يتم.
	</li>
</ul>

<h2>
	أهم أدوات وتقنيات تحليل البيانات
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121191" href="https://academy.hsoub.com/uploads/monthly_2023_03/1897561151_.png.950730095a6fdecd139b5ff58fbf6eea.png" rel=""><img alt="أدوات وتقنيات علم تحليل البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121191" data-ratio="63.88" data-unique="dnymoy60e" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.768ec22fa27ae6d50c0d100677c0654e.png"> </a>
</p>

<p>
	في السابق كان تحليل البيانات أمرًا صعبًا ومرهقًا بسبب عدم توفر التقنيات المساعدة فكانت البيانات تجمع يدويًا بطريقة مرهقة، لكن يمكن اليوم لمحلل البيانات الاستعانة بالكثير من أدوات تحليل وتمثيل البيانات المتوفرة لمساعدته على أداء عمله بسرعة وسهولة وفيما يلي نذكر أهم 10 أدوات في تحليل البيانات:
</p>

<ul>
	<li>
		برنامج مايكروسوفت إكسل Microsoft Excel
	</li>
	<li>
		برنامج Microsoft Power BI
	</li>
	<li>
		برنامج التحليل الإحصائي SAS
	</li>
	<li>
		إطار عمل أباتشي سبارك Apache Spark
	</li>
	<li>
		لغة بايثون Python
	</li>
	<li>
		لغة البرمجة R
	</li>
	<li>
		لغة الاستعلام الهيكلية SQL
	</li>
	<li>
		تطبيق Jupyter Notebook
	</li>
	<li>
		منصة KNIME
	</li>
	<li>
		برنامج Tableau
	</li>
</ul>

<p>
	دعنا نشرح كل أداة من هذه الأدوات وكيف يمكن لمحلل البيانات الاستفادة منه في عمله.
</p>

<h3>
	برنامج مايكروسوفت إكسل Microsoft Excel
</h3>

<p>
	يمكننا برنامج جدولة البيانات مايكروسوفت إكسل من إجراء الحسابات على البيانات وفرزها وتجميعها ومعالجتها والبحث فيها وعرضها بشكل رسوم بيانية وإنشاء النماذج وإعداد التقارير، لكن المشكلة في برنامج إكسل أنه ضعيف في التعامل مع البيانات الضخمة.
</p>

<h3>
	برنامج Microsoft Power BI
</h3>

<p>
	مايكروسوفت باور بي آي Microsoft Power BI هو برنامج احترافي لتحليل بيانات الأعمال وهو برنامج تجاري مدفوع لكنه يوفر نسخة مجانية بمواصفات محدودة وقد بدأ كمكوِّن إضافي لبرنامج Excel ثم أعيد تطويره عام 2010 وصدر كبرنامج مستقل.
</p>

<p>
	يوفر هذا البرنامج مجموعة أدوات متكاملة لتحليل بيانات الأعمال وهو برنامج احترافي يسمح للمستخدمين بإنشاء تقارير مرئية تفاعلية ولوحات معلومات وهو يتكامل مع برنامج إكسل و SQL Server وخدمات جوجل السحابية ويوفر العديد من الميزات الأخرى المفيدة لمحللي البيانات.
</p>

<h3>
	برنامج SAS
</h3>

<p>
	برنامج SAS هو أداة تحليل إحصائي تستخدم لتحليل معلومات وبيانات المؤسسات التجارية الكبيرة تم تطويره لتحديد سمات العملاء وإعداد التقارير واستخراج البيانات وإجراء التحليلات التنبؤية ويملك وحدات برمجية لاستخدامات متقدمة مثل مكافحة غسيل الأموال وتحليل لإنترنت الأشياء لكنه منتج مدفوع وسعره مرتفع نوعًا ما.
</p>

<h3>
	أباتشي سبارك Apache Spark
</h3>

<p>
	أباتشي سبارك هو<a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel=""> إطار عمل برمجي</a> سريع وديناميكي وسهل الاستخدام لمعالجة البيانات وهو يحتوي مكتبة غنية لخوارزميات التعلم الآلي ويستخدم عادة من قبل محللي البيانات وعلماء البيانات لمعالجة البيانات الضخمة وغير المهيكلة وإجراء مهام التحليل الثقيلة حسابيًا من خلال توزيعها على عدة حواسيب.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير التطبيقات باستخدام لغة Python
		</p>

		<p class="banner-subtitle">
			احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/python-application-development" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير التطبيقات باستخدام لغة Python" src="https://academy.hsoub.com/learn/assets/images/courses/python-application-development.png">
	</div>
</div>

<h3>
	لغة البرمجة بايثون Python
</h3>

<p>
	توفر <a href="https://academy.hsoub.com/programming/python/%D8%A7%D9%84%D9%85%D8%B1%D8%AC%D8%B9-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r735/" rel="">لغة البرمجة بايثون</a> لمحلل البيانات آلاف المكتبات المجانية التي تساعده على استخراج البيانات وتحليلها وإعداد التقارير عنها مثل مكتبات NumPy و pandas التي تبسط إجراء العمليات الحسابية ومكتبات Beautiful Soup و Scrapy لاستخراج البيانات من الويب ومكتبة Matplotlib لتمثيل البيانات رسوميًا وإعداد التقارير حولها.
</p>

<h3>
	لغة البرمجة R
</h3>

<p>
	لغة R هي لغة برمجة مفتوحة المصدر تستخدم في التحليل الإحصائي واستخراج البيانات وتوفر الكثير من الحزم المساعدة لمحللي البيانات بشكل مشابه لبايثون، ورغم أن كتابة التعليمات في لغة R أكثر تعقيدًا من لغة بايثون إلا أنها لغة مصممة خصيصًا للتعامل مع المهام الإحصائية وتمثيل البيانات المتقدم.
</p>

<h3>
	لغة الاستعلام الهيكلية SQL
</h3>

<p>
	تعد <a href="https://wiki.hsoub.com/SQL" rel="external" target="_blank">لغة SQL</a> أحد التقنيات الأساسية لتحليل البيانات وإعداد التقارير وهي لغة شائعة وسهلة التعلم ومرنة بشكل كبير ما يجعلها اللغة المفضلة لمحللي البيانات لفلترة البيانات والاستعلام عنها وإعداد التقارير …إلخ.
</p>

<h3>
	Jupyter Notebook
</h3>

<p>
	تطبيق <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A7%D9%84%D9%85%D9%81%D9%83%D8%B1%D8%A9-jupyter-notebook-%D9%84%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-python-3-r388/" rel="">Jupyter Notebook</a> هو تطبيق ويب مفتوح المصدر يسمح لمحللي البيانات بإنشاء مستندات تفاعلية تتضمن نصوص وأكواد ومعادلات رياضية ورسوم بيانية تشبه إلى حد ما مستندات وورد لكنها أكثر تفاعلية ومصممة خصيصًا لتحليل البيانات وهو متكامل مع أدوات تحليل البيانات الضخمة مثل Apache Spark.
</p>

<h3>
	برنامج KNIME
</h3>

<p>
	KNIME هي منصة مفتوحة المصدر وقائمة على السحابة تملك واجهة رسومية GUI سهلة الاستخدام تستخدم في مهام تحليل البيانات والتنقيب عن البيانات والتعلم الآلي تم تطويرها عام 2004 لصناعة المستحضرات الصيدلانية إلا أن قوتها في تجميع البيانات من العديد من المصادر في نظام واحد دفعت محللي البيانات إلى استخدامها في العديد من المجالات مثل تحليل العملاء وذكاء الأعمال والتعلم الآلي. وهي شائعة لدى الشركات الصغيرة ذات الميزانيات المحدودة.
</p>

<h3>
	برنامج Tableau
</h3>

<p>
	برنامج Tableau هو برنامج تجاري عملاق لتحليل البيانات وذكاء الأعمال يمكنه التعامل مع كميات كبيرة من البيانات ومعالجتها وإنشاء حسابات معقدة عليها، ويوفر استعلامات SQL لفلترة البيانات ويمكنك من كتابة استعلاماتك الخاصة وهو سهل الاستخدام ويملك واجهة رسومية GUI تعتمد تقنية السحب والإفلات.
</p>

<p>
	كانت هذه قائمة بأشهر أدوات والتقنيات المستخدمة. وتذكّر لا توجد أداة واحدة تفعل كل شيء! عليك كمحلل استخدام الأدوات التي تلبي حاجة عملك بأفضل صورة.
</p>

<h2>
	مصادر تعلم تحليل البيانات
</h2>

<p>
	ستجد في أكاديمية حسوب العديد من الدروس والمقالات التي تفيدك في تخصص تحليل البيانات ومن أبرز هذه المصادر <a href="https://academy.hsoub.com/apps/productivity/office/microsoft-excel/" rel="">دروس تعلم برنامج اكسل</a> المشروحة بطريقة منظمة ومبسطة تساعدك على تعلمه بسرعة وسهولة.
</p>

<p>
	وإذا كنت مهتمًا بتعلم لغة بايثون التي تعد من أهم لغات البرمجة المستخدمة في تحليل البيانات فقد وفرت لك أكاديمية حسوب قسم <a href="https://academy.hsoub.com/programming/python/" rel="">دروس ومقالات متنوعة حول لغة بايثون</a> وهي تُحدَّث باستمرار لذا كن على اطلاع دائم عليها لتتعلم كل جديد وإن كنت تفضل التعلم من الكتب المنهجية يمكنك تنزيل كتاب <a href="https://academy.hsoub.com/files/15-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86/" rel="">البرمجة بلغة باثيون</a> من أكاديمية حسوب وللمزيد من المصادر أنصحك بزيارة <a href="%5Bhttps://wiki.hsoub.com%5D(about:blank)" rel="">موسوعة حسوب</a> الشاملة التي تضم توثيقات الكثير من لغات البرمجة، بما في ذلك <a href="https://wiki.hsoub.com/Python" rel="external" target="_blank">توثيق لغة بايثون</a>.
</p>

<p>
	ومن المصادر المميزة التي تسهل عليك طريق الاحتراف <a href="https://academy.hsoub.com/courses/python-application-development/" rel="">دورة تطوير التطبيقات باستخدام لغة Python </a> التي توفرها أكاديمية حسوب والتي تفرد فيهًا مسارًا كاملًا يشرح بشكل واضح ومبسط أساسيات تحليل البيانات ويعرفك على أهم أدوات ومكتبات بايثون وآليات تطبيقها لإجراء عمليات التحليل الإحصائي والوصفي والتصوير البياني وتنظيف وفهم البيانات وغيرها ذلك الكثير من المعلومات التي تؤهلك لبدء العمل كمحلل بيانات في أي شركة أو منظمة أيًا كان مجال عملها.
</p>

<p>
	كما توفر دورة الذكاء الاصطناعي التي تساعدك في احتراف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة وتطوير تطبيقات ذكية تقوم بتحليل البيانات Data Analysis وتمثيلها مرئيًا، وتطبيقات تعلم الآلة Machine Learning والتعلم العميق Deep Learning وغيرها من التطبيقات المنوعة التي تساعدك على احتراف هذا المجال.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="442" id="ips_uid_4393_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة الذكاء الاصطناعي - أكاديمية حسوب" width="786" data-embed-src="https://www.youtube.com/embed/9ESA9owvmGM"></iframe>
</p>

<p>
	وأنصحك كذلك <a href="https://academy.hsoub.com/learn-programming/" rel="">بتعلم البرمجة</a> بلغة R التحليلية باللغة العربية وأسلوب منهجي ومنظم وبشرح مبسط من خلال الاطلاع على <a href="https://academy.hsoub.com/programming/r-language/" rel="">مجموعة المقالات والدروس حول لغة R</a> التي توفرها أكاديمية حسوب.
</p>

<p>
	وتوفر لك أكاديمية حسوب <a href="https://academy.hsoub.com/programming/sql/" rel="">سلسلة دروس ومقالات عن لغة SQL</a>،كما توفر كتابًا تعليميًا متكاملاً بعنوان <a href="https://academy.hsoub.com/files/16-%D9%85%D9%84%D8%A7%D8%AD%D8%B8%D8%A7%D8%AA-%D9%84%D9%84%D8%B9%D8%A7%D9%85%D9%84%D9%8A%D9%86-%D8%A8%D9%84%D8%BA%D8%A9-sql/" rel="">ملاحظات للعاملين بلغة SQL 1.0.0</a> يتضمن مجموعة من الملاحظات والأمثلة العملية عن مختلف مواضيع لغة SQL من الأساسيات حتى الاحتراف.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على مفهوم تحليل البيانات واستكشفنا معًا المهام المختلفة لمحلل البيانات وكيف يتعامل مع جميع البيانات التي يتم إنشاؤها كل يوم والمتاحة في مكان عمله، من بيانات المعاملات في قاعدة بيانات تقليدية وبيانات القياس المختلفة والبيانات التي يتم جمعها من وسائل التواصل الاجتماعي وكيف يستخرج منها المعرفة التي تطور سير العمل وتحسنه للأفضل.
</p>

<p>
	هل لديك اهتمام بتحليل البيانات؟ إذا كانت الإجابة نعم فقد حان الوقت لتبدأ من الآن رحلتك في احتراف هذا التخصص الواعد الذي يزدهر الطلب عليه بشكل كبير في سوق العمل.
</p>
]]></description><guid isPermaLink="false">1928</guid><pubDate>Fri, 24 Mar 2023 15:01:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644; &#x625;&#x644;&#x649; &#x647;&#x646;&#x62F;&#x633;&#x629; &#x627;&#x644;&#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; Data Engineering</title><link>https://academy.hsoub.com/programming/general/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_03/----.png.247cdf1a6a5f1446b536758a62e88218.png" /></p>
<p>
	تنتج الشركات ومؤسسات الأعمال يوميًا كميات هائلة من البيانات من مراجعات وشكاوى العملاء وصولًا إلى أداء المبيعات، لكن فهم المعلومات الخفية وراء هذه البيانات الضخمة والمتنوعة ومعرفة أفضل الطرق لاستثمارها في تحسين أداء العمل ليس بالأمر السهل والبديهي لذا أصبح من الضروري توفير طرق مناسبة لاستخلاص معلومات قيمة ومفيدة من هذه البيانات الهائلة والاعتماد عليها لاتخاذ القرارات المرتبطة بالعمل بشكل أفضل في سوق شديد المنافسة.
</p>

<p>
	لذلك السبب زاد الطلب في سوق العمل اليوم على التخصصات التي تعنى بهذه البيانات وتستخلص المعلومات القيمة منها ومن بينها هندسة البيانات والأمر الجيد هنا أن أن الطلب الشديد على هذه التخصصات جعل الشركات تركز على الخبرة وليس على الشهادات الجامعية لذا يمكن بدء تعلم المجال بنفسك إذا أتقنت ركائزه ومهامه الأساسية وتعلمت الأدوات التي تمكنك من تأدية هذه المهام.
</p>

<p>
	سأعرفك في مقال اليوم على تخصص <strong>هندسة البيانات Data Engineering</strong> وأهميته في عالم الأعمال اليوم وسنكتشف معًا أهم الوظائف والمسؤوليات التي تقع على عاتق مهندس البيانات والأدوات التي تساعده في استخلاص المعلومات القيمة من البيانات الهائلة المتوفرة بين يديه.
</p>

<h2>
	ما هي هندسة البيانات؟
</h2>

<p>
	هندسة البيانات Data Engineering هي فرع من فروع علم البيانات يركز على تطبيقات جمع البيانات العملية التي تهتم بمعالجة البيانات وتحليلها واستخراج معلومات مفيدة منها وهو يتكامل مع تخصص تحليل البيانات الذي يعمل مع مهندسي البيانات ويأخذ منهم البيانات ويحللها.
</p>

<p>
	يهتم علم هندسة البيانات بتصميم وبناء أنظمة تسمح بجمع البيانات وتوفيرها لمحلل البيانات الذي سيعمل على تحليلها واستخراج المعلومات منها وعرضها على أصحابها (أصحاب البيانات) لاتخاذ قرار معين أو تحصيل فائدة تخص العمل أو الشركة، فلولا هذه الأنظمة والعمليات التي يقوم بها مهندسو البيانات كان من المستحيل تحليل البيانات بأفضل صورة ممكنة واستخلاص المعلومات منها.
</p>

<p>
	تعمل التطبيقات والأنظمة التي يطورها مهندسون البيانات على تمكين الأشخاص المهتمين من إجراء تحليلات عملية على هذه البيانات الخام للحصول على معلومات قيّمة منها وتمكين الشركات من تحليلها بأفضل صورة ممكنة.
</p>

<p>
	في عصر البيانات الضخمة Big Data أصبحت هندسة البيانات أمرًا بالغ الأهمية لأنها تمكّن الشركات من استخدام وتحليل هذه البيانات بسهولة وتطبيق تقنيات التعلّم الآلي أو <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> عليها وتحويلها إلى معلومات ذات معنى والارتقاء بعملها لمستويات متقدمة.
</p>
<iframe width="786" height="442" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة الذكاء الاصطناعي - أكاديمية حسوب" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen data-embed-src="https://www.youtube.com/embed/9ESA9owvmGM"></iframe>
<p>
	لذا تستخدم هندسة البيانات بشكل أساسي في الصناعات التي تتعامل مع البيانات الضخمة فهذه البيانات تحتاج لأن تُحفظ في بنى أو معماريات خاصة مثل مستودعات البيانات Data Warehouses التي تخزن كميات كبيرة من البيانات المنظمة من مصادر متعددة في مكان مركزي أو بحيرات البيانات Data Lakes أو مستودع بحيرة البيانات Data Lakehouse التي تخزن البيانات المنظمة وغير المنظمة أو الخام من جميع المصادر المتاحة دون الحاجة إلى معالجتها أو تحويلها قبل تخزينها ويمكن أن تستخدم كذلك قواعد البيانات التقليدية Databases لتخزين كميات محدودة من البيانات المنظمة وهنا يأتي دور مهندس البيانات ومهامه.
</p>

<p>
	فشركات الأعمال والمنظمات تجمع كميات هائلة من البيانات من هنا وهناك منها ما يتعلق بالمبيعات ومنها له علاقة بالعملاء وأخرى تخص الإنتاج والتي تأخذ أشكالًا متعددة ليست بحالتها هذه إلا بمثابة مكب نفايات ضخم بالنسبة لهذه الشركات والمنظمات ودور مهندسي البيانات التعامل مع هذه النفايات التي تمثِّل البيانات وفرزها وتجهيزها وجعلها قابلة للاستخدام من قبل علماء البيانات ومحللي البيانات وأخيرًا والأهم الاستفادة منها في تحسين الإيرادات.
</p>

<p>
	لذا يستخدم مهندسو البيانات مجموعة متنوعة من المهارات والتقنيات للتعامل مع هذه البيانات الضخمة وتوفير البنية التحتية اللازمة لها كي يتمكن محللو البيانات أو علماء البيانات أو غيرهم من الموظفين الذين يتعاملون مع البيانات في مقر العمل من استخدامها لتحقيق أهداف العمل.
</p>

<h2>
	الفرق بين هندسة البيانات وعلم البيانات وتحليل البيانات
</h2>

<p>
	لدينا ثلاث تخصصات أساسية متداخلة مع بعضها البعض للتعامل مع البيانات وهي علم البيانات وتحليل البيانات وهندسة البيانات وبالتالي سيكون لدينا ثلاث أدوار مهمة للتعامل مع البيانات هي عالم البيانات ومحلل البيانات مهندس البيانات وكنا قد شرحنا باستفاضة عن أول تخصصين منهما في مقال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">دليلك الشامل إلى تحليل البيانات</a> ومقال <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">علم البيانات Data science: الدليل الشامل</a>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121308" href="https://academy.hsoub.com/uploads/monthly_2023_03/385555577_.png.58949ac0788a02865f72acd287e76e86.png" rel=""><img alt="الفرق بين هندس البيانات وعلم البيانات وتحليل البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121308" data-ratio="61.88" data-unique="49r4qhju5" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.3f2523699b8ea95af5023aaff8927a16.png"> </a>
</p>

<p>
	فتخصص هندسة البيانات أحد الدعائم الأساسية الثلاثة للتعامل مع الكميات الهائلة من البيانات في عالم الأعمال إلى جانب علم البيانات وتحليل البيانات، فبدون هندسة البيانات لن يتمكن محللو البيانات وعلماء البيانات من فحص كل هذه البيانات المتاحة بشكل موثوق وسريع وآمن.
</p>

<p>
	فالبيانات تجمع بواسطة تقنيات ومصادر مختلفة وتخزن ضمن هياكل وتنسيقات مختلفة والأدوات المستخدمة لتحليل البيانات تتطلب أن تكون كافة مجموعات البيانات موحَّدة ومخزنة بنفس الهيكلية والتنسيق وهنا يأتي دور هندسة البيانات التي تعتني بأمور توحيد مجموعات البيانات لتتيح للمحللين العمل تاليًا على هذه البيانات وتحليلها بأدوات التحليل.
</p>

<p>
	على سبيل المثال إذا كان لدينا شركة أعمال تجمع الكثير من البيانات حول عملائها ومن مصادر متنوعة مثل معلومات الفواتير من برنامج مخصص لإدارة المبيعات ومعلومات عن الشحن من برنامج إدارة شركات الشحن والخدمات اللوجستية ومعلومات عن دعم العملاء من برنامج دعم العملاء ومعلومات عن اهتمامات العملاء والمحتوى الذي يتفاعلون معه ومعلوماتهم الديموغرافية وأوقات نشاطهم …إلخ. من مراقبة مواقع التواصل الاجتماعي ولك أن تتخيل الكم الهائل من البيانات المتنوعة والفوضوية التي تنتج عن كل عميل من العملاء!
</p>

<h3>
	الفرق بين هندسة البيانات وعلم البيانات
</h3>

<p>
	بدايةً يُتوقع من علماء البيانات القيام بعمل كل من عالم البيانات ومهندس البيانات لكن في الواقع يعمل علماء البيانات ومهندسو البيانات جنبًا إلى جنب للتعامل مع هذه البيانات الضخمة والتمكن من نمذجة وتحليل البيانات بشكل فعال.
</p>

<p>
	يجب أن يتأكد مهندسو البيانات من جودة البيانات المختلفة وأدائها وهم من يقوم عادة بتغذية مصادر البيانات التي يستخدمها علماء البيانات لإنشاء نماذج البيانات كما يهتم مهندسو البيانات بتطوير وبناء أنظمة بيانات قوية وموثوقة واختبار وصيانة خطوط بنى البيانات وأنابيب البيانات التي يستخدمها كل من عالم البيانات ومحلل البيانات.
</p>

<p>
	ويتعامل عالم البيانات مع البيانات ويدرسها ويحدد أهم الأسئلة التي تخص سير عمل الشركة ويوفر مقاييس لحل مشاكل العمل وتحسين المردود والاستفادة من هذه البيانات بطريقة فعالة.
</p>

<h3>
	الفرق بين هندسة البيانات وتحليل البيانات
</h3>

<p>
	بعد أن يعمل مهندسو البيانات على تجميع البيانات في مصدر واحد وتنظيفها وتشذيبها وتوحيدها وتجهيز الأنظمة لذلك كما ذكرنا، يقوم محللو البيانات بإجراء أي عملية تحليل ومعالجة مطلوبة على هذه البيانات ويقدمون الإجابات على هذه الأسئلة ويمثلون النتائج النهائية بطريقة مفهومة إلى مستهلكي البيانات النهائيين الذين يهتمون بمعرفة خلاصة عملية التحليل والقرارات النهائية لأصحاب الشأن في العمل.
</p>

<p>
	أخيرًا، يجب التنبيه أنه في الشركات أو المشاريع الصغيرة، قد لا يُفرَّق بين هذه التخصصات أو المجالات وقد يُوظف محلل أو مهندس أو عالم بيانات لأداء العمل أما في الشركات أو المشاريع المتوسطة والكبيرة، فهنالك تمييز في التخصصات حيث كم البيانات ضخم جدًا لذا يجب على المهندس والمحلل ومعهما عالم البيانات أن يركز كل منهم على مجال عمله.
</p>

<h2>
	مهام مهندس البيانات
</h2>

<p>
	يعد مهندس البيانات data engineer أحد الأفراد الفعالين في أي مؤسسة تمتلك أحجامًا ضخمة من البيانات وترغب بتتبعها واستخراج معلومات مفيدة منها، فهو يتعامل بشكل أساسي مع البيانات الضخمة ويهتم بجمع البيانات من المصادر المختلفة وتهيئتها والتحقق منها وتخزينها في البنى المناسبة وإعدادها لمشاريع تحليل البيانات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121309" href="https://academy.hsoub.com/uploads/monthly_2023_03/1464822451_.png.47fc06c94fd76d970d391598ae8fb66e.png" rel=""><img alt="مهام مهندس البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121309" data-ratio="63.88" data-unique="p76j6fhsv" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.578401f9a1f4d74f40207d5c6f7a21bf.png"> </a>
</p>

<p>
	وتختلف الوظائف والمسؤوليات التي يستطيع مهندس البيانات القيام بها من مكان عمل لآخر حسب الاحتياجات المطلوبة لكن يمكن القول بشكل عام أن مهندس البيانات هو المسؤول بشكل أساسي عن تصميم النظام الذي يوحّد البيانات التي يستخدمها باقي أعضاء فريق البيانات ويساعدهم على الاستعلام منها وتحليلها بأفضل طريقة وأقصر وقت زمني.
</p>

<p>
	للقيام بذلك يتوقع من مهندس البيانات القيام بالعديد من المهام المختلفة في مقر العمل ولعل أبرز هذه المهام:
</p>

<ul>
	<li>
		<strong>استخراج البيانات Data extraction</strong>: يجب على مهندس البيانات العثور على جميع البيانات الأولية المختلفة حول الشركة واستخراجها من مصادر مختلفة مثل قواعد البيانات أو ملفات XML أو المنصات السحابية التي تستخدمها الشركة أو أنظمة إدارة العلاقة مع الزبون CRM …إلخ.
	</li>
	<li>
		<strong>التحقق من صحة البيانات</strong>: تعرف أيضًا بتطهير البيانات Data sanitization وفي هذه المرحلة يقوم مهندس البيانات بالبحث عن أي أخطاء في البيانات التي حصل عليها وإلغاء البيانات المكررة أو الفائضة.
	</li>
	<li>
		<strong>تحويل البيانات Data transformation</strong>: في هذه المرحلة يعمل مهندس البيانات على توحيد هيكلية البيانات وإعطاء جميع البيانات المتنوعة نفس التنسيق.
	</li>
	<li>
		<strong>تفسير وتوضيح البيانات</strong>: يوضح مهندس البيانات في هذه المرحلة أي معاني للبيانات الغامضة التي يمكن تفسيرها بطرق متعددة و يهتم بتنسيق كل من البيانات المهيكلة وغير المهيكلة.
	</li>
	<li>
		<strong>تخزين وتجميع البيانات</strong>: بعد الانتهاء من العمل على البيانات يتم تخزينها في قواعد بيانات التحليلات وتحديد البنية والتنسيق المناسبين لهذه القواعد بحيث يسهل تحليلها وتطبيق خوارزميات الذكاء الاصطناعي عليها وإعداد التقارير المناسبة لها، كما يحدد مهندس البيانات من يملك حق الوصول لهذه البيانات.
	</li>
	<li>
		<strong>إنشاء خطوط أنابيب البيانات</strong>: يشمل عمل مهندسي البيانات كذلك إنشاء ما يسمى بخطوط أنابيب البيانات data pipelines التي تهتم بشكل أساسي بتنفيذ عمليات ETL أي استخراج البيانات Extracting وتحويلها Transforming وتحميلها Loading على البيانات بمرورها عليها بالتتالي في مستودعات أو بنى ملائمة وضمان أن خطوط أنابيب البيانات هذه بها مدخلات ومخرجات صحيحة وأن تدفق البيانات سلس وسريع قدر الإمكان.
	</li>
	<li>
		<strong>تطوير إجراءات جديدة للتحقق من صحة البيانات</strong> وتحديد طرق زيادة دقة البيانات وكفاءتها والحفاظ على أمنها.
	</li>
	<li>
		<strong>شراء الأجهزة والبرامج المطلوبة للتعامل مع البيانات</strong> وإعدادها للعمل بشكل صحيح وصيانتها بشكل دوري.
	</li>
</ul>

<p>
	باختصار مهندس البيانات مسؤول بشكل أساسي عن إنشاء البنية التحتية للبيانات وصيانتها وهو يجمع بيانات الشركة أو المؤسسة التي يعمل بها من كافة الأنظمة والمصادر المتاحة ويعالجها ويخزنها في البنية المناسبة، وبمجرد انتهائه من عمله يوكل المهمة للأطراف المعنية المسؤولة عن استخدام هذه البيانات.
</p>

<h2>
	أدوات وتقنيات هندسة البيانات
</h2>

<p>
	يتطلب عمل مهندس البيانات قدرات أساسية مثل البرمجة والرياضيات والإحصاء وأيضًا <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">علوم الحاسوب</a> كما يحتاج مهندس البيانات في عمله للاعتماد على أدوات وبرامج تساعده على أتمتة بعض العمليات التي تتم على البيانات وإنجازها بمرونة وسلاسة وأهم هذه الأدوات:
</p>

<ol>
	<li>
		أدوات ETL
	</li>
	<li>
		معرفة ب<a href="https://academy.hsoub.com/devops/servers/databases/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">أنواع قواعد البيانات</a>
	</li>
	<li>
		معرفة متقدمة بإحدى لغات البرمجة
	</li>
	<li>
		معرفة بالخدمات السحابية
	</li>
	<li>
		معرفة بأسس الرياضيات والإحصاء الرياضي
	</li>
	<li>
		معرفة بالخوارزميات وهياكل البيانات
	</li>
	<li>
		معرفة متعمقة بأمن البيانات
	</li>
	<li>
		امتلاك مهارات شخصية
	</li>
</ol>

<p>
	لنناقش بمزيد من التفصيل كل أداة من هذه الأدوات ومدى أهميتها في تخصص هندسة البيانات
</p>

<h3>
	1. أدوات ETL
</h3>

<p>
	أدوات ETL تعني استخراج Extract وتحويل Transform وتحميل Load البيانات والتي تنقل البيانات بين الأنظمة. فبعد أن يستخرج المهندس البيانات من مصادرها عليه تطبيق قواعد عليها وتحويلها لصيغة ملاءمة للتحليل حيث تشمل عملية التحويل التنظيف وإزالة البيانات الشاذة أو الخاطئة مثل وجود قيمة نصية مكان قيمة عددية أو العكس أو إدخال قيمة نصية مكان قيمة عددية وهنا تُحول القيم للصيغة المناسبة أما القيم الغير قابلة للتحويل فهي تحذف وبعدها الانتهاء من هذه العمليات تُحفظ في قواعد البيانات المناسبة.
</p>

<h3>
	2. معرفة بأنواع قواعد البيانات
</h3>

<p>
	سواء قواعد البيانات العلاقيّة SQL أو غير العلاقيّة NoSQL وبتقنيات البيانات الضخمة مثل Apache Spark أو Hadoop و لغة الاستعلام الهيكلية SQL وهي اللغة القياسية للاستعلام عن قواعد البيانات العلائقية. ارجع إلى مقال <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">دليلك الشامل إلى قواعد البيانات</a> لمزيد من المعلومات.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير التطبيقات باستخدام لغة Python
		</p>

		<p class="banner-subtitle">
			احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/python-application-development" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير التطبيقات باستخدام لغة Python" src="https://academy.hsoub.com/learn/assets/images/courses/python-application-development.png">
	</div>
</div>

<h3>
	3. معرفة متقدمة بإحدى لغات البرمجة
</h3>

<p>
	مثل لغة بايثون وهي لغة برمجة متعددة الأغراض توفر العديد من المكتبات التي تساعد مهندسي البيانات في مهامهم بشكل كبير، وللمزيد ينصح بقراءة مقال <a href="https://academy.hsoub.com/programming/python/%D8%A7%D9%84%D9%85%D8%B1%D8%AC%D8%B9-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r735/" rel="">المرجع الشامل إلى تعلم لغة بايثون</a> لمعرفة كل ما تحتاجه من معلومات حول هذه اللغة القوية.
</p>

<h3>
	4. معرفة بالخدمات السحابية
</h3>

<p>
	مثل خدمات جوجل السحابية Google Cloud Storage وخدمات أمازون Amazon S3 و Azure Data Lake Storage التي تعرف اختصارًا ADLS …إلخ، نظرًا لأن معظم الشركات اليوم تعتمد على الحلول السحابية لتخزين بياناتها.
</p>

<h3>
	5. معرفة بأسس الرياضيات والإحصاء الرياضي
</h3>

<p>
	لاسيما عند تجميع البيانات في مجموعات منظمة بالاعتماد على القيم الإحصائية مثل المتوسط والانحراف المعياري والتباين.
</p>

<h3>
	6. معرفة بالخوارزميات وهياكل البيانات
</h3>

<p>
	مثل القوائم والقواميس والمجموعات وغيرها من <a href="https://academy.hsoub.com/programming/general/%D9%87%D9%8A%D8%A7%D9%83%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-data-structures/" rel="">هياكل البيانات</a> فهو يتعامل مع بيانات ضخمة وعليه أن يستخدم <a href="https://wiki.hsoub.com/Algorithms" rel="external">الخوارزميات</a> وهياكل البيانات التي تحقق أفضل أداء عند معالجتها والتعامل معها.
</p>

<h3>
	7. معرفة متعمقة بأمن البيانات
</h3>

<p>
	وتعلم كل ما يخص حماية البيانات وأدوات التحقق من صحة البيانات مثل مكتبة Deequ وأداة Great Expectations التي توفر إطارًا وأدوات لجودة البيانات واكتشاف البيانات الخاطئة والتنبيه عندما تقع البيانات خارج النطاقات والقيم المقبولة. إذا كنت مهتمًا بالاطلاع على مرجع عربي شامل حول أمن وخصوصية البيانات أنصح بتحميل <a href="https://academy.hsoub.com/files/20-%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%86-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A/" rel="">كتاب دليل الأمان الرقمي</a>.
</p>

<h3>
	8. امتلاك مهارات شخصية
</h3>

<p>
	مثل التواصل الفعال وإيصال المعلومات لأنه يحتاج للتواصل مع الإدارة ويشرح لهم حقائق تقنية معقدة بأساليب مفهومة تمكنهم من استثمارها في إيجاد الحلول الأنسب للعمل.
</p>

<h2>
	الخلاصة
</h2>

<p>
	في مقال اليوم تعرفنا على قوة البيانات في عالم الأعمال وكيف تساعدنا هندسة البيانات من الاستفادة من هذه البيانات الضخمة لإنجاح سير العمل واتخاذ القرارات الصائبة وتعزيز المبيعات في أي مؤسسة أو شركة.
</p>

<p>
	لهذا السبب تحرص كافة الصناعات التي تكتظ فيها أكوام من البيانات الخام غير المستخدمة على تعيين مهندسي بيانات أكفاء يمكنهم التعامل مع كل هذا الكم من البيانات الضخمة باحترافية عالية واستغلالها لاتخاذ القرار المناسب في الوقت المناسب لذا تعد هندسة البيانات اليوم واحدة من أكثر المهن ربحًا وطلبًا في سوق العمل.
</p>
]]></description><guid isPermaLink="false">1929</guid><pubDate>Mon, 20 Mar 2023 13:03:00 +0000</pubDate></item><item><title>&#x639;&#x644;&#x645; &#x627;&#x644;&#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; Data science: &#x627;&#x644;&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644;</title><link>https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_03/1029815386_.png.da583fe2a8e93d2d173345b4405bd647.png" /></p>
<p>
	ربما تقرأ أو تشاهد يوميًا تقارير عن توقع في انخفاض أو ارتفاع مؤشرات أسواق المال أو تغيرات متوقعة في أسعار شراء بعض المنتجات على أساس شهري أو سنوي، أو حتى نجاح أو إخفاق لقاح لأحد الأمراض في مرحلة التجربة السريرية؛ فما مصدر هذه المعلومات؟
</p>

<p>
	لا تُعد هذه الظواهر ظواهر علمية طبيعية أي لا تنتنج عن قوانين ثابتة يمكن تطبيقها في كل زمان ومكان، بل تأتي في معظم الأحيان نتيجة تطبيق طرق استدلالية أو تحليلية أو إحصائية على كم مترابط أو غير مترابط من البيانات المتوفرة عن هذه الظاهرة أو تلك، وتكون نتيجتها مجموعة محددة من المعلومات التي توصِّف هذه الظاهرة بلغة واضحة يمكن البناء عليها لاحقًا لاتخاذ قرار أو توثيق حادثة.
</p>

<p>
	يطلق على العلم القائم خلف هذه الطرق الاستدلالية والتحليلية والإحصائية اسم <strong>علم البيانات Data science</strong> أو العلم القائم على البيانات <strong>Data-driven science</strong> ويُعدّ حاليًا من أكثر العلوم التي تدفع عجلة التقدم التقني في مجالات تعلم الآلة والبحث عبر الإنترنت والتعرف الآلي على الصوت والصور والنقل والصحة واستكشاف المخاطر وغيرها الكثير.
</p>

<p>
	وأصبح هذا المجال أحد أهم المجالات في العالم الرقمي ولا عجب في ذلك فهو العلم الذي يهتم باستخراج القيمة الكامنة في البيانات التي تعد اليوم أهم أصول الشركات حتى أنها أصبحت تسمى النفط الجديد أو الذهب الجديد. وستكتشف في مقال اليوم كل خبايا هذا العلم وتتعرف على فوائده وأهم أدواته وتقنياته وحتى التعرف على سوق العمل فيه ومصادر تعلمه.
</p>

<h2>
	ما هو علم البيانات Data Science؟
</h2>

<p>
	يُعد علم البيانات حقلًا لتطبيق المهارات التحليلية والوسائل العلمية لاستخلاص معلومات ذات قيمة وأهمية انطلاقًا من <a href="https://ar.wikipedia.org/wiki/%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA_%D8%AE%D8%A7%D9%85" rel="external nofollow">بيانات خام raw data</a> أو بيانات مهيكلة أو غير مهيكلة وذلك لاتخاذ القرارات أو وضع خطط استراتيجية في مجال عمل معين أو تحليل الأنظمة أو بناء تصورات مسبقة عن سلوكها.
</p>

<p>
	تزداد أهمية علم البيانات يومًا بعد يوم، إذ تساعد الإضاءات التي يقدمها علم البيانات على زيادة كفاءة العمل وتحديد فرص عمل جديدة وزيادة فعالية النشاطات التجارية، وتضيف ميزات تنافسية قوية للأعمال التي تعتمد على علم البيانات موازنة بغيرها وفي مختلف المجالات والأصعدة.
</p>

<p>
	يتألف علم البيانات من ثلاث تخصصات أو مجالات متقاطعة مع بعضها البعض وهي كالتالي:
</p>

<ul>
	<li>
		علم البيانات
	</li>
	<li>
		هندسة البيانات
	</li>
	<li>
		تحليل البيانات
	</li>
</ul>

<p>
	قد تتداخل المهام في كل مجال من هذه المجالات، إلا أن المسؤوليات الأساسية لكل منها تختلف في مكان العمل وفيما يلي نوضح أهم الفروقات بين كل تخصص منها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121186" href="https://academy.hsoub.com/uploads/monthly_2023_03/149410068_.png.2d485153b114672063f065ba4057c5d8.png" rel=""><img alt="تخصصات علم البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121186" data-ratio="61.88" data-unique="zpm0tfe3b" style="width: 800px; height: auto;" width="857" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.fd0d47c4428663438480c71f1e6a4eda.png"> </a>
</p>

<h3>
	علم البيانات
</h3>

<p>
	علم البيانات هو المجال الذي يهتم بتطبيق تقنيات التحليلات المتقدمة والمبادئ العلمية لاستخراج معلومات قيمة من البيانات بهدف اتخاذ القرارات التجارية الأفضل والتخطيط الاستراتيجي .
</p>

<p>
	يعمل في مجال علم البيانات أشخاص ذوو كفاءة عالية يملكون معرفة أساسية في تخصص تحليل البيانات وهندسة البيانات فهم يتشابهون في عملهم مع مهندسي البيانات إلا أنهم أصحاب اليد العليا في جميع الأنشطة المتعلقة بالبيانات فعندما يتعلق الأمر باتخاذ القرارات المتعلقة بالأعمال يتمتع عالم البيانات بكفاءة أعلى وهو الذي يتخذ القرار النهائي بشأن العمل.
</p>

<p>
	يجب أن يمتلك المتخصص في هذا المجال مهارات تحليلية وبرمجية متقدمة تمكنه من حل مشكلات العمل بشكل كامل بالاعتماد على البيانات واستخراج المعلومات القيِّمة والمفيدة منها لتطوير الأعمال مستخدمًا برمجيات متقدمة من خلال الاعتماد على أفضل المنظومات والخوارزميات لحل المسائل المتعلقة بتنظيم البيانات واستخلاص المعلومات منها.
</p>

<p>
	يمكن أن نختصر ماهية علم البيانات بالنقاط التالية:
</p>

<ul>
	<li>
		طرح الأسئلة الصحيحة عن المسألة المدروسة وتحليل البيانات الخام.
	</li>
	<li>
		نمذجة البيانات باستخدام خوارزميات متنوعة ومتقدمة وعالية الكفاءة.
	</li>
	<li>
		تصوير البيانات لفهمها من منظور أوضح.
	</li>
	<li>
		فهم البيانات المتاحة لاتخاذ قرارات أفضل أو الوصول إلى نتيجة نهائية.
	</li>
</ul>

<p>
	باختصار علم البيانات هو العلم المسؤول عن استخراج معلومات مفيدة من بيانات مبعثرة ولا قيمة لها بشكلها الخام بعد تنظيفها وتصحيح أخطائها وإزالة القيم المكررة منها ومعالجة القيم المفقودة منها وهي تشبه عملية استخراج شيء مفيد من النفايات.
</p>

<h3>
	علم هندسة البيانات Data Engineering
</h3>

<p>
	هندسة البيانات هي العمود الفقري لعلم البيانات وتتضمن عملية تصميم وبناء أنظمة تسمح للأشخاص بالتنقيب عن البيانات الأولية وجمعها وتنظيفها من مصادر وتنسيقات متعددة وتخزينها واستعادتها ونقلها تمهيدًا لتحليلها واستخراج معلومات مفيدة منها.
</p>

<p>
	كما تهتم هندسة البيانات بالبيانات الوصفية التي تُعد بيانات تصف بيانات أخرى. وتأتي أهمية هندسة البيانات من ضرورة تهيئة البيانات التي جرى جمعها حتى تُخزن ويسهل استعادتها عند الطلب فلا معنى لأي تحليل أو تفسير للبيانات ما لم تجري أرشفة النتائج وتخزينها في منظومة معلوماتية يسهل التعامل معها لاتخاذ القرار.
</p>

<p>
	تتضمن هندسة البيانات المهام التالية:
</p>

<ul>
	<li>
		استخراج البيانات من مصادر مختلفة Data extraction
	</li>
	<li>
		معالجة البيانات Data processing وتحويل البيانات Data transformation والتي تتضمن تنظيف البيانات data cleaning ومعالجة القيم الفارغة وفصل القيم المجمَّعة وإزالة القيم الخطأ أو تحويلها إلى قيم صحيحة موحدة ومتناسقة.
	</li>
	<li>
		تحميل البيانات Data load وتخزين البيانات الناتجة في المصدر النهائي وعادة تكون قاعدة بيانات مخصصة للتحليل Database analysis
	</li>
	<li>
		تنفيذ العمليات الثلاث ETL التي تعني استخراج Extract وتحويل Transfer وتحميل Load والتي تعني مجتمعة عملية تنقل البيانات من قاعدة بيانات واحدة، أو قواعد بيانات متعددة، أو مصادر أخرى إلى مستودع موحد عادة ما يكون مستودع بيانات.
	</li>
</ul>

<p>
	فنظرًا لكون تحليل البيانات أمرًا صعبًا لأن البيانات تجمع بواسطة تقنيات مختلفة ويتم تخزينها بهياكل وتنسيقات مختلفة لكن الأدوات المستخدمة لتحليل البيانات تتطلب أن تكون كافة مجموعات البيانات مخزنة بنفس الهيكلية!
</p>

<p>
	وهنا يأتي دور هندسة البيانات في توحيد مجموعات البيانات وإنشاء البنية التحتية التي تزود أعضاء فريق البيانات ببيانات عالية الجودة ليعملوا عليها ويفهموها ويعثروا من خلالها على إجابات لأسئلتهم، وهم مسؤولون كذلك عن تصميم وصيانة هذه البنية التحتية.
</p>

<p>
	على سبيل المثال يمكن أن تجمع الشركات العديد من البيانات حول عملائها ومن مصادر متنوعة مثل معلومات حول الفواتير من برنامج مخصص لإدارة المبيعات ومعلومات عن الشحن من برنامج إدارة شركات الشحن والخدمات اللوجستية ومعلومات عن دعم العملاء من برنامج دعم العملاء ومراقبة مواقع التواصل الاجتماعي للحصول على المحتوى الذي يهتم به العملاء ويتفاعلون معه ومعلوماتهم الديموغرافية وأوقات نشاطهم …إلخ.
</p>

<p>
	توفر هذه البيانات الكثير من المعطيات للعميل لكن الحصول عليها من مصادر مختلفة وبتنسيقات متنوعة يجعل فهمها والحصول على الإجابات التي نريدها منها أمرًا صعبًا للغاية ويستهلك الكثير من الوقت والجهد لذا لا يمكننا أن نُعوِّل على إدراكنا البشري في هذا الأمر.
</p>

<p>
	لهذا السبب يقوم مهندسو البيانات بإعداد هذه البيانات وتنسيقها وتنظيمها وتخزينها في مستودعات بيانات مناسبة مصممة لمعالجة الاستعلامات بسرعة تضمن الأداء المناسب، وبعدها يقدمون هذه البيانات إلى مستهلكي البيانات النهائية مثل محللي البيانات الذين لن يتمكنوا من الوصول إلى البيانات وتحليلها واستخلاص النتائج والقرارات الصائبة منها بدون البنية التحتية التي ينشؤها لهم مهندسو البيانات.
</p>

<p>
	عمومًا، كان هذا تعريفًا مختصرًا بتخصص هندسة البيانات، وقد توسعنا بالحديث عنه في مقال منفصل بعنوان <span ipsnoautolink="true"><a href="https://academy.hsoub.com/programming/general/%D9%87%D9%86%D8%AF%D8%B3%D8%A9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">الدليل الشامل إلى هندسة البيانات Data Engineering</a></span> فارجع إليه للاستزادة.
</p>

<h3>
	علم تحليل البيانات Data analysis
</h3>

<p>
	تحليل البيانات هو المجال المسؤول عن معالجة البيانات لاستخراج أو استخلاص معلومات مفيدة من شأنها أن تساعد الشركات والمنظمات في حل مشكلة ما أو الكشف عن فرصة ما لتطوير العمل وعرض هذه المعلومات والنتائج التي تم الحصول عليها بأفضل طريقة لصانعي القرار في العمل حتى يتمكنوا من <a href="https://academy.hsoub.com/entrepreneurship/managementleadership/%D8%AA%D8%AD%D8%B3%D9%8A%D9%86-%D8%AC%D9%88%D8%AF%D8%A9-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%A7%D8%AA%D8%AE%D8%A7%D8%B0-%D8%A7%D9%84%D9%82%D8%B1%D8%A7%D8%B1%D8%A7%D8%AA-r545/" rel="">اتخاذ قرارات</a> من شأنها تطوير العمل نحو الأفضل.
</p>

<p>
	على سبيل المثال قد يطلب من محلل البيانات <a href="https://academy.hsoub.com/marketing/core-concepts-of-marketing/%D9%85%D8%A7-%D9%87%D9%88-%D8%AA%D8%B5%D9%86%D9%8A%D9%81-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D8%A7%D8%A1%D8%9F-r689/" rel="">تقسيم العملاء بناءً على سلوك الشراء</a> لديهم لتحديد العملاء الذين يجب أن يتم استهدافهم في الحملات التسويقية وإرسال العروض الأنسب المخصصة لكل منهم بناءً على سلوكه الشرائي أو يطلب منه تحديد التكلفة الأفضل للمنتجات للحفاظ على القوة الشرائية كي لا تنخفض عن مستويات السنوات السابقة.
</p>

<p>
	ومن أهم المهام التي يعنى بها تحليل البيانات ما يلي:
</p>

<ul>
	<li>
		جمع البيانات الخام من مصادر متعددة وتنظيمها.
	</li>
	<li>
		التأكد من جودة البيانات وتنظيفها وتحويلها عند الضرورة.
	</li>
	<li>
		نمذجة البيانات في تنسيقات محددة.
	</li>
	<li>
		التمثيل الرسومي للبيانات أو تصوير البيانات Data visualization ويقصد به عرض البيانات بطريقة مرئية كي يتمكن المتابع من فهم المحتوى الذي تقدمه ويستوعب الرؤى التي استخلصت من هذه البيانات.
	</li>
	<li>
		إيجاد إجابات وحلول لأي مشكلات أو استفسارات في مجال العمل من خلال تحليل البيانات ذات الصلة.
	</li>
	<li>
		الاستفادة من الإحصائيات الوصفية في تلخيص ووصف خصائص مجموعة البيانات.
	</li>
</ul>

<p>
	للقيام بهذه المهام يحتاج المختص في تحليل البيانات لامتلاك مجموعة من المهارات الفنية وأهمها الإلمام الجيد بلغة الاستعلام الهيكلية <a href="https://academy.hsoub.com/programming/sql/" rel="">SQL</a> لاستخراج البيانات التي يحتاجها من <a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> العلاقية المختلفة وإتقان البرامج المخصصة مثل <a href="https://academy.hsoub.com/apps/productivity/office/microsoft-excel/" rel="">MS Excel</a> و <a href="https://academy.hsoub.com/tags/microsoft%20access/" rel="">MS Access</a> و Microsoft Power BI التي تساعد في تحليل هذه البيانات وإنشاء نماذج منها وإجراء العمليات الحسابية والإحصائية المختلفة عليها.
</p>

<p>
	كما يحتاج بالطبع لامتلاك معرفة جيدة بالإحصاء والتحليل الرياضي لإضافة المهارات في التنظيم والتخطيط والاهتمام بأدق التفاصيل كي يتمكن من إدارة ومعالجة طلبات العمل بكفاءة، كما تعد مهارات التواصل مفيدة جدًا أيضًا لمحللي البيانات لأنهم بحاجة إلى التعبير عن نتائجهم وتفسيرها بوضوح لأرباب العمل.
</p>

<p>
	كان هذا تعريفًا مختصر بمجال تحليل البيانات، وقد توسعنا بالحديث عنه في مقال منفصل بعنوان <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">الدليل الشامل لتحليل البيانات Data Analysis</a> فارجع إليه للاستزادة.
</p>

<h2>
	الفرق بين علم البيانات والذكاء الاصطناعي
</h2>

<p>
	يُعرّف <a href="https://academy.hsoub.com/files/17-%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">الذكاء الاصطناعي Artificial Intelligence</a> واختصارًا AI بأنه وسيلة لتزويد الآلات بسلوك يحاكي السلوك البشري كي تقارب تفكيرهم وتتصرف مثلهم وبالتالي فإن الجانب الأساسي من تقنية الذكاء الاصطناعي مرتبط بتعلم الآلة وتعلم الآلة المعمّق.
</p>

<p>
	يلخص الجدول التالي الفرق بين علم البيانات و<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">الذكاء الاصطناعي</a> من نواحي عدة كي نستطيع إدراك أوجه الشبه والاختلاف:
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				وجه الموازنة
			</th>
			<th style="text-align:right">
				علم البيانات
			</th>
			<th style="text-align:right">
				الذكاء الاصطناعي
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				الأساسيات
			</td>
			<td style="text-align:right">
				علم البيانات هو دورة عمليات مفصلة تتضمن التحضير الأولي للبيانات وتحليلها ثم تصويرها واتخاذ القرار
			</td>
			<td style="text-align:right">
				الذكاء الاصطناعي هو إنجاز نموذج قادر على التوقع بهدف التنبؤ بأحداث مستقبلية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				الأهداف
			</td>
			<td style="text-align:right">
				التعرف على الأنماط المطلوب إيجادها ضمن البيانات الخام للمشروع قيد الدراسة
			</td>
			<td style="text-align:right">
				أتمتة العمليات ووضع بيانات التصرف الذاتي ضمن الوحدة البرمجية المدروسة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				نوع البيانات التي يعمل عليها
			</td>
			<td style="text-align:right">
				يعمل علم البيانات على أنواع مختلفة من البيانات مثل البيانات الخام والبيانات المهيكلة وغير المهيكلة.
			</td>
			<td style="text-align:right">
				يستخدم الذكاء الاصطناعي أنواع معيارية من البيانات على شكل متجهات vectors وأنواع مدمجة أخرى من البيانات
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				التقنيات المستخدمة
			</td>
			<td style="text-align:right">
				يستخدم التقنيات الرياضية والإحصائية وخوارزميات تعلم الآلة وأدوات تحليل البيانات وتصويرها.
			</td>
			<td style="text-align:right">
				يستخدم بشكل أساسي خوارزميات تعلم الآلة وتعلم الآلة المعمّق.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				المعرفة المكتسبة
			</td>
			<td style="text-align:right">
				تُستخدم المعرفة التي يوفرها علم البيانات في إيجاد الأنماط والسلوكيات في البيانات.
			</td>
			<td style="text-align:right">
				تصب المعرفة التي يوفرها الذكاء الاصطناعي في تزويد الوحدات البرمجية بشكل من أشكال التصرف الذاتي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				أمثلة عن الأدوات المستخدمة
			</td>
			<td style="text-align:right">
				++R, Python, MATLAB,C
			</td>
			<td style="text-align:right">
				Tensor flow, sci-kit-learn, Kaffee
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				متى يُستخدم
			</td>
			<td style="text-align:right">
				يُستخدم علم البيانات عندما تقتضي الضرورة استخدام حسابات رياضية سريعة أو تحليل بيانات استطلاعي أو تحليل توقعي predective analysis. لا بد في هذه الحالات من تحديد الأنماط والسلوكيات من خلال البيانات المتاحة ويتطلب ذلك معرفة بالإحصاء الرياضي.
			</td>
			<td style="text-align:right">
				يُستخدم الذكاء الاصطناعي عندما تقتضي الضرورة التخلص من عمل ضروري متكرر. لا بد في هذه الحالات من تقييم مخاطر الانتقال إلى الذكاء الاصطناعي وسرعة اتخاذ القرار ودقة في التنفيذ بعيدًا عن المشاعر البشرية والانحياز.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				أمثلة عن الاستخدام
			</td>
			<td style="text-align:right">
				تحسين العمليات واكتشاف سلوكيات العملاء والتحليل المالي وغيرها الكثير.
			</td>
			<td style="text-align:right">
				الروبوتات وبرمجيات المحادثة الآلية والألعاب عبر الإنترنت وأنظمة المساعدة الصوتية.
			</td>
		</tr>
	</tbody>
</table>

<p>
	هنالك مسارات أخرى بدأت تتبلور تعكس التأثير الكبير لعلم البيانات على الذكاء الاصطناعي مع تزايد الاندفاع نحو ما يُعرف بالذكاء الاصطناعي القابل للتوضيح explainable AI والذي يقدم معلومات تساعد المستخدمين على فهم كيفية عمل نماذج تعلم الآلة ومقدار الثقة التي ينبغي أن يولوها لنتائج عمل هذه الوحدات عند اتخاذ القرارات. بالإضافة إلى دور علم البيانات في صياغة مبادئ تصميم الذكاء الاصطناعي المسؤول responsible AI principles للتأكد من عدالة جميع التقنيات المستخدمة وضمان عدم تحيزها وشفافيتها.
</p>

<h2>
	مكونات علم البيانات
</h2>

<p>
	ينبثق علم البيانات من مجموعة من المكوّنات أو العلوم ولا بد من استعراضها حتى تتوضح أبعاد هذا العلم:
</p>

<ul>
	<li>
		الإحصاء Statistics
	</li>
	<li>
		الرياضيات Mathematics
	</li>
	<li>
		البرمجة وعلوم الحاسوب Programming and Computer Science
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121185" href="https://academy.hsoub.com/uploads/monthly_2023_03/1173652690_.png.f2d0a3049fa6eb46f85a64b0c5ce4965.png" rel=""><img alt="مكونات علم البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121185" data-ratio="60.25" data-unique="ehtjf83nj" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.2b90be1a6b5e1ffa883837c45aa5448e.png"> </a>
</p>

<h3>
	أساسيات الرياضيات
</h3>

<p>
	لتتعلم علم البيانات لا بد من إتقان المفاهيم الأساسية في الرياضيات التي تعد الجزء الأكثر حيوية في مجال علوم البيانات، فهي الفضاء الذي تُدرس ضمنه الكميات والبنى والعلاقات ذات الصلة بالظاهرة المدروسة.
</p>

<p>
	إذ يُعد علم الرياضيات اللغة التي توصِّف الظواهر العلمية وتوفر الأدوات الضمنية التي يستخدمها علم البيانات مثل عمليات الاستقراء والتحليل والإحصاء والتفاضل والتكامل وغيرها.
</p>

<h3>
	الإحصاء الرياضي
</h3>

<p>
	يُعد الإحصاء الرياضي Statistics من أهم مكوّنات علم البيانات لأنه الوسيلة الأنسب لجمع وتحليل البيانات العددية مهما كانت كميتها كبيرة واستخلاص الأفكار منها.
</p>

<p>
	يتعامل هذا العلم مع مجموعات منفصلة من البيانات أو مجموعات مستمرة منها محاولًا تطبيق وسائل رياضية لدراسة ميل هذه البيانات للتقارب أو التباعد والمنحى الذي تأخذه في هذا السلوك ثم تضع أطرًا لتعريف وتصنيف هذه الوسائل. فمن منا لم يسمع في مرحلة ما من تحصيله الدراسي كلمة متوسط حسابي أو انحراف معياري أو منوال مثلًا، فهذه المصطلحات ما هي إلّا مقاييس لابتعاد قيم مجموعة من البيانات عن قيمها الوسطى.
</p>

<h3>
	البرمجة وعلوم الحاسوب
</h3>

<p>
	يأتي الحمل الأكبر في علم البيانات على البرمجة وتخصص علوم الحاسوب كي تتمكن من كتابة وتنقيح وتعديل الشيفرات التي تجمع وتحلل وتهيكل البيانات، حيث يجب على من يريد التخصص في علم البيانات تعلم إحدى <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> والمكتبات البرمجية التي تدعم الوظائف الإحصائية والرياضية وبرمجيات التحليل وإيجاد علاقات الترابط وغيرها، إضافة لقواعد البيانات المسؤولة بشكل أساسي عن تخزين البيانات وتنظيمها واسترجاعها.
</p>

<p>
	كما يعد تعلم الآلة Machine learning أحد التقنيات المتقدمة التي تلعب في الآونة الأخيرة دورًا حيويًا في علم البيانات فمن خلاله يمكننا من الحصول على تنبؤات وقرارات أفضل دون الحاجة للتدخل البشري مما يساعد علماء البيانات في أداء مهامهم والحصول على حلول لمشكلات العمل بطريقة أسرع وأكثر ذكاء مقارنة بالاعتماد على التقنيات الإحصائية التقليدية.
</p>

<p>
	وإذا كنت مهتمًا بتعلم أسس علوم الحاسوب والتخصص في مجال علوم البيانات واكتساب خبرة عملية فيه بأسرع الطرق يمكنك مطالعة <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">مقال أساسيات علوم الحاسوب</a> فهو بمثابة دليل شامل يعرفك على اختصاص علوم الحاسب وأهم فوائده وتطبيقاته.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h2>
	أهمية علم البيانات
</h2>

<p>
	لم تكن البيانات المتوفرة حول مختلف المجالات خلال العقد الأول من هذه الألفية وما قبلها -وخاصة بشكلها الرقمي- ذات أحجام كبيرة جدًا، وكان من السهل تخزينها في هياكل مخصصة مثل الجداول الإلكترونية وقواعد البيانات العلاقيّة ومن ثم التعامل معها من خلال أدوات مختلفة بكل سهولة ويسر.
</p>

<p>
	فقد جمعت البيانات ما قبل الحقبة الرقمية بأساليب يدوية مرهقة بالاعتماد على الأشخاص والأوراق والجداول ولم تكن بيانات شاملة، بل كانت تقتصر على ما هو ضروري للجهة التي تحتاج هذه البيانات سواء أكانت حكومية أو سواها.
</p>

<p>
	مع التحول إلى الرقمنة، أصبحت عملية الحصول على البيانات وتصنيفها أسهل وأيسر وظهرت أنواع جديدة من قواعد البيانات التي تسهل التعامل مع هذه البيانات، لكن كما أشرنا بقيت ضمن حدود السيطرة.
</p>

<p>
	لكن الكم الهائل جدًا من البيانات التي تنتج يوميًا عن كل فرد قد وصلت وفق <a href="https://webtribunal.net/blog/how-much-data-is-created-every-day/%23gref&amp;sa=D&amp;source=docs&amp;ust=1665899399129497&amp;usg=AOvVaw1tJZkJJ-Msq8lQkkHg1f2G" rel="external nofollow">بعض الأبحاث</a> إلى 1.7 ميغا بايت في الثانية عام 2020 وقد تصل إلى أضعاف هذا الرقم في لحظة كتابة هذه الأسطر.
</p>

<p>
	فانطلاقًا من البيانات البسيطة التي يسجلها الجوال عن مستخدميه، وبيانات التصفح واستخدام الحاسوب، وبيانات نشاطك على مختلف مواقع التواصل الاجتماعي وعمليات التسجيل والشراء أو أي نشاط على مختلف المواقع قد تُسجل وتؤرشف لغايات خاصة بمشغلي تلك المواقع فتأمل عندها الكميات الكبيرة من البيانات التي ستظهر حتى حركة مؤشر الفأرة على شاشة متصفح مسجلة وتستعملها المواقع عبر أدوات تعقب وتحليل مختلفة مثل تتبع الأقسام التي زرتها والروابط والمنتجات التي أبديت اهتمامُا بها وذلك لتحليل سلوكك وبالتالي تقديم تجربة أفضل لك.
</p>

<p>
	ولا ننسى تطور البرامج السحابية التي مكنت المؤسسات من تتبع أحجام ضخمة من بيانات الأعمال في الوقت الفعلي وتوفر مليارات من أجهزة <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%88-%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D8%A3%D8%B4%D9%8A%D8%A7%D8%A1-iot-r1783/" rel="">إنترنت الأشياء IoT</a> حول العالم التي تجمع كل لحظة كمًا ضخمًا من البيانات عن كل تحركاتنا، لذا يتوقع أن يكون هناك 175 زيتابايت من البيانات في عالم البيانات العالمي بحلول عام 2025 وللعلم فإن زيتابايت يساوي 1000 بايت للأس 7 وبعبارة أخرى فإن زيتابايت واحد يحتوي على 21 صفرًا ولهذا السبب نحن نعيش بالفعل حقبة انفجار البيانات الضخمة Big Data Explosion ونحتاج لطريقة تمكننا من معالجة هذا الكم الجنوني من البيانات!
</p>

<p>
	إن معالجة هذا الكم الهائل من البيانات هي مهمة صعبة جدًا على أي مؤسسة أو جهة، لهذا ظهرت الحاجة الماسة إلى أدوات وتقنيات فعالة لمعالجة وتحليل تلك البيانات وأشخاص مؤهلين قادرين على التعامل معها وبدأ علم البيانات بالتبلور ليكون مزيجًا من عدة علوم تتكامل لإنجاز ما يلي:
</p>

<ul>
	<li>
		تجميع البيانات الخام وإعدادها للمعالجة أو التحليل النوعي.
	</li>
	<li>
		تحويل هذه الكميات الكبيرة من البيانات الخام وغير المهيكلة إلى معلومات ذات قيمة.
	</li>
	<li>
		تقديم البيانات وعرضها بصريًا لتوضيح الاستراتيجيات أو القرارات المبنية على نتائج تحليل تلك البيانات.
	</li>
	<li>
		استخلاص الأفكار والرؤى من البيانات المحللة باستخدام تقنيات الذكاء الاصطناعي وخوارزميات تعلم الآلة.
	</li>
	<li>
		وضع استراتيجيات تطوير للأعمال انطلاقًا من نتائج التحليل والدراسة.
	</li>
	<li>
		وضع توقعات صحيحة أو قريبة من الصحة في مختلف المجالات مثل استطلاعات الرأي والانتخابات وحجوزات السفر واستكشاف حالات الغش والدراسات العلمية والاجتماعية وغيرها.
	</li>
</ul>

<p>
	لم يكن علم البيانات منذ عقد مضى ولا حتى العاملين في هذا المجال منتشرًا في سوق العمل، لكن الشعبية الكبيرة حاليًا لهذه الفئة من الخبراء تعكس طريقة تفكير الأعمال بالبيانات الضخمة. فلا يمكن بعد الآن تجاهل الكميات الهائلة من البيانات الخام التي أضحت بالنسبة للكثير من الشركات بمثابة منجم ذهب افتراضي طالما أن هناك خبراء متحمسين وطموحين ودقيقي الملاحظة قادرين على التنقيب فيها ورؤية ما لا يراه غيرهم.
</p>

<h2>
	مجالات علم البيانات
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121184" href="https://academy.hsoub.com/uploads/monthly_2023_03/1977399135_.png.56e50310391bc791aaf098fd4f69ef5e.png" rel=""><img alt="مجالات علم البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121184" data-ratio="60.00" data-unique="e1mn1srqy" style="width: 800px; height: auto;" width="857" src="https://academy.hsoub.com/uploads/monthly_2023_03/.thumb.png.4a3669da0f902d7f25b7e49732110250.png"> </a>
</p>

<p>
	يلعب علم البيانات اليوم دورًا فعالًا في جميع جوانب الحياة التجارية والطبية والحكومية …إلخ، ويجد المختصون في المجالات المختلفة كل يوم تطبيقًا جديدًا لعلم البيانات بما يعزز العمل الذي يشرفون عليه ويحقق مكاسب على جميع الأصعدة، لكننا سنقف تاليًا على أبرز المجالات التي شاع استخدام علم البيانات فيها.
</p>

<h3>
	التعرف على الصور وتمييز الكلام
</h3>

<p>
	عندما تحمّل صورة على فيسبوك ثم ترى اقتراحات للإشارة إلى أصدقائك في الصورة، فإن ما يجري فعلًا أن موقع فيسبوك قد استخدم خوارزمية تمييز الصور تلقائيًا وقد تعرف على الأشخاص في هذه الصورة. إن هذه الخوارزمية هي جزء من علم البيانات.
</p>

<p>
	وكذلك الأمر عندما تقول "Ok Google" ليستجيب هاتفك الذكي ويستعد للأوامر الصوتية، فإن علم البيانات هو السبب في ظهور خوارزمية التعرف على الكلام التي استخدمها التطبيق توًا.
</p>

<h3>
	محركات البحث عبر الإنترنت
</h3>

<p>
	هل لاحظت كيف تقترح لك محركات البحث الشهيرة مثل جوجل وياهو وبينج ما هو قريب من نتيجة بحثك؟ هل لاحظت السرعة في عرض النتائج والتحسن المستمر في دقة نتيجة البحث؟ يعود الفضل في ذلك إلى علم البيانات وخوارزمياته التي تجعل تجربة البحث عبر الانترنت أكثر سرعة وفعالية ورضًى للمستخدم.
</p>

<h3>
	العلوم الطبيعية
</h3>

<p>
	تُستنبط معظم المعايير العلمية المتعلقة بالظواهر الطبيعية من كم البيانات الهائل الناتج عن مراقبة هذه الظواهر على مدى طويل من الزمن كالمناخ والبيئة والفضاء، إذ ترسل المسابر ملايين البايتات يوميًا إلى مراكز الأبحاث لتحليلها واستقراء النتائج وبالطبع لن يكون من السهل فهم هذه البيانات والربط بينها دون استخدام خوارزميات علم البيانات وطرائقه.
</p>

<h3>
	عالم الألعاب
</h3>

<p>
	سواء الألعاب الرياضية الحقيقية كدراسة وتحليل حركات لاعبي كرة القدم وحتى منصات الألعاب الرقمية في تعزيز تجربة اللاعبين. تعتمد الشركات التي ترعى هذه المواضيع على تحليل نتائج البيانات المأخوذة من كم هائل من المباريات ومن تجارب مئات الآلاف الذين يمارسون ألعاب الفيديو عبر الإنترنت. لقد حسَّن استخدام علم البيانات وتقنياته أداء الكثير من شركات الألعاب.
</p>

<h3>
	النقل
</h3>

<p>
	إن الهدف الرئيسي لاستخدام علم البيانات في عالم النقل هو الوصول إلى المركبات ذاتية القيادة التي يسعى مصمموها إلى تقليل الخطأ البشري إلى أدنى مستوى وتقليل عدد الحوادث المرورية وضبط معدلات التلوث بعوادم الوقود. إضافة إلى ذلك، يساعد علم البيانات في تحليل حركة المرور واكتشاف الازدحامات والاختناقات المرورية وإرسال إشعارات للسائقين لسلوك طريق آخر مثلًا لوجود ازدحام في الطريق الذي يسير عليه وتحليل الحوادث المرورية واتخاذ القرارات.
</p>

<h3>
	الرعاية الصحية
</h3>

<p>
	لعلم البيانات دور بارز في مجال الرعاية الصحية لما يؤمنه من مساهمة في تشخيص الحالات الطبية وتخطيط العلاج والبحث الطبي ويوفر نتائج حاسمة وتوقعات تقترب نسبة الخطأ فيها من الصفر وخاصة في مجالات الكشف عن الأورام وابتكار الأدوية وتحليل الصور الطبية.
</p>

<h3>
	أنظمة التوصية بالمنتجات
</h3>

<p>
	تعتمد معظم الشركات مثل غوغل وأمازون ونيتفليكس على علم البيانات الذي يقدم تكنولوجيا مفيدة جدًا في تحسين تجربة مستخدمي هذه الشركات من خلال التوصية بمنتجات هذه الشركات لمستخدميها من معرفة ميولهم وسلوكياتهم أو ما يعرف بالتزكية المخصصة. فعندما تبحث عن شيء ما ثم تجد اقتراحات لأشياء مشابهة لاحقًا فهي نتيجة تطبيق خوارزميات علم البيانات.
</p>

<h3>
	اكتشاف المخاطر
</h3>

<p>
	تواجه الشركات المالية مخاطر تتعلق بقضايا التزوير وخسارة رأس المال، لكن بوجود علم البيانات ستقل هذه الأخطار إلى مستويات منخفضة. إذ تستفيد شركات المال من علماء البيانات في دراسة البيانات المالية للاستثمارات المطروحة وإدارة المخاطر المالية واكتشاف المعاملات الاحتيالية وتقييم مخاطر الخسارة أو الإفلاس مما يرفع ثقة العملاء بأداء هذه الشركات، كما يساعد علم البيانات أنظمة تقنية المعلومات في منع الهجمات الإلكترونية ومنع التهديدات الأمنية المختلفة.
</p>

<p>
	ومن مجالات هذا العلم الأخرى مساعدة الشركات التجارية على إنشاء حملات تسويقية أقوى وإعلانات مستهدفة أكثر دقة لزيادة المبيعات والأرباح، ومنع حدوث أعطال المعدات في الأماكن الصناعية، ويبرز استخدام علم البيانات المجال الأكاديمية لمراقبة أداء الطلاب وتحسينه للأفضل وغير ذلك الكثير مما لا يتسع المقال لذكره. وقلما تجد اليوم مجالًا لا يساهم علم البيانات الحديث في تحسينه وتطويره نحو الأفضل.
</p>

<h2>
	دورة حياة مشروع علم البيانات
</h2>

<p>
	تمر دورة علم البيانات بالمراحل التالية:
</p>

<ul>
	<li>
		الاستكشاف
	</li>
	<li>
		إعداد البيانات
	</li>
	<li>
		تخطيط النماذج
	</li>
	<li>
		بناء النماذج
	</li>
	<li>
		التحضير للعمل
	</li>
	<li>
		إيصال النتائج
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="121187" href="https://academy.hsoub.com/uploads/monthly_2023_03/1333862217_.png.129e9c54a135ba7cf9611596ba94da94.png" rel=""><img alt="دورة حياة مشروع لتحليل البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="121187" data-ratio="87.50" data-unique="wigz1x93l" style="width: 576px; height: auto;" width="576" src="https://academy.hsoub.com/uploads/monthly_2023_03/1333862217_.png.129e9c54a135ba7cf9611596ba94da94.png"> </a>
</p>

<h3>
	الاستكشاف
</h3>

<p>
	وهي أولى مراحل هذه الدورة وتبدأ بطرح الأسئلة الصحيحة عن الظاهرة المدروسة. فلا بد قبل أن تبدأ أي مشروع متعلق بعلم البيانات أن تحدد المتطلبات الاساسية لهذا المشروع وأولوياته وميزانيته.
</p>

<p>
	لا بد في هذه المرحلة من تحديد كل متطلبات المشروع كعدد العاملين فيه والتقنيات المستخدمة والزمن اللازم لإنجازه والبيانات التي سيجري العمل عليها والغاية منها، وبالتالي سنتمكن من وضع إطار أولي لحل المشكلة التي كانت سببًا في إطلاق المشروع.
</p>

<h3>
	إعداد البيانات
</h3>

<p>
	نحتاج في هذه المرحلة إلى إنجاز المهام التالية:
</p>

<ul>
	<li>
		تصحيح البيانات وتنظيفها Data cleaning
	</li>
	<li>
		اختزال البيانات وتقليل حجمها Data Reduction
	</li>
	<li>
		تكامل البيانات Data integration
	</li>
	<li>
		نقل البيانات Data transformation
	</li>
</ul>

<p>
	بعد إنجاز هذه المراحل الأربعة تصبح البيانات جاهزة لعمليات أخرى.
</p>

<h3>
	التخطيط لبناء النماذج
</h3>

<p>
	نحتاج في هذه المرحلة إلى تحديد النماذج المختلفة والتقنيات اللازمة لإيجاد العلاقات والروابط بين متغيرات الدخل. وتجري عادة عملية تحليل بيانات استطلاعي Exploratory data analytics -تختصر إلى EDA- باستخدام الدوال والصيغ الإحصائية ثم أدوات تصوير البيانات لفهم الروابط بين المتغيرات ومن ثم فهم ما ترشدنا إليه تلك البيانات. من أكثر الأدوات شيوعًا في إنجاز هذه المرحلة نجد:
</p>

<ul>
	<li>
		SQL Analysis Services
	</li>
	<li>
		R
	</li>
	<li>
		SAS
	</li>
	<li>
		Python
	</li>
</ul>

<h3>
	بناء النماذج
</h3>

<p>
	تبدأ في هذه المرحلة عملية بناء النماذج. إذ يجري خلال هذه المرحلة إنشاء مجموعات من البيانات لأغراض التمرين والاختبار لتساعد في تطبيق تقنيات مثل التجميع والتصنيف والربط على البيانات المتوفرة لوضع نماذج عن سلوكها. إليك بعض أدوات بناء النماذج الأكثر شيوعا:
</p>

<ul>
	<li>
		SAS Enterprise Miner: عبارة عن إضافة تتكامل مع قواعد بيانات أو جداول (مثل إكسيل) لبناء نماذج تحليلية تعطي توقعات عن البيانات الموجودة وفقًا لمسار التحليل الذي تتبعه.
	</li>
	<li>
		WEKA: وهي مجموعة من خوارزميات لغة الآلة كتبت بلغة جافا للتعامل مع مهام التنقيب عن البيانات.
	</li>
	<li>
		SPSS Modeler: برنامج من شركة IBM لتنفيذ مهام التنقيب عن البيانات وتمثيلها بيانيًا وفهمها واتخاذ القرارات بناء عليها.
	</li>
	<li>
		MATLAB: بيئة عمل رياضية وبرمجية متكاملة لمختلف الأغراض الحسابية والتحليلية وتصوير البيانات وبناء خوارزميات تعلم الآلة وتطبيقها.
	</li>
</ul>

<h3>
	تحضير المشروع للعمل
</h3>

<p>
	تُسلم في هذه المرحلة معظم التقارير النهائية عن المشروع إلى جانب الشيفرة والمستندات التقنية. تقدم هذه المرحلة نظرة شاملة عن أداء المشروع على صعيد محدود قبل أن يجري نشر نتائجه كاملةً.
</p>

<h3>
	إيصال النتائج النهائية
</h3>

<p>
	يتحقق فريق العمل في هذه المرحلة من أن الهدف الذي وضع للمشروع في مرحلة الاستكشاف قد أنجز أم لا، ثم تُسلم بعد ذلك المعلومات التي تمكن الفريق من حيازتها عن طريق النماذج التي بنيت ومن ثم إيصال النتائج النهائية إلى فريق الأعمال الذي طلب الشروع بالعمل.
</p>

<h2>
	التخصص في مجال علم البيانات
</h2>

<p>
	رأينا سابقًا كيف ظهرت الحاجة الملحة لعلم البيانات كتخصص قائم ومستقل بذاته للتنقيب عن المعرفة بين أكوام البيانات الخام ويُعتقد وفقًا لعدة استطلاعات رأي بأنّ هذا التخصص سيكون الأكثر طلبًا في السوق خلال هذا العقد.
</p>

<p>
	وبما أن الطلب شديد على هذا المجال فهناك نقص كبير في اليد العاملة فيه عربيًا وعالميًا، لذا أمامك فرصة سانحة لممارسته دون الحاجة لوجود شهادة أكاديمية متخصصة فيه إذ التركيز حاليًا على الخبرة نظرًا لنقص اليد العاملة فيه.
</p>

<p>
	أي كل ما تحتاجه هو الخبرة الأساسية في البرمجة والإحصاء الرياضي ورغبة في تعلم هذا المجال وتحصيل كل ما يكسبك الخبرة العملية فيه من دورات ومخيمات تدريبية تؤهلك لدخول سوق العمل والحصول على فرصة مميزة لدى الكثير من الشركات والمنظمات التي ستتهافت على تدريبك وتوظيفك لديها.
</p>

<p>
	لهذا السبب لا بد من الاطلاع على التخصصات التي يمكنك العمل بها في حال رغبت في التخصص في مجال علوم البيانات.
</p>

<h3>
	الوظائف التي يتضمنها علم البيانات
</h3>

<p>
	حتى تختار التخصص الذي تراه مناسبًا لخبراتك وميولك، سنفرد هذه الفقرة للتفصيل في مجموعة من أهم الوظائف والأدوار الوظيفية المرتبطة بالبيانات والمتطلبات الأساسية لكل وظيفة:
</p>

<ul>
	<li>
		عالم بيانات Data scientist
	</li>
	<li>
		محلل بيانات Data analyst
	</li>
	<li>
		مهندس بيانات Data engineer
	</li>
	<li>
		معماري بيانات Data architect
	</li>
	<li>
		مطوّر تصوير بيانات Data Visualization Developer
	</li>
	<li>
		خبير في تعلم الآلة Machine Learning expert
	</li>
</ul>

<p>
	لنكتشف المزيد حول كل دور من هذه الأدوار وأهم التقنيات والمهام المنوطة به.
</p>

<h4>
	محلل البيانات
</h4>

<p>
	هو شخص خبير ينقّب في أكوام البيانات الخام باحثًا عن نماذج وأنماط علاقات تربط بينها. يعمل بعد ذلك على عرض نتائج ما توصل له بما يساعد على اتخاذ قرار أو حل مشكلة.
</p>

<p>
	<strong>ما المهارات التي يجب أن يتقنها محلل البيانات</strong>؟
</p>

<ul>
	<li>
		معرفة جيدة في الرياضيات.
	</li>
	<li>
		معرفة جيدة في التنقيب ضمن البيانات Data mining.
	</li>
	<li>
		معرفة أساسيات علم الإحصاء Statistic.
	</li>
	<li>
		أن يكون مطلعًا على بعض لغات البرمجة والأدوات البرمجية المستخدمة في علم البيانات مثل:
	</li>
	<li>
		Python
	</li>
	<li>
		MATLAB
	</li>
	<li>
		SQL
	</li>
	<li>
		Hive
	</li>
	<li>
		R
	</li>
	<li>
		JS
	</li>
	<li>
		SAS
	</li>
	<li>
		SPSS
	</li>
	<li>
		وغيرها
	</li>
</ul>

<h4>
	مهندس بيانات
</h4>

<p>
	وهو الشخص الذي يعمل مع كميات كبيرة من البيانات ويكون مسؤلًا عن بناء وصيانة بنى مناسبة لهذه البيانات وفقًا لمشروع علم البيانات الذي يعمل عليه.
</p>

<p>
	يعمل مهندس البيانات أيضًا على تصميم العمليات التي تتحكم بمجموعات البيانات وتُستخدم في نمذجة هذه المجموعات أو التنقيب فيها أو حيازة معلومات منها أو التحقق من سلامتها.
</p>

<p>
	<strong>ما المهارات التي يجب أن يتقنها مهندس البيانات</strong>؟
</p>

<ul>
	<li>
		معرفة معمقة بتقنيات برمجية مثل:
	</li>
	<li>
		SQL
	</li>
	<li>
		MongoDB
	</li>
	<li>
		Cassandra
	</li>
	<li>
		HBase
	</li>
	<li>
		Apache Spark
	</li>
	<li>
		Hive MapReduce
	</li>
	<li>
		معرفة جيدة بلغات برمجة مثل Python, C/C++, Java, Perl.
	</li>
</ul>

<h4>
	معماري بيانات
</h4>

<p>
	وهو الشخص الذي يتصور ويصمم الأسلوب الذي تُنجز وفقه البنية التحتية المسؤولة عن تخزين وإدارة البيانات لأغراض التحليل سواء على صعيد العتاد الصلب أو الصعيد البرمجي.
</p>

<p>
	<strong>ما المهارات التي يجب أن يتقنها معماري البيانات</strong>؟
</p>

<ul>
	<li>
		معرفة معمقة بقواعد <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">تطوير البرمجيات</a> والأنظمة.
	</li>
	<li>
		معرفة معمقة بالمعماريات المستخدمة في إنجاز قواعد البيانات.
	</li>
</ul>

<h4>
	عالم بيانات
</h4>

<p>
	عالم البيانات هو شخص خبير يعمل على تجميع وتحليل واستخلاص النتائج من كميات كبيرة من البيانات الخام أو المهيكلة أو غير المهيكلة. يجمع عمل عالم البيانات بين علوم الحواسب وخاصة برمجتها وعلم الإحصاء والرياضيات. يعمل عالم البيانات على تحليل ومعالجة ونمذجة البيانات ثم يفسر النتائج التي حصل عليها كي يُنشئ خطة عمل مناسبة للشركة أو المنظمة أو الجهة التي يعمل لديها.
</p>

<p>
	يُسخّر علماء البيانات قدراتهم ومهاراتهم في مختلف المجالات سواء التقنية منها أو الاجتماعية للبحث عن تفاصيل قد لا يراها ولا يفهمها سواهم في كم البيانات الهائل الذي يعملون عليه، إذ يتضمن عملهم عادة إيجاد ترابط منطقي بين بيانات غير مهيكلة أو خام تنتج عن مصادر مختلفة كالأجهزة الذكية وردود الأفعال على مواقع التواصل الاجتماعي ومحتوى رسائل البريد الإلكتروني وغيرها من المصادر التي يصعب ملاءمتها من قواعد البيانات المهيكلة.
</p>

<p>
	<strong>ما المهارات التي يجب أن يتقنها عالم البيانات</strong>؟
</p>

<ul>
	<li>
		فهم معمق لعلم الإحصاء.
	</li>
	<li>
		معرفة جيدة في الرياضيات.
	</li>
	<li>
		مهارة في إحدى لغات البرمجة التالية أو أكثر
		<ul>
			<li>
				Python
			</li>
			<li>
				R
			</li>
			<li>
				SAS
			</li>
			<li>
				SQL
			</li>
			<li>
				Hive
			</li>
			<li>
				Pig
			</li>
			<li>
				Apache spark
			</li>
			<li>
				MATLAB
			</li>
		</ul>
	</li>
	<li>
		قدرة جيدة على تصوير البيانات Visualization.
	</li>
	<li>
		مهارات تواصل جيدة.
	</li>
</ul>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير التطبيقات باستخدام لغة Python
		</p>

		<p class="banner-subtitle">
			احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/python-application-development" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير التطبيقات باستخدام لغة Python" src="https://academy.hsoub.com/learn/assets/images/courses/python-application-development.png">
	</div>
</div>

<h4>
	مطور تصوير بيانات
</h4>

<p>
	وهو شخص يعمل إلى جانب عالم البيانات لتمثيل البيانات بصريًا وتقديم عروض ومخططات تفصّل نتائج تحليل هذه البيانات بطريقة مرئية سهلة الفهم لإيصالها إلى من يستخدمها.
</p>

<p>
	<strong>ما المهارات التي يجب أن يتقنها مطور تصوير بيانات</strong>؟
</p>

<ul>
	<li>
		مهارة في إحدى لغات البرمجة التالية أو أكثر:
		<ul>
			<li>
				Python
			</li>
			<li>
				R
			</li>
			<li>
				SAS
			</li>
			<li>
				SQL
			</li>
			<li>
				Hive
			</li>
			<li>
				Pig
			</li>
			<li>
				Apache spark
			</li>
			<li>
				MATLAB
			</li>
		</ul>
	</li>
	<li>
		قدرة تحليلية ممتازة.
	</li>
	<li>
		قدرة كبيرة على إيجاد الطرق الأمثل في تصوير البيانات.
	</li>
</ul>

<h4>
	خبير في تعلم الآلة
</h4>

<p>
	هو الشخص الذي يعمل مع مختلف <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1009/" rel="">خوارزميات تعلم الآلة</a> التي تُستخدم في علم البيانات مثل خوارزميات الارتجاع أو الإنحدار Regression والتجميع clustering والتصنيف classification وشجرة القرار decision tree والغابة العشوائية random forest وغيرها.
</p>

<p>
	<strong>ما المهارات التي يجب أن يتقنها خبير تعلم الآلة</strong>؟
</p>

<ul>
	<li>
		خبرة في أحد لغات البرمجة التالية أو أكثر:
	</li>
	<li>
		Python
	</li>
	<li>
		++C
	</li>
	<li>
		R
	</li>
	<li>
		Java
	</li>
	<li>
		Hadoop
	</li>
	<li>
		فهم جيد للخوارزميات الكثيرة المستخدمة في علم البيانات وتعلم الآلة.
	</li>
	<li>
		مهارة تحليلية في حل المشاكل.
	</li>
	<li>
		معرفة جيدة في علمي الاحتمالات والإحصاء.
	</li>
</ul>

<h2>
	مصادر تعلم علم البيانات
</h2>

<p>
	هل أنت متحمس للتخصص في مجال علم البيانات وتعلمه بشكل ذاتي وبأقصر الطرق بعيدًا عن أروقة الجامعات ومناهجها المكثفة -بسنواتها الطويلة التي تمتد لأربع أو خمسة سنوات- لكنك لا تعرف من أين تبدأ؟ سنسلط في القسم الضوء على مصادر تعلم تخصص علم البيانات العربية لدخول سوق العمل، فكما أشرنا حاليًا السوق شره على المتخصصين ويركز على الخبرة والمشاريع العملية المنجزة ولا يتطلب شهادات جامعية حصرية.
</p>

<p>
	نفترض أنك أنهيت مراحل جيدة من التعليم الدراسي أو قد أنهيت المرحلة الثانوية أو تخصصت في أحد التخصصات الهندسية وبذلك تكون قد حصَّلت معرفة جيدة بأساسيات الرياضيات والإحصاء وحتى مواضيع متقدمة مثل التفاضل والتكامل (إن كنت قد اخترت التخصص العملي وليس الأدبي) وبذلك تكون قد قطعت شوطًا في تعلم هذا العمل، وعمومًا الأساسيات تكفي للبدء ويمكن لاحقًا التعمق في أي موضوع تحتاج إليه.
</p>

<p>
	بعدها يمكنك البدء بتعلم أساسيات علوم الحاسوب ولغات البرمجة المخصصة المستخدمة في علم البيانات وأهمها لغة بايثون و لغة R ولغة SQL فهي من أكثر اللغات المطلوبة والمخصصة للاستخدام مع البيانات.
</p>

<p>
	تؤمّن هذه اللغات قدرات وظيفية كبيرة في التواصل مع قواعد البيانات واستخلاص البيانات الخام وتحليلها وتنظيمها واستخلاص الرؤى وفقا للظاهرة المدروسة ومن ثم التقييم وإتخاذ القرار، وكل ذلك من خلال مجموعة واسعة من الخوارزميات التي توفرها هذه اللغات ضمنًا أو من خلال مكتبات متوافقة معها.
</p>

<p>
	من أهم المصادر العربية المتكاملة التي ننصحك بها كي تتعلم هذه التقنيات:
</p>

<ul>
	<li>
		كتاب <a href="https://academy.hsoub.com/files/16-%D9%85%D9%84%D8%A7%D8%AD%D8%B8%D8%A7%D8%AA-%D9%84%D9%84%D8%B9%D8%A7%D9%85%D9%84%D9%8A%D9%86-%D8%A8%D9%84%D8%BA%D8%A9-sql/" rel="">ملاحظات للعاملين بلغة SQL 1.0.0</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/files/15-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86/" rel="">كتاب البرمجة بلغة بايثون</a> الذي يشرح أساسيات لغة بايثون
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/r-language/" rel="">سلسلة تعلم لغة R</a> التي تطلعك على كافة الأساسيات والمواضيع النظرية التي تحتاجها في هذه اللغات.
	</li>
	<li>
		<a href="https://academy.hsoub.com/tags/think%20stats/" rel="">سلسلة مقالات think stats</a> التي توفر لك مجموعة مميزة من المقالات والدروس المتخصصة في تعليم الاحتمالات والإحصائيات لمبرمجي بايثون بأسلوب مبسط وسهل الفهم.
	</li>
</ul>

<p>
	وإذا كنت تفضل التعلم بإشراف مختصين يجيبونك على أي سؤال يخطر ببالك ويقرن التعليم النظري بالتطبيق العملي فأنصحك بالاطلاع على <a href="https://academy.hsoub.com/learn/computer-science/" rel="">دورة أساسيات علوم الحاسب</a> التي توفرها أكاديمية حسوب فهي كفيلة بأن تكسبك كافة الأسس التي تحتاجها لتعلم أسس البرمجة وقواعد البيانات، وكذلك <a href="https://academy.hsoub.com/learn/python-application-development/" rel="">دورة تطوير التطبيقات بلغة بايثون</a> والتي تمكنك من تطوير طيف واسع من التطبيقات في مجالات منوعة من بينها تطبيقات عملية في تحليل البيانات تساعدك في التعرف على أبرز مكتبات بايثون المتخصصة في التعامل مع علم البيانات.
</p>

<p>
<iframe width="786" height="442" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة الذكاء الاصطناعي - أكاديمية حسوب" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen data-embed-src="https://www.youtube.com/embed/9ESA9owvmGM"></iframe>

</p><p>
	إضافة إلى لغات البرمجة التي ذكرناها ستجد الكثير من المنصات والأدوات التي تدعم بشكل مباشر العمل مع البيانات الضخمة وتقدم مختلف الأدوات المساعدة في التحليل والتنظيم واتخاذ القرار والتي يمكنك تعلمها ومن أبرزها SAS و Spark و Hadoop و Azure و AWS.
</p>

<h2>
	خاتمة
</h2>

<p>
	ألقينا الضوء في هذا المقال على علم البيانات الذي يُتوقع أن يكون من أكثر الأعمال طلبًا خلال هذا العقد من الألفية نظرًا للحاجة الماسة للعمل ضمن كميات هائلة من البيانات الخام وضرورة الاستفادة منها في تطوير الأعمال على مختلف الأصعدة.
</p>

<p>
	كما تحدثنا عن المكونات والتخصصات التي يضمها ومجالات استخدامه وتطبيقه، كما تحدثنا عن دورة الحياة التي يمر بها أي مشروع يعتمد على علم البيانات. ومنعًا لتضارب الأفكار وضياع التسميات، فقد تحدثنا عن الفرق بين علم البيانات وتحليلها وكذلك الفرق بين علم البيانات والذكاء الاصطناعي.
</p>

<p>
	وهكذا نكون قد أحطنا بشكل مفصل أساسيات علم البيانات وتخصصاته ومجالاته المختلفة لمن يرغب فعليًا في امتهانه أو احتراف أحد اختصاصاته، ووضحنا المتطلبات الضرورية التي يحتاجها المتعلم حتى يبدأ رحلته في هذا المجال المهم والشيق والمجزي ماديًا والذي ينبئ بمستقبل واعد.
</p>
]]></description><guid isPermaLink="false">1927</guid><pubDate>Thu, 16 Mar 2023 15:09:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x645;&#x647;&#x627;&#x631;&#x627;&#x62A; &#x627;&#x644;&#x634;&#x62E;&#x635;&#x64A;&#x629; &#x627;&#x644;&#x62A;&#x64A; &#x64A;&#x62C;&#x628; &#x62A;&#x648;&#x627;&#x641;&#x631;&#x647;&#x627; &#x641;&#x64A; &#x627;&#x644;&#x645;&#x628;&#x631;&#x645;&#x62C;&#x64A;&#x646;</title><link>https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D9%85%D9%87%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%8A-%D9%8A%D8%AC%D8%A8-%D8%AA%D9%88%D8%A7%D9%81%D8%B1%D9%87%D8%A7-%D9%81%D9%8A-%D8%A7%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86-r2062/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/------(1).png.b8dcc42d30402097958e48c295b3fc74.png" /></p>
<p>
	من أول الأمور التي نفكر بها أثناء الحديث عن مهارات المبرمجين يخطر ببالك لغات البرمجة وإطارات العمل، والمكتبات البرمجية الكثيرة، لكن هنالك مهارات مهمة للمبرمجين سنستعرضها سويةً في هذا الفيديو، أهمها مهارات التواصل، ومهارات تنظيم الوقت وتخطيط الأعمال، ومهارات حل المشكلات.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" src="https://academy.hsoub.com/applications/core/interface/index.html" title="المهارات الشخصية التي يجب توافرها في المبرمجين" width="1072" data-embed-src="https://www.youtube.com/embed/VnLOR7HVc8Y"></iframe>
</p>

<p>
	إذا أردت تعلم إدارة تطوير المنتجات وصقهل مهاراتك ومعرفة كيف تتعامل مع المبرمجين، فننصحك بالانضمام إلى <a href="https://academy.hsoub.com/learn/product-development-management/" rel="">دورة إدارة تطوير المنتجات</a>.
</p>
]]></description><guid isPermaLink="false">2062</guid><pubDate>Thu, 09 Mar 2023 15:00:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x630;&#x627;&#x643;&#x631;&#x629; &#x627;&#x644;&#x648;&#x647;&#x645;&#x64A;&#x629; &#x648;&#x627;&#x644;&#x630;&#x627;&#x643;&#x631;&#x629; &#x627;&#x644;&#x62D;&#x642;&#x64A;&#x642;&#x64A;&#x629; &#x641;&#x64A; &#x645;&#x639;&#x645;&#x627;&#x631;&#x64A;&#x629; &#x627;&#x644;&#x62D;&#x627;&#x633;&#x648;&#x628;</title><link>https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D9%82%D9%8A%D9%82%D9%8A%D8%A9-%D9%81%D9%8A-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-r1918/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_03/741079644_-------.png.90dbd6c9b8676be8e8a9b6e14f10128f.png" /></p>
<p>
	يمكن القول بأن <span ipsnoautolink="true">الذاكرة الوهمية Virtual Memory</span> هي طريقة لتوسيع <a href="https://academy.hsoub.com/certificates/comptia/%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D9%88%D8%A3%D9%86%D9%88%D8%A7%D8%B9%D9%87%D8%A7-r59/" rel="">الذاكرة RAM</a> من خلال استخدام القرص الصلب بوصفه ذاكرة نظام إضافية ولكنها أبطأ، أي ينتقل النظام إلى القرص الصلب الذي يُستخدَم بوصفه ذاكرةً وهمية بمجرد نفاد الذاكرة في نظامك.
</p>

<p>
	يُشار إلى الذاكرة الوهمية عادةً في أنظمة التشغيل الحديثة باسم ذاكرة سواب Swap Space، لأن الأجزاء غير المُستخدَمة من الذاكرة تُبعَد إلى القرص الصلب لتحرير الذاكرة الرئيسية، إذ لا يمكن تنفيذ البرامج إلا من الذاكرة الرئيسية. تُعَد القدرة على إبعاد الذاكرة إلى القرص الصلب أمرًا مهمًا، ولكنها ليست الغرض الأساسي للذاكرة الوهمية، بل لها تأثيرٌ آخر مفيد للغاية سنراه لاحقًا.
</p>

<h2>
	ما هي الذاكرة الوهمية Virtual Memory؟
</h2>

<p>
	تدور <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AB%D8%A7%D9%84%D8%AB-%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-virtual-memory-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-r978/" rel="">الذاكرة الوهمية</a> حول فكرة الاستفادة من فضاء العناوين Address Space، حيث يشير فضاء العناوين الخاص بالمعالج إلى مجال العناوين المُحتمَلة التي يمكن استخدامها عند التحميل والتخزين في الذاكرة. يُعَد فضاء العناوين محدودًا بعرض المسجّلات Registers، لأننا نحتاج لتحميل عنوانٍ إطلاقَ تعليمة تحميل <code>load</code> مع العنوان الذي سيُحمَّل منه العنوان المُخزَّن في المسجّل، إذ يمكن مثلًا أن تحتوي المسجلات التي يبلغ عرضها 32 بتًا على عناوين في مجال المسجل من <code>0x00000000</code> إلى <code>0xFFFFFFF</code>. يساوي 2‎<sup>32</sup>‎ ما مقداره 4 جيجابايت، لذلك يمكن للمعالج ذي 32 بت تحميلُ أو تخزين ما يصل إلى 4 جيجابايتات من الذاكرة.
</p>

<h3>
	المعالجات ذات 64 بتا
</h3>

<p>
	جميع المعالجات الجديدة هي معالجات 64 بتًا التي -كما يوحي اسمها- تحتوي على مسجّلات بعرض 64 بتًا، حيث يكون فضاء العناوين المتاح لهذه المعالجات كبيرًا.
</p>

<p>
	تحتوي المعالجات ذات 64 بت على بعض المقايضات مقابل استخدام معالجات ذات عرض بتات أصغر، حيث يتطلب كل برنامجٍ مُصرَّفٍ Compiled في وضع 64 بتًا مؤشرات حجمها 8 بايتات، والتي يمكن أن تزيد من حجم الشيفرة البرمجية والبيانات، وبالتالي تؤثر على أداء كل من الذاكرة المخبئة الخاصة بالتعليمة والبيانات، ولكن تميل معالجات 64 بت إلى الحصول على عدد أكبر من المسجلات، مما يعني تقليل الحاجة إلى حفظ المتغيرات المؤقتة في الذاكرة عندما يكون المصرّف Compiler واقعًا تحت الضغط القادم من المسجّلات.
</p>

<h3>
	العناوين المعيارية Canonical Addresses
</h3>

<p>
	تحتوي معالجات 64 بت على مسجلات بعرض 64 بتًا، ولكن لا تطبّق الأنظمة جميع هذه 64 بتًا للعنونة، إذ لا يُعَد تحميل <code>load</code> أو تخزين <code>store</code> كل 16 إكسابايت من الذاكرة الحقيقية أمرًا ممكنًا. لذا تحدّد معظم المعماريات منطقةً غير قابلة للاستخدام Unimplemented من فضاء العناوين التي يَعُدّها المعالج غير صالحة للاستخدام.
</p>

<p>
	تعرِّف كلٌّ من المعماريتين x86-64 وإيتانيوم Itanium البت الصالح الأكثر أهمية في العنوان، ويجب بعد ذلك تمديد إشارته لإنشاء عنوان صالح، والنتيجة هي تقسيم إجمالي فضاء العناوين بفعالية إلى جزأين هما: جزء علوي وجزء سفلي مع وجود عناوين غير صالحة بينهما، وهذا موضح في الشكل الآتي. تُسمَّى العناوين الصالحة عنواين معيارية Canonical Addresses، بينما تُسمَّى العناوين غير الصالحة عناوين غير معيارية Non-canonical.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="120034" href="https://academy.hsoub.com/uploads/monthly_2023_03/01_canonical.png.2db65356c12194fd5a3aac76ea78ad50.png" rel=""><img alt="العناوين المعيارية Canonical Addresses" class="ipsImage ipsImage_thumbnailed" data-fileid="120034" data-ratio="49.06" data-unique="orc5ccf1m" style="width: 744px; height: auto;" width="744" src="https://academy.hsoub.com/uploads/monthly_2023_03/01_canonical.png.2db65356c12194fd5a3aac76ea78ad50.png"> </a>
</p>

<p>
	يمكن العثور على قيمة البت الأكثر أهمية للمعالج من خلال الاستعلام عن المعالج نفسه باستخدام تعليمة الحصول على المعلومات. ستكون قيمة البت الأكثر أهمية 48 بالرغم من أن القيمة الدقيقة تعتمد على التقديم Implementation، مما يؤدي إلى توفير 2‎<sup>48</sup>‎ = 256 تيرابايت TiB من فضاء العناوين القابلة للاستخدام.
</p>

<p>
	يُعَد تقليل فضاء العناوين المُحتمَل أنه يمكن تحقيق توفيرٍ كبير مع جميع أجزاء منطق العنونة في المعالج والمكونات ذات الصلة، لأنها تعلم أنها لن تحتاج للتعامل مع عناوين 64 بت كاملة. يحدّد التقديمُ البتات العليا على أنه يجب تمديد إشارتها، مما يؤدي إلى منع <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">أنظمة التشغيل</a> القابلة للنقل التي تستخدم هذه البتات لتخزين أو تحديد المعلومات الإضافية وضمان التوافق عند الرغبة في تقديم مزيدٍ من فضاء العناوين مستقبلًا.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h3>
	استخدام فضاء العناوين Address space
</h3>

<p>
	تعمل الذاكرة الافتراضية -كما هو الحال مع معظم مكونات نظام التشغيل- بوصفها تجريدًا بين فضاء العناوين والذاكرة الحقيقية المتوفرة في النظام، أي إذا استخدم برنامجٌ ما عنوانًا، فلن يشير العنوان إلى البتات الموجودة في الموقع الفعلي الحقيقي في الذاكرة، لذا نقول أن جميع العناوين التي يستخدمها البرنامج هي عناوين وهمية. يتعقّب <a href="https://academy.hsoub.com/apps/operating-systems/%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84/" rel="">نظام التشغيل</a> العناوين الوهمية وكيفية تخصيصها للعناوين الحقيقية، فإذا طبّق أحد البرامج عملية تحميل أو تخزين من عنوانٍ ما، فسيعمل المعالج ونظام التشغيل مع بعضهما البعض لتحويل هذا العنوان الوهمي إلى العنوان الحقيقي في شرائح ذاكرة النظام.
</p>

<h2>
	الصفحات Pages
</h2>

<p>
	يُقسَم إجمالي فضاء العناوين إلى صفحات Pages. يمكن أن تكون الصفحات بأحجام مختلفة، حيث يمكن أن يبلغ حجمها حوالي 4 كيلوبايت KiB، ولكنها ليست قاعدة صارمة ويمكن أن تكون أكبر بكثير ولكنها ليست أصغر من ذلك. تُعَد الصفحة أصغر وحدة ذاكرة يمكن لنظام التشغيل والعتاد التعامل معها.
</p>

<p>
	تحتوي كل صفحة على عدد من السمات التي يضبطها نظام التشغيل، وتشمل أذونات القراءة والكتابة والتنفيذ للصفحة الحالية، حيث يمكن لنظام التشغيل مثلًا تمييز صفحات الشيفرة البرمجية لعمليةٍ ما باستخدام راية قابلة للتنفيذ ويمكن للمعالج اختيار عدم تنفيذ أيّ شيفرة برمجية من الصفحات بدون ضبط هذه البتات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="120035" href="https://academy.hsoub.com/uploads/monthly_2023_03/02_page.png.02c1e8b6d86adf61fd4fbe2d40057262.png" rel=""><img alt="تقسيم إجمالي فضاء العناوين إلى صفحات Pages" class="ipsImage ipsImage_thumbnailed" data-fileid="120035" data-ratio="32.80" data-unique="h7fjo1dz6" style="width: 500px; height: auto;" width="500" src="https://academy.hsoub.com/uploads/monthly_2023_03/02_page.png.02c1e8b6d86adf61fd4fbe2d40057262.png"> </a>
</p>

<p>
	يمكن أن يفكر المبرمجون في هذه المرحلة في أنه يمكنهم بسهولة تخصيص كميات صغيرة من الذاكرة -أي أصغر بكثير من 4 كيلوبايتات- باستخدام الاستدعاء <code>malloc</code> أو استدعاءات مماثلة. تدعم عمليات تخصيص حجم الصفحة كومةَ Heap الذاكرة، حيث يقسمها تقديم الاستدعاء <code>malloc</code> ويديرها بطريقة فعّالة.
</p>

<h2>
	الذاكرة الحقيقية Physical Memory
</h2>

<p>
	يقسم نظام التشغيل فضاء العناوين المُحتمَلة إلى صفحات Pages، ويقسم الذاكرة الحقيقية المتاحة إلى إطارات Frames، حيث يُعَد الإطار الاسم التقليدي لقطعة كبيرة من الذاكرة الحقيقية لها حجم صفحة النظام نفسها.
</p>

<p>
	يحتفظ نظام التشغيل بجدول الإطارات Frame-table الذي يُعَد قائمةً بجميع الصفحات المُحتمَلة للذاكرة الحقيقية ويحدد ما إذا كانت حرةً أو متاحة للتخصيص أم لا. إذا خُصِّصت الذاكرة لعمليةٍ ما، فستُميَّز على أنها مُستخدَمة في جدول الإطارات، وبذلك يتعقّب نظام التشغيل جميع عمليات تخصيص الذاكرة. يعرف نظام التشغيل الذاكرة المتوفرة من خلال تمرير المعلومات الخاصة بمكان وجود الذاكرة ومقدارها وسماتها وغير ذلك إلى نظام التشغيل باستخدام نظام BIOS أثناء عملية التهيئة Initialisation.
</p>

<h2>
	جداول الصفحات
</h2>

<p>
	تتمثل مهمة نظام التشغيل في تعقّب نقاط الصفحة الوهمية المقابلة للإطار الحقيقي، حيث يجري الاحتفاظ بهذه المعلومات في جدول صفحات. يمكن أن يكون جدول الصفحات في أبسط أشكاله جدولًا يحتوي كل صف فيه على الإطار المرتبط به، وهذا ما يسمى بجدول الصفحات الخطي Linear Page-table. وإن استخدمتَ هذا النظام البسيط مع فضاء عناوين بحجم 32 بتًا وصفحات بحجم 4 كيلوبايت، فسيكون هناك 1048576 صفحة يمكن تعقّبها في جدول الصفحات (أي 2‎<sup>32</sup> ÷ 4096)، وبالتالي سيكون طول الجدول 1048576 مدخلةً لضمان أنه يمكننا دائمًا ربط صفحة وهمية مع صفحة حقيقية.
</p>

<p>
	يمكن أن تحتوي جداول الصفحات على العديد من البنى المختلفة ويمكن تحسينها بدرجة كبيرة، إذ يمكن أن تستغرق عملية البحث عن صفحة في جدول الصفحات وقتًا طويلًا. سنتطرق إلى جدول الصفحات بمزيد من التفصيل لاحقًا.
</p>

<p>
	يخضع جدول صفحات العملية لتحكم نظام التشغيل الحصري، فإذا طلبت إحدى العمليات ذاكرةً، فسيجد نظام التشغيل صفحة خالية من الذاكرة الحقيقية ويسجّل ترجمة الصفحة الوهمية إلى الصفحة الحقيقية Virtual-to-physical في جدول صفحات العمليات. بينما إن تخلت العملية عن الذاكرة، فسيُزال سجل ترجمة الصفحة الوهمية إلى الصفحة الحقيقية ويصبح الإطار الأساسي حرًا لتخصيصه لعملية أخرى.
</p>

<h2>
	العناوين الوهمية Virtual Address
</h2>

<p>
	لا يعرف أو يهتم البرنامج عند وصوله إلى الذاكرة بمكان تخزين الذاكرة الحقيقية التي تدعم العنوان، ولكنه يعرف أن الأمر متروك لنظام التشغيل والعتاد، بحيث يتعاونان للربط مع العنوان الحقيقي الصحيح وبالتالي توفير الوصول إلى البيانات التي يريدها. لذا نطلق على العنوان الذي يستخدمه البرنامج للوصول إلى الذاكرة عنوانًا وهميًا Virtual Address الذي يتكون من جزأين هما: الصفحة Page والإزاحة Offset في هذه الصفحة.
</p>

<h3>
	الصفحة
</h3>

<p>
	يُقسَم فضاء العناوين المُحتمَل إلى صفحات ذات حجم ثابت، حيث يتواجد كل عنوان ضمن صفحة، ويعمل مكون الصفحة الخاص بالعنوان الوهمي بوصفه فهرسًا إلى جدول الصفحات. تُعَد الصفحة أصغر وحدة لتخصيص الذاكرة في النظام، لذلك هناك مقايضة بين جعل الصفحات صغيرة جدًا مع وجود عدد كبير جدًا منها ليديرها نظام التشغيل وبين جعل الصفحات أكبر مع وجود احتمال في هدر الذاكرة.
</p>

<h3>
	الإزاحة Offset
</h3>

<p>
	تُسمَّى البتات الأخيرة من العنوان الوهمي بالإزاحة Offset التي تعبّر عن الفرق في الموقع بين عنوان البايت الذي تريده وبداية الصفحة، إذ يجب وجود بتات كافية في الإزاحة لتتمكن من الوصول إلى أيّ بايت في الصفحة، حيث تحتاج بالنسبة لصفحة بحجم 4 كيلوبايتات إلى 12 بتًا للإزاحة حيث 4K = 4 * 1024 = 4096 = 2‎<sup>12</sup>‎. تذكر أن أقل قدر من الذاكرة يتعامل معه نظام التشغيل أو العتاد يساوي صفحة، لذا يوجد كل بتٍ من 4096 بايتًا ضمن صفحة واحدة ويجري التعامل معها على أنها كتلة واحدة.
</p>

<h3>
	ترجمة العنوان الوهمي Virtual Address
</h3>

<p>
	تشير ترجمة العناوين الوهمية إلى عملية اكتشاف الصفحة الحقيقية المربوطة مع الصفحة الوهمية. سنتعامل فقط مع رقم الصفحة عند ترجمة عنوان وهمي إلى عنوان حقيقي، حيث نأخذ رقم الصفحة من العنوان المُعطَى ونبحث عنه في جدول الصفحات للعثور على مؤشر إلى عنوان حقيقي مع إضافة الإزاحة من العنوان الوهمي إليه، مما يؤدي إلى إعطاء الموقع الفعلي في نظام الذاكرة.
</p>

<p>
	تخضع جداول الصفحات لسيطرة نظام التشغيل، فإن لم يكن العنوان الوهمي موجودًا في جدول الصفحات، فسيعرف نظام التشغيل أن العملية تحاول الوصول إلى الذاكرة التي ليست مخصَّصةً لها ولن يُسمَح لها بالوصول.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="120036" href="https://academy.hsoub.com/uploads/monthly_2023_03/03_virtaddress.png.a08e846be23228086a79a84bccede010.png" rel=""><img alt="ترجمة العنوان الوهمي" class="ipsImage ipsImage_thumbnailed" data-fileid="120036" data-ratio="72.83" data-unique="j89izkiyt" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_03/03_virtaddress.png.a08e846be23228086a79a84bccede010.png"> </a>
</p>

<p style="text-align: center;">
	ترجمة العنوان الوهمي
</p>

<p>
	يوضّح المثال السابق جدول صفحات خطي بسيط، حيث سيتطلب فضاء العناوين ذو 32 بتًا جدولًا مؤلفًا من 1048576 مدخلةً عند استخدام صفحات بحجم 4 كيلوبايتات، وبالتالي ستكون الخطوة الأولى لربط العنوان 0x80001234 هي إزالة بتات الإزاحة. نعلم في هذه الحالة أن لدينا 12 بتًا (2‎<sup>12</sup>‎ = 4096) من الإزاحة مع صفحات بحجم 4 كيلوبايتات. لذا سنزيح 12 بتًا من العنوان الوهمي إزاحةً يمنى، وبالتالي يبقى لدينا 0x80001، وستكون القيمة العشرية الموجودة في السطر رقم 524289 من جدول الصفحات الخطي هي الإطار الحقيقي المقابل لهذه الصفحة.
</p>

<p>
	يمكن أن ترى مشكلة في جدول الصفحات الخطي، حيث يجب حساب كل صفحة سواء كانت قيد الاستخدام أم لا، وبالتالي لا يُعَد جدول الصفحات الخطي الحقيقي عمليًا تمامًا مع فضاء عناوين 64 بت. ضع في حساباتك فضاء عناوين 64 بت المقسَّم إلى صفحات مؤلفة من 64 كيلوبايت (كبيرة جدًا)، حيث ينشئ هذا الفضاء 2‎<sup>64</sup>/2‎<sup>16</sup>=2‎<sup>52</sup>‎ صفحة لإدارتها. لنفترض أن كل صفحة تتطلب مؤشرًا بحجم 8 بايتات لموقع حقيقي، فسيتطلب ذلك 2‎<sup>52</sup>*2‎<sup>3</sup>=2‎<sup>55</sup>‎ أو 512 جيجابايت GiB من الذاكرة المتجاورة لجدول الصفحات فقط.
</p>

<h2>
	مفاهيم متعلقة بالعناوين الوهمية والصفحات وجداول الصفحات
</h2>

<p>
	تُعَد العناوين الوهمية والصفحات وجداول الصفحات أساس كل نظام تشغيل حديث، لأنها تشكّل أساس معظم الأشياء التي نستخدم أنظمتنا من أجلها.
</p>

<h3>
	فضاءات العناوين المفردة
</h3>

<p>
	يمكن لكل عملية التظاهر بأنها تستطيع الوصول إلى فضاء العناوين الكامل المتاح من المعالج من خلال إعطاء كل عملية جدول صفحات خاص بها، إذ يمكن أن تستخدم عمليتان العنوان نفسه، حيث ستربط جداولُ الصفحات المختلفة العمليةَ مع إطار مختلف من الذاكرة الحقيقية، إذ توفّر أنظمة التشغيل الحديثة لكل عمليةٍ فضاءَ عناوين خاص بها.
</p>

<p>
	تصبح الذاكرة الحقيقية مجزأة Fragmented بمرور الوقت، مما يعني أن هناك ثقوب في الفضاء الحر من الذاكرة الحقيقية.
</p>

<p>
	سيكون الاضطرار إلى حل مشكلة هذه الثقوب أمرًا مزعجًا في أحسن الأحوال ولكنه سيصبح أمرًا خطيرًا للمبرمجين، فإذا نفّذتَ الاستدعاء <code>malloc</code> لتخصيص 8 كيلوبايتات من الذاكرة مثلًا، فسيتطلب ذلك دعم إطارين بحجم 4 كيلوبايتات، وبالتالي لن تكون هذه الإطارات متجاورة، أي بجوار بعضها البعض فعليًا. لا يُعَد استخدام العناوين الوهمية أمرًا مهمًا بقدر ما يتعلق الأمر باحتواء العملية على 8 كيلوبايت من الذاكرة المتجاورة، حتى لو كانت هذه الصفحات مدعومة بإطارات متباعدة جدًا. يمكن للمبرمج ترك مهمة حل مشكلة التجزئة لنظام التشغيل من خلال إسناد فضاء عناوين وهمية لكل عملية.
</p>

<h3>
	الحماية
</h3>

<p>
	يُدعَى الوضع الوهمي للمعالج 386 بالوضع المحمي Protected Mode، وينشأ هذا الاسم من الحماية التي يمكن أن توفرها الذاكرة الوهمية للعمليات التي تعمل عليها.
</p>

<p>
	تتمتع كل عملية في نظام بدون ذاكرة وهمية بوصولٍ كامل إلى ذاكرة النظام بأكملها، وهذا يعني أنه لا يوجد شيء يمنع عمليةً ما من الكتابة فوق ذاكرة عمليات أخرى، مما يؤدي إلى تعطّلها أو إعادة قيم غير صحيحة في أسوأ الأحوال خاصة إذا كان هذا البرنامج يدير حسابك المصرفي مثلًا. لذا يجب توفير هذا المستوى من الحماية لأن نظام التشغيل يُعَد طبقة تجريد بين العملية والوصول إلى الذاكرة، فإذا أعطت العملية عنوانًا وهميًا لا يغطيه جدول الصفحات الخاص بها، فسيعلم نظام التشغيل أن هذه العملية تطبّق شيئًا خاطئًا ويمكنه إبلاغ العملية أنها تعدّت حدودها.
</p>

<p>
	تمتلك كل صفحة سمات إضافية، لذا يمكن ضبط الصفحة للقراءة فقط أو للكتابة فقط أو غيرها من الخاصيات الأخرى. إذا حاولت العملية الوصول إلى الصفحة، فيمكن لنظام التشغيل التحقق مما إذا كان لديها أذونات كافية وإيقافها إن لم تكن كذلك مثل محاولة الكتابة في صفحة للقراءة فقط.
</p>

<p>
	تُعَد الأنظمة التي تستخدم الذاكرة الوهمية أكثر استقرارًا لأنه يمكن للعملية في نظام تشغيل مثالي أن تعطّل نفسها فقط دون تعطيل النظام بأكمله، حيث تُبرمَج أنظمة تشغيل مع تجاهل الأخطاء التي يمكن أن تتسبّب في تعطل الأنظمة بأكملها.
</p>

<h3>
	التبديل Swap
</h3>

<p>
	يمكننا الآن أن نرى كيفية تقديم تبديل ذاكرة، حيث يمكن تغيير مؤشر الصفحة ليؤشّر إلى موقع على القرص الصلب بدلًا من التأشير إلى منطقة من ذاكرة النظام. يحتاج نظام التشغيل عند الرجوع إلى هذه الصفحة إلى نقلها من القرص الصلب إلى ذاكرة النظام، إذ لا يمكن تنفيذ شيفرة البرنامج إلا من ذاكرة النظام. إذا كانت ذاكرة النظام ممتلئة، فيجب إخراج صفحة أخرى من ذاكرة النظام وتبديلها بالقرص الصلب قبل وضع الصفحة المطلوبة في الذاكرة. إذا كانت هناك عملية أخرى تريد الصفحة التي أُخرِجت للتو، فستتكرر هذه العملية مرةً أخرى.
</p>

<p>
	يمكن أن يؤدي ذلك إلى مشكلةٍ كبيرة في تبديل الذاكرة، حيث يُعَد التحميل من القرص الصلب بطيئًا جدًا بالموازنة مع العمليات التي تُنجَز في الذاكرة، وسيكون معظم الناس متآلفين مع فكرة الجلوس أمام الحاسوب أثناء توقف القرص الصلب مرارًا وتكرارًا مع بقاء النظام غير مستجيب.
</p>

<h4>
	mmap
</h4>

<p>
	تُعَد عملية ربط الذاكرة Memory Map أو <code>mmap</code> (من اسم استدعاء النظام) عمليةً مختلفة ولكنها ذات صلة، حيث إن لم يؤشّر جدول الصفحات إلى الذاكرة الحقيقية أو لم يؤشّر تبديل جدول الصفحات إلى ملف على القرص الصلب، فسنقول أن الملف مربوط بالذاكرة <code>mmap</code>.
</p>

<p>
	تحتاج عادةً إلى فتح <code>open</code> ملف على القرص الصلب للحصول على واصف الملف ثم قراءته <code>read</code> وكتابته <code>write</code> في صيغة تسلسلية. إذا كان الملف مربوطًا بالذاكرة، فيمكن الوصول إليه مثل الذاكرة RAM الخاصة بالنظام.
</p>

<h3>
	مشاركة الذاكرة
</h3>

<p>
	تحصل كل عملية على جدول صفحات خاص بها، لذلك يُربَط أيّ عنوان تستخدمه مع إطار فريد في الذاكرة الحقيقية، ولكن إن أشّر نظام التشغيل إلى مدخلتَين من جدول الصفحات إلى الإطار نفسه، فهذا يعني التشارك في هذا الإطار، وستكون أيّ تغييرات تجريها إحدى العمليتين مرئية للعملية الأخرى.
</p>

<p>
	يمكنك أن ترى الآن كيفية تقديم <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AA%D8%A7%D8%B3%D8%B9-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%AE%D9%8A%D9%88%D8%B7-threads-%D9%81%D9%8A-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-r1012/" rel="">الخيوط Threads</a>. يمكن للدالة <code>clone()‎</code> الخاصة <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">بنظام لينكس</a> مشاركة قدر كبير أو صغير من العملية الجديدة مع العملية القديمة وفق ما هو مطلوب. إن استدعت عمليةٌ الدالة <code>clone()‎</code> لإنشاء عملية جديدة، ولكنها تطلب أن تشترك العمليتان في جدول الصفحات نفسه، فسيكون لديك خيط حيث ترى كلتا العمليتين الذاكرة الحقيقية الأساسية نفسها.
</p>

<p>
	كما يمكنك معرفة كيفية إجراء النسخ عند الكتابة، حيث إذا ضبطتَ أذونات إحدى الصفحات لتكون للقراءة فقط، فسيجري إعلام نظام التشغيل عندما تحاول إحدى العملياتُ الكتابةَ في الصفحة. إذا عَلِم نظام التشغيل أن هذه الصفحة هي صفحة نسخ عند الكتابة، فيجب إنشاء نسخة جديدة من الصفحة في ذاكرة النظام ويجب أن توشّر الصفحة في جدول الصفحات إلى هذه الصفحة الجديدة. يمكن بعد ذلك تحديث سمات الصفحة للحصول على أذونات الكتابة ويكون للعملية نسختها الفريدة من الصفحة.
</p>

<h3>
	ذاكرة القرص الصلب المخبئة Cache
</h3>

<p>
	توجد في الأنظمة الحديثة ذاكرة متوفرة أكثر مما يستخدمه النظام حاليًا بدلًا من وجود ذاكرة قليلة جدًا والاضطرار إلى تبديل الذاكرة. يخبرنا تسلسل الذواكر الهرمي بأن الوصول إلى القرص الصلب أبطأ بكثير من الوصول إلى الذاكرة، لذلك يُفضَّل نقل أكبر قدر ممكن من البيانات من القرص الصلب إلى ذاكرة النظام إن أمكن ذلك.
</p>

<p>
	ينسخ نظام لينكس والعديد من الأنظمة الأخرى البيانات من الملفات الموجودة على القرص الصلب إلى الذاكرة عند استخدامها. يُحتمَل أن يرغب البرنامج في الوصول إلى بقية الملف مع استمراره في المعالجة حتى إن طلب في البداية جزءًا صغيرًا فقط من الملف، ويتحقق نظام التشغيل عند قراءة ملف أو الكتابة فيه أولًا مما إذا كان الملف موجودًا في <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%B3%D8%A7%D8%A8%D8%B9-%D9%81%D9%87%D9%85-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AE%D8%A8%D8%A6%D8%A9-caching-%D9%81%D9%8A-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-r995/" rel="">الذاكرة المخبئة Cache</a>. يجب أن تكون هذه الصفحات هي أولى الصفحات التي ستُزال عند زيادة ضغط الذاكرة في النظام.
</p>

<h4>
	ذاكرة الصفحة المخبئة Page Cache
</h4>

<p>
	المصطلح الذي يمكن أن تسمعه عند مناقشة النواة Kernel هو ذاكرة الصفحة المخبئية Page Cache التي تشير إلى قائمة الصفحات التي تحتفظ بها النواة والتي تشير إلى الملفات الموجودة على القرص الصلب، حيث تندرج صفحة التبديل والصفحات المربوطة بالذاكرة وصفحات ذاكرة القرص الصلب المخبئية ضمن هذه الفئة. تحتفظ النواة بهذه القائمة لأنها تحتاج إلى أن تكون قادرة على البحث عنها بسرعة استجابةً لطلبات القراءة والكتابة.
</p>

<h2>
	مواصفات الذاكرة الوهمية في لينكس
</h2>

<p>
	تبقى مفاهيم الذاكرة الوهمية الأساسية ثابتة، إلّا أن تفاصيل التقديمات تعتمد بصورة كبيرة على نظام التشغيل والعتاد.
</p>

<h3>
	مخطط فضاء العناوين
</h3>

<p>
	يقسم لينكس فضاء العناوين المتاح إلى مكون نواة Kernel مشترك وفضاء عناوين خاص بالمستخدم، وهذا يعني أن العناوين الموجودة في منفذ النواة لفضاء العناوين ترتبط مع الذاكرة الحقيقية نفسها لكل عملية، بينما يكون فضاء عناوين المستخدم خاصًا بالعملية، ويوجد في نظام لينكس فضاء النواة المشترك في أعلى فضاء العناوين المتاح. يحدث هذا الانقسام على المعالج x86 الأكثر شيوعًا المكون من 32 بت عند حجم 3 جيجابايتات، وبما أن 32 بت يمكنها ربط 4 جيجابايتات كحد أقصى، مما يؤدي إلى ترك المنطقة العليا بمقدار 1 جيجابايت لتكون منطقة النواة المشتركة.
</p>

<p>
	مع ذلك، تريد العديد من الأجهزة دعم أكثر من 4 جيجابايتات لكل عملية، حيث يسمح دعم الذاكرة العالي للمعالجات بالوصول إلى 4 جيجابايتات كاملة باستخدام توسّعات خاصة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="120037" href="https://academy.hsoub.com/uploads/monthly_2023_03/04_Linux-layout.png.698b21eab11ee355455eddcc4d9f2f43.png" rel=""><img alt="مخطط فضاء العناوين في لينكس" class="ipsImage ipsImage_thumbnailed" data-fileid="120037" data-ratio="74.18" data-unique="85o2oeqh4" style="width: 550px; height: auto;" width="550" src="https://academy.hsoub.com/uploads/monthly_2023_03/04_Linux-layout.png.698b21eab11ee355455eddcc4d9f2f43.png"> </a>
</p>

<p style="text-align: center;">
	مخطط فضاء العناوين في لينكس
</p>

<h3>
	جدول الصفحات المكون من المستويات الثلاثة
</h3>

<p>
	هناك العديد من الطرق المختلفة لنظام التشغيل لتنظيم جداول الصفحات، ولكن يختار نظام لينكس استخدام النظام الهرمي. تستخدم جداول الصفحات تسلسلًا هرميًا بعمق ثلاثة مستويات، لذلك يُشار إلى نظام لينكس باسم جدول الصفحات المكوَّن من ثلاثة مستويات. أثبت جدول الصفحات المكون من ثلاثة مستويات أنه اختيار قوي بالرغم من أنه لا يخلو من بعض المساوئ. تختلف تفاصيل تقديم الذاكرة الوهمية بين المعالجات، مما يعني أن جدول الصفحات العام الذي يختاره نظام لينكس يجب أن يكون قابلًا للنقل وعامًا نسبيًا.
</p>

<p>
	لا يُعَد مفهوم مستويات جدول الصفحات الثلاثة أمرًا صعبًا، لأننا نعلم أن العنوان الوهمي يتكون من رقم صفحة وإزاحة في صفحة الذاكرة الحقيقية، إذ يُقسَم العنوان الوهمي إلى مستويات مُرقَّمة في جدول الصفحات المكون من ثلاثة مستويات. يُعَد كل مستوًى جدولَ صفحات بحد ذاته، أي أنه يرتبط مع رقم الصفحة الحقيقية. ترتبط مدخلة المستوى 1 مباشرةً مع الإطار الحقيقي في جدول صفحات مؤلفٍ من مستوًى واحد، بينما يعطي كل مستوًى من المستويات العليا عنوان إطار الذاكرة الحقيقية الذي يحتفظ بجدول صفحات المستويات الدنيا التالي في الإصدار متعدد المستويات من جدول الصفحات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="120038" href="https://academy.hsoub.com/uploads/monthly_2023_03/05_Threelevel.png.804c9ed8a2c22e69dfdf9db2a187d476.png" rel=""><img alt="جدول صفحات لينكس المكون من ثلاثة مستويات" class="ipsImage ipsImage_thumbnailed" data-fileid="120038" data-ratio="61.42" data-unique="qpta7x20d" style="width: 744px; height: auto;" width="744" src="https://academy.hsoub.com/uploads/monthly_2023_03/05_Threelevel.png.804c9ed8a2c22e69dfdf9db2a187d476.png"> </a>
</p>

<p style="text-align: center;">
	جدول صفحات لينكس المكون من ثلاثة مستويات
</p>

<p>
	يتضمن المثال السابق الانتقال إلى جدول الصفحات ذي المستوى الأعلى، والعثور على الإطار الحقيقي الذي يحتوي على عنوان المستوى التالي، وقراءة مستويات ذلك الجدول وإيجاد الإطار الحقيقي الذي يوجد فيه جدول صفحات المستويات التالية من جدول الصفحات وما إلى ذلك.
</p>

<p>
	يبدو أن هذا النموذج معقدًا في البداية، ولكن السبب الرئيسي لتنفيذ هذا النموذج هو متطلبات الحجم. تخيل مثلًا عملية ما لها صفحة واحدة مرتبطة بالقرب من نهاية فضاء العناوين الوهمية، حيث قلنا سابقًا أنه يمكن العثور على مدخلة جدول الصفحات بوصفها إزاحةً من مسجل جدول الصفحات الأساسي، لذلك يجب أن يكون جدول الصفحات مصفوفةً متجاورةً في الذاكرة، وبالتالي تتطلب الصفحة القريبة من نهاية فضاء العناوين المصفوفةَ بأكملها والتي يمكن أن تشغَل مساحةً كبيرة، أي العديد والعديد من صفحات الذاكرة الحقيقية.
</p>

<p>
	يكون المستوى الأول في نظام مؤلفٍ من ثلاثة مستويات هو إطار ذاكرة حقيقي واحد فقط، ويرتبط مع المستوى الثاني الذي هو إطار ذاكرة واحد، والذي بدوره يرتبط مع المستوى الثالث، وبالتالي يقلّل نظام المستويات الثلاثة من عدد الصفحات المطلوبة إلى جزء صغير فقط من الصفحات المطلوبة لنظام المستوى الواحد.
</p>

<p>
	هناك عيوب واضحة في هذا النظام، إذ يتطلب البحث عن عنوان واحد مزيدًا من المراجع، ويمكن أن يكون ذلك مكلفًا. يتفهم لينكس أن هذا النظام يمكن ألّا يكون مناسبًا للعديد من أنواع المعالجات المختلفة، لذلك يمكن أن تقلل بعض المعماريات من مستويات جدول الصفحات بسهولة مثل المعمارية x86 الأكثر شيوعًا التي تستخدم نظامًا مؤلفًا من مستويين فقط في التقديم الخاص بها.
</p>

<p>
	ترجمة -وبتصرُّف- لأقسام من فصل <a href="https://www.bottomupcs.com/chapter05.xhtml" rel="external nofollow">Virtual Memory</a> من كتاب <a href="https://www.bottomupcs.com/" rel="external nofollow">Computer Science from the Bottom Up</a> لصاحبه Ian Wienand.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		المقال التالي: <a href="https://academy.hsoub.com/programming/advanced/%D8%AF%D8%B9%D9%85-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-%D9%84%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-virtual-memory-r1922/" rel="">دعم عتاد الحاسوب للذاكرة الوهمية Virtual Memory</a>
	</li>
	<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A3%D9%87%D9%85-%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%AA%D9%8A-%D8%AA%D9%86%D8%B8%D9%85-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-%D9%88%D8%AA%D8%B9%D8%A7%D9%84%D8%AC%D9%87%D8%A7-%D9%81%D9%8A-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-%D8%A7%D9%84%D8%AD%D8%AF%D9%8A%D8%AB%D8%A9-r1760/" rel="">أهم المفاهيم التي تنظم العمليات وتعالجها في معمارية الحاسوب الحديثة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AB%D8%A7%D9%84%D8%AB-%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-virtual-memory-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-r978/" rel="">الذاكرة الوهمية (Virtual memory) في نظام التشغيل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%d8%a5%d8%b9%d8%af%d8%a7%d8%af-%d8%a7%d9%84%d8%b0%d9%91%d8%a7%d9%83%d8%b1%d8%a9-%d8%a7%d9%84%d9%88%d9%87%d9%85%d9%8a%d9%91%d8%a9-%d9%85%d9%84%d9%81%d9%91%d8%a7%d8%aa-%d8%a7%d9%84%d8%aa%d8%a8%d8%a7%d8%af%d9%84-%d8%b9%d9%84%d9%89-%d8%ae%d8%a7%d8%af%d9%88%d9%85-%d8%ae%d8%a7%d8%b5-%d9%88%d9%87%d9%85%d9%8a%d9%91-vps-r34/" rel="">إعداد الذّاكرة الوهميّة (ملفّات التبادل) على خادوم خاص وهميّ (VPS)</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A7%D8%AA-%D9%81%D9%8A-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-r1722/" rel="">أنظمة المعالجات في معمارية الحاسوب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%88%D8%AD%D8%AF%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D8%B1%D9%83%D8%B2%D9%8A%D8%A9-%D9%88%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA%D9%87%D8%A7-%D9%81%D9%8A-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-r1716/" rel="">تعرف على وحدة المعالجة المركزية وعملياتها في معمارية الحاسوب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1918</guid><pubDate>Sat, 04 Mar 2023 16:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x635;&#x628;&#x62D; &#x645;&#x637;&#x648;&#x631; &#x648;&#x627;&#x62C;&#x647;&#x627;&#x62A; &#x62E;&#x644;&#x641;&#x64A;&#x629;&#x61F;</title><link>https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%B5%D8%A8%D8%AD-%D9%85%D8%B7%D9%88%D8%B1-%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%AE%D9%84%D9%81%D9%8A%D8%A9%D8%9F-r2061/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/----(1).png.d0f859222c253b19f9c6aaf631fd444a.png" /></p>
<p>
	<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A9-backend-web-development/" rel="">الباك إند Backend </a>أو الواجهات الخلفية هي العمليات التي تجري في الويب دون أن نراها كمستخدمين، وتتعلق هذه العمليات بالتعامل مع السيرفر أو الخادم، والتعامل مع قواعد البيانات، وأبسط مثال عليها هو عمليات تسجيل الدخول التي تتم في معظم المواقع، ويطلق على مطور هذه الواجهات ومن يكتب الشيفرة البرمجة أو الكود الخاص بها مطور الواجهات الخلفية أو مطور باك إند.
</p>

<p>
	في الفيديو الآتي شرح كامل للواجهات الخلفية Backend وإجابة لأهم تساؤل، وهو كيف أصبح مطورًا للواجهات الخلفية؟
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_8744_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="كيف تصبح مطور واجهات خلفية" width="1072" data-embed-src="https://www.youtube.com/embed/mcF7sIeGMOM"></iframe>
</p>

<p>
	إذا أردت التعرف أكثر على مجال البرمجة وتطوير واجهاتها الخلفية، فننصحك بتعلم أي من المجالات الآتية:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/learn/python-application-development/?utm_source=youtube.com&amp;utm_medium=referral&amp;utm_campaign=academy-23feb23" rel="">تطوير التطبيقات باستخدام لغة Python</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/learn/php-web-application-development/?utm_source=youtube.com&amp;utm_medium=referral&amp;utm_campaign=academy--23feb23" rel="">تطوير تطبيقات الويب باستخدام لغة PHP</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/learn/javascript-application-development/?utm_source=youtube.com&amp;utm_medium=referral&amp;utm_campaign=academy--23feb23" rel="">تطوير التطبيقات باستخدام لغة JavaScript</a>
	</li>
</ul>

<p>
	لا تنسَ الاستعانة خلال رحلة تعلمك وعملك بتوثيقات <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة في أكاديمية حسوب</a>، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">2061</guid><pubDate>Thu, 23 Feb 2023 15:00:00 +0000</pubDate></item><item><title>&#x645;&#x62C;&#x627;&#x644;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_02/1183802275_-.png.0350b8519c8ee4b4b6b49c14e8aaea00.png" /></p>
<p>
	تلعب البرمجة في عصرنا الحالي دورًا حيويًا في كافة مناحي الحياة كالاتصالات والهندسة والتصميم والإدارة والطب وغيرها، ومجالات البرمجة كثيرة ومتنوعة وهي تخدم أغراضًا مختلفة وتتوسع بشكل مستمر كما تعدّ البرمجة من أكثر الوظائف نموًا في سوق العمل.
</p>

<p>
	لحسن الحظ، هذا يوفر للمبرمجين الكثير من الخيارات في سوق العمل ويتيح لهم الفرصة للتخصص في مجالات متنوعة كتطوير مواقع الويب أو تطبيقات الجوال أو التخصص في تحليل البيانات أو برمجة الشبكات …إلخ.
</p>

<p>
	نسلط الضوء في هذا المقال على أهم مجالات البرمجة ونساعدك في تحديد أهدافك واكتشاف المجال الذي يناسب اهتماماتك وميولك والتعرف على أهم التقنيات التي يتطلبها التخصص في كل مجال.
</p>

<h2>
	ما هي مجالات البرمجة
</h2>

<p>
	البرمجة هي أن تطلب من جهاز الحاسوب أو أي جهاز إلكتروني آخر قابل للبرمجة أداء مهمة مت أو حل مشكلة معينة من خلال كتابة مجموعة من التعليمات باستخدام إحدى لغات برمجة.
</p>

<p>
	ولغة البرمجة هي لغة خاصة تستخدم للتواصل بينك وبين الحاسوب، ويمكنك من خلالها تطوير مختلف أنواع البرامج والتطبيقات التي تخدم أغراضًا مختلفة، ونتيجة التباين في المهام والمشكلات التي يتم حلها بواسطة الحاسوب تتنوع مجالات البرمجة التي يمكن للمطورين والمبرمجين العمل بها.
</p>

<p>
	وقد اخترنا مجموعة من أهم هذه المجالات <a href="https://survey.stackoverflow.co/2022/#developer-roles-dev-type" rel="external nofollow" target="_blank">حسب استطلاع الرأي الذي أجراه موقع Stackoverflow الشهير للعام 2022</a> والذي يشارك فيه عدد كبير من المطورين والمبرمجين حول العالم:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="PNG" data-fileid="118062" href="https://academy.hsoub.com/uploads/monthly_2023_02/89723759_-.PNG.c07b68000cdf0b03c0141291e0c209fd.PNG" rel=""><img alt="مجالات-البرمجة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="118062" data-unique="2n5kufqis" src="https://academy.hsoub.com/uploads/monthly_2023_02/89723759_-.PNG.c07b68000cdf0b03c0141291e0c209fd.PNG"> </a>
</p>

<p>
	من أشهر مجالات البرمجة نذكر:
</p>

<ol>
	<li>
		تطوير الويب بأنواعه الثلاثة: التطوير الكامل وتطوير الواجهة الخلفية وتطوير الواجهة الأمامية
	</li>
	<li>
		تطوير سطح المكتب
	</li>
	<li>
		تطوير تطبيقات الهاتف
	</li>
	<li>
		التخصص في مجال DevOps
	</li>
	<li>
		هندسة البنية التحتية السحابية
	</li>
	<li>
		إدارة قواعد البيانات
	</li>
	<li>
		تحليل البيانات أو الأعمال
	</li>
	<li>
		الأمن السيبراني
	</li>
	<li>
		تطوير الألعاب
	</li>
	<li>
		الذكاء الاصطناعي وتعلم الآلة
	</li>
</ol>

<p>
	لنستكشف المزيد من المعلومات حول كل مجال من هذه المجالات ونتعرف معًا على أهم استخداماته وتقنياته في فقراتنا التالية.
</p>

<h3>
	1. تطوير الويب
</h3>

<p>
	هو أحد مجالات البرمجة المفضلة لدى غالبية المبرمجين وهو يحتل المكانة الأولى بين <a href="https://academy.hsoub.com/programming/general/%D9%88%D8%B8%D8%A7%D8%A6%D9%81-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%83%D8%AB%D8%B1-%D8%B7%D9%84%D8%A8%D9%8B%D8%A7/" rel="">وظائف المبرمجين</a> على مستوى العالم ولا عجب في ذلك فهو مجال سهل التعلم وكثير الطلب في سوق العمل، فلا توجد شركة ناشئة أو نشاط تجاري إلا ويحتاج <a href="https://sndian.com/" rel="external">لإنشاء موقع إلكتروني</a> خاص به ليثبت وجوده في العالم الرقمي، لذا فإن الطلب على المتخصصين في مجال تطوير الويب مرتفع ومستمر في النمو.
</p>

<p>
	يشمل تطوير الويب تخطيط وتصميم واجهات موقع الويب، وكتابة الكود البرمجي اللازم لعمل الموقع، كما يشمل صيانة مواقع الويب وتطويرها حسب الحاجة. ويقسم مجال تطوير الويب إلى ثلاث تخصصات هي:
</p>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%85%D9%8A%D8%A9-frontend-web-development/" rel="">تطوير الواجهة الأمامية Frontend</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A9-backend-web-development/" rel="">تطوير الواجهة الخلفية Backend</a>
	</li>
	<li>
		التطوير الكامل Full-Stack
	</li>
</ul>

<p>
	<strong>مطور الواجهة الأمامية:</strong> هو المسؤول عن الجزء المرئي من الموقع الذي يراه المستخدمون النهائيون فهو الذي يصمم صفحات وأقسام الموقع والقوائم ويحدد أنواع الخطوط والألوان …إلخ. وهذا المجال يتطلب حسًا فنيًا وتفكيرًا إبداعيًا لابتكار تصاميم سهلة الاستخدام وتنفيذها من خلال التقنيات البرمجية المناسبة حيث يحتاج المتخصص في تطوير الواجهات الأمامية للمواقع إلى معرفة عدة تقنيات مثل HTML5 و CSS3 ولغة جافا سكريبت ومعرفة أهم المكتبات وأطر العمل الخاصة بها.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير واجهات المستخدم
		</p>

		<p class="banner-subtitle">
			ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير واجهات المستخدم" src="https://academy.hsoub.com/learn/assets/images/courses/front-end-web-development.png">
	</div>
</div>

<p>
	<strong>مطور الواجهة الخلفية:</strong> هو المسؤول عن الجزء التقني من الموقع الذي يعمل على الخادم، وتشمل مسؤولياته إنشاء الوظائف الرئيسية للموقع والتعامل مع قواعد بيانات الموقع ومراقبة أداء الخادم  ويحتاج مطور الواجهة الخلفية لامتلاك خبرة باللغات التي تعمل في طرف الخادم مثل جافا Java وروبي Ruby و <a href="https://academy.hsoub.com/programming/php/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r2040/" rel="">PHP </a>وبايثون Python والتعامل مع نظم إدارة <a href="https://academy.hsoub.com/programming/general/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-r1726/" rel="">قواعد البيانات</a> مثل MySQL و MongoDB كما يحتاج إلى الإلمام بأساسيات لغات الواجهة الأمامية والتعاون مع مطوري الواجهة الأمامية.
</p>

<p>
	<strong>مطور الويب الكامل:</strong> أو ما يعرف باسم مطور المكدس الكامل Full-Stack Developer هو المبرمج الذي يمتلك المهارات التي تمكنه من تطوير الواجهة الأمامية والخلفية لموقع الويب فهو مسؤول عن كافة جوانب تطوير الموقع من طرف العميل والخادم.
</p>

<p>
	شرحنا هذين المجالين ومجال التطوير الشامل وعرضنا خارطة طريق لتعلم مجال تطوير الويب بالتفصيل في مقال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع</a>.
</p>

<h3>
	2. تطوير سطح المكتب
</h3>

<p>
	رغم أن مجال تطوير برامج سطح المكتب تراجع في الآونة الأخيرة مقابل تطبيقات الويب والجوال والتطبيقات المستندة إلى السحابة، لا يزال بعض المستخدمين يعتمدون على تطبيقات سطح المكتب لإنجاز المهام الاحترافية لذا فإن تطوير سطح المكتب لا يزال أحد مجالات البرمجة المهمة والمجزية.
</p>

<p>
	فإذا كنت تعتقد أن تطوير سطح المكتب قد عفا عليه الزمن ولا جدوى منه فأنت مخطئ، بل على العكس يعد هذا التخصص من أصعب التخصصات وأعلاها أجرًا، لأن تطبيقات سطح المكتب تعمل بشكل أفضل من ناحية القوة والسرعة والموثوقية من تطبيقات الويب أو البرامج المستندة إلى السحابة لذا لا تزال مفضلة للعديد من الشركات وأصحاب الأعمال.
</p>

<p>
	مطور سطح المكتب هو المبرمج الذي يكتب الشيفرات البرمجية للبرامج والتطبيقات التي لا تحتاج إلى الاتصال بالإنترنت والمخصصة للعمل على أجهزة الحاسوب التي تعمل بأنظمة تشغيل مثل ويندوز Windows ولينكس Linux وماك MacOS، ويركز عادة على تطوير وإنتاج برامج متقدمة واحترافية كبرامج التصميم باستخدام الحاسوب CAD، وبرامج النمذجة ثلاثية الأبعاد، وبرامج تحرير الصور والفيديو والأصوات …إلخ.
</p>

<p>
	ومن أشهر لغات البرمجة المستخدمة في مجال <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" rel="">تطوير تطبيقات سطح المكتب</a>:
</p>

<ul>
	<li>
		C#‎
	</li>
	<li>
		C++‎
	</li>
	<li>
		Python
	</li>
	<li>
		Ruby
	</li>
	<li>
		Objective-C
	</li>
	<li>
		Swift
	</li>
	<li>
		JavaFX
	</li>
	<li>
		Go
	</li>
	<li>
		Scala
	</li>
	<li>
		Python
	</li>
</ul>

<p>
	وإضافة لتعلم التقنيات و<a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> اللازمة لتطوير برامج سطح المكتب يجب أن يمتلك مطور سطح المكتب مهارات مثل التفكير المنطقي والقدرة على حل المشكلات المعقدة بكفاءة ويتمكن من إيجاد حلول مبتكرة تجعل من البرامج أسرع وأسهل في الاستخدام.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير التطبيقات باستخدام لغة Python
		</p>

		<p class="banner-subtitle">
			احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/python-application-development" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير التطبيقات باستخدام لغة Python" src="https://academy.hsoub.com/learn/assets/images/courses/python-application-development.png">
	</div>
</div>

<h3>
	3. تطوير تطبيقات الجوال
</h3>

<p>
	يعد تطوير تطبيقات الجوال والهواتف المحمولة من مجالات البرمجة المهمة والمربحة والمطلوبة بكثرة في سوق العمل، والتخصص في هذا المجال يمكنك من تطوير تطبيقات متنوعة تستخدم على مختلف الأجهزة المحمولة مثل الهواتف الذكية والأجهزة اللوحية والساعات الذكية  وكل شخص منا لديه اليوم هاتف ذكي يعتمد عليه لإنجاز معظم المهام اليومية سواء التسوق عبر الإنترنت أو دفع الفواتير أو تصفح وسائل التواصل الاجتماعي …إلخ.
</p>

<p>
	بناء على ذلك تحرص غالبية الشركات اليوم على تطوير تطبيقات هواتف ذكية لمنصاتها لتحقيق أقصى استفادة وهذا بدوره يساهم في نمو سوق تطبيقات الهواتف ويوفر الكثير من الفرص الوظيفية لمطوري هذه التطبيقات.
</p>

<p>
	كي تصبح مطور تطبيقات جوال عليك أن تتعلم إحدى لغات البرمجة المتخصصة في بناء التطبيقات وتتعلم إدارة قواعد البيانات وتصحيح الأخطاء، ومن الضروري أن تمتلك كذلك مهارات في مجال التصميم لإنشاء تطبيقات جذابة بصريًا وسهلة الاستخدام.
</p>

<p>
	تعتمد لغات البرمجة التي تمكنك تعلمها لإنشاء تطبيقات الهاتف المحمول على نظام الهاتف فإذا كنت ترغب في تطوير تطبيقات للأجهزة التي تعمل بنظام Android يمكنك تعلم لغة جافا Java وكوتلن Kotlin، ولتطوير تطبيقات للأجهزة التي تعمل بنظام iOS يمكنك تعلم سويفت Swift أو Objective-C، كما يمكنك تطوير تطبيقات جوال هجينة تعمل على عدة أنظمة من خلال تعلم لغات تعمل مع تقنيات الويب والجوّال مثل HTML5 و CSS3 وجافا سكريبت.
</p>

<p>
	من السهل اكتساب الخبرة في مجال تطوير التطبيقات بسبب ظهور العديد من تقنيات التطوير سهلة الاستخدام مؤخرًا، كل ما عليك هو تعلم إحداها وبناء معرض أعمال خاص بك يضم تطبيقات مفيدة بأفكار نافعة تلبي احتياجات المستخدمين فهذا يساعدك في الحصول على فرص عمل مميزة بسرعة.
</p>

<p>
	إن أردت المزيد من التفاصيل حول مجال تطوير تطبيقات الجوال، ارجع إلى مقال <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%AC%D9%88%D8%A7%D9%84-r1801/" rel="">برمجة تطبيقات الجوال</a>.
</p>

<h3>
	4. تخصص DevOps
</h3>

<p>
	يهدف مجال DevOps أو ما يعرف بالتطوير والعمليات Development and Operations إلى تنظيم التعاون بين كل من فرق تطوير البرامج وفرق تقنية المعلومات وسد الفجوة بينهما من أجل تطوير برمجيات عالية الجودة.
</p>

<p>
	رغم حداثة هذا المجال إلا أن الاعتماد عليه يتزايد بسرعة، وقد أصبح متخصصو ومهندسو DevOps يلعبون دورًا أساسيًا في المؤسسات لتأثيرهم الكبير على زيادة قدرة المؤسسات على إصدار المنتجات والخدمات بسرعة وكفاءة وصيانتها بشكل أفضل.
</p>

<p>
	والطلب متزايد على محترفي DevOps في سوق العمل، ويتطلب العمل في هذا المجال توفر مجموعة متنوعة من المهارات مثل فهم أساسيات لينكس Linux ومعالجة الملفات وإدارة العمليات وتشغيل خوادم لينكس وإتقان لغات البرمجة مثل بايثون أو جافا Java أو جافا سكربت Javascript أو روبي Ruby …إلخ. إضافة لمهارات قوية في الحوسبة السحابية والتحكم في الإصدارات مثل <a href="https://academy.hsoub.com/programming/workflow/git/%D9%85%D8%A7-%D9%87%D9%88-git%D8%9F-r1592/" rel="">Git</a>، كما يجب أن يتمتع بمهارات شخصية كالتواصل الفعال والتعاون والتنظيم.
</p>

<p>
	للمزيد يمكنك الاطلاع على مجموعة منوعة من المقالات والدروس التي توفرها أكاديمية حسوب حول <a href="https://academy.hsoub.com/devops/" rel="">مفهوم DevOps وأهم أداوته وتقنياته</a>.
</p>

<h3>
	5. تخصص هندسة البنية السحابية
</h3>

<p>
	تسعى معظم الشركات والمنظمات اليوم إلى تغيير الطريقة التقليدية التي تتعامل بها مع مواردها وتتوجه لتحويل كافة خدماتها كالخوادم والتخزين وقواعد البيانات والشبكات والبرمجيات لتعمل عبر الإنترنت أو السحابة مما يوفر لها مرونة وكفاءة أكبر ويخفض تكاليف تشغيل بنيتها التحتية ويساعدها على توسيع نطاق عملها بسهولة عند تغير المتطلبات.
</p>

<p>
	لهذا السبب تعتبر هندسة السحابة Cloud infrastructure engineer أحد مجالات البرمجة الهامة، فمعظم الشركات أصبحت تحتاج إلى تعيين مهندس سحابة أو مطور سحابة أو مسؤول عن الأنظمة السحابية ليكون مسؤولًا عن كافة الواجبات التقنية المرتبطة بالحوسبة السحابية مثل تحديد أفضل حلول البنية السحابية التي تلبي الاحتياجات الاستراتيجية للشركة وإدارة هذه البنية السحابية والعمل على صيانتها وإدارة الخوادم والتخزين السحابي …إلخ.
</p>

<p>
	من الضروري لمهندس السحابة امتلاك مجموعة من المهارات وأهمها معرفة بخوادم لينكس Linux وصيانتها وإدارتها ومهارات في إدارة قواعد البيانات السحابية، إضافة لمعرفة بلغات البرمجة مثل جافا و بايثون وروبي و Golang و PHP …إلخ.
</p>

<h3>
	6. إدارة قواعد البيانات
</h3>

<p>
	تعد إدارة قواعد البيانات Database administrator أحد مجالات البرمجة المرغوبة في العديد من المؤسسات والشركات وهي تتضمن جمع البيانات وتخزينها واستخدامها بطريقة آمنة وفعالة من حيث التكلفة.
</p>

<p>
	فمعظم أصحاب العمل يعتبرون البيانات أحد الأصول الهامة ويحتاجون إلى متخصصين يقومون بإدارة هذه البيانات وتخزينها وتحليلها بنجاح والكشف عن رؤى هامة منها واتخاذ قرارات استراتيجية تصب في صالح هذه الشركات وتساعدهم على تحسين أدائها وزيادة إيراداتها.
</p>

<p>
	من المهارات المهمة للعمل في هذا المجال امتلاك القدرة على التنقل في قاعدة البيانات والعثور على السجلات المطلوبة وإعداد التقارير المناسبة واستخدام أدوات الاستعلام وعرض مجموعات البيانات بعدة تنسيقات بهدف تحليلها من عدة وجهات نظر واستخلاص النتائج منها.
</p>

<h3>
	7. تحليل الأعمال وتحليل البيانات
</h3>

<p>
	برزت أهمية هذا المجال مع ظهور مفهوم البيانات الضخمة الواردة من عدد كبير من المصادر واعتبارها أحد الأصول القيمة للشركات لما لها من أثر كبير في مساعدة المؤسسات على اتخاذ قرارات مهمة وتوسيع نطاق عملها، وزيادة المبيعات وإطلاق منتجات أو خدمات جديدة وزيادة كفاءة عملها.
</p>

<p>
	يعرف هذا المجال بعدة أسماء أخرى مثل <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA/" rel="">علم البيانات</a> أو التنقيب عن البيانات أو نمذجة البيانات أو تحليل البيانات الضخمة، والهدف الأساسي منه هو توفير آلية للعمل مع كل هذه البيانات ومعالجتها وفهمها باستخدام تقنيات عدة كالتعلم الآلي والإحصاء والاحتمالات للحصول على معلومات مفيدة تساهم في تحسين أداء الأعمال داخل المؤسسات.
</p>

<p>
	فمن خلال تحليل الأعمال يمكن للشركة اتخاذ قرارات واستراتيجيات مستقبلية صائبة، مثل هل يجب عليها تطوير خط إنتاج جديد أم لا؟ أو هل هناك تأثير للمناطق الجغرافية أو المواسم على تفضيلات العملاء عند الشراء؟ أو الإجابة على أي سؤال أو مشكلة مستقبلية قد تواجهها الشركة في أي من أقسامها من المبيعات إلى تطوير المنتجات إلى خدمة العملاء …إلخ.
</p>

<p>
	للعمل كمحلل أعمال أو محلل بيانات ستحتاج لمجموعة من المهارات أهمها وجود أساس قوي في الاحتمالات والإحصاء ومعرفة لغات البرمجة الإحصائية مثل R أو بايثون التي تمكنك كتابة برامج لإجراء تحليلات متقدمة على البيانات الضخمة، كما أن إتقان مفاهيم الذكاء الصناعي و خوارزميات التعلم الآلي يمنحك ميزة تنافسية.
</p>

<h3>
	8. الأمن السيبراني
</h3>

<p>
	تهتم المؤسسات والشركات بمجال الأمن السيبراني بشكل خاص لحماية المعلومات الحساسة لعملائها وكسب ثقتهم، فهذا المجال هو المسؤول بشكل رئيسي عن حماية المعلومات الرقمية، ومراقبة <a href="https://academy.hsoub.com/devops/networking/%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D8%A8/" rel="">شبكات الحاسب</a> والتصدي لأي تهديدات أمنية تظهر فيها، ويهتم كذلك بتصميم أنظمة الأمان وتنفيذها وصيانتها وتطوير تطبيقات برمجية آمنة من الثغرات أو تحسين التطبيقات الحالية لتكون أكثر أمانًا.
</p>

<p>
	يتطلب هذا المجال معرفة قوية بالحواسيب والشبكات إضافة للبرمجة وعند التخصص فيه يمكنك أن تعمل في عدة أدوار وظيفية. على سبيل المثال يمكن أن تعمل كأخصائي أمن معلومات وتحمي الأجهزة والأنظمة داخل المؤسسة من الهجمات الإلكترونية أو محلل أمن معلومات لمراقبة الوصول إلى البيانات وتشفيرها وتمنع أي استخدام ضار أو غير مقصود للبيانات وتتأكد من وجود إجراءات حماية قوية وهكذا.
</p>

<p>
	كما يمكّنك التخصص في هذا المجال أن تعمل في مجال الاختراق الأخلاقي Ethical hacking فالشركات والمؤسسات المهتمة بأمنها توظف اليوم مخترقين أو متسللين أخلاقيين لديها كي يحاولوا اختراق أنظمتها وشبكاتها وكافة أصولها الرقمية بهدف العثور على نقاط الضعف فيها وإصلاح كافة ثغراتها الأمنية قبل أن يكتشفها المتسلل الحقيقي ويستغلها ضدهم.
</p>

<p>
	تحدثنا عن هذا المجال وأهميته وفرص العمل فيه بالتفصيل في مقال <a href="https://academy.hsoub.com/devops/security/%D9%85%D8%A7-%D9%87%D9%88-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D8%A7%D9%84%D8%B3%D9%8A%D8%A8%D8%B1%D8%A7%D9%86%D9%8A-%D9%88%D9%85%D8%A7-%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87%D8%9F-r664/" rel="">ما هو الأمن السيبراني وما أهميته؟</a> فارجع إليه للاستزادة.
</p>

<h3>
	9. تطوير الألعاب
</h3>

<p>
	يعتبر تطوير الألعاب مجالًا مرغوبًا بشكل خاص في أوساط المبرمجين اليافعين. وتطوير الألعاب مجال متقدم يحتاج لعدة مهارات لا تقتصر على كتابة كود اللعبة بل يحتاج إلى تصميم وتحريك الشخصيات أو الكائنات الرسومية للعبة وإعداد الأصوات وتحديد منطق اللعب، وتطوير الذكاء الصناعي الخاص بها وتطوير محرك اللعبة واستكشاف الأخطاء وإصلاحها قبل إطلاق اللعبة.
</p>

<p>
	لهذا السبب يحتاج مجال تطوير الألعاب عادة فرقًا من المتخصصين وقد يستغرق تطويرها سنوات عدة ومن الضروري لمطوري الألعاب أن يكونوا على دراية بمحركات الألعاب وتعلم <a href="https://academy.hsoub.com/programming/game-development/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D8%B9%D8%A7%D8%A8/" rel="">لغات برمجة الألعاب</a> مثل C++‎ و C و Java و Lua …إلخ. وإذا كنت تخطط لتطوير ألعاب تعمل ضمن متصفح الويب سيفيدك تعلم HTML5 وجافا سكربت و WebGL …إلخ.
</p>

<p>
	قد يكون من المفيد أيضًا أن يكون لديك معرفة بتطوير قواعد البيانات ومهارات في التصميم ومعرفة بمحركات الألعاب <a href="https://academy.hsoub.com/programming/game-development/%D9%85%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%84%D8%B9%D8%A7%D8%A8-game-engines/" rel="">Game engines</a> مثل Godot أو Unity3D أو Unreal أو غيرها من المحركات التي تسهل وتسرع عملك في تطوير الألعاب بشكل كبير.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="450" id="ips_uid_7786_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="800" data-embed-src="https://www.youtube.com/embed/O5suGXMNMdU"></iframe>
</p>

<h3>
	10. الذكاء الاصطناعي وتعلم الآلة
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1009/" rel="">تعلم الآلة</a> هو أحد <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تطبيقات الذكاء الاصطناعي AI</a> ومن خلاله يمكن للحواسيب اكتساب القدرة على التعلم وتحسين الأداء من خلال التجربة. يركز تعلم الآلة على تطوير برامج وتطبيقات يمكنها الوصول إلى البيانات واستخدامها للتعلم من تلقاء نفسها من خلال خوارزميات مخصصة تحسن أداءها مع زيادة عدد العينات المتاحة للتعلم.
</p>

<p>
	يعد هذا التخصص أحد أحدث مجالات البرمجة رواجًا اليوم وهو يستخدم لحل المشكلات واتخاذ قرارات حاسمة في العديد من القطاعات التي تستخدم كمية ضخمة من البيانات كالطب والاتصالات والصناعة وتداول الأسهم …إلخ. ويُعتمد عليه لحل المهام المعقدة التي تتضمن كمية كبيرة من البيانات والمتغيرات والتي لا تملك طريقة ثابتة أو صيغة محددة لحلها، في هذه الحالة يتم الاعتماد على البيانات الحالية لاتخاذ قرارات مستقبلية وكلما زادت البيانات الموجودة سنتمكن من الحصول على إجابات أفضل وأدق.
</p>

<p>
	على سبيل المثال عندما تسأل خرائط جوجل عن أقصر وجهة للوصول لهدف ما وتقترح لك الطريق الأسرع فهي في الواقع تستخدم التعلم الآلي وتستنتج الطريق الأسرع بناء على البيانات الضخمة للأشخاص الذين استخدموا خدمة الخرائط مسبقًا وعلى البيانات التي تم جمعها عن هذا المسار وعن كل شخص استخدمه للوصول لهذه الوجهة ومتوسط سرعته وبهذا يمكن لخرائط جوجل التنبؤ بحركة المرور المستقبلية واقتراح المسار الأفضل.
</p>

<p>
	كذلك الأمر يمكن استخدام الذكاء الصناعي في اقتراح توصيات للمنتجات لزيادة الإيرادات، على سبيل المثال عندما تتصفح منتجًا ما على أحد المتاجر الإلكترونية دون أن تشتريه ستفاجئ أنك عندما تتصفح الإنترنت أو وسائل التواصل الاجتماعي بظهور إعلان لنفس المنتج. فكيف حدث ذلك؟ الجواب أن جوجل طبق التعلم الآلي وتتبع بيانات سجل البحث الخاص بك وبناء على ذلك قام بالتوصية بالإعلانات المناسبة بناءً على ذلك.
</p>

<p>
	وللتخصص في مجال تعلم الآلة تحتاج لمعرفة عدة تقنيات مثل SQL ومبادئ علم الإحصاء ولغات برمجة مثل لغة بايثون التي توفر الكثير من <a href="https://academy.hsoub.com/programming/python/%D8%A3%D9%87%D9%85-10-%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D9%81%D9%8A-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D8%B5%D8%BA%D9%8A%D8%B1%D8%A9-r654/" rel="">مكتبات </a>معالجة البيانات مثل numpy و pandas ومكتبات تمثيل البيانات مثل Matpotlib و seaborn والعديد من خوارزميات تعلم الآلة، كما يسهّل عليك تعلم MATLAB تطبيق التعلم الآلي من خلال توفير مجموعة من الأدوات والوظائف الخاصة بمعالجة وتحليل البيانات الضخمة.
</p>

<p>
	إن أردت الاستزادة عن هذا المجال والتخصص فيه، يمكنك البدء بكتاب <a href="https://academy.hsoub.com/files/17-%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%88%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9/" rel="">مدخل إلى الذكاء الاصطناعي وتعلم الآلة</a> من أكاديمية حسوب، كما ستفيدك دورة الذكاء الاصطناعي التي توفرها الأكاديمية والتي تشرح لك أساسيات تعلم الآلة والتعلم العميق وتمكنك من تطوير مشاريع عملية لأنظمة التنبؤ، وتحليل النصوص، وتصنيف الصور، ومعالجة البيانات، كما تعلمك طريقة دمج النماذج اللغوية الكبيرة مثل GPT من OpenAI و LLaMA 2 من Meta في تطبيقاتك إلى جانب العديد من المواضيع التي تؤهلك بشكل فعّال للمنافسة في مجال الذكاء الاصطناعي.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة الذكاء الاصطناعي
		</p>

		<p class="banner-subtitle">
			احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة.
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/artificial-intelligence" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<a href="https://academy.hsoub.com/learn/artificial-intelligence" rel=""><img alt="دورة الذكاء الاصطناعي AI" src="https://academy.hsoub.com/learn/assets/images/courses/artificial-intelligence.png"></a>
	</div>
</div>

<h2>
	الخاتمة
</h2>

<p>
	تعرفنا في مقال اليوم على أكثر مجالات البرمجة التي يمكن للمبرمجين والمطورين التخصص بها، بالطبع هناك مجالات عديدة أخرى مثل إنترنت الأشياء IoT والبرمجة التنافسية Competitive Programming وبرمجة الشبكات وبرمجة الأنظمة و<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">تطوير البرمجيات</a> حرة المصدر وأتمتة الأعمال والروبوتيك وغيرها الكثير لكن حاولنا أن نسلط الضوء على بعض من أبرز هذه المجالات.
</p>

<p>
	وبعد الاطلاع على أشهر مجالات البرمجة نرجو أن يكون هذا المقال قد ساعدك في العثور على مجال اهتمامك الأنسب -إن لم تحدده بعد- والبدء بالتعرف عليه أكثر وبشكل عملي ودراسة أفضل التقنيات ولغات البرمجة التي تناسب هذا المجال لتحقيق طموحك المهني، كما أنصحك بمطالعة مقال <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D8%B9%D9%84%D9%89-%D8%AA%D8%AE%D8%B5%D8%B5%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A3%D8%AC%D8%B1%D9%8B%D8%A7-r1939/" rel="">أعلى تخصصات البرمجة أجرًا</a> في حال رغبت في معرفة أكثر المجالات دخلًا ومردودًا من بينها. 
</p>

<p>
	ما هو مجال البرمجة المفضل بالنسبة لك وما هي التقنيات التي تتعلمها في هذا المجال؟ يسرنا أن تشاركنا تجربتك وتساؤلاتك حول هذا الموضوع في التعليقات أسفل المقال.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%84%D8%B1%D8%AD%D9%84%D8%AA%D9%83-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r206/" rel="">كيف تتعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%81%D9%88%D8%A7%D8%A6%D8%AF-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">فوائد البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/python/" rel="">تعلم لغة بايثون</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/php/" rel="">تعلم لغة PHP</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/" rel="">دليلك الشامل إلى برمجة التطبيقات</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">تعلم الذكاء الصناعي</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1889</guid><pubDate>Tue, 14 Feb 2023 15:02:00 +0000</pubDate></item><item><title>&#x623;&#x633;&#x647;&#x644; &#x644;&#x63A;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_01/1579387307_--.png.1cb24025867f0ce5e5644c71478c39f1.png" /></p>
<p>
	تتنوع لغات البرمجة في أهدافها واستخداماتها، وتتباين فيما بينها في درجة السهولة، فمن لغات البرمجة ما هو سهل التعلم ويستخدم صيغًا مفهومة تحاكي اللغة الطبيعية للتعبير عن التعليمات البرمجية المختلفة، ويتبع قواعد مرنة ومتساهلة مع الأخطاء، ومنها ما صعب التعلم ويملك مفردات صعبة وتراكيب لغوية مقعدة.
</p>

<p>
	ونظرًا لوجود المئات من لغات البرمجة المختلفة ومتنوعة الاستخدامات، قد تقع في حيرة من أمرك و تروادك الكثير من التساؤلات مثل:
</p>

<blockquote class="ipsQuote" data-gramm="false" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p data-gramm="false">
		"ما هي أسهل لغة برمجة لأبدأ بتعلمها؟"
	</p>

	<p>
		"كيف أبدأ مسيرتي المهنية في مجال البرمجة؟"
	</p>

	<p>
		"هل البرمجة صعبة التعلم؟"
	</p>
</blockquote>

<p>
	سنحاول في هذا المقال أن نجيبك على كافة هذه التساؤلات، من خلال تسليط الضوء على أسهل لغات برمجة التي يمكنك تعلمها في بداية مشوارك البرمجي، ونوضح أبرز مجالات استخدام كل لغة منها، ونختم المقال بجملة من النصائح التي تساعدك على تعلم البرمجة.
</p>

<h2>
	ما هي البرمجة؟
</h2>

<p>
	قبل البدء في <a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>، من المهم أن تعرف ما معنى البرمجة، ولم يجب عليك تعلمها؟ وما الذي يمكنك القيام به في حال تعلمت إحدى <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a>؟
</p>

<p>
	قد تبدو لك كلمة البرمجة معقدة وصعبة لكنها في الواقع ليست كذلك. فالبرمجة بأبسط تعريف هي عملية التواصل بينك وبين جهاز الحاسوب لتطلب منه حل مشكلة ما أو تنفيذ مهمة معينة، ومن خلال البرمجة يمكنك إرسال الأوامر والتعليمات للحاسوب لينفذها لك.
</p>

<p>
	فأجهزة الحاسوب بارعة وسريعة بتنفيذ التعليمات وما تُلقَّن به وعاجزة عن التصرف من تلقاء نفسها، وتحتاج لمن يرشدها لما يجب عليها القيام به، وهي لا تفهم إلا لغة الآلة الثنائية المكونة من أصفار وواحدات فقط وهي لغة غير مقروءة أو مفهومة للبشر، لذا في حال أردت أن تتواصل مع جهاز حاسوب بلغة الآلة سيكون الأمر صعبًا عليك، ولن تتمكن بالمقابل من التخاطب معه بلغتك الأم ولا باللغة الانجليزية لأنه لن يفهمها بالمقابل، فما الحل؟
</p>

<p>
	الحل هو في إيجاد لغة مشتركة للحوار والتواصل وهو ما تقوم به لغات البرمجة التي تشكل لغة وسيطة للتخاطب وتملك قواعد وأسس في الكتابة يمكنك كمبرمج فهمها وتعلمها بسهولة وبالإمكان ترجمتها إلى لغة الآلة ليفهمها الحاسوب بدوره وينفذها لك.
</p>

<p>
	لا تقتصر البرمجة على الحواسيب بل تشمل الهواتف المحمولة والأجهزة اللوحية وغيرها من الأجهزة الإلكترونية فكافة هذه الأجهزة تحتاج للتخاطب معها من خلال لغة برمجة مخصصة كي تعمل على النحو المنشود وتؤدي المهام المطلوبة.
</p>

<p>
	تشبه عملية تعلم البرمجة عملية تعلم الطبخ إلى حد كبير، فعندما تتعلم طريقة إعداد طبق ما لأول مرة عليك أن تتعرف على كافة المكونات اللازمة وتتبع طريقة الإعداد لكل وصفة وتطبقها واحدة تلو الأخرى لتنجز الطبق المطلوب، ويجب قبل البدء بالطبخ أن تكون على دراية بالمطبخ وأدواته بالطبع! لن تختلف الأمور في البرمجة كثيرًا عن هذا المشهد.
</p>

<p>
	من الأفضل قبل أن تخطو خطواتك الأولى في تعلم البرمجة أن تتعلم <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أساسيات البرمجة</a> وهي مفاهيم تشترك فيها البرمجة وتُطبق في كافة لغات البرمجة ثم تبحث بعد ذلك عن لغة البرمجة المناسبة كي تتعلمها، ويمكنك بدء تعلم البرمجة وتعلم مفاهيم علوم الحاسوب الأساسية على التوازي وإن واجهك أي مفهوم أو مصطلح أثناء رحتلك في تعلم البرمجة، فيمكنك التوقف وتعلمه وإكمال الطريق.
</p>

<p>
	للمزيد من المعلومات حول اختصاص علوم الحاسوب ومجالاته وتطبيقاته وأهم فرص العمل المتوفرة في هذا المجال يمكنك مطالعة مقال <a href="ttps://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">المدخل الشامل لتعلم علوم الحاسوب</a>.
</p>

<p>
	بعدها، ستجد أن هناك العديد من لغات البرمجة التي يمكنك أن تتعلمها لتتخاطب مع الحاسوب، وتتفاوت هذه اللغات في درجة صعوبتها، فمنها ما هو سهل التعلم ومرن في القواعد وقريب بشكل كبير من اللغة الطبيعية، ومنها ما هو صعب ومعقد.
</p>

<p>
	وفي بداية تعلم البرمجة يفضل أن تبدأ بلغة سهلة تناسبك كمبتدئ وتتعلم من خلالها مهارات التفكير البرمجي والمنطقي، ومهارات حل المشكلات ثم تبدأ بتعلم تطوير البرامج. والمقصود بالبرامج هنا من التعليمات التي تهدف لتحقيق مهمة معينة والمكتوبة بلغة برمجة معينة.
</p>

<h2>
	أسهل لغات البرمجة للمبتدئين
</h2>

<p>
	تعتبر لغات البرمجة التالية من أسهل لغات البرمجة للمبتدئين:
</p>

<ul>
	<li>
		بايثون Python
	</li>
	<li>
		جافاسكريبت Javascript
	</li>
	<li>
		روبي Ruby
	</li>
	<li>
		سي C
	</li>
	<li>
		جافا Java
	</li>
	<li>
		جو Go
	</li>
	<li>
		PHP
	</li>
	<li>
		بيرل Perl
	</li>
	<li>
		R
	</li>
	<li>
		ماتلاب Matlab
	</li>
</ul>

<p>
	نناقش في الفقرات التالية سمات كل لغة من هذه اللغات، ونوضح أبرز استخداماتها والأسباب وراء اعتبارها من أسهل لغات البرمجة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="117949" href="https://academy.hsoub.com/uploads/monthly_2023_01/276661965_--.png.da7151a23cc909461f37a38e6c9aa133.png" rel=""><img alt="أسهل لغات البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="117949" data-ratio="62.50" data-unique="th7p4m8bk" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_01/583603822_--.thumb.png.67979e00f8ef539293cd3db4a808a2ad.png"> </a>
</p>

<h3>
	1. لغة بايثون
</h3>

<p>
	تعد <a href="https://academy.hsoub.com/programming/python/%D8%A7%D9%84%D9%85%D8%B1%D8%AC%D8%B9-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r735/" rel="">لغة بايثون</a> واحدة من لغات البرمجة الأكثر شيوعًا على مستوى العالم، وتزداد شعبيتها بين أوساط المبرمجين مع مرور الوقت لكونها لغة سهلة متعددة الأغراض يمكن من خلالها <a href="https://sndian.com/" rel="external">إنشاءالمواقع الإلكترونية</a>
 وتطبيقات الحاسوب والألعاب وتطبيقات الذكاء الصنعي …إلخ.
</p>

<p>
	تعتبر لغة بايثون من أسهل لغات البرمجة التي ينصح المبتدئون بتعلمها لكونها تستخدم صيغة بسيطة تحاكي اللغة الإنجليزية في كتابة التعليمات البرمجية، وهي لا تستخدم الأقواس ما يجعل قراءتها وفهمها أسهل من الشيفرات البرمجية للغات البرمجة الأخرى. فضلًا عن كونها لغة مفتوحة المصدر وتملك مجتمع دعم كبير ونشط وتملك عددًا هائلًا من المكتبات التي تخدم أغراضًا مختلفة وتوفر موردًا غنيًا لأي شخص يرغب بالبرمجة باستخدامها.
</p>

<p>
	على سبيل المثال لكتابة برنامجك الأول في لغة بايثون والذي يطبع عبارة Hello world على الشاشة كل ما عليك هو كتابة سطر برمجي وحيد كالتالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_5887_7" style=""><span class="kwd">print</span><span class="pun">(</span><span class="str">"Hello world"</span><span class="pun">)</span></pre>

<p>
	في حين يكون الكود المكافئ للكود أعلاه في لغة أصعب مثل "C#‎" بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5887_10" style=""><span class="kwd">using</span><span class="pln"> </span><span class="typ">System</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">HelloWorld</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Main</span><span class="pun">(</span><span class="pln">string</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pln"> </span><span class="pun">(</span><span class="str">"Hello World"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لابد أنك لاحظت من هذا المثال البسيط مدى بساطة لغة بايثون وسهولة كتابة التعليمات فيها ما يجعلها من أسهل لغات البرمجة على الإطلاق.
</p>

<p>
	إذا كنت ترغب بتعلم لغة باثيون توفر لك أكاديمية حسوب <a href="https://academy.hsoub.com/learn/python-application-development/" rel="">دورة تطوير التطبيقات باستخدام لغة Python</a> باللغة العربية التي تبدأ معك من أساسيات اللغة وصولًا إلى تطوير تطبيقات ويب احترافية.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="624" id="ips_uid_9380_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة تطوير التطبيقات بلغة بايثون - أكاديمية حسوب" width="1110" data-embed-src="https://www.youtube.com/embed/1niwEWY7CN4"></iframe>
</p>

<p>
	توفر أكاديمية حسوب أيضًا كتابًا لتعلم لغة بايثون وهو كتاب <a href="https://academy.hsoub.com/files/15-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86/" rel="">البرمجة بلغة بايثون</a> كما ستجد في عشرات المقالات والدروس المنوعة حول تعلم بايثون من <a href="https://academy.hsoub.com/programming/python/" rel="">قسم بايثون</a>.
</p>

<h3>
	2. لغة جافاسكربت
</h3>

<p>
	جافاسكربت هي لغة برمجة مخصصة لتطوير الويب تتيح لك تضمين ميزات متقدمة على صفحات الويب، فمن خلالها يمكنك تحويل صفحات الويب الثابتة إلى صفحات تفاعلية نابضة بالحياة، كإضافة الصور المتحركة والنوافذ المنبثقة والتحكم في الرسومات والوسائط المتعددة …إلخ.
</p>

<p>
	تعد جافاسكربت من لغات البرمجة الأكثر شعبية في العالم وهي مطلوبة بشدة في سوق العمل لكونها إحدى التقنيات الأساسية للويب بالاشتراك مع HTML و CSS التي تستخدم في كل مكان على الويب.
</p>

<p>
	تعد لغة جافاسكربت من أسهل لغات البرمجة للتعلم لكونها عالية المستوى يمكنك اختبارها وتشغيلها مباشرة وبكل سهولة في متصفح الويب وتجربة تأثيرها على عناصر صفحات الويب.
</p>

<p>
	لذا ينصح بها لأي مبتدئ يرغب في تطوير مواقع الويب أن يتعلم <a href="https://academy.hsoub.com/store/5-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D8%BA%D8%A9-javascript/" rel="">تطوير التطبيقات باستخدام لغة JavaScript</a> لاسيما أن استخدامها لم يعد يقتصر على <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D8%A3%D9%85%D8%A7%D9%85%D9%8A%D8%A9-frontend-web-development/" rel="">تطوير الواجهات الأمامية Frontend </a>فحسب بل يمكنك من خلال جافاسكربت <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A9-backend-web-development/" rel="">تطوير الواجهات الخلفية Backend</a> أيضًا وبناء تطبيقات رائعة تعمل على الخادم باستخدام أطر عمل مخصصة مثل <a href="https://academy.hsoub.com/programming/javascript/nodejs/" rel="">Node.js</a>.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="624" id="ips_uid_9380_7" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة تطوير التطبيقات باستخدام JavaScript - أكاديمية حسوب" width="1110" data-embed-src="https://www.youtube.com/embed/T6CnMmvF4e0"></iframe>
</p>

<p>
	قبل أن تتعلم لغة جافا سكريبت سيكون من الأفضل أن تتعلم التقنيات البرمجية الأخرى والسهلة التعلم والتي تشكل مع جافاسكربت وحدة متكاملة مثل لغة HTML و CSS.
</p>

<p>
	ننصح أيضًا لتعلم جافاسكربت بكتاب <a href="https://academy.hsoub.com/files/27-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA/" rel="">البرمجة بلغة جافاسكربت</a> واطلع على <a href="https://wiki.hsoub.com/JavaScript" rel="external">توثيق جافاسكربت</a> على موسوعة حسوب.
</p>

<h4>
	لغة HTML
</h4>

<p>
	قبل أن نناقش أسباب اعتبار HTML أسهل لغة ينصح بتعلمها للمبتدئين، دعونا نجيب على التساؤل التالي "هل HTML لغة برمجة؟" الجواب لا! HTML ليست لغة برمجة من الناحية الفنية لكونها لغة غير مخصصة لإعطاء التعليمات للحاسوب أو إجراء العمليات الحسابية والمنطقية، بل تعتبر "لغة توصيف" Markup language مستخدمة في تطوير الويب وهي إحدى اللبنات الأساسية لصفحات الويب.
</p>

<p>
	تقوم HTML بتوصيف البيانات وتغليفها داخل وسوم خاصة تحدد هذه البيانات وتوضح للمتصفح الغرض منها كي يتمكن المتصفح من قراءة هذه البيانات والتمييز بينها مثل تحديد العناوين والفقرات والصور والروابط والجداول …إلخ. وعرضها بناء على هذا الوصف.
</p>

<p>
	وبالرغم من أن HTML لا تعتبر لغة برمجة، إلا أن تعلمها وإنشاء صفحات مواقع الويب باستخدامها يعتبر خطوة أولى سهلة يمكنك القيام بها لبدء <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تعلم تطوير الويب</a> وتكمن سهولتها في اعتمادها بنية بسيطة تعتمد على الوسوم "tags"، التي تحدد من خلالها كيفية عرض مختلف العناصر على صفحة الويب بطريقة مفهومة لا تتطلب منك أي خبرة فنية مسبقة.
</p>

<p>
	على سبيل المثال كود HTML التالي يصف للمتصفح طريقة عرض عنوان بمستوى ثانٍ "Heading 2" وقائمة مرتبة "Ordered list":
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3133_7" style=""><span class="tag">&lt;H2&gt;</span><span class="pln">أسهل لغات البرمجة</span><span class="tag">&lt;/H2&gt;</span><span class="pln">
</span><span class="tag">&lt;OL&gt;</span><span class="pln">
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">HTML
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">CSS
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">Python
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">Ruby
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">Java
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">Javascript
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">PHP
    </span><span class="tag">&lt;LI&gt;</span><span class="pln">C++
</span><span class="tag">&lt;/OL&gt;</span></pre>

<p>
	كما تلاحظ الكود بديهي وسهل الفهم وسيعرضه المتصفح بالشكل التالي:
</p>

<p style="text-align: center;">
	<img alt="لغة HTML سهلة التعلم" class="ipsImage ipsImage_thumbnailed" data-fileid="117950" data-ratio="48.15" data-unique="rkcejg246" style="width: 540px; height: auto;" width="540" src="https://academy.hsoub.com/uploads/monthly_2023_01/1640705393_-HTML--.PNG.704e9f3c9e5902743c13763185b3929a.PNG"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2023_01/1462077187_-HTML--.PNG.8798210e9b0c195f31672ee6e74a48d9.PNG" rel=""> </a>
</p>

<p>
	للمزيد، ارجع إلى مقال <a href="https://academy.hsoub.com/programming/html/%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-html-r1702/" rel="">تعلم لغة HTML</a>.
</p>

<h4>
	لغة CSS
</h4>

<p>
	إذا كانت لغة HTML تسمح بتوصيف بنية موقع الويب الخاص بك للمتصفح، فإن لغة CSS هي التي تجعل هذه البنية أنيقة ومنسقة وجميلة المظهر.
</p>

<p>
	CSS هي اختصار لـ Cascade Styling Sheets وهي كذلك لا تعد لغة برمجة بالمعنى الدقيق، بل تعد لغة وصفية تستخدم لتنسيق عناصر لغة HTML. حيث تضيف لغة CSS تنسيقات للعناصر التي توصفها لغة HTML مثل تحديد أنواع الخطوط المستخدمة في فقرة ما أو ألوان النصوص في فقرات الموقع أو محاذاة العناصر وتخطيطها مما يجعل الموقع أكثر جمالية.
</p>

<p>
	على سبيل المثال، لتغيير لون ونوع الخط المستخدم في عناصر HTML السابقة، وتغيير الهوامش الداخلية والخارجية للقائمة سنكتب بعض قواعد CSS لتنسيقها كالتالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3133_9" style=""><span class="pln">H2 </span><span class="pun">{</span><span class="pln"> 
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">font-family</span><span class="pun">:</span><span class="pln"> </span><span class="str">'tahoma'</span><span class="pun">,</span><span class="pln"> serif</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
OL </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">list-style-type</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">margin</span><span class="pun">:</span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> gray</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ستظهر القائمة أعلاه بعد التنسيق بالشكل التالي:
</p>

<p style="text-align: center;">
	<img alt="لغة CSS" class="ipsImage ipsImage_thumbnailed" data-fileid="117951" data-ratio="39.81" data-unique="1ttk8ews3" style="width: 540px; height: auto;" width="654" src="https://academy.hsoub.com/uploads/monthly_2023_01/1384621666_----CSS.PNG.754ea93f4becca4581a440ba3f4aad33.PNG"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2023_01/988011620_----CSS.PNG.bde54218e80862fa813194d045608351.PNG" rel=""> </a>
</p>

<p>
	كما ترى من الكود أعلاه فاللغة بسيطة للغاية، وصياغة تعليماتها وقواعدها الأساسية سهلة الفهم لاسيما عند إجراء تنسيقات بسيطة وأساسية لعناصر صفحة الويب، لكن بالطبع إذا أردت التعمق في تصميم الويب وتعلم أكثر من مجرد التنسيقات البسيطة <a href="https://academy.hsoub.com/store/1-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85/" rel="">وتطوير واجهات مستخدم احترافية وجذابة بصريًا</a> فستحتاج للغوص في خصائص تفصيلية أكثر صعوبة ودقة ودمجها مع لغة HTML وأيضًا لغة جافاسكربت.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير واجهات المستخدم
		</p>

		<p class="banner-subtitle">
			ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير واجهات المستخدم" src="https://academy.hsoub.com/learn/assets/images/courses/front-end-web-development.png">
	</div>
</div>

<h3>
	3. روبي Ruby
</h3>

<p>
	تعد لغة روبي لغة برمجة عالية المستوى وهي مفتوحة المصدر وتدعم نمط البرمجة كائنية التوجه <abbr title="Object-Oriented Programming | البرمجة كائنية التوجه"><abbr title="Object-Oriented Programming | البرمجة كائنية التوجه">OOP</abbr></abbr> ومرنة للغاية.
</p>

<p>
	ولكونها لغة برمجة متعددة الأغراض يمكنك من خلال تعلمها إنشاء تطبيقات منوعة مثل تطبيقات سطح المكتب ومواقع الويب، كما يمكنك استخدامها لاستخلاص بيانات صفحات الويب Web scraping والزحف إليها وهو أمر مهم لتحسين محركات البحث وفهرسة المواقع.
</p>

<p>
	تمتلك لغة روبي بنية بسيطة تتطلب كتابة القليل من الشيفرات البرمجية لإنجاز المهام المطلوبة ما يجعلها واحدة من أسهل لغات البرمجة في التعلم والتي ينصح بها للمبتدئين. فلكتابة برنامجك الأول الذي يطبع عبارة Hello World على الشاشة في هذه اللغة كل ما عليك هو كتابة سطر برمجي واحد كما يلي:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3133_13" style=""><span class="pln">puts </span><span class="str">"Hello World"</span></pre>

<p>
	تجدر الإشارة هنا لأن لغة روبي رغم بساطتها وسهولة كتابة تعليماتها، إلا أنها قد تصبح أكثر تعقيدًا عندما تحاول تنفيذ أوامر احترافية ومتقدمة أكثر، بكلام آخر من السهل تعلم روبي لكن من الصعب احترافها.
</p>

<p>
	إذا لم تكن لديك أي خلفية برمجية وكنت مهتمًا بتعمل لغة روبي من الصفر وصولًا للاحتراف فيمكنك اتباع <a href="https://academy.hsoub.com/store/4-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D8%BA%D8%A9-ruby/" rel="">دورة تطوير تطبيقات الويب باستخدام لغة Ruby</a> التي توفرها أكاديمية حسوب وبناء تطبيقات متنوعة كالألعاب وتطبيقات إدارة المحتوى والشبكات الاجتماعية. كما ستتعلم <a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel="">إطار عمل</a> Ruby on Rails المكتوب بلغة روبي والذي يساعدك على بناء تطبيقات ويب فعالة واحترافية.
</p>

<h3>
	4. سي C
</h3>

<p>
	تعد لغة C واحدة من أقدم لغات البرمجة وهي لغة برمجة إجرائية متعددة الأغراض تم تطويرها عام 1972 وتتمتع إلى اليوم بشعبية كبيرة.
</p>

<p>
	تعتبر لغة C من أسهل لغات البرمجة تعلمًا لكونها تستخدم فقط 32 كلمة وأسلوب بناء الجمل فيها بسيط ومفهوم، كما توفر C مجموعة غنية من المكتبات التي تساعد المبرمج على اختصار كتابة الكثير من الأكواد وتشغيل التعليمات البرمجية بسهولة، ولكونها لغة عريقة ومعروفة على نطاق واسع فإن أي مشكلة تواجهها ستجد حلها بسهولة على شبكة الإنترنت.
</p>

<p>
	لهذا السبب يتعلمها معظم المبرمجين قبل الانتقال إلى لغة أكثر تقدمًا. فإذا تعلمت لغة C سيكون السهل عليك تعلم جميع لغات البرمجة الأخرى مهما بلغت درجة صعوبتها بسرعة أكبر، وستتمكن من تطوير  و<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" rel="">برمجة تطبيقات سطح المكتب</a> والألعاب وبرامج أنظمة التشغيل واللوحات الإلكترونية الصغيرة مثل <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D9%85%D8%A7-%D9%87%D9%8A-%D9%84%D9%88%D8%AD%D8%A9-%D8%A3%D8%B1%D8%AF%D9%88%D9%8A%D9%86%D9%88-arduino%D8%9F-r1800/" rel="">أردوينو</a> و<a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%AC%D9%87%D8%A7%D8%B2-%D8%B1%D8%A7%D8%B3%D8%A8%D9%8A%D8%B1%D9%8A-%D8%A8%D8%A7%D9%8A-raspberry-pi-r1356/" rel="">راسبيري باي</a> وغيرها من البرامج المنوعة.
</p>

<p>
	لكتابة برنامج بلغة "C" يطبع عبارة Hello World على الشاشة سيكون الكود كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3133_15" style=""><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="typ">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    printf</span><span class="pun">(</span><span class="str">"Hello world"</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	قد تتساءل "ماذا عن تعلم لغة C++‎؟" في الواقع بالرغم من كون C++‎ واحدة من أكثر لغات البرمجة شيوعًا وتتمتع بأداء عالي وميزات قوية وتوسع لغة C وتضيف لها <a href="https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%83%D8%A7%D8%A6%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%88%D8%AC%D9%87-r1375/" rel="">مفاهيم البرمجة كائنية التوجه <abbr title="Object-Oriented Programming | البرمجة كائنية التوجه"><abbr title="Object-Oriented Programming | البرمجة كائنية التوجه">OOP</abbr></abbr></a>، وتستخدم من قبل كبرى شركات التكنولوجيا العملاقة إلا أنها لغة صعبة وبناء الجمل فيها معقد لذا لا ينصح للمبتدئين البدء بها لتعلم البرمجة بل تبدأ الخطوات أولًا بتعلم لغة C ثم تنتقل إلى لغة C++‎.
</p>

<h3>
	5. جافا Java
</h3>

<p>
	تعد لغة جافا واحدة من لغات البرمجة الأشهر عالميًا، وهي لغة عالية المستوى ومتعددة الاستخدامات، وتتميز بكونها واضحة ومنظمة بشكل جيد وهي تستند إلى لغة سي في أسلوب كتابة التعليمات البرمجية "C-like".
</p>

<p>
	تعتبر جافا خيارًا جيدًا للبدء بتعلم البرمجة فهي تمتلك العديد من الميزات القوية وتملك عددًا كبير من المكتبات مفتوحة المصدر وتستخدم على نطاق واسع، وبتعلمها ستتمكن إنجاز مهام متنوعة مثل برمجة مواقع الويب وتطبيقات الجوال والأنظمة المصرفية وأنظمة إدارة علاقات العملاء "CRM" وتطبيقات البيانات الضخمة.
</p>

<p>
	سيكون برنامجك الأول بلغة جافا لطباعة عبارة الترحيب Hello World على الشاشة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3133_18" style=""><span class="kwd">class</span><span class="pln"> </span><span class="typ">MyClass</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> args</span><span class="pun">[])</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">System</span><span class="pun">.</span><span class="pln">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Hello World"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ما يجعل لغة جافا سهلة التعلم هو كونها تشبه لغة C وهي لغة مستقرة تعتمد البرمجة كائنية التوجه التي تستخدم الأصناف والكائنات بشكل أساسي لتنفيذ المهام، كما أنها لغة واسعة الانتشار وتوفر الكثير من الموارد للمتعلمين الجدد، ففي حال قررت تعلم هذه اللغة ستجد مجتمع دعم كبير من المطورين عبر الإنترنت وستحظى بالكثير من موارد التعلم المجانية.
</p>

<h4>
	لغة كوتلن Kotlin
</h4>

<p>
	إذا كنت لا تفضل تعلم لغة جافا وتجد تعليماتها طويلة وعصية على الفهم، فيمكنك بدلًا من ذلك تعلم لغة البرمجة كوتلن Kotlin، فلغة كوتلن هي من أسهل لغات البرمجة الحديثة نسبيًا فقد ظهرت عام 2011 من قبل شركة JetBrains وهي ذات الشركة التي طورت بيئة التطوير المتكاملة IntelliJ IDEA لتطوير جافا.
</p>

<p>
	لاحظ هنا أن برنامج طباعة Hello World على الشاشة بلغة كوتلن يكتب بشكل أكثر اختصارًا من مكافئة في جافا:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3133_20" style=""><span class="pln">fun main</span><span class="pun">(</span><span class="pln">args</span><span class="pun">:</span><span class="typ">Array</span><span class="pun">){</span><span class="pln">
    println</span><span class="pun">(</span><span class="str">"Hello World"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	من أبرز الفروقات بين لغة جافا ولغة كوتلن هو أن الشيفرات البرمجية في كوتلن أكثر إيجازًا وتعبيرًا من نظيرتها في جافا، كما أن جافا هي في الأساس لغة كائنية التوجه بينما تدعم كوتلن مفهوم البرمجة الوظيفية وهي تعتبر اليوم منافسًا حديثًا لجافا لاسيما في تطوير تطبيقات أندرويد.
</p>

<p>
	ولكونها حديثة فهي لا تملك نفس المستوى من الدعم الذي تتلقاه جافا وقد لا تجد الكثير من مصادر التعلم العربية لها، ورغم ذلك تكتسب كوتلن شهرة وشعبية بالتدريج بين المبرمجين العرب في الآونة الأخيرة ولها مستقبل واعد ويمكنك البدء بتعلمها وتطوير مشاريعك البرمجية بها لاسيما إذا كنت تنوي التخصص في مجال تطوير تطبيقات الهاتف الجوال.
</p>

<p>
	يمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/kotlin/" rel="">الدروس والمقالات حول لغة كوتلن</a> التي توفرها أكاديمية حسوب وتقرر إن كانت لغة مناسبة لأهدافك في التعلم وعلى <a href="https://wiki.hsoub.com/Kotlin" rel="external">توثيق لغة كوتلن</a> في موسوعة حسوب.
</p>

<h3>
	6. لغة GO
</h3>

<p>
	لغة GO أو Golang هي لغة برمجة حديثة نسبيًا طورتها جوجل عام 2007 من أجل تطوير البرامج بسهولة وسرعة، وهي تستخدم بشكل أساسي لتطوير تطبيقات الويب وواجهات برمجة التطبيقات.
</p>

<p>
	اكتسبت اللغة شعبية كبيرة بسرعة في أوساط المبرمجين لكونها بسيطة وسهلة القراءة وتملك قواعد سهلة وميزات بسيطة وبحسب المطورين تعتبر لغة GO هي لغة C للقرن الحادي والعشرين، وهي منتشرة اليوم مدعومة على نطاق واسع، وتستخدمها شركات كبيرة ومعروفة مثل جوجل ودروب بوكس Dropbox وأوبر بفضل أدائها السريع والاحترافي.
</p>

<p>
	ما يجعل لغة جو واحدة من أسهل لغات البرمجة هو أن عدد الكلمات المفتاحية في اللغة ضئيل مقارنة بباقي اللغات، كما أنها لا تحتوي على حلقة while ولا تدعم البرمجة الكائنية التوجه بالطريقة المعهودة في باقي لغات البرمجة، والهدف من هذه المحدودية جعلها لغة بسيطة ومباشرة وسريعة الإنتاجية. ورغم بساطتها فهي قادرة على تلبية احتياجات المبرمجين كما أنها سريعة جدًا في التشغيل والتنفيذ.
</p>

<p>
	يمكنك كتابة برنامجك الأول لطباعة عبارة Hello World بلغة GO بعبارات بسيطة ومفهومة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3133_23" style=""><span class="pln">package main
</span><span class="kwd">import</span><span class="pln"> </span><span class="str">"fmt"</span><span class="pln">

func main</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    fmt</span><span class="pun">.</span><span class="typ">Printf</span><span class="pun">(</span><span class="str">"Hello World!"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	من السهل تعلم لغة جو إذا كنت معتادًا بالفعل على لغات مثل Java و C#‎‎ ،بالرغم من أن بناء الجمل سيختلف قليلًا في بعض المواضع عن لغات البرمجة المعروفة لكنك ستألف هذه الاختلافات وتعتادها بسرعة.
</p>

<p>
	إذا كنت مهتمًا بتعلم لغة جو، يمكنك مطالعة العديد من <a href="https://academy.hsoub.com/programming/go/" rel="">الدروس المفيدة حول لغة GO.</a> ومنها سلسلة مقالات <a href="https://academy.hsoub.com/tags/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9%20%D8%A8%D9%84%D8%BA%D8%A9%20go/" rel="">البرمجة بلغة Go</a>
</p>

<h3>
	7. لغة PHP
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/php/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r2040/" rel="">لغة PHP </a>هي لغة برمجة مفتوحة المصدر ظهرت عام 1990 وتستخدم بشكل أساسي في تطوير الويب فمعظم مواقع وتطبيقات الإنترنت اليوم تعتمد في تطوير واجهاتها الخلفية على لغة PHP.
</p>

<p>
	تعتبر PHP لغة سهلة التعلم للمطورين المبتدئين فهي بسيطة ومرنة في الاتصال مع قاعدة البيانات وسيكون تعلمها بديهيًا إذا كانت لديك خلفية سابقة في لغات البرمجة. ولكونها تحظى بشعبية كبيرة بين مطوري الويب فهي تمتلك العديد من مجتمعات الدعم عبر الإنترنت وتوفر الكثير من موارد التعلم المجانية مما يساعدك على العثور على إجابات على كافة الأسئلة التي تواجهك في رحلة التعلم.
</p>

<p>
	تجدر الإشارة إلى أن لغة PHP قد تكون غير مناسبة لتطبيقات الويب الكبيرة، كما أن شعبيتها قد انخفضت قليلًا في السنوات الأخيرة، لكنها لا زالت تستحق التعلم، فهي تتطور باستمرار وتضاف إليها ميزات جديدة مثل البرمجة كائنية التوجه، وتدعم أطر عمل رائعة مثل Laravel و Symfony وتستخدم في بناء نظم إدارة المحتوى الأكثر شهرة عالميًا مثل ووردبريس WordPress ودروبال Drupal والتي يوفر لك تعلمها فرص عمل كبيرة في مجال تطوير الويب.
</p>

<p>
	توفر أكاديمية حسوب <a href="https://academy.hsoub.com/store/2-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D8%BA%D8%A9-php/" rel="">دورة تطوير تطبيقات الويب باستخدام لغة PHP</a> التي تمكنك من تعلم تطوير مواقع ويب احترافية بتقنيات وأطر عمل مختلفة كما تتضمن العديد من المقالات الاحترافية المفيدة حول <a href="https://academy.hsoub.com/programming/php/" rel="">تعلم لغة PHP</a>.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="624" id="ips_uid_9380_8" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة تطوير تطبيقات الويب باستخدام لغة PHP - أكاديمية حسوب" width="850" data-embed-src="https://www.youtube.com/embed/o3ilJek788w"></iframe>
</p>

<h3>
	8.لغة بيرل Perl
</h3>

<p>
	لغة البرمجة بيرل هي لغة برمجة عالية المستوى ومفتوحة المصدر مشتقة من لغة البرمجة C، طُوِّرت اللغة بداية لمعالجة الملفات والنصوص، لكنها أصبحت تستخدم اليوم كلغة عامة الأغراض وتصلح لإنجاز مجموعة واسعة من المهام.
</p>

<p>
	تعتبر لغة بيرل من أسهل لغات البرمجة للتعلم لكونها مرنة وقابلة للتوسع ويمكن استخدامها في تطوير أي نوع من التطبيقات البرمجية. وتعتمد بيرل شعارًا خاصَا بها وهو "There's More Than One Way To Do It" والذي يعني أن لدى المبرمج أكثر من طريقة للقيام بالأمر.
</p>

<p>
	سيكون برنامجك الأول بلغة "بيرل" لطباعة Hello World على الشاشة بسيطًا جدًا كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3133_25" style=""><span class="kwd">print</span><span class="pln"> </span><span class="str">"Hello World!"</span><span class="pun">;</span></pre>

<p>
	بتعلم لغة بيرل ستتمكن من تطوير أي برامج ترغب بها كتطبيقات إدارة النظم و<a href="https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/" rel="">قواعد البيانات</a> وتطبيقات الواجهات الرسومية والشبكات وتطبيقات الويب …إلخ.
</p>

<h3>
	9. لغة R
</h3>

<p>
	طورت لغة R عام 1993 وهي لغة مخصصة للدارسين والباحثين في مجال تحليل البيانات والإحصاء وتدعم <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A2%D9%84%D8%A9-r1009/" rel="">خوارزميات تعلم الآلة</a> مثل الانحدار والتصنيف وأشجار القرار …إلخ.
</p>

<p>
	تكمن قوة هذه اللغة في كونها مفتوحة المصدر ومتوافقة مع جميع أنظمة التشغيل وتوفر الكثير من المكتبات والحزم المتعلقة بالإحصاء وتساعد على اختصار الكثير من التعليمات البرمجية، وهي لغة تتطور وتحدث باستمرار وتملك مجتمع دعم قوي.
</p>

<p>
	لذلك ينصح بتعلم هذه اللغة للمبرمجين الراغبين بتطوير الأدوات الرياضية والإحصائية أو تطيقات الذكاء الصناعي أو تطبيقات تحليل البيانات على وجه الخصوص، وليست الخيار الأسهل للبدء بتعلم البرمجة إذا كانت لك أهداف أخرى للتعلم.
</p>

<p>
	على سبيل المثال لطباعة عبارة Hello World بلغة "R" كل ما عليك هو كتابة السطر البرمجي التالي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3133_28" style=""><span class="pln"> print</span><span class="pun">(</span><span class="str">"Hello World!"</span><span class="pun">)</span></pre>

<p>
	لكن سهولة وقوة اللغة لا تكمن هنا فحسب، بل تبرز عند الحاجة لتنفيذ العمليات الرياضية، على سبيل المثال لاحظ سهولة كتابة كود برمجي بلغة "R" يقوم بفرز عناصر متجه تصاعديًا وتنازليًا ويجد أكبر وأصغر عنصر في هذا المتجه:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3133_32" style=""><span class="pln">x</span><span class="pun">&lt;-</span><span class="pln"> c</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="lit">7</span><span class="pun">,</span><span class="lit">10</span><span class="pun">,</span><span class="lit">8</span><span class="pun">,</span><span class="lit">30</span><span class="pun">,</span><span class="lit">6</span><span class="pun">,</span><span class="lit">5</span><span class="pun">,</span><span class="lit">2</span><span class="pun">,</span><span class="lit">4</span><span class="pun">)</span><span class="pln">
sort</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln">
sort</span><span class="pun">(</span><span class="pln">x</span><span class="pun">,</span><span class="pln">decreasing</span><span class="pun">=</span><span class="pln">TRUE</span><span class="pun">)</span><span class="pln">
max</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln">
min</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span></pre>

<p>
	يمكنك تعلم المزيد عن هذه اللغة من خلال <a href="https://academy.hsoub.com/programming/r-language/" rel="">سلسلة مقالات ودورس أكاديمية حسوب التي تشرح البرمجة باحترافية باستخدام لغة R</a>.
</p>

<h3>
	10. لغة Matlab
</h3>

<p>
	تستخدم لغة ماتلاب بشكل أساسي في التطبيقات الهندسية والعلمية مثل تطبيقات تحليل البيانات ومعالجة الإشارات والصور وأنظمة التحكم والاتصالات اللاسلكية والروبوتات.
</p>

<p>
	وهي لغة برمجة مخصصة للاستخدام من قبل الباحثين والدارسين لحل المشكلات الهندسية والعلمية بأسهل طريقة، ويعتمدها ملايين طلاب الدراسات في الكليات والجامعات وكبرى المؤسسات مثل آبل وجوجل و تسلا لكونها تساهم في تسريع وتيرة أعمالهم.
</p>

<p>
	توفر ماتلاب ميزات رائعة مثل التوثيق الجيد وامتلاك عدد كبير من المكتبات الخارجية وإمكانية تطوير الأكواد الحسابية وتنفيذ واختبار الخوارزميات الخاصة بك بسهولة، كما أنها تملك قاعدة بيانات كبيرة من الخوارزميات المضمنة التي تسهل معالجة الصور وإنشاء مقاطع فيديو للمحاكاة إضافة لتسهيل مهام تحليل وتمثيل البيانات وغيرها من الميزات التي تجعل منها لغة البرمجة الأولى وربما الوحيدة في مجال الدراسات والأبحاث.
</p>

<h2>
	تعلم أسهل لغة برمجة مقابل لغة البرمجة التي أريد تعملها
</h2>

<p>
	قد تقرر تعلم واحدة من أسهل لغات البرمجة التي ذكرناها أعلاه ولكنك تكتشف بعد فترة وجيزة أنها لا تلبي متطلباتك! لذا قبل أن تحدد أسهل لغة برمجة كي تتعلمها من الضروري أن تحدد سبب رغبتك في تعلم البرمجة، وما الذي تريد أن تحققه من تعلمها، وما هي الأهداف التي تريد الوصول لها. فتحديد أهدافك يساعدك على تحديد مسار التعلم الصحيح واختيار اللغة المناسبة التي تمكنك من تحقيق هذه الأهداف.
</p>

<p>
	فإذا كنت ترغب على سبيل المثال في تطوير تطبيقات للهاتف الجوال، فعليك أن تتعلم لغة البرمجة المناسبة لهذا الغرض مثل جافا أو دارت، كما يتوجب عليك كذلك أن تمتلك المعرفة الكافية عن نظامي التشغيل iOS و Android.
</p>

<p>
	أما في حال كنت تريد أن تصبح مطور مواقع ويب، فعليك أن تتعلم أولًا لغة HTML ولغة CSS وإن كانت هذه التقنيات ليست لغات برمجة بالمعنى الدقيق كما سنشرح بعد قليل، إلا أن تعلمها يعتبر أحد المتطلبات الأساسية لتعلم تطوير المواقع ثم تتعلم لغات برمجة المواقع المناسبة مثل جافاسكربت أو PHP.
</p>

<p>
	وتذكر أن صعود السلم يكون درجة درجة! لذا بعد أن تقرر اللغة التي تريد تعلمها احرص على إتقان أساسيات البرمجة بهذه اللغة، وابدأ بكتابة برامج وتطبيقات بسيطة، ثم انتقل بالتدريج إلى مواضيع أكثر تعقيدًا ولا تستعجل تحقيق نتائج مبهرة وإنجاز تطبيقات احترافية من بداية تعلمك.
</p>

<p>
	وبكل تأكيد لن تتعلم إن لم تطبق! فمهما قرأت من دروس واستمتعت لمقاطع تعليمية حول البرمجة سيكون هذا جيدًا بلا شك لكن لمرحلة معينة فلن تتقن ما تعلمته إلا إذا وضعت كل هذه المعلومات في حيز التنفيذ وتعلمت كيف تصحح الأخطاء البرمجية.
</p>

<p>
	وللمزيد يمكنك مطالعة مقال <a href="ttps://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%84%D8%B1%D8%AD%D9%84%D8%AA%D9%83-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r206/" rel="">كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة</a>.
</p>

<h2>
	في الختام
</h2>

<p>
	تذكر أن تعلم البرمجة قد لا يكون أمرًا سهلًا في البداية. كما أن أول لغة برمجة تتعلمها ستكون بالنسبة لك أصعب لغة حتى لو كانت من أسهل لغات البرمجة في العالم، لذا يتطلب منك تعلمها التحلي بالصبر والتدرب على طريقة التفكير كمبرمج واكتساب مهارات حل المشكلات، بعدها يكون أمر الانتقال إلى أي لغة برمجة وتعلمها أكثر سهولة.
</p>

<p>
	لذا من الأفضل عندما تبدأ تعلم أي لغة برمجة أن تختار أسهل لغة برمجة تلبي أهدافك من التعلم، وتمتلك مجتمع دعم كبير وموارد تعلم جيدة. وتذكر أنك لست مضطرًا للبقاء أسيرًا لأي لغة برمجة، ويمكنك التبديل إلى أي لغة أخرى في أي وقت.
</p>

<p>
	 
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">مجالات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D8%B9%D9%84%D9%89-%D8%AA%D8%AE%D8%B5%D8%B5%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A3%D8%AC%D8%B1%D8%A7-r1939/" rel="">تعرف على أعلى تخصصات البرمجة أجرا</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D8%A8%D8%B3%D8%A7%D8%B7%D8%A9-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r1870/" rel="">قواعد البرمجة ببساطة للمبتدئين</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/game-development/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D8%B9%D8%A7%D8%A8/" rel="">تعرف على أشهر لغات برمجة الألعاب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1888</guid><pubDate>Wed, 08 Feb 2023 15:09:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x645;&#x648;&#x62C;&#x632; &#x625;&#x644;&#x649; &#x62A;&#x635;&#x645;&#x64A;&#x645; &#x645;&#x648;&#x642;&#x639; &#x625;&#x644;&#x643;&#x62A;&#x631;&#x648;&#x646;&#x64A;</title><link>https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D9%88%D8%AC%D8%B2-%D8%A5%D9%84%D9%89-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%85%D9%88%D9%82%D8%B9-%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r1883/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_01/1121111.png.1875855563d07a5d6b8b935671869ad3.png" /></p>
<p>
	سنتحدث عن تصميم موقع إلكتروني بشكل عام في هذا المقال، ولكن يجب أن نوضح أن مجال بناء المواقع الإلكترونية يتفرع إلى فرعين أساسيين هما تصميم المواقع وتطويرها، فتصميم المواقع يختص بترتيب العناصر المرئية واختيارها وتخطيط سلوك المستخدم وتجربته من حيث طريقة تفاعله مع الموقع وكيفية استقباله لرسالته التي أنشئ من أجلها، أما تطوير المواقع فيختص بتحويل تلك التصاميم المرئية إلى أكواد وشيفرات برمجية يخرج منها منتجات جاهزة للإطلاق.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="117616" href="https://academy.hsoub.com/uploads/monthly_2023_01/website-builder-workplace-interior-3d-rendering.jpg.5c0db267e1fa735aa7f4ecafefda8372.jpg" rel=""><img alt="تصميم موقع" class="ipsImage ipsImage_thumbnailed" data-fileid="117616" data-ratio="56.75" data-unique="f01tpegwj" style="width: 800px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_01/website-builder-workplace-interior-3d-rendering.thumb.jpg.7f5fdadeb43b2ca8ec01ce0470742d93.jpg"></a>
</p>

<p>
	ورغم تشعبات هذا المجال التي تتزايد كل حين إلا أن أغلب حديث العملاء عند الرغبة في تصميم مواقع لهم سيدور حول التصميم المرئي للعناصر والنماذج وترتيبها على الشاشة، وكيفية ظهور الموقع على الشاشات المختلفة سواء كانت حواسيب أو هواتف أو غيرها، وطريقة تفاعل المستخدم مع عناصر الموقع.
</p>

<h2 id="خطوات-تصميم-المواقع-الإلكترونية-وبنائها">
	خطوات تصميم موقع إلكتروني وبنائه
</h2>

<p>
	نلاحظ أننا ذكرنا نوعين من أنواع تصميم المواقع في الفقرة السابقة، وهما التصميم المرئي وتصميم تجربة الاستخدام، وهما يشبهان الهندسة المعمارية للمباني حيث يرى المستخدم آثارهما مباشرة عند تفاعله مع الموقع من حيث تنسيق الواجهة وترتيب العناصر وتناسق الألوان والتفاعلات الموجودة فيها.
</p>

<p>
	كذلك فإن هذين النوعين من التصميم هما أول مرحلتين من مراحل تصميم مواقع الإنترنت أو التطبيقات الموجهة للهواتف أو غيرها من الأجهزة، ثم يأتي بعدهما تطوير الواجهات سواء الأمامية أو الخلفية.
</p>

<h3 id="1-تصميم-تجربة-الاستخدام">
	1. تصميم تجربة الاستخدام
</h3>

<p>
	يختص <a href="https://academy.hsoub.com/design/user-experience/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%AC%D8%B1%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-user-experience-r149/" rel="">مصمم تجربة الاستخدام User Experience (UX)</a> بدراسة الفئات المستهدفة من الموقع، وحالاتهم الصحية والنفسية وأعمارهم وجنسياتهم، وذلك من خلال بحوث عميقة لطبيعة نشاط العميل والموقع والأهداف التي يجب أن يحققها الموقع أو التطبيق المراد إنشاؤه، من أجل <a href="https://academy.hsoub.com/design/user-experience/%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%AB%D9%82%D9%84-%D8%A7%D9%84%D9%85%D8%B1%D8%A6%D9%8A-visual-weight-%D9%88%D8%A7%D9%84%D8%A3%D9%84%D9%88%D8%A7%D9%86-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-%D8%AA%D8%AC%D8%B1%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-r244/" rel="">توجيه انتباه المستخدم إلى العناصر</a> التي يريد له صاحب الموقع أن يهتم بها أو يراها، إضافة إلى تخطيط تجربة استخدامه عمومًا داخل الموقع.
</p>

<p>
	وتظهر أهمية هذا المجال عند تصميم مواقع طبية مثلَا لا تراعي فئات المستخدمين التي لديها مشاكل في النظر أو القراءة أو السمع، فلا يراعي تهيئة الموقع لتلك الفئات من المستخدمين، فهل تتخيل موقعًا لمستشفى للأطراف الصناعية فيه <a href="https://academy.hsoub.com/apps/web/wordpress/%D8%B3%D8%AA-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D9%84%D8%A8%D9%86%D8%A7%D8%A1-%D8%A7%D8%B3%D8%AA%D9%85%D8%A7%D8%B1%D8%A9-%D8%AA%D9%88%D8%A7%D8%B5%D9%84-%D9%86%D8%A7%D8%AC%D8%AD%D8%A9-%D9%81%D9%8A-%D9%85%D9%88%D9%82%D8%B9%D9%83-r363/" rel="">الكثير من الحقول التي على المستخدم ملؤها في استمارة حجز موعد في مستشفى؟</a>
</p>

<p>
	ويضع مصمم تجربة الاستخدام الخريطة التأسيسية للموقع، وكيف يجب أن يكون التصميم المرئي للواجهة، وترتيب كل قسم رئيسي وفرعي فيه، وعدد النقرات التي ينقر عليها المستخدم للوصول إلى العناصر الهامة في الموقع، والألوان التي يجب استخدامها، وأحجام الأزرار والعناصر، وهكذا.
</p>

<h3 id="2-تصميم-واجهة-المستخدم">
	2. تصميم واجهة المستخدم
</h3>

<p>
	يأتي مصمم واجهة المستخدم User Interface (UI)‎ ليعمل على هذه النسخة التي أخرجها مصمم تجربة الاستخدام مسترشدًا بها، فيصمم الواجهة النهائية التي يراها المستخدم من قوائم وأزرار وألوان وغيرها وفق <a href="https://academy.hsoub.com/design/user-interface/%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-%D8%A7%D9%84%D8%AC%D9%8A%D8%AF%D8%A9-r804/" rel="">مبادئ تصميمية تحقق أهداف تجربة الاستخدام</a>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpeg" data-fileid="117618" href="https://academy.hsoub.com/uploads/monthly_2023_01/19603065_Modern_3d_illustration_of_Ui_Design_concept.jpeg.b94ef11e1bcc96acb00b6b383d7a3950.jpeg" rel=""><img alt="تصميم موقع" class="ipsImage ipsImage_thumbnailed" data-fileid="117618" data-ratio="66.75" data-unique="jzqxtfh0b" style="width: 800px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_01/19603065_Modern_3d_illustration_of_Ui_Design_concept.thumb.jpeg.9419108fc342806a21337dd91923ad59.jpeg"></a>
</p>

<p>
	قد يتخصص مصمم الواجهات المرئية في تصميم العناصر المرئية فقط إذا كان يعمل في شركة كبيرة وفي فريق تصميم كبير، لكن الغالب أنه يتجاوز هذه المرحلة إلى تصميم مواقع الإنترنت بحيث تكون تفاعلية، تستطيع بقية الفرق أن يتفاعلوا معها ليعرفوا الأثر المطلوب تنفيذه عند النقر على أحد الأزرار، أو كي يستطيع العميل أن يرى نسخة شبه حية من الموقع قبل البدء في تطويره وبنائه.
</p>

<h3 id="3-تطوير-واجهة-المستخدم">
	3. تطوير واجهة المستخدم
</h3>

<p>
	بعد تمام مرحلة تصميم المواقع أو التطبيقات بحيث يكون لدينا نسخة مرئية جاهزة منها، ينتقل العمل إلى مطور الواجهات الأمامية Front End Development الذي يعمل على <a href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">برمجة هذه الواجهات</a> لتتحول من مجرد تصميمات إلى نسخة حية من الموقع يستطيع العميل أن يتفاعل معها بنفس كيفية تفاعل المستخدم النهائي معها.
</p>

<p>
	ويستخدم لغات وصفية مثل HTML وبرمجية مثل جافاسكربت لإتمام عمله، إضافة إلى أطر عمل Frameworks لئلا يعيد اختراع العجلة من الصفر في المهام المكررة.
</p>

<p>
	ومطور الواجهات الأمامية هو المسؤول عن إنشاء التأثيرات المرئية للأزرار والقوائم والانتقالات في الصفحة الواحدة وبين الصفحات.
</p>

<h3 id="4-تطوير-الواجهة-الخلفية">
	4. تطوير الواجهة الخلفية
</h3>

<p>
	ينشئ <a href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">مطور الواجهة الخلفية</a> قواعد البيانات التي تلتقط بيانات المستخدم من نماذج التسجيل وبيانات وصور وغيرها لتخزينها وتصنيفها ثم جلبها للمستخدم عند الحاجة، وكذلك الخوادم التي تكون عليها المواقع نفسها وقواعد بياناتها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="117617" href="https://academy.hsoub.com/uploads/monthly_2023_01/ux-designers-creative-sketch-planning-application-development-prototype-mobile-application.jpg.1c96619efb90c1f91265e7e3ce605556.jpg" rel=""><img alt="تصميم موقع" class="ipsImage ipsImage_thumbnailed" data-fileid="117617" data-ratio="66.75" data-unique="lzcsw845a" style="width: 800px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_01/ux-designers-creative-sketch-planning-application-development-prototype-mobile-application.thumb.jpg.288a30f11fb3aee27df79209e84884d4.jpg"></a>
</p>

<p>
	وتختلف أهداف المطورين عن المصممين في أنهم يولون أهمية كبيرة لسرعة تحميل الموقع والعناصر التي فيه، وكذلك كفاءة التشغيل للخوادم لئلا تكون عرضة للاختراق أو التعطل، على عكس المصممين الذين يهتمون بتفاعلات المستخدم مع الواجهة اﻷمامية، وسهولة فهمه للمطلوب من الموقع أو التطبيق، وسرعة وصوله للمعلومات التي يحتاج إليها بأقل عدد من النقرات والإجراءات.
</p>

<h2 id="الأدوات-المستخدمة-في-تصميم-المواقع">
	الأدوات المستخدمة في تصميم موقع
</h2>

<p>
	يشترك مصمم تجربة الاستخدام ومصمم الواجهات المرئية في بعض البرامج التي يستخدمونها في تصميم المواقع، لكن توجد بعض البرامج والأدوات التي ينفرد بها كل منهما، وفيما يلي أشهر تلك البرامج.
</p>

<h3 id="adobe-xd">
	Adobe XD
</h3>

<p>
	يُستخدم برنامج <a href="https://academy.hsoub.com/design/graphic/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-adobe-xd-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-r548/" rel="">Adobe XD</a> من حزمة أدوبي لإنشاء نماذج أولية للمواقع والتطبيقات إما ثابتة أو تفاعلية، إضافة إلى مزية التعاون بين المصممين على نفس التصميم.
</p>

<h3 id="figma">
	Figma
</h3>

<p>
	<a href="https://academy.hsoub.com/design/user-interface/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-r552/" rel="">يسمح برنامج Figma</a> ببناء نماذج أولية أيضًا للمواقع والتطبيقات واختبار قابلية استخدامها -وهو أمر ضروري لمصممي تجربة الاستخدام-، وهو أيضًا بيئة تفاعلية يستطيع فيها المصممون التعاون في العمل على نفس المشروع في نفس الوقت -مثل العمل المشترك على تطبيقات جوجل السحابية-، مما يعني أنه ليس تطبيقًا مستقلًا وإنما يعمل داخل المتصفح.
</p>

<h3 id="flowmapp---octopus">
	‎<a href="https://www.flowmapp.com/" rel="external nofollow">FlowMapp</a> - <a href="https://octopus.do/" rel="external nofollow">Octopus</a>‎
</h3>

<p>
	هذان التطبيقان يعملان في المتصفح أيضًا، ويُستخدمان في إنشاء خريطة تدفق Flow map لسلوك المستخدمين في التطبيقات، وكذلك مخططات التطبيقات وخرائط المواقع، كي تكون واضحة لبقية فرق العمل من مصممي الواجهات المرئية والمطورين، مما يعني أن هاتين اﻷداتين لمصممي تجربة الاستخدام خاصة.
</p>

<h3 id="balsamiq">
	‎<a href="https://balsamiq.com/" rel="external nofollow">Balsamiq</a>‎
</h3>

<p>
	تُستخدم هذه الأداة لإنشاء <a href="https://academy.hsoub.com/design/user-interface/%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-%D9%84%D8%B1%D8%B3%D9%85-%D8%A7%D9%84%D8%A5%D8%B7%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%87%D9%8A%D9%83%D9%84%D9%8A%D8%A9-wireframe-%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D9%88%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-r726/" rel="">إطارات سلكية Wireframes</a> للموقع أو التطبيق، وهي كذلك لمصممي تجربة الاستخدام، حيث يستخدمونها لإنشاء تصميمات بسيطة لعناصر وتقسيمات الموقع أو التطبيق دون تشتيت بقية فرق العمل بتفاصيل العناصر من نصوص وأيقونات وألوان وغيرها.
</p>

<h3 id="adobe-ai">
	<a href="https://academy.hsoub.com/design/illustration/adobe-illustrator/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-%D8%A3%D8%AF%D9%88%D8%A8%D9%8A-%D8%A5%D9%84%D9%8A%D8%B3%D8%AA%D8%B1%D9%8A%D8%AA%D9%88%D8%B1-adobe-illustrator-%D9%88%D8%A7%D9%84%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%88%D8%A7%D8%AC%D9%87%D8%AA%D9%87-r542/" rel="">Adobe Ai</a>
</h3>

<p>
	أبقينا هذا البرنامج إلى نهاية القائمة ربما لإمكانياته الكبيرة، حيث يمكن تنفيذ أغلب مهام البرامج والأدوات السابقة فيه، وهو أقدم هذه الأدوات في سوق التصميم وأشملها، وكذلك أشهرها بين مصممي تجربة الاستخدام والواجهات المرئية على حد سواء.
</p>

<h2 id="اللغات-المستخدمة-في-تطوير-المواقع">
	اللغات المستخدمة في تطوير المواقع
</h2>

<p>
	نأتي إلى اللغات التي يستخدمها المطورون لتحويل التصميمات المرئية إلى تطبيقات حية جاهزة للإطلاق في السوق، وسنبدأ بمطوري الواجهات الأمامية أولًا ثم ننتقل إلى الواجهة الخلفية.
</p>

<h3 id="html">
	HTML
</h3>

<p>
	لا تُعد لغة <a href="https://academy.hsoub.com/programming/html/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-html-r1752/" rel="">HTML</a> لغة برمجة وإنما هي لغة توصيفية تُستخدم لإنشاء هيكل واضح لصفحات الويب، فهي التي تحدد أن هذا النص عنوان وذاك نص عادي، وهذه قائمة غير مرتبة، وبالمثل تحدد بقية العناصر من روابط تشعبية وصور وأقسام في الصفحة وغيرها.
</p>

<p>
	لعل HTML هي أبسط اللغات في تعلمها إذ قد لا تستغرق بضعة أيام لفهم أساسياتها ومن ثم البناء بها أو الانتقال إلى بقية اللغات.
</p>

<h3 id="css">
	CSS
</h3>

<p>
	لغة <a href="https://academy.hsoub.com/programming/css/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A9-css-r1688/" rel="">CSS</a> هي لغة تنسيق تضفي بعض مظاهر الحياة على صفحات الويب مع توحيد مظهر تلك الصفحات في نفس الوقت، وكذلك تُستخدم لإنشاء تصميمات متجاوبة responsive للمستخدمين لتناسب الأجهزة التي يتصفحون منها سواء كانت هواتف محمولة أو حواسيب لوحية أو حتى أجهزة سطح المكتب.
</p>

<p>
	تكمن فائدتها الأساسية في أن شيفرتها توضع في ملف منفصل عن HTML، ثم تُكتب فيها القوانين العامة لتصميم الموقع، مثل تنسيق العناوين الرئيسية وألوانها وحجم خطوطها، حتى إذا أردنا تغيير ذلك التنسيق لجميع العناوين غيرناه مرة واحدة في ملف CSS، بدلًا من تغييره في كل صفحة على حدة، وهكذا في بقية عناصر الصفحات من تنسيق الأزرار والألوان ومحاذاة النصوص مثلًا.
</p>

<h3 id="جافاسكربت-javascript">
	جافاسكربت Javascript
</h3>

<p>
	تأتي لغة <a href="https://academy.hsoub.com/learn/javascript-application-development/" rel="">جافاسكربت</a> لتكمل أغلب الجوانب التي تبقى في عملية <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تطوير الويب</a> سواء للواجهة الأمامية أو الخلفية، سواء باللغة نفسها أو بأطر العمل frameworks التي بُنيت عليها، فهي لغة برمجة أصيلة -ليست وصفية مثل HTML- تُستخدم لإنشاء تفاعلات من الموقع مع إجراءات المستخدم، إما باستخدام جافاسكربت نفسها أو أحد أطر العمل المشهورة التي بُنيت عليها، مثل <a href="https://academy.hsoub.com/programming/javascript/angular/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-angular-%D9%88%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-firestore-r1409/" rel="">أنجولر Angular</a> و <a href="https://academy.hsoub.com/tags/jquery%20mobile/" rel="">jQuery</a> و <a href="https://academy.hsoub.com/programming/javascript/vuejs/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-vuejs-r1664/" rel="">Vue.js</a>.
</p>

<p>
	وتُستخدم بعض أطر العمل تلك لبناء خدمات وتطبيقات تعمل في الواجهة الخلفية أيضًا للمواقع، مثل أنجولر Angular و Vue.js، إضافة إلى أطر عمل مثل Next.js.
</p>

<h3 id="لغات-أخرى">
	لغات أخرى
</h3>

<p>
	يمكن استخدام العديد من لغات البرمجة وأطر العمل لتصميم مواقع الإنترنت وتطويرها، فمثلًا يُستخدم إطار العمل جانغو <a href="https://academy.hsoub.com/learn/python-application-development/" rel="">Django</a> المكتوب بلغة بايثون لكتابة تطبيقات للويب، وكذلك إطار العمل <a href="https://academy.hsoub.com/learn/ruby-web-application-development/" rel="">Ruby-on-rails</a> المكتوب بلغة روبي Ruby، وهكذا، فلم يعد الأمر مقصورًا على لغة جافاسكربت وحدها لإتمام عملية بناء الموقع.
</p>

<p>
	ويتوقف قرار اللغة المستخدمة في بناء الموقع وكذلك إطار العمل على طبيعة المشروع المطلوب والعميل والبيئة التي سيعمل فيها والتطورات المستقبلية له، لكن تظل جافاسكربت هي اللغة اﻷشهر المستخدمة في تطوير واجهات الويب أو الواجهات الأمامية لمواقع الإنترنت.
</p>

<h2 id="الأدوات-المستخدمة-في-تطوير-الواجهات-الأمامية">
	الأدوات المستخدمة في تطوير الواجهات الأمامية
</h2>

<p>
	يحتاج مطورو المواقع الإلكترونية إلى بيئات أو أدوات يستخدمونها لكتابة شيفراتهم البرمجية، وبيئات أخرى لاختبارها، وفيما يلي أمثلة لأهم هذه الأدوات.
</p>

<h3 id="المحررات-النصية-text-editors">
	المحررات النصية Text Editors
</h3>

<p>
	وهي برامج كتابة نصوص بسيطة مثل Notepad، لكنها تكون موجهة للمبرمجين والمطورين، فتتميز بتمييز النصوص بصريًا وفقًا لنوعها ليسهل قراءتها، وكذلك الإكمال التلقائي للنصوص، وغيرها من المزايا المخصصة لتطوير المواقع والتطبيقات، وأشهر هذه المحررات ما يلي:
</p>

<ul>
	<li>
		‎<a href="https://www.vim.org/" rel="external nofollow">Vim</a>‎
	</li>
	<li>
		‎<a href="https://www.gnu.org/s/emacs/" rel="external nofollow">Emacs</a>‎
	</li>
	<li>
		‎<a href="https://notepad-plus-plus.org/downloads/" rel="external nofollow">Notepad++‎</a>‎
	</li>
	<li>
		‎<a href="https://www.sublimetext.com/" rel="external nofollow">Sublime Text</a>‎
	</li>
</ul>

<h3 id="بيئات-التطوير-المتكاملة-ides">
	بيئات التطوير المتكاملة IDEs
</h3>

<p>
	تختلف بيئة التطوير عن المحرر النصي العادي في أنها أشمل وأكثر تكاملًا، فإضافة إلى المحرر النصي فإنها تحتوي على مصرِّف compiler و منقِّح debugger وأداة لبناء واجهات المستخدم المرئية، كما تدعم عدة لغات أحيانًا مثل بايثون و PHP وروبي Ruby و جافاسكربت وغيرها. فيما يلي أهم بيئات التطوير المستخدمة في تطوير المواقع:
</p>

<ul>
	<li>
		‎<a href="https://code.visualstudio.com/" rel="external nofollow">Visual Studio Code</a>‎
	</li>
	<li>
		‎<a href="https://www.jetbrains.com/idea/" rel="external nofollow">IntelliJ IDEA</a>‎
	</li>
	<li>
		‎<a href="http://www.aptana.com/" rel="external nofollow">Aptana Studio 3</a>‎
	</li>
	<li>
		‎<a href="https://www.eclipse.org/" rel="external nofollow">Eclipse</a>‎
	</li>
	<li>
		‎<a href="https://netbeans.apache.org/" rel="external nofollow">NetBeans</a>‎
	</li>
	<li>
		‎<a href="https://www.jetbrains.com/webstorm/" rel="external nofollow">Webstorm</a>‎
	</li>
</ul>

<h2 id="خاتمة">
	خاتمة
</h2>

<p>
	مواقع الإنترنت هي المقرات الافتراضية للشركات والمؤسسات، وهي عنصر لابد منه في العلامة التجارية لأي كيان له نشاط على الويب أو على الأرض، سواء كان ذلك شركة أو مؤسسة أو حتى فردًا مستقلًا.
</p>

<p>
	وترغب هذه الكيانات بإنشاء مواقع لها لبيع منتجاتها أو الترويج لأنشطتها والتعريف بها، أو توجيه جمهورها إلى استخدام تطبيقات مخصصة للهواتف، أو حتى لمجرد حجز خدماتها والتواصل من خلالها، إضافة إلى أن وجود موقع إنترنت يرفع كثيرًا من سمعتها لدى محركات البحث، مما يعني تصدرًا لنتائج البحث وشهرة أكثر.
</p>

<p>
	وقد ذكرنا في بداية المقال أن العملاء يولون أهمية خاصة لتصميم الموقع الذي يريدون له أن يعكس هويتهم التي تمثلهم، وتحمل روح المؤسسة أو الشركة من حيث جدية التصميم أو حداثته أو غير ذلك، وكذلك مناسبته للفئات المستهدفة منه.
</p>

<p>
	وعلى ذلك ينبغي أن يطلع المصمم -إلى جانب إلمامه بالجوانب الفنية الخاصة بعمله- على أصول <a href="https://academy.hsoub.com/learn/product-development-management/" rel="">إدارة المنتجات الرقمية</a>، خاصة إن كان يوظف مطورين آخرين للعمل معه أو كان يدير فريق تصميم، وكذلك على أسس التعامل مع العملاء ليفهم احتياجاتهم ويوصل لهم رأيه المهني بالطريقة المثلى.
</p>

<h2>
	إقرأ أيضا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">تعلم أساسيات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%84%D8%B1%D8%AD%D9%84%D8%AA%D9%83-%D9%81%D9%8A-%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r206/" rel="">كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">برمجة مواقع الويب: دليلك المختصر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/design/user-interface/%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-%D8%A7%D9%84%D8%AC%D9%8A%D8%AF%D8%A9-r804/" rel="">مبادئ تصميم واجهة المستخدم UI الجيدة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/design/user-interface/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-r552/" rel="">قواعد تصميم واجهة المستخدم</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1883</guid><pubDate>Sat, 04 Feb 2023 18:01:00 +0000</pubDate></item><item><title>&#x645;&#x627; &#x647;&#x64A; &#x639;&#x644;&#x648;&#x645; &#x627;&#x644;&#x62D;&#x627;&#x633;&#x648;&#x628;&#x61F;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D8%9F-r2059/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/---(1).png.565a4ad5e454ad152e47c56098346f47.png" /></p>
<p>
	علوم الحاسوب هي دراسة العمليات التي تجري على البيانات مما يمكنني من تصميم تطبيقات بنفذ وظائف معينة باستخدام الشيفرات البرمجية والخوارزميات، وبالتالي هي المقدرة على استخدام المعرفة التقنية والرياضيات حتى نستطيع تحليل مشكلة ما وحلها عبر كتابة الشيفرات البرمجية (الكود) والخوارزميات. وتدخل علوم الحاسوب في مختلف المجالات مثل أمن المعلومات وعلوم الروبوتات وهندسة البرمجيات وإنترنت الأشياء IOT وعلم البيانات Data Science وغيرها.
</p>

<p>
	سنتعرف في هذا الفيديو على مفهوم علوم الحاسوب ومتطلباتها ومجالات العمل الناتجة عن تعلمها، إلى جانب أهم ميزاتها وعيوبها.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_5086_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="ما هي علوم الحاسوب" width="1072" data-embed-src="https://www.youtube.com/embed/Lfa6ImudnIU"></iframe>
</p>

<p>
	إذا أردت التعرف أكثر على مجال علوم الحاسوب والبرمجة، فننصحك بالانضمام إلى <a href="https://academy.hsoub.com/learn/computer-science/" rel="">دورة علوم الحاسوب</a>، ولا تنسَ الاستعانة خلال رحلة تعلمك وعملك بتوثيقات <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة في أكاديمية حسوب</a>، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">2059</guid><pubDate>Sat, 04 Feb 2023 15:00:00 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644;&#x643; &#x625;&#x644;&#x649; &#x623;&#x646;&#x648;&#x627;&#x639; &#x644;&#x63A;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>https://academy.hsoub.com/programming/general/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_01/1845275019_--.png.1e7b22ffefdf7dab431123da7d6fcfe3.png" /></p>
<p>
	لغات البرمجة هي وسيلتنا للتواصل مع الحواسيب وطلب الأوامر منها، وبالرغم من وجود مئات لغات البرمجة التي تشترك في أنها تحول أفكارنا البشرية إلى ترميز يفهمه الحاسوب إلا أن هذه اللغات تختلف وتتفاوت فيما بينها في عدة أوجه ولهذا السبب يتم تصنيف لغات البرمجة من قبل المختصين والمطورين وفق أنواع مختلفة بحيث تشترك اللغات التي تندرج تحت كل نوع في مجموعة سمات مشتركة فيما بينها.
</p>

<p>
	وفي مقال اليوم سوف نعرفكم على مختلف أنواع لغات البرمجة والسمات المميزة لكل نوع وندعم شرحنا بأمثلة عملية على كل نوع منها كي تتمكن من التمييز بينها وتختار لغة البرمجة الأنسب لمتطلبات عملك.
</p>

<h2>
	أنواع لغات البرمجة
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="117911" href="https://academy.hsoub.com/uploads/monthly_2023_01/1808827355_.png.898a7c42da89cdd50d4aa92a64cba145.png" rel=""><img alt="أنواع لغات البرمحة" class="ipsImage ipsImage_thumbnailed" data-fileid="117911" data-ratio="40.67" data-unique="x6sf8tfkp" style="width: 900px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_01/963155597_.thumb.png.c40889125a248b3cee70ac071cec2323.png"></a><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2023_01/836204461_.png.0b44252c7efb7ba24964e1ebf5413b33.png" rel=""> </a>
</p>

<p>
	تصنَّف <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/#%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">لغات البرمجة</a> وفق الأنواع التالية كما هو موضح في الصورة أعلاه كما يلي:
</p>

<ul>
	<li>
		أنواع لغات البرمجة وفق مستوى الترميز:
		<ul>
			<li>
				لغات البرمجة منخفضة المستوى Low level Programming Languages
			</li>
			<li>
				لغة الآلة Machine language.
			</li>
			<li>
				لغات التجميع Assembly languages.
			</li>
			<li>
				لغات البرمجة عالية المستوى High level languages.
			</li>
		</ul>
	</li>
	<li>
		أنواع لغات البرمجة وفق طريقة معالجة التعليمات:
		<ul>
			<li>
				اللغات المُصرَّفة Compiled Languages.
			</li>
			<li>
				اللغات المُفسَّرة Interpreted languages.
			</li>
			<li>
				اللغات الهجينة المصرّفة المفسّرة
			</li>
		</ul>
	</li>
	<li>
		أنواع لغات البرمجة وفق أسلوب تنظيم الشيفرة:
		<ul>
			<li>
				لغات البرمجة الوظيفية Functional Programming.
			</li>
			<li>
				<a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A5%D8%AC%D8%B1%D8%A7%D8%A6%D9%8A%D8%A9/" rel="">لغات البرمجة الإجرائية</a> Procedural Programing.
			</li>
			<li>
				لغات البرمجة الكائنية Object-oriented Programming.
			</li>
		</ul>
	</li>
	<li>
		أنواع لغات البرمجة وفق مجالات الاستخدام:
		<ul>
			<li>
				لغات البرمجة عامة الغرض General Purpose programming Languages.
			</li>
			<li>
				لغات البرمجة خاصة الغرض Special Programing Languages.
			</li>
		</ul>
	</li>
</ul>

<p>
	نشرح في الفقرات التالية كل نوع من أنواع لغات البرمجة ونوضح أبرز السمات المشتركة لكل نوع منها وأمثلة توضيحية عليها.
</p>

<h3>
	أنواع لغات البرمجة وفق مستوى الترميز
</h3>

<p>
	يُقصد بمستوى الترميز قدرتنا على فهم واستخدام الرموز في كتابة شيفرات لغة البرمجة وبمدى قرب لغة البرمجة من لغة الآلة أو بعدها عنها وقربها من لغة البشر، وبناء على هذا المعيار نجد مستويات لغات البرمجة التالية:
</p>

<ul>
	<li>
		لغات البرمجة منخفضة المستوى
	</li>
	<li>
		لغات البرمجة عالية المستوى
	</li>
	<li>
		لغات برمجة متوسطة المستوى
	</li>
</ul>

<p>
	سنشرح كل واحدة منها تباعًا.
</p>

<h4>
	لغات البرمجة منخفضة المستوى Low level Programming Languages
</h4>

<p>
	تُدعى لغات التجميع assembly languages ولغة الآلة machine language لغات البرمجة منخفضة المستوى لأنها تُنفِّذ فقط مجموعات الأوامر الأساسية للتعامل مع الآلة دون أية وظائف (أو القليل القليل منها في حالة لغات التجميع) جاهزة للتعامل مع البيانات أو تنفيذ حلقات أو عبارات شرطية أو إدارة تلقائية للذاكرة.
</p>

<ul>
	<li>
		<strong>لغة الآلة Machine Language</strong>: وهي اللغة الأصيلة التي يفهمها الحاسوب أو الآلة المخاطبة وتمثل سلسلة من الأحرف والأرقام المتداخلة التي يصعب جدًا فهم المطلوب منها للأشخاص غير المختصين في هذا المجال من البرمجة. إليك مثالًا:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_8318_18" style=""><span class="pun">;</span><span class="lit">123</span><span class="pun">+</span><span class="lit">25</span><span class="pln"> </span><span class="pun">برنامج</span><span class="pln"> </span><span class="pun">بلغة</span><span class="pln"> </span><span class="pun">الآلة</span><span class="pln"> </span><span class="pun">لجمع</span><span class="pln"> </span><span class="pun">العددين</span><span class="pln">
B82301
</span><span class="lit">052500</span></pre>

<ul>
	<li>
		<strong>لغة التجميع Assembly Languages</strong>: لا تبتعد هذه اللغة كثيرًا عن لغة الآلة لكنها تستخدم عددًا محدودًا من التعليمات التي تمتلك مدلولًا وتنفذ عملًا بسيطا جدًا كنقل قيمة من مكان لآخر أو إضافة قيمة إلى قيمة وهكذا. إليك المثال السابق مكتوبًا بلغة تجميع:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_8318_20" style=""><span class="pun">;برنامج</span><span class="pln"> </span><span class="pun">بلغة</span><span class="pln"> </span><span class="pun">التجميع</span><span class="pln"> </span><span class="pun">العددين</span><span class="pln"> </span><span class="lit">123</span><span class="pun">+</span><span class="lit">25</span><span class="pln">
MOV AX</span><span class="pun">,</span><span class="lit">123</span><span class="pln">
ADD AX</span><span class="pun">,</span><span class="lit">25</span></pre>

<p>
	يمكن أن نتوقع أن التعليمة <code>MOV</code> تضع القيمة <code>123</code> ضمن <code>AX</code> ومن ثم تجمع التعليمة <code>ADD</code> القيمة <code>25</code> إلى قيمة <code>AX</code>.
</p>

<p>
	وكما ترى فمن الصعب كتابة برمجيات طويلة وخوارزميات معقدة باستخدام هذه اللغات لأنها ستستغرق وقتًا طويلًا وكمًا هائلًا من الشيفرة التي يصعب تنقيحها وصيانتها. ويقتصر استخدامها حاليًا على برمجة بعض الوظائف الأساسية المرتبطة بالتعامل المباشر مع العتاد الصلب والتجهيزات الإلكترونية القابلة للبرمجة.
</p>

<h4>
	لغات البرمجة عالية المستوى High level languages
</h4>

<p>
	لغات البرمجة عالية المستوى هي إحدى أشهر مستويات لغات البرمجة وهي أكثر لغات البرمجة استخدامًا حاليًا لأنها تمتلك صياغة واضحة يمكن فهمها والتعامل معها بسهولة لإنجاز المطلوب بيسر وبأقل عدد ممكن من التعليمات. هذه اللغة عالية التنظيم إذ يمكن فصل الشيفرات التي تؤدي عملًا محددًا ضمن إجرائية خاصة بها نستدعي هذه الإجرائية في المكان الذي نشاء في الشيفرة دون الحاجة إلى كتابة تعليماتها مجددًا بالإضافة إلى الكثير من نقاط القوة كاستخدام الأنواع والحلقات والتعابير الشرطية مما يجعلها الهدف الأساسي لمن يريد <a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>. من أمثلة لغات البرمجة عالية المستوى نجد <a href="https://academy.hsoub.com/tags/%D9%85%D8%AF%D8%AE%D9%84%20%D8%A5%D9%84%D9%89%20%D8%AC%D8%A7%D9%81%D8%A7/" rel="">جافا</a> JAVA وبايثون <a href="https://wiki.hsoub.com/%5BPython%5D(https://wiki.hsoub.com/Python)" rel="external">Python</a> و ++C وغيرها الكثير.
</p>

<p>
	إليك المثال السابق الذي رأيناه بلغة الآلة ولغة التجميع مكتوبًا بلغة ++C:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_8318_8" style=""><span class="com">// 25+123 لجمع العددين C++  برنامج بلغة</span><span class="pln">
</span><span class="typ">int</span><span class="pln"> num</span><span class="pun">=</span><span class="pln"> </span><span class="lit">25</span><span class="pun">+</span><span class="lit">123</span><span class="pln"> </span><span class="com">//num اجمع العددين وأسندهما إلى المتغير الصحيح </span></pre>

<h4>
	لغات برمجة متوسطة المستوى
</h4>

<p>
	توجد حاليًا عدة معايير حديثة لاعتبار لغة البرمجة منخفضة المستوى أو عالية المستوى تتعلق بوظيفة اللغة أي قدرتها على تنفيذ مهام متعددة وقدرتها على إدارة الذاكرة وتعاملها مع العتاد الصلب مباشرة. ووفقًا لهذه المعايير يعتبر بعض المتخصصين أن لغات مثل C و ++C هي لغات منخفضة المستوى علمًا أنها تُعد لغات عالية المستوى! والسبب في ذلك هو قدرتها على إدارة الذاكرة يدويًا وكذلك إمكانية التعامل مباشرة مع لغة التجميع. لهذا يقترح بعض العاملين في مجال علوم الحاسب وجود لغات متوسطة المستوى تتمتع بميزات المستويين السابقين، وتساعد الكثير من المصممين ومهندسى معمارية الحواسب ومهندس الإلكترونيات على التخاطب مع التجهيزات وبرمجتها بطريقة أكثر فعالية.
</p>

<p>
	للمزيد من المعلومات يمكنك مطالعة مقال <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%B3%D8%AA%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">مستويات لغات البرمجة</a>.
</p>

<h3>
	أنواع لغات البرمجة وفق طريقة معالجة التعليمات
</h3>

<p>
	يُقصد بذلك هو تصنيف لغات البرمجة بناءً على طريقتها في معالجة شيفراتها وتحويلها إلى لغة التجميع أو لغة الآلة وهنا نتحدث عن اللغات عالية المستوى نوعًا ما وهذا التصنيف يشمل:
</p>

<ul>
	<li>
		اللغات المُصرَّفة Compiled Languages
	</li>
	<li>
		اللغات المُفسَّرة Interpreted languages
	</li>
	<li>
		اللغات الهجينة المصرّفة المفسّرة
	</li>
</ul>

<h4>
	اللغات المصرفة Compiled Languages
</h4>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="117909" href="https://academy.hsoub.com/uploads/monthly_2023_01/246611528_.png.4a505ad75cac0851591f1ace0190b5a2.png" rel=""><img alt="لغات البرمجة المصرفة" class="ipsImage ipsImage_thumbnailed" data-fileid="117909" data-ratio="56.38" data-unique="rk1nzrupy" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_01/829426278_.thumb.png.ddb0bf5ed3d5a13be17b0883f5264425.png"> </a>
</p>

<p>
	تستخدم هذه اللغات برنامجًا يُدعى المصرّف Compiler لنقل الشيفرة المكتوبة بلغة برمجة عالية المستوى إلى لغة الآلة. تجري عملية التصريف عادة بمسح الشيفرة ثم تحليلها ونقلها إلى لغة وسطية Intermediate Representation ثم تُطبق عليها تحسينات مما يجعل البرامج أكثر فعالية وأسرع في التنفيذ وأقل حجمًا ثم تُنقل أخيرًا إلى لغة الآلة (لغة الأصفار و الواحدات). من أمثلة لغات البرمجة المصرّفة نجد:
</p>

<ul>
	<li>
		C
	</li>
	<li>
		++C
	</li>
	<li>
		Go
	</li>
	<li>
		Ada
	</li>
	<li>
		Fortran
	</li>
	<li>
		COBOL
	</li>
	<li>
		Lisp
	</li>
	<li>
		Objective-C
	</li>
	<li>
		Swift
	</li>
</ul>

<p>
	تتميز هذه اللغات بإمكانية التقاط الأخطاء أثناء عملية التصريف ومعالجتها، وقليلًا ما يخفق تنفيذ البرنامج بعد التصريف. لا يمكن أن يسمح المصّرف بتنفيذ البرنامج إن كانت هناك أخطاء في الصياغة لكن الأخطاء الدلالية أو المنطقية التي تحدثنا عنها في الفقرة السابقة قد تمر.
</p>

<p>
	عمومًا، تُعد البرامج المكتوبة بلغات برمجة مصرّفة أسرع تنفيذًا بعد الانتهاء من تصريفها موازنة بغيرها.
</p>

<h4>
	اللغات المفسّرة Interpreted languages
</h4>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="117908" href="https://academy.hsoub.com/uploads/monthly_2023_01/425730512_.png.745d4de768e136753851724fc68de8c1.png" rel=""><img alt="لغات البرمجة المفسرة" class="ipsImage ipsImage_thumbnailed" data-fileid="117908" data-ratio="56.38" data-unique="dhvknpfag" style="width: 800px; height: auto;" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_01/845257978_.thumb.png.75fb4f10f2e79d18848e0dc685d631ca.png"> </a>
</p>

<p>
	تستخدم هذه اللغات برنامجًا يُدعى المفسّر Interpreter الذي يقرأ كل سطر من أسطر الشيفرة ويحلله وينفّذه مباشرة وبالتالي سيعمل البرنامج إن كتب بلغة مفسّرة قبل أن يبدأ نفس البرنامج العمل إن كُتب بلغة مصرّفة. سيتوقف البرنامج عن العمل في اللغات المفسّرة بمجرد أن يُصادف الخطأ وعلى المبرمج حينها إصلاح الخطأ وإعادة تنفيذ البرنامج من البداية. من أمثلة لغات البرمجة المفسّرة نجد:
</p>

<ul>
	<li>
		<strong><a href="https://wiki.hsoub.com/Python" rel="external">Python</a></strong>
	</li>
	<li>
		<strong><a href="https://wiki.hsoub.com/JavaScript" rel="external">JavaScript</a></strong>
	</li>
	<li>
		<strong>Perl</strong>
	</li>
	<li>
		<strong>MATLAB</strong>
	</li>
	<li>
		<strong>BASIC</strong>
	</li>
</ul>

<p>
	يمكن تشبيه آلية التصريف والتفسير بآلية الترجمة النصية والترجمة الشفهية، ففي الأولى يُعطى المترجم نصًا ثم يسلمه مترجمًا كاملًا إلى لغة أخرى بعد فترة، أما في الثانية فيكون المترجم حاضرًا ويترجم النص الذي يُقال مباشرةً كلمة بكلمة.
</p>

<h4>
	اللغات الهجينة المصرّفة المفسّرة
</h4>

<p>
	تستخدم هذه اللغات مصرّفًا لتحويل الشيفرة المكتوبة إلى لغة منخفضة المستوى ثم يُستخدم المفسر في تحليل وتفسير شيفرة هذه اللغة وتنفيذها. إذ تُصرّف شيفرة جافا JAVA مثلًا إلى لغة جافا بايت كود bytecode ليأتي المفسر الذي يُدعى JIT ويحسّن الشيفرة بناء على المعالج المستهدف ثم ينفّذها. وهكذا نضمن سرعة الأداء وقلة الأخطاء أثناء التنفيذ. من أمثلة اللغات الهجينة نجد:
</p>

<ul>
	<li>
		Java
	</li>
	<li>
		#C
	</li>
	<li>
		Visual Basic
	</li>
	<li>
		Erlang
	</li>
	<li>
		#F
	</li>
</ul>

<h4>
	مفهوم وقت التنفيذ Runtime
</h4>

<p>
	يُقصد بوقت التنفيذ runtime ببساطة الزمن الحقيقي لتنفيذ التعليمات في برنامج معين. لا يبدأ زمن التنفيذ في اللغات المصرّفة إلا عند انتهاء المصرّف من تنقيح الشيفرة وتقفي الأخطاء وتحويل البرنامج إلى لغة الآلة، لهذا السبب تجد أن أخطاء زمن التنفيذ قليلة.
</p>

<p>
	أما في حال اللغات المفسرّة فزمن التنفيذ هو نفسه زمن بناء البرنامج إذ يقرأ المفسّر كل سطر من الأسطر البرمجية وينفذه مباشرة، وهذا ما يجعل البرامج المفسّرة أسرع تشغيلًا من مثيلاتها المصرّفة، لكن أية أخطاء سواءً أخطاء الصياغة أو الأخطاء الدلالية ستوقف عمل البرنامج بأكمله وعلى المبرمج أن يعود إلى نقطة الصفر من جديد.
</p>

<h3>
	أنواع لغات البرمجة وفق أسلوب هيكلة الشيفرة وتنظيمها
</h3>

<p>
	يُقصد بذلك تصنيف لغات البرمجة وفقًا لتنظيم المتغيرات والإجرائيات وتسلسل العمليات التي تؤدي في النهاية إلى تنفيذ البرنامج:
</p>

<ul>
	<li>
		لغات البرمجة الوظيفية Functional Programming
	</li>
	<li>
		لغات البرمجة الإجرائية Procedural Programing
	</li>
	<li>
		لغات البرمجة الكائنية Object-oriented Programming
	</li>
</ul>

<h4>
	لغات البرمجة الوظيفية Functional Programming
</h4>

<p>
	تجمع التعليمات التي تؤدي وظيفة معينة ضمن دالة function تقبل وسطاء لحمل المعلومات إليها وتعيد قيمًا. تُستخدم الدوال في كل مكان: كمتغيرات ووسطاء وقيم معادة ولا تستخدم هذه اللغات حلقات التكرار أو العبارات الشرطية بل الدوال التعاودية Recursive function. تُعد لغات البرمجة هذه معدومة الثغرات تقريبًا وفعالة جدًا في البرمجة المتوازية Parallel Programing. من أمثلة لغات البرمجة بالدوال نجد:
</p>

<ul>
	<li>
		Elixir
	</li>
	<li>
		Erlang
	</li>
	<li>
		Common Lisp
	</li>
	<li>
		Haskell
	</li>
	<li>
		#F
	</li>
	<li>
		Clojure
	</li>
	<li>
		Elm
	</li>
	<li>
		Racket
	</li>
</ul>

<p>
	فيما يلي مثال على طباعة عبارة Hello World بلغة البرمجة الوظيفية "#F"
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8318_12" style=""><span class="pln">printfn </span><span class="str">"Hello, world!"</span></pre>

<h4>
	لغات البرمجة الإجرائية Procedural Programing
</h4>

<p>
	تُجمع التعليمات التي تؤدي إلى وظيفة معينة ضمن إجرائية Procedural (شبيهة بفكرة الدوال) تقبل وسطاء لحمل المعلومات إليها. تنفذ الإجرائية التعليمات التي تضمها ويمكن استدعائها في أي مكان من الشيفرة وضمن أي إجرائية أخرى. ولا تمنع هذه اللغات استخدام الحلقات والعبارات الشرطية ضمن الإجراءات. من أمثلة لغات البرمجة الإجرائية نجد:
</p>

<ul>
	<li>
		C
	</li>
	<li>
		Pascal
	</li>
	<li>
		Fortran
	</li>
	<li>
		BASIC
	</li>
</ul>

<p>
	إليك مثالًا بسيطًا على طباعة عبارة Hello World بلغة البرمجة الإجرائية "C":
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_8318_14" style=""><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="typ">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    printf</span><span class="pun">(</span><span class="str">"Hello, world!"</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h4>
	لغات البرمجة الكائنية Object-oriented Programming
</h4>

<p>
	جاءت فكرة <a href="https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%83%D8%A7%D8%A6%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%88%D8%AC%D9%87-r1375" rel="">لغات البرمجة كائنية التوجه</a> من أن كل شيء في الطبيعة هو كائن له أعضاء تنفذ وظائف معينة ليكون مستقلًا بذاته متفاعلًا مع غيره. ووفق هذه الرؤية يجري تغليف المتغيرات والثوابت والعمليات التي تؤدي وظيفة معينة في لغات البرمجة هذه ضمن وحدة برمجية مستقلة تُدعى كائن Object، ويمكن أن نعيد استخدام نسخ عن هذا الكائن كلما احتجنا.
</p>

<p>
	كما تسمح هذه اللغات بتقليد الطبيعة من ناحية الوراثة إذ يمكن لبعض الكائنات أن ترث بعض الصفات من كائن آخر يكون بمثابة أب له. وكمثال على ذلك نفترض وجود كائن يُدعى "مركبات" له خصائص ووظائف معينة، وكائن آخر هو "سيارة" وآخر "زورق". يمكن أن يشترك "الزورق" و"السيارة" مع الكائن "مركبات" ببعض الصفات مثل وجود محرك وهيكل وعجلة قيادة لهذا يمكن أن نجعل الكائن "مركبات" أبًا يرث منه الكائنان "سيارة" و"زورق" الصفات العامة ويكون لهما صفات خاصة تتعلق بطريقة عملهما.
</p>

<p>
	وتتميز أيضًا لغات البرمجة هذه بفكرة تعدد الأشكال، أي إن اشتركت مجموعة كائنات بوظيفة ما يمكن أن نستخدم نفس الإجرائية لطلب هذه الوظيفة، فإن كان لدينا كائنان هما قط يتحرك وسمكة تسبح يمكن لكليهما أن يتحرك، أي يمكن أن نستخدم إجرائية واحدة بنفس الاسم لتحريك كلا الكائنين بالطريقة الصحيحة على اختلاف كيفية التنفيذ لكل منهما. تُستخدم هذه اللغات بكثرة في تطوير الأنظمة المعلوماتية والبرمجيات حاليًا. من أمثلة لغات البرمجة بالكائنات نجد:
</p>

<ul>
	<li>
		JAVA
	</li>
	<li>
		<a href="https://wiki.hsoub.com/Python" rel="external">Python</a>
	</li>
	<li>
		++C
	</li>
	<li>
		#C
	</li>
	<li>
		Visual Basic
	</li>
	<li>
		<a href="https://wiki.hsoub.com/ruby" rel="external">Ruby</a>
	</li>
	<li>
		Swift
	</li>
</ul>

<p>
	لنستعرض مثالًا على طباعة عبارة Hello World بلغة البرمجة الكائنية "#C":
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_8318_16" style=""><span class="kwd">using</span><span class="pln"> </span><span class="typ">System</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Program</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">Main</span><span class="pun">(</span><span class="pln">string</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">Console</span><span class="pun">.</span><span class="typ">WriteLine</span><span class="pun">(</span><span class="str">"Hello, world!"</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	أنواع لغات البرمجة وفق مجالات الاستخدام
</h3>

<p>
	ذكرنا في المقدمة وجود عدد كبير من اللغات التي تُستخدم لتحقيق طريقة تواصل بين البشر وأجهزة محددة أطلقنا عليها اسم الأجهزة القابلة للبرمجة. وبناء على ذلك يمكن تصنيف لغات البرمجة وفق الغاية المطلوبة منها وهي:
</p>

<ul>
	<li>
		لغات البرمجة عامة الغرض
	</li>
	<li>
		لغات برمجة خاصة الغرض
	</li>
</ul>

<h3>
	لغات البرمجة عامة الغرض General Purpose programming Languages
</h3>

<p>
	يمكن استخدام هذه اللغات لبرمجة أي شيء تقريبًا كالحواسب والتجهيزات الإلكترونية والروبوتات وأن تؤدي شتى الوظائف مثل <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تطوير الويب</a> وتحليل البيانات والتنقيب عنها و<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">تطوير البرمجيات</a> لبيئات عمل مختلفة. من أمثلة لغات البرمجة عامة الغرض نجد:
</p>

<ul>
	<li>
		JAVA
	</li>
	<li>
		<a href="https://wiki.hsoub.com/Python" rel="external">Python</a>
	</li>
	<li>
		<a href="https://wiki.hsoub.com/ruby" rel="external">Ruby</a>
	</li>
	<li>
		++C
	</li>
	<li>
		C
	</li>
</ul>

<p>
	تستخدم بعض اللوحات الإلكترونية القابلة للبرمجة مثلًا (وهي بمثابة حواسيب خاصة) لغات البرمجة العامة الأغراض، إذ تستخدم منصات أردوينو <a href="https://wiki.hsoub.com/arduino" rel="external">Arduino</a> لغات C و ++C و Java لكتابة برامجها ضمن بيئة عمل مخصصة ومكتبات مخصصة، كما تستخدم حواسب راسبيري باي الشهيرة <a href="https://academy.hsoub.com/programming/os-embedded-systems/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%B1%D8%A7%D8%B3%D8%A8%D9%8A%D8%B1%D9%8A-%D8%A8%D8%A7%D9%8A-r1418/" rel="">لغة Python ضمن نظام تشغيل راسبيان</a> الخاص بها.
</p>

<h3>
	لغات برمجة خاصة الغرض Special Programing Languages
</h3>

<p>
	تُستخدم هذه اللغات لكتابة تطبيقات لأنظمة تشغيل محددة أو لتجهيزات محددة. من أمثلة لغات البرمجة الخاصة نجد:
</p>

<ul>
	<li>
		<a href="https://wiki.hsoub.com/kotlin" rel="external">Kotlin</a>: لبرمجة تطبيقات على نظام أندرويد Android.
	</li>
	<li>
		Swift: لبرمجة تطبيقات على نظام أي أو إس iOS.
	</li>
	<li>
		Objective-C تستخدم نُسخ منها لبرمجة تطبيقات ماك أو إس Mac OS ونُسخ أخرى لبرمجة التجهيزات التي تعتمد على المتحكمات الصغرية Micro Controllers.
	</li>
	<li>
		ASP.Net: لغة سكربت تعمل على الخادم لتطوير تطبيقات ويب فقط.
	</li>
	<li>
		<a href="https://wiki.hsoub.com/php" rel="external">PHP</a>: لغة سكربت تعمل على الخادم فقط لتطوير تطبيقات ويب.
	</li>
</ul>

<h3>
	أنواع اللغات وفق طريقة كتابة شيفراتها
</h3>

<p>
	يمكن تصنيف لغات البرمجة بناءً على طريقة كتابة شيفرتها وهي إما لغة برمجة نصية مكتوبة أو لغة برمجة رسومية مرئية تشبه صياغتها عملية تركيب قطع المكعبات.
</p>

<h4>
	لغات برمجة مكتوبة Written programming Languages
</h4>

<p>
	وهي الأغلبية الساحقة من لغات البرمجة إذ تكتب الشيفرة فيها على شكل تعليمات نصية متتالية.
</p>

<h4>
	لغات برمجة رسومية أو مرئية Visual programming Languages
</h4>

<p>
	وتستخدم هذه اللغات كتلًا رسومية تُسحب إلى منطقة بناء البرنامج، ولهذه الكتل وظيفة معينة مثل كتل المتغيرات وكتل الحلقات وكتل الإدخال والإخراج والكتل الشرطية وكتل العمليات الحسابية وغيرها، صم تُربط هذه الكتل مع بعضها لتكوين البرنامج النهائي.
</p>

<p>
	من أمثلة لغات البرمجة الرسومية نجد <a href="https://academy.hsoub.com/tags/%D8%AF%D9%84%D9%8A%D9%84%20%D8%B1%D8%A7%D8%B3%D8%A8%D9%8A%D8%B1%D9%8A%20%D8%A8%D8%A7%D9%8A/" rel="">سكراتش Scratch</a> التي تُستخدم لبرمجة التطبيقات على منصات مختلفة مثل ويندوز ولينكس (نسخة محدودة) وكذلك لبرمجة تجهيزات راسبيري باي. كما يمكن أن نشير إلى اللغتين Ladder و FBD وتستخدمان في برمجة تجهيزات إلكترونية تُدعى المتحكمات المنطقية القابلة للبرمجة PLC.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على أنواع لغات البرمجة وشرحنا أهم المعايير التي يتم بناء عليها تصنيف لغات البرمجة وفق مستواها وقربها من لغة البشر أو طريقة معالجة تعليماتها أو أسلوب هيكلة شيفراتها أو مجالات استخداماتها وتطبيقاتها أو وفق الطريقة التي تكتب بها تعليمات هذه اللغات وبينا كيف أن لغات البرمجة قد تندرج تحت أكثر من تصنيف واحد بذات الوقت.
</p>

<p>
	ما هي لغات البرمجة التي تستخدمها، وما هي التصنيفات التي تندرج تحتها؟ وما أهم التطبيقات التي تستخدمها باستخدام هذه اللغة؟ شاركنا تجربتك في التعليقات أسفل المقال.
</p>

<p>
	وللمزيد من المعلومات يمكنك مطالعة مقال <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">دليلك الشامل لتعلم البرمجة</a>.
</p>

<p>
	 
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a>
	</li>
	<li>
		تعرف على أشهر <a href="https://academy.hsoub.com/programming/game-development/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D8%B9%D8%A7%D8%A8/" rel="">لغات برمجة الألعاب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1887</guid><pubDate>Fri, 03 Feb 2023 15:05:00 +0000</pubDate></item><item><title>&#x645;&#x633;&#x62A;&#x648;&#x64A;&#x627;&#x62A; &#x644;&#x63A;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%B3%D8%AA%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_01/1953480051_--.png.26187a69864c26f0e72baded41ccd6c4.png" /></p>
<p>
	مستويات لغات البرمجة موضوع مهم ولطالما حاول المبرمج معرفة مستوى لغة البرمجة التي يريد تعلمها، لذا سنوضح في هذا المقال مستويات لغات البرمجة وفق طريقة ترميزها وكتابتها، ونوضح سبب إنشاء هذه المستويات وأهم الفروقات بين اللغات منخفضة المستوى وعالية المستوى، ونُبيِّن مزايا وعيوب كل منها وكيف يتم التعامل معها عندما نكتب برامجنا المختلفة.
</p>

<p>
	تجدر الإشارة أن مستوى لغة البرمجة يكون أكثر ارتفاعًا كلما كان أكثر تجريدًا وأقرب لفهمنا نحن البشر، ويكون أكثر انخفاضًا كلما كان مُفصَّلًا وقريبًا من مستوى فهم الحواسيب والأجهزة الإلكترونية القابلة للبرمجة كالهواتف الذكية والأجهزة اللوحية والروبوتات وغيرها.
</p>

<h2>
	ما هي البرمجة؟
</h2>

<p>
	البرمجة باختصار هي عملية ضبط الحواسيب وبرمجتها على إنجاز مهام معينة عادة ما تكون تكرارية روتينية وهذا ينطبق على كل الحواسيب والأجهزة الحاسوبية الإلكترونية باختلافها وأحجامها مثل الحاسوب والجوال والساعة وكل الإلكترونيات التي يُطلق عليها وصف "ذكية".
</p>

<p>
	ويعرف <a href="https://lexicon.alsharekh.org/result/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="external nofollow">قاموس صخر المعاصر</a> كلمة البرمجة بأنها عملية منهجية لوضع الإجراءات والخطوات الواجب اتخاذها لتحقيق أهداف محدَّدة بصورة فعَّالة.
</p>

<h2>
	ما الحاجة إلى لغة البرمجة؟
</h2>

<p>
	ولا تقوم تلك العملية إلى عبر وسيلة تخاطب بين الإنسان والحاسوب لإخباره بالأوامر التي يتوجب عليه القيام بها، ولكن الحاسوب لا يفهم سوى لغة وحيدة تسمى لغة الآلة تتضمن بيانات ثنائية مكونة من مجموعة من الأصفار والواحدات فقط مرتبة وفق نمط معين وهي لغة صعبة علينا نحن البشر لأننا نستخدم لغة تسمى أحيانًا لغة طبيعية تستعمل حروف أبجدية وتبدو بالنسبة لغة الآلة لنا مجرد سلسلة مبهمة من الأرقام.
</p>

<p>
	بالمقابل لا تستطيع الحواسيب فهم لغتنا البشرية ولا معرفة دلالات كلامنا، ومن هنا أتت فكرة إيجاد لغة برمجة تكون قريبة للغتنا لنتخاطب بها مع الحواسيب ونرسل من خلالها الأوامر والتعليمات للحاسوب ليفهمها الحاسوب، ولكن لا يأخذها الحاسوب مباشرة بل تُعالج التعليمات المكتوبة بلغة برمجة وتُحول إلى لغة الآلة من خلال أدوات مخصصة تعرف باسم المترجم Compiler أو المفسر Interpreter.
</p>

<p>
	لعلك تتساءل لماذا لا يفهم الحاسوب لغتي البشرية أو اللغة الإنجليزية ويضطرني للتخاطب معه بإحدى لغات البرمجة؟ والجواب هو أن <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> تكتب وفق صياغة معينة ولا تسمح بوجود أي أخطاء فيها، فعندما نتحدث نحن البشر فيما بيننا بلغتنا يمكننا أن نستدرك وقوع بعض الأخطاء النحوية الطفيفة ونصحح سوء الفهم لبعض الأخطاء غير المقصودة و نفهم دلالات الكلمات المتشابهة من السياق بصورة تلقائية بفضل قدرات أدمغتنا البشرية.
</p>

<p>
	لكن الحواسيب ليست بهذا الذكاء -ولا تملك ذرة من الذكاء- لذا يجب التخاطب معها بلغات برمجة لها قواعد وصيغ محددة وثابتة وبأوامر واضحة لا تحتمل الخطأ أو التأويل، فلغات البرمجة لن تنفذ في حال وجود أي خطأ بسيط واحد في كتابتها حتى لو كان الخطأ فاصلة واحدة فقط أو نقطة!
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h2>
	لماذا ظهرت مستويات لغات البرمجة؟
</h2>

<p>
	مثلما توجد أنواع مختلفة من لغات البشر تستخدم أبجدية ورموزًا مختلفة وتحكمها قواعد وطرق كتابة مختلفة، توجد بشكل مشابه أنواع كثيرة من لغات البرمجة تختلف في ميزاتها ومستوياتها وطريقة كتابتها وتتنوع في استخداماتها وتطبيقاتها.
</p>

<p>
	تصنف لغات البرمجة وفق عدة تصنيفات وتنقسم إلى عدة أنواع ذكرناها في مقال <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/#%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">دليلك الشامل إلى لغات البرمجة</a> وسنركز في فقراتنا التالية على أحد التصنيفات الرئيسية للغات البرمجة، وهو تمييزها إلى مستويات حسب طريقة ترميزها ونشرح أهم الفروقات في كل مستوى.
</p>

<h2>
	ما هي مستويات لغات البرمجة
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="117830" href="https://academy.hsoub.com/uploads/monthly_2023_01/324823029_--.png.3e8aec417b3f514b76a77935f3ebbb4b.png" rel=""><img alt="مستويات لغات البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="117830" data-ratio="56.33" data-unique="nurujnj96" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_01/1311773682_--.thumb.png.3ea1db6281d373bd0562ac6c58704bc9.png"> </a>
</p>

<p>
	يقصد بمستوى لغة البرمجة مقدار تفاصيل الرموز البرمجية التي تستخدمها هذه اللغة، فكلما قلت التفاصيل ارتفع مستوى لغة البرمجة وزادت سهولتها والقدرة على فهم تعليماتها من قبل البشر، وكلما زادات التفاصيل الدقيقة كلما انخفض مستوى اللغة واقتربت أكثر من فهم الآلة.
</p>

<p>
	توجد <a href="https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%84%D8%BA%D8%A7%D8%AA_%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="external nofollow">المئات من لغات البرمجة</a> في العالم، وتصنف لغات البرمجة بناء على درجة تجريدها إلى ثلاثة مستويات هي:
</p>

<ul>
	<li>
		<p>
			لغات البرمجة منخفضة المستوى Low level Programming Languages
		</p>
	</li>
	<li>
		<p>
			لغات البرمجة متوسطة المستوى Medium Level Programming Language
		</p>
	</li>
	<li>
		<p>
			لغات البرمجة عالية المستوى High level Programming Languages
		</p>
	</li>
	<li>
		لغات البرمجة فائقة المستوى Very High-level programming language
	</li>
</ul>

<p>
	نشرح في الفقرات التالية كل مستوى من هذه المستويات بمزيد من التفصيل.
</p>

<h3>
	لغات البرمجة منخفضة المستوى Low level Programming Languages
</h3>

<p>
	لغات البرمجة منخفضة المستوى هي أحد مستويات لغات البرمجة المكتوبة بطريقة يسهل على أجهزة الحواسيب فهمها وتفسيرها، ويمكن من خلالها التخاطب مباشرة مع أجهزة الحاسوب، وإنجاز العمليات على مستوى وحدة المعالجة المركزية CPU والوصول المباشر إلى ذاكرة الحاسوب وإدارتها والتحكم في عمليات الإدخال والإخراج.
</p>

<p>
	تعد كل من لغة الآلة Machine language التي تستخدم بيانات رقمية مكونة من 0 و 1 فقط، ولغة التجميع Assembly language أبرز الأمثلة على لغات البرمجة منخفضة المستوى.
</p>

<p>
	تتميز اللغات منخفضة المستوى بسرعة التنفيذ وأداء أفضل من اللغات عالية المستوى لأن الكود البرمجي المكتوب بها لا يحتاج إلى تفسير أو ترجمة لينفذ ويمكن للحاسوب فهمه وتنفيذه مباشرة، كما أنها تنفذ بأقل قدر ممكن من مساحة الذاكرة.
</p>

<p>
	تستخدم اللغات منخفضة المستوى عادة في كتابة نواة نظام التشغيل أو برامج <a href="https://ar.wikipedia.org/wiki/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC_%D8%AA%D8%B9%D8%B1%D9%8A%D9%81" rel="external nofollow">تعريف العتاد وتشغيله</a> device driver أو التطبيقات المخصصة التي تتطلب التعامل المباشر مع عتاد الحاسوب، ولا تستخدم من قبل المطورين بشكل مباشر لأغراض البرمجة المعروفة مثل تصميم مواقع الويب أو تطبيقات الجوال أو تطوير الألعاب وما شابه.
</p>

<h4>
	لغة الآلة Machine Language
</h4>

<p>
	لغة الآلة هي أدنى مستوى من مستويات لغات البرمجة وهي تكتب بتنسيق مكون من سلسلة من البتات أو من الأصفار والواحدات التي تمثل ترميزًا للعمليات التي يجب أن تتم في وحدة المعالجة المركزية وهو تنسيق يصعب على البشر قراءته وكتابته مباشرة.
</p>

<p>
	يمكن تفسير لغة الآلة وتنفيذها مباشرة من قبل الحاسوب أو بعبارة أدق من قبل وحدة المعالجة المركزية للحاسوب، وفي بداية اختراع الحاسوب كانت هذه اللغة هي الوسيلة الوحيدة للاتصال بين البشر والحواسيب وكانت تُكتب على <a href="https://ar.wikipedia.org/wiki/%D8%A8%D8%B7%D8%A7%D9%82%D8%A9_%D9%85%D8%AB%D9%82%D8%A8%D8%A9" rel="external nofollow">بطاقات مثقبة</a> تمثل الأصفار والواحدات، ونظرًا لأن لغة الآلة هي لغة تعطي تعليمات مباشرة إلى المعالج فيمكنك من خلال هذه اللغة استخدام جميع الوظائف التي يمتلكها المعالج.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="117831" href="https://academy.hsoub.com/uploads/monthly_2023_01/621143823_-----.png.049c9c2dadbc9de194669f1cac9e4efe.png" rel=""><img alt="صورة مثقبة لغة آلة" class="ipsImage ipsImage_thumbnailed" data-fileid="117831" data-ratio="45.00" data-unique="dxhq7a0vb" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_01/415606108_-----.thumb.png.d40cd74da6dd86d0760c1f394478e763.png"> </a>
</p>

<p style="text-align: center;">
	صورة مثقبة تعبر عن تعليمات مكتوبة بلغة الآلة لبرمجة الحاسوب قديمًا
</p>

<p>
	تبدو أوامر لغة الآلة بشكل سلسلة من الأرقام الثنائية أو الست عشرية وهي تعتمد على بنية معالج الحاسب وتختلف من نوع معالج لآخر، ويتسبب كل أمر منها بجعل ينفذ مهمة محددة للغاية مثل تحميل قيمة في سجل وحدة المعالجة المركزية أو تخزين قيمة في الذاكرة أو الانتقال لموضع معين فيها.
</p>

<p>
	وتتكون الأوامر بلغة الآلة من جزأين الأول هو جزء التعليمات القابلة للتنفيذ والثاني هو جزء العناوين، على سبيل المثال الكود التالي يمثل كودًا برمجيًّا مكتوبًا بلغة الآلة:
</p>

<pre class="ipsCode">10100011 10110111 11000101 AZ B7 C5
</pre>

<p>
	وتملك كل عائلة من المعالجات مجموعة من التعليمات الخاصة بها للتعامل مع العمليات المختلفة مثل الحصول على مدخلات من لوحة المفاتيح، وعرض المعلومات على الشاشة، وأداء العديد من المهام الأخرى التي تعرف باسم تعليمات لغة الآلة.
</p>

<h4>
	لغة التجميع Assembly Language
</h4>

<p>
	لغة التجميع هي لغة برمجة منخفضة المستوى تم تطويرها للتقليل من صعوبة فهم لغة الآلة، فهي تعتمد في ترميزها على استخدام تعليمات وأوامر مكونة من كلمات قصيرة ومفهومة بدلًا من استخدام التعليمات الرقمية التي يصعب على البشر حفظها وكتابة البرامج مباشرة بها.
</p>

<p>
	في هذه اللغة يتم ربط كل رقم بسلسلة من الأحرف لسهولة تذكره ومعرفة معناه واستخدامه في كتابة البرنامج، حيث تتضمن لغة التجميع أوامر بسيطة مثل <code>ADD</code> لإضافة قيمة إلى قيمة، والأمر <code>SUB</code> لطرح قيمة من قيمة، والأمر <code>MOV</code> لنقل قيمة من موضع لآخر …إلخ. ومن خلال هذه الأوامر البسيطة يمكنك تنفيذ أوامر أكثر تقدمًا كالعمليات الحسابية والرياضية المختلفة.
</p>

<p>
	على سبيل المثال البرنامج البسيط التالي يقوم بجمع العددين 30 و40 باستخدام لغة التجميع:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5652_11" style=""><span class="pun">.</span><span class="pln">data
 sum DWORD </span><span class="pun">?</span><span class="pln">
</span><span class="pun">.</span><span class="pln">code
 main proc
    MOV eax</span><span class="pun">,</span><span class="lit">30</span><span class="pln">
    ADD eax</span><span class="pun">,</span><span class="lit">40</span><span class="pln">
    MOV sum</span><span class="pun">,</span><span class="pln">eax</span></pre>

<p>
	في الكود السابق يدل القسم <code>‎.data</code> على منطقة البرنامج التي تحتوي على المتغيرات وهنا كما تلاحظ عرفنا متغيرًا باسم <code>sum</code> لتخزين ناتج الجمع. ويدل القسم <code>‎.code</code> على منطقة البرنامج الأساسية التي تحتوي على التعليمات المخصصة لجمع هذين العددين.
</p>

<p>
	يمكن أن تخمن من الكود السابق أن أول تعلمية <code>MOV</code> وضعت القيمة 30 ضمن السجل <code>eax</code> والتعليمة <code>ADD</code> أضافت القيمة 40 إلى القيمة المخزنة في السجل <code>eax</code> وأخيرًا قامت التعليمة <code>MOV</code> بوضع قيمة <code>eax</code> ضمن المتغير <code>sum</code>.
</p>

<p>
	بعد كتابة التعليمات بلغة التجميع يمكن تحويلها بسهولة إلى لغة آلة قابلة للتنفيذ بواسطة برنامج خاص يسمى "المُجمِّع" Assembler.
</p>

<p>
	تستخدم لغة التجميع لكتابة برامج قصيرة وبسيطة ولكنها غير مناسبة للبرامج الكبيرة والمعقدة، لهذا السبب يقتصر استخدامها على البرامج التي تحتاج إلى التواصل المباشر مع عتاد الحاسب كمكبرات الصوت ولوحة المفاتيح والشاشات وما شابه، وعلى الحالات التي تتطلب سرعات تنفيذ عالية أو إجراءات خاصة غير ممكنة التحقيق في اللغات الأعلى مستوى.
</p>

<h3>
	لغات البرمجة عالية المستوى High level Programming Languages.
</h3>

<p>
	تعد لغات البرمجة عالية المستوى أكثر لغات البرمجة استخدامًا وشيوعًا ومن أهم مستويات لغات البرمجة، فقد تم تصميمها لتكون مفهومة من قبل البشر وهي تحاكي اللغة الإنجليزية إلى حد ما وتستخدم صياغة واضحة وكلمات محددة ومفهومة ورموزًا رياضية شائعة مما يمكن المبرمجين من تطوير برامجهم بسرعة أكبر ويقلل احتمالية حدوث الأخطاء.
</p>

<p>
	هناك المئات من لغات البرمجة عالية المستوى المتفاوتة في درجة صعوبتها لكنها بالمجمل تبقى سهلة التعلم والتنفيذ ومن أشهر الأمثلة على اللغات عالية المستوى جافاسكربت وبايثون وروبي و C++‎ و PHP …إلخ.
</p>

<p>
	يعد هذا النوع من لغات البرمجة صديقًا للمبرمجين لكونها سهلة الفهم والاستخدام والصيانة، وهي تصلح لتطوير مختلف أنواع التطبيقات والبرامج <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" rel="">كتطبيقات سطح المكتب</a> ومواقع الويب والألعاب وتطبيقات الذكاء الصنعي …إلخ.
</p>

<p>
	على سبيل المثال البرنامج التالي مكتوب بلغة "بايثون" لجمع العددين 30 و 40، وكما تلاحظ فهو مكتوب بشيفرة أسهل في الفهم بكثير من شيفرة لغة التجميع.
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_5652_13" style=""><span class="pln">x </span><span class="pun">=</span><span class="pln"> </span><span class="lit">30</span><span class="pln">
y </span><span class="pun">=</span><span class="pln"> </span><span class="lit">40</span><span class="pln">
sum</span><span class="pun">=</span><span class="pln">x</span><span class="pun">+</span><span class="pln">y
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">sum</span><span class="pun">)</span></pre>

<p>
	بالمقارنة مع اللغات منخفضة المستوى تتميز لغات البرمجة عالية المستوى بكونها أفضل منها في الإنتاجية، لكنها أبطأ في التنفيذ وتستغرق وقتًا إضافيًا من أجل ترجمة تعليماتها وشيفراتها المصدرية إلى كود الآلة.
</p>

<h3>
	لغات البرمجة متوسطة المستوى Medium Level Programming Language
</h3>

<p>
	نظرًا للتطور الهائل الذي شهدته لغات البرمجة فقد ظهرت في الآونة الأخيرة لغات برمجة مرنة ومختصرة الصياغة وأسهل في الفهم وفي طريقة التنفيذ كلغة بايثون أو روبي …إلخ. أتاحت هذه اللغات للمبرمجين الاستغناء عن كتابة الكثير من التفاصيل عند تطوير البرامج لذا تم تصنيفها من مستويات لغات البرمجة على أنها هي اللغات العالية المستوى وتمت إضافة تصنيف جديد للغات البرمجة هو لغات البرمجة متوسطة المستوى لتصنيف لغات البرمجة الأقدم التي ظهرت في البدايات مثل C ولغة Ada ولغة جافا بأنها لغات متوسطة المستوى.
</p>

<p>
	علمًا أن هذه اللغات لاتزال تعتبر لغات عالية المستوى لكونها مفهومة من قبل البشر وتستخدم تعليمات بسيطة وقريبة من اللغة الإنجليزية ويمكن استخدامها لتطوير التطبيقات المختلفة بسهولة لكن التصنيف وضع لإنشاء بنية تنظيمية تستوعب كافة لغات البرمجة.
</p>

<p>
	على سبيل المثال تعتبر لغة بايثون أعلى مستوى من لغة جافا لأن جافا أصعب في التعلم والاستخدام ولأنك تستطيع إعادة كتابة برنامج مكتوب بلغة جافا باستخدام كود أبسط وأقل حجمًا في لغة بايثون.
</p>

<p>
	يمكن القول أن لغات البرمجة متوسطة المستوى تجمع بين أفضل إمكانيات اللغات عالية المستوى وإمكانيات اللغات منخفضة المستوى مثل لغة التجميع، فهي تسمح بإدارة الذاكرة يدويًا ومعالجة البيانات والتعامل مع البتات والبايتات والمؤشرات مباشرة لذا تعد لغات البرمجة الأنسب للتخاطب مع التجهيزات وبرمجة الأنظمة.
</p>

<h3>
	لغات البرمجة فائقة المستوى Very high-level programming language
</h3>

<p>
	ظهرت كذلك في التسعينيات مستويات أخرى للغات البرمجة عرفت باسم اللغات فائقة المستوى وهو مصطلح يستخدم لوصف لغات عالية المستوى جدًا والقريبة بشكل كبير من لغة البشر هذه اللغات تتمتع بأعلى مستوى من التجريد وهي مصممة لاستخدامات وتطبيقات محدودة.
</p>

<p>
	على سبيل المثال تصنف لغة برولوغ Prolog على أنها لغة برمجة فائقة المستوى وهي لغة منطقية تعريفية declarative تستخدم بشكل أساسي في <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">مجالات الذكاء الاصطناعي</a>. ولا بد أنك سمعت بلا شك بروبوت ChatGPT المدعوم <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A/" rel="">بالذكاء الاصطناعي</a> والذي يعتمد على لغة GPT-3 الخاصة بـ OpenAI والذي يمكنك من التحدث إليه بلغتك كما تتحدث مع أي إنسان حقيقي ويفهمك ويجيبك على أي أسئلة برمجية أو غير برمجية وبطرق ولغات مختلفة، وهذا من شأنه أن يجعلنا ننتقل في مجال البرمجة لمستويات جديدة لم نعهدها من قبل في المستقبل القريب.
</p>

<p>
	تعتمد لغات البرمجة فائقة المستوى مثل برولوغ على تنفيذ الأوامر وحل المشكلات بناء على مجموعة القواعد Rules وعلى حقائق Facts أو قاعدة بيانات معروفة يمكننا الاعتماد عليها لاتخاذ القرارات المناسبة والحصول على إجابات لأسئلة غير معروفة ولا تحتاج هذه اللغة إلى ترجمة تعليماتها إلى لغة الآلة كما في حال اللغات العالية المستوى والمتوسطة المستوى.
</p>

<p>
	على سبيل المثال يمكنك كتابة برنامج باستخدام لغة برولوغ لاختبار ما إذا كانت X هي أخت شقيقة لـY من خلال كتابة قواعد الحل أو منطق الحل كالتالي:
</p>

<p>
	كي تكون X هي أخت Y يجب أن تكون أنثى ويكون لكل من X و Y نفس الوالدين ونضيف لها شرطًا وهو لا تكون قيمة X هي نفسها قيمة Y كل لا تكون أخت نفسها.
</p>

<pre class="ipsCode">Rules:
sisterof(X, Y) :- female(X), parent(Z, X), parent(Z, Y), not(X = Y).
</pre>

<p>
	بعدها ننشئ قاعدة بيانات تتضمن مجموعة من الحقائق مثل:
</p>

<pre class="ipsCode">male(Ali).
male(Ahmad).
female(Ola).
female(Maryem).
parents(Ali, Ola, Ahmad).
parents(Maryem, Ola, Ahmad).
</pre>

<p>
	الآن يمكننا أن نسأل البرنامج أسئلة مثل "هل علا أخت علي؟" سوف يجبنا بالنفي بناء على القواعد والحقائق التي يملكها.
</p>

<pre class="ipsCode">sisterof(Ali, Ola).
</pre>

<h2>
	الخاتمة
</h2>

<p>
	بهذا نكون وصلنا لنهاية هذه المقالة التي تعرفنا فيها على مفهوم برمجي يستخدم كثيرًا في علوم الحاسوب وهي مستويات لغات البرمجة، وميزنا بين مفهوم اللغات عالية المستوى ومنخفضة المستوى ومتوسطة المستوى وبينا ميزاتها ومجالات استخدام كل منها وأهم الفروقات فيما بينها.
</p>

<p>
	وللمزيد من المعلومات حول لغات البرمجة وأهم أنواعها وتطبيقاتها يمكنك مطالعة مقال <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">دليلك الشامل لتعلم البرمجة</a>
</p>





<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			احصل على موقع إلكتروني مخصص لأعمالك
		</p>

		<p class="banner-subtitle">
			أبهر زوارك بموقع احترافي ومميز بالاستعانة بأفضل خدمات تطوير وتحسين المواقع على خمسات
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://khamsat.com/create-website" rel="external">أنشئ موقعك الآن</a>
		</div>
	</div>
</div>





<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">دليلك إلى أنواع لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r1956/" rel="">برمجة الحاسوب للمبتدئين</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/game-development/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D8%B9%D8%A7%D8%A8/" rel="">تعرف على أشهر لغات برمجة الألعاب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1886</guid><pubDate>Tue, 31 Jan 2023 15:04:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x62A;&#x639;&#x627;&#x645;&#x644; &#x645;&#x639; &#x627;&#x644;&#x623;&#x62E;&#x637;&#x627;&#x621; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x64A;&#x629;&#x61F;</title><link>https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9%D8%9F-r2016/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_07/1984046749_.png.e802b5809956b5907dc575db62c60c42.png" /></p>
<p>
	مهما بلغ مستواك البرمجي، ستواجه من الحين إلى الآخر مشكلةً شائعة بين كل المبرمجين، تتمثل في <a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-r1342/" rel="">الأخطاء البرمجية</a>.
</p>

<p>
	على هذا الأساس، سنتحدث في هذا الفيديو عن هذه المشكلة وكيفية التعامل معها، إضافة إلى شرح أنواع الأخطاء البرمجية والتنقيح Debugging والاستثناءات Exceptions مع أمثلة عملية عن هذه الأخطاء وأنواعها.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="653" id="ips_uid_6418_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="كيفية التعامل مع الأخطاء البرمجية" width="1161" data-embed-src="https://www.youtube.com/embed/Pgje6nWuDkg"></iframe>
</p>

<p>
	إذا أردت التعرف أكثر على مجال البرمجة والحاسوب، ننصحك بالانضمام إلى <a href="https://academy.hsoub.com/learn/computer-science/" rel="">دورة علوم الحاسوب</a>، ولا تنسَ الاستعانة خلال رحلة تعلمك وعملك <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">بتوثيقات موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة</a> في أكاديمية حسوب، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">2016</guid><pubDate>Tue, 24 Jan 2023 15:00:00 +0000</pubDate></item><item><title>&#x642;&#x648;&#x627;&#x639;&#x62F; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629; &#x628;&#x628;&#x633;&#x627;&#x637;&#x629; &#x644;&#x644;&#x645;&#x628;&#x62A;&#x62F;&#x626;&#x64A;&#x646;</title><link>https://academy.hsoub.com/programming/general/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D8%A8%D8%B3%D8%A7%D8%B7%D8%A9-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-r1870/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_01/1527658339_-.png.acf352c8533306eba2cd06ea78c7559f.png" /></p>
<p>
	لكل مهنة قواعد تنظمها وتضمن إنجاز الأعمال فيها بأفضل صورة ممكنة، ومهنة البرمجة ليست استثناء! حيث تعد قواعد البرمجة من الأمور التي ينبغي على أي مبرمج تعلمها، والحرص على اتباعها عند تطوير البرامج والتطبيقات المختلفة.
</p>

<p>
	نضعك في مقال اليوم على بداية الطريق، ونعرفك على أهم قواعد البرمجة، ونوضح لك أهمية استخدامها وكيف يمكنك تحقيقها، وبالتدريب والممارسة ستتمكن من اتباعها عندما تطور برامجك وتطبيقاتك.
</p>

<h2>
	ما هي قواعد البرمجة؟
</h2>

<p>
	قواعد البرمجة هي مجموعة من التوصيات والإرشادات التي ينبغي للمبرمجين اتباعها والالتزام بها عند استخدام أي لغة من <a href="http://xn--%20-ymcbefcr3b1e1efo" rel="external nofollow">لغات البرمجة</a> للحصول على كود برمجي عالي الجودة وسهل الصيانة.
</p>

<p>
	يضمن لك تطبيق قواعد البرمجة إنتاج برامج مفهومة وواضحة وسهلة القراءة والتعديل، وهو أمر مهم لأي مبرمج لاسيما عندما يعمل ضمن فريق عمل ويتشارك مع عدة مبرمجين أو مطورين على تطوير نفس المشروع.
</p>

<p>
	لاشك أن تطبيق قواعد البرمجة ليس بالأمر السهل ولن يتحقق بسرعة، فتطبيق القواعد يأتي في مرحلة لاحقة، فبعد أن تتمكن من <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أساسيات البرمجة</a>، وتتدرب على طريقة التفكير البرمجي، وحل المشكلات، عليك أن تتقدم خطوة للأمام وتتعلم كيف تحسن من برامجك من خلال تطبيق القواعد البرمجية عليها.
</p>

<p>
	سنعرض الآن عددًا من أهم قواعد البرمجة فكن جاهزًا!
</p>

<h2>
	أهم قواعد البرمجة
</h2>

<p>
	إليك أهم ثمان قواعد أساسية ينبغي عليك اتباعها لتبرمج كالمحترفين:
</p>

<ol>
	<li>
		اتبع القواعد العرفية للغة التي تبرمج بها
	</li>
	<li>
		وثق الكود الذي تكتبه
	</li>
	<li>
		حافظ على البساطة KISS
	</li>
	<li>
		لا تكرر نفسك DRY
	</li>
	<li>
		ادمج الأجزاء الصغيرة لإنجاز الأعمال الكبيرة
	</li>
	<li>
		لا تبرمج ما لا تحتاجه
	</li>
	<li>
		افصل الأكواد في أجزاء مستقلة
	</li>
	<li>
		اكتب أكوادًا نظيفة
	</li>
</ol>

<p>
	نشرح في الفقرات التالية كل قاعدة من قواعد البرمجة هذه بمزيد من التفصيل ونوضح أهميتها وكيفية تطبيقها عند تطوير البرامج والتطبيقات.
</p>

<h3>
	اتبع القواعد العرفية للغة التي تبرمج بها
</h3>

<p>
	لكل لغة من لغات البرمجة قواعد كتابة خاصة بها تعرف باسم صياغة، واتباع هذه القواعد عند كتابة الكود البرمجي ليس خيارًا للمبرمج، لأن الكود البرمجي لن يعمل بشكل صحيح إذا لم يكن مكتوبًا وفق هذه القواعد.
</p>

<p>
	فليس المقصود هنا صياغة اللغة وقواعدها، ولكن ما أقصده هو مراعاة اصطلاحات اللغة المتعارف عليها أو ما يسمى في أوساط المبرمجين باسم "العرف" Conventions، فلكل لغة قواعد اصطلاحية متعارف عليها بين مبرمجي تلك اللغة، مثل ضرورة كتابة كل تعليمة على سطر جديد، ومراعاة قواعد التباعد، وأماكن وضع الأقواس مثل () و {} ضمن البرنامج، ووضع المسافات البادئة في كل سطر، وقواعد تسمية المتغيرات والدوال والأصناف …إلخ.
</p>

<p>
	هذه الأمور تتغير من لغة إلى لغة وليس لها معيار موحد، لذا عليك التعرف على اصطلاحات اللغة التي تبرمج بها وتحرص على اتباعها، فإن انتقلنا مثلًا إلى لغة جافاسكربت، فيعرض مقال <a href="https://academy.hsoub.com/programming/javascript/%D9%86%D9%85%D8%B7-%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r785/" rel="">نمط كتابة شيفرة جافاسكربت</a> هذا الموضوع بالتفصيل ويتحدث عن العرف المتبع بين مبرمجي لغة جافاسكربت كما يشير أخيرًا في فقرة "شروحات لأنماط كتابة الشيفرة" أشهر المعايير والأعراف العالمية للغة جافاسكربت منها أسلوب Google وأسلوب Airbnb والأسلوب المعياري الرسمي وغيرها، فلا حاجة لكل فريق أي يخترع عرفًا ومعيارًا يسير عليه بل يقتدي بعرف شهير شائع منظم موجود مسبقًا.
</p>

<p>
	أضرب مثلًا عن <a href="https://academy.hsoub.com/programming/javascript/%D8%AF%D9%84%D9%8A%D9%84-airbnb-%D9%84%D9%86%D9%85%D8%B7-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r632/" rel="">أسلوب Airbnb</a> في تعريف المتغيرات في لغة جافاسكربت بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3602_6" style=""><span class="com">// سيء</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> items </span><span class="pun">=</span><span class="pln"> getItems</span><span class="pun">(),</span><span class="pln">
    goSportsTeam </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">

</span><span class="com">// جيد</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> items </span><span class="pun">=</span><span class="pln"> getItems</span><span class="pun">();</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> goSportsTeam </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span></pre>

<p>
	لاحظ أن تعريف متغير واحد في كل سطر هو الأسلوب المتبع ويجب تجنب تعريف عدة متغيرات في سطر واحد رغم أنه لا فرق في التنفيذ بينهما.
</p>

<p>
	أتريد مثلًا آخر؟ خذ هذا المثال أيضًا من أسلوب <a href="https://peps.python.org/pep-0008/" rel="external nofollow">PEP8</a> في لغة بايثون:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_3602_8" style=""><span class="com"># Line Break with Binary Operator</span><span class="pln">
</span><span class="com"># سيء</span><span class="pln">
income </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">gross_wages </span><span class="pun">+</span><span class="pln">
          taxable_interest </span><span class="pun">-</span><span class="pln">
          student_loan_interest</span><span class="pun">)</span><span class="pln">

</span><span class="com"># جيد</span><span class="pln">
income </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">gross_wages
          </span><span class="pun">+</span><span class="pln"> taxable_interest
          </span><span class="pun">-</span><span class="pln"> student_loan_interest</span><span class="pun">)</span><span class="pln">

</span><span class="com"># Imports</span><span class="pln">
</span><span class="com"># سيء</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> sys</span><span class="pun">,</span><span class="pln"> os

</span><span class="com"># جيد</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> os
</span><span class="kwd">import</span><span class="pln"> sys</span></pre>

<p>
	قد تجد أن الاختلاف بسيط أحيانًا بين العُرف الجيد المتبع وبين الأسلوب السيء في كتابة الشيفرة وهذا صحيح، ولكن تذكر أن الشيفرة لا تُكتب مرة واحدة فقط ولن يعمل عليها شخص واحد فقط، بل ستُعدل مرارًا وتكرارًا ويمر عليها عشرات المبرمجين فإن اتبع كل مبرمج أسلوبه الخاص فُقد التنظيم وسادت العشوائية وأصبحت الشيفرة عرضة للخطأ عند تعديلها.
</p>

<p>
	وتذكر دومًا أن العُرف هذا يضعه مبرمجون أصحاب خبرة بعشرات السنوات يحاولون به نقل خبرتهم أفضل طريقة لكتابة شيفرة متسقة سهلة القراءة والتعديل وأقل عرضة للأخطاء.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h3>
	وثق الكود الذي تكتبه
</h3>

<p>
	هذه القاعدة على بساطتها مفيدة للغاية، فمن الضروري أن تعتاد على كتابة تعليقات توضيحية في الأكواد التي تكتبها لتوثيق عملك، وتشرح ما الذي تقوم به، وتوضح وظائف الدوال والأصناف والمكتبات المختلفة.
</p>

<p>
	التعليقات أمر مهم لكل مبرمج، فهي من جهة تساعده على فهم ما كتبه عند العودة له لاحقًا لأن المبرمج سينسى الكثير مما كتبته ولماذا كتبته بعد مرور فترة من الزمن، كما أن التعليقات تفيد أي مبرمج آخر يقرأ الكود في فهمه بسرعة في حال احتاج إلى تطويره أو التعديل عليه.
</p>

<p>
	ومن الضروري أن تتعلم أفضل ممارسات كتابة التعليقات على الكود الخاص بك، وتعرف متى وأين يتوجب عليك كتابة التعليقات ومتى لا يلزمك ذلك.
</p>

<p>
	اكتب التعليقات عندما تحتاج لوصف أي ميزة غير واضحة في التعليمات البرمجية، وفي أي موضع ترى أنه يتطلب المزيد من الشرح والتوضيح للآخرين، أما عندما يكون الهدف من الكود واضحًا ومفهومًا فيمكنك الاستغناء عن كتابتها.
</p>

<p>
	باختصار التعليقات تساعد المبرمجين على فهم المشكلات التي كنت تحاول حلها في تعليماتك البرمجية دون الحاجة لبذل كثير من الجهد لفهم واستنباط ما كتبته ولكن الأفضل من كتابة التعليقات أن تكتب شيفرة مفهومة بدون تعليقات وهذه هي القاعدة دومًا.
</p>

<h3>
	حافظ على البساطة KISS
</h3>

<p>
	قاعدة <strong>KISS</strong> هي اختصار لعبارة "<strong>Keep It Simple, Sweetie</strong>" التي تعني أبقها بسيطة يا عزيزي! أو أبقِ أكوادك بسيطة ومباشرة، وهذه القاعدة تطبق عند تصميم كافة الأنظمة البرمجية فقد تبين أن هذه الأنظمة تعمل بشكل أفضل إذا كانت بسيطة وخالية من التعقيد.
</p>

<p>
	فإذا كنت تستطيع أن تحل مشكلة ما بعشرة أسطر من الكود البرمجي لا داعي لأن تكتب خمسين سطرًا لحلها، وإذا كنت تحتاج لبرمجة نموذج ما يحتوي 10 حقول، فلا تضع فيه 20 حقلًا من البيانات التي لن تقدم أي فائدة في سير عمل برنامجك.
</p>

<p>
	الخلاصة، إذا كنت تطور أحد البرامج وكنت تستطيع تجنب التعقيد في كتابة الكود، فتجنبه قدر الإمكان، واحرص على إبقاء الأكواد البرمجية التي تكتبها فيه بسيطة، وتلبي المتطلبات قدر المستطاع.
</p>

<h3>
	لا تكرر نفسك DRY
</h3>

<p>
	من قواعد البرمجة الهامة قاعدة <strong>DRY</strong> وهي اختصار للعبارة "<strong>Don't Repeat Yourself</strong>" التي تعني لا تكرر نفسك، والتي تؤكد على المبرمج أن لا يكرر كتابة نفس الكود البرمجي مرارًا وتكرارًا، وينبغي عليه عند وجود هذه الحالة أن يتخلص من هذا التكرار بطريقة ما.
</p>

<p>
	لا مشكلة من تكرار نفس الكود مرة واحدة، ولكن عندما تستخدم نفس الكود عدة مرات في مواضع مختلفة من برنامجك فعليك أن تفكر في تعديله، وتجد طريقة ذكية لكتابة الكود مرة واحدة وإعادة استخدامه كلما احتجت له لتكون مطبقًا لهذه القاعدة.
</p>

<p>
	من المنهجيات البرمجية التي تساعدك على تقليل الكود البرمجي المكرر وجعل برامجك سهلة القراءة والصيانة هي استخدام الحلقات التكرارية التي تجنبك تكرار نفس التعليمات البرمجية وتجعل الكود البرمجي أقصر، وأيضًا استخدام الدوال والإجراءات البرمجية، وتعريف المكتبات والوحدات البرمجية التي تغلف شيفراتك البرمجية وتمكنك من إعادة استعمالها كلما أردت.
</p>

<p>
	ستدرك أهمية هذه القاعدة البرمجية إذا احتجت لإجراء تعديل ما في هذا الكود البرمجي المكرر، أو اكتشفت فيه خطأً ما وأردت تصحيحه، عندها سيتوجب عليك إجراء التعديلات في جميع الأماكن التي قمت فيها بإدراج هذا الكود وسيكون الأمر مرهقًا وغالبًا ستنسى ما قد كتبته حقًا، و قد لا تعدله أنت بل يعدله مبرمج آخر قد لا يفطن للتكرار مما يولد أخطاء مستقبلية.
</p>

<p>
	وبالتالي عندما تطور برنامجًا لحل مشكلة ما، وتجد أنك تقوم بالكثير من عمليات النسخ واللصق لنفس الكود لاستخدامه في أكثر من موضع، فابحث عن طريقة أخرى لكتابة هذا الكود، وفكر كيف يمكن أن تتجنب تكرار نفسك.
</p>

<h3>
	ادمج الأجزاء الصغيرة لإنجاز أعمال أكبر
</h3>

<p>
	يعتبر الدمج <strong>Composition</strong> من قواعد البرمجة المهمة، وهو يعني تجزئة المسائل البرمجية إلى مجموعة عناصر أصغر، كل جزء يقوم بمهمة محددة وواضحة، بعدها يتم دمج هذه الأجزاء لتشكيل جزء أكبر وأكثر تعقيدًا ينجز العمل بأكمله.
</p>

<p>
	يمكنك على سبيل المثال تطبيق هذه القاعدة إذا كنت مطور واجهة أمامية وتريد تطوير واجهة تطبيق ما وكتابة الكود البرمجي اللازم لتحقيق تصميم معين، حيث يمكنك تحويل كل عنصر من عناصر التصميم إلى مكون مستقل له الكود الخاص به، ثم تجمع هذه المكونات مع بعضها في النهاية لتحصل على التصميم الكامل.
</p>

<p>
	كما يتم تطبيق هذا المبدأ بشكل واضح في <a href="https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%83%D8%A7%D8%A6%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%88%D8%AC%D9%87-r1375/" rel="">البرمجة كائنية التوجه <abbr title="Object-Oriented Programming | البرمجة كائنية التوجه"><abbr title="Object-Oriented Programming | البرمجة كائنية التوجه">OOP</abbr></abbr></a>، من خلال تعريف صنف Class مستقل لكل جزء أو سلوك محدد من نظامك البرمجي، وجعل هذه الأصناف تتعاون مع بعضها لتنجز العمل المطلوب.
</p>

<p>
	باتباع هذه القاعدة ستوفر على نفسك كتابة أكواد ضخمة ومعقدة وصعبة الفهم. وتركز على برمجة كل مكون ليقوم بشيء واحد فقط، وإذا احتجت لتعديل جزء ما في برامجك فستعدل فقط الأجزاء التي طرأ عليها التعديل بكل سلاسة.
</p>

<p>
	فإذا كانت لديك شيفرة برمجية ضخمة لمكون ما في أحد برامجك تنجز عدة أمور مختلفة في نفس الوقت، فكر إن كان بالإمكان تقسيمها لأجزاء منفصلة أكثر تحديدًا.
</p>

<h3>
	لا تبرمج ما لا تحتاجه
</h3>

<p>
	من أهم قواعد البرمجة التي عليك اتباعها قاعدة <strong>YAGNI</strong> وهي اختصار للعبارة "<strong>You Aren't Gonna Need It</strong>" التي تعني أنت لن تحتاجها! لذا لا تقم ببرمجتها.
</p>

<p>
	فلا ينبغي عليك أن تكتب في برامجك أي أكواد لإنجاز مهام أو وظائف معينة تحل من خلالها مشكلة غير موجودة بالأساس، أو تضيف ميزة لا تحتاجها الآن لكنك تتوقع أنك ستحتاجها في مرحلة لاحقة.
</p>

<p>
	فإذا طلب منك على سبيل المثال كتابة كود برمجي يتحقق من صحة البريد الإلكتروني وكلمة المرور عند تسجيل دخول المستخدمين، فلا داعي لأن تتحقق أيضًا من صحة اسم المستخدم ورقم هاتفه لأنك قد لا تحتاج لهذا أبدًا.
</p>

<p>
	باختصار، كي تطبق هذه القاعدة ركز فقط على كتابة القدر المطلوب من الكود البرمجي الذي يحقق متطلباتك الحالية بالضبط بلا زيادة ولا نقصان، ولا داعي لأن تستشرف المستقبل.
</p>

<h3>
	افصل الأكواد في أجزاء مستقلة
</h3>

<p>
	يطلق على هذه القاعدة اسم فصل الاهتمامات "<strong>Separation of Interests</strong>" وهي من قواعد البرمجة الضرورية، وتؤكد على أهمية تصميم البرنامج ضمن وحدات أو أجزاء فريدة معزولة عن بعضها البعض.
</p>

<p>
	يعتبر أسلوب نموذج وعرض ومتحكم <strong>MVC</strong> من أوضح الأمثلة على تطبيق هذه القاعدة، ففي هذا النموذج يتم تنظيم كود البرامج ضمن ثلاثة أجزاء هي: النموذج <strong>M</strong>odel الذي يتفاعل مع البيانات ويجلبها من قاعدة البيانات، والعرض <strong>V</strong>iew الذي يمثل الواجهة المرئية التي يتفاعل معها المستخدم بشكل مباشر، والمتحكم <strong>C</strong>ontroller الذي يمثل الوسيط بين العرض والنموذج ويربط بينهما.
</p>

<p>
	فالمتحكم يتلقى طلبات المستخدم من العرض أو واجهة المستخدم، ويعالجها، ثم يتصل بالنموذج ويطلب منه جلب ما يريده المستخدم من قاعدة البيانات، ثم يعيد النتيجة مرة أخرى إلى العرض ويظهرها على واجهة المستخدم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="116644" href="https://academy.hsoub.com/uploads/monthly_2023_01/1129716866_-----.png.ed2bc7919b0b1f39479ea69c8253f3c0.png" rel=""><img alt="فصل الاهتمامات من قواعد البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="116644" data-ratio="62.50" data-unique="hmlqtseyn" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_01/1198364413_-----.thumb.png.6dda7310a412a302b5ec724a167af3a7.png"> </a>
</p>

<p>
	عند كتابة برامجك بهذا الأسلوب لن يحتاج الكود البرمجي الذي يتعامل مع قاعدة البيانات إلى معرفة تفاصبل عمل كود عرض البيانات، فكود العرض يحصل على المدخلات من المستخدم، وكود المتحكم يعالج هذه البيانات، وبهذا يكون كل جزء من الكود مستقلًا تمامًا.
</p>

<p>
	إن اتباع هذه القاعدة في البرمجة يمكنك من الحصول على كود برمجي سهل التطوير والصيانة، فإذا احتجت على سبيل المثال إلى إعادة كتابة كود العرض، فيمكنك القيام بذلك أن يتأثر أي شيء في كود حفظ ومعالجة البيانات.
</p>

<p>
	هذا الأسلوب يستخدم في العديد لغات البرمجة وأطر العمل، فمن لغات البرمجة التي تستخدم نموذج MVC لغة C++‎ و‎C# ‎ و Java و Ruby …إلخ. ومن أطر العمل التي تستخدم نموذج MVC إطار العمل <a href="https://academy.hsoub.com/programming/javascript/angular/%D9%85%D8%A7-%D9%87%D9%8A-angular%D8%9F-r1379/" rel="">أنجولر Angular</a> و<a href="https://academy.hsoub.com/programming/python/django/" rel="">جانغو Django</a> و<a href="https://academy.hsoub.com/programming/python/flask/%D8%AA%D8%B9%D9%84%D9%85-%D8%A8%D9%86%D8%A7%D8%A1-%D9%85%D9%88%D9%82%D8%B9%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D9%81%D9%84%D8%A7%D8%B3%D9%83-flask-%D8%A8%D9%84%D8%BA%D8%A9-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r1715/" rel="">فلاسك Flask</a> و<a href="https://academy.hsoub.com/programming/php/laravel/" rel="">لارافيل Laravel</a> …إلخ.‏‏‏‏‏
</p>

<h3>
	اكتب أكوادًا نظيفة
</h3>

<p>
	تعد قاعدة كتابة الأكواد البرمجية النظيفة والمفهومة وسهلة الصيانة مهارة ضرورية على كل مبرمج إتقانها، ويشير مصطلح الكود النظيف <strong>Clean Code</strong> ببساطة إلى الكود سهل القراءة والفهم من قبل المبرمجين الآخرين، وعادةً عندما تتبع كافة قواعد البرمجة التي وردت أعلاه ستحصل بالنتيجة على كود نظيف بصورة تلقائية.
</p>

<p>
	احرص كذلك على تنظيف أكوادك من كافة التعليمات لن تستخدم عند تنفيذ البرنامج، واحذف المتغيرات التي صرحت عنها لكنك لم تستخدمها، والدوال البرمجية التي عرفتها لكنها لم تنادها على الإطلاق، والأصناف التي لم تشتق منها أي كائنات برمجية، وكذلك الأكواد التي كتبتها ثم حولتها إلى تعليقات ضمن الكود لإبطال عملها …إلخ. فهذه كلها أكواد ميّتة وأنت لا تريد أن تجعل برنامجك مقبرة!
</p>

<p>
	وكي تعرف بسهولة إن كان الكود الذي تكتبه نظيفًا، اعرضه على مبرمج آخر لم يسبق له أن اطلع عليه واطلب منه تعديل أمر ما فيه، فإذا تمكن المبرمج من فهم الغرض من التعليمات البرمجية الخاصة بك، وعدلها وأضاف أكواده الخاصة عليها بسهولة ومرونة، فهذا يعني أن كتبت بالفعل كودًا نظيفًا.
</p>

<p>
	وتذكر أن كتابة الكود النظيف ليس مهارة يمكن اكتسابها بين عشيّة وضحاها بل هو ميزة يتم تطويرها بالممارسة والتدرب على تطبيق كافة هذه القواعد كلما قمت بكتابة كود برمجي ما حتى تكتسب الخبرة المطلوبة.
</p>

<h2>
	ملخص لأهم قواعد البرمجة التي ينبغي للمبرمج اتباعها
</h2>

<p>
	نعرض ما يلي ملخص قواعد البرمجة التي ذكرناها ليسهل عليك تذكرها وحفظها:
</p>

<ol>
	<li>
		احرص على كتابة كود سهل القراءة والفهم مع إضافة التعليقات التوضيحية إن لزم فهي ضرورية لتوثيق وتسهيل فهم الكود وصيانته عند العودة له لاحقًا.
	</li>
	<li>
		اكتب أكوادًا بسيطة ومباشرة والمقصود هنا أن تصمم برامجك ببساطة، وتحذف أي ميزة لا تحتاجها، فالأنظمة البرمجية تعمل بشكل أفضل وتكون أسهل في الصيانة كلما كانت أبسط.
	</li>
	<li>
		افصل الأكواد في أجزاء معزولة بحيث يكون كل جزء مسؤولًا على إنجاز مهمة محددة.
	</li>
	<li>
		لا تكرر نفسك ولا تنسخ وتلصق نفس الكود في أكثر من موضع، بل اكتبه مرة وأعد استخدامه كلما دعت الحاجة.
	</li>
	<li>
		لا تضف ما لن تحتاجه كي لا تهدر وقتك ومالك على أشياء لمجرد أنك تتوقع أنك ستحتاجها لاحقًا، فقد لا تحتاجها أبدًا.
	</li>
	<li>
		اكتب كودًا نظيفًا غير مكرر أو معقد، وهو ما ستحصل عليه إذا اتبعت كل القواعد السابقة.
	</li>
</ol>

<h2>
	ماذا سيحصل لو لم أتبع قواعد البرمجة؟
</h2>

<p>
	عندما تبدأ <a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a> ستكون سعيدًا عندما يعمل أي برنامج بالشكل الصحيح، وقد لا تعير اهتمامًا لمدى أهمية اتباع قواعد البرمجة، لكن يجب أن تضع في الحسبان أنك إذا لم تعتد على اتباع القواعد الصحيحة في كتابة أكوادك البرمجية، فإن هذا سينعكس سلبًا على أداء برامجك على المدى البعيد.
</p>

<p>
	في تلك الحالة قد تحصل على كود سيء وفوضوي وغير مفهوم، وصحيح أن برنامجك يعمل، لكنه سيكون مكتظَا بالأكواد البرمجية المكررة، أو الوظائف غير المستخدمة، أو المتغيرات التي لا فائدة من وجودها، وبرنامج كهذا قد يتعطل أو يفشل بعد أول تعديل أو تطوير مطلوب.
</p>

<p>
	فتعلم هذه القواعد وتطبيقها من شأنه أن يحسِّن من خبرتك ويطور أسلوب كتابة شيفراتك البرمجية، وأغلب أصحاب الأعمال سيطلعون على عينة من كود كتبته سابقًا وسيفضلون مبرمجًا محترفًا يتبع هذه القواعد عمن لا يتبعها.
</p>

<p>
	وتذكر أن البرمجة لا تقتصر على كتابة تعليمات برمجية تعمل فحسب، بل هي كتابة تعليمات برمجية فعالة ذات جودة عالية ويمكن صيانتها وتعديلها بكل مرونة سواء من قبلك أو من قبل أي مبرمج آخر، لذا احرص على اتباع هذه القواعد البرمجية والتدرب على تطبيقها قدر المستطاع لأنها سبيلك لتكون مبرمجًا ناجحًا ومتميزًا.
</p>

<h2>
	ماذا بعد تعلم قواعد البرمجة؟
</h2>

<p>
	بعد أن تتقن أساسيات البرمجة وتتعلم تطبيق قواعد البرمجة قد تتساءل: كيف يمكنني المضي قدمًا وتطوير مهاراتي البرمجية بصورة أكبر؟ سؤال جيد، سأجيبك!
</p>

<p>
	من الأمور التي ينبغي عليك تعلمها في رحلتك لاحتراف البرمجة مهارات إعادة التصميم لمشاريعك الحالية، والتعرف على مفهوم أنماط التصميم وتطبيقها لحل المشكلات التقنية التي تواجهك مستقبلًا.
</p>

<p>
	يشير مفهوم <a href="https://wiki.hsoub.com/Refactoring" rel="external">إعادة التصميم "Refactoring"</a> إلى الخطوات التي ينبغي للمبرمج اتباعها لتعديل الشيفرات البرمجية وإعادة هيكلتها وتحسينها والعثور على أي أخطاء أو ثغرات كامنة فيها، مع المحافظة على وظائفها الأساسية.
</p>

<p>
	أما <a href="https://wiki.hsoub.com/Design_Patterns/what_is_pattern" rel="external">أنماط التصميم "Design Patterns"</a>، فهي عبارة عن نماذج يضعها المطورون لحل المشكلات المتكررة والمتشابهة، وستكتسب من خلال تعلمها القدرة على إعادة استخدام نفس الأنماط في كل مرة تظهر فيها نفس المشكلة، ويمكنك اعتبارها بمثابة فكرة مجردة توضح طريقة حل المشكلة وتسهل عليك تحقيقها برمجيًا.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على أهم قواعد البرمجة التي على المبرمج اتباعها، فلا ينبغي أن تتعلم أساسيات البرمجة فقط، بل عليك أن تتقدم خطوة للأمام وتحرص على اتباع أفضل الممارسات البرمجية عند كتابة الكود كي يكون المنتج الرقمي الذي تنشؤه أكثر كفاءة وموثوقية واحترافية.
</p>

<p>
	وتذكر أنه يمكن للجميع كتابة كود برمجي يفهمه الحاسوب لكن القليلين فقط يمكنهم كتابة كود جيد يفهمه الإنسان أيضًا، ومن خلال حرصك على اتباع قواعد البرمجة التي شرحناها تضمن أن تكون من هذه الفئة القليلة من المبرمجين المحترفين، كل ما تحتاجه هو التدريب الجيد على كتابة الأكواد والبرامج بصورة محسنة تراعي هذه القواعد بأفضل طريقة.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تعلم تطوير الويب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">دليلك الشامل إلى لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D9%87%D9%84-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">أسهل لغات البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%81%D9%88%D8%A7%D8%A6%D8%AF-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">ما هي فوائد تعلم البرمجة؟</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1870</guid><pubDate>Sun, 15 Jan 2023 15:04:00 +0000</pubDate></item></channel></rss>
