تعلم البرمجة – لماذا و كيف


كالعادة هناك  دوما سؤالين يطرحان عندما تريد ان تعرف عن اي شيء هما ( لماذا و كيف )

اعرف ان بمجرد ان تقرأ كلمة البرمجة تتخيل ان موضوع صعب او تقول ما دخلني انا بالبرمجة … كل ما اريده هو تصفح بعض المواقع و ايميل و لا استخدم الكمبيوتر الا مرة بالاسبوع ( استخدام سطحي للانترنت و الكمبيوتر .

لذلك انصحك نصيحة بسيطة اقرأ النقاط الثلاثة التالية خلال دقيقة واحدة , ان لم تعجبك … تجاهل الموضوع كله .

لماذا ؟

1- الاستيعاب … كثير من الامور تلاحظها في الكمبيوتر لكن لا تقدر ان تستوعبها او تفهمها بشكل جيد . لكن بعد ان تتعلم البرمجة ( و لغات البرمجة ) كثير من الامور تبدأ تتضح لك كثيرا .

سوف تستوعب اكثر كيف يعمل الكمبيوتر … و لماذا تواجه المشكلة مع ملف هذا , او لماذا لا يدعم المتصفح هذا الملف … وغيره من الاسئلة التى لم تكن تقدر تستوعبها من قبل .

2 – التطبيق … في الحقيقة عندما يسمع شخص عن البرمجة او مبرمج يتصور ان هذا الشخص سوف يصنع برامج ضخمة مثل مايكروسوف ورد او انترنت اكسلبور او منتديات الفي بي .

لكن اغلب البرامج ( بنسبة 90 % ) هي برامج لا يستخدمها سوى شخص واحد وهو نفس الشخص الذي برمجها , و هي التى احب ان اسميها برامج شخصية .

وهي بالغالب ذات الشاشة السوداء كما في الصورة

 تعلم

يقوم الشخص ببرمجتها و صنعها ليقوم ببعض المهام التى يريدها منها ….

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

لذا اوضح لك الصورة اعطيك بعض الامثلة :-

  • خلال استعمالي لبرنامج الـ ( Microsoft word ) قبل ايام اردت ان اضع 3 صور داخل بعض و اضافة نص عليها … لكني لم استطع , لذلك برمجت لنفسي من خلال لغة البرمجة ( Java ) برنامج يمكن اركب ثلاثة صور مع بعض و اضيف عليها كلام و من ثم ينتجها كلها على شكل صورة اضعها بصفحة برنامج ( Microsoft word ) . وعلمية صنع برنامج الصغير هذا لم تأخذ مني سوى 15 دقيقة , تصور لم اكن اقدر ابرمج مالذي كان ممكن ان يحصل , كنت سوف اجلس الساعات الطوال لبحث عن برامج ضخمة قد تحوي من بين مهامها الشيء الذي اريد … ثم اجلس ساعات اخرى ثم ابحث عن كراكه او البديل المجاني له , و بعد ذلك لو طلع حجم البرنامج ضخم جدا , انتظر ساعات اخرى حتى ينزل البرنامج على الجهاز , و بالنهاية قد تأتيك جلطة عندما تكتشف ان البرنامج لا يؤدي المهمة التى تريدها منه .

  • و ايضا قد برمجت برنامج صغير ( جدا ) يؤدي مهمة اراها هامة لي … الا وهي حساب كم ساعة يشتغل بها كمبيوتر و ايضا الساعات الكلية التى استخدم فيها كمبيوتري …. ولا يستهلك اكثر من 200 كليوبايت من حجم الذاكرة المؤقتة , و لو فرضنا هناك برنامج تجاري موجود يؤدي المهمة التى اريد قد يستهلك من حجم ذاكرتي المؤقتة 5 الاف كيلوبايت ( لأنه يؤدي العديد من المهام اخرى التى لا اريدها )

3 – السهولة … ستكتشف مع الوقت ان تعلم البرمجة و لغات البرمجة ليست بالعملية الصعبة التى كنت متصورها من قبل … خاصة لو بدأتها بداية صحيحة .

كيف ؟

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

لذلك سأحاول قدر الإمكان أن أبسط العملية لك .

لنتعرف على الكمبيوتر

و الحين لنرجع لعام الف و ثمنمية  وحطبة عندما ظهر عالم رياضي عبقري و ألف نظام العد الثنائي و سمي نسبة الى عائلته ( boolean algebra ) و كعادة الاختراعات المتطورة عن زمانها لم يفهم احد وقتها كيفية استفادة الحقيقة منها … حتى ظهر عالمين من جامعة آيوا الأمريكية بعد مائة عام سنة ( 1941 ) و صمما العالمين أول كمبيوتر عرفه التاريخ  و سمي بإسم A B C نسبة أيضا لصانعيه ؛( atanasoff-berry_computer ) .

 و هذه هي صورته

تعلم

و هذا الكمبيوتر يعمل على نظام العد الثنائي ,  و لا تزال حتى هذه اللحظة الكمبيوترات تعمل على هذا بدو ن تغيير يذكر … فكل التطورات التى تراها كل بالبرمجيات و لغاتها و ايضا بالملحقات الخاصة به , و قد حاول الكثيرين تغيير نظام الكمبيوتر من داخل بجعله يتعمد على نظم عد آخرى كنظام الثماني او الستة عشر ( octal or hexadecimal ) لكنهم فشلوا … و بالنهاية ثبت الكمبيوتر على هذا نظام .

و قبل ندخل لطريقة عمل الكمبيوتر لابد نعرف لمحة بسيط عن نظام العد الثنائي ( التى انا متأكد انه كلكم درستوها بالمدرسة ) .

نحن الآن عندما نؤدي نتعامل مع الحساب سواء بالضرب او بالجمع او غيره , فنظام الذي نتعامل معه يسمى نظام العد العشري المكون من عشرة آرقام ( 0 – 9 ) .

أما النظام العد الثنائي فمكون من رقمين فقط 0 و 1 , و يمثل النظام العشري بأسلوبه الخاص فـ 0 = 0 و 1 = 1 و 2 = 10 و 3 = 11 و 4 =100 و هكذا تواليك , و هو بالأساس يعتمد على عمليتين 0 + 1=1  و 1 + 0 =1 … و من خلاله تنتج عمليات الطرح و القسمة و الجذور و غيرها .

و الآن لنعود لدكتور atanasoff و تلمبذه berry سنة 1939 لقد ارادا صنع جهاز متطور عن بقية الآجهزة ليقوم بمجموعة من العمليات الضخمة بوقت قياسي ( نفس الآلة الحاسبة بوقت الحالية ) … و لقد وجدوا طريقة كهربائيا يمثلون فيها المعادلات الخطية ( Linear equations ) … و ثمثيلها بالكمبيوتر بسيط … فقطعة من الجهاز تأخذ جزء من الزمن و تقسمه الى آلاف الاقسام و تنظر في كل جزء من الوقت هل يمر فيه التيار ام لا اذا مر التيار معناه مرور التيار يساوي الرقم الواحد و عدم مرور التيار يساوي الرقم صفر … و بالنهاية تنتج لك سلسلة ضخمة جدا من الواحد و الصفر مشابه لهذه 0101101011101001100011101 …. الخ

مثال (لاحظ هذا فقط مثال ) … لنعتبر انه في قطعة من الكمبيوتر عندها بوابة يمر فيها التيار الكهربائي فإنه يحسب كل ربع ثانية هو جزء من وحدة زمنية و مرور التيار فيه بهذه الثانية كان على هذا التسلسل ( مرور التيار , انقطاعه , ثم مرو التيار مرتين ) اذا يحسبها كتالي 1101 

و كمبيوتر A B C كان بدائي كثيرا لا يمثال بالشكل و الوظيفة الكمبيوتر الحالي فقد كان يحتوي على مجموعة ازرار تمثل مدخلات التى عبرنها قبل قليل بمجموعة ( صفر و واحد ) و من ثم تجمع بطريقة ما تنتج مجموعة اخرى من ( صفر و واحد ) عبارة عن مصابيح ضوئية .

و الكمبيوتر الآن تغيرت تعددت تمام طرق المدخلات ( لوحة المفاتيح , الفأرة , مدخل USB … الخ ) و العديد من المخرجات ( الشاشة , سماعات … الخ ) و هذا التطور الشكلي و الوظيفي نتج عن شيء نسميه البرمجة

البرمجة

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

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

Computer programming (often simply programming or coding) is the craft of writing a set of commands and instructions that can later be compiled and/or interpreted and then inherently transformed to an executable that an electronic machine can execute or “run

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

و بعد ظهور البرمجة بأوائل الخمسينات ظهرت طفرة قوية إلى حد ما بعالم الكمبيوتر … و ذلك لامكانية التوسعه الى القيام بأي مهمة تريد .

لكن تقدمه ظل محدود لأنه طريقة البرمجة الأولية كانت بدائية حيث كان العلماء يأتون بلوحة يضعون عليها مجموعة من الاوامر باستخدام لغة الأم ( لغة الآلة ) للكمبيوتر و هي ( 0 و 1 ) و من ثم بعد ان يصنعون البرنامج على اللوحة يضعون اللوحة داخل الكمبيوتر بالاضافة مجموعة اخرى من لوحات تحوي برامج الكمبيوتر … اما لماذا هذه الطريقة ليست ناجحة كثيرا .

  • لصعوبة البرمجة حيث العلماء عملية اضافة اللوحات و تعديلها كانت تأخذ طويل و متعبة

  • لصعوبة لغة البرمجة …. لغة برمجة الأم صعبة جدا و لم يكن يقدر احد على فهمها و تطبيق الا قلة قليلة من المتخصصين

و كانت دوما تظل عقبة كبيرة الا وهي انه الكمبيوتر لا يفهم الا لغة واحدة التى هي لغة الآلة …. حتى ظهرت بأواخر الخمسينيات و اوئل الستينيات لغات البرمجة التى نعرفها الآن .

و كانت تقف على فكرة اساسية الا وهي نضع داخل الكمبيوتر كل ما يحتاجه من الأساسيات لغة الأم و من ثم نضيف له برنامج يدعى الـ compiler , يقوم الــ  compiler بتحويل اي اوامر نكتبها بلغتنا الخاصة الى لغة الأم و من ثم يحفظها بالجهاز بهذه اللغة … و عندما يأتي الكمبيوتر لينفذ هذا البرنامج يجده بمحفوظ باللغة التى يفهمها و ينفذها .

و الغرض من ( الكومبايلر ) هو توفير علينا مجهود تعلم لغة الآلة الصعبة … بل نتعلم اللغة التى نريد و نبرمج بها .

و خلال الخمسين عام ظهرت المئات من لغات البرمجة بكل شكل و لون … لكنها لو تدقق فيها لتجدها متقاربة كثيرا … لأنه بالاساس للغات البرمجة قوانين ثابتة لابد من تحقيق بعضها فيها … لأنه لغات البرمجة ليست بلغة جديدة لكنها هي لغة الآلة لكن بشكل مبسط لتفهمها .

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

و احب ان انوه بأن هناك شيء اسمه لغات برمجة حقيقية و لغات غير حقيقية .

اللغات الحقيقة هي التى تحوي على كومبايلر الذي يقوم بتشفيرها بلغة الآلة و يحفظها بالغالب بصيغة exe … و معنى ذلك تقدر تنفذها بأي نظام و بشكل مباشر دون الحاجة الى برنامج اخر يشغلها . و اقوى امثلها عليها لغة السي بلس بلس

و هناك لغات برمجة غير حقيقة مثل الــ php و html ( نعم الهتمل لغة برمجة و تدعى اللغة الجامدة ) …. وهذه لغة لا تشفر الى لغة الآلة و تحتاج الى برنامج يشغلها … وهي بذلك لغات ضعيفة و مستوى التقدم فيها ليس بالكبير .

… و بالنهاية سوف احدثك عن مربط الفرس .

ماهي لغة البرمجة التى تبدأ فيها و تتعلمها .

اذا اردت نصيحتي ابدأ بلغة السي بلس بلس

و ذلك لاسباب التالية :-

لغة برمجة قوية جداااا … يكفي ان اقولك اني اقدر اصنع لك نظام كامل بهذه اللغة ( مثل نظام الويندوز و نظام اللينكس و الماكينتوش )

لغة مضمونة … فهي امتداد لغة وهي لغة السي و ايضا بنفس الوقت حديثة لأنه تطويرها الى لغة السي بلس بلس قد تم منذ 10 سنوات فقط و ايضا مستخدمة بكثرة … كل هذا يضمن لك بأنها لن تختفي بسهولة

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

لغة حقيقية …. برامجك التى تصنعها بها تعمل على اي كمبيوتر تقريبا دون الحاجة الى برنامج خاص بها .

 


أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

تعلم البرمجة – لماذا و كيف

تسجيل الدخول

كن جزءا من مجتمعنا!

ليس لديك حساب؟
سجل

اعادة تعيين كلمة السر

الرجوع لـ
تسجيل الدخول

سجل

اشترك معنا

الرجوع لـ
تسجيل الدخول