ماهي البرمجة

ماهي البرمجة

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

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

البرمجة بالإنجليزية 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 بمعنى أنه يمكنك تمرير نتيجة أمر ما إلى أمر آخر كما هو الحال في نظام التشغيل لينكس.
  • Add new Comment
  • 2000  Character
  • Please enter Characters.