<?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/5/?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>&#x62A;&#x639;&#x644;&#x645; &#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_01/1235328947_-.png.8fd2aa4f9276c965051b294be2609f04.png" /></p>
<p>
	لا يختلف اثنان على أهمية تعلم أساسيات البرمجة، فالبرمجة هي مهنة الحاضر والمستقبل، وهي تعتبر أحد المهارات الأساسية في عصرنا الذي بات يعتمد على التقانة في جميع جوانبه، فضلًا عن أن البرمجة قد أصبحت مادة أساسية في المناهج الدراسية في العديد من الدول بدءًا من المراحل الابتدائية.
</p>

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

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

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

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

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

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

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

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

<p>
	وبالتالي السؤال الذي يجب أن تطرحه قبل أن تقرر تعلم أي لغة برمجة هو ما هو هدفي النهائي من <a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a>؟ وبناء على إجابتك تحدد مسار التعلم الصحيح واللغات والأدوات التي عليك تعلمها.
</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>

<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>
	بنفس الطريقة ستتعلم البرمجة، حيث عليك أن تتعلم بداية أساسيات البرمجة النظرية، ثم تكتب برامج باستخدام تعليمات بسيطة، ثم تتعلم كيف تكتب التعليمات بطريقة أكثر احترافية، ومع الممارسة والتطبيق ستتمكن من احتراف البرمجة وتطوير برامج متقدمة.
</p>

<p>
	وقد شرح مقال <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> رحلة تعلم البرمجة بالتفصيل وقدم نصائح مهمة وأجاب على أسئلة شائعة حول تعلم البرمجة فارجع إليه للاستزدادة في هذا الموضوع.
</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>

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

<ul>
	<li>
		محرر الشيفرة البرمجية
	</li>
	<li>
		أداة تحويل الشيفرة وتنفيذها
	</li>
</ul>

<h3>
	محرر الشيفرة البرمجية
</h3>

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

<p>
	<strong>ملاحظة</strong>: بعض لغات البرمجة الموجهة للمبتدئين تعتمد على واجهات رسومية ولا تحتاج لمحررات نصية مثل لغة سكراتش والتي تدعى أحيانًا لغات برمجة رسومية، وللمزيد يمكنك الرجوع إلى مقال <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>

<h3>
	أداة تحويل الشيفرة وتنفيذها
</h3>

<p>
	نكتب الكود المصدري عادة بلغة برمجة لا يفهمها جهاز الحاسوب مباشرة كما أشرنا، لذا يجب تثبيت برنامجًا يُحوِّل الشيفرة المصدرية للغة البرمجة بأكملها إلى لغة آلة Machine Code يفهمها الحاسوب ثم ينفذها، ويختلف هذا المُحول من لغة برمجة إلى أخرى ويُسمى إما مُصرِّف Compiler أو مُفسِّر Interpreter وبعض اللغات تحتاج إلى تصريف وآخر إلى تفسير وبعضها يحتاج إلى كلا العمليتين لتحويلها إلى لغة الآلة ثم تنفيذها.
</p>

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

<h3>
	بيئة التطوير المتكاملة IDE
</h3>

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

<p>
	أمثلة على بيئات تطوير متكاملة:
</p>

<ul>
	<li>
		Microsoft Visual Studio
	</li>
	<li>
		NetBeans
	</li>
	<li>
		IntelliJ IDEA
	</li>
</ul>

<p>
	يمكنك في بيئة التطوير المتكاملة كتابة التعليمات البرمجية وتعديلها وتصحيحها وتحويلها ثم تنفيذها بسرعة وسهولة كل ذلك من مكان واحد، إذ توفر لك كافة الأدوات اللازمة لتكتب وتنفذ برامج بلغة معينة، كما توفر ميزات تساعدك في تطوير البرامج مثل تصحيح الأخطاء البرمجية، والإكمال التلقائي للتعليمات، وللتعرف أكثر على بيئة التطوير المتكاملة، يمكنك الرجوع إلى مقال <a href="https://academy.hsoub.com/programming/workflow/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D9%8A%D8%A6%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%AA%D9%83%D8%A7%D9%85%D9%84%D8%A9-ide-r1513/" rel="">مدخل إلى بيئة التطوير المتكاملة IDE</a>.
</p>

<p>
	<strong>ملاحظة</strong>: يمكنك الاعتماد على مترجمات أو بيئات عمل برمجية متوفرة على الإنترنت، حيث توفر العديد من المنصات إمكانية كتابة وتنفيذ البرامج على متصفح الويب بدلًا من تثبيت وإعداد البرامج على الحاسوب المحلي.
</p>

<h2>
	أساسيات البرمجة للمبتدئين
</h2>

<p>
	تتنوع لغات البرمجة وتعدد استخداماتها إلا أنها تشترك في مجموعة من الأساسيات والمفاهيم، وتعلم هذه المفاهيم يمكّنك من التآلف من أي لغة برمجة، وإنجاز البرامج باستخدامها بمرونة أكبر، وأهم هذه الأساسيات:
</p>

<ul>
	<li>
		المتغيرات Variables
	</li>
	<li>
		الثوابت Constants
	</li>
	<li>
		أنواع البيانات Data types
	</li>
	<li>
		الكلمات المفتاحية Keywords
	</li>
	<li>
		التعليقات Comments
	</li>
	<li>
		بنى التحكم Control Structures
	</li>
	<li>
		الدوال Functions
	</li>
	<li>
		هياكل البيانات Data structure
	</li>
	<li>
		التكرار Iteration
	</li>
	<li>
		التعاود Recursion
	</li>
	<li>
		الكائنات Objects والأصناف Classes
	</li>
	<li>
		الوحدات Modules والمكتبات Libraries
	</li>
</ul>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="116547" href="https://academy.hsoub.com/uploads/monthly_2023_01/1904937601_--.png.5eb9d65fb7348cf74f2893e1ee6a4aea.png" rel=""><img alt="تعلم أساسيات البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="116547" data-ratio="100.00" data-unique="jcfblyyig" style="width: 600px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_01/1719052418_--.thumb.png.48939055ee7b8df8f6577f82ac2db3dd.png"> </a>
</p>

<h3>
	المتغيرات
</h3>

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

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

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

<p>
	لتعريف متغير في لغة البرمجة C++‎ عليك ذكر اسم المتغير ونوع البيانات التي تريد تخزينها في هذا المتغير وإسناد قيمة أولية فيه، على سبيل المثال لتعريف متغير باسم a لتخزين العدد الصحيح 10 بداخله نكتب ما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_8" style=""><span class="typ">int</span><span class="pln"> a </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span></pre>

<p>
	كما يمكنك تعريف المتغير دون إسناد القيمة له في البداية وإسنادها لاحقًا بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_10" style=""><span class="typ">int</span><span class="pln"> a</span><span class="pun">;</span><span class="pln">
a </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span></pre>

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

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_14" style=""><span class="pln">a </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span></pre>

<h3>
	الثوابت
</h3>

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

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

<p>
	لتعريف الثوابت في لغة C++‎ نستخدم الكلمة المفتاحية <code>const</code> ثم نكتب نوع البيانات واسم الثابت وقيمته كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_17" style=""><span class="kwd">const</span><span class="pln"> </span><span class="typ">float</span><span class="pln"> PI </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3.14</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">float</span><span class="pln"> GRAVITY </span><span class="pun">=</span><span class="pln"> </span><span class="lit">9.8</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">float</span><span class="pln"> SUCC_RATE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.5</span><span class="pun">;</span></pre>

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

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_19" style=""><span class="pln">PI </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3.14</span><span class="pln">
GRAVITY </span><span class="pun">=</span><span class="pln"> </span><span class="lit">9.8</span></pre>

<p>
	<strong>ملاحظة</strong>: يشيع في أوساط المبرمجين تسمية الثوابت بحروف أجنبية كبيرة لتمييزها عن المتغيرات كما فعلنا في الأمثلة السابقة.
</p>

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

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

<p>
	توفر لغات البرمجة العديد من أنواع البيانات مثل: الأعداد التي تنقسم إلى أعداد صحيحة integer numbers وأعداد عشرية floating point numbers، والمحارف Characters، والسلاسل النصية Strings، والقيم المنطقية Boolean …إلخ.
</p>

<p>
	على سبيل المثال في لغة البرمجة C++"‎" إذا كنت تحتاج في برنامجك إلى تخزين العمر، ستحتاج لمتغير من نوع بيانات عدد صحيح، ويمكنك تعريف هذا المتغير أو التصريح عنه باستعمال الكلمة المفتاحية <code>int</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_21" style=""><span class="typ">int</span><span class="pln"> age</span><span class="pun">;</span></pre>

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

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

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_23" style=""><span class="typ">float</span><span class="pln"> avg</span><span class="pun">;</span></pre>

<p>
	ولتعريف متغير مخصص لتخزين محارف مفردة يمكنك أن تستخدم نوع البيانات <code>char</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_25" style=""><span class="kwd">char</span><span class="pln"> x</span><span class="pun">;</span><span class="pln">
x </span><span class="pun">=</span><span class="pln"> </span><span class="str">'A'</span><span class="pun">;</span></pre>

<p>
	أما لتخزين السلاسل النصية المكونة من عدة محارف فاستخدم نوع البيانات <code>string</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_27" style=""><span class="pln">string str </span><span class="pun">=</span><span class="pln"> </span><span class="str">"This is a C++ string"</span><span class="pun">;</span></pre>

<p>
	ولتخزين القيم المنطقية التي يمكنها أن تحتوي القيمة صواب <code>true</code> أو خطأ <code>false</code> والتي تفيد في اختبار الشروط، استخدم نوع البيانات <code>bool</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_29" style=""><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> con1 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
 </span><span class="kwd">bool</span><span class="pln"> con1 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span></pre>

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

<p>
	إليك بعض الأمثلة على تعريف متغيرات من أنواع بيانات مختلفة في بايثون:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_31" style=""><span class="pln">v1 </span><span class="pun">=</span><span class="pln"> </span><span class="str">"This is a Python string"</span><span class="pln"> </span><span class="com">#string </span><span class="pln">
v2 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pln"> </span><span class="com">#int</span><span class="pln">
v3 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10.33</span><span class="pln"> </span><span class="com">#float</span><span class="pln">
v4 </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">True</span><span class="pln">  </span><span class="com">#bool</span></pre>

<p>
	لمزيد من المعلومات حول أنواع البيانات في لغات البرمجة، اطلع على مقال <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>.
</p>

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

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

<p>
	ولعلك انتبهت إلى قولنا كلمة مفتاحية على <code>const</code> وعلى <code>int</code> في الأمثلة السابقة في لغة C++‎ التي كانت كلمات محجوزة مخصصة لتعريف الثوابت البرمجية وأنواع البيانات، كما تعد الكلمتان <code>True</code> و <code>False</code> محجوزتين في بايثون لتمثيل القيمتين المنطقيتين صواب وخطأ على التوالي وقس على ذلك في أي لغة برمجة.
</p>

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

<h3>
	التعليقات
</h3>

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

<p>
	تستخدم لغات البرمجة المختلفة أساليب مختلفة لكتابة التعليقات تنحصر عادة بالرموز الثلاثة <code>#</code> أو <code>//</code> أو <code>/* */</code>، على سبيل المثال في لغة C++‎ يمكنك كتابة التعليقات على سطر واحد بعد الرمز <code>//</code> وكتابة التعليقات متعددة الأسطر بين الرمزين <code>/* */</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_33" style=""><span class="com">/* هذا تعليق مكون
من عدة أسطر */</span><span class="pln">
</span><span class="com">//هذا تعليق مكون من سطر واحد</span></pre>

<p>
	أما في لغة بايثون فيمكنك كتابة التعليق أحادي السطر بعد الرمز <code>#</code> وكتابة التعليقات متعددة الأسطر بعد علامتي اقتباس أو ثلاث علامات اقتباس مفردة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_35" style=""><span class="str">''' هذا تعليق مكون
من عدة أسطر '''</span><span class="pln">
</span><span class="com">#هذا تعليق مكون من سطر واحد</span></pre>

<h3>
	بنى التحكم
</h3>

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

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

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

<h4>
	البنى الشرطية
</h4>

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

<p>
	على سبيل المثال يقوم البرنامج التالي بلغة C++‎ بقسمة عددين عشريين ويختبر شرط القسمة على صفر:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_37" style=""><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;iostream&gt;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="kwd">namespace</span><span class="pln"> std</span><span class="pun">;</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">
    </span><span class="typ">float</span><span class="pln"> num1</span><span class="pun">,</span><span class="pln"> num2</span><span class="pun">,</span><span class="pln"> result</span><span class="pun">;</span><span class="pln">
    num1</span><span class="pun">=</span><span class="lit">18</span><span class="pun">;</span><span class="pln">
    num2</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">num2 </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
        cout </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"خطأ رياضي أنت تحاول القسمة على صفر"</span><span class="pun">&lt;&lt;</span><span class="pln">endl</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln"> 
        </span><span class="kwd">else</span><span class="pln">
        </span><span class="pun">{</span><span class="pln"> 
            result</span><span class="pun">=</span><span class="pln">num1</span><span class="pun">/</span><span class="pln">num2</span><span class="pun">;</span><span class="pln">
            cout </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"The result is "</span><span class="pun">&lt;&lt;</span><span class="pln"> result </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln">
        </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>
	تختبر التعليمة الشرطية <code>if</code> في الكود أعلاه إن كان المقسوم عليه <code>num2</code> مساويًا للصفر (الذي يمكن أن يأتي من مواضع مختلفة مثل الطلب من المستخدم تزويدنا بقيمته)، وفي هذه الحالة تعرض العبارة "خطأ رياضي أنت تحاول القسمة على صفر" ولا تنفذ عملية القسمة <code>num1/num2</code>.
</p>

<p>
	الكود التالي كود مكافئ للكود السابق لكنه مكتوب بلغة بايثون:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_39" style=""><span class="pln">num1 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">18</span><span class="pln">
num2 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> num2 </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</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">
</span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
    result </span><span class="pun">=</span><span class="pln"> num1</span><span class="pun">/</span><span class="pln">num2
    </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">result</span><span class="pun">)</span></pre>

<p>
	الأمثلة أعلاه كانت لشروط بسيطة، وستجد في لغات البرمجة أنواعًا عديدة من التعليمات الشرطية مثل if-else التي تمكنك من اختبار الشرط وعكسه، وتعليمة if المتداخلة التي تتضمن شرطًا فرعيًا داخل شرط رئيسي، وتعليمة <code>switch</code> التي تختبر شروط معتمدة على قيمة واحدة. كما ستتمكن من اختبار شروط مركبة من خلال المعاملات المنطقية مثل and و or و not.
</p>

<h4>
	البنى التكرارية
</h4>

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

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

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

<ul>
	<li>
		حلقة <code>for</code> بلغة C++‎:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_41" style=""><span class="typ">int</span><span class="pln"> num</span><span class="pun">=</span><span class="lit">5</span><span class="pun">;</span><span class="pln"> 
</span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">11</span><span class="pln"> </span><span class="pun">;</span><span class="pln">i</span><span class="pun">++)</span><span class="pln">
  cout </span><span class="pun">&lt;&lt;</span><span class="pln"> num </span><span class="pun">&lt;&lt;</span><span class="str">"X"</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> i </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"="</span><span class="pun">&lt;&lt;</span><span class="pln"> num</span><span class="pun">*</span><span class="pln">i </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"\n"</span><span class="pun">;</span></pre>

<ul>
	<li>
		حلقة for بلغة بايثون:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_43" style=""><span class="pln">num </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pln">
</span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10</span><span class="pun">):</span><span class="pln">
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">num</span><span class="pun">,</span><span class="pln"> </span><span class="str">'x'</span><span class="pun">,</span><span class="pln"> i</span><span class="pun">,</span><span class="pln"> </span><span class="str">'='</span><span class="pun">,</span><span class="pln"> num</span><span class="pun">*</span><span class="pln">i</span><span class="pun">)</span></pre>

<h3>
	الدوال
</h3>

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

<p>
	تُكتب الدالة أو تعرّف مرة واحدة وتصبح بعدها قابلة لإعادة الاستخدام، حيث يمكن للمبرمج استدعاء أو مناداة الدالة في أي موضع في البرنامج مع تمرير قيم بيانات لها أو بدون، على سبيل المثال في حال أردت كتابة كود برمجي يعرض ناتج الضرب لعدد ما في الأعداد من 1 إلى 10 يمكنك تحويل الكود إلى دالة باسم displayMul وسيطها هو العدد المراد ضربه كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_45" style=""><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;iostream&gt;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="kwd">namespace</span><span class="pln"> std</span><span class="pun">;</span><span class="pln">

</span><span class="com">// تعريف دالة لحساب نانج ضرب أي عدد في الأعداد من واحد لعشرة</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> displayMul</span><span class="pun">(</span><span class="typ">int</span><span class="pln"> num</span><span class="pun">){</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">11</span><span class="pln"> </span><span class="pun">;</span><span class="pln">i</span><span class="pun">++)</span><span class="pln"> 
      cout </span><span class="pun">&lt;&lt;</span><span class="pln"> num </span><span class="pun">&lt;&lt;</span><span class="str">"X"</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> i </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"="</span><span class="pun">&lt;&lt;</span><span class="pln"> num</span><span class="pun">*</span><span class="pln">i </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"\n"</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//استدعاء الدالة في البرنامج الرئيسي</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">
  </span><span class="typ">int</span><span class="pln"> num1 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pun">;</span><span class="pln"> 
  displayMul</span><span class="pun">(</span><span class="pln">num1</span><span class="pun">);</span><span class="pln">
  </span><span class="typ">int</span><span class="pln"> num2 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">9</span><span class="pun">;</span><span class="pln">
  displayMul</span><span class="pun">(</span><span class="pln">num2</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>
	عرفنا الدالة <code>displayMul</code> في المثال السابق بلغة C++‎ بكتابة نوع البيانات الذي تعيده الدالة وهو <code>void</code> أي لا شيء لأن الدالة تطبع القيمة ولا تعيد شيئًا، ثم اسمها ثم المعاملات الخاصة بها بين قوسين <code>()</code>، ثم كتبنا التعليمات التي تقوم بها بين قوسين <code>{ }</code>، ولاحظ أن الدالة لا تعيد شيئًا فلا يُشترط أن تأخذ أو تعيد شيئًا بل المهم أن تُنفِّذ عمليةً ما منوطة بها عند استدعائها.
</p>

<p>
	إليك أيضًا تعريف الدالة <code>displayMul</code> السابقة نفسها ولكن بلغة بايثون:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_47" style=""><span class="kwd">def</span><span class="pln"> displayMul</span><span class="pun">(</span><span class="pln">num</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> i </span><span class="kwd">in</span><span class="pln"> range</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10</span><span class="pun">):</span><span class="pln">
        </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">num</span><span class="pun">,</span><span class="pln"> </span><span class="str">'x'</span><span class="pun">,</span><span class="pln"> i</span><span class="pun">,</span><span class="pln"> </span><span class="str">'='</span><span class="pun">,</span><span class="pln"> num</span><span class="pun">*</span><span class="pln">i</span><span class="pun">)</span><span class="pln">

num </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pln">
displayMul</span><span class="pun">(</span><span class="pln">num</span><span class="pun">)</span><span class="pln">
displayMul</span><span class="pun">(</span><span class="lit">9</span><span class="pun">)</span></pre>

<p>
	<strong>ملاحظة</strong>: لا يمكنك استدعاء أو مناداة دالة في برنامجك إذا لم تقم بتعريفها أولًا، لأنك تحاول استخدام شيء غير موجود، لكن بعض الدوال تكون مضمنة ومعرفة مسبقًا في اللغة Built-in functions، ويمكنك استخدام هذه الدوال فورًا دون الحاجة لتعريفها بنفسك، على سبيل المثال الدالة "getline()‎"هي دالة جاهزة معرفة في لغة C++‎ تستخدم لإدخال السلاسل النصية من لوحة المفاتيح، والدالة <code>print()‎</code> هي دالة جاهزة في لغة بايثون تستخدم لطباعة قيم المتغيرات على الشاشة.
</p>

<h3>
	هياكل البيانات
</h3>

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

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

<ul>
	<li>
		في لغة C++‎:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_49" style=""><span class="typ">int</span><span class="pln"> marks</span><span class="pun">[</span><span class="lit">5</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="lit">50</span><span class="pun">,</span><span class="lit">99</span><span class="pun">,</span><span class="lit">78</span><span class="pun">,</span><span class="lit">66</span><span class="pun">,</span><span class="lit">59</span><span class="pun">};</span></pre>

<ul>
	<li>
		في لغة بايثون:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_51" style=""><span class="pln">marks</span><span class="pun">=[</span><span class="lit">50</span><span class="pun">,</span><span class="lit">99</span><span class="pun">,</span><span class="lit">78</span><span class="pun">,</span><span class="lit">66</span><span class="pun">,</span><span class="lit">59</span><span class="pun">]</span></pre>

<p>
	<strong>ملاحظة</strong>: قد تختلف أسماء هياكل البيانات من لغة برمجة إلى أخرى ففي لغة بايثون لا يُطلق عليها اسم مصفوفة array كما في لغة C++‎ بل اسم قائمة list حيث تختلف التسميات والمعنى واحد.
</p>

<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> لمزيد من التفاصيل.
</p>

<h3>
	التكرار
</h3>

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

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

<p>
	على سبيل المثال للمرور عبر عناصر المصفوفة <code>marks</code> التي عرفناها في الفقرة السابقة وطباعتها في لغة C++‎ يمكن أن نكتب حلقة <code>for</code> مع استخدام متغير <code>i</code> يمثل تعدادًا نستخدمه كفهرس للوصول إلى كل عنصر من عناصر المصفوفة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_53" style=""><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;iostream&gt;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="kwd">namespace</span><span class="pln"> std</span><span class="pun">;</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">
    </span><span class="typ">int</span><span class="pln"> marks</span><span class="pun">[</span><span class="lit">5</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="lit">50</span><span class="pun">,</span><span class="lit">99</span><span class="pun">,</span><span class="lit">78</span><span class="pun">,</span><span class="lit">66</span><span class="pun">,</span><span class="lit">59</span><span class="pun">};</span><span class="pln">
    cout </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"The marks are:"</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">5</span><span class="pun">;</span><span class="pln"> </span><span class="pun">++</span><span class="pln">i</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        cout </span><span class="pun">&lt;&lt;</span><span class="pln"> marks</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
 </span><span class="pun">}</span></pre>

<p>
	أما في لغة بايثون يمكنك المرور عبر عناصر المصفوفة وطباعتها كما يلي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_55" style=""><span class="pln">marks</span><span class="pun">=[</span><span class="lit">50</span><span class="pun">,</span><span class="lit">99</span><span class="pun">,</span><span class="lit">78</span><span class="pun">,</span><span class="lit">66</span><span class="pun">,</span><span class="lit">59</span><span class="pun">]</span><span class="pln">
</span><span class="kwd">for</span><span class="pln"> m </span><span class="kwd">in</span><span class="pln"> marks</span><span class="pun">:</span><span class="pln">
    </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">m</span><span class="pun">)</span></pre>

<h3>
	التعاود
</h3>

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

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

<p>
	على سبيل المثال مسألة حساب عاملي أو مضروب عدد ما "n!‎" هي أشهر مسألة تعاودية بطبيعتها، فكما تعرف مضروب العدد 0 هو قيمة معروفة تساوي 1، وبالتالي يمكن اعتبار n=0 هو الحالة الحدية التي يمكن من خلالها حل مسألة المضروب لأي عدد بناء على القاعدة التالية:
</p>

<pre class="ipsCode">n! = n * (n - 1)
</pre>

<p>
	عندما تبلغ قيمة العدد n=0 فسوف يعيد القيمة 1 للدالة وينتهي الاستدعاء المتكرر أو التعاودي لها.
</p>

<p>
	إليك مثال على إيجاد مضروب أو عاملي العدد n:
</p>

<ul>
	<li>
		بلغة C++‎:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_58" style=""><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;iostream&gt;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="kwd">namespace</span><span class="pln"> std</span><span class="pun">;</span><span class="pln">
</span><span class="typ">int</span><span class="pln"> factorial</span><span class="pun">(</span><span class="typ">int</span><span class="pln"> n</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">n </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </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><span class="pln">
    </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">n </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> factorial</span><span class="pun">(</span><span class="pln">n </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> n</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="com">// استدعاء الدالة في البرنامج الرئيسي</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">
    cout</span><span class="pun">&lt;&lt;</span><span class="pln"> factorial</span><span class="pun">(</span><span class="lit">4</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
	<li>
		بلغة بايثون:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_60" style=""><span class="kwd">def</span><span class="pln"> factorial</span><span class="pun">(</span><span class="pln">n</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> n </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">0</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="pln">
    </span><span class="kwd">elif</span><span class="pln"> n </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
    </span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> n </span><span class="pun">*</span><span class="pln"> factorial</span><span class="pun">(</span><span class="pln">n</span><span class="pun">-</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">factorial</span><span class="pun">(</span><span class="lit">4</span><span class="pun">))</span></pre>

<p>
	المخطط التالي يوضح طريقة استدعاء الدالة التعاودية وإعادتها للقيمة عند وصولها للحالة الحدية
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="116545" href="https://academy.hsoub.com/uploads/monthly_2023_01/544123575_----.png.964ee2f4a5c549267db4d56cb1e7affe.png" rel=""><img alt="مفهوم التعاود في أساسيات البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="116545" data-ratio="69.33" data-unique="3pdzintpj" style="width: 600px; height: auto;" width="866" src="https://academy.hsoub.com/uploads/monthly_2023_01/358247440_----.thumb.png.fa30dfb6aa4de7aa0ff0618f8d029e64.png"> </a>
</p>

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

<h3>
	الكائنات والأصناف
</h3>

<p>
	تعتبر الكائنات Objects والأصناف Classes أحد أساسيات <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> حيث أن الكائنات تعتبر وحدات تتضمن مجموعة من المتغيرات ومجموعة الدوال البرمجية.
</p>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="116546" href="https://academy.hsoub.com/uploads/monthly_2023_01/432925279_----oop.png.d6484e037cee23237c6f4a189b2d74f1.png" rel=""><img alt="مفهوم-البرمجة-كائنية-التوجه-oop.png" class="ipsImage ipsImage_thumbnailed" data-fileid="116546" data-ratio="56.33" data-unique="y5r0n26xo" style="width: 800px; height: auto;" width="600" src="https://academy.hsoub.com/uploads/monthly_2023_01/262470231_----oop.thumb.png.9981b23d83af7a58e4c644a952e03b85.png"> </a>
</p>

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

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

<p>
	المثال التالي يعرف صنف يمثل دائرة بلغة البرمجة C++‎ ويشتق نسختين أو كائنين مختلفين من هذا الصنف لكل كائن نصف قطر مختلف:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_2077_69" style=""><span class="com">#include</span><span class="str">&lt;iostream&gt;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="kwd">namespace</span><span class="pln"> std</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Circle</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> </span><span class="typ">float</span><span class="pln"> PI </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3.14</span><span class="pun">;</span><span class="pln">
    </span><span class="com">// data members</span><span class="pln">
    </span><span class="typ">float</span><span class="pln"> radius</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">public</span><span class="pun">:</span><span class="pln">
    </span><span class="com">// contractor</span><span class="pln">
    </span><span class="typ">Circle</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> radius</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">this</span><span class="pun">-&gt;</span><span class="pln">radius </span><span class="pun">=</span><span class="pln"> radius</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

</span><span class="com">// member function</span><span class="pln">
    </span><span class="typ">float</span><span class="pln"> </span><span class="typ">Area</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> radius</span><span class="pun">*</span><span class="pln">radius</span><span class="pun">*</span><span class="pln">PI</span><span class="pun">;</span><span class="pln">
   </span><span class="pun">}</span><span class="pln">
    </span><span class="typ">float</span><span class="pln"> </span><span class="typ">Perimeter</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">2</span><span class="pun">*</span><span class="pln">radius</span><span class="pun">*</span><span class="pln">PI</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="typ">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">Circle</span><span class="pln"> circle1</span><span class="pun">(</span><span class="lit">3</span><span class="pun">);</span><span class="pln">
    cout </span><span class="pun">&lt;&lt;</span><span class="pln"> circle1</span><span class="pun">.</span><span class="typ">Area</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln">
    cout </span><span class="pun">&lt;&lt;</span><span class="pln"> circle1</span><span class="pun">.</span><span class="typ">Perimeter</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln">

    </span><span class="typ">Circle</span><span class="pln"> circle2</span><span class="pun">(</span><span class="lit">4</span><span class="pun">);</span><span class="pln">
    cout </span><span class="pun">&lt;&lt;</span><span class="pln"> circle2</span><span class="pun">.</span><span class="typ">Area</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln">
    cout </span><span class="pun">&lt;&lt;</span><span class="pln"> circle2</span><span class="pun">.</span><span class="typ">Perimeter</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</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>
	والمثال المكافئ التالي بلغة بايثون يعرف صنف دائرة ويشتق كائنين منه:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_71" style=""><span class="com">#تعريف صنف يمثل دائرة </span><span class="pln">
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Circle</span><span class="pun">():</span><span class="pln">
    </span><span class="kwd">def</span><span class="pln"> __init__</span><span class="pun">(</span><span class="pln">self</span><span class="pun">,</span><span class="pln"> radius</span><span class="pun">):</span><span class="pln">
        self</span><span class="pun">.</span><span class="pln">radius </span><span class="pun">=</span><span class="pln"> radius
        </span><span class="kwd">def</span><span class="pln"> get_area</span><span class="pun">(</span><span class="pln">self</span><span class="pun">):</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">self</span><span class="pun">.</span><span class="pln">radius </span><span class="pun">**</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> pi
        </span><span class="kwd">def</span><span class="pln"> get_perimeter</span><span class="pun">(</span><span class="pln">self</span><span class="pun">):</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> self</span><span class="pun">.</span><span class="pln">radius </span><span class="pun">*</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> pi

</span><span class="com"># إنشاء كائنات من الصنف Circle   </span><span class="pln">
pi </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3.14</span><span class="pln">
circle1 </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Circle</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">circle1</span><span class="pun">.</span><span class="pln">get_area</span><span class="pun">())</span><span class="pln">   
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">circle1</span><span class="pun">.</span><span class="pln">get_perimeter</span><span class="pun">())</span><span class="pln"> 

circle2 </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Circle</span><span class="pun">(</span><span class="lit">4</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">circle2</span><span class="pun">.</span><span class="pln">get_area</span><span class="pun">())</span><span class="pln">
</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">circle2</span><span class="pun">.</span><span class="pln">get_perimeter</span><span class="pun">())</span></pre>

<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> من سلسلة <a href="https://academy.hsoub.com/tags/%D8%AA%D8%B9%D9%84%D9%85%20%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">تعلم البرمجة</a>.
</p>

<h3>
	الوحدات والمكتبات
</h3>

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

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

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

<p>
	هناك العديد من الوحدات المضمنة في لغة بايثون مثلًا والتي يمكنك استيرادها بكتابة التعليمة <code>import</code> ولنضرب مثلًا باستيراد الوحدة <code>math</code> للاستفادة من الدوال الرياضية التي توفرها بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_2077_73" style=""><span class="kwd">import</span><span class="pln"> math

</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">math</span><span class="pun">.</span><span class="pln">sqrt</span><span class="pun">(</span><span class="lit">25</span><span class="pun">))</span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">math</span><span class="pun">.</span><span class="pln">pi</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">math</span><span class="pun">.</span><span class="pln">degrees</span><span class="pun">(</span><span class="lit">2</span><span class="pun">))</span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">math</span><span class="pun">.</span><span class="pln">radians</span><span class="pun">(</span><span class="lit">90</span><span class="pun">))</span><span class="pln">
</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">math</span><span class="pun">.</span><span class="pln">sin</span><span class="pun">(</span><span class="lit">2</span><span class="pun">))</span><span class="pln"> 
</span><span class="kwd">print</span><span class="pln"> </span><span class="pun">(</span><span class="pln">math</span><span class="pun">.</span><span class="pln">cos</span><span class="pun">(</span><span class="lit">0.5</span><span class="pun">))</span></pre>

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

<h2>
	10 نصائح لتعلم أساسيات البرمجة
</h2>

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

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

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

<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%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>
	</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/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">1869</guid><pubDate>Thu, 12 Jan 2023 15:03:00 +0000</pubDate></item><item><title>&#x623;&#x634;&#x647;&#x631; &#x625;&#x636;&#x627;&#x641;&#x627;&#x62A; Visual Studio Code</title><link>https://academy.hsoub.com/programming/general/%D8%A3%D8%B4%D9%87%D8%B1-%D8%A5%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-visual-studio-code-r2069/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/VisualStudioCode.png.4d41bc39e54cd8b9a3cdbe527d1cafe5.png" /></p>
<p>
	يعد محرر الشفرة Visual Studio Code أشهر محرر شفرة للبرمجة بلغات مختلفة، وفي مجالات عديدة، وهذه الشهرة لم تأتي من فراغ، بل من الكم الهائل من الإضافات والتي من خلالها أصبح Visual Studio Code المحرر المفضل للعديد من المبرمجين في مجالات مختلفة. في هذا الفيديو سنتحدث عن أهم الإضافات المستخدمة في هذا المحرر.
</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="أشهر إضافات Visual Studio Code" width="1072" data-embed-src="https://www.youtube.com/embed/L9OBvjcIw_Q"></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">2069</guid><pubDate>Wed, 11 Jan 2023 15:00:00 +0000</pubDate></item><item><title>&#x62A;&#x623;&#x62B;&#x64A;&#x631; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629; &#x639;&#x644;&#x649; &#x62D;&#x64A;&#x627;&#x62A;&#x643;</title><link>https://academy.hsoub.com/programming/general/%D8%AA%D8%A3%D8%AB%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%B9%D9%84%D9%89-%D8%AD%D9%8A%D8%A7%D8%AA%D9%83-r2070/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/872791460_.png.691869f84cd301981f4cadcee68df875.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/mA4RQKnC4bE"></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">2070</guid><pubDate>Sat, 07 Jan 2023 15:00:00 +0000</pubDate></item><item><title>&#x623;&#x647;&#x645;&#x64A;&#x629; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629; &#x648;&#x623;&#x647;&#x645; &#x644;&#x63A;&#x627;&#x62A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>https://academy.hsoub.com/programming/general/%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A3%D9%87%D9%85-%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/22560617_-.png.215c4086388e615e187484bb1777d43d.png" /></p>
<p style="text-align: center;">
	<img alt="أهمية البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="116134" data-ratio="38.00" data-unique="4wqpiliue" style="width: 900px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_01/981340938_----.thumb.jpg.182eae380cd56a2dbb4efe129489b84d.jpg">
</p>

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

<p>
	تتجلى <strong>أهمية البرمجة</strong> في بناء واجهات التخاطب والتحكم بتلك التجهيزات الرقمية وإدارة منظوماتها سواء في الموقع الفيزيائي نفسه أو عن بعد بالاستفادة من تقنيات الويب والاتصال مع <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>

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

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

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

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

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

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

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

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

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

<h3>
	أهمية البرمجة في توطين البيانات وإدارتها
</h3>

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

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

<h3>
	أهمية البرمجة في مجال التعليم الإلكتروني والتعلم عن بعد
</h3>

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

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

<h3>
	أهمية البرمجة في مجال التجارة الإلكترونية وريادة الأعمال
</h3>

<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/entrepreneurship/ecommerce/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D8%A3%D8%B4%D9%87%D8%B1-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D9%88%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%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-r420/" rel="">تصميم وبناء متاجر إلكترونية</a> جذابة يسهل للعملاء استخدامها وتستخدم في هذا الصدد تقنيات الويب المختلفة التي تعتمد أساسًا على شبكة الإنترنت.
</p>

<p>
	إضافة إلى المتاجر الإلكترونية، تظهر أهمية البرمجة في تصميم وبرمجة مواقع الويب أو <a href="https://sndian.com/" rel="external">إنشاء المواقع الإلكترونية</a>
 التي تقدم دفعًا كبيرًا للأعمال الناشئة وتروّج لعلاماتها التجارية. إن اختيار اللغة البرمجية المناسبة والتقنيات المناسبة لتحقيق المطلوب من الموقع أمر حيوي جدًا في نجاحه واستمراريته.
</p>

<h3>
	أهمية البرمجيات في مجال اتخاذ القرار والأنظمة الخبيرة
</h3>

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

<h3>
	أهمية البرمجة في التصميم الرسومي ومعالجة الصور
</h3>

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

<h3>
	أهمية البرمجة في مجال تحليل اللغات الطبيعية
</h3>

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

<h3>
	أهمية البرمجة في مجال الروبوتات
</h3>

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

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

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

<h2>
	فوائد البرمجة
</h2>

<p>
	تتغير نظرتك إلى أهمية البرمجة وفوائدها وفقًا لموقعك منها، فلأصحاب المشاريع التي تنتج البرمجيات رؤاهم ولأصحاب المشاريع التي تستخدم البرمجيات رؤاهم وللمبرمجين أنفسهم رؤاهم الخاصة. لهذا سنحاول أن نتحدث بداية عن <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> عمومًا ثم تفصيل هذه الفوائد وفقًا للتوجهات المختلفة للمهتمين.
</p>

<p>
	من أهم فوائد البرمجة نجد:
</p>

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

<h3>
	فائدة البرمجة لشركات إنتاج البرمجيات
</h3>

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

<h3>
	فائدة البرمجة لأصحاب المشاريع
</h3>

<p>
	يعتمد أصحاب المشاريع على البرمجة لعدة غايات أساسية:
</p>

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

<h3>
	فائدة البرمجة لمن يرغبون في تطوير أنفسهم
</h3>

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

<h2>
	أهم لغات البرمجة
</h2>

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

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

<h3>
	لغة Java
</h3>

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

<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> على أنها أكثر لغات العالم سهولة من ناحية كتابة الشيفرة والاستخدام ولا يعود سبب انتشارها الكبير إلى سهولتها وحسب، بل للكم الهائل من مكتبات الشيفرة الجاهزة التي تساعد المبرمج على إنجاز مختلف أنواع الوظائف بكل سهولة ويسر. تُعد بايثون لغة عامة الأغراض وتُستخدم في كتابة <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>

<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>
	لغة ++C
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/cpp/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-c-r802/" rel="">لغة C++‎</a> هي لغة عامة الأغراض يعتمد عليها الكثير من مبرمجي التطبيقات ومطوري لغات البرمجة والأنظمة المدمجة في كتابة برامجهم، فهي لغة قوية تسمح بالتفاعل المنخفض المستوى من العتاد الصلب وتؤمن أداءً عاليًا شديد الكفاءة في زمن التنفيذ. وعلى الرغم من صعوبة إنجاز بعض الوظائف بهذه اللغة موازنة بلغة بايثون مثلًا، لكن أداءها المضمون في زمن التشغيل جعلها من أكثر اللغات استخدامًا.
</p>

<h3>
	لغة جافاسكربت JavaScript
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/javascript/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-javascript-r664/" rel="">لغة جافاسكربت</a> هي لغة برمجة قوية وخفيفة تستخدم لبناء تطبيقات ومواقع الويب بالكامل، كما يمكن استخدامها ضمن بعض إطارات العمل لكتابة تطبيقات كاملة لسطح المكتب.
</p>

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

		<p class="banner-subtitle">
			تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية.
		</p>

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

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

<h3>
	لغة روبي Ruby
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/ruby/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-ruby-r636/" rel="">لغة روبي</a> هي لغة عامة الأغراض حديثة الانتشار تركز على البساطة والإنتاجية، وقد اكتسبت شهرتها من أناقتها ووضوح صياغتها وقوتها. إذ يمكنك أخذ فكرة أولية عن الوظيفة التي تفعلها شيفرة روبي دون أن يكون لك خلفية مسبقة عن هذه اللغة وقد استفادت هذه اللغة من الكثير من المزايا المتقدمة للغات اخرى مثل Perl و Smaltalk. تعدُّ روبي لغةً برمجيةً عامة الغرض وتستخدم في بناء البرامج المكتبية، وتطبيقات الويب، وخوادم الويب، وأدوات النظام، وفي قواعد البيانات وغيرها.
</p>

<h3>
	لغة 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> لبناء مواقع وتطبيقات ويب عالية الأداء والكفاءة. وتعتبر بلا منازع من أشهر اللغات التي تُستخدم في تطوير مواقع الويب. إذ تستخدم في بناء صفحات الويب وتوليد المحتوى الديناميكي للمواقع والوصول إلى الملفات الموجودة على الخوادم والعمل عليها والوصول إلى قواعد البيانات والتعامل معها والتحكم بسماحيات وصول المستخدم وتشفير البيانات. ومع وجود كل هذه الميزات يعدها الكثيرون لغةً سهلة التعلم.
</p>

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

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

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

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

<h3>
	لغة كوتلن Kotlin
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/kotlin/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-kotlin-r603/" rel="">لغة كوتلن</a> هي لغة قوية حديثة العهد نسبيًا طورتها جوجل مستفيدة من لغتي جافا وجافاسكربت. صُممت اللغة أساسًا لتطوير تطبيقات ويب وتطبيقات نظام التشغيل Android الذي يُستخدم في الهواتف الذكية، كما بدأت مؤخرًا بدعم كتابة تطبيقات مخصصة لأنظمة تشغيل مدمجة أخرى مثل IOS.
</p>

<h3>
	لغة سويفت Swift
</h3>

<p>
	لغة سويفت هي لغة من تصميم شركة آبل استبدلت بها اللغة الرسمية لها Objective C التي تفتقد الكثير من ميزات اللغات الحديثة. ظهرت هذه اللغة عام 2014 وكانت مخصصة لكتابة برامج خاصة بأنظمة تشغيل آبل مثل نظام التشغيل IOS و macOS لكنها بدأت بعد ذلك بدعم أنظمة تشغيل أخرى مثل لينكس في أواخر 2015 ثم ويندوز مؤخرًا ابتداء من نسختها 5.3 عام 2020.
</p>

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

<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/%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>
	<li>
		<a href="https://academy.hsoub.com/php/" rel="">تعلم PHP</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1854</guid><pubDate>Sat, 07 Jan 2023 13:03:00 +0000</pubDate></item><item><title>&#x62A;&#x637;&#x648;&#x64A;&#x631; &#x627;&#x644;&#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_12/639b642a17089_-.png.d67af386f9d48f53397640d52d8d2c78.png" /></p>
<p>
	تطوير التطبيقات وهندسة البرمجيات مصطلحات بتنا نسمعها كثيرًا في العقد الأخير فإن كنت مهتمًا بالتعرف على الموضوع فلابد أنك تنوي دخول أحد مجالات علوم الحاسوب أو التخصص في <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> ولكن ما هي التطبيقات؟ وما هي لغات البرمجة المستعملة فيه؟ وكيف يمكن التخصص في هذا المجال ودخول سوق العمل؟ لقد أصبحت صناعة التطبيقات صناعة مزدهرة في السوق العالمي، وصار من شأن كل شركة كبيرة أو صغيرة أن تطور تطبيقًا لها يربطها مع مستخدميها.
</p>

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

<p>
	فلنبدأ إذن!
</p>

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

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

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

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

<p>
	تطورت التطبيقات بتطور الحواسيب المشغلة لها وأنظمتها ووسائل تخزينها واتصالها، فقد كان المستخدم يحتاج إلى شراء قرص فلوبي بالتطبيق المشترى (إن كنت من جيل الألفية فغالبًا لم ترَ قرص فلوبي من قبل)، ثم أصبحت التطبيقات تباع بأقراص CD ثم بأقراص DVD، إلى أن دخل عصر الإنترنت وأصبحت التطبيقات تحمَّل من الشبكة مباشرةً ثم أصبحت <a href="https://academy.hsoub.com/devops/cloud-computing/%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%B3%D8%AD%D8%A7%D8%A8%D8%A9-cloud-r624/" rel="">تطبيقات سحابية</a> يتكفل مقدموها بإدارة البيانات وإتاحة مشاركتها.
</p>

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

<p style="text-align: center;">
	<img alt="تطوير التطبيقات وأنواعها" class="ipsImage ipsImage_thumbnailed" data-fileid="114140" data-unique="b6d8s0vol" style="width: 799px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_12/639c0d12df592_-.jpeg.13f05accfc96ccc33bdb3210b83679b8.jpeg">
</p>

<p>
	في البدء، كانت التطبيقات محصورة بالحواسيب المكتبية desktops قبل شيوع الحواسيب الصغيرة المتمثلة بالجوالات والساعات الذكية وأجهزة <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>

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

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

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

<ul>
	<li>
		نموذج الشلال Waterfall
	</li>
	<li>
		النموذج المرن <a href="https://academy.hsoub.com/entrepreneurship/business/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%84%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D8%A3%D8%AC%D8%A7%D9%8A%D9%84-agile-r1047/" rel="">أجايل Agile</a>
	</li>
	<li>
		نموذج التطوير السريع Rapid application development
	</li>
</ul>

<h3>
	نموذج الشلال Waterfall
</h3>

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

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

<h3>
	النموذج المرن Agile
</h3>

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

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

<h3>
	نموذج التطوير السريع Rapid application development
</h3>

<p>
	يفضل هذا النموذج التطوير المتكرر (المرور عدة مرات على الكود نفسه لتطويره تدريجيًّا) وبناء نماذج أولية للميزات بدلًا من التركيز على المخططات والنظريات. أهم مبادئ هذا النموذج:
</p>

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

<h2>
	لغات تطوير التطبيقات ومكتباتها
</h2>

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

<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> من اللغات الصاعد نجمها في الآونة الأخيرة، وهي لغة عامة الغرض أي يمكن استعمالها أين ما أمكن وقد شاع استخدامها في تطبيقات تحليل البيانات والذكاء الصنعي.
</p>

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

<ul>
	<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%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/python/%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-%D8%A7%D9%84%D8%B1%D8%B3%D9%88%D9%85%D9%8A%D8%A9-%D9%81%D9%8A-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-tkinter-r1501/" rel="">مكتبة TKinter</a> التي تعتمد على مكتبة TK الشهيرة.
	</li>
	<li>
		الويب: يُستعمل إطار العمل جانغو Django وإطار فلاسك Flask أو Pyramid
	</li>
	<li>
		الجوال: تُستعمل مكتبة Kivy لتطوير تطبيقات متعددة المنصات تعمل على الجوالات وعلى الحواسيب.
	</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>

<h3>
	تطوير التطبيقات باستخدام لغة جافاسكربت JavaScript
</h3>

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

<ul>
	<li>
		سطح المكتب: تُستعمل مكتبة Electron.js، التي أثبتت نجاحًا باهرًا في إنشاء تطبيقات سطح المكتب تعمل على مختلف أنظمة التشغيل.
	</li>
	<li>
		الويب: يُستعمل إطار أنجولر Angular أو ريآكت React لتطوير الواجهات الأمامية لتطبيقات الويب، وبيئة Node.js لتطوير النظم الخلفية لها.
	</li>
	<li>
		الجوال: يُستخدم إطار React Native لتطوير تطبيقات أندرويد أو iOS.
	</li>
</ul>

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

		<p class="banner-subtitle">
			تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية.
		</p>

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

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

<h3>
	تطوير التطبيقات باستخدام لغة Java و C++‎
</h3>

<p>
	تمتاز <a href="https://academy.hsoub.com/programming/java/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%A7-%D9%87%D9%8A%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-java-r1515/" rel="">لغة جافا Java</a> في مجال تطوير تطبيقات سطح المكتب ذات الواجهات الرسومية بمكتبة <a href="https://academy.hsoub.com/programming/java/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%AC%D8%A7%D9%81%D8%A7-%D8%A5%D9%81-%D8%A5%D9%83%D8%B3-javafx-%D8%A8%D8%B3%D9%8A%D8%B7-r1145/" rel="">JavaFX</a> التي اتسع نطاقها بفضل JavaFXPorts لتشمل الجوالات العاملة بنظام Android ونظام iOS.
</p>

<p>
	تستعمل لغة Java كذلك في تطوير <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>، إذ كانت هي اللغة الرسمية لبرمجتها قبل أن تحل محلها شبيهتها الحديثة كوتلن Kotlin.
</p>

<p>
	أما لغة C++‎، فتدعمها عدة مكتبات للواجهات الرسومية، منها gtkmm، وهي المكتبة الرسمية للواجهات الرسومية فيها، ومنها مكتبة Qt التي تستعمل في بناء واجهات المستخدم الرسومية وفي تطوير تطبيقات متعددة المنصات تعمل على أنظمة لينكس وويندوز وماك وحتى الأندرويد. من أهم المشاريع التي تستعمل مكتبة Qt إطارات عمل KDE وهي 83 مكتبة مبنية باستخدام Qt.
</p>

<h2>
	تطبيقات الحاسوب المكتبية مقابل تطبيقات الويب
</h2>

<p>
	شهدت السنين الأخيرة انتشار تطبيقات الويب وازدياد استخدامها على نطاق واسع، وأدى هذا الانتشار إلى اختلاف مفهوم التطبيقات وكيفية شرائها وتخزينها، حيث انتشرت التطبيقات السحابية ذات الاشتراكات الدورية (الشهرية أو السنوية)، ويبرز هذا الاتجاه عندما نرى أن شركة مايكروسوفت أصدرت مجموعة برامج الأوفيس كتطبيقات ويب سحابية تحت اسم Office 365، ونرى انتشار استخدام تطبيقات ويب مثل Figma، و <a href="https://academy.hsoub.com/apps/productivity/google-drive/" rel="">Google Drive</a> وغيرها.
</p>

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

<p>
	تمتاز تطبيقات الويب كذلك بإمكانية تحويلها إلى تطبيقات سطح مكتب أو جوال، باستعمال عدة مكتبات، والسائد حاليًا استعمال <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%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-r832/" rel="">تطبيقات الويب التقدمية PWA</a> لمختلف المنصات وأنظمة التشغيل.
</p>

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

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

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

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

<h3>
	دورة تطوير التطبيقات باستخدام لغة بايثون Python
</h3>

<p>
	أُعِدّت <a href="https://academy.hsoub.com/store/9-%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-python/" rel="">دورة تطوير التطبيقات باستخدام لغة بايثون Python</a> على يد نخبة من المطورين لتنقلك من الصفر في البرمجة إلى الاحتراف، حيث ستتمكن في 57 ساعة من الفيديو من تعلم تطوير التطبيقات والمواقع باستخدام لغة بايثون.
</p>

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

<p>
	<iframe allowfullscreen="" frameborder="0" height="450" src="https://player.vimeo.com/video/679458551" width="800"></iframe>
</p>

<h3>
	دورة تطوير التطبيقات باستخدام لغة جافاسكربت JavaScript
</h3>

<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> بما يزيد عن 55 ساعة، حيث ستبني الدورة عندك أساسًا نظريًّا متينًا مع تطبيق عملي على مشاريع عديدة مع مدربين متوافرين على مدار الساعة لمساعدتك وشرح أي شيء يستعصي علي.
</p>

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

<p>
	<iframe allowfullscreen="" frameborder="0" height="450" src="https://player.vimeo.com/video/311193987" width="800"></iframe>
</p>

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

<p>
	تتنوع أجور العمل في سوق تطوير التطبيقات بتنوع البلدان والمهارات التي يتمتع بها المطور. ففي الإمارات العربية المتحدة تحديدًا في إمارة دبي، وحسب <a href="https://www.glassdoor.com/Salaries/dubai-python-developer-salary-SRCH_IL.0,5_IM954_KO6,22.htm" rel="external nofollow">موقع glassdoor</a>، يبلغ متوسط أجر مطوري البايثون 4,500 درهم إماراتي شهريًّا. أما مطور الويب في دبي، وحسب بيانات <a href="https://www.glassdoor.co.in/Salaries/dubai-web-developer-salary-SRCH_IL.0,5_IM954_KO6,19.htm" rel="external nofollow">الموقع نفسه</a>، فيبلغ متوسط أجره 6,000 درهم إماراتي شهريًّا، وفي جمهورية مصر العربية، وحسب بيانات <a href="http://www.salaryexplorer.com/salary-survey.php?loc=64&amp;loctype=1&amp;job=774&amp;jobtype=3" rel="external nofollow">موقع salaryexplorer</a>، يبلغ متوسط أجر مطور الويب 7,650 جنيهًا مصريًّا في الشهر، أما مطور البايثون، فيبلغ متوسط أجره 9,380 جنيهًا في الشهر، حسب بيانات <a href="http://www.salaryexplorer.com/salary-survey.php?loc=64&amp;loctype=1&amp;job=6273&amp;jobtype=3" rel="external nofollow">الموقع نفسه</a> هذا أثناء تاريخ كتابة المقال وقد تتغير الأرقام في تاريخ قراءة المقال، والأرقام تلك تدل على أجور مرتفعة عن أي مهنة أخرى.
</p>

<p>
	إذا أردت البحث عن عمل عن بعد في مجال تطوير التطبيقات، ألق نظرة على موقع <a href="https://baaeed.com/" rel="external nofollow">بعيد</a>، الذي لا يخلو من فرص عمل في هذا المجال. لا تنس كذلك تقديم خدماتك في موقع <a href="https://khamsat.com/" rel="external">خمسات</a>، والبحث عن مشاريع مناسبة لك في <a href="https://mostaql.com/" rel="external">موقع مستقل</a>، الذي سيساعدك مساعدة كبيرة في معرفة اتجاهات السوق وفي العمل إذا قبلك صاحب أحد المشاريع.
</p>

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

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

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

<ul>
	<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/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/%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>
</ul>
]]></description><guid isPermaLink="false">1827</guid><pubDate>Tue, 20 Dec 2022 11:04:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x644;&#x645;&#x633;&#x627;&#x647;&#x645;&#x629; &#x641;&#x64A; &#x645;&#x634;&#x631;&#x648;&#x639; &#x645;&#x641;&#x62A;&#x648;&#x62D; &#x627;&#x644;&#x645;&#x635;&#x62F;&#x631; &#x62F;&#x648;&#x646; &#x643;&#x62A;&#x627;&#x628;&#x629; &#x634;&#x64A;&#x641;&#x631;&#x629;</title><link>https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A9-%D9%81%D9%8A-%D9%85%D8%B4%D8%B1%D9%88%D8%B9-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-%D8%AF%D9%88%D9%86-%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-r1799/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_11/6378a3d943536_--------.png.dedf62eef18caa1161c7a4ef345960d6.png" /></p>

<p>
	تعد مشاركة الشيفرة البرمجية في المشاريع <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">مفتوحة المصدر</a> مساهمةً شائعةً من قبل المبرمجين، ولكن ماذا لو أراد شخص ما تقديم مساهمة في هذه المشاريع ولكنه لا يمتلك مهارة وخبرة البرمجة؟
</p>

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

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

<ol>
<li>
		لا يتعلق المصدر المفتوح فقط بالمساهمة عن طريق عرض الشيفرة الخاصة بالمشروع للجميع، بل يتعلق أيضًا بالمساهمة مرة أخرى، فعندما بدأت مسيرتي المهنية مفتوحة المصدر -يقول كاتب المقال- كنت أستفيد من برامج مثل <a href="https://www.eyrie.org/~eagle/software/inn/" rel="external nofollow">INN</a>، بعد ذلك أصبح من الطبيعي بالنسبة لي نشر التعديلات والإضافات التي استفدت منها كرد للجميل.
	</li>
	<li>
		يعتمد مجتمع <a href="https://academy.hsoub.com/marketing/performance-marketing/%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%B9%D9%84-%D8%A7%D9%84%D9%88%D8%B5%D9%88%D9%84-%D8%A5%D9%84%D9%89%C2%A0%D9%85%D8%B4%D8%B1%D9%88%D8%B9%D9%83-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-%D8%A3%D8%B3%D9%87%D9%84-r164/" rel="">المشاريع مفتوحة المصدر</a> على مبدأ الجدارة، فعندما تبدأ العمل على مشروع لأول مرة ولا أحد يعرف من أنت وما هي مهاراتك ومساهماتك فمن المهم أن تقوم بالتواصل، وابدأ بما تحتاجه لتنطلق أو لتخطي مشكلة ما تواجهها وإلا قد يتم تجاهلك، وإذا كنت تملك مساهمة سابقة في مشروع فقد تحصل على ميزة جديدة مطبقة لأن هناك ثقة من المجتمع تمنحك المزيد من الحقوق والأذونات للوصول إلى الشيفرة البرمجية ومختلف الملفات.
	</li>
</ol>
<p>
	تحوّلك في المجتمع الخاص بمشروع مفتوح المصدر من متفرج خارجي إلى فرد مساهم في المشاريع ومساعد للآخرين وصحيح أن المساهمة تجب على أي فرد من أفراد المجتمع ولكنها تعد سمة مميزة ومقدَّرة لمجتمع المشاريع مفتوحة المصدر.
</p>

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

<h2>
	طرق المساهمة في المشاريع مفتوحة المصدر
</h2>

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

<h3>
	1. تقديم تقارير
</h3>

<p>
	تتضمن هذه التقارير تفاصيل حول ما أعجبك وما لم يعجبك وتقارير الأخطاء، بالإضافة إلى تفاصيل التواصل الفعال مع الأشخاص المناسبين، و تقارير حول معلومات الطريقة التي ساعد بها المشروع مستخدميه، فمثلًا تقدم مكتبة ما حلًا برمجيًا لبناء عنصر ما بسهولة في <a href="https://academy.hsoub.com/programming/javascript/react/" rel="">ريآكت React</a> أو <a href="https://academy.hsoub.com/programming/javascript/angular/" rel="">أنجلور Angular</a>، فيجري التأكد من أن الحل المطبق ساعد المستخدمين، وما إن كان يحتاج إلى تحديث أو تعديل.
</p>

<h3>
	2. إنشاء طلبات تتعلق بميزة feature
</h3>

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

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

<h3>
	3. اختبار الشيفرة البرمجية
</h3>

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

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

<h3>
	4. كتابة التوثيق documentation
</h3>

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

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

<h3>
	5. ترجمة واجهة المستخدم والتوثيق
</h3>

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

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

<h3>
	6. الإجابة عن أسئلة المستخدمين
</h3>

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

<h3>
	7. المساعدة في التصميم
</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="">تجربة المستخدم</a> إلى حد كبير، لذا تؤدي المساعدة في <a href="https://academy.hsoub.com/design/user-interface/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%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-%D9%88%D9%85%D8%AA%D8%AD%D9%83%D9%85%D8%A7%D8%AA%D9%87%D8%A7-r529/" rel="">تصميم واجهة المستخدم</a> والشعار والموقع الإلكتروني إلى تحسين المظهر المرئي للمشروع وبالتالي التأثير إيجابيًا عليه.
</p>

<h3>
	8. الترويج للمشروع
</h3>

<p>
	يمكن الترويج للمشروع من خلال التحدث عنه في مجموعة المستخدمين المحلية أو كتابة منشور في مدونة أو نشر التحديثات عبر <a href="https://academy.hsoub.com/marketing/social-media/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%88%D8%B3%D8%A7%D8%A6%D9%84-%D8%A7%D9%84%D8%AA%D9%88%D8%A7%D8%B5%D9%84-%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A-%D9%88%D8%A2%D9%84%D9%8A%D8%A9-%D8%B9%D9%85%D9%84%D9%87%D8%A7-r526/" rel="">قنوات التواصل الاجتماعي</a>، ويجب باستخدام أي وسيلة منها شرح التجربة الشخصية في المشروع مع كامل التفاصيل لأنها تُشرك الآخرين بشكل أقوى في التجربة.
</p>

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

<p>
	إذا كان المشروع بحاجة إلى <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> بناء أو اختبار محددة، يمكنك المساهمة باستخدام أجهزة العتاد في مركز البيانات datacenter بشكل مباشر للمطورين أو بشكل غير مباشر عن طريق القيام بالتكامل المستمر والذي يشمل دمج التغييرات البرمجية المقترحة من قبل عدة مساهمين، أو إجراء عمليات الاختبار ثم تقديم النتائج مرة أخرى إلى المشروع.
</p>

<h3>
	10. شكر المجتمع
</h3>

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

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

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/life/13/10/ten-ways-open-source-projects" rel="external nofollow">‎10 ways to contribute to an open source project without writing code</a> لصاحبه Heiko W. Rupp.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B1%D8%A7%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1586/" rel="">تراخيص البرامج مفتوحة المصدر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AA%D9%84%D8%A7%D8%B2%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D8%A7%D9%84-%D8%B9%D9%86-%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%AA%D9%8A-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%89-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1709/" rel="">متلازمة المحتال: عن مساهمتي الأولى في البرمجيات مفتوحة المصدر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%d9%83%d9%8a%d9%81-%d8%aa%d8%ae%d8%aa%d8%a7%d8%b1-%d8%b1%d8%ae%d8%b5%d8%a9-%d9%85%d9%81%d8%aa%d9%88%d8%ad%d8%a9-%d8%a7%d9%84%d9%85%d8%b5%d8%af%d8%b1-%d9%84%d8%a8%d8%b1%d8%a7%d9%85%d8%ac%d9%83-r293/" rel="">كيف تختار رخصة مفتوحة المصدر لبرامجك</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/marketing/performance-marketing/%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%B9%D9%84-%D8%A7%D9%84%D9%88%D8%B5%D9%88%D9%84-%D8%A5%D9%84%D9%89%C2%A0%D9%85%D8%B4%D8%B1%D9%88%D8%B9%D9%83-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-%D8%A3%D8%B3%D9%87%D9%84-r164/" rel="">كيف تجعل الوصول إلى مشروعك مفتوح المصدر أسهل</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1799</guid><pubDate>Fri, 16 Dec 2022 06:18:27 +0000</pubDate></item><item><title>&#x623;&#x645;&#x646; &#x627;&#x644;&#x645;&#x639;&#x644;&#x648;&#x645;&#x627;&#x62A; &#x641;&#x64A; &#x627;&#x644;&#x642;&#x631;&#x646; &#x627;&#x644;&#x62D;&#x627;&#x62F;&#x64A; &#x648;&#x627;&#x644;&#x639;&#x634;&#x631;&#x64A;&#x646;</title><link>https://academy.hsoub.com/programming/general/%D8%A3%D9%85%D9%86-%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_12/639427af8f9ca_-----.png.e93849bd1bdf0924ba6525d13fc1fd6e.png" /></p>

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

<h2>
	أهمية أمن المعلومات الرقمية
</h2>

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

<h3>
	أمن المعلومات ما قبل شبكة الإنترنت
</h3>

<p>
	كانت البيانات قبل <a href="https://academy.hsoub.com/devops/networking/%D8%A2%D9%84%D9%8A%D8%A9-%D8%B9%D9%85%D9%84-%D8%B4%D8%A8%D9%83%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-r571/" rel="">عصر الإنترنت</a> حبيسة الغرف والبيوت والمباني، فتكون بيانات المواطنين مثلًا محفوظة في سجلات داخل مباني الدولة في المدينة أو البلدية، ولا يستطيع أحد أن يصل إليها ما لم يدخل المبنى ويطلع على السجلات، أو إلى وسائل نقل تلك البيانات من مركبات وطائرات وغيرها، أو من يستطيع التجسس على وسائل الاتصال الهاتفية أو الاجتماعات ونقل ما يجري فيها، وكان يكفي لضمان أمن المعلومات تحصين مباني السجلات وحجب تلك الاجتماعات عن الأنظار أو تقييد من يحضرها أو تمويه وسائل نقل البيانات من سيارات أو مركبات أو أفراد، أو تشفير الاتصالات الهاتفية واتصالات الراديو لحجب محتوياتها عمن يتجسس عليها.
</p>

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

<h3>
	أمن المعلومات بعد شبكة الإنترنت
</h3>

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

<p>
	وباستخدام مثال سجلات الدولة في النقطة السابقة، فقد أصبحت تلك السجلات موجودة في حواسيب متصلة بالإنترنت، وعلى خوادم قد توجد داخل حدود الدولة أو خارجها -تشترط <a href="https://www.brinknews.com/data-localization-is-now-a-big-part-of-doing-business-globally/" rel="external nofollow">بعض الدول</a> من شركات الحوسبة السحابية التي تستضيف سجلاتها أن تكون بيانات مواطنيها داخل حدود الدولة- فإن استطاع شخص اختراق الوسائل الموضوعة لحماية أمن المعلومات هنا فسيصل إليها بسهولة تامة وينسخها إلى حاسوبه، حتى لو لم يكن هو نفسه داخل الدولة أو القارة حتى الموجودة فيها تلك المعلومات، على عكس ما كان يحدث من قبل إذ كان يضطر المخترق إلى التواجد في مكان تخزين تلك البيانات وتحميلها في شاحنة مثلًا.
</p>

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

<h2>
	خطورة تهديدات أمن المعلومات
</h2>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="113624" href="https://academy.hsoub.com/uploads/monthly_2022_12/639427ab4e6d7_--.jpg.b80120fd15706db7c68a8b8dd20378dd.jpg" rel=""><img alt="تهديدات أمن المعلومات" class="ipsImage ipsImage_thumbnailed" data-fileid="113624" data-unique="a9hvpf4av" src="https://academy.hsoub.com/uploads/monthly_2022_12/639427ab4e6d7_--.jpg.b80120fd15706db7c68a8b8dd20378dd.jpg" style="width: 600px; height: auto;"></a>
</p>

<h3>
	التجسس على المستخدمين
</h3>

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

<h3>
	التأثير على الرأي العام
</h3>

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

<h3>
	استهداف المنشآت الحساسة
</h3>

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

<h4>
	سرقة الأموال
</h4>

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

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

<h3>
	استهداف الضحايا الأفراد
</h3>

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

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

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

<h2>
	عناصر أمن المعلومات
</h2>

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

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

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

<ul>
<li>
		سرية البيانات Confidentiality
	</li>
	<li>
		حيازة البيانات Possession أو التحكم فيها Control
	</li>
	<li>
		سلامة البيانات وصحتها Integrity
	</li>
	<li>
		موثوقية البيانات Authenticity
	</li>
	<li>
		إتاحة البيانات Availability
	</li>
	<li>
		قيمة البيانات أو أثرها Utility
	</li>
</ul>
<p>
	والعلم بعناصر أمن المعلومات هذه مفيد حتى للأفراد العاديين، من أجل معرفة ما يجب النظر إليه في المعلومات الخاصة من صور ومستندات وجهات اتصال وغيرها، ومن ثم النظر في أوجه التعامل معها، فهل نثق في رسالة أرسلها شخص غريب إلينا أم لا -لا إلا إن كنا نعرف ذلك الشخص حقًا ورقم هاتفه أو بريده- وهل نشارك جهة اتصال مع تطبيق ثبتناه على الهاتف أم لا -لا، إلا إن كان التطبيق ذو سمعة جيدة ويحتاج حقًا إلى استخدام جهة الاتصال- وهل نأمن أن نترك الهاتف في حيازة غيرنا أم لا -لا قطعًا-، وهكذا.
</p>

<h2>
	وسائل حماية البيانات
</h2>

<p>
	تتعدد الوسائل المتاحة <a href="https://blog.khamsat.com/info-sec-guide/" rel="external">لحماية أمن المعلومات والبيانات</a> وحفظها من السرقة أو التخريب، بين الأنظمة المادية والبرمجية، والتوعية المعرفية للأفراد.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="113623" href="https://academy.hsoub.com/uploads/monthly_2022_12/639427aa83d1a_--.jpg.a7ade59e338315c8e43ae87283db992e.jpg" rel=""><img alt="أمن المعلومات وحماية البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="113623" data-unique="egfjzopfh" src="https://academy.hsoub.com/uploads/monthly_2022_12/639427aa83d1a_--.jpg.a7ade59e338315c8e43ae87283db992e.jpg" style="width: 600px; height: auto;"></a>
</p>

<h3>
	الحماية المادية للمعلومات
</h3>

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

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

<h3>
	التوعية المعرفية للأفراد
</h3>

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

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

<p>
	وهذا مفيد حتى خارج نطاق المؤسسات، فمن المهم أن يكون الوعي الرقمي منتشرًا بين أفراد المجتمع لئلا تحدث تلك الحالات على المستوى الفردي، من ابتزاز أو سرقة أو اختطاف أو غيرها، وقد نشرت حسوب في هذا <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>

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

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

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

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

<h3>
	الحماية البرمجية في أمن المعلومات
</h3>

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

<p>
	كذلك يُفضل اختيار <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">البرمجيات المفتوحة المصدر</a> ما أمكن إذا تساوت إمكانياتها مع البرمجيات مغلقة المصدر، ولا نشير هنا إلى أن مجانية البرامج المفتوحة، فبعضها يكون أغلى من البرامج مغلقة المصدر، لكن لإمكانية الاطلاع على شيفراتها المصدرية والتأكد أنها لا تحمل برمجيات خبيثة تضر بأمان المستخدم وبياناته.
</p>

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

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

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

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

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

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

<ul>
<li>
		<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>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/operating-systems/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%83%D9%84%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D8%B9%D8%A8%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-bitwarden-r653/" rel="">إدارة كلمات المرور عبر برنامج Bitwarden</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/operating-systems/windows/%D8%A3%D9%85%D8%A7%D9%86-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-%D9%88%D8%A3%D8%AF%D8%A7%D8%A4%D9%87-%D9%88%D8%AD%D9%85%D8%A7%D9%8A%D8%AA%D9%87-%D9%88%D8%AE%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D9%82%D8%A7%D8%A8%D8%A9-%D8%A7%D9%84%D8%A3%D8%A8%D9%88%D9%8A%D8%A9-%D9%81%D9%8A-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D8%A3%D9%85%D9%86-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-11-windows-r740/" rel="">أمان الحاسوب وأداؤه وحمايته وخيارات الرقابة الأبوية في تطبيق أمن ويندوز</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/networking/%D8%A7%D9%84%D9%87%D8%AC%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86%D9%8A%D8%A9-security-attacks-%D9%81%D9%8A-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%8A%D8%A9-r540/" rel="">الهجمات الأمنية Security Attacks في الشبكات الحاسوبية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/networking/%D8%A3%D9%85%D8%AB%D9%84%D8%A9-%D8%B9%D9%86-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A3%D9%85%D9%86-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%8A%D8%A9-r542/" rel="">أمثلة عن أنظمة أمن الشبكات الحاسوبية</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1817</guid><pubDate>Sat, 10 Dec 2022 16:16:56 +0000</pubDate></item><item><title>&#x628;&#x631;&#x645;&#x62C;&#x629; &#x645;&#x648;&#x627;&#x642;&#x639; &#x627;&#x644;&#x648;&#x64A;&#x628;: &#x62F;&#x644;&#x64A;&#x644;&#x643; &#x627;&#x644;&#x645;&#x62E;&#x62A;&#x635;&#x631;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_12/6394b04163eec_-----.png.ab5099e742ea3fd1a5802488b4fd2762.png" /></p>
<p>
	تمثل مواقع الويب بوابات ومنافذ للجهات المالكة لها، فالموقع الإلكتروني لشركة أجهزة منزلية ما هو إلا فرع إضافي لمتاجر تلك الشركة على الأرض، أو قد يكون هو المتجر الوحيد الذي تبيع من خلاله أجهزتها وتشحنها إلى عملائها، وقد يكون موقع الكاتب/المترجم/المبرمج الفلاني هو مقر شركته الرقمي الذي يحصل منه على العملاء ويتواصل معهم من خلاله.
</p>

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

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

<h2>
	مدخل إلى برمجة مواقع الويب
</h2>

<p>
	من الجميل في مجال برمجة مواقع الويب أنه من أسهل مجالات البرمجة في تعلمه، وأسرعه في الحصول على منتجات حقيقية -أي مواقع أو تطبيقات كاملة- ولا يحتاج إلى تعلم رياضيات متقدمة أو <a href="https://academy.hsoub.com/programming/advanced/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-r1282/" rel="">خوارزميات معقدة</a> من أجل العمل فيه.
</p>

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

<ul>
	<li>
		<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="">مصمم واجهة الاستخدام UI Designer</a>: يختص بتصميم الواجهة المرئية التي يتفاعل معها المستخدم ويراها، بما فيها من أزرار وأيقونات وقوائم وغيرها، ويختار الألوان المناسبة لطبيعة الموقع، ويستخدم برامج عدة لتصميم تلك المواقع والأيقونات التي يحتاج إليها.
		</p>
	</li>
	<li>
		<p>
			<a href="https://academy.hsoub.com/design/user-experience/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D9%81%D9%87%D9%85-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%87%D9%86%D9%8A%D8%A9-%D9%84%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-r713/" rel="">مصمم تجربة الاستخدام UX Designer</a>: يختص بدراسة المستخدمين النهائيين للموقع لفهم احتياجاتهم ومن ثم تصميم تجربة استخدام مناسبة، فيختار أحجام الأزرار وترتيب القوائم والعناصر فيها وعدد النقرات اللازمة للوصول إلى كل عنصر في الصفحة، والتأثيرات السمعية والبصرية المصاحبة لكل نقرة أو إجراء من المستخدم، ومواضع النصوص والوسائط المتعددة وأحجامها وغير هذا، ويجب أن يكون لديه فهم جيد لنظرية الألوان وتأثيرها النفسي على المستخدم. قد يجمع المصمم بين هذا التخصص والتخصص السابق.
		</p>
	</li>
	<li>
		<p>
			مبرمج الواجهات الأمامية Front-End Developer: يستلم مبرمج الواجهة الأمامية ملفات التصميم من المصممين ليحولها إلى نسخة حية يتفاعل معها المستخدم، ويستخدم لغات برمجية تعمل في المتصفح مباشرة.
		</p>
	</li>
	<li>
		<p>
			مبرمج الواجهات الخلفية Back-End Developer: يكون مسؤولًا عن معالجة البيانات الخاصة بالموقع وتنفيذ الإجراءات التي يتخذها المستخدم عليه (مثل عمليات الشراء والدفع وتسجيل الدخول وكتابة المنشورات وغيرها)، وضمان أمان الموقع وسلامة الخوادم التي تحمل بياناته، وكذلك كفاءة وسرعة عمل الموقع.
		</p>
	</li>
</ul>

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

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

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

<p>
	أما ما يحتاجه مبرمج الويب من عتاد فلا يعدو أكثر من حاسوب جيد المواصفات متصل بالإنترنت، فلا تحتاج برمجة مواقع الويب إلى عتاد خاص بها، وأما البرمجيات فتختلف وفقًا للتخصص الذي يريد المبرمج أن يعمل فيه، فمصممو المواقع يستخدمون برمجيات تصميم مرئية ساكنة مثل <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 Illustrator</a> أو تفاعلية مثل <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>

<h2>
	اللغات والأدوات المستخدمة في برمجة مواقع الويب
</h2>

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

<p style="text-align: center;">
	<img alt="لغات برمجة مواقع الويب" class="ipsImage ipsImage_thumbnailed" data-fileid="114139" data-unique="489y0029p" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_12/639c09eb6b457_--.jpeg.d51d43910c05dfd48ba9798254a966bb.jpeg">
</p>

<h3>
	أشهر البرامج التي يستخدمها مصمم الويب
</h3>

<p>
	لا يوجد برنامج واحد يجمع كل ما يحتاجه مصمم الويب، بل يستخدم عدة برامج وفقًا لما يحتاج إليه المشروع أو الموقع الذي يعمل عليه، ووفقًا كذلك للميزانية المتاحة، ولبيئة العمل التي يعمل فيها، فقد يستخدم برامج مغلقة المصدر من شركة أدوبي Adobe، أو أدوات تصميم تشاركية مثل <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="">Figma</a>، أو حتى برامج مفتوحة المصدر مثل <a href="https://academy.hsoub.com/design/graphic/gimp/" rel="">Gimp</a> و <a href="https://academy.hsoub.com/design/illustration/inkscape/" rel="">Inkscape</a>، وفيما يلي أشهر تلك البرامج:
</p>

<ul>
	<li>
		أدوبي إكس دي XD: أحد برامج التصميم في حزمة أدوبي Adobe، يُستخدم لإنشاء التصاميم المرئية للمواقع والتطبيقات وحتى الألعاب في صورة قريبة للشكل النهائي لها، بحيث تعطي كلًا من العميل والمطور فكرة عن النموذج النهائي للموقع. قد تُستخدم بعض الأدوات الأخرى لهذا الغرض مثل Figma، والتي تتميز عن برامج أدوبي في أنها تطبيقات للعمل المشترك بين المصممين، بنفس مبدأ تطبيقات جوجل السحابية مثلًا.
	</li>
	<li>
		أدوبي إليستوريتور Adobe Illustrator: برنامج آخر للتصميم يعتمد على التصاميم المتجهية Vector Graphics التي لا تتأثر جودتها بتكبيرها، يُنشأ به عناصر الموقع من أزرار وقوائم وصفحات وغيرها. قد يُستخدم برنامج Inkscape مفتوح المصدر لذلك الغرض أيضًا، وذلك يتبع بيئة العمل التي يفضلها المصمم، والميزانية المتاحة للمشروع.
	</li>
	<li>
		أدوبي فوتوشوب: قد يُستخدم برنامج فوتوشوب <a href="https://academy.hsoub.com/design/graphic/photoshop/%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-%D9%81%D9%88%D8%AA%D9%88%D8%B4%D9%88%D8%A8-adobe-photoshop-r541/" rel="">PhotoShop</a> الشهير لإنشاء تصميمات المواقع أيضًا، لكن إليستوريتور أفضل بسبب جودة التصميمات التي يخرجها، رغم احتياج مصمم الويب إلى برنامج مثل فوتوشوب -أو Gimp في حالة البرامج مفتوحة المصدر- لمعالجة بعض التصميمات التي يخرجها وإضافة تأثيرات عليها.
	</li>
</ul>

<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>
	أبرز لغات برمجة مواقع الويب
</h3>

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

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

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

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

<ul>
	<li>
		<a href="https://wiki.hsoub.com/PHP" rel="external">PHP</a>: من أشهر لغات برمجة مواقع الويب وأكثرها استخدامًا، وتُستخدم لبرمجة تطبيقات الويب التي تعمل على الخوادم، أي في الواجهات الخلفية، كما تُبنى بها <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%AA%D8%B9%D9%84%D9%85-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r1461/" rel="">أنظمة إدارة المحتوى مثل ووردبريس</a>.
	</li>
	<li>
		<a href="https://wiki.hsoub.com/Ruby" rel="external">Ruby</a>: لغة برمجة عامة الأغراض يمكن بناء الخوادم ومعالجة البيانات بها وكذلك بناء تطبيقات ويب باستخدام إطار العمل Ruby on Rails.
	</li>
	<li>
		<a href="https://wiki.hsoub.com/Python" rel="external">Python</a>: لغة برمجة عامة الأغراض كذلك يُستخدم فيها إطار العمل Django أو Flask لبناء تطبيقات الويب.
	</li>
	<li>
		JavaScript: كما تُستخدم لغة جافاسكربت في برمجة الواجهات الأمامية فهي كذلك تُستخدم في برمجة الواجهات الخلفية باستخدام إطار العمل <a href="https://wiki.hsoub.com/Node.js" rel="external">Node.js</a>.
	</li>
</ul>

<p>
	تُستخدم لغات برمجة غير هذه التي ذكرناها قطعًا في برمجة مواقع الويب مثل جافا وغيرها، وتخرج أطر عمل جديدة كل فترة مبنية على تلك اللغات، وإنما ذكرنا الأشهر فقط، ويكفي اختيار لغة واحدة في كل قسم وتعلمها ومن ثم تعلم أطر العمل المبنية عليها لاستخدامها، ويتحكم في هذا الاختيار تفضيل المبرمج نفسه وطبيعة المشاريع التي يريد العمل عليها، لكن بأي حال من السهل على من تعلم إحدى اللغات البرمجية أن ينتقل إلى غيرها في خلال بضعة أسابيع، انظر مقال <a href="https://academy.hsoub.com/programming/javascript/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B7%D8%B1-%D8%B9%D9%85%D9%84-%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-r1567/" rel="">مقدمة إلى أطر عمل تطوير الويب من طرف العميل</a> للاطلاع على أشهر تلك الأطر.
</p>

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

<p>
	يبدأ العمل على موقع الويب لعميلك بالاجتماع معه لمعرفة الهدف الذي يريده من الموقع والأقسام والعناصر التي ستكون فيه من أجل <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%AD%D8%AF%D9%8A%D8%AF-%D8%A7%D9%84%D8%AA%D9%83%D9%84%D9%81%D8%A9-%D8%A7%D9%84%D9%85%D8%A7%D8%AF%D9%8A%D8%A9-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84%D8%A9-%D9%84%D8%A8%D9%86%D8%A7%D8%A1-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%8A%D8%A8-r1437/" rel="">تحديد ميزانية للمشروع</a>، وطبيعة المستخدمين النهائيين للموقع لمعرفة الألوان والتصاميم التي يجب استخدامها، ثم تأتي المراحل التالية:
</p>

<ul>
	<li>
		<strong>التصميم</strong>: ينشئ مصمم تجربة الاستخدام ومصمم الواجهات المرئية التصميم المرئي للموقع لعرضه على العميل، وعند اعتماده تبدأ مرحلة برمجته.
	</li>
	<li>
		<strong>برمجة الواجهة الأمامية Front End</strong>: يعمل مبرمج الواجهات الأمامية على تحويل التصميمات المرئية إلى موقع حي يتفاعل معه المستخدم ويتنقل بين صفحاته وقوائمه وعناصره، مستخدمًا لغات برمجة الواجهة الأمامية التي ذكرناها.
	</li>
	<li>
		<strong>برمجة الواجهة الخلفية Back End</strong>: ينشئ مبرمج الواجهة الخلفية الخوادم وقواعد البيانات وآليات معالجتها، ويضمن أمان حركة البيانات -خاصة في حالة إجراء معاملات مالية على الموقع-، وسرعة استجابة الموقع لإجراءات المستخدم وكفاءة التشغيل وضمان عمل الموقع لأقصى حد ممكن دون انقطاع، وقد تيسر هذا في الأعوام الأخيرة بعد خدمات الاستضافة السحابية مثل Azure من مايكروسوفت و <a href="https://academy.hsoub.com/certificates/aws/" rel="">AWS</a> من أمازون، والتي يستخدمها مبرمج الواجهة الخلفية في تخزين بيانات الموقع عليها مستخدمًا إحدى الحلول التي توفرها تلك الخدمات، وفقًا لحجم الموقع والميزانية المتاحة.
	</li>
	<li>
		<strong>حجز النطاق والخوادم</strong>: يتولى مبرمج الواجهة الخلفية -أو <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 Engineer</a>- في الغالب مهمة حجز النطاق -وهو اسم الموقع مثل google.com- الذي سيستخدمه الموقع وشراؤه من إحدى الشركات التي تقدم هذه الخدمة وكذلك تأجير الخوادم التي سيكون عليها الموقع من Azure أو AWS كما ذكرنا أعلاه.
	</li>
</ul>

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

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

<p>
	وتوفر حسوب دورات باللغة العربية الفصحى عالية الجودة، <span ipsnoautolink="true">لبرمجة الواجهات الأمامية</span> باستخدام HTML و CSS ولغة JavaScript، وكذلك دورات لبناء تطبيقات الويب باستخدام لغة <a href="https://academy.hsoub.com/learn/ruby-web-application-development/" rel="">Ruby</a> و <a href="https://academy.hsoub.com/learn/php-web-application-development/" rel="">PHP</a> و <a href="https://academy.hsoub.com/learn/python-application-development/" rel="">Python</a> و <a href="https://academy.hsoub.com/learn/javascript-application-development/" rel="">JavaScript</a> وغيرها، وتحدَّث تلك الدورات كل فترة لتواكب التغيرات في السوق.
</p>

<p style="text-align: center;">
	<iframe allowfullscreen="" frameborder="0" height="450" src="https://player.vimeo.com/video/176476032" width="800"></iframe>
</p>

<p>
	ويكون معك في هذه الدورات مدربون محترفون للإجابة على أسئلتك، كما تضمن استرداد قيمة الدورة في خلال ستة أشهر، إضافة إلى معين زاخر بالمقالات والشروح والكتب عالية الجودة في <a href="https://academy.hsoub.com/" 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>.
</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> للاطلاع على مسارات التعلم والتخصصات المتاحة في مجال تطوير الويب كي تستطيع اختيار المسار المناسب لك، وانظر أيضًا مقال <a href="https://hausaba.com/learn-programming-arabic/" rel="external nofollow">الدليل الشامل لتعلم البرمجة باستخدام المصادر العربية</a>.
</p>

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

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

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

<ul>
	<li>
		<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%D9%88%D9%8A%D8%A8-r1522/" 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%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/general/%D9%83%D9%8A%D9%81-%D9%8A%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-web%D8%9F-r1690/" rel="">كيف يعمل الويب Web</a>
	</li>
	<li>
		<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>
	</li>
</ul>
]]></description><guid isPermaLink="false">1818</guid><pubDate>Thu, 15 Dec 2022 15:09:00 +0000</pubDate></item><item><title>&#x62A;&#x642;&#x646;&#x64A;&#x629; &#x627;&#x644;&#x645;&#x639;&#x644;&#x648;&#x645;&#x627;&#x62A;: &#x645;&#x627; &#x647;&#x64A; &#x648;&#x645;&#x627; &#x639;&#x646;&#x627;&#x635;&#x631;&#x647;&#x627; &#x648;&#x62A;&#x62E;&#x635;&#x635;&#x627;&#x62A;&#x647;&#x627;&#x61F;</title><link>https://academy.hsoub.com/programming/general/%D8%AA%D9%82%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_12/639423b60f7e1_---.png.dfe133731b1d7323aede1debc3237672.png" /></p>
<p>
	إذا أمكننا اختيار مجال واحد ليكون أهم مجال علمي وعملي في السوق الحديث فسيكون ذلك المجال هو تقنية المعلومات Information Technology -يُطلق عليه تقانة المعلومات أحيانًا- ذلك أنه مجال واسع ومتشعب يستطيع أن يستوعب أغلب مجالات العمل والعلم الأخرى بشكل أو بآخر إن لم يكن يستطيع استيعابها جميعًا.
</p>

<h2>
	ما هي تقنية المعلومات
</h2>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="113621" href="https://academy.hsoub.com/uploads/monthly_2022_12/639423a593d27_--.jpeg.825b61b97744128f6b93b2c4b4455304.jpeg" rel="" data-fileext="jpeg"><img alt="تمثيل تقنية المعلومات" class="ipsImage ipsImage_thumbnailed" data-fileid="113621" data-unique="3slpcxxoj" style="width: 798px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_12/639423a593d27_--.jpeg.825b61b97744128f6b93b2c4b4455304.jpeg"></a>
</p>

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

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

<h3>
	أمثلة لتطبيقات تقنية المعلومات
</h3>

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

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

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

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

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

<p>
	ومثل ذلك يُمكن تطبيقه على أي مجال تقريبًا، من تحليل ساعات الطيران لطائرة جديدة يراد اختبارها من أجل الإصلاح المبكر لمشاكلها، إلى تخزين البيانات الكبيرة للمؤسسات والدول في صور رقمية يمكن فهرستها وأرشفتها ومعالجتها بسهولة، على عكس الأساليب الورقية القديمة، بل حتى على عكس الأساليب التقنية القديمة التي كانت تستخدم البطاقات المثقبة Punched Cards مثلًا في تخزين البيانات في القرن الماضي، التي كان تعديل خطأ فيها مكلفًا ومستهلكًا للوقت والجهد، بل كان مجرد تخزينها يحتاج إلى مستودعات ضخمة جدًا.
</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/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="">قواعد البيانات Databases</a> وأنظمة الاتصالات Telecommunications، وقد زادت أهمية قواعد البيانات مؤخرًا بعد تطور تقنيات الذكاء الصناعي وتحليل البيانات، أما أنظمة الاتصالات فهي المعدات اللازمة لربط الحواسيب البعيدة ببعضها لتكوين شبكات فيما بينها باستخدام أسلاك الإيثرنت أو الألياف البصرية، أو باستخدام الاتصالات اللاسلكية مثل الواي فاي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="113622" href="https://academy.hsoub.com/uploads/monthly_2022_12/639423a5e9c1e_--.jpg.b6ef0e5c195e859aa2702628f9754886.jpg" rel="" data-fileext="jpg"><img alt="عناصر تقنية المعلومات" class="ipsImage ipsImage_thumbnailed" data-fileid="113622" data-unique="u9urnfogr" style="width: 799px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_12/639423a5e9c1e_--.jpg.b6ef0e5c195e859aa2702628f9754886.jpg"></a>
</p>

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

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

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

<h2>
	تخصصات تقنية المعلومات
</h2>

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

<ul>
	<li>
		متخصص الدعم الفني: يكون مسؤولًا عن مراجعة <a href="https://academy.hsoub.com/certificates/comptia/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D9%88%D8%A7%D8%B3%D9%8A%D8%A8-%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D9%88%D9%81%D9%87%D9%85-%D8%B7%D8%A8%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-r65/" rel="">شبكات الحاسوب</a> ومشاكل العتاد وحلها في الشركات.
	</li>
	<li>
		متخصص الأمن التقني: يصمم أنظمة وقائية للبيانات الخاصة بشركته أو مؤسسته لإنشاء خطط احتياطية لحالات اختراق البيانات وسرقتها من الشبكة أو الخوادم الخاصة بالشركة، وكذلك إجراءات التعامل مع المشاكل التي تطرأ على ذلك العتاد.
	</li>
	<li>
		مهندس الشبكات: يصمم <a href="https://academy.hsoub.com/tags/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA" 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://khamsat.com/programming/it-support" rel="external">اطلب خدمتك الآن</a>
		</div>
	</div>
</div>




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

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

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

<ul>
	<li>
		<a href="https://academy.hsoub.com/entrepreneurship/business/%D8%A7%D9%84%D8%AA%D9%88%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%AF%D9%8A%D8%AB%D8%A9-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-%D8%AA%D9%82%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D9%8A-%D8%AA%D8%AD%D8%AA%D8%A7%D8%AC-%D8%A7%D9%84%D8%B4%D8%B1%D9%83%D8%A7%D8%AA-%D8%A5%D9%84%D9%89-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87%D8%A7-r893/" rel="">التوجهات الحديثة في مجال تقنية المعلومات التي تحتاج الشركات إلى معرفتها</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/entrepreneurship/business/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AA%D9%82%D9%86%D9%8A%D8%A9-%D9%88%D8%AA%D8%AE%D8%B7%D9%8%20A%D8%B7%D9%87%D8%A7-%D9%81%D9%8A-%D8%A7%D9%84%D8%B4%D8%B1%D9%83%D8%A7%D8%AA-r891/" rel="">إدارة التقنية وتخطيطها في الشركات</a>
	</li>
	<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>
</ul>
]]></description><guid isPermaLink="false">1816</guid><pubDate>Sat, 10 Dec 2022 15:08:00 +0000</pubDate></item><item><title>&#x628;&#x631;&#x645;&#x62C;&#x629; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A; &#x627;&#x644;&#x623;&#x646;&#x62F;&#x631;&#x648;&#x64A;&#x62F;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_11/63792dc269a20_--.png.c5311d73802a571265f8a9452a854fad.png" /></p>
<p>
	لقد بلغت شهرة نظام أندرويد Android <span ipsnoautolink="true">المفتوح المصدر</span> مبلغًا يغني عن التعريف به، هذا النظام الذي ابتدأ من الصفر عام 2008، لم يلبث أن أصبح أشهر أنظمة تشغيل الجوالات عام 2012، ليستمر صعوده حتى يومنا هذا فانظر حولك وسترى جهازًا أو جوالًا يعمل بنظام أندرويد هذا إن لم يكن نظام جوالك أندرويد أصلًا، ففي سوق صناعة الجوالات، تعتمد شركة آبل على نظام iOS وتقيده بأجهزتها التي تصنعها فقط أما بقية الشركات فتلجأ عادةً إلى نظام تشغيل أندرويد المفتوح المصدر وتخصصه -بما أنه قابل للتخصيص والتطوير- لأجهزتها بدلًا من اختراع نظام تشغيل جديد.
</p>

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

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

<h2>
	أهمية منصة أندرويد
</h2>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112601" href="https://academy.hsoub.com/uploads/monthly_2022_11/63792de23372a_-.jpg.0a14952edb24ec193bdd83bd951726ed.jpg" rel=""><img alt="منصة أندرويد" class="ipsImage ipsImage_thumbnailed" data-fileid="112601" data-unique="p64az3hcd" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/63792de246e41_-.thumb.jpg.924035c021148f1411eb12304746fc02.jpg"></a>
</p>

<p>
	<a href="https://gs.statcounter.com/os-market-share/mobile/worldwide" rel="external nofollow" target="_blank">حسب موقع statcounter</a>، يبلغ نصيب نظام الأندرويد من سوق أنظمة تشغيل الجوالات العالمي أكثر من 71%، حسب بيانات سبتمبر 2022. أما نصيبه من الأسواق المحلية لأنظمة الجوال فيختلف باختلاف البلد، ففي مصر مثلًا، وحسب أرقام <a href="https://gs.statcounter.com/os-market-share/mobile/egypt" rel="external nofollow" target="_blank">الموقع السابق نفسه</a>، تبلغ حصة نظام الأندرويد من إجمالي السوق 86%، أما في المملكة العربية السعودية، حيث يبلغ التنافس أشده بين نظام الأندرويد ونظام iOS فتنخفض هذه الحصة حتى تبلغ أقل من 46%. بالمقابل، يحافظ الأندرويد على صدارته في الإمارات العربية المتحدة حيث تبلغ حصته من السوق أكثر من 72%.
</p>

<p>
	تدل هذه الأرقام على استخدام واسع لنظام الأندرويد في شتى بلدان العالم عمومًا والعربي خصوصًا، وهذا الانتشار الواسع للنظام يكسب تطبيقات الأندرويد أهمية كبيرة لا سيما في الأسواق التي تسود فيها المنصة، إذ تعد تطبيقات اندرويد النافذة التي يصل عبرها أصحاب الأعمال إلى فئة كبيرة من الناس، وهو ما يدفعهم إلى الاهتمام بها واستثمار أموال كبيرة في سوق <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>.
</p>

<h2>
	خطوات بناء تطبيق أندرويد
</h2>

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

<ol>
	<li>
		جمع المتطلبات
	</li>
	<li>
		تصميم وتطوير واجهة المستخدم وتجربة المستخدم
	</li>
	<li>
		برمجة التطبيق
	</li>
	<li>
		اختبار التطبيق ونشره
	</li>
</ol>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112599" href="https://academy.hsoub.com/uploads/monthly_2022_11/63792de071970_--.jpg.52fb8db79f36262286fa6eda287b2be1.jpg" rel=""><img alt="تصميم تطبيقات الأندرويد" class="ipsImage ipsImage_thumbnailed" data-fileid="112599" data-unique="wo98forsn" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/63792de086ff7_--.thumb.jpg.a6b3d7950b75cefcf4133a6b3fb7ed3c.jpg"></a>
</p>

<p>
	تشمل الخطوة الأولى معرفة ميزات التطبيق ومتطلباته وهدفه ومجال عمله ومن سيستخدمه والذي يمهد الطريق للخطوة التالية وهي تصميم شكل التطبيق وصفحاته عبر تطبيق تصميم واجهات UI مثل تطبيق <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> وبعدها يستلم المبرمج أو فريق البرمجة التصاميم لتنفيذها وبرمجة تطبيق الأندرويد وبعد الانتهاء منه ينتقل إلى مرحلة الاختبار ثم النشر على متجر التطبيقات اندرويد وهو جوجل بلاي ستور Google Play Store وهو سوق تطبيقات الأندرويد.
</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>
	إن معرفة أنواع التطبيقات التي يبنيها مطورو تطبيقات الجوال من أساس عملية برمجة التطبيقات، حيث تحدد المجال الذي تريد أن تتخصص فيه لبرمجة تطبيقات اندرويد، وحاليًا تنحصر أنواع تطبيقات الأندرويد بخيارين اثنين هما:
</p>

<ul>
	<li>
		التطبيقات الأصيلة Native Mobile Apps
	</li>
	<li>
		التطبيقات الهجينة Hybrid Mobile Apps
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112598" href="https://academy.hsoub.com/uploads/monthly_2022_11/63792ddf95213_--.jpg.b91a0759bcf772264ef641f51f16715c.jpg" rel=""><img alt="برمجة تطبيقات الأندرويد" class="ipsImage ipsImage_thumbnailed" data-fileid="112598" data-unique="4l18e0skq" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/63792ddfaa504_--.thumb.jpg.260f79b8ea006eb958bed8d82c32ef3d.jpg"></a>
</p>

<h3>
	تطبيقات الأندرويد الأصيلة Native
</h3>

<p>
	تبنى تطبيقات الأندرويد الأصيلة باستخدام حقيبة التطوير التي توفرها غوغل للمطورين Android SDK، وتختص هذه التطبيقات بنظام تشغيل أندرويد ولا يمكن تشغيلها على أي نظام تشغيل آخر إلا باستخدام محاكٍ مثل بلوستاكس BlueStacks أو أنبوكس Anbox لأنظمة لينكس.
</p>

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

<p>
	من أمثلة تطبيقات الأندرويد الأصيلة: تطبيق متجر Google Play.
</p>

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

		<p class="banner-subtitle">
			تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية.
		</p>

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

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

<h3>
	تطبيقات الأندرويد الهجينة Hybrid
</h3>

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

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

<p>
	من أمثلة تطبيقات الأندرويد الهجينة: تطبيق UBER.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="450" id="ips_uid_3990_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="ما هي تطبيقات الجوال متعددة المنصات" width="800" data-embed-src="https://www.youtube.com/embed/nMnBfl-fQJo"></iframe>
</p>

<h3>
	أنواع تطبيقات أخرى
</h3>

<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="">تطبيقات الويب التقدمية PWA</a> لأنها ليست تطبيقات أندرويد، بل هي تطبيقات ويب يتيح لك المتصفح «تثبيتها»، أي إضافة أيقونتها إلى شاشتك الرئيسة في الجوال وقائمة التطبيقات في نظام التشغيل.
</p>

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

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

<p>
	من أمثلة تطبيقات الويب التقدمية: <a href="https://academy.hsoub.com/apps/productivity/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%85%D9%86%D8%B5%D8%A9-%D8%A3%D9%86%D8%A7-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%87%D8%A7%D8%AA%D9%81-%D8%A7%D9%84%D9%85%D8%AD%D9%85%D9%88%D9%84-r511/" rel="">تطبيق أنا لإدارة المهام</a>.
</p>

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

<p>
	تتنوع لغات برمجة تطبيقات الأندرويد وتتعدد، إذ لكل نوع من أنواع التطبيقات (السابق ذكرها) عدة لغات برمجة يمكن للمطور أن يختار منها وهي:
</p>

<ul>
	<li>
		لغة جافا Java
	</li>
	<li>
		لغة كوتلن Kotlin
	</li>
	<li>
		لغة جافاسكربت JavaScript
	</li>
	<li>
		لغة دارت Dart
	</li>
</ul>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112600" href="https://academy.hsoub.com/uploads/monthly_2022_11/63792de16b925_---.png.eb7a51ea6afc80b36c13d94f1bdef2e8.png" rel=""><img alt="لغات برمجة تطبيقات الأندرويد" class="ipsImage ipsImage_thumbnailed" data-fileid="112600" data-unique="0lvschgfz" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/63792de16b925_---.png.eb7a51ea6afc80b36c13d94f1bdef2e8.png"></a>
</p>

<h3>
	لغة جافا Java
</h3>

<p>
	كانت لغة <a href="https://academy.hsoub.com/programming/java/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%A7-%D9%87%D9%8A%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-java-r1515/" rel="">جافا Java</a> رسميًّا هي لغة البرمجة للأندرويد أول الأمر، إلى أن ظهرت لغة <a href="https://academy.hsoub.com/programming/kotlin/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-kotlin-r603/" rel="">كوتلن Kotlin</a> وحلت محلها، لكن جافا لم تزل اللغة الأكثر استخدامًا لتطوير تطبيقات الأندرويد الأصيلة.
</p>

<p>
	تعد لغة جافا من أهم اللغات في عالم البرمجة، وتتيح استخدام حقيبة تطوير برمجيات الاندرويد الصادرة من غوغل Android Software Development Kit أو SDK، فإذا كنت تعرف لغة جافا من قبل، فقد تكون خيارك الأفضل، أما إذا كنت مبتدئًا لا تعرفها، فقد تجد أن كوتلن Kotlin أسهل منها رغم أنها قريبة عليها.
</p>

<h3>
	لغة كوتلن Kotlin
</h3>

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

<p>
	تتميز كوتلن بتوافقها مع لغة جافا وبأنها تعمل على الأساس الذي تعمل عليه جافا وهو <a href="https://academy.hsoub.com/programming/java/%D8%A2%D9%84%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-%D8%A7%D9%84%D8%A7%D9%81%D8%AA%D8%B1%D8%A7%D8%B6%D9%8A%D8%A9-java-virtual-machine-r964/" rel="">آلة جافا الافتراضية JVM</a>، وتزيل لغة كوتلن تعقيدات لغة جافا وتسهّل عملية كتابة الكود.
</p>

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

<h3>
	لغة جافاسكربت JavaScript
</h3>

<p>
	إذا كنت من مستخدمي <a href="https://wiki.hsoub.com/JavaScript" rel="external" target="_blank">لغة جافاسكربت</a>، يمكنك بدء تعلم برمجة تطبيقات الأندرويد عبر إطار العمل <a href="https://wiki.hsoub.com/ReactNative" rel="external" target="_blank">React Native</a>.
</p>

<p>
	إطار React Native هو <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> مفتوح المصدر أنشأته شركة ميتا لتطوير تطبيقات أندرويد ونظام iOS وويندوز وغيرها من الأنظمة بناء على مكتبة <a href="https://wiki.hsoub.com/React" rel="external" target="_blank">React</a>، ويوفر هذا الإطار الكثير من الوقت والجهد لأنه يساعدك على برمجة تطبيق واحد لمختلف أنظمة التشغيل ومنها أندرويد.
</p>

<p>
	يقترب أداء التطبيقات المطورة بإطار React Native من أداء التطبيقات الأصيلة، لأن كود React Native يترجَم بعد كتابته إلى كود منصة الأندرويد (أو المنصة المستهدفة).
</p>

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

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

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="480" id="ips_uid_1039_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة تطوير التطبيقات باستخدام JavaScript - أكاديمية حسوب" width="853" data-embed-src="https://www.youtube.com/embed/T6CnMmvF4e0"></iframe>
</p>

<h3>
	لغة دارت Dart
</h3>

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

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

<p>
	يعد إطار فلاتر ولغته دارت سهلي التعلّم بالمقارنة مع لغة جافا أو كوتلن مثلًا. لذلك يبدأ كثير من المبتدئين تعلمهم منه، كما يعفيك فلاتر من تعلم تقنيات الويب HTML و CSS و JavaScript، لأنه لا يعتمد عليها، خلافًا لإطار React Native مثلًا.
</p>

<h3>
	لغات أخرى
</h3>

<p>
	يمكن استعمال لغة C++‎ لبرمجة تطبيقات الأندرويد باستعمال حقيبة التطوير الأصيلة للأندرويد Android Native Development Kit أو NDK لكن استعمال هذه اللغة أصعب وأقل مرونة، وقد يؤدي في كثير من الأحيان إلى أخطاء وتعقيدات.
</p>

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

<h2>
	خطوات تعلم برمجة الأندرويد
</h2>

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

<ol>
	<li>
		ألق نظرة على <a href="https://developer.android.com/index.html" rel="external nofollow" target="_blank">موقع أندرويد للمطورين</a>، حاول أن تحيط فهمًا بمكونات النظام والأفكار والتقنيات المطروحة في الموقع. ليس عليك أن تحفظ كل شيء، لكنك سترجع إلى هذا الموقع في المستقبل عندما تبحث.
	</li>
	<li>
		ابدأ بتعلم لغة البرمجة أو الإطار الذي تفضله. لا تنسَ أن غوغل تفضل وتنصح باستخدام لغة كوتلن، لكن المبرمجين يستعملون مختلف لغات البرمجة المذكورة أعلاه لتطوير التطبيقات.
	</li>
	<li>
		ابدأ التكويد.
	</li>
</ol>

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

<p>
	قد تختلف أدوات تطوير تطبيقات الأندرويد باختلاف لغة البرمجة المستخدمة، لكن الأداة الأكثر استعمالًا هي بيئة التطوير أندرويد ستوديو Android Studio، حيت تُتسعمل هذه البيئة مع لغة جافا Java وكوتلن Kotlin، ومع إطار فلاتر Flutter كذلك. بالنسبة لإطار React Native، يمكن استخدام أي بيئة معه من قبيل VS Code.
</p>

<p>
	بيئة أندرويد ستوديو Android Studio هي بيئة متعددة المنصات (يمكن تثبيتها على ويندوز أو لينكس). بعد تحميل ملف التثبيت، افتح وستظهر لك الشاشة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112589" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_1.png.87ab09da8f98826677690a4f9b6b2620.png" rel=""><img alt="تثبيت أندرويد ستوديو Android Studio الخطوة 1" class="ipsImage ipsImage_thumbnailed" data-fileid="112589" data-unique="5emdy05og" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_1.thumb.png.1062feaf74ee78b1ff26ca94608cea46.png"></a>
</p>

<p>
	اختر التثبيت النظامي Standard.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112590" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_2.png.386428cd5b02285918e8b3980aa1faf8.png" rel=""><img alt="تثبيت أندرويد ستوديو Android Studio الخطوة 2" class="ipsImage ipsImage_thumbnailed" data-fileid="112590" data-unique="9ao43jpzy" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_2.thumb.png.a63c13c385e04dc1444a9e44669c22ad.png"></a>
</p>

<p>
	اختر الوضع الليلي أو النهاري حسب اختيارك.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112591" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_3.png.821a6d704b44d66e97743bd68f5a3ae8.png" rel=""><img alt="تثبيت أندرويد ستوديو Android Studio الخطوة 3" class="ipsImage ipsImage_thumbnailed" data-fileid="112591" data-unique="y2m1ah6jn" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_3.thumb.png.a0c23f94aec693f4453953f458a1dd85.png"></a>
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112592" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_4.png.a796fc8bf83d1e053f84043eefa55858.png" rel=""><img alt="تثبيت أندرويد ستوديو Android Studio الخطوة 4" class="ipsImage ipsImage_thumbnailed" data-fileid="112592" data-unique="wxrl9jf1m" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_4.thumb.png.1ea72fcf990167d167622bae97e6918b.png"></a>
</p>

<p>
	ستبدأ عملية تحميل المكونات، وبعد الانتهاء اضغط على Finish.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112593" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_5.png.c02029203eb60668b5189cb9b8ed1f21.png" rel=""><img alt="تثبيت أندرويد ستوديو Android Studio الخطوة 5" class="ipsImage ipsImage_thumbnailed" data-fileid="112593" data-unique="1c2zd63ci" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_5.thumb.png.5f14f7db54e4dac0b0328c717599ca3d.png"></a>
</p>

<p>
	بعد تثبيت البيئة ومكوناتها، نبدأ مشروعًا جديدًا من واجهة البيئة، كما يلي:
</p>

<p>
	اضغط على New Project.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112595" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_7.png.3bd8f7f092e6ab74314091d8e96f78f3.png" rel=""><img alt="إنشاء مشروع عبر أندرويد ستوديو الخطوة 1" class="ipsImage ipsImage_thumbnailed" data-fileid="112595" data-unique="9rn7hr3gn" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_7.thumb.png.ef4cb9d2ff142116582c84db6a2e952a.png"></a>
</p>

<p>
	نختار نشاطًا فارغًا (أو غيره إن شئت) Empty Activity.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112596" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_8.png.227522d7ccb019f74bac6732ea73426f.png" rel=""><img alt="إنشاء مشروع عبر أندرويد ستوديو الخطوة 2" class="ipsImage ipsImage_thumbnailed" data-fileid="112596" data-unique="e04wcqpsc" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_8.thumb.png.eda1f81cd35f7ef0a4c4cc10273570ea.png"></a>
</p>

<p>
	نختار اسم التطبيق ولغة البرمجة المراد استخدامها والإصدار المدعوم الأدنى من نظام أندرويد، ثم نضغط Finish.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112597" href="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_9.png.d32d80922cb6272f2fbbdf6780746a8b.png" rel=""><img alt="إنشاء مشروع عبر أندرويد ستوديو الخطوة 3" class="ipsImage ipsImage_thumbnailed" data-fileid="112597" data-unique="ibxokpnaj" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Android_Studio_9.thumb.png.5ffbf9d495b246f377f0edaaaa07b6fc.png"></a>
</p>

<p>
	يمكنك الآن أن تنطلق في عالم تطوير تطبيقات الاندرويد مع بيئة أندرويد ستوديو Android Studio!
</p>

<h2>
	فرص العمل في سوق تطوير تطبيقات الأندرويد
</h2>

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

<p>
	وبسبب الطلب الكبير وحاجة السوق إلى مبرمجي أندرويد، تجد أن الرواتب في هذا المجال مرتفعة مقارنة برواتب مهن أخرى، حيث يقدّر <a href="https://www.payscale.com/research/AE/Job=Android_Software_Developer/Salary" rel="external nofollow" target="_blank">موقع Payscale</a> متوسط أجور مطوري تطبيقات الأندرويد المتخصصين في الإمارات العربية المتحدة بنحو 87,000 درهم إماراتي سنويًّا. أما في المملكة العربية السعودية، فيقدّر <a href="https://www.payscale.com/research/SA/Job=Android_Software_Developer/Salary" rel="external nofollow" target="_blank">الموقع نفسه</a>، الأجر السنوي لمطور تطبيقات الأندرويد المتخصص بنحو 55,000 ريال سعودي.
</p>

<p>
	كما أنك تستطيع العمل في هذا المجال من منزلك عن بعد، جرب مثلًا البحث عن عمل عن بعد في برمجة تطبيقات الأندرويد عبر موقع <a href="https://baaeed.com" rel="external nofollow" target="_blank">بعيد</a> وستجد أنه لا يخلو عادةً من فرص عمل لمطوري تطبيقات الأندرويد، كذلك يمكنك كذلك عرض خدماتك في موقع <a href="https://khamsat.com/programming/mobile-development" rel="external" target="_blank">خمسات</a> لبرمجة تطبيقات أندرويد، ولا تنسَ أن تطالع المشاريع البرمجية في <a href="https://mostaql.com/projects?category=development&amp;budget_max=10000&amp;sort=latest" rel="external" target="_blank">موقع مستقل</a> التي لطالما كانت مليئة بمشاريع لتطوير وبرمجة تطبيقات الأندرويد بمختلف أنواعها.
</p>

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

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

<ul>
	<li>
		توثيق <a href="https://wiki.hsoub.com/Kotlin" rel="external" target="_blank">لغة كوتلن</a> العربي
	</li>
	<li>
		كتاب <a href="https://itwadi.com/Programmin-Kotlin" rel="external nofollow" target="_blank">أتقن لغة كوتلن</a>
	</li>
	<li>
		سلسلة <a href="https://academy.hsoub.com/search/?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&amp;page=4&amp;sortby=newest" rel="">تعلم لغة جافا</a> ما يزيد عن 80 مقال تعليمي
	</li>
	<li>
		توثيق <a href="https://wiki.hsoub.com/JavaScript" rel="external" target="_blank">لغة جافاسكربت</a>
	</li>
	<li>
		توثيق <a href="https://wiki.hsoub.com/React" rel="external" target="_blank">مكتبة React</a>
	</li>
	<li>
		توثيق <a href="https://wiki.hsoub.com/ReactNative" rel="external" target="_blank">إطار العمل React Native</a>
	</li>
	<li>
		كتاب <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>
	</li>
	<li>
		دورة <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="">تطوير التطبيقات باستخدام لغة جافاسكربت</a>
	</li>
</ul>

<p>
	هذه قائمة بسيطة وسأترك لك الاطلاع على بقية التوثيقات العربية في <a href="https://wiki.hsoub.com" rel="external" target="_blank">موسوعة حسوب</a> التي ستجد فيها كل توثيقات تقنيات الويب مثل HTML و CSS وأيضًا لا تنسَ الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة</a> وأيضًا <a href="https://academy.hsoub.com/files/" rel="">قسم الكتب</a> في أكاديمية حسوب ففيهما مقالات تعليمية وعلم نافع دفين يستحق الاطلاع!
</p>

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

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

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

<p>
	 
</p>

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

<ul>
	<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%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" 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">1802</guid><pubDate>Sat, 26 Nov 2022 16:07:00 +0000</pubDate></item><item><title>&#x639;&#x644;&#x645;&#x627;&#x621; &#x627;&#x644;&#x62D;&#x627;&#x633;&#x628;: &#x639;&#x644;&#x645;&#x627;&#x621; &#x62A;&#x631;&#x643;&#x648;&#x627; &#x623;&#x62B;&#x631;&#x64B;&#x627; &#x641;&#x64A; &#x639;&#x644;&#x648;&#x645; &#x627;&#x644;&#x62D;&#x627;&#x633;&#x628;</title><link>https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%85%D8%A7%D8%A1-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D8%A8-%D8%B9%D9%84%D9%85%D8%A7%D8%A1-%D8%AA%D8%B1%D9%83%D9%88%D8%A7-%D8%A3%D8%AB%D8%B1%D9%8B%D8%A7-%D9%81%D9%8A-%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D8%A8-r1803/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_11/637c657eca4b9_-----.png.48834d49688aaa0b3ffdfef4641b746c.png" /></p>
<p>
	 سنتحدث في هذا المقال عن أشهر علماء الحاسب أولئك الذين تغير علم الحاسوب بعدهم وتركوا بصمة فيه لنسلط الضوء على إنجازاتهم ونفتخر بهم وبأن قسم كبير منهم كانوا من العلماء العرب، فهل أنت جاهز للتعرف عليهم؟ لنبدأ! 
</p>

<h2>
	من هو عالم الحاسب؟
</h2>

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

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

<h2>
	أهم علماء الحاسب
</h2>

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

<h3>
	تيم بيرنرز-لي Tim Berners-Lee
</h3>

<p style="text-align: center;">
	<img alt="عالم الحاسوب تيم بيرنرز-لي Tim Berners-Lee" class="ipsImage ipsImage_thumbnailed" data-fileid="112674" data-unique="q7bakw8ng" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Sir_Tim_Berners-Lee_(cropped).jpg.686710c582fc2e02e11eedfa9f607462.jpg">
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=53878695" rel="external nofollow">Paul Clarke</a>، منشورة برخصة CC BY-SA 4.0
</p>

<p>
	أحد أشهر علماء الحاسب البريطانيين، أنشأ أول نسخة من الشبكة العالمية WWW (شبكة الإنترنت) عام 1989. عمل كمهندس في شركة اتصالات ثم انضم إلى المنظمة الأوروبية للبحث النووي CERN في عام 1980 ثم مرة أخرى في 1984 وقرر اختبار نموذج الربط التشعبي فيه إذ كان أكبر شبكة إنترنت في أوروبا وقتها، وهو ما شكل الأساس فيما بعد لشبكة الويب التي تقوم على الروابط المتشعبة Hyper Links باستخدام بروتوكول نقل النصوص الفائقة Hyper Text Transfer Protocol أو <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-http-%D8%B4%D8%B1%D8%AD-%D8%A7%D9%84%D8%AA%D8%AE%D8%A7%D8%B7%D8%A8-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%84-%D9%88%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-r74/" rel="">HTTP</a>.
</p>

<h3>
	فينتون سيرف Venton Cerf
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112669" href="https://academy.hsoub.com/uploads/monthly_2022_11/Dr_Vint_Cerf_ForMemRS.jpg.ec1324bf6569d8490a3bec8603e5b16e.jpg" rel=""><img alt="فينتون سيرف Venton Cerf" class="ipsImage ipsImage_thumbnailed" data-fileid="112669" data-unique="skmiexj3s" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Dr_Vint_Cerf_ForMemRS.thumb.jpg.e09c981fb1b40d05efca899d13981f1b.jpg"></a>
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=54362824" rel="external nofollow">Duncan.Hull</a> منشورة برخصة  CC BY-SA 4.0 
</p>

<p>
	أحد علماء الحاسب الأمريكيين، يُعد أحد آباء الإنترنت الذين أنشأوه حيث كتب أول <a href="https://academy.hsoub.com/devops/servers/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-tcpip-%D9%88%D8%A8%D8%B9%D8%B6-%D9%85%D9%86-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA%D9%87-r169/" rel="">بروتوكول TCP</a> بالاشتراك مع يوجين دلال Yogen Dalal وكارل صنشاين Carl Sunshine.
</p>

<p>
	عمل كذلك كأستاذ مساعد في جامعة ستانفورد في عام 1972 لأربعة سنوات أجرى فيها أبحاثًا حول بروتوكولات الاتصالات الشبكية، وصمم حزمة DoD TCP/IP بالاشتراك مع بوب خان Bob Kahn.
</p>

<h3>
	آلان تيورنج Alan Turing
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112667" href="https://academy.hsoub.com/uploads/monthly_2022_11/Alan_Turing_Aged_16.jpg.8b8a8aa508111ce88c22c256d1c16213.jpg" rel=""><img alt="عالم الحاسب آلان تيورنج Alan Turing" class="ipsImage ipsImage_thumbnailed" data-fileid="112667" data-unique="cmjezncga" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Alan_Turing_Aged_16.thumb.jpg.12885abf6b91ae7b51e2cfea37d75dfa.jpg"></a>
</p>

<p>
	رياضي بريطاني وأحد أهم علماء الحاسب البريطانيين الذين عملوا أثناء الحرب العالمية الثانية في المدرسة الحكومية البريطانية للتشفير والتعمية Government Code and Cypher School على فك تشفير آلة إنيجما الألمانية التي استُخدمت في تشفير الرسائل الألمانية العسكرية، وكتب ورقتين حول استخدام التحليل الرياضي لتحديد الإعدادات الأقرب التي يمكن استخدامها بسرعة لفك الشيفرة المستخدمة، ولم تُنشر هاتان الورقتان للعلن إلا في عام 2012.
</p>

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

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

<h3>
	طاهر الجمل
</h3>

<p style="text-align: center;">
	<img alt="طاهر الجمل أحد علماء الحاسب" class="ipsImage ipsImage_thumbnailed" data-fileid="112675" data-unique="7jlrsz35d" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Taher_Elgamal_it-sa_2010.jpg.95865a035f74260a815f107bfca3f302.jpg">
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="http://xn--https-zih/commons.wikimedia.org/w/index.php?curid=11855312" rel="external nofollow">Alexander Klink</a> منشورة برخصة CC BY 3.0
</p>

<p>
	أحد أشهر علماء الحاسب العرب من الحاصلين على الجنسية الأمريكية إذ هو مصري الأصل، يُعزى إليه الفضل في إنشاء بروتوكول <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr></abbr> أثناء عمله في شركة Netscape، إضافة إلى نظام تعمية عُرف باسمه <a href="https://ar.wikipedia.org/wiki/%D8%AA%D8%B4%D9%81%D9%8A%D8%B1_%D8%A7%D9%84%D8%AC%D9%85%D9%84" rel="external nofollow">ElGamal encryption system</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>


<h3>
	عباس الجمل
</h3>

<p style="text-align: center;">
	<img alt="عباس الجمل" class="ipsImage ipsImage_thumbnailed" data-fileid="112676" data-unique="t1c01k109" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/AbbasElGamal.png.a6ce5a6695aa9065d0b301ff156ead26.png">
</p>

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

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

<h3>
	لينوس تورفالدز Linus Torvalds
</h3>

<p style="text-align: center;">
	<img alt="عالم الحاسوب لينوس تورفالدز Linus Torvalds" class="ipsImage ipsImage_thumbnailed" data-fileid="112680" data-unique="8shae1is7" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/317px-Linus_Torvalds_talking.jpeg.1b457395e8c0e7f3b2b35fc12ff363f2.jpeg">
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=17993" rel="external nofollow">kuvaaja - Linuxmag.com</a> منشورة برخصة CC BY-SA 3.0
</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>، وهو أمريكي فنلندي، حيث يُنسب إليه اختراع نواة <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> في 1991، وقد تطور نظام لينكس وتوسع انتشاره ليصبح من أهم نظم التشغيل حاليًا، إذ تعمل به جميع الحواسيب الخارقة في العالم، ويُبنى عليه نظام أندرويد الذي تعمل به أكثر الهواتف.
</p>

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

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

<h3>
	ريتشارد ستولمان Richard Stallman
</h3>

<p style="text-align: center;">
	<img alt="ريتشارد ستولمان" class="ipsImage ipsImage_thumbnailed" data-fileid="112678" data-unique="x6vwrcu6k" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Richard-Stallman.jpg.a1e0459e95cddfd6910e692b98a2d23a.jpg">
</p>

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

<p>
	وقد بُني على هذا النظام أول نواة لينكس التي طورها لينوس تورفالدز الذي ذكرناه قبل قليل.
</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>
	دينيس ريتشي Dennis Ritchie
</h3>

<p style="text-align: center;">
	<img alt="عالم الحاسب دينيس ريتشي Dennis Ritchie" class="ipsImage ipsImage_thumbnailed" data-fileid="112668" data-unique="ffhrg2y10" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Dennis_Ritchie_2011.jpg.b9f30e3cb7bbbbb1852bbab0ff39cbf1.jpg">
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=20276654" rel="external nofollow">Denise Panyik-Dale</a> - منشورة برخصة CC BY 2.0
</p>

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

<p>
	كذلك يُنسب إليه الفضل في إنشاء <a href="https://academy.hsoub.com/programming/c/" rel="">لغة البرمجة C</a>، مع بريان كيرنيهان Brian Kernighan، وهي اللغة الأشهر منذ إصدارها في السبعينات إلى الآن، وتُستخدم في برمجة أنظمة التشغيل وتعريفات العتاد والبرامج والتطبيقات، رغم تراجع استخدامها في التطبيقات مؤخرًا، ولا يزال كتابهما الذي أصدر كدليل للغة في 1972 صالحًا للتطبيق حتى الآن، مما يشهد بمدى تقدم تلك اللغة وقت إصدارها والنقلة النوعية التي أحدثتها في الوسط التقني.
</p>

<h3>
	كين تومبسون Ken Thompson
</h3>

<p style="text-align: center;">
	<img alt="كين تومبسون Ken Thompson" class="ipsImage ipsImage_thumbnailed" data-fileid="112673" data-unique="vavir65wi" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Ken-Thompson-2019.png.03f8f11c7ce3095f53e5216d57404f2d.png">
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=122644515" rel="external nofollow">National Inventors Hall of Fame</a> منشورة برخصة CC BY-SA 3.0
</p>

<p>
	أحد علماء الحاسب الأمريكيين الأوائل، عمل في <a href="https://ar.wikipedia.org/wiki/%D9%85%D8%AE%D8%AA%D8%A8%D8%B1%D8%A7%D8%AA_%D8%A8%D9%84" rel="external nofollow">مختبرات بل</a> Bell Labs حقبة من الزمن وقد ساهم في تصميم نظام التشغيل يونكس UNIX وتشييده وقد ساهم في اختراع <a href="https://en.wikipedia.org/wiki/B_(programming_language)" rel="external nofollow">لغة B</a> مع دينيس ريتشي اللغة التي تسبق مباشرةً لغة سي C، وقد ساهم أيضًا في اختراع نظام التشغيل Plan 9 وتطويره.
</p>

<p>
	انتقل كين للعمل في شركة غوغل Google منذ عام 2006 حيث أضاف إلى سجل إنجازاته المساهمة في تطوير لغة جو Go، ونذكر أيضًا من تلك الإنجازات العمل على <a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D8%A8%D9%8A%D8%B1-%D8%A7%D9%84%D9%86%D9%85%D8%B7%D9%8A%D8%A9-regular-expressions-r63/" rel="">التعابير النمطية RegEx</a> وتعريف الترميز UTF-8.
</p>

<p>
	حصد كين تسعة جوائز معتبرة منها جائزة تيورنج Turing Award مع شريكه دينيس ريتشي عام 1983 وآخرها جاهزة Japan Prize عام 2011 تقديرًا لإنجازاته وجهوده المبذولة.
</p>

<h3>
	جيمس غوسلينغ James Gosling
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112672" href="https://academy.hsoub.com/uploads/monthly_2022_11/James_Gosling_2008-2.jpg.8b1527f9486f30ca2f1958a1638b07f9.jpg" rel=""><img alt="عالم الحاسب جيمس غوسلينغ James Gosling" class="ipsImage ipsImage_thumbnailed" data-fileid="112672" data-unique="ucvx1ntn3" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/James_Gosling_2008-2.thumb.jpg.9d8a5b3682db0c4d7526fda6274fcc39.jpg"></a>
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=5168346" rel="external nofollow">Eugene Zelenko</a> منشورة برخصة CC BY-SA 4.0
</p>

<p>
	عالم حاسوب كندي الأصل اشتهر شهرة كبيرة في تأسيسه للغة <a href="https://academy.hsoub.com/programming/java/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%A7-%D9%87%D9%8A%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-java-r1515/" rel="">جافا Java</a> الشهيرة وتصميمه لها ولمعماريتها المتمثلة في آلة جافا الافتراضية Java VM، كما له مساهمات معتبرة في اختراع النوافذ windows ضمن أنظمة التشغيل، إذ كان من أوائل من اخترع نظام النافذة في نظام التشغيل يونيكس تحت مظلة شركة Sun Microsystems.
</p>

<h3>
	محمد عطا الله
</h3>

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

<h3>
	حاتم زغلول
</h3>

<p style="text-align: center;">
	<img alt="حاتم زغلول" class="ipsImage ipsImage_thumbnailed" data-fileid="112671" data-unique="7tkaze61r" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/Hatim_Zaghloul_2012.jpg.c16b92c5b038f31049ebd8b93a808b38.jpg">
</p>

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

<h3>
	محمد بن موسى الخوارزمي
</h3>

<p style="text-align: center;">
	<img alt="العالم محمد بن موسى الخوارزمي" class="ipsImage ipsImage_thumbnailed" data-fileid="112679" data-unique="v7b28qyqm" style="width: 280px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/332px-Al-Khwarizmi_portrait.jpg.0971fbb8c460670659eb727fb798b313.jpg">
</p>

<p style="text-align: center;">
	الصورة بواسطة <a href="https://commons.wikimedia.org/w/index.php?curid=97295798" rel="external nofollow">ميشيل بكني</a> مشتقة من 1983 CPA 5426.jpg و CC BY-SA 4.0
</p>

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

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

<h3>
	يعقوب بن إسحاق الكِندي
</h3>

<p>
	هو أحد العلماء المسلمين في القرن الثاني الهجري، برع في الفلسفة والرياضة والفلك والطب، لكننا سنركز على أعماله في <a href="https://academy.hsoub.com/devops/linux/%D8%AA%D9%82%D9%86%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B9%D9%8A%D9%85%D8%A9-cryptography-%D9%88%D8%A7%D9%84%D8%AA%D8%B4%D9%81%D9%8A%D8%B1-encryption-%D9%88%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D8%A7%D8%AA%D9%87%D8%A7-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r236/" rel="">التشفير والتعمية cryptography</a> هنا، حيث كان له الفضل في تطوير أسلوب في التعمية لتحليل الاختلاف في وتيرة حدوث الحروف في الرسائل بالتحليل الإحصائي، ومن ثم فك الشفرات التي كُتبت بها، وقد فصّل ذلك في <a href="https://web.archive.org/web/20181005052734/http://www.muslimheritage.com/article/al-kindi-cryptography-code-breaking-and-ciphers" rel="external nofollow">مخطوطة</a> وُجدت في الأرشيف العثماني في اسطنبول بعنوان "مخطوط في فك رسائل التشفير".
</p>

<h3>
	الخليل بن أحمد الفراهيدي
</h3>

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

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

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

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

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

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

<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/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>
</ul>
]]></description><guid isPermaLink="false">1803</guid><pubDate>Wed, 23 Nov 2022 15:09:00 +0000</pubDate></item><item><title>&#x645;&#x642;&#x627;&#x631;&#x646;&#x629; PHP &#x648; Node.js</title><link>https://academy.hsoub.com/programming/general/%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-php-%D9%88-nodejs-r2072/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/PHPNodeJS.png.be00e1e76dc292c7130e686b4195af0b.png" /></p>
<p>
	في هذا الفيديو سنجري مقارنة بين Node.js و <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>ونفاضل بين ميزاتهما ونقاط قوتهما في بناء مواقع الويب، حيث أن PHP لغة برمجة بحد ذاتها فإن Node.JS هي بيئة تطوير للواجهات الخلفية تستعمل لغة البرمجة جافاسكربت JavaScript وكلاهما مميزان في مجال برمجة مواقع الويب.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_829_16" src="https://academy.hsoub.com/applications/core/interface/index.html" title="مقارنة PHP و Node.js" width="1072" data-embed-src="https://www.youtube.com/embed/dtsJyxajGpI"></iframe>
</p>

<p>
	إذا أردت التعرف أكثر وباحترافية على php و javascript، فننصحك بالانضمام إلى دورة <a href="https://academy.hsoub.com/learn/php-web-application-development/?utm_source=youtube.com&amp;utm_medium=referral&amp;utm_campaign=academy-22nov23" rel="">تطوير تطبيقات الويب باستخدام لغة PHP</a> و<a href="https://academy.hsoub.com/learn/javascript-application-development/?utm_source=youtube.com&amp;utm_medium=referral&amp;utm_campaign=academy-22nov23" rel="">دورة تطوير التطبيقات باستخدام لغة JavaScript</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">2072</guid><pubDate>Wed, 23 Nov 2022 15:00:00 +0000</pubDate></item><item><title>&#x628;&#x631;&#x645;&#x62C;&#x629; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A; &#x627;&#x644;&#x62C;&#x648;&#x627;&#x644;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_11/6379231ee794e_--.png.cca8e0c08322ef3e91f9b682859b78c5.png" /></p>
<p>
	برمجة تطبيقات الجوال أصبحت واحدة من أهم المهن في عالمنا الحديث بسبب انتشارها الواسع واعتمادنا عليها في حياتنا اليومية، إذ تطبيقات الجوال هي ببساطة برامج مصممة لتعمل على أجهزة الجوال المحمولة، كالهواتف المحمولة والأجهزة اللوحية والساعات الذكية.
</p>

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

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

<h2>
	أهمية تطبيقات الجوال ومدى انتشارها
</h2>

<p>
	وفقًا لموقع Statistica في إحصائيته عام 2021، بلغ عدد مستخدمي الجوالات أكثر من <a href="https://www.statista.com/statistics/330695/number-of-smartphone-users-worldwide/" rel="external nofollow">6 مليارات إنسان</a> ولاحظ أن عدد البشرية اليوم وصل إلى 8 مليارات بحسب إحصائيات <a href="https://www.worldometers.info/world-population/" rel="external nofollow">WorldoMeters</a>، مع توقعات بأن يبلغ أكثر من سبعة مليارات ونصف المليار عام 2027. لا غرابة إذن في أن برمجة تطبيقات الجوال صناعة مزدهرة ومقبلة على مستقبل مشرق.
</p>

<p>
	أما في عالمنا العربي، بلغ عدد مستخدمي الجوالات الذكية في مصر عام 2021 قريبًا من <a href="https://newzoo.com/insights/rankings/top-countries-by-smartphone-penetration-and-users" rel="external nofollow">50 مليون مستخدم</a>، أي ما يقارب نصف عدد السكان الكلي. في عام 2019، بلغ عدد مستخدمي الجوالات في المملكة العربية السعودية <a href="https://www.statista.com/statistics/494616/smartphone-users-in-saudi-arabia/" rel="external nofollow">28.81 مليون مستخدمًا</a>، أي ما يكافئ 84% من تعداد السكان.
</p>

<p>
	إليك بعض الإحصائيات التي قد تثير اهتمامك وتوضح مدى استخدام الجوال وتطبيقات الجوال:
</p>

<ol>
	<li>
		حسب <a href="https://datareportal.com/reports/digital-2022-time-spent-with-connected-tech" rel="external nofollow">تقرير موقع DataReportal عام 2022</a>، تبلغ حصة الجوالات من وقت الشباب على الإنترنت أكثر من 53% ، والمقصود بالشباب هنا الذين في عمر العمل (من عمر 15 إلى 64).
	</li>
	<li>
		حسب <a href="https://www.data.ai/en/go/state-of-mobile-2022" rel="external nofollow">تقرير State of Mobile الصادر عن موقع data.ai</a>، يقضي مستخدم الجوال العادي بالمتوسط 4 ساعات و 48 دقيقة من يومه في استعمال الجوال.
	</li>
	<li>
		ستبلغ عائدات تطبيقات الجوال <a href="https://www.statista.com/outlook/dmo/app/worldwide" rel="external nofollow">430 مليار دولار في 2022</a>، حسب بيانات موقع Statistica.
	</li>
	<li>
		حسب <a href="https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/average-number-of-apps-on-smartphones/" rel="external nofollow">إحصائيات غوغل وإبسوس الصادرة في أكتوبر 2016</a>، يحتوي جوال المستخدم المتوسط 35 تطبيقًا مثبتًا.
	</li>
</ol>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112582" href="https://academy.hsoub.com/uploads/monthly_2022_11/63792172ba9f1_---.png.3b62db0c0cba018aca93b16cd91c3f2c.png" rel=""><img alt="حجم سوق تطبيقات الجوال" class="ipsImage ipsImage_thumbnailed" data-fileid="112582" data-unique="f05y4cewk" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/63792172ba9f1_---.png.3b62db0c0cba018aca93b16cd91c3f2c.png"></a>
</p>

<h2>
	أشهر منصات الجوال: مقارنة بين أندرويد ونظام iOS
</h2>

<p>
	لا نكاد نرى في سوق تطبيقات الجوال اليوم نظامًا سوى أندرويد Android ونظام iOS (نظام جوالات الآيفون)، فحسب <a href="https://www.statista.com/statistics/272698/global-market-share-held-by-mobile-operating-systems-since-2009/" rel="external nofollow">إحصائيات موقع Statistica</a>، بلغ نصيب نظام أندرويد من سوق أنظمة الجوالات العالمي في أغسطس 2022 أكثر من 71%، في حين كان نصيب نظام iOS أقل من 28%، أما الأنظمة الأخرى فلم تبلغ حصتها إلا 0.65%. أما في المملكة العربية السعودية، <a href="https://gs.statcounter.com/os-market-share/mobile/saudi-arabia" rel="external nofollow">وفقًا لإحصائيات موقع statcounter</a>، يحتل نظام iOS الصدارة إذ بلغ نصيبه في سبتمبر 2022 أكثر من 54%، أما نظام أندرويد فاحتل المرتبة الثانية إذ بلغت نسبته من السوق الإجمالي أقل من 46%. وحسب <a href="https://gs.statcounter.com/os-market-share/mobile/egypt" rel="external nofollow">إحصائيات الموقع نفسه</a>، احتل اندرويد الصدارة المطلقة في مصر حيث بلغت حصته من سوق منصات الجوال 86% في سبتمبر 2022، أما نظام iOS فاكتفى بأقل من 14%.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112584" href="https://academy.hsoub.com/uploads/monthly_2022_11/637922d2f1217_-------iOS.png.b6081e02142d70cf432091ad04d95713.png" rel=""><img alt="مقارنة بين أندرويد ونظام iOS" class="ipsImage ipsImage_thumbnailed" data-fileid="112584" data-unique="qhw1471va" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/637922d6986c5_-------iOS.thumb.png.e422a210d2482c7fff40fdddded971a6.png"></a>
</p>

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

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

		<p class="banner-subtitle">
			تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية.
		</p>

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

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

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

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

<ol>
	<li>
		وضع المتطلبات
	</li>
	<li>
		تصميم تطبيق الجوال
	</li>
	<li>
		برمجة التطبيق
	</li>
	<li>
		اختبار التطبيق ونشره
	</li>
</ol>

<h3>
	وضع المتطلبات
</h3>

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

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

<p style="text-align: center;">
	<iframe allowfullscreen="" frameborder="0" height="450" src="https://player.vimeo.com/video/739394339" width="800"></iframe>
</p>

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

<p>
	في المرحلة الثانية، بعد فهم التطبيق وميزاته والمستخدمين الذين سيستخدمونه، يستطيع فريق التصميم البدء ببناء واجهات أولية وتطويرها حتى تبلغ الشمول والكمال، وتُستعمَل في هذه المرحلة <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>، حيث تساعد هذه البرامج على بناء الواجهات واختبارها وتحديد المطلوب منها وإجراء أي تعديلات نهائية قبل البدء بمرحلة البرمجة والتطوير، إذ كل ذلك يختصر من مرحلة برمجة الواجهات ويسهل على المبرمج معرفة المطلوب بدقة.
</p>

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

<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%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/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>
	تقتضي المرحلة الرابعة اختبار المنتج بعد تطويره ثم نشره على متاجر تطبيقات الجوال المستهدفة للمنصة مثل متجر Google Play على منصة أندرويد ومتجر App Store على منصة iOS.
</p>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112585" href="https://academy.hsoub.com/uploads/monthly_2022_11/637922d8dce76_--.jpg.51f8745c6bef0c9868a5c648f8aa7f14.jpg" rel=""><img alt="منهجيات تطوير تطبيقات الجوال" class="ipsImage ipsImage_thumbnailed" data-fileid="112585" data-unique="g18nr18fs" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/637922d8f3970_--.thumb.jpg.3be623b9284ae5eff46cc0fce386332e.jpg"></a>
</p>

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

<ol>
	<li>
		تطبيقات الجوال الأصيلة Native Apps
	</li>
	<li>
		تطبيقات الجوال الأصيلة متعددة المنصات Cross-Platform Apps
	</li>
	<li>
		تطبيقات الجوال الهجينة Hybrid Apps
	</li>
	<li>
		تطبيقات الويب التقدمية Progressive Web Apps
	</li>
</ol>

<h3>
	تطبيقات الجوال الأصيلة Native Apps
</h3>

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

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

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

<p>
	من أمثلة تطبيقات الجوال الأصيلة: تطبيق التقويم وتطبيق الكاميرا ومتجر التطبيقات الأساسي في جوالك.
</p>

<h3>
	تطبيقات الجوال متعددة المنصات Cross-Platform Apps
</h3>

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

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

<p>
	من أمثلة تطبيقات الجوال متعددة المنصات: متصفح Chrome، وفيرفكس، وتطبيق Adobe Reader، وغيرها.
</p>

<h3>
	تطبيقات الجوال الهجينة Hybrid Apps
</h3>

<p>
	تطبيقات الجوال الهجينة هي في حقيقتها تطبيقات ويب تظهر بمظهر تطبيقات الجوال ومغلفة بغلاف مخصص لعرضها ضمن الجوال، إذ تستعمل تطبيقات الجوال الهجينة في عرضها ضمن الجوال محركات عرض صفحات الويب WebView التي تستعملها متصفحات الويب.
</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>

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

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

<p>
	من أمثلة تطبيقات الجوال الهجينة: تطبيق Evernote وتطبيق UBER.
</p>

<h3>
	تطبيقات الويب التقدمية Progressive Web Apps
</h3>

<p>
	تشابه <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%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-r832/" rel="">تطبيقات الويب التقدمية PWA</a> تطبيقات الجوال الهجينة من حيث أنها تبنى باستخدام تقنيات الويب وتُعرض عبر متصفح الويب نفسه وتكون مخصصة لتظهر بمظهر تطبيق جوال أي الواجهات مناسبة للشاشات الصغيرة والمتوسطة كما أنها تعمل عند عدم الاتصال بالإنترنت عبر تخزين البيانات اللازمة لعرض صفحات التطبيق ولكن بمحدودية كبيرة حيث في النهاية تحتاج إلى اتصال في الإنترنت.
</p>

<p>
	تُضاف تطبيقات الويب التقدمية إلى الجوال من المتصفح، باستخدام خيار «إضافة إلى الشاشة الرئيسية» الذي يظهر عندما يفتح المتصفح تطبيق ويب تقدمي كما أن هنالك نهج حاليًا لنشر هذه التطبيقات ضمن متاجر تطبيقات المنصات مثل متجر جوجل بلاي Google Play وآب ستور App Store، وما يجري إضافته إلى نظام التشغيل أيقونة التطبيق ومعلومات عنه ليظهر ضمن قائمة التطبيقات وهيكل أساسي يُعرض في وضع عدم الاتصال عند فتحه دون إنترنت لذا تجد حجمها صغيرٌ جدًا بالمقارنة مع التطبيقات الأصيلة في نظام التشغيل.
</p>

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

<p>
	من أمثلة تطبيقات الويب التقدمية: تطبيق إدارة المهام <a href="https://academy.hsoub.com/apps/productivity/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D9%85-%D9%88%D8%A2%D9%84%D9%8A%D8%A9-%D8%AA%D9%86%D8%B8%D9%8A%D9%85%D9%87%D8%A7-%D8%B9%D8%A8%D8%B1-%D9%85%D9%86%D8%B5%D8%A9-%D8%A3%D9%86%D8%A7-r468/" rel="">أنا</a> وتطبيق Starbucks وتطبيق Flipboard.
</p>

<h3>
	مقارنة بين التطبيقات الأصيلة ومتعددة المنصات والهجينة
</h3>

<p>
	لكل من هذه المنهجيات محاسن ومساوئ، يستعرضها هذا الجدول:
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:center">
				التطبيقات الأصيلة
			</th>
			<th style="text-align:center">
				التطبيقات متعددة الأنظمة
			</th>
			<th style="text-align:center">
				التطبيقات الهجينة
			</th>
			<th style="text-align:center">
				التطبيقات التقدمية
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:center">
				تطوَّر باستعمال حقائب التطوير التي يقدمها ملّاك المنصات مثل آبل وغوغل. وتعمل على منصة واحدة.
			</td>
			<td style="text-align:center">
				تطور باستعمال لغات برمجة متنوعة ثم تصرَّف لكل نظام على حدة.
			</td>
			<td style="text-align:center">
				تبنى التطبيقات الهجينة باستخدام أحدث تقنيات الويب مثل HTML، وCSS، وJavaScript، ثم تجمَّع في تطبيق جوال للنظام المستهدف. تختلف التطبيقات الهجينة عن التطبيقات متعددة الأنظمة من حيث أنها تستعمل حاويات الويب ونظام المتصفح.
			</td>
			<td style="text-align:center">
				لا تتطلب تطبيقات الويب التقدمية تطوير تطبيقات أصيلة أو متعددة الأنظمة. تتجاوز هذه التطبيقات متاجر التطبيقات، وتعمل من المتصفح مباشرة، سواء أكان الجهاز حاسوبًا أم جوالًا. يُضاف إلى شاشة الجوال أيقونة تطبيق هي رابط إلى التطبيق. التطبيقات التقدمية في حقيقتها تطبيقات ويب تعمل على الجوال.
			</td>
		</tr>
		<tr>
			<td style="text-align:center">
				تقدم أفضل سرعة وأداء.
			</td>
			<td style="text-align:center">
				كود واحد للأنظمة المختلفة.
			</td>
			<td style="text-align:center">
				الكود مشترك بين الويب وتطبيق الجوال.
			</td>
			<td style="text-align:center">
				تعمل التطبيقات على الويب كما تعمل على الجوال.
			</td>
		</tr>
		<tr>
			<td style="text-align:center">
				فيها تكاليف عالية لبناء وصيانة كود لكل منصة مفردة.
			</td>
			<td style="text-align:center">
				في ظل غياب المكتبات الأصيلة، لا بد من الاعتماد على مكتبات مفتوحة المصدر.
			</td>
			<td style="text-align:center">
				أداؤه ليس كالأصيل، لأنه مبني باستخدام تطبيقات مخصصة للويب.
			</td>
			<td style="text-align:center">
				ما من دعم للأجهزة الأصيلة. تعمل على قدرات المتصفح فقط.
			</td>
		</tr>
		<tr>
			<td style="text-align:center">
				لا بد من تطبيق الميزات بطرق مختلفة حسب حقيبة التطوير التي تقدمها المنصة.
			</td>
			<td style="text-align:center">
				لم يكتب الكود بالمكتبة الأصيلة، أي لا بد من تصريفه وجسره، وهي عملية قد تكون صعبة.
			</td>
			<td style="text-align:center">
				لا توفر دعمًا للأجهزة الأصيلة.
			</td>
			<td style="text-align:center">
				إذا فُقد الاتصال، خسر التطبيق تفاعله إلى حد كبير.
			</td>
		</tr>
	</tbody>
</table>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
<h3>
	أفضل طريقة لبرمجة تطبيقات الجوال
</h3>

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

<p>
	إليك بعض النقاط التي تساعد في الاختيار:
</p>

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

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="450" id="ips_uid_9348_16" src="https://academy.hsoub.com/applications/core/interface/index.html" title="أساليب تطوير تطبيقات الجوال" width="800" data-embed-src="https://www.youtube.com/embed/Rn2F9bLC5UU"></iframe>
</p>

<h2>
	تصميم تطبيقات الجوال: واجهة المستخدم وتجربة المستخدم UI/UX
</h2>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="112583" href="https://academy.hsoub.com/uploads/monthly_2022_11/63792178eaf67_--.jpg.57443235e11b9088160bf68247f2670e.jpg" rel=""><img alt="تصميم تطبيقات الجوال UI/UX" class="ipsImage ipsImage_thumbnailed" data-fileid="112583" data-unique="5jmu53uki" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/637921790c4d9_--.thumb.jpg.990245cf4c4d1e3aa249d03f693982f8.jpg"></a>
</p>

<h3>
	تصميم واجهة المستخدم User Interface
</h3>

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

<h3>
	تصميم تجربة المستخدم User eXperience
</h3>

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

<p>
	تشمل تجربة المستخدم عوامل كثيرة منها المظهر وسهولة الوصول وسهولة الاستخدام وأداء النظام وفائدته وغير ذلك وهنا عدة <a href="https://lawsofux.com/ar/" rel="external nofollow">قوانين لتجربة المستخدم</a> يطبقها المصمم مثل تأثير الاستخدام الجمال وتأثير التدرج نحو الهدف وتأثير الموقع التسلسلي وغيرها.
</p>

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

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

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

<p style="text-align: center;">
	<img alt="لغات برمجة تطبيقات الجوال" class="ipsImage ipsImage_thumbnailed" data-fileid="112587" data-unique="k5ys6dhra" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/63792c45ec214_---.png.c15d2d37b5126160cdc7355af02f6f11.png">
</p>

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

<p>
	عند برمجة تطبيقات الجوال الأصيلة، لا بد من الرجوع إلى حقائب التطوير ولغات البرمجة التي يوفرها أصحاب المنصات لمطوري التطبيقات وهي:
</p>

<ul>
	<li>
		لغة سويفت Swift لتطوير تطبيقات منصة iOS
	</li>
	<li>
		لغة كوتلن Kotlin لتطوير تطبيقات منصة أندرويد
	</li>
</ul>

<h4>
	سويفت Swift
</h4>

<p>
	تعد لغة سويفت Swift اللغة الرسمية من آبل وعند مقارنتها باللغات المستعملة في برمجة تطبيقات أندرويد، نجد أنها أسهل وتتطلب عملًا أقل، ويجعل فرق العمل هذا تطبيقات iOS أوفر وقتًا وجهدًا بالمقارنة مع تطبيقات أندرويد.
</p>

<h4>
	كوتلن Kotlin
</h4>

<p>
	أما تطبيقات أندرويد فيستعمل مطوروها عادةً لغة <a href="https://academy.hsoub.com/programming/kotlin" rel="">كوتلن Kotlin</a> الرسمية أو يمكن استعمال لغة <a href="https://academy.hsoub.com/programming/java/" rel="">جافا Java</a> التي كانت رسمية قبلها مع بيئة Android Studio التي توفرها شركة غوغل للمطورين، كما تتطلب تطبيقات أندرويد وقتًا أطول في التطوير والصيانة، بسبب تنوع الأجهزة وتعدد إصدارات النظام في السوق.
</p>

<p>
	يمكن الرجوع إلى توثيق <a href="https://wiki.hsoub.com/Kotlin" rel="external">لغة كوتلن</a> العربي في موسوعة حسوب لمزيد من التفاصيل عنها.
</p>

<h3>
	لغات برمجة التطبيقات متعددة المنصات
</h3>

<p>
	تتوفر أطر عمل تُستعمَل في بناء تطبيقات الجوال مرة واحدة ثم تُصدَّر لتعمل على مختلف المنصات وهي:
</p>

<ul>
	<li>
		ريآكت نيتف React Native
	</li>
	<li>
		فلاتر Flutter
	</li>
	<li>
		أيونيك Ionic
	</li>
</ul>

<h4>
	ريآكت نيتف React Native
</h4>

<p>
	يعد إطار <a href="https://academy.hsoub.com/programming/javascript/react/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-react-native-r1264/" rel="">React Native</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="">برمجة التطبيقات</a> متعددة المنصات، فبحسب <a href="https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/" rel="external nofollow">إحصائيات موقع Statistica</a> إن 38% من مطوري تطبيقات الجوال متعددة المنصات يستعملون إطار React Native.
</p>

<p>
	يتميز إطار React Native بأنه يستعمل لغة <a href="https://academy.hsoub.com/programming/javascript/" rel="">JavaScript</a> ومكتبة <a href="https://academy.hsoub.com/programming/javascript/react/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-react-r1569/" rel="">React.js</a>، وهو ما يجعل العمل فيه أسهل على متعلمي هذه المكتبة المستعملة أصلًا في بناء مواقع الويب.
</p>

<p>
	يمكن تشغيل تطبيقات React Native على أجهزة الأندرويد، ونظام iOS، ونظام macOS، ونظام tvOS، والويب، وعلى نظام ويندوز وغيره.
</p>

<h4>
	فلاتر Flutter
</h4>

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

<p>
	يستعمل إطار فلاتر لغة دارت Dart، ويمكن تشغيل تطبيقاته على 5 أنظمة تشغيل هي: نظام iOS، ونظام الأندرويد، ونظام ويندوز، ونظام macOS، ولينكس.
</p>

<h4>
	أيونيك Ionic
</h4>

<p>
	في عام 2013 أصدرت مجموعة من مطوري البرمجيات مفتوحة المصدر النسخة الأولية من إطار عمل أيونيك Ionic، وهو إطار حديث خفيف عالي الأداء لتطوير التطبيقات متعددة المنصات وتطبيقات الويب التقدمية. يمكّن هذا الإطار مستخدمه من استعمال أي <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> يستخدم في تطوير الواجهات الأمامية وهي أنجولر Angular، أو ريآكت React.js، أو فيو Vue.js أو بالاعتماد على مكونات أيونيك نفسها فقط.
</p>

<p>
	يعدّ هذا الإطار الأشهر استخدامًا في مجال برمجة تطبيقات الجوال لمن يعمل أصلًا في مجال تطوير الويب، إذ ذكر <a href="https://ionicframework.com/survey/2020#trends" rel="external nofollow">استطلاع أجرته أيونيك</a> أن 75% من مطوري التطبيقات الذين شملهم الاستطلاع وصفوا أنفسهم بمطوري ويب، ولا غرابة في هذا إذا علمنا أن الإطار يستعمل تقنيات الويب نفسها لبناء تطبيقاته.
</p>

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

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

<p>
	بداية، لا يتطلب العمل في تطوير تطبيقات الجوال شهادة جامعية أي أنك لا تحتاج إلى قضاء 4 إلى 5 سنوات في أروقة الجامعة لتتخرج منها وتدخل بعدها سوق العمل بخبرات نظرية فقط، بل يكفي أن تتعلم هذا المجال وتبني معرض أعمال مميز، لتحصل على فرص عمل وعروض من شركات كثيرة، وأنا أعرف عدة أشخاص يعملون في تطوير تطبيقات الجوال دون أن يسألهم أحد شهادة جامعة في علوم الحاسوب ولمزيد من التفاصيل حول هذه النقطة، يمكن الرجوع إلى فقرة "طرق تعلم البرمجة" من مقال <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/#%D8%B7%D8%B1%D9%82-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">كيفية تعلم البرمجة</a>.
</p>

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

<p>
	والمبشر في سوق برمجة التطبيقات أن الطلب عليها مرتفع وبالتالي الأجور مرتفعة أيضًا بالمقارنة مع وظائف أخرى، فتنص <a href="https://www.glassdoor.com/Salaries/dubai-mobile-applications-developer-salary-SRCH_IL.0,5_IM954_KO6,35.htm" rel="external nofollow">بعض التقديرات</a> التي نشرتها Glassdoor على أن الأجر الشهري لمطور تطبيقات الجوال في إمارة دبي يبلغ 9,000 درهم. أما في الولايات المتحدة فيبلغ الأجر السنوي <a href="https://www.itcareerfinder.com/it-careers/mobile-application-developer.html" rel="external nofollow">110,000 دولار أمريكي</a> بحسب ITCareerFinder (مع تفاوت بين الاختصاصات الفرعية والولايات المختلفة).
</p>

<p>
	الجميل أيضًا في مهنة تطوير التطبيقات أنه يمكن العمل عن بعد أينما كنت، فانظر مثلًا إلى فرص العمل المتوفرة في موقع <a href="https://baaeed.com/" rel="external nofollow">بعيد</a> وستجد غالبًا فرصة برمجة في مجال التطبيقات عن بعد بمختلف أنواعها فقد وجدت الآن فرصة عمل في <a href="https://baaeed.com/remote-jobs/const-techsa-%D9%85%D8%B7%D9%88%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D9%81%D9%84%D8%A7%D8%AA%D8%B1-flutter-developer" rel="external nofollow">تطوير تطبيقات فلاتر</a>.
</p>

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

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

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

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

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

<p style="text-align: center;">
	<iframe allowfullscreen="" frameborder="0" height="450" src="https://player.vimeo.com/video/311193987" width="800"></iframe>
</p>

<p>
	الشرح يكون باللغة العربية بشكل كامل مع توفير عدة مصادر داعمة مثل مقالات تعليمية وأيضًا توثيقات عربية في <a href="https://wiki.hsoub.com/" rel="external">موسوعة حسوب</a> كما تعمل خلال الدورة على بناء عدة مشاريع وتطبيقات عملية.
</p>

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

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

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

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

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

<ul>
	<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%B3%D8%B7%D8%AD-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8/" rel="">برمجة تطبيقات سطح المكتب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1801</guid><pubDate>Sun, 20 Nov 2022 15:09:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; &#x645;&#x635;&#x637;&#x644;&#x62D; &#x627;&#x644;&#x62D;&#x642;&#x648;&#x642; &#x627;&#x644;&#x645;&#x62A;&#x631;&#x648;&#x643;&#x629; Copyleft</title><link>https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D8%A7%D9%84%D8%AD%D9%82%D9%88%D9%82-%D8%A7%D9%84%D9%85%D8%AA%D8%B1%D9%88%D9%83%D8%A9-copyleft-r1770/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_11/6366196e38e03_-----copyleft.png.ab90f6e1392755272e7a83024c570a7d.png" /></p>

<p>
	قد تواجه عند العمل في <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">مشاريع مفتوحة المصدر</a> مصطلح "الحقوق المتروكة" copyleft وهو مصطلح شائع الاستخدام لكنه غامض بعض الشيء، لذا يقدم هذا المقال شرحًا لمفهوم الحقوق المتروكة ولكن قبل البدء به يجب التطرق إلى عدة مفاهيم مثل حقوق النشر copyright والمصدر المفتوح open source والتراخيص المتساهلة permissive كونها مفاهيم مترابطة، وللعلم أكثر ما تُستخدم هذه التراخيص في البرمجة وتطوير البرمجات لذا سنركز في هذا السياق.
</p>

<h2>
	حقوق النشر copyright
</h2>

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

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

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

<h2>
	المصدر المفتوح open source
</h2>

<p>
	تسمح جميع تراخيص <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">المصدر المفتوح open source</a> حسب <a href="https://opensource.org/osd" rel="external nofollow">تعريف Open Source Initiation</a> في سياق البرمجيات بتوزيع الشيفرة المصدرية للتطبيق ويحق لأي شخص يستخدم برنامجًا مفتوح المصدر الاطلاع على الشيفرة البرمجية وفحصها وتعديلها.
</p>

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

<h2>
	التراخيص المتساهلة permissive
</h2>

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

<h2>
	الحقوق المتروكة copyleft
</h2>

<p>
	تعد <a href="https://www.gnu.org/licenses/gpl-3.0.html" rel="external nofollow">رخصة جنو العمومية (GPL)</a> بإصداراتها المختلفة من أكثر رخص الحقوق المتروكة استخدامًا، لذا يعد <a href="https://www.gnu.org/philosophy/free-sw.en.html" rel="external nofollow">التعريف</a> الذي يقدمه مشروع جنو GNU للحقوق المتروكة تعريفًا أساسيًا والذي ينص على ما يلي:
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		"عند إعادة توزيع برنامج يعد من ضمن البرمجيات الحرة، لا يمكن بعدها إضافة قيود لحرمان الآخرين من الحريات الرئيسية central freedoms"
	</p>
</blockquote>

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

<h3>
	الحقوق المتروكة Copyleft في البرمجيات
</h3>

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

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

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

<p>
	توجد تراخيص أخرى غير ترخيص GPL للحقوق المتروكة مثل <a href="https://www.mozilla.org/en-US/MPL/" rel="external nofollow">رخصة Mozilla العامة</a> و<a href="https://www.eclipse.org/legal/epl-v10.html" rel="external nofollow">رخصة Eclipse العامة</a> التي تحظى كل منهما بشعبية كبيرة، وتوجد العديد من <a href="https://tldrlegal.com/licenses/tags/Copyleft" rel="external nofollow">التراخيص الأُخرى</a> للحقوق المتروكة الأقل استخدامًا.
</p>

<h3>
	الحقوق المتروكة خارج عالم البرمجيات non-software
</h3>

<p>
	على الرغم من أن فكرة الحقوق المتروكة وُلدت في عالم البرمجيات إلا أنها توسعت لخارجه أيضًا، فمثلًا فكرة "افعل ما تريد طالما أنك تحتفظ بحق الآخرين في فعل الشيء نفسه" هي السمة المميزة لترخيص <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.ar" rel="external nofollow">المشاع الإبداعي نَسب المُصنَّف - الترخيص بالمثل</a> المستخدم للأعمال المكتوبة والفنون البصرية وما إلى ذلك، وتعد <a href="https://www.gnu.org/licenses/fdl-1.3.html" rel="external nofollow">رخصة التوثيق المجاني في جنو GNU</a> مثالًا آخرًا على ترخيص الحقوق المتروكة لغير البرمجيات، ولكن يُنصح عمومًا بعدم استخدام تراخيص البرامج للعمل في مشاريع خارج البرمجيات.
</p>

<h2>
	هل يجب أن أختار رخصة الحقوق المتروكة؟
</h2>

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

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

<p>
	وللمساعدة يعتبر مشروع <a href="https://choosealicense.com/" rel="external nofollow">choosealicense.com</a> من جيت هاب GitHub طريقة جيدة للعثور على ترخيص يناسب احتياجاتك، ويمتلك موقع <a href="https://tldrlegal.com/" rel="external nofollow">tl;drLegal</a> شروحات بلغة واضحة للعديد من تراخيص البرامج الشائعة وغير الشائعة.
</p>

<p>
	لمزيد من المعلومات حول ترخيص الحقوق المتروكة يمكن مراجعة مشروع <a href="https://copyleft.org/" rel="external nofollow">دليل الحقوق المتروكة</a>.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/resources/what-is-copyleft" rel="external nofollow">What is copyleft?‎</a> لصاحبه Ben Cotton.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">ما المقصود بمصطلح مفتوح المصدر (open source)؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B1%D8%A7%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1586/" rel="">تراخيص البرامج مفتوحة المصدر</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1770</guid><pubDate>Sat, 05 Nov 2022 08:20:47 +0000</pubDate></item><item><title>&#x647;&#x64A;&#x627;&#x643;&#x644; &#x627;&#x644;&#x628;&#x64A;&#x627;&#x646;&#x627;&#x62A; Data Structures</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a5cf553_-..png.b6c84f8c8e0371e3388b20adc6969d00.png" /></p>
<p>
	هياكل البيانات data structures -أو تدعى بنى المعطيات أحيانًا- مصطلح يتكرر كثيرًا في علوم الحاسوب خصوصًا والبرمجة عمومًا ويعد من المصطلحات المعقدة البسيطة أو السهلة الممتنعة كما أن الكثير يخلط بينه وبين أنواع البيانات أو لا يكاد يميز بينهما، ولابد على أي داخل لمجال علوم الحاسوب ومن يريد <a href="https://academy.hsoub.com/learn-programming/" rel="">تعلم البرمجة</a> أن يفهم هذا المصطلح جيدًا لأنه الأساس الذي سيستند عليه في بناء بقية المفاهيم الأخرى اللاحقة.
</p>

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

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

<p>
	تُعَدّ هياكل البيانات data structures من أهم المفاهيم التأسيسية في مجال <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>

<h2>
	أهمية هياكل البيانات data structures
</h2>

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

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

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

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

<h2>
	الفرق بين أنواع البيانات وهياكل البيانات
</h2>

<p>
	يبدو لك أنّ <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="">أنواع البيانات Data Types</a> وهياكل البيانات Data Structures وجهان لعملة واحدة لأنّ كلاهما يتعامل مع طبيعة البيانات وتنظيمها، ولكن في الحقيقة الأول يشرح نوع وطبيعة البيانات في حين يمثِّل الآخر التجميعات التي تُخزَّن تلك البيانات فيها، وفيما يلي الفروق الأساسية بين نوع البيانات وهيكل البيانات.
</p>

<ul>
	<li>
		يمثِّل نوع البيانات ماهية البيانات التي سيجري التعامل معها مثل أن تكون البيانات أعداد أو سلاسل نصية أو رموز …إلخ. في حين يُعَدّ هيكل البيانات تجميعةً collection تحوي تلك البيانات وهناك عدة أنواع من الهياكل تناسب مختلف أنواع البيانات.
	</li>
	<li>
		يحدد نوع البيانات ما يترتب عليه من عمليات تطبق على تلك البيانات مثل العمليات الرياضية على الأعداد وعمليات المعالجة على النصوص وهكذا أما هياكل البيانات فتحدد كيفية تخزين البيانات والوصول إليها والبحث فيها وغيرها من العمليات كما تدرس كيفية تحسين الأداء في تلك العمليات.
	</li>
	<li>
		يأخذ نوع البيانات شكل التنفيذ المجرد abstract implementation الذي يُعرَّف من خلال <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> نفسها، في حين يُنفَّذ هيكل البيانات تنفيذًا حقيقيًا concrete implementation بحيث يُنشأ ليكون متوافقًا مع التصميم الذي يحتاجه المبرمج بالحجم الذي يريده وبنوع البيانات التي سيحتويها ضمن تطبيقه.
	</li>
	<li>
		يسمى نوع البيانات بأنه عديم القيمة dataless لأنه لا يخزِّن قيمة البيانات وإنما يمثِّل فقط نوع البيانات التي يمكن تخزينها، في حين يستطيع هيكل البيانات الاحتفاظ بأنواع مختلفة من البيانات مع قيمتها في كائن واحد.
	</li>
	<li>
		تحدد أنواع البيانات مع المتغيرات مثلًا في لغات البرمجة عند تعريفها، في حين تحتاج إلى كتابة بعض الخوارزميات لإسناد قيم البيانات إلى المتغيرات عند استخدام هيكل بيانات مثل عمليتَي الإضافة Push والجلب Pop للبيانات.
	</li>
	<li>
		لا يُكترث للزمن عند استخدام نوع البيانات، في حين يؤخذ بالحسبان عند استخدام هيكل البيانات (يطلق عليه <a href="https://wiki.hsoub.com/Algorithms/Asymptotic_Analysis" rel="external">تعقيد زمني BigO</a>).
	</li>
</ul>

<h2>
	تطبيقات هياكل البيانات
</h2>

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

<ul>
	<li>
		تنظيم البيانات في ذاكرة الحاسوب.
	</li>
	<li>
		تمثيل المعلومات في <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>.
	</li>
	<li>
		خوارزميات معالجة البيانات مثل معالجة النصوص.
	</li>
	<li>
		خوارزميات تحليل البيانات مثل data minar.
	</li>
	<li>
		خوارزميات البحث في البيانات مثل محرك البحث.
	</li>
	<li>
		خورزميات توليد البيانات مثل مولِّد الأعداد العشوائية.
	</li>
	<li>
		خوارزميات ضغط البيانات وتفك ضغطها مثل المعتمدَة في برنامج zip.
	</li>
	<li>
		خوارزميات تشفير البيانات وتفك تشفيرها مثل المعتمدَة في نظام الأمان.
	</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>

<h2>
	أنواع هياكل البيانات في لغات البرمجة
</h2>

<p>
	تنقسم هياكل البيانات إلى هياكل بيانات أولية Primitive وهياكل بيانات غير أولية Non Primitive أو هياكل بيانات معقدة وكل منها يضم عدة أقسام سنشرحها تباعًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112031" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fd1b911d26_-----.png.7d5bdcebd648c775986aacea6a088e91.png" rel=""><img alt="أنواع-هياكل-البيانات-في-لغات-البرمجة.png" class="ipsImage ipsImage_thumbnailed" data-fileid="112031" data-unique="ll8oj255y" style="" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fd1ba4ffd5_-----.thumb.png.84b9bdebf970e65b9b2141d96112c01a.png"></a>
</p>

<h3>
	هياكل البيانات الأولية Primitive
</h3>

<p>
	هي هياكل البيانات الأساسية والبسيطة والتي تُستخدَم لتخزين قيمة من جزء واحد فقط ذات نوع محدَّد، ويندرج تحت هذا النوع ما يلي:
</p>

<ul>
	<li>
		integer: من أجل الأعداد الصحيحة مثل العدد <code>15</code>.
	</li>
	<li>
		character: من أجل محرف واحد فقط.
	</li>
	<li>
		float: من أجل الأعداد العشرية.
	</li>
	<li>
		real: من أجل الأعداد الحقيقية.
	</li>
	<li>
		boolean: من أجل القيم البوليانية والذي يأخذ إحدى القيمتين؛ إما محققة true أو غير محققة false.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: قد تتساءل عن هياكل تخزين النصوص، وهي في الحقيقة تدخل ضمن الهياكل الغير أولية أن النصوص مجموعة من الحروف والرموز التي تدعى محارف characters لذا تخزن عادة ضمن مصفوفة وأحيانًا تضيف لغات البرمجة نوعًا خاصًا لها يدعى string سلسلة نصية أو لا يضيف وتكون بالشكل <code>char[]‎</code> وما تراه <code>[]</code> يدل على هيكل مصفوفة.
</p>

<p>
	يوجد شيء خاص يدعى مؤشر pointer والمشهور في بعض اللغات البرمجية مثل <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%85%D8%A4%D8%B4%D8%B1%D8%A7%D8%AA-pointers-%D9%81%D9%8A-%D9%84%D8%BA%D8%A9-%D8%B3%D9%8A-c-r1679/" rel="">سي C</a> وسي بلس بلس ++C، إذ يُعَدّ مكانًا في الذاكرة ويخزِّن عنوان المتغير الذي يشير إليه والشي الخاص فيه أنه يملك نوع بيانات والذي يجب أن يطابق نوع البيانات الذي يشير إليها.
</p>

<p>
	<strong>ملاحظة</strong>: ممكن تسمية هياكل البيانات التي تخزن الأعداد العشرية باسم double (عدد عشري مضاعف الدقة) أو float (عدد عشري) عوضًا عن real بصورة عامة ويكمن الاختلاف حسب اللغة البرمجية في عدد الخانات العشرية الممكن تخزينها، أي عدد الخانات بعد الفاصلة العشرية، بالإضافة إلى الحجم في الذاكرة وأخيرًا طريقة التعريف declaration، ففي لغة سي شارب #C يكون تعريف المتغير من نمط float كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_9531_8" style=""><span class="typ">float</span><span class="pln"> x </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1.5f</span><span class="pun">;</span></pre>

<p>
	أما تعريفه عندما يكون من نمط double، فيكون كما يلي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_9531_10" style=""><span class="kwd">double</span><span class="pln"> x </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1.5</span><span class="pun">;</span></pre>

<p>
	<strong>ملاحظة</strong>: يطلق أحيانًا على هياكل البيانات الأولية <a href="https://wiki.hsoub.com/Kotlin/basic_types" rel="external">أنواع البيانات Data Type</a>.
</p>

<h3>
	هياكل البيانات غير الأولية
</h3>

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

<h4>
	هياكل البيانات الخطية
</h4>

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

<ul>
	<li>
		المصفوفة Array
	</li>
	<li>
		القائمة المترابطة Linked List
	</li>
	<li>
		المكدس Stack
	</li>
	<li>
		الرتل Queue
	</li>
</ul>

<h5>
	المصفوفة
</h5>

<p>
	تُعَدّ <a href="https://wiki.hsoub.com/Algorithms/arrays" rel="external">المصفوفة الخطية array</a> أو المصفوفة ذات البعد الواحد أبسط أنواع الهياكل الخطية، ويمكن تشبيهها بقائمة من عدد محدود من العناصر التي تمتلك النوع ذاته، ويكون بعدها -أو طولها- هو عدد العناصر التي تملكها، كما تُخزّن في الذاكرة بحجم ثابت وبمواقع متجاورة.
</p>

<p>
	كل عنصر من عناصر هذه المصفوفة الخطية يملك فهرسًا للوصول إليه، وعادةً ما يبدأ الفهرس بالعدد 0 أي يكون فهرس العنصر الأخير هو <code>n-1</code> في مصفوفة بعدها n، وفي بعض لغات البرمجة يكون فهرس البداية هو العدد 1 مثل لغة باسكال، وفيما يلي صورة توضِّح هذه البنية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112016" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a43045e_-array.png.ccfa8d4c4d261fdb9cf8127e067ef1de.png" rel=""><img alt="المصفوفة الخطية array أحد هياكل البيانات" class="ipsImage ipsImage_thumbnailed" data-fileid="112016" data-unique="wt2l0qv01" style="width: 425px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a43045e_-array.png.ccfa8d4c4d261fdb9cf8127e067ef1de.png"></a>
</p>

<p>
	<strong>ملاحظات</strong>:
</p>

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

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

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

<h5>
	القائمة المترابطة
</h5>

<p>
	تُعَدّ <a href="https://wiki.hsoub.com/Algorithms/linked_lists" rel="external">القائمة المترابطة linked list</a> مجموعةً من العقد التي تخزَّن في الذاكرة بمواقع غير متجاورة، وكل عقدة من عقد القائمة مرتبطة بالعقدة المجاورة لها بمؤشر عدا العقدة الأخيرة التي يكون المؤشر فيها عبارة عن Null.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112013" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a1ae190_--linked-list.png.d524c9fa8641904d5421e13f03acd369.png" rel=""><img alt="هيكل بيانات القائمة المترابطة linked list" class="ipsImage ipsImage_thumbnailed" data-fileid="112013" data-unique="ygxf13oxe" style="width: 425px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a1ae190_--linked-list.png.d524c9fa8641904d5421e13f03acd369.png"></a>
</p>

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

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

<p>
	يوجد نوع متطور من القوائم المترابطة وهو <a href="https://wiki.hsoub.com/Algorithms/doubly_linked_lists" rel="external">القوائم المترابطة المزدوجة Doubly Linked List</a>، إذ ترتبط كل عقدة بمؤشرَين أحدهما يربطها بالعقدة السابقة ويسمى عادةً prev والآخر يربطها بالعقدة التالية ويسمى عادةً next، وبالتالي تحتاج هذه القائمة إلى مساحة إضافية في الذاكرة لامتلاكها على مؤشر إضافي، وبالمثل يكون المؤشر prev في عقدة الرأس Null ومؤشر next في العقدة الأخيرة هو Null.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112014" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a210199_---Doubly-Linked-List.png.6f33b1590866e2ee12993e0826073615.png" rel=""><img alt="القوائم المترابطة المزدوجة Doubly Linked List" class="ipsImage ipsImage_thumbnailed" data-fileid="112014" data-unique="8x037shln" style="width: 425px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a25d610_---Doubly-Linked-List.thumb.png.f6adeaaaa205c84f2b5569f03171f6dc.png"></a>
</p>

<p>
	يوجد نوع أخير من القوائم المترابطة وهو <a href="https://wiki.hsoub.com/Algorithms/circular_linked_lists" rel="external">القوائم المترابطة الدائرية Circular Linked Lists</a> والتي تُعَدّ تطويرًا عن المفردة بحيث يشير مؤشر next الخاص بعقدة النهاية إلى عقدة الرأس.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112012" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a1353a4_---Circular-Linked-Lists.png.d8ce997007ba93068a20d2ed818598bd.png" rel=""><img alt="القوائم المترابطة الدائرية Circular Linked Lists" class="ipsImage ipsImage_thumbnailed" data-fileid="112012" data-unique="7qzvi27sj" style="width: 425px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a164faa_---Circular-Linked-Lists.thumb.png.8d3055e7b04766ed228a10bcf32dc27b.png"></a>
</p>

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

<h5>
	المكدس
</h5>

<p>
	يُعَدّ <a href="https://wiki.hsoub.com/Algorithms/stacks" rel="external">المكدِّس stack</a> هيكل بيانات خطية يتبع ترتيبًا محددًا في تنفيذ عمليات الحذف والإضافة، والترتيب يكون LIFO أي الذي يدخل آخرًا يخرج أولًا Last In First Out، والذي يميز المكدس هنا هو دخول العناصر وخروجها من قمة المكدِّس أي من جهة واحدة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112017" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a4beaa1_-stack.png.bd10db82315456e893679e5ea5620806.png" rel=""><img alt="هيكل بيانات المكدس stack" class="ipsImage ipsImage_thumbnailed" data-fileid="112017" data-unique="xbeyyym5j" style="width: 550px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a4beaa1_-stack.png.bd10db82315456e893679e5ea5620806.png"></a>
</p>

<p>
	تدخل -أو تُضاف- العناصر إلى المكدِّس عن طريق عملية وحيدة وخاصة وهي دفع Push وبالمثل فإنها تخرج منه -أو تُحذَف- عن طريق عملية وحيدة وخاصة أيضًا وتدعى إخراج Pop، وتوجد أيضًا عمليتان خاصتان بالمكدِّس وهما Top -أو Peek- التي تعيد القيمة الموجودة في قمة المكدِّس دون حذفها، والعملية الأخرى هي عملية IsEmpty التي تُعيد القيمة true إذا كان المكدِّس فارغًا.
</p>

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

<h5>
	الرتل
</h5>

<p>
	يُعَدّ <a href="https://wiki.hsoub.com/Algorithms/queues" rel="external">الرتل queue</a> أحد هياكل البيانات الخطية شبيه بالمكدس لامتلاكه عمليات خاصة للحذف والإضافة ولكنه يختلف عنه في مكان الحذف والإضافة كما سنرى.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112030" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fd1b71a5e1_.png.8629cf5ca4ec430caf999d71889948e1.png" rel=""><img alt="الرتل.png" class="ipsImage ipsImage_thumbnailed" data-fileid="112030" data-unique="63hslqdid" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fd1b84e22a_.thumb.png.2e3b43ef3646a19019e6b4c4aa3f8756.png"></a>
</p>

<p>
	يدعى الرتل أو الطابور بـ FIFO أي الذي يدخل أولًا يخرج أولًا First In First Out بحيث يكون الدخول -أو الإضافة- من الجهة الخلفية rear والخروج -أو الحذف- من الجهة الأخرى أي الأمامية front (كما يحصل عند الوقوف ضمن الطوابير تمامًا لشراء شيء ما)، وتحدث الإضافة عن طريق عملية ENQUEUE أما عملية الحذف فتكون عن طريق عملية DEQUEUE.
</p>

<p>
	يتميز الرتل أيضًا بامتلاكه عمليات خاصة وهي العملية IsFull التي تُعيد true إذا كان الرتل ممتلئًا، والعملية IsEmpty التي تُعيد true إذا كان الرتل فارغًا، والعملية Front التي تُعيد العنصر الأمامي من الرتل، بالإضافة إلى العملية Rear التي تُعيد العنصر الخلفي من الرتل.
</p>

<h4>
	هياكل البيانات غير الخطية
</h4>

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

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

<ul>
	<li>
		الشجرة
	</li>
	<li>
		الرسم البياني
	</li>
</ul>

<h5>
	الشجرة
</h5>

<p>
	تُعَدّ <a href="https://academy.hsoub.com/programming/advanced/%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%A3%D8%B4%D8%AC%D8%A7%D8%B1-trees-%D9%81%D9%8A-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-r1292/" rel="">الشجرة tree</a> هيكل بيانات متعدد المستويات وتُعرَّف على أنها مجموعة من العقد التي تحتوي فيما بينها على علاقة هرمية بحيث تسمى العقدة العليا بالعقدة الجذر، كما تحتوي كل عقدة على أب وحيد، في حين يمكن أن يكون لها أكثر من ابن أو تابع.
</p>

<p>
	تسمى العقد التي تتفرع من عقدة معينة بأبناء children تلك العقدة والتي بدورها تدعى بالعقدة الأب parent، في حين تسمى العقد التي لا تمتلك أبناء بالأوراق leaves.
</p>

<p>
	تمتلك الشجرة عدة أنواع وهي:
</p>

<ul>
	<li>
		الشجرة الثنائية binary tree
	</li>
	<li>
		شجرة البحث الثنائية binary search tree
	</li>
	<li>
		شجرة AVL
	</li>
	<li>
		شجرة R-B
	</li>
	<li>
		شجرة البادئات
	</li>
</ul>

<h6>
	الشجرة الثنائية
</h6>

<p>
	<a href="https://wiki.hsoub.com/Algorithms/binary_trees" rel="external">الشجرة الثنائية binary tree</a> هي شجرة بيانات تمتلك كل عقدة فيها -ما عدا الأوراق- على عقدَتي ابن فقط وهما الابن الأيمن والابن الأيسر.
</p>

<h6>
	شجرة البحث الثنائية
</h6>

<p>
	<a href="https://wiki.hsoub.com/Algorithms/binary_search_trees" rel="external">شجرة البحث الثنائية binary search tree</a> أو BST اختصارًا هي شجرة ثنائية تحقق خاصيتان أساسيتان وهما أنّ العقد الواقعة في الفرع اليميني تكون أكبر من العقدة الأب والعقد الواقعة في الفرع اليساري تكون أصغر من العقدة الأب، مع ضمان وجود ابنَين لكل عقدة وعدم تكرار العقد.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112019" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a7b2ba6_---binary-search-tree.png.78b5d0037750362e5062b43f1c389a1b.png" rel=""><img alt="هيكل بيانات شجرة البحث الثنائية binary search tree" class="ipsImage ipsImage_thumbnailed" data-fileid="112019" data-unique="vpdrl4n2d" style="width: 550px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a96d4fc_---binary-search-tree.thumb.png.ab72d27e7af276b44c05d8f4b4cfc7a6.png"></a>
</p>

<h6>
	شجرة AVL
</h6>

<p>
	تُعَدّ اختصارًا لـ Adelson-Velskii Tree إذ يُعَدّ أديسون Adelson وفيلسكي Velskii مخترعَيها للحفاظ على توازن شجرة البحث الثنائي وذلك لمنع تدهورها إلى قائمة مرتبطة عندما تحتوي الشجرة بأكملها على الشجرة الفرعية اليسرى فقط أو على الشجرة اليمنى فقط مما سينعكس سلبًا على أداء الشجرة، إذ يمكن استخدام سلسلة من عمليات التدوير بحيث تُحدَّد في كل عملية عقدة جذر إلى حين الوصول إلى شجرة بعقدة جذر معينة بحيث تكون متوازنة أي ارتفاع الشجرة اليسرى مساويًا لارتفاع الشجرة اليمنى، ويمكن القول هنا أنّ شجرة AVL هي شجرة BST تحقق شرط التوازن، علمًا أنّ ارتفاع الشجرة هو أكبر عمق موجود لها.
</p>

<h6>
	شجرة R-B
</h6>

<p>
	تعني الشجرة الحمراء والسوداء <a href="https://en.wikipedia.org/wiki/Red%E2%80%93black_tree" rel="external nofollow">Red-Black tree</a> وهي شجرة بحث ثنائية لها خصائص تميزها بحيث تحتوي كل عقدة فيها على بت تخزين يشير إلى لون العقدة والتي يمكن أن تكون حمراء أو سوداء فقط، كما أنّ عقدة الجذر والعقد الأوراق سوداء دائمًا، وإذا كانت العقدة حمراء فيجب أن يكون أبناءها سود، وأخيرًا يجب أن تحتوي جميع المسارات من عقدة إلى أحفادها العدد نفسه من العقد السوداء، فإذا تحقق ما سبق، فستكون الشجرة شجرة بحث ثنائية متوازنة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112018" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a524ea6_R-B.png.81f44825ece3702bd55553d5fb093598.png" rel=""><img alt="الشجرة الحمراء والسوداء Red-Black tree" class="ipsImage ipsImage_thumbnailed" data-fileid="112018" data-unique="yrddr6k68" style="width: 550px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a6bf84a_R-B.thumb.png.9318a1aae3c99bc38ae3caeb54b5e444.png"></a>
</p>

<h6>
	شجرة البادئات
</h6>

<p>
	تُعَدّ <a href="https://wiki.hsoub.com/Algorithms/tries" rel="external">شجرة البادئات Prefix tree</a> نوعًا من أشجار البحث وتعرف أيضًا بالشجرة الرقمية أو tri كما تُعرَف بشجرة القاموس وتُستخدَم في البحث عن الكلمات بصورة عامة بما أنها مكوَّنة من أحرف الهجاء، وأهم ما يميزها أنّ جذرها لا يحتوي على أيّ محرف.
</p>

<h6>
	الكومة
</h6>

<p>
	تُعَدّ <a href="https://wiki.hsoub.com/Algorithms/heaps" rel="external">الكومة Heap</a> بنية معطيات شجرية تمتلك خاصة الكومة وهي وجود أسلوب ترتيب متَّبع بين العقد الآباء والعقد الأبناء مثل أن يكون كل أب أكبر من جميع أبنائه وتسمى حينها بالكومة العظمى Max-Heap أو أن يكون كل أب أصغر من جميع أبنائه وتسمى حينها بالكومة الصغرى Min-Heap، وتُستخدَم الكومة بكثرة في خوارزميات الترتيب، كما تتميز الكومة بأنّ جميع مستوياتها ممتلئة بالكامل عدا المستوى الأخير، وفيما يلي صورة توضِّح كومة صغرى.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112015" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a2ccedc_-Heap.png.ba41a14f7cb43ae424d3470e7e3b9dc5.png" rel=""><img alt="هيكل بيانات الكومة Heap" class="ipsImage ipsImage_thumbnailed" data-fileid="112015" data-unique="rn0z2k16u" style="width: 550px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a3a2e36_-Heap.thumb.png.c5b58f3c4b71af4c42907111e71f1d09.png"></a>
</p>

<h5>
	الرسم البياني
</h5>

<p>
	يختلف الرسم البياني graph أو المبيان عن الشجرة في عدم احتوائه على جذر ومن الممكن أن تتصل العقد مع بعضها باتجاه واحد directed graph أو بالاتجاهين معًا Bi-directional أو بدون اتجاه undirected، كما أنّ طبيعة العلاقات بين العقد في هذا النوع ليست ذات طبيعة هرمية، كما تسمى العقد بالرؤوس vertices والروابط التي بينها تسمى بالحواف أو الأضلاع edges ويكون عدد كل من الرؤوس والأضلاع محدودًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112011" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a0ea3e8_--graph.png.56498ae7b28a8e6c23a870fa4c0e1634.png" rel=""><img alt="الرسم البياني graph" class="ipsImage ipsImage_thumbnailed" data-fileid="112011" data-unique="e7ubvi0a5" style="width: 450px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a0ea3e8_--graph.png.56498ae7b28a8e6c23a870fa4c0e1634.png"></a>
</p>

<p>
	يكون الزوج (1,2) في الرسم البياني الموجَّه والذي يدل على وجود اتجاه من الرأس 1 إلى الرأس 2 مختلفًا عن الزوج (2,1)، كما تُرمَز مجموعة الرؤوس في هذا النوع بالرمز V ومجموعة الأضلاع بالرمز E ويُستخدَم هذا النوع من البنى في تمثيل الشبكات الواقعية مثل شبكة الهاتف المحمول أو شبكات التواصل الاجتماعي مثل الفيسبوك على سبيل المثال.
</p>

<h5>
	التقطيع Hashing
</h5>

<p>
	يُعَدّ <a href="https://wiki.hsoub.com/Algorithms/hashing" rel="external">التقطيع Hashing أو التجزئة</a> تحسينًا لهياكل البيانات السابقة في بعض التطبيقات التي تحتاج إلى ترتيب بياناتها بواسطة أعداد كبيرة وفريدة موجودة ضمن هذه البيانات مثل ترتيب سجلات المرضى ضمن المستشفيات بناءً على أرقام هواتفهم والتي تُعَدّ مفاتيحًا فريدةً unique لهذه السجلات، ويكون ذلك من خلال الاستعانة بدالة تدعى دالة التقطيع hashing function والتي تحوِّل هذا المفتاح الفريد إلى عدد صغير وصحيح بحيث يكون فهرسًا لجدول جديد يدعى جدول التقطيع hashing table.
</p>

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

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

<p>
	ليكن لدينا الأعداد التالية 12 – 17 – 29 – 6 – 30 – 31 – 4 – 8، فإذا كان فهرس جدول التقطيع هو ذاته العدد المعطى، فسنحتاج إلى جدول بحجم 32، ولكن فعليًا نحتاج إلى 8 أماكن للتخزين وبالتالي سنحصل على فجوات وهدر في الذاكرة، لذا سنلجأ إلى دالة التقطيع والتي ستعطي آحاد العدد المُعطى، وبالتالي ستكون نتيجتها 2 – 7 – 9 – 6 – 0 – 1 – 4 – 8 عند تطبيقها على الأعداد السابقة على الترتيب، بحيث يُخزَّن العدد 12 في العنصر الذي فهرسه هو العدد 2 وهكذا، وبالتالي سنحتاج إلى جدول تقطيع بحجم 8 بدلًا من 32 كما يلي:
</p>

<table>
	<thead>
		<tr>
			<th>
				12
			</th>
			<th>
				17
			</th>
			<th>
				29
			</th>
			<th>
				6
			</th>
			<th>
				30
			</th>
			<th>
				31
			</th>
			<th>
				4
			</th>
			<th>
				8
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align: center;">
				2
			</td>
			<td style="text-align: center;">
				7
			</td>
			<td style="text-align: center;">
				9
			</td>
			<td style="text-align: center;">
				6
			</td>
			<td style="text-align: center;">
				0
			</td>
			<td style="text-align: center;">
				1
			</td>
			<td style="text-align: center;">
				4
			</td>
			<td style="text-align: center;">
				8
			</td>
		</tr>
	</tbody>
</table>

<p>
	يمكن تقليص حجم هذا الجدول ليصبح 4 بتحسين دالة التقطيع، بحيث يكون الفهرس هو باقي قسمة كل عدد من الأعداد المعطاة على العدد 4، ولكن ستكون نتيجة الأعداد 17 و 19 هي الفهرس 1، أي سيحدث تصادم، ويمكن حل هذه المشكلة بجعل كل عنصر من عناصر جدول التقطيع مؤشرًا على قائمة مترابطة من الأعداد التي باقي قسمتها على العدد 4 هو فهرس هذا العنصر، أي كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="112009" href="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a04c66d_-Hashing.png.2b0b69e96006adf9e7068b425baf9ab0.png" rel=""><img alt="التقطيع hashing" class="ipsImage ipsImage_thumbnailed" data-fileid="112009" data-unique="utznuhbdn" style="width: 480px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_11/636fb0a04c66d_-Hashing.png.2b0b69e96006adf9e7068b425baf9ab0.png"></a>
</p>

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

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

<p>
	تعرَّفنا في هذا المقال على هياكل البيانات بكافة أنواعها مع إعطاء أمثلة توضيحية تساعدك على تخيل هذه البنى، بالإضافة إلى التطرق إلى ذكر أهميتها والفرق بينها وبين <a href="https://wiki.hsoub.com/SQL/datatype" rel="external">أنواع البيانات</a> مع ذكر أهم تطبيقاتها.
</p>

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

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%B6%D8%AE%D9%85%D8%A9-big-data-r1579/" rel="">مقدمة إلى مفهوم البيانات الضخمة Big Data</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/c/%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-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-%D8%A7%D9%84%D9%85%D8%AA%D8%B1%D8%A7%D8%A8%D8%B7%D8%A9-linked-lists-%D9%88%D8%A7%D9%84%D8%A3%D8%B4%D8%AC%D8%A7%D8%B1-trees-%D9%81%D9%8A-%D9%84%D8%BA%D8%A9-%D8%B3%D9%8A-c-r1747/" rel="">هياكل البيانات: القوائم المترابطة Linked lists والأشجار Trees في لغة سي C</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/%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-%D8%A7%D9%84%D9%83%D8%A7%D8%A6%D9%86%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D9%85%D8%B5%D9%81%D9%88%D9%81%D8%A7%D8%AA-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-r1234/" rel="">هياكل البيانات: الكائنات والمصفوفات في جافاسكريبت</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/files/26-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%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>
</ul>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
]]></description><guid isPermaLink="false">1784</guid><pubDate>Mon, 14 Nov 2022 15:04:00 +0000</pubDate></item><item><title>&#x645;&#x627; &#x647;&#x64A; &#x645;&#x648;&#x627;&#x635;&#x641;&#x627;&#x62A; &#x627;&#x644;&#x62D;&#x627;&#x633;&#x648;&#x628; &#x627;&#x644;&#x645;&#x646;&#x627;&#x633;&#x628; &#x644;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;&#x61F;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D9%85%D9%88%D8%A7%D8%B5%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D9%84%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9%D8%9F-r2073/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/1964558934_.png.9a77bcd4dcd000c73f46c5672915885b.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/uo5Ki6w3Zmk"></iframe>
</p>

<p>
	بعد انتقائك للحاسوب الذي يناسب أهدافك البرمجية، يمكنك الانطلاق في تعلم البرمجة والبدء من <a href="https://academy.hsoub.com/learn/computer-science/" rel="">دورة علوم الحاسوب</a>.
</p>

<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">2073</guid><pubDate>Sat, 29 Oct 2022 15:00:00 +0000</pubDate></item><item><title>&#x645;&#x633;&#x62A;&#x648;&#x64A;&#x627;&#x62A; &#x627;&#x644;&#x634;&#x641;&#x627;&#x641;&#x64A;&#x629; &#x644;&#x62A;&#x62D;&#x642;&#x64A;&#x642; &#x627;&#x632;&#x62F;&#x647;&#x627;&#x631; &#x627;&#x644;&#x645;&#x62C;&#x62A;&#x645;&#x639;&#x627;&#x62A; &#x645;&#x641;&#x62A;&#x648;&#x62D;&#x629; &#x627;&#x644;&#x645;&#x635;&#x62F;&#x631;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%B3%D8%AA%D9%88%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D9%81%D8%A7%D9%81%D9%8A%D8%A9-%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D8%B2%D8%AF%D9%87%D8%A7%D8%B1-%D8%A7%D9%84%D9%85%D8%AC%D8%AA%D9%85%D8%B9%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1710/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_09/631c4750bb430_-5-------.png.0b07ee99201f67c520109aba5c01241b.png" /></p>

<p>
	يدعم تطبيق الشفافية ازدهار المجتمعات <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">مفتوحة المصدر</a>، لذا ينبغي على مديري هذه المجتمعات إدراك ذلك والسعي لتوفير الشفافية بمستوياتها الخمسة على أوسع نطاق ضمن مجتمعاتهم، وفي هذا المقال سنُعرّف كل مستوى من هذه المستويات، ونعرض أهميته وأهدافه.
</p>

<h2>
	ما الذي يجعل الشفافية مهمة في المجتمعات مفتوحة المصدر؟
</h2>

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

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

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

<ul>
<li>
		نشر الكود المصدري
	</li>
	<li>
		نشر الإرشادات للمجتمع
	</li>
	<li>
		الاحتفاء بالنجاح
	</li>
	<li>
		الاستماع إلى نبض المجتمع وتحليله
	</li>
	<li>
		الحفاظ على المجتمع
	</li>
</ul>
<p>
	سنشرحها تباعًا.
</p>

<h3>
	المستوى الأول: نشر الكود المصدري
</h3>

<p>
	يتمحور هذا المستوى حول إصدار الكود المصدري للبرمجيات بموجب <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B1%D8%A7%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1586/" rel="">ترخيص معتمد من مبادرة المصدر المفتوح OSI</a> وبإصدار عام متاح للجميع عبر نظام خاص بإدارة الإصدارات مثل <a href="https://academy.hsoub.com/programming/workflow/git/" rel="">Git</a>.
</p>

<p>
	يهدف المستوى الأول إذًا إلى تأسيس المشروع ليكون مفتوح المصدر.
</p>

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

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

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

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

<p>
	عندما تصل لهذا المستوى ستغدو مشاركة الأفكار والرؤى وعرض تطورات المشروع من أهم أولوياتك.
</p>

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

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

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

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

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

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

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

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

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

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/22/2/transparency-open-source-communities" rel="external nofollow">‎5 levels of transparency for open source communities</a> لأصحابه Georg Link و Anirudha Jadhav و Emilio Galeano Gryciuk.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B1%D8%A7%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1586/" rel="">تراخيص البرامج مفتوحة المصدر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D8%B0%D9%8A-%D9%8A%D8%AD%D9%81%D8%B2-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D9%8A%D9%86-%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1%D8%9F-r1708/" rel="">ما الذي يحفز المساهمين لتطوير المشاريع مفتوحة المصدر؟ </a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%B1%D8%A9-%D9%88%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r590/" rel="">الفرق بين البرمجيات الحرة ومفتوحة المصدر</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1710</guid><pubDate>Tue, 11 Oct 2022 08:25:04 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x62A;&#x639;&#x644;&#x645; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x646;&#x635;&#x627;&#x626;&#x62D; &#x648;&#x623;&#x62F;&#x648;&#x627;&#x62A; &#x644;&#x631;&#x62D;&#x644;&#x62A;&#x643; &#x641;&#x64A; &#x639;&#x627;&#x644;&#x645; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_11/learn-programming_(1).png.5b1887873488baa39dccae5355cad252.png" /></p>
<p id="-">
	كيف تتعلم البرمجة هو سؤال من أشهر الأسئلة على الإنترنت التي تدور في فلك البرمجة وعلوم الحاسوب وشهرته تأتي من كون البرمجة programming من أهم المجالات وأكثرها طلبًا في وقتنا الحالي، ولا أحد ينكر أنها جزءٌ أصيلٌ مرتبط بالتقنية التي تشكل حاضرنا ومستقبلنا، فكل شيء أصبح مرتبط بالحواسيب ويحتاج الحاسوب إلى أن نخاطبه بلغته للتواصل معه وتوجيهه وتلقينه الأوامر.
</p>

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

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

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

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

<h2 id="-">
	فهرس المحتويات
</h2>

<ul>
	<li>
		<a href="#%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%B9%D9%86%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">ماذا تعني البرمجة؟</a>
	</li>
	<li>
		<a href="#%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%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="#%D8%B7%D8%B1%D9%82-%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9" rel="">طرق لتعلم البرمجة</a>
		<ul>
			<li>
				<a href="#%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%B9%D8%A8%D8%B1-%D8%A7%D9%84%D8%AC%D8%A7%D9%85%D8%B9%D8%A9" rel="">تعلم البرمجة عبر الجامعة</a>
			</li>
			<li>
				<a href="#%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%B9%D8%A8%D8%B1-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA" rel="">تعلم البرمجة عن بعد عبر الإنترنت</a>
			</li>
		</ul>
	</li>
	<li>
		<a href="#%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" rel="">كيف تتعلم البرمجة</a>
		<ul>
			<li>
				<a href="#%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%A3%D8%B3%D9%8A%D8%B3-%D8%A7%D9%84%D8%B5%D8%AD%D9%8A%D8%AD" rel="">مفاهيم تعلم البرمجة: التأسيس الصحيح</a>
			</li>
			<li>
				<a href="#%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A7%D9%84%D9%88%D8%AC%D9%87%D8%A9-%D9%88%D8%A7%D9%84%D8%AA%D8%AE%D8%B5%D8%B5" rel="">أدوات تعلم البرمجة: اختيار الوجهة والتخصص</a>
			</li>
		</ul>
	</li>
	<li>
		<a href="#%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%84%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="#%D8%A3%D8%B3%D8%A6%D9%84%D8%A9-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%AD%D9%88%D9%84-%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" rel="">أسئلة شائعة حول كيف تتعلم البرمجة</a>
		<ul>
			<li>
				<a href="#%D9%87%D9%84-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%B5%D8%B9%D8%A8" rel="">هل تعلم البرمجة صعب؟</a>
			</li>
			<li>
				<a href="#%D9%87%D9%84-%D9%8A%D8%A4%D8%AB%D8%B1-%D9%86%D9%85%D8%B7-%D8%B4%D8%AE%D8%B5%D9%8A%D8%AA%D9%8A-%D8%B9%D9%84%D9%89-%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="#%D9%87%D9%84-%D8%A7%D8%AD%D8%AA%D8%A7%D8%AC-%D8%A5%D9%84%D9%89-%D8%A5%D8%AA%D9%82%D8%A7%D9%86-%D8%A7%D9%84%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AC%D9%84%D9%8A%D8%B2%D9%8A%D8%A9-%D9%84%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="#%D9%87%D9%84-%D9%87%D9%86%D8%A7%D9%83-%D9%85%D8%B5%D8%A7%D8%AF%D8%B1-%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-%D9%84%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="#%D9%87%D9%84-%D8%A7%D8%AD%D8%AA%D8%A7%D8%AC-%D8%A5%D9%84%D9%89-%D8%AE%D8%A8%D8%B1%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%B1%D9%8A%D8%A7%D8%B6%D9%8A%D8%A7%D8%AA-%D9%84%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="#%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%85%D9%86-%D8%A7%D9%84%D8%B5%D9%81%D8%B1" rel="">كيف تتعلم البرمجة من الصفر؟</a>
			</li>
			<li>
				<a href="#%D8%A3%D9%86%D8%A7-%D9%84%D8%B3%D8%AA-%D9%85%D9%86%D8%B8%D9%85%D9%8B%D8%A7-%D9%81%D9%83%D9%8A%D9%81-%D8%A3%D9%84%D8%AA%D8%B2%D9%85-%D9%81%D9%8A-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D9%86%D9%81%D8%B3%D9%8A" rel="">أنا لست منظمًا فكيف ألتزم في تعلم البرمجة بنفسي؟</a>
			</li>
			<li>
				<a href="#%D9%87%D9%84-%D9%8A%D9%85%D9%83%D9%86%D9%86%D9%8A-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%B9%D8%A8%D8%B1-%D8%A7%D9%84%D8%AC%D9%88%D8%A7%D9%84" rel="">هل يمكنني تعلم البرمجة عبر الجوال؟</a>
			</li>
		</ul>
	</li>
</ul>

<h2 id="ماذا-تعني-البرمجة">
	ماذا تعني البرمجة؟
</h2>

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

<p style="text-align: center;">
	<img alt="ماذا تعني البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="109598" data-unique="jj8s3pxqe" style="width: 797px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_10/6347c49fb8e3b_--.png.2a074f8691bdb3e4763545d3ad7c3d36.png">
</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> أما المفهوم والأسلوب فهو شبه ثابت لا يتغير وهنا قد تتطرق في طريق <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> إلى مفهوم <a href="https://wiki.hsoub.com/Algorithms" rel="external">لخوارزميات</a> التي يمكن تنفيذها بأكثر من لغة برمجة.
</p>

<h2 id="لماذا-تتعلم-البرمجة">
	لماذا تتعلم البرمجة؟
</h2>

<p>
	هناك طلب كبير على مطوري البرامج اليوم، إذ سيزداد الطلب عليهم بنسبة <a href="https://www.turing.com/blog/in-demand-programming-languages-to-learn-in-2022" rel="external nofollow">22 بالمائة</a> بين عامي 2022 و 2030 وفقًا لمكتب إحصاءات العمل الأمريكي وذلك موازنةً بأربعة بالمائة بالنسبة للوظائف الأخرى، إذ تُعَدّ البرمجة مجال العصر والأكثر طلبًا في الوقت الحالي بين المهن الأخرى كما ذكرنا، فامتلاكك لهذه المهارة بمثابة امتلاكك لنقطة من نقاط قوة هذا العصر وتفتح لك أبوبًا واسعة في سوق العمل وضمن قطاعات مختلفة بسبب التقدم الرهيب في التقنية.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="450" id="ips_uid_3930_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/lXA7jc-2p3I"></iframe>
</p>

<p>
	كما تتعدد الأسباب حول الهدف من <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D8%B1%D8%AD%D9%84%D8%A9-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r1280/" rel="">تعلم البرمجة</a>، ولكن أكثرها انتشارًا هو ما يلي:
</p>

<ul>
	<li>
		تُعَدّ البرمجة مهنة عالمية عابرة للدول والقارات، إذ يمكن تطبيقها وتوظيفها في أيّ بلد كان مهما كانت ثقافته أو لغته.
	</li>
	<li>
		تعلم البرمجة مهم كون العالم يتجه إلى أتمتة المعلومات كما ذكرنا، وبالتالي تسريع المهام الروتينية وتوفير المزيد من الوقت والجهد البشري.
	</li>
	<li>
		يتعلق تعلم البرمجة بصورة أساسية بتعلم المنطق والرياضيات، لذا فهي توجّه ممتع لمن يهتم بمثل هذه المجالات.
	</li>
	<li>
		تحقيق مكاسب مادية، إذ يتقاضى المبرمجون رواتب عالية من خلال وظائف في شركات كبرى أو من خلال مشاريع ذاتية يصممها المبرمج بذاته ويبيعها لجهة معينة.
	</li>
	<li>
		تمكّنك من العمل الحر عبر منصات عمل حر مثل <a href="https://mostaql.com/" rel="external">مستقل</a> دون التقيد بجهة معينة كما يمكنك العمل من أيّ مكان كان من منزلك مثلًا، وبالتالي ستوفر عليك العديد من الالتزامات مثل قوانين بيئة العمل، وبعض النفقات مثل المواصلات.
	</li>
	<li>
		ممارسة البرمجة على أساس هواية إلى جانب عمل رئيسي آخر، فكثير من الأحيان قد تصادف أشخاصًا مهتمين بتعلم البرمجة وهم أساسًا أطباء على سبيل المثال وذلك لكونها شيء مكتسب بالتعلم والقراءة والممارسة وليست موهبةً أو شيئًا موروثًا.
	</li>
	<li>
		تعلم خوارزميات من خلال البرمجة يعزز عدد من المهارات لديك مثل مهارات التواصل وحل المشكلات وحتى مهارة الصبر.
	</li>
	<li>
		تفيد البرمجة في توسيع المعرفة وتعلّم تصميم حلول لأيّ مشكلة تواجهك، إذ تُعَدّ البرمجة طريقة تفكير منظمة وطريقة لتبسيط المشكلة وتفكيكها إلى أجزاء صغيرة يمكن التعامل معها بصورة أسهل.
	</li>
	<li>
		تعزيز الإبداع والاختراع لدى المبرمج، إذ سيصبح توّاقًا لتقديم أفضل ما لديه ومنافسة ذويه والسعي نحو تقديم مشاريع جديدة غير متوفرة سابقًا.
	</li>
</ul>

<h2 id="طرق-لتعلم-البرمجة">
	طرق لتعلم البرمجة
</h2>

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

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

<h3 id="تعلم-البرمجة-عبر-الجامعة">
	تعلم البرمجة عبر الجامعة
</h3>

<p style="text-align: center;">
	<img alt="كيف تتعلم البرمجة في الجامعة" class="ipsImage ipsImage_thumbnailed" data-fileid="109596" data-unique="jf80w6nmx" style="width: 800px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_10/6347c49e8cb0f_---.png.06282c4f87f0ace3932158339132318f.png">
</p>

<p>
	يمكن تعلم البرمجة عبر مسار الجامعة بدخول إحدى التخصصات المرتبطة بها مثل تخصص علوم الحاسوب computer science أو تخصص <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> software engineering أو هندسة الحاسوب computer engineering وستدرس بانتظام وعبر سنوات بين 4 إلى 5 سنوات هذا التخصص لتتخرج بدرجة بكالوريوس ويمكنك أن تكمل بعدها إلى مرحلة الماجستير والدكتوراه، وهذا الخيار مناسب تمامًا لك إن كنت تفكر في تسلق هذا السلم والذي تكون نهايته المهنية غالبًا العمل في مهنة التدريس في المؤسسات التعليمية.
</p>

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

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

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

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

<h3 id="تعلم-البرمجة-عن-بعد-عبر-الإنترنت">
	تعلم البرمجة عن بعد عبر الإنترنت
</h3>

<p style="text-align: center;">
	<img alt="تعلم البرمجة عبر الإنترنت" class="ipsImage ipsImage_thumbnailed" data-fileid="109595" data-unique="m9vqm2nqh" style="width: 797px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_10/6347c49e260ae_---.png.f824189f69d1a8da8a175e09e2ccd0fd.png">
</p>

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

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

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

<h4 id="-">
	الدورات التعليمية
</h4>

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

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

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

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

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

<p>
	ومن الجدير بالذكر أنه تهدف أكاديمية حسوب إلى توفير <a href="https://academy.hsoub.com/store/c1-%d8%af%d9%88%d8%b1%d8%a7%d8%aa-%d8%aa%d8%b9%d9%84%d9%8a%d9%85%d9%8a%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://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>

<h4 id="-bootcamps">
	الورشات والمخيمات البرمجية Bootcamps
</h4>

<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>

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

<h4 id="-">
	القنوات والفيديوهات التعليمية
</h4>

<p>
	هذه القنوات منتشرة انتشارًا كبيرًا على اليوتيوب مثل <a href="https://www.youtube.com/channel/UCJv37tcBvJlBF2MoVMRMvbQ" rel="external nofollow">قناة أكاديمية حسوب</a>، كما يوجد العديد من المبرمجين المحترفين الذين لديهم قناة على اليوتيوب تحتوي على سلسلة من المحاضرات التعليمية النظرية والعملية أو حتى مواضيع متفرقة، وفي هذا الطريق لن تحتاج إلى التقيد بمكان معيّن لحضور دورة تعليمية ما ولن تضطر إلى دفع تكاليفها، إذ تكون أغلبها مجانية، ولن تضطر إلى دفع أي تكلفة إضافية مثل المواصلات والسكن، كما أنك غير مقيّد بوقت محدد بما أنها عبر الانترنت ومسجَّلة مسبقًا.
</p>

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

<h4 id="-">
	الكتب والمقالات
</h4>

<p>
	يفضل العديد من الأشخاص اللجوء إلى كتب برمجية للوصول إلى فهم أكثر دقة، والعديد من هذه <a href="https://academy.hsoub.com/files/c5-programming/" rel="">الكتب</a> توفرها أكاديمية حسوب مترجمة ومدققة جيدًا، كما يلجأ العديد من الراغبين في تعلم البرمجة إلى <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> لأخذ لمحة عامة حول تعلم البرمجة أو لتعلم البرمجة بصورة خاصة.
</p>

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

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

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="450" id="ips_uid_3930_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/Ar-TAbr58MM"></iframe>
</p>

<h3>
	المسابقات والتدريبات البرمجية
</h3>

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

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

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

<h2 id="كيف-تتعلم-البرمجة">
	كيف تتعلم البرمجة؟
</h2>

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

<p>
	لا تخشَ مما سبق فكلما كان الطريق صعبًا ذقت حلاوة الوصول!
</p>

<p style="text-align: center;">
	<img alt="كيف تتعلم البرمجة" class="ipsImage ipsImage_thumbnailed" data-fileid="109597" data-unique="jftbm9rgj" style="width: 797px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_10/6347c49f76cfe_--.jpg.fef4cdd94944cfb77df63c9a4675f731.jpg">
</p>

<h3 id="مفاهيم-تعلم-البرمجة-التأسيس-الصحيح">
	مفاهيم تعلم البرمجة: التأسيس الصحيح
</h3>

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

<p>
	أهم المفاهيم التأسيسية البرمجية التي يمكنك البدء بها هي:
</p>

<ul>
	<li>
		التفكير المنطقي
	</li>
	<li>
		الخوارزميات وحل المشكلات
	</li>
	<li>
		التعابير المنطقية أو البوليانية
	</li>
	<li>
		العمليات الرياضية الأساسية
	</li>
	<li>
		الأصناف classes والكائنات objects
	</li>
	<li>
		الدوال functions والتوابع methods
	</li>
	<li>
		بنى التحكم مثل التكرار Loop والشروط conditions
	</li>
	<li>
		التعاود Recursion
	</li>
	<li>
		المكتبات والحزم وأطر العمل
	</li>
	<li>
		أنواع البيانات
	</li>
	<li>
		أنواع لغات البرمجة
	</li>
	<li>
		البرمجة كائنية التوجه والبرمجة الوظيفية
	</li>
</ul>

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

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

<h3 id="أدوات-تعلم-البرمجة-اختيار-الوجهة-والتخصص">
	أدوات تعلم البرمجة: اختيار الوجهة والتخصص
</h3>

<p>
	لا أقصد بذكري أدوات تعلم البرمجة محررات النصوص وما سيلزمك أثناء البرمجة وكتابة الشيفرة، بل أقصد بها الأدوات والوسائل التي تتعلم البرمجة بها وتطبقها وأقصد تحديدًا لغات البرمجة والتقنيات المرتبطة بها التي تتعلم البرمجة بها.
</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="">إطار عمل Framework</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>
	وقد تتساءل، كيف تتعلم البرمجة دون الاهتمام بتعلم لغة برمجة والانشغال بها؟ سؤالك صحيح، فستحتاج أثناء تعلم المفاهيم إلى أداة أي لغة برمجة تطبق عليها ما تعلمته ولكن في الوقت نفسه لا تريد الانشغال بتعلم لغة البرمجة تلك وتفاصيلها وشيفراتها وهنا لحل المشكلة جاءت لغات البرمجة المرئية مثل سكراتش Scratch وما شابهها.
</p>

<p>
	<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%84%D8%B9%D8%A8%D8%A9-%D8%AA%D9%81%D8%A7%D8%B9%D9%84%D9%8A%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-r1697/" rel="">سكراتش</a> هي لغة برمجة مرئية مؤلفة من كتل جاهزة يمكنك عبر سحبها وتركيبها بناء برنامج كامل، وهي مناسبة جدًا للبدء بتعلم البرمجة من الصفر وتأسيس المفاهيم البرمجية التي ذكرناها أهمها الخوارزميات والتفكير المنطقي، وبناءً على ذلك، تجد أن <a href="https://academy.hsoub.com/store/7-%D8%AF%D9%88%D8%B1%D8%A9-%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>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="624" id="ips_uid_5565_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة علوم الحاسوب - أكاديمية حسوب" width="1110" data-embed-src="https://www.youtube.com/embed/EkvUFDevMlM"></iframe>
</p>

<p>
	بعد أن تتعلم المفاهيم، تبدأ بتطبيقها على لغة برمجة حقيقية ويمكنك بعدها التخصص بلغة البرمجة التي تريد تعلمها ودخول مجالها، وهنا يمكن أن أنصحك بدلًا من ذلك البدء بأساسيات لغة برمجة سهلة مثل لغة <a href="https://academy.hsoub.com/programming/javascript/" rel="">جافاسكربت JavaScript</a> أو <a href="https://academy.hsoub.com/programming/python/" rel="">لغة بايثون</a> والسبب سهولة كتابة الشيفرات فيهما وتنفيذها دون الحاجة إلى أي تعقيد في ضبط البيئة البرمجية لهما، ثم بعد ذلك يمكنك الانتقال إلى لغة البرمجة التي تُستخدم في المجال الذي تريد التخصص فيه مثل مجال تطوير مواقع الويب أو تطوير تطبيقات الجوال أو برمجة أنظمة التشغيل والأنظمة المدمجة.
</p>

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

<h2 id="نصائح-لتعلم-البرمجة">
	نصائح لتعلم البرمجة
</h2>

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

<h3 id="-">
	حدد هدفك من تعلم البرمجة
</h3>

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

<h3 id="-">
	تعلم لغة واحدة
</h3>

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

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

<h3 id="-">
	ابدأ ببرامج بسيطة
</h3>

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

<h3 id="-">
	تحلى بالصبر
</h3>

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

<h3 id="-">
	صاحب مبرمجًا
</h3>

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

<h3 id="-">
	اعتمد على نفسك في حل الأخطاء البرمجية
</h3>

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

<h3 id="-">
	لا تتوقف عن الممارسة والتدريب
</h3>

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

<h2 id="أسئلة-شائعة-حول-كيف-تتعلم-البرمجة">
	أسئلة شائعة حول كيف تتعلم البرمجة
</h2>

<h3 id="هل-تعلم-البرمجة-صعب">
	هل تعلم البرمجة صعب؟
</h3>

<p style="text-align: center;">
	<img alt="هل تعلم البرمجة صعب" class="ipsImage ipsImage_thumbnailed" data-fileid="109599" data-unique="t56lzqtmz" style="width: 797px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_10/6347c4a03dd66_---.jpg.f1c70d2ff8e89848a6b3d2648b70ecdf.jpg">
</p>

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

<p>
	إن أردت إجابة تفصيلية على هذا السؤال، فشاهد فيديو <a href="https://www.youtube.com/watch?v=B8U1CE6V_is" rel="external nofollow">هل البرمجة صعبة</a>.
</p>

<h3 id="هل-يؤثر-نمط-شخصيتي-على-تعلم-البرمجة">
	هل يؤثر نمط شخصيتي على تعلم البرمجة؟
</h3>

<p>
	التعامل مع البرمجة والحاسوب يتطلب بعض الانعزال عن الناس والأنشطة الاجتماعية والتعامل مع آلة أمامك بمخاطبتها عبر شيفرة طويلة تمضي أيامًا وأسابيعًا في كتابتها على انفراد وهذا قد لا يناسب بعض الأشخاص الاجتماعيين الذين يفضلون التعامل مع الناس والاحتكاك بهم، وهنا تظهر فكرة أن غالبية المبرمجين انطوائيين وأرى أنها صحيحة بنسبة ما، ويمكنك الاطلاع على مناقشة <a href="https://io.hsoub.com/programming/40560-%D8%B4%D8%AE%D8%B5%D9%8A%D8%AA%D9%83-%D9%83%D9%85%D8%A8%D8%B1%D9%85%D8%AC-%D9%85%D9%88%D8%B6%D9%88%D8%B9-%D9%84%D9%84%D9%86%D9%82%D8%A7%D8%B4" rel="external">شخصيتك كمبرمج</a> ومناقشة <a href="https://io.hsoub.com/programming/29804-%D9%87%D9%84-%D9%81%D8%B9%D9%84%D8%A7-%D8%AA%D8%AE%D8%B5%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%8A%D8%A4%D8%AB%D8%B1-%D8%A8%D8%A7%D9%84%D8%B3%D9%84%D8%A8-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%AD%D9%8A%D8%A7%D8%A9-%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A%D8%A9" rel="external">هل فعلاً تخصص البرمجة يؤثر بالسلب على الحياة الاجتماعية؟</a> في حسوب IO.
</p>

<h3 id="هل-احتاج-إلى-إتقان-اللغة-الإنجليزية-لتعلم-البرمجة">
	هل احتاج إلى إتقان اللغة الإنجليزية لتعلم البرمجة؟
</h3>

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

<h3 id="هل-هناك-مصادر-عربية-لتعلم-البرمجة">
	هل هناك مصادر عربية لتعلم البرمجة؟
</h3>

<p>
	قد يقول قائل، مراجع تعلم البرمجة قليلة في اللغة العربية أو ليست بجودة عالية، وأنا أقول أن المحتوى العربي غني جدًا بمصادر تعلم البرمجة بالعربية وهنا أحيلك إلى مقال <a href="https://hausaba.com/learn-programming-arabic/" rel="external nofollow">الدليل الشامل لتعلم البرمجة باستخدام المصادر العربية</a> لتتأكد من نفسك.
</p>

<p>
	كما يوجد دورات برمجة عربية تأخذ بيدك من الصفر وحتى الاحتراف مثل دورات أكاديمية حسوب، فالمميز في دوراتها أن الشرح بلغة عربية فصيحة وأنها توفر بيئة عربية متكاملة بدءًا من توفير التوثيقات البرمجية العربية التي تجدها في <a href="https://wiki.hsoub.com/" rel="external">موسوعة حسوب</a> وحتى <a href="https://academy.hsoub.com/programming/" rel="">المقالات البرمجية</a> و<a href="https://academy.hsoub.com/files/c5-programming/" rel="">الكتب البرمجية</a> في كافة المواضيع واللغات البرمجية وأخيرًا بمنصة <a href="https://academy.hsoub.com/questions/c3-programming/" rel="">أسئلة وأجوبة برمجية</a> لطلب أي مساعدة أو الإجابة عن سؤال كما تجد دعمًا أيضًا في <a href="https://io.hsoub.com/programming" rel="external">مجتمع البرمجة العربي</a> في منصة حسوب IO.
</p>

<h3 id="هل-احتاج-إلى-خبرة-في-الرياضيات-لتعلم-البرمجة">
	هل أحتاج إلى خبرة في الرياضيات لتعلم البرمجة؟
</h3>

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

<h3 id="كيف-تتعلم-البرمجة-من-الصفر">
	كيف تتعلم البرمجة من الصفر؟
</h3>

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

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

<h3 id="أنا-لست-منظمًا-فكيف-ألتزم-في-تعلم-البرمجة-بنفسي">
	أنا لست منظمًا فكيف ألتزم في تعلم البرمجة بنفسي؟
</h3>

<p>
	تعلم البرمجة -خصوصًا عبر دورات- يحتاج إلى حمل النفس على ما تكره وهو التنظيم، والتنظيم يحتاج إلى روتين، لذا ألزم نفسك بروتين قاسٍ وعاقبها إن تخلَّفت وقصرت مثل عدم الخروج إلى مكان محبب لك في عطلة نهاية الأسبوع، وفي الوقت نفسه كافئها إن أنجزت وثابرت، وفي هذا الصدد أنصحك بمقال <a href="https://academy.hsoub.com/freelance/productivity/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D9%84%D8%AA%D9%86%D8%B8%D9%8A%D9%85-%D8%AD%D9%8A%D8%A7%D8%AA%D9%83-r348/" rel="">دليلك لتنظيم حياتك</a> ففيه فوائد كبيرة تساعدك على التنظيم لا تفوتها.
</p>

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

<h3 id="هل-يمكنني-تعلم-البرمجة-عبر-الجوال">
	هل يمكنني تعلم البرمجة عبر الجوال؟
</h3>

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

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

<h2 id="-">
	خاتمة
</h2>

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

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

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

<p>
	<em>ملاحظة: كُتب هذا المقال سابقًا عام 2015 وقد جرى تعديله وتحديث محتواه لاحقًا.</em>
</p>

<h2 id="-">
	اقرأ أيضًا
</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/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/%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%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>
	</li>
	<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>
		<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/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="">البرمجة باستخدام سكراتش Scratch</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">206</guid><pubDate>Thu, 13 Oct 2022 18:00:00 +0000</pubDate></item><item><title>&#x645;&#x62A;&#x644;&#x627;&#x632;&#x645;&#x629; &#x627;&#x644;&#x645;&#x62D;&#x62A;&#x627;&#x644;: &#x639;&#x646; &#x645;&#x633;&#x627;&#x647;&#x645;&#x62A;&#x64A; &#x627;&#x644;&#x623;&#x648;&#x644;&#x649; &#x641;&#x64A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x64A;&#x627;&#x62A; &#x645;&#x641;&#x62A;&#x648;&#x62D;&#x629; &#x627;&#x644;&#x645;&#x635;&#x62F;&#x631;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%AA%D9%84%D8%A7%D8%B2%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D8%A7%D9%84-%D8%B9%D9%86-%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%AA%D9%8A-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%89-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1709/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_09/631c4417d8da4_---------.png.8b27991d29d0f15c77f1d75e84d6e7d8.png" /></p>

<p>
	تتحدث كاتبة المقال عن تجربتها الشخصية مع <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1%D8%9F-r1650/" rel="">البرمجيات مفتوحة المصدر</a>، وبالتحديد عن الخطأ الأول الذي ارتكبته في بداية مشوارها، وكاد يثنيها عن الشروع بالعمل، وقد عنونت المقال بمتلازمة المحتال Impostor Syndrome في إشارة منها إلى ذلك الشعور الداخلي الذي يتغلب علينا في بعض الأحيان ويزعزع ثقتنا بأنفسنا عبر التشكيك بقدراتنا وما أنجزناه، علّ المقال يكون مفيدًا لكل راغب بدخول هذا المجال.
</p>

<p>
	تعلّمتُ -تقول الكاتبة- أساسيات البرمجة من خلال <a href="https://academy.hsoub.com/devops/networking/%D8%A2%D9%84%D9%8A%D8%A9-%D8%B9%D9%85%D9%84-%D8%B4%D8%A8%D9%83%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-r571/" rel="">الإنترنت</a>، اتبعت عددًا من البرامج التعليمية وأنجزت المشاريع الملحقة بها، وأحرزت تقدمًا، لكني تساءلت دومًا ماذا بعد؟ ما هي خطوتي التالية للارتقاء إلى المستوى الأعلى؟ وفي هذه المرحلة صادفني منشور على إحدى المدونات يخبر القارئ أن المساهمة في المشاريع مفتوحة المصدر هي الطريقة المثلى لكل مبتدئ يرغب بتطوير مهارته البرمجية والانتقال إلى مستوى أعلى.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

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

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

<p>
	لم أكن شخصًا لا يحب التعلم بل على العكس، لكن المصادر التي اعتمدتها تتوقع من القارئ أن يمتلك معرفةً جيدة ومسبقة بمنصة <a href="https://academy.hsoub.com/programming/workflow/git/%D9%85%D8%A7-%D9%87%D9%88-git%D8%9F-r1592/" rel="">Git</a> و GitHub وكيف أنها أتاحت للعديد من المطورين حول العالم أن يتعاونوا في مشروعٍ واحد.
</p>

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

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

<p>
	استغرقت فعليًا حوالي السنة ونصف من العمل الجاد بدوامٍ كامل، لأشعر أخيرًا بالثقة الكافية لإغلاق حجج المحتال الداخلي، وتقديم <a href="https://academy.hsoub.com/programming/workflow/git/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B7%D9%84%D8%A8-%D8%B3%D8%AD%D8%A8-%D8%B9%D9%84%D9%89-github-r1581/" rel="">طلب السحب الأول PR على GitHub</a> وبدء رحلتي مع البرمجيات مفتوحة المصدر.
</p>

<h2>
	أساطير ضارة
</h2>

<p>
	سنكشف أمامكم زيف اثنتين من أكثر الأساطير الضارة انتشارًا حول البرمجيات مفتوحة المصدر.
</p>

<h3>
	الأسطورة الأولى: المساهمة في البرمجيات مفتوحة المصدر سهلة
</h3>

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

<p>
	أما الآن أفهم معنى هذه الرسالة بطريقةٍ مختلفة، فعندما يصف الناس هذه المساهمة بالسهلة، فهم يقصدون أنها هدف قابل للتحقيق ويمكن للمبتدئين الوصول إليه إن اجتهدوا، أو أنك تستطع <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D8%B0%D9%8A-%D9%8A%D8%AD%D9%81%D8%B2-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D9%8A%D9%86-%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1%D8%9F-r1708/" rel="">المساهمة في البرمجيات المفتوحة المصدر</a> دون كتابة الكثير من التعليمات البرمجية المعقدة، هذا كله صحيح ولكن الأهم أن تعرف أن هذه المساهمة في الواقع صعبة وتتطلب منك وقتًا كافيًا تفهم خلاله قاعدة شيفرة جديدة وأدوات خاصة يستخدمها المطورون.
</p>

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

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

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

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

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

<h2>
	خطئي الأول في المساهمة بالمشاريع مفتوحة المصدر
</h2>

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

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

<h2>
	لا تدع Git يحبط عزيمتك
</h2>

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

<p>
	يوجد العديد من المصادر الجيدة لتتعرف على Git و GitHub (وهو الموقع الذي يستضيف الشيفرات البرمجية ويتيح للأشخاص أن يتعاون عليها باستخدام Git)، ويمكنك أن تبدأ من <a href="https://academy.hsoub.com/programming/workflow/git/" rel="">قسم Git على أكاديمية حسوب</a> سيشكل نقطة انطلاق جيدة إضافة إلى أنه متاح باللغة العربية إذ فيه عدة سلاسل ومقالات مفيدة.
</p>

<p>
	أنصحك أن تنتقل إلى سلسلة "المساهمة في المشاريع مفتوحة المصدر" وأن تبدأ بقراءة المقال الأول فيها <a href="https://academy.hsoub.com/programming/workflow/git/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-%D8%A7%D8%A8%D8%AF%D8%A3-%D8%A8%D8%AA%D8%B9%D9%84%D9%85-%D9%86%D8%B8%D8%A7%D9%85-git-r1580/" rel="">كيفية المساهمة في المشاريع مفتوحة المصدر: ابدأ بتعلم نظام Git</a> فهي سلسلة مفيدة مؤلفة من ستة مقالات، كما تجد بالقسم أيضًا سلسلة عن <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://opensource.com/article/19/11/my-first-open-source-contribution-impostor-syndrome" rel="external nofollow">My first contribution to open source: Impostor Syndrome</a> لصاحبته Galen Corey.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1%D8%9F-r1650/" rel="">ما هي البرمجيات مفتوحة المصدر؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B1%D8%A7%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1586/" rel="">تراخيص البرامج مفتوحة المصدر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/git/%D8%A7%D9%84%D8%A5%D8%B4%D8%B1%D8%A7%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-%D8%B9%D8%A8%D8%B1-%D8%BA%D9%8A%D8%AA-%D9%87%D8%A8-github-r1585/" rel="">الإشراف على مشاريع البرمجيات مفتوحة المصدر عبر غيت هب GitHub</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%B1%D8%A9-%D9%88%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r590/" rel="">الفرق بين البرمجيات الحرة ومفتوحة المصدر</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1709</guid><pubDate>Sat, 24 Sep 2022 11:35:38 +0000</pubDate></item><item><title>&#x645;&#x627; &#x627;&#x644;&#x630;&#x64A; &#x64A;&#x62D;&#x641;&#x632; &#x627;&#x644;&#x645;&#x633;&#x627;&#x647;&#x645;&#x64A;&#x646; &#x644;&#x62A;&#x637;&#x648;&#x64A;&#x631; &#x627;&#x644;&#x645;&#x634;&#x627;&#x631;&#x64A;&#x639; &#x645;&#x641;&#x62A;&#x648;&#x62D;&#x629; &#x627;&#x644;&#x645;&#x635;&#x62F;&#x631;&#x61F;</title><link>https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D8%B0%D9%8A-%D9%8A%D8%AD%D9%81%D8%B2-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D9%87%D9%85%D9%8A%D9%86-%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1%D8%9F-r1708/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_09/631c3b4804d82_-------.png.ec8e0c7eaa500bf643899542cb464f5c.png" /></p>

<p>
	لطالما كانت الأسباب التي تدفع الناس للمساهمة في المشاريع <a href="https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%B1%D8%A9-%D9%88%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r590/" rel="">الحرة ومفتوحة المصدر</a> FOSS مثارًا للاهتمام، ومع ذلك فإن أحدث البحوث حولها يعود تاريخه لعشر سنوات سابقة أو ربما أكثر، وقد تغير العالم كثيرًا منذ ذلك الحين.
</p>

<p>
	لذا سنعرض في هذا المقال سبع أفكار من دراسة بحثية حديثة أثارت الموضوع مجددًا، وأعادت دراسة الأسباب القديمة، وسألت المساهمين الحاليين عن ما يحفزهم اليوم لتطوير مشاريع حرة مفتوحة المصدر، وخلُّصت في النتيجة لمجموعة أفكار من شأنها مساعدة مديري المجتمع <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">مفتوح المصدر</a> على تطوير مجتمعهم من جهة، وتفسير الأمر للمهتمين به من أفراد عاملين فيه أو منظمات داعمة أو دارسة له من جهةٍ ثانية، ففي النهاية معرفة الأسباب مهمة للتطوير، فمعرفة محفزات المساهمين تفيد الجميع في اتخاذ قرارات مؤثرة وداعمة لهم ولمشاريعهم.
</p>

<h2>
	لمحة تاريخية عن البحوث التي تناولت محفزات المشاريع مفتوحة المصدر
</h2>

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

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

<p>
	نشرت <a href="https://www.semanticscholar.org/paper/Carrots-and-Rainbows%3A-Motivation-and-Social-in-Open-Krogh-Haefliger/52ec46a827ba5d6aeb38aaeb24b0780189c16856?p2df" rel="external nofollow">دراسة بحثية</a> من أشمل الدراسات في العام 2012، تلخص المحفزات التي تدفع المساهمين في هذا المجال لكن المحفزات لابد تغيرت على مدى السنوات العشر الماضية، بالأخص مع تزايد اهتمام الشركات بالمشاريع مفتوحة المصدر ووجود موظفين بأجرٍ مدفوع يعملون حاليًا في هذا المجال، وأصبح من الضروري إعادة دراستها وتقييمها.
</p>

<h2>
	تغير محفزات المساهمين
</h2>

<p>
	تناولت دراستنا العلمية بعنوان <a href="https://arxiv.org/abs/2101.10291" rel="external nofollow">الأسباب تتغير- إعادة نظر في دوافع المساهمين في المشاريع مفتوحة المصدر</a> المحفزات التي تدفع الناس للمساهمة في المشاريع الحرة مفتوحة المصدر FOSS وما يدفعهم للاستمرار فيها بعد ذلك.
</p>

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

<p>
	يستند البحث إلى استبيان أُجري في أواخر العام 2020 وأجاب عنه حوالي 300 مساهم في البرمجيات الحرة ومفتوحة المصدر.
</p>

<h2>
	أهم سبعة محفزات للمساهمة في المشاريع مفتوحة المصدر
</h2>

<p>
	نلخص أهم نتائج الدراسة فيما يلي.
</p>

<h3>
	1. تلعب الدوافع الجوهرية دورًا رئيسيًا
</h3>

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

<h3>
	2. السمعة والدافع المهني أقوى من المقابل المادي
</h3>

<p>
	يسعى المساهمون للسمعة الطيبة بنسبة 68٪ وتدفعهم الرغبة في التطور المهني بنسبة 67٪، بينما أشار أقل من 30٪ منهم بأن دافعهم للانضمام كان ماديًا سعيًا لأجرٍ مدفوع، بموازنة هذه النتائج بالدراسات السابقة نجد أن السمعة اليوم تعد دافعًا أكثر أهمية مما كانت عليه في ما مضى.
</p>

<h3>
	3. ازدياد أهمية الجوانب الاجتماعية
</h3>

<p>
	فقد ارتفعت نسب الرضا والاستمتاع بمساعدة الآخرين إلى 89٪ في التصنيف والقُربى إلى 80٪ موازنةً بالدراسات الاستقصائية التي أجريت في بدايات العقد الأول من القرن الحادي والعشرين.
</p>

<h3>
	4. تتغير محفزات الناس كلما زاد عهدهم بالمساهمة
</h3>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="107686" href="https://academy.hsoub.com/uploads/monthly_2022_09/img-01-sankey_motivations.png.aeaee5e0d5d8927d8673d0d6c807ce23.png" rel=""><img alt="img-01-sankey_motivations.png" class="ipsImage ipsImage_thumbnailed" data-fileid="107686" data-unique="0om5wahxs" src="https://academy.hsoub.com/uploads/monthly_2022_09/img-01-sankey_motivations.thumb.png.c7cf19ab9c825943522fd295389d039d.png" style="width: 700px; height: auto;"></a>
</p>

<h3>
	5. الاستخدام الشخصي مجرد مدخل
</h3>

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

<h3>
	6. تختلف المحفزات تبعًا للخبرة والعمر
</h3>

<p>
	اتجهت حوافز المطورين ذوي الخبرة أكثر باتجاه الإيثار بمعدل 5.6 ضعفًا عن المبتدئين، والأجور بمعدل 5.2 ضعفًا، وكذلك الأيديولوجية 4.6 ضعفًا، بينما أعطى المبتدئون معدلاتٍ أعلى للأسباب المتعلقة بحياتهم المهنية بمعدل 10 أضعاف والتعلم بحوالي 5.5 ضعفًا والمتعة 2.5 ضعفًا.
</p>

<p>
	وبالنظر إلى التحولات في محفزات المشاركين وجدنا زيادةً كبيرة في التحول إلى الإيثار حوالي 120% لدى ذوي الخبرة، بينما انخفضت انخفاضًا طفيفًا حوالي 16% لدى المبتدئين.
</p>

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

<h3>
	7. المحفزات تختلف بين المبرمجين وسواهم
</h3>

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

<h2>
	تحفيز المساهمين بناء على طول عهدهم في المجال
</h2>

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

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

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

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

<p>
	أما في الختام نذكركم برابط <a href="https://arxiv.org/pdf/2101.10291.pdf" rel="external nofollow">الورقة البحثية</a> التي اعتمدنا عليها و<a href="https://zenodo.org/record/4453904#.YFtFRa9KhaR" rel="external nofollow">التقرير الكامل عنها</a> مع الحفاظ على الحقوق الفكرية لكافة المساهمين فيها.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/21/4/motivates-open-source-contributors" rel="external nofollow">?What motivates open source software contributors</a> لأصحابه Igor Steinmacher و Georg Link و Anita Sarma و Gregorio Robles و Bianca Trinkenreich و Christoph Treude و Marco Gerosa و Igor Wiese.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">ما المقصود بمصطلح مفتوح المصدر (open source)؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B1%D8%A7%D8%AE%D9%8A%D8%B5-%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r1586/" rel="">تراخيص البرامج مفتوحة المصدر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1%D8%9F-r1650/" rel="">ما هي البرمجيات مفتوحة المصدر؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%B5%D9%8A%D8%A7%D9%86%D8%A9-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r359/" rel="">صيانة المشاريع مفتوحة المصدر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%B1%D8%A9-%D9%88%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r590/" rel="">الفرق بين البرمجيات الحرة ومفتوحة المصدر</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1708</guid><pubDate>Sat, 24 Sep 2022 11:34:14 +0000</pubDate></item></channel></rss>
