تعلٌم البرمجة وتحكٌم الغرب

computer_programming

يقبل الكثير من الشباب اليوم على تعلم برمجة الحاسوب ، انطلاقاً من كون المعلوماتية لغة العصر من جهة ، وكون الحاسوب أداة ممتعة للتعلم والتسلية .

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

لماذا أتعلم البرمجة ؟

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

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

ما المؤهلات التي يجب أن أمتلكها حتى أبدأ بتعلم البرمجة ؟

قبل أن تبدأ بتعلم البرمجة يجب أن تعرف أي نوع من المبرمجين تريد أن تكون :

_ إن كنت تريد أن تصبح مبرمجاً جيداً فعليك أن تمتلك أسلوب تفكير رياضي ، وأن تكون جيدا في الرياضيات بشكل عام، إضافة إلى معرفة لا بأس بها في اللغة الإنكليزية ، وأن تكون مزود بوسائل تعليمية للبرمجة كالكتب (الكترونية أو عادية)
أو شخص ما يعلمك الأساسيات ويؤهلك لتطوير نفسك بنفسك ، وطبعاً يجب أن تتوافر فيك الإرادة والاستعداد للتعلم .

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

** يمكن بالطبع الاستعانة بقواميس ولكن هكذا ستكون أقل مرونة في التعلم**
لا يوجد تناقض بين الاستفادة من المواقع الأجنبية وبين فكرة التحرر من تحكم الغرب
(سأبين ذلك في فقرة لاحقة).

والآن لننتقل إلى الخطوات الفعلية :

كيف أبدأ بتعلم البرمجة ؟ وما اللغة التي تنصحني أن أتعلم البرمجة بها ؟

1_ إن كنت تريد أن تكون من النوع الأول من الفقرة السابقة ، وأنت مقتنع بنظام التشغيل (Windows) ، وستستعمله في حاسوبك ، فبرأيي لغة (Basic) التي تكتب بها بواسطة برنامج (Visual Basic) ستلبي حاجاتك بشكل كافي ، ولكن حبذا بل يفضَّل بل وأحيانا لابد من تعلم التعامل مع قواعد البيانات ولو بشكل بسيط ، وعند الضرورة يمكن الانتقال إلى تعلم لغة (SQL) أو بعض أهم أوامرها ، لتكسبك مرونة أكبر مع قواعد البيانات .
إن دعت الضرورة .

2 _ أما أنت يا من تبحث عن الاحتراف :
فيمكن أن تبدأ بلغة سهلة ومفهومة كالفيجوال بيسك فهذا سيفيدك في معرفة ما هي البرمجة وتدخل عالمها ، ثم يمكنك الانتقال إلى لغة أعقد وأصعب وغير مقيدة بنظام الويندوز *ويمكن أيضاً أن تبدأ بالغة الأكثر تعقيدا والتي تنوي الاستمرار فيها إن كانت لديك وسائل تعليمية كافية تعينك على ذلك .
أنا لم أقصد التقليل من شأن الفيجوال بيسك فهي لغة جيدة، وبشكل عام : تعلمك لأي لغة برمجة بشكل جيد هو إنجاز ممتاز .

أما كيف تبدأ تعلم لغة البرمجة :

عندما تقوم بتعلم لغة البرمجة من كتاب ستتقيد بترتيب الأفكار الوارد فيه،ولكن بشكل عام هناك أولويات في تعلم لغة البرمجة :

  • ابدأ بتعلم العمليات الحسابية والمنطقية (+,-,*,/,>,<,= …الخ)
  • تعلم ما هي المتحولات وأنواعها وكيفية تعريفها.
  • العبارات الشرطية وحلقات التكرار.
  • ثم انتقل إلى الأمور الأعقد : -التوابع (Functions),الإجراءات (Subs)،الصنف (Class)
    -المصفوفة (Array)،السجل (Type)وغيرها من الكائنات.
    إضافة إلى أمور خاصة باللغة التي تتعلمها.
    وطبعاً عليك إتقان الأمور السابقة والتعامل معها بمرونة.

** تحذير : يعاني الكثير من المبتدئين من حب التحكم بالنظام و البرامج فكثيرا ما تسمع
أسئلة مثل ( كيف أصنع برنامج يطفئ النظام؟،كيف أجعل برنامجي يخفي شريط ابدأ
كيف أفتح السواقة من برنامجي …الخ)
هذه أمور تتعلق بنظام التشغيل وتوفرها لك توابع (API)الجاهزة ، فلا يوجد في
ذلك إبداع كبير ، فلا يغرنك من يقول !

أصنع برنامج يغير خلفية الشاشة!!

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

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

باختصار : تعلم قواعد البيانات أمر محبذ بشكل عام ، وضروري في عند الحاجة لحفظ معلومات غزيرة متشعبة .

كيف أمتحن مقدرتي البرمجية ؟

كما ذكرت سابقاً ، إن معرفة توابع جاهزة تقوم بوظائف معينة في النظام وغيره ليس مهارة في البرمجة وإنما قد يسمى خبرة نوعا ما، أما المهارة فهي في استعمال الأوامر المختلفة و خاصة الأساسية - حلقات تكرار و عبارات شرطية معقدة إنشاء توابع وإجراءات - في إنجاز أمور معقدة وجعل البرنامج يقوم بوظائف متسلسلة وفي نفس الوقت متشابكة ومتشعبة وذلك بدقة وكفاءة جيدتين، حتى إن كانت الخدمات التي يقدمها البرنامج بسيطة ، وبعد ذلك يمكنك أن توظف توابع ال(API)لكي تكتسب مهارة في التعامل معها ولكن تذكر : أن هذه التوابع لن تكون معك في كل نظام تشغيل ،فلا تتعلق بها بشدة ، ولا تدعها تصبح جزأ لا بأس به من مهاراتك ، حتى لا تفاجأ في ما بعد بأن مهاراتك لا شيء إذا ما خرجت من بيئة الويندوز .

ما هي لغات البرمجة التي يمكن أن أنتقل إليها وأعتمد عليها في مسيرتي البرمجية ؟

هناك لغات برمجة كثيرة يمكن أن تعتمد عليها سأتحدث عنها في الفقرة القادمة ، أعتقد أن هذا السؤال سيقودني إلى التحدث عن :

تحكم الغرب :

إن أول من أقصده بالذكر بكلمة الغرب هي (شركة مايكروسوفت)،صاحبة نظام التشغيل الأكثر شيوعا في العالم ألا وهو الويندوز ، وليس هذا فحسب بل وأيضاً صاحبة جزء كبير من البرامج التي تسهِّل استخدام لغات البرمجة مثل :

  • Microsoft Visual Basic
  • ++Microsoft Visual C
  • Microsoft Visual J++

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

أنا من وجهة نظري أرى أن اللغة المناسبة للاستمرار بها هي لغة(C++ أو C) كون لغة (++C)هي اللغة التي كتب بها الويندوز وأنظمة التشغيل الأخرى وكذلك برامج ال(Office)ولكن دون استعمال برنامج (+Microsoft Visual C+) بل يمكن الكتابة بهذه اللغة بواسطة محرر نصوص عادي وترجمة النص بواسطة (Compiler)وهو برنامج يترجم الكود إلى برنامج (exe)

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

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

** يجب أن تكون فهمت من هذا الكلام أن المبرمج يتطور عندما يبتعد عن التطور **

إلى أي حد سأبقى أبتعد عن الأوامر المطورة ؟حتى أصل إلى الكتابة بلغة الآلة مثلاً؟

لا طبعا! لن نصل إلى لغة الآلة يمكنك التوقف عند احتراف لغة (C++)،ولكن إن كنت عاشقا للبرمجة فمن الجيد أن تتعلم لغة الأسمبلي (Assembly) وتتعرف على آلية عمل أجزاء الحاسب لأن لغة الأسمبلي قريبة من عتاد الحاسب وعلى اتصال مباشر مع الذاكرة والمعالج ، وبهذا ستكون مبرمجا قويا و مخترقا رهيبا.

وفيما يتعلق بنظام التشغيل أي نظام تشغيل أختار ؟

من ناحية احتراف البرمجة و الاختراق يجب التمكن من نظام ال(DOS)، ولكن كنظام تستعمله في جهازك فأنا أنصح بنظام اللينكس (Linux)لأنه بعيد عن تحكم الغرب حيث صممه مجموعة من المبرمجين المستقلين عن الشركات الغربية وهو منافس للويندوز والأهم أنه برنامج مفتوح المصدر يمكنك التعديل فيه كم تشاء وهو مجاني مع كوده ، علما أن كوده مكتوب بلغة ال(C++).

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

صناعة الفيروسات و الاختراق :

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

وبالنسبة للاختراق فهو موضوع له فنونه وحيله ، ولكن في هذا المجال أيضا تحكم الغرب قوي ،

وذلك من خلال برامج الهكر المشهورة والتي يستعملها كثير من الناس ويعتمدون عليها اعتمادا كاملا ويظنون أنهم مخترقون محترفون ، ولكن المخترق الحقيقي هو (أنت) إذا أتقنت ما سبق ذكره في الفقرات السابقة لغة الأسمبلي و (C++) والأهم إتقان نظام ال(DOS)لأن الاختراق به أخطر أنواع الاختراق ، سيساعدك ذلك كثيرا في عمليات الاختراق وأيضا فك الحماية والتشفير وحتى ما يحمى بقطع خارجية (Dangle)يقف عاجزا أمام محترفي ال(C++)و الأسمبلي .

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

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

والسلام عليكم ورحمة الله وبركاته

إعجاب واحد (1)

أعزائي القراء أنا كاتب المقالة السابقة أكتب هذه الرسالة بعد أن قرأ مقالتي 31 شخصا وأحزنني أنه لم يشارك أحد في الاستفتاء ، وأنا صدقا أريد مشاهدة آراء القراء (أيا كانت) وإني قد أضفت خيارات استفتاء متعددة نظرا لاستعدادي استقبال آراءكم المختلفة لأن هذا الأمر يهمني إذ أنها أول مقالة أكتبها .

عزيزي العضو ,

انا معجب جدا بكتابة وموضوعك الشيق الذي ابحث عنه منذ زمن ولم افهم هذا الموضوع الا منك ولم استفد الا منك وانا عاجز عن الشكر ، كما اني اطلب منك بل وارجو ان تفيدنا بدروس عن لغات البرمجة والتي هي الاسمبلي والسي ++ انا من عشاق ان اكون مبرمجا محترفا فارجو من حضرتك وان تساعدني في هذا وهذا هو ايميلي لو احببت ان تراسلني وتفيدني looshy_87@hotmail.com مع خالص الشكر

موضع جميل ارجو المزيد لو سمحت اخي المحترم

مشاء الله موضوع رائع جدا جدا
ما خليت و لا وصيت

موضوع رائع جزاك الله خيرا وسنقوم باضافته بالمجلة الهندسية

مشكور اخي العزيز

ويبقى هنا سؤال

هل اللينكس مكتبوب بلغه C or C++

As far as I know it is written in c not in c++
thanks again

شكرا لك على هدا الموضوع الرائع و نتمنى منك ان تطرح المزيد من هذه المواضع المفيدة