ماهي البرمجة

ماهي البرمجة

ما هي البرمجة، مفهوم البرمجة، تعريف البرمجة، الهدف من تعلم البرمجة، كيف تتعلم البرمجة، وماهي الأجهزة القابلة للبرمجة، تعريف البرنامج، تعريف الخوارزمية، أنواع البرامج أو التطبيقات

تعريف البرمجة

البرمجة بالإنجليزية Programming أو Scripting، والبرمجة هي عملية إنشاء أو كتابة التعليمات أو الأوامر لكي يتم تنفيذها من قبل المتلقي، والمتلقي هو أي جهاز قابل للبرمجة.

ويمكن تعريف البرمجة على أنها وسيلة للتواصل بين البشر (المبرمج) والآلة (والتي تتمثل في أي جهاز قابل للبرمجة)، حيث إعتاد البشر على إستخدام اللغات المختلفة مثل اللغة العربية أو الإنجليزية للتواصل فيما بينهم، فقد تم إبتكار مجموعة من اللغات الأخرى (لغات البرمجة) للتواصل بين البشر والآلة، وكما هو الحال بين البشر اللذين يتحدثون بلغات مختلفة حيث يتم إستخدام مترجم ليتمكن البشر من فهم اللغات المختلفة، يتم ذلك أيضا بين البشر والآلة حيث يتم ترجمة لغة البرمجة (التي يفهمها البشر) إلى لغة الآلة والتي تتمثل في الصفر والواحد أو كما تعرف بـ النظام الثنائي وهي اللغة التي تفهمها الآلة عن طريق إستخدام برامج مخصصة لذلك مثل المترجم Compiler أو المفسر Interpreter.

ما هي الأجهزة القابلة للبرمجة؟

عادة ما يتم كتابة الأوامر البرمجية عن طريق جهاز الحاسوب، ولكن بعد ذلك يمكنك نقل وتشغيل البرنامج على أي جهاز آخر، مثل:

  • جهاز الحاسوب.
  • الهاتف الجوال (الموبايل).
  • الإنسان الآلي (الروبوت).
  • التلفزيونات الذكية.
  • مشغل الألعاب، مثل XBox و Playstation.
  • السيارات الحديثة.
  • أي جهاز إلكتروني يحتوي على وحدة معالجة مركزية CPU، أو وحدة تحكم Microcontroller.

ماهو الهدف من البرمجة؟

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

كيف أتعلم البرمجة؟

في البداية يجب التيقن بأنه يمكن لأي شخص أي كانت إمكانياته، أن يتعلم البرمجة، ولكي تتعلم البرمجة فأنت تحتاج إلى شيئين رئيسيين، بخلاف أنك تمتلك جهاز حاسوب، وهما:

  • أن تقوم بتوسيع تفكيرك أو ما يعرف بـ Growth Mindset، فعلى سبيل المثال تخبر نفسك بأنه يمكنك أن تفعل شيء ما، على عكس أن تقول أن إمكانياتك لا تسمح بالقيام بهذا الشيء.
  • أن تقوم بتطبيق ما تتعلمه بإستمرار، ويفضل أن تقوم بالتطبيق مع مدرب أو معلم.

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

ماهي أفضل طريقة لتعلم البرمجة؟

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

وأيضا يمكنك قراءة بعض الكتب الخاصة بالبرمجة، أو قراءة المستندات الرسمية (Documentation) لأي لغة برمجة ترغب في تعلمها، وأي كانت الطريقة التي ستبدأ بها يجب أن تعلم أنه عاجلا أو آجلا سوف تلجأ لقراءة المستندات الرسمية للغات البرمجة.

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

ويتبقى أن نتعرف على بعض المفاهيم المتعلقة بالبرمجة، وهي كالتالي

تعريف البرنامج

البرنامج بالإنجليزية Program، والبرنامج هو عبارة عن مجموعة من الأوامر أو التعليمات البرمجية تسمى الخوارزميات، وهذه الأوامر يتم كتابتها بأي لغة برمجة ثم يتم ترجمتها أو تحويلها إلى لغة الآلة، حتى تتمكن الآلة من تنفيذ الأوامر أو بإختصار تشغيل البرنامج.

يتم تحويل الأوامر البرمجية إلى لغة الآلة عن طريق إستخدام برامج متخصصة مثل المترجم Compiler أو المفسر Interpreter، ويتم تحديد البرنامج المستخدم طبقا لتصنيف لغة البرمجة المستخدمة أو بمعنى آخر لإنتماء لغة البرمجة لأي نوع من أنواع لغات البرمجة.

تعريف الخوارزمية

الخوارزميات تعرف بالإنجليزية بـ Algorithms، وتعرف أيضا بـ حل المشكلات - Problem Solving، ومن خلال هذا المسمى يمكنك تعريف الخوارزمية بأنها مجموعة من الخطوات التي يتم تطبيقها على مجموعة من البيانات المتاحة والتي تعرف بـ المدخلات - Inputs، لتحصل منها على نتيجة (حل المشكلة) وهو ما يعرف بـ المخرجات - Output، وهذه الخطوات ببساطة هي الخوارزمية.

أنواع البرامج

يمكن تصنيف البرامج إلى أربعة أصناف أو أنواع رئيسية، وهي كالتالي:

البرامج الأصلية/المحلية - Native Applications

وهي البرامج المستقلة التي لا تعتمد على أي برامج أخرى، والتي تمتلك واجهة ليتفاعل معها المستخدم، ويتم تشغيلها مباشرة من جهاز المستخدم، سواء كان جهاز حاسوب أو موبايل أو أي جهاز آخر.

ومن أمثلة هذه البرامج برنامج متصفح الإنترنت، برنامج معالجة النصوص Word، برنامج مشغل الموسيقى، برنامج معالجة الصور Photoshop، محرر الأكواد البرمجية، وغيرها من البرامج.

البرامج الخفية - Daemon Applications

وهي البرامج التي تعمل بشكل مستمر في الخلفية، والتي لا تمتلك واجهة لتفاعل المستخدم.

ومن أمثلتها تعريفات العتاد الخاص بالحاسوب، وبرنامج تحديث نظام التشغيل، والبرنامج الخاص بـ خادم الويب، وغيرها الكثير من البرامج الخفية.

برامج الويب - Web Applications

وهي البرامج التي تحتوي على صفحة ويب أو أكثر، والتي تم تصميمها ليتفاعل معها المستخدم، والتي تعمل بداخل أي برنامج متصفح انترنت.

ومن أمثلتها البرنامج الخاص بإدارة حسابك البنكي (على موقع البنك الإلكتروني)، والبرنامج الخاص بإدارة البريد الإلكتروني مثل Gmail أو Yahoo، أو أشهرها وأكثرها إستخداما برنامج Google Sheets، و Google Docs.

التطبيقات الصغيرة - Applets

وهي البرامج الصغيرة الحجم والتي عادة ما تقوم بتأدية مهمة واحدة أو عدة مهام بسيطة، وفي معظم الأحيان تعمل هذه التطبيقات من خلال برامج أخرى.

ومن أمثلة هذا النوع من البرامج، البرامج التي تعمل من خلال موجه الأوامر الـ CMD أو الـ Terminal، فعندما تكتب الأمر ping على سبيل المثال فإن موجه الأوامر يقوم بتشغيل الـ Applet المسمى بـ ping لتعرف منه حالة إتصالك بموقع معين، ومن أمثلتها أيضا برنامج مشغل الفلاش على المتصفح، فهو برنامج صغير يتم تنصيبه ليساعد في فتح ملفات الـ Flash الموجودة في المواقع الإلكترونية.

Comments

  • باسم شاهينباسم شاهين
    مقال جميل، بس مش المفروض ان البرامج الاصلية دي تكون زي نظام التشغيل مثلا لانه مش بيحتاج حاجة يشتغل عليها، لكن الفوتوشوب مثلا بيحتاج نظام تشغيل بيشتغل عليه؟!
    اتمنى الافادة... بحاول اكون مبرمج لسة وبتعرف على البرمجة...
    اتمنى كمان توضحلي الفرق بين الـ compiler والـ interpreter...
    شكرا
    • Reply to باسم شاهين
    • 2000  Character
    • Please enter Characters.
    • Ahmed AbuelfatehAhmed Abuelfateh
      نظام التشغيل في حد ذاته لا يعتبر برنامج، فهو عبارة عن نظام متكامل لإدارة موارد الجهاز، بحيث يوفر بيئة العمل المناسبة لتشغيل أي برنامج.
      بالنسبة لـ برامج أصلية هي ترجمة للكلمة الإنجليزية Native Applications، ويقصد بها البرامج التي تخاطب نظام التشغيل بشكل مباشر دون الحاجة لأي برامج وسيطة.
      على سبيل المثال، إذا قمت بإنشاء برنامج بلغة البرمجة Java وأردت تشغيله بشكل مباشر على نظام التشغيل ويندوز فلن يعمل البرنامج وذلك لأنه يتطلب وجود بيئة عمل خاصة تسمى بـ Java Runtime أو JRE، وبالتالي يعتبر هذا البرنامج غير أصلي بالنسبة لنظام التشغيل ويندوز (Not Native App) لأنه تطلب وجود برنامج آخر لتشغيله.
      وهنا يجب التفرقة بين كلمة أصلي التي تطلق على نظام التشغيل الذي تم تفعيله بشكل شرعي، وكلمة أصلي التي تستخدم لتميز طريقة عمل البرامج على نظام التشغيل.
      بالنسبه للفرق بين Compiler و Interpreter فقد كتبت مقالة مفصلة تشرح الفرق بينهم وطريقة إستخدامهم يمكنك قراءتها على الرابط التالي https://abuelfateh.com/blog/أنواع-لغات-البرمجة/

      أتمنى أكون وضحت المطلوب من السؤال، وسعدت جدا بسؤالك.
  • باسم شاهينباسم شاهين
    انا اسعد والله برد حضرتك، حقيقي شكرا ? كان عندي سؤالين كمان... هل كل امر في برنامج الـ CMD or Terminal هو برنامج مصغر، قصدي مثلا زي الاوامر pwd, cd, ls ولا نوع محدد من الاوامر هو اللي بيطلق عليه انه Applets؟ ايه الفرق بين CMD و PowerShell؟
    • Reply to باسم شاهين
    • 2000  Character
    • Please enter Characters.
    • Ahmed AbuelfatehAhmed Abuelfateh
      أولا يجب معرفة أن كل البرامج أي كان تصنيفها يمكن تشغيلها عن طريق سطر الأوامر CMD، على سبيل المثال يمكنك فتح ملف بإستخدام برنامج notepad عن طريق كتابة الأمر التالي
      notepad file.txt
      وسوف يتم فتح الملف file.txt في برنامج الـ notepad أو إنشاء ملف جديد بهذا الإسم، وفي هذه الحالة لا يتم تصنيف برنامج الـ notepad على أنه Applet.
      أما الأوامر أو البرامج التي تعمل من خلال سطر الأوامر فقط مثل (cd, ping, dir, ....) يطلق عليها Applets.
      لقد قمت بكتابة موضوع عن سطر الأوامر CMD يمكنك قراءته على الرابط التالي https://abuelfateh.com/blog/اوامر-cmd-موجه-الأوامر/
      أما بالنسبة لبرنامج PowerShell فهو عبارة عن بيئة عمل متكاملة تمكنك من إدارة نظام التشغيل ويندوز بشكل كامل ومن أهم مميزاته أنه يدعم تقنية الـ pipes بمعنى أنه يمكنك تمرير نتيجة أمر ما إلى أمر آخر كما هو الحال في نظام التشغيل لينكس.
  • Abdu SalamAbdu Salam
    هل البرمجة تحتاج اللغة الانجليزية ؟
    • Reply to Abdu Salam
    • 2000  Character
    • Please enter Characters.
    • Ahmed AbuelfatehAhmed Abuelfateh
      البرمجة تحتاج إلى الحد الأدنى من المعرفة باللغة الإنجليزية كشرط أساسي، وكلما زادت معرفتك باللغة الإنجليزية كلما تيسر لك التعامل مع الأوامر البرمجية المختلفة.
      كما تعلم أن الكمبيوتر لا يفهم إلا لغة الآلة أو كما تعرف بـ Machine Code، وهي عبارة عن أوامر برمجية تحتوي على الرموز 0 و 1.
      في بداية تطور الكمبيوتر كان المبرمجين يكتبون البرامج عن طريق هذه اللغة، وهو ما يعد أمر بالغ الصعوبة والتعقيد، ولذلك قاموا بتطوير لغات البرمجة بداية من لغة التجميع Assembly وحتى اللغات الحديثة الموجودة الآن.
      الهدف الأساسي من وجود لغات البرمجة هو إتاحة فهم الكود للبشر أو المبرمجين، وبعد ذلك يتم ترجمة هذا الكود إلى لغة الآلة حتى يتمكن الكمبيوتر من تشغيله.
      وبما أن الكود يتم كتابته باللغة الإنجليزية، فكلما زادت معرفتك باللغة الإنجليزية كلما تمكنت من فهم الكود بشكل صحيح، فلنفترض أن هناك دالة تسمى sort، إذا كان لديك معرفة باللغة الإنجليزية سوف تتمكن من فهم معنى الكلمة وهي ترتيب، وبالتالي سوف تتمكن من توقع ما تقوم به هذه الدالة بدون التعرف على تفاصيل كيفية عملها، وغيرها الكثير من الأمثلة.
  • RamaRama
    لازم يكون عندي جهاز حاسوب لحتى اقدر اتعلم البرمجة صراحة حاسة انها كتير معقدة ومافهمت سو لهدف منها ولا شو بتستفيد الشخص لما يتعلمها اتمنى الاجابة شكراً
    • Reply to Rama
    • 2000  Character
    • Please enter Characters.
    • Ahmed AbuelfatehAhmed Abuelfateh
      السؤال، هل لازم يكون عندي جهاز حاسوب لحتى أقدر أتعلم البرمجة؟
      نعم يمكنك تعلم البرمجة بدون إمتلاك جهاز حاسوب، ولكن سوف يكون الأمر مرهق بشكل كبير، وهنا يجب التأكيد على أنه يمكنك تعلم البرمجة ولكن لا يمكنك تطبيق البرمجة بدون إمتلاك جهاز حاسوب، (لا يمكنك إنشاء أي نوع من البرامج أو التطبيقات بدون إمتلاك جهاز حاسوب).
      السؤال، حاسه انها كتير معقدة؟
      البرمجة في حد ذاتها ليست معقدة، ولكن مثلها مثل أي شيء تتعلميه، إذا كان عندك شغف لتعلمها ووجد المصدر المناسب لتعلمها فسوف تكون سهلة بإذن الله.
      السؤال، شو الهدف من البرمجة أو شو بيستفيد الشخص لما يتعلمها؟
      هذا السؤال يحتاج إلى عدة مقالات للإجابة عليه، ولكن بشكل مختصر يمكن الإجابة بأن الهدف الأساسي من البرمجة هو القدرة على تنفيذ المهام بإستخدام الكمبيوتر، وكما تعرفين فإن الكمبيوتر قادر على تنفيذ مليارات العمليات في الثانية الواحدة وهو أمر لا يمكن لأي إنسان القيام به، ولكي تتمكن من الإستفادة من هذه القدرة يجب عليك تعلم البرمجة.
      ولكي تتعلم البرمجة يجب أن يتواجد الشغف لها أولا، ثم تواجد المصدر المناسب للتعلم منه.
  • ريهامريهام
    فهمت جدا كلام حضرتك وحبيت اعلق عشان اشكرك ربنا يباركلك
    بما اني اتخرجت والفترة الجايه هشتغل ع اللغات التركي والانجلش ... فالافضل اتمكن منهم وبعدين اتعلم البرمجة ولا ابدا فيها معاهم ؟
    وهل هي ممكن يكون ليها فايده لاي مترجم يستغلها ف شغله ولا ملهاش علاقة ؟
    • Reply to ريهام
    • 2000  Character
    • Please enter Characters.
  • Add new Comment
  • 2000  Character
  • Please enter Characters.