الأحد، 21 ديسمبر 2008

البداية 1+2!

أبدأ رحلتي مع البرمجة من كتاب بسيط هو Learn to Program والذي وصلني هدية من شخص لا أتذكر اسمه الآن، جزاه الله خيراً، الكتاب موجه للمبتدئين تماماً ويعتمد لغة روبي ... لا ليس تلك التي على بالك، بل هي لغة برمجة أتت من اليابان.

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

في الفصل الثالث أول برنامج أكتبه هو:

puts 1+2

أمر puts في روبي يشبه أمر print في بيسك وبايثون وربما في لغات أخرى، كل ما يفعله هو طباعة سطر أو أمر على الشاشة - طباعة ليست كلمة دقيقة هنا لكن لا أعرف غيرها الآن - وفي المثال المطلوب طباعته هو نتيجة عملية حسابية، لذلك الناتج سيكون فقط الرقم 3.

في لغات البرمجة هناك أنواع مختلفة من الأعداد، فهناك أعداد تسمى integer وهي الأعداد الصحيحة، وهناك float وهي أعداد بكسور عشرية - أريد كلمات أدق هنا - لكن هذه الأعداد لا تستخدم كثيراً في البرمجة فلا أحد يريد قراءة 7.6 بريد إلكتروني أو مشاهدة 0.77 من ملف فيديو، لكنها تستخدم كثيراً في الألعاب وفي المجال العلمي وفي الوسائط المتعددة.

أظن أنني سأكتفي بهذا القدر اليوم، ليبدأ النقد والتصحيح!

10 تعليقات:

كونش يقول...

لغة روبي Object Oriented?
قرأت في ويكي أنها لغة كائنية المنحى لكن ما أدري اذا هذا المقصود به ولا لأ.

وأيضا ودي أعرف ليش اخترت روبي من بين اللغات؟ كرأي شخصي يعني

حسين يقول...

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

abdulrhman يقول...

جميل أن تتعلم الروبي،
فهي -على حسب علمي- لغة برمجة "كائنية التوجه OOP" بامتياز،
أعني أنها تتعامل مع كل شي كـ كائن object

أتقانها يساعد في برمجة مواقع الويب على إطار العمل Rails

استمتع بتعلم البرمجة،فهي ممتعة للغاية... : )

تحياتي..

عبدالله المهيري يقول...

كونش: بحسب ويكيبيديا نعم، وأنا لم أختر روبي بل اخترت الكتاب الذي يعتمد على روبي، لو كان الخيار بيدي لبدأت مع بايثون.

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

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

عبد الرحمن يقول...

اختيار سليم جدا كبدايه :)


لو تدخل هذا الموقع ( رائع جدا )

برمجه عالهواء مباشره ...
خطوه بخطوه
http://tryruby.hobix.com/

ننتظر اولى برامجك :)

مسك الحياة يقول...

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

مررت على رابط الأخ عبد الرحمن عن لغة روبي.. ولمست سهولتها وبساطتها..

سأظل متابعة مع التدوينات البرمجية القادمة.. لأني أكيدة بأني سأخرج باستفادة ما ^.^

Mutati0N يقول...

أهلاً بك اخ عبد الله في عالم البرمجه , قرءت تدويناتك السابقه والنصائح الموجوده بها هي الأساس بأذن الله في تعلم البرمجه .
الروبي لغه ممتعه والكتاب الذي بدءت به ايضـاً ممتع وانصحك انك تكمل بيها هي فعلاً قويه جداً وفي نفس سهولة بايثون .
دي مجموعه من المقالات كتبتها من فتره وكتب مجانيه تتعلق باللغه واكون سعيد بأطلاعك عليهم :
* ماذا تعرف عن الروبي
http://mutati0n.wordpress.com/2007/06/27/what-
do-u-know-about-ruby
* Humble little Ruby Book
كتاب مجاني لتعليم اساسيات اللغه
http://mutati0n.wordpress.com/2008/03/11/humble-little-ruby-book/
* ماذا تعرف عن الروبي اون ريلز
http://mutati0n.wordpress.com/2008/02/07/what-do-you-know-about-ruby-on-rails
* مقدمه في روبي
اول كتاب بالعربيه عن الروبي
http://mutati0n.wordpress.com/2008/05/23/introduction-to-ruby-arabic-book/
* ماذا تعرف عن الروبي جمز
http://mutati0n.wordpress.com/2008/03/20/what-do-you-know-about-rubygems
*تعلم كيف تبرمج بواسطة الروبي
http://mutati0n.wordpress.com/2008/07/20/learn-to-program-with-ruby
الكتاب الذي تقرءه حالياً لمن يريد قرائته مباشره مع تحميل الأمثله الموجوده به .
* اسكربتات كتبتها باللغه :
http://mutati0n.wordpress.com/ruby-projects/
واخيراً موقع روبي فورج
http://rubyforge.org
موسوعه من المشاريع المفتوحه المصدر المكتوبه باللغه .
اتمني لك التوفيق في عالم البرمجه .

Flash يقول...

بدايه موفقه عبد الله ..
أعانك الله على الاستمرار ..
بالنسبه لـ "float وهي أعداد بكسور عشرية" ..
هناك اسم اخر rational numbers وهو يعني الأعداد النسبيه ..
ولا أدري أيهما الأنسب ربما Float لكن أحببت طرح ما لدي ..
تقديريـ ،،

عبدالله المهيري يقول...

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

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

Mutati0N: شكراً لك، بارك الله فيك.

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

غير معرف يقول...

float عدد حقيقي كما يسمى في الرياضيات ، و (float عائم) مقتبس من الفاصلة العائمة و هو أمر تقني .
يوجد double عدد حقيقي ذو دقة أكبر ، و سبب التسمية تقني أيضا لأنه يأخذ ضعف المساحة من الذاكرة التي تخصص للـ float أو الـ integer .