قائمة المساهمونالفهرسالفصل الأول

المقدمة

"يجب أن نفرح بفرصة خدمة الآخرين بأي من اختراعاتنا، كما نستمتع بمزايا اختراعات الآخرين، ويجب أن نقدم لهم ذلك مجاناً وبسخاء."
-- بنجامين فرانكلين، اقتبس من كتاب Benjamin Franklin لإدموند مورغان (Edmund S. Morgan)

سبب تأليف هذا الكتاب

هذه النسخة الخامسة من كتابٍ بدأت تأليفه عام 1999، عندما كنت أدرِّس في كلية Colby. كنت مدرساً لمادة تقديمية لعلوم الحاسب باستخدام لغة البرمجة Java، لكنني لم أعثر على أي كتاب يرضيني. أول الأسباب، أن جميع الكتب كانت كبيرة جداً! لم أملك طريقة تمكنني من دفع طلابي لقراءة 800 صفحة من مادة تقنية كثيفة، حتى لو رغبت أنا بذلك. وأنا لم أرغب بذلك. معظم المادة في تلك الكتب مخصصة أكثر من اللازم— تفاصيل دقيقة عن لغة Java وعن مكتباتها كانت صلاحيتها ستنتهي قبل انتهاء الفصل الدراسي، كما أنها غمرَت المادة التي أريد الوصول إليها.

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

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

فلسفة الكتاب

إليك بعض الأفكار التي جعلت من هذا الكتاب ما هو عليه:

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

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

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

البرمجة كائنية التوجه

تقدم بعض الكتب البرمجة الكائنية مباشرة؛ بعض الكتب الأخرى تبدأ بأسلوب إجرائي ثم تتطور إلى الأسلوب الكائني تدريجياً. يسلك هذا الكتاب طريق "الكائنات آخراً".

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

لم أنوِ تأجيل البرمجة الكائنية. بالعكس، لقد قدمتها بأقصى سرعة ممكنة، متمسكاً برغبتي في تقديم المفاهيم واحداً تلو الآخر، وبأوضح ما يمكن، بأسلوب يسمح للطلاب بالتدرب على كل فكرة لوحدها قبل إضافية الأفكار الأخرى. لكن عليَّ أن أعترف أنني استغرقت الكثير من الوقت حتى وصلت إليها.

اختبار AP لعلوم الحاسوب

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

في كانون الثاني عام 2003، عملت على النسخة الرابعة من الكتاب، مضيفاً التعديلات التالية:

أخيراً، في آب 2011، كتبت النسخة الخامسة، مضيفاً فصولاً لتغطي حقيبة GridWorld الدراسية التي تشكل جزءاً من اختبار AP.

كتب حرة!

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

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

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

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

أوه، العنوان

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

لكن يوجد لبُّ صدقٍ في العنوان: فهذا الكتاب ليس عن لغة Java، وهو يتحدث عن البرمجة بشكل جزئي. إذا نجح هذا الكتاب، فلأنه يتحدث عن طريقة تفكير. لعلماء الكمبيوتر أسلوبهم في حل المشاكل، وطريقة خاصة في ابتكار الحلول، طريقة فريدة، طريقة مرنة، وقوية. أتمنى أن يعطيك هذا الكتاب فكرة عن ماهية ذلك الأسلوب، وأن تجد نفسك في وقت ما تفكر كعالم كمبيوتر.

آلان داوني
نيدهام، ماساشوستس
13 تموز/يوليو، 2011

قائمة المساهمونالفهرسالفصل الأول