مرحبًا بك

ديسمبر 27, 2008
- أهلًا ومرحبًا بك، هذة تدوينة مُثبتة تُبسّط محتوى هذة المدونة للزائر الجديد، فأنت الآن في عالمي الخاص والذي أًعطيه الكثير من وقتي لجعله أفضل دائمًا، وذلك علي أمل أن يضيف جديدًا لكل من يتابعه .
- هنا تجدني أهتم بالبرمجة وعالم المصادر المفتوحة، فأنا أكتب المقالات، و اضع كتب مجانية، وأهتم بمتابعة جديد البرمجيات الحرة والمجانية، وأعمل على دعم نظام ” جنو/لينُكس” والأنظمة الحرة بصورة عمومية.
– تجد هنا مجموعة من المدونات والمواقع التي اقوم بمتابعتها والتي أنصحك بمتابعتها. وعني فتستطيع من صفحة ” من أكون ” معرفة معلومات عني بصورة أكبر، وبداخل صفحة “راسلني” تجد بريدي الخاص الذي تستطيع مراسلتي من خلاله، بجانب ذلك تستطيع الوصول إلى مدونتي الأخرى مَغرَبيِ، والتي أبعد فيها عن عالم الحاسب الآلي والبيئة البرمجية لأطرح أفكاري وخواطري وغيرها، فإذا كنت لا تهتم بعالم الحاسب الآلي فبأمكانك متابعتها فستفيدك بأذن الله.
انا أكتب سكرباتات بلغة الروبي، ولدي مجموعة قمت بكتابتها، تستطيع الوصول لها من صفحة سكربتات بالروبي .
تستطيع متابعة جديد التدوينات بوضع هذا الرابط في برنامجك المفضل لمتابعة الخلاصات. إذا كنت من مستخدمي تويتر تستطيع متابعتي من هنا.
أنا اقتطع من وقتي لأقوم بكتابة المقالات لعل هذه المعلومات تفيد شخصًا، فإذا استفدت من المعلومات التي أضعها فانا أطلب منك مقابل بسيط وهو دعوه لي بظهر الغيب فقط.

أوبنتو ببساطة 1.1

سبتمبر 27, 2011
السلام عليكم ورحمة الله وبركاته
أشعر بالسعادة كلما وجدت كتابًا جديدًا بالعربية يصدر في مجال البرمجيات وأنظمة التشغيل والمصادر المفتوحة، وتزيد فرحتي هذه عندما أجده كتابًا متميزًا ينافس الكثير من الكتب الأجنبية بل ويتفوق عليها أيضًا في بعض الأحيان، وتتمثل هذه الفرحة في كتاب “أوبنتو ببساطة” لصديقي الكاتب المبدع “أحمد أبو زيد“، فهو يمثل بالفعل -ودون مجاملة- إضافة للمكتبة العربية ومدخل لكل من ينطق بالضاد للتعرف على بيئة الگنو\لينوكس عن طريق بوابة الأوبنتو المميزة والسهلة، فجدير بكل من يريد تجربة بيئة اللينوكس أن يتخذ من الكتاب بوابة لها، فستشعر بالمتعة والسهولة في التعامل مع نظام غير الويندوز وأنت تطالع الكتاب المتميز لهذا الكاتب الشاب المبدع :)
للتحميل قم بزيارة الموقع وحمل الكتاب من هناك.

ماذا تعرف عن جي إيدت – الجزء الأول

يوليو 11, 2011
السلام عليكم ورحمة الله وبركاته
* مُقدمة :
برامج تحرير الشفرات المصدرية هي البرامج التي يستخدمها المبرمج والمطور في عملية كتابة الشفرات البرمجية، وتعتبر الأداة الأولى من أدوات المبرمج؛ لما تقدمه له من تسهيل عملية كتابة الشفرة، وتلوينها، وتعديلها، وإكمال أجزاء منها، ترجمتها وغيرها. وفي هذه السلسلة من المقالات سوف أعرض لواحد من تلك البرامج الخفيفة القوية وهو برنامج Gedit، والذي يأتي كمحرر افتراضي لبيئة سطح المكتب گنوم، في محاولة لعرض مميزات هذا المحرر الذي يحتوي علي العديد من الخصائص التي تجعله بيئة تطويرية قوية للمبرمج.
سأعتمد في هذه المقالات بأذن الله على مشروع القاموس التقني المقدم من فريق عرب آيز في تعريب المصطلحات البرمجية، وان كنت قد لا ألتزم ببعض التعريبات الموجودة فيه؛ نظرًا لعدم إستقرار رأي المعربين على بعض المصطلحات أو لأنها قد يوجد لها تعريب أفضل. في نهاية هذه السلسلة سأضع إن شاء الله ملف نصي للمصادر التي أعتمدت عليها في كتابة هذه المقالات، والتي أسأل الله أن تكون مفيدة لكل من يطلع عليها.
* مُحررات النصوص :
قبل البدء في الحديث عن محررات الشفرات، سنلقي نظرة سريعة على محررات النصوص العادية كمدخل لمحررات الشفرات، فبرامج تحرير النصوص “Text Editors” هي نوعية من البرامج صُممت في الأساس لكتابة وتحرير النصوص والفقرات البسيطة، ويرجع تاريخ أول محرر نصوص إلى الستينات من القرن الماضي، ومع الوقت تطورت محررات النصوص لتنتقل من شاشة سطر الأوامر السوداء التي كان لابد من إدخال الأوامر بها للقيام بمهام بسيطة – مثل : فتح ملف وإغلاقه والقيام ببعض التعديلات البسيطة عليه أو حفظه – لتصل إلى ما وصلت إليه الآن من واجهة رسومية و سهولة في تحرير النصوص والفقرات وتصحيح ما بها من أخطاء إملائية، كما تُستخدم أيضًا في تحرير ملفات إعدادات النظام “Configuration Files”، أو كتابة وتحرير الشفرات المصدرية.

كما ذكرنا ان برامج تحرير النصوص تستطيع تحرير الفقرات والنصوص، إلا انها ذات إمكانيات محدودة إذا أردنا تنسيق مقالة وتهيئتها بصورة إحترافية من حيث التنسيق العام للشكل من حيث نوع الخط وحجمه، جعله عريضًا أو رفيعًا، إضافة إطارات وصور، تلوين النص، تهيئته و طباعته بمقاسات معينة، في هذه الحالة لن تفيدك برامج تحرير النصوص و ستحتاج إلى برنامج مُعالجة الكلمات “Word Processor”، والتي منها علي سبيل المثال : برنامج Writer الموجود في حزمة الـ OpenOffice، برنامج Kword في الحزمة Koffice أو برنامج AbiWord المنفرد، أو أي برنامج آخر لمعالجة النصوص، فهو سيوفر لك إمكانيات أكبر في تعديل النص وتنظيمه وعرضه بصورة افضل من محررات النصوص.

محررات النصوص تأتي بصورة أساسية مع أنظمة التشغيل وواجهات الإستخدام، فنجد على سبيل المثال أن نظام الـ Mac يأتي بمحرر افتراضي هو TextEdit، واجهة الگنوم تأتي بمحرر Gedit، والأنيقة KDE تاتي بمحرر Kate، أما نظام الويندوز فيأتي بمحرر بسيط هو الـ Notepad.
Gedit

Kate

TextEdit

Notepad

* الفرق بين مُحرر النصوص ومُحرر الشفرة المصدرية :

محرر الشفرة المصدرية – “Source Code Editor” – عبارة عن محرر صُمم بإمكانيات لتساعد المبرمج على أداء عمله البرمجي، فنجدها تدعم إبراز الصياغة Syntax highlighting للكثير من لغات البرمجة – تلوين الشفرة -،  ترقيم السطور، دعمها للملحقات ” Plugins “، وغيرها من الخصائص والتي لا تتواجد في محررات النصوص العادية، والأمثلة بالأعلى بإمكاننا أن نطلق عليها بأنها محررات شفرات برمجية؛ لما تحتويه من هذه الخصائص وغيرها عدا الـ Notepad والذي يُستخدم كمحرر نصوص؛ لإفتقاره للخصائص المذكورة وغيرها . لذا فأغلب محررات النصوص الحديثة يمكن ان يُطلق عليها بأنها محررات شفرات.

وإضافة لهذه الأمثلة، يوجد الكثير من محررات الشفرات الأخرى والتي منها علي سبيل المثال :
* jEdit : واحد من أقوى 5 محررات مفتوحة المصدر، تم كتابته بالـ Java، ويدعم الكثير من المميزات الرائعة، بجانب دعمه لما يقارب من 130 لغة برمجة. يتميز البرنامج عن غيره بوجود مدير للإضافات بداخله “Plugin Manager”، يتيح لك تحميل الإضافات – وتحديثاتها إن وجدت – من موقع البرنامج دون الحاجة إلى جلبها وإضافتها يدويًا – وقت كتابة هذه المقالة كان هناك 178 إضافة متاحة للتحميل -، وتمكنك هذه الإضافات القوية من تحويل البرنامج من مجرد محرر للشفرات إلى بيئة تطوير متكاملة “IDE“، تحتوي على مترجم للشفرات، تصحيح الأخطاء البرمجية، تكملة للشفرة البرمجية لبعض اللغات. البرنامج نتاج تطوير مئات من المبرمجين ويحتوي على مزيد من الخصائص. من هنا تستطيع الوصول للتوثيق الرسمي للتعامل مع البرنامج.
* SciTE : مُحرر تم بنائه اعتمادًا علي مكتبة تدعي Scintilla، تمت كتابتها بالـ ++C والـ GTK، طُورت لكتابة وتحرير وتصحيح الشفرات البرمجية، وأعتمد عليها كثير من برامج تحرير الشفرات البرمجية والبيئات التطورية المتكاملة المشهورة مثل Notepad++ – Anjuta – Geany. وهو محرر خفيف و سريع وقوي، تنقسم شاشته إلى جزء لكتابة الشفرة وجزء لرؤية ناتج تنفيذ الشفرة وإظهار رسائل الخطأ التي تظهر ان وجدت. يعتمد البرنامج على لغة Lua لكتابة أمتدادات له Extensions، لإضافة خواص جديدة للمحرر أواللغات التي يدعمها من تلوين الشفرة أو شكلها أو التكملة للشفرة في بعض اللغات، فتعطي للبرنامج قوة كبيرة ليخصصه المبرمج كما يريد- أطلع من هنا على مجموعة من الأمتدادت لتطوير البرنامج بشكل كبير – .
* Komodo Edit : محرر مفتوح المصدر ومجاني تم بنائه علي منتج تجاري وهو Komodo IDE، تم بنائه عن طريق مشروع يدعى Open Komodo، وهو المسئول عن تطوير البرنامج. تم الإعتماد على مكتبة Scintilla في بناء المحرر، وهو يدعم تقريبًا كل لغات الاسكربت المعروفة، بجانب لغات تطوير الويب بالإضافة إلى إطار تصميم تطبيقات الويب جانكو و CakePHP.
* مُحررات نافذة سطر الأوامر :

بجانب هذه الأمثلة من المُحررات ذات الواجهة الرسومية، هناك أيضًا مُحررات تُستخدم عن طريق نافذة سطر الأوامر “Console Based Editors”، التي لا توجد لها نافذة رسومية، حيث تُستخدم لوحة المفاتيح في هذه المحررات لكتابة أوامر فتح وتعديل وحفظ وإغلاق الملف وغيرها. وتتميز عن الواجهة الرسومية بأنها أخف من حيث استهلاك الذاكرة وسرعة تنفيذ الأمر، وبإستخدامها ستعرف الكثير من إختصارات لوحة المفاتيح. لعل من أشهر الأمثلة على محررات نافذة سطر الأوامر هو Vim، والذي طُور عن طريق Bram Moolenaar؛ إعتمادًا على محرر آخر يُدعى Vi فيُعتبر إمتداد وتطويرًا له؛ لإضافة خواص تساعد على تحرير الشفرات البرمجية، بجانب تحرير النصوص العادية وملفات إعدادت النظام وغيرها. وكلمة Vim هي إختصار لـ Vi Improved، وهي أداة قوية تمت كتابتها بالـ C و الـ Vim Script، وهي لغة سكربت خاصة بالبرنامج تُستخدم لتطويره. يوجد إصدارة من البرنامج بواجهة رسومية تدعى gVim – تمت كتابتها بمكتبات الـ 2+GTK – إلا انه يُستخدم بصورة رئيسية من خلال سطر الأوامر.
بعض الفروق التي تميز Vim عن Vi :
1- يعمل على كل الأنظمة المعروفة تقريبًا وغير المعروفة : Linux – Windows – Dos – Macintosh – BeOS – OS/2 وغيرها .
2-يحتوي على مدقق إملائي.
3- يدعم تلوين الشفرات لكثير من اللغات المشهورة، و تكملة الشفرات لبعض اللغات.
4- يدعم الإضافات باستخدام لغة الـ Vim Script ولغات الإسكربت المعروفة Ruby – Python – Perl – Lua – Shell وغيرها.
5- إمكانية تعديل ملفات بداخل حزم مضغوطة.
6- يدعم عرض العربية بداخل نافذة سطر الأوامر والواجهة الرسومية (لبرامج النوافذ التي تدعم العربية).
بالإضافة لـ Vim، يوجد أيضًا العديد من المحررات الأخرى مثل : Nano , Diakonos

Vim

Nano

Diakonos

ومن الجدير بالذكر ان Diakonos قـد تم كتابته بالـ Ruby، وهو يدعم تلوين الشفرات للعديد من اللغات مثل : Java , Ruby , Python , XML , CSS

* مُقدمة تعريفية بـ Gedit :

برنامج Gedit هو أحد برامـج مُحررات النصوص والشفرات القوية والخفيفة بالنسبة لإستهلاك الذاكرة، حيث يأتي كمحرر أساسي لبيئة سطح المكتب گنوم . تم تطويره بواسطة كل من  :
Paolo Maggi , Paolo Borelli , Federico Mena , Chema Celorio , James Willcox
حيث تمت كتابته بالـ C وبعض من الـ Python؛ إعتمادا علي مكتـبات الـ+GTK و مكتبات الـگنوم
ملحوظة : بامكانك معرفه المزيد عن مكتبات الـ +Gtk، عن طريق مقالة مميزة قام بكتابتها الأخ فهد السعيدي من هنا أو تحميلها بصيغة PDF من هنا .

علي الرغـم من بساطة واجهة الـ Gedit إلا أنه يأتي بالعديد من المميزات :

• دعـم الأمور الأساسية لأي محرر كـ( القص واللصق والنسخ والتراجع عن اخر خطوة )
• دعمه لتلوين الشفرات البرمجية للكثير من اللغات والتي منها :
Ruby , Java , C , C++ , Python , PHP , Tcl , C# , SQL , Lua , Pascal , XML , CSS , HTML , Shell Script
• ملخص يعطيك عدد الحروف والكلمات والأسطر
• ترقيـم السطور
• دعمـه لتحـرير العديد من الملفات في نـافذة واحدة Taps
• دعمـه للغات التي تُكتب من اليمين الي اليسـار (العربية – العبرية)
• يدعـم خاصية الطباعة والعرض قبل الطبع
•دعمه لخاصية البحث وإستبدال الكلمات والذهاب لسطر معين
• تعديل نوع الخط المستخدم في القراءة و الكتابة
• أخـذ نسخة إحتياطية من الملف بصورة مستمرة دون تدخل منك
• إمكانيـة فتح أي ملف يدعم البرنامج امتداده من رابط بطريقة مباشرة دون الحاجة لتنزيل الملف
• وجود مدقق إملائي للغة الإنگليزية
• الـ Plugins، و هي عبارة عن برمجيات صغيرة يتـم تركيبها داخل البرنامج لدعم خيارات جديدة به

* مميزات البرنامج تفصيلًا :

تتسم واجهة البرنامج بالبساطة وعدم وجود كثير من الخيارات مما يُعطي للمستخدم للوهله الأولي بأنه لا يحتوي علي الكثير من المميزات او الخواص .

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

- تحتوي الواجهة الرئيسية للبرنامج على مجموعة من الخيارات والقوائم التي سنتناولها بالشرح بأذن الله :

1- Menubar ( شريط القوائم ) : يحتوي هذا الشريط علي مجموعة من القوائم التي تحوي كل الأوامر التي تستخدمها للتعامل مع البرنامج .
2- Toolbar ( شريط الادوات ) : يحتوي علي مجموعه من الاوامر للتعديل علي الملف , وهي عباره عن اختصارات خارجيه للأوامر الموجوده في شريط المهام .
3- Side pane ( الجانب الفرعي ) : يحتوي علي الملفات المفتوحه حالياً , بجانب بعض ايكونات بعض الـ Plugins .
4- Display area ( منطقه العرض ) : المكان المخصص لكتابه النصوص او الأكواد .
5- Statusbar ( شريط الحاله ) : ويعرض لك رقم السطر والعمود الذي تقف عليه بمؤشر الفأره الآن , واذا نظرنا الي يمين الشريط نجد ان هنـاك كلمه INS , ويعني ان البرنامج الان في حاله الـ Insert mode اي وضع الادخـال , والذي بأمكانك تغييره الي الوضع OVR  – والتي تعني Overwrite Mode – عن طريق الزر Insert الموجود لديك علي لوحة المفاتيح , ولكن ما معني الـ Insert mode والـ Overwrite mode ؟
@ مُعظم برامج معالجه الكلمات وبرامج تحرير النصوص يحتويان علي هاتان النوعيتان من عمليات الأدخال:
* الـ Insert mode : هي عمليه ادخال الحروف من لوحه المفاتيح الي الملف , ونجد ان مؤشر الفأره مع كل ضغطة زر يعمل علي طبعه ثم يترك مسافه للأمام , وبأمكاننا في هذه الحاله الرجوع للخلف ووضع حرف بين الأحرف السابقه .
* الـ Overwrite mode : علي عكس الحاله السابقه فأنك لو رجعت للخلف ووضعت حرف نجد ان الحرف الذي قمت بالوقوف عليه قد تم حذفه و استُبدل بالحرف الجديد .
6- الملفات المفتوحه Taps .

- وقبل البدء في شرح كل قائمه وشريط علي حدا سوف اقوم بعرض اختصارات لوحه المفاتيح للبرنامج :

# اختصارات البحث داخل الملف
*  Ctrl+F : للبحــث عن كلمـه معينـه .
* Ctrl+G :  للذهاب الي النتيجه التاليه من نتائج  البحث .
* Ctrl+Shift+G : للذهاب الي النتيجه السابقه من نتائج البحث .
* Ctrl+I : للذهـاب الي سطـر معين .
* Ctrl+H : للبحث عن كلمه معينه او نص معين واستبداله بـاخر .
* Ctrl+K : بحث تفاعلي ,بمعني انه بمجرد ان تضغط علي حرف معين يقوم بتظليل جميع الكلمات التي تحتوي علي هذا الحرف الي أن ينحصـر البحث في كلمه واحده .
* Ctrl+Shift+K : عندما نقوم بالبحث عن كلمه معينه فان جميع النتائج تُظلل , فنستخدم هذا الاختصار لحذف التظليل عن النتائج .
# اختصارات تحرير الملف :
* Ctrl+N : لتقـوم بانشـاء ملف جديد .
* Ctrl+O : لفتـح ملف تم انشاءه من قبل .
* Ctrl+I : لفتـح ملف من سايت معين .
* Ctrl+S : لحفـظ التغيـرات علي الملف .
* Ctrl+Shift+S : لحفـظ الملف بالتغيرات الجديده في ملف جديد .
* Ctrl+P : لطبـع الملف عن طريق الطابعـه او بصيغة PDF ( سيتم شرح هذه الطريقه بالتفصيل في شريط القوائم ) .
* Ctrl+Shift+P : لعرض الملف اولاً بالصـوره التي سيتـم طبعـه عليهــا للتـاكد منها .
* Ctrl+W : اغـلاق الملف الحالي .
* Ctrl+Q : للخروج من البرنامج .
# اختصارات التعديـل علي الملف
* Ctrl+Z : التراجع عن اخر خطوه قمت بتنفيذها ككتابة كلمه بطريقه خاطئه .
* Ctrl+Shift+Z : عكس الأمر السابق ,بمعني انه اذا قررت التراجع عن اخر خطوه قمت بتنفيذها وقمت بالضغـط علي Ctrl+Z فتستطيع ارجاعها مرة اخري عن طريق هذا الأختصار .
* Ctrl+C : اخذ نسخـه من النص او الكـود وذلك بعد القيــام بتظليله .
* Ctrl+X : القيـام بقص كلمه او نص بعد تظليله .
* Ctrl+V : القيام بلصق الكلمه او النص .
* Ctrl+A : تظليل النص بالكامل .
* Ctrl+D : حذف السطر الذي تقف عليه الآن .
# اختصارات التحكم بالملفات المفتوحه ( Taps )
* Ctrl+Alt+PageDown : للتنقل بين الملفات المفتوحه ناحية اليسار .
* Ctrl+Alt+PageUp : للتنقل بين الملفات المفتوحه ناحيه اليمين .
* Ctrl+W : إغلاق الملف المفتوح حالياً بالبرنامج .
* Ctrl+Shift+W : لغلق جميع الملفات المفتوحه بالبرنامج امامك .
* Ctrl+Shift+L : حفظ التعديلات علي جميع الملفات .
____________________________________________________
أنتهى الجزء الأول بحمد الله

روابـــ(11)ــط

مايو 26, 2011
السلام عليكم ورحمة الله وبركاته
1- pyweek – تحديات بايثونية لكتابة ألعاب
2- 21 طريقة سريعة لتسهيل كتابة الشفرة في روبي
3- لغة البرمجة Clay
4- دليل المبرمج العربي
5- التغيرات المضافة التي أضيفت في الإصدارة 1.9 من روبي
6- Ruby-blogs – قم بالبحث عن مواضيع خاصة بالروبي في مئات من المدونات التي تختص باللغة عبر هذا الموقع
7- ما الذي يجعل لغة البرمجة جيدة
8- حوار مع Jamis Buck
9- مراجعة لبعض أدوات التجربة في روبي
10- Pry، بديل الشل التفاعلي للروبي

روابـــ(10)ــط

ديسمبر 15, 2010
السلام عليكم ورحمة الله وبركاته
1- tekniqal – ڤيديوهات لشرح أساسيات الروبي
2- zenspider مرجع شامل للغة الروبي
3- ما هو الشيء القوي في روبي؟
4- لماذا أحب قراءة شفرات المبرمجين ولماذا يجب عليك أيضًا فعل ذلك
5- صدور توزيعة سبيلي
6- الإضافات التي أًضيفت لعالم  الروبي في 2010
7- PLEACE – مشروع لعمل كتاب يشمل أمثلة لشفرات لغات مختلفة تؤدي مهام معينة
8- كيف تحمي ملفاتك من التلف جراء إنقطاع التيار الكهربائي وتجمدات نظام على الجنو/لينوكس
9- إنشئ وانشر أول جيم خاصة بك
10- أمثلة لشفرات روبي متنوعة
11- ما هو الفارق الكبير بين بايثون وروبي؟ – أراء مجموعة من المبرمجين
12- ڤيديو: بايثون مقابل روبي: معركة حتى الموت
13- روبي جيمس: ما هي, كيف ولماذا ؟
14- ما هي البرمجة الموزعة؟
15- القائمة النهائية لمشاريع الويب العربية المشاركة في مسابقة عالم التقنية

العدد السابع من مجلة الريلز

ديسمبر 13, 2010
السلام عليكم ورحمة الله وبركاته
- يأتي العدد بسبعة مقالات جديدة :
1- An Overview of Refinery – a Rails CMS
2- Converting A Rails Site to Refinery CMS
3- Auditing plugin
4- Hobo – Making Application Development on Rails Even Faster
5- Installing Ruby on Rails on Windows
6- Simple Unobtrusive Ruby/Rails Debugging
7- A Well Kept Secret, Ruby and Cryptography
حمل من هنـا أو هنا

كيف تصبح مبرمجًا؟

نوفمبر 30, 2010
السلام عليكم ورحمة الله وبركاته
هذا سؤال مهم يطرحه كل من يبدء في طريق البرمجة، وإجابة هذا السؤال تعطى على هيئة نصائح تعطى للأشخاص، فلا تعتمد على مجموعة من النقاط تعمل على تحصيلها ودراستها أو كتب تقرئها أو لغة معينة تتقنها لتصبح مبرمجًا بعد ذلك؛ وإنما تعتمد على مجموعة من المهارات يجب عليك تعلمها وإتقانها، وطريقة تفكير معينة تفكر بها عند كتابة البرمجيات وذلك قبل إطلاق كلمة مبرمج على نفسك. هذه العملية تأخذ وقتًا ليس بسيطًا لتتقنها، إنما يحتاج منك هذا إلى مجهود وصبر يصل لعدة سنوات لتحصل على هذا اللقب.
وكتجربة شخصية أذكر انه في مرة كنت بداخل غرفة الروبي ببرنامج الـ IRC وسئلت هذا السؤال لأحد المتواجدين : ” كيف أصبح مبرمج؟ “، فكان رد أحد الموجودين بأنه قال لي أنه مبرمج منذ 12 عامًا ولكنه لا يستطيع أن يجيبني على هذا السؤال، ولكن ما يستطيع أن يقدمه لي نصيحتان :
1- أكتب الشفرة البرمجية
2- أقرء الشفرة البرمجية
كذلك كانت الإجابة من معظم من راسلتهم من المبرمجين المشهورين، فكلهم كانوا يقولون لي بأن كثرة كتابة الشفرات وقراءة شفرات الغير هي التي ستجعلك مبرمجًا محترفًا.
لغات البرمجة تتشابه في كثير من الأساسيات، وتعلمك للغة الأولى وتعمقك بها هي التي ستأخذ منك وقتًا، أما أي لغة أخرى ستعمل على تعلمها لن تأخذ منك هذا الوقت، ولغات البرمجة مثلها مثل اللغات الحية في كثير من الجوانب، فكل منها له قواعد كتابية خاصة به أو ما يعرف باسم الـ Syntax – أو الـ Grammar في اللغات الحية – الخاص باللغة، فأنت تكتب الجمل الألمانية بطريقة تختلف عن الجمل العربية من حيث التركيب النحوي، وكل منهما يعطي نفس المعنى، نضرب مثالًا لهذا
في العربية أقول :
أنا أحب لعب كرة القدم
أما في الألمانية أقول :
Ich spiele gerne Fußball
الجملتان يعطيان نفس المعنى، ويتشابهان في وجود نفس الاسماء و الأفعال في كل منها، ولكن تركيبة الجملتان بهما إختلاف من حيث ترتيب الأفعال، نطبق هذه القاعدة على لغات البرمجة، هم يختلفوا في شكل كتابة الأوامر والرموز بينهم، ولكن يتشابهان في وجود ما يسمى بالمتغيرات والثوابت والدوال والكلاسات. مثال:

require 'fileutils'

ARGV[0].each do |dir|
  FileUtils.rmtree(dir)
end

import shutil
shutil.rmtree(path)

import os, sys
def DeleteDir(dir):
    for name in os.listdir(dir):
        file = os.path.join(dir, name)
        unless os.path.islink(file) && os.path.isdir(file):
            DeleteDir(file)
        else:
            os.remove(file)
    os.rmdir(dir)

المثال الأول بالروبي والثاني بالبايثون، والإثنان يقومان بنفس المهمة وهي حذف دليل بما يحتويه من ملفات، فنلاحظ تشابه بين سطور الشفرة في الروبي والبايثون من حيث كتابة الأوامر فالسطر الأول في المثالان يعملان على إستدعاء مكتبة برمجية ( المكتبة هي مجموعة من الأوامر موجودة في ملفات يتم إستدعائها لتطوير برمجيات أو القيام بعمل معين ) بها دوال ( الدالة هي مجموعة من الأوامر بداخل البرنامج يتم إستدعائها لتُنفذ دفعة واحدة ) تُستخدم في حذف الأدلة والملفات، في روبي تسمى FileUtils وفي البايثون تسمى shutil كذلك السطر الثاني من سكربت الروبي به دالة تعمل على جمع ما يحتوي الدليل الذي أدخلته من اسماء ثم بعد ذلك نستخدم الدالة rmtree من المكتبة FileUtils والقيام بحذف كل هذه الأسماء، وآلية العمل هي هي تعمل في سكربت البايثون فنحن نقوم بتعريف الدالة DeleteDir والقيام بجلب كل ما يحتويه المسار الذي أدخلته للإسكربت من أسماء وحذفها كلها ومن ثم حذف الدليل بعد ذلك.
نضرب مثال آخر على التشابه بين لغات البرمجة : أنت في بداية تعلمك الإنگليزية مثلًا قد يكون الأمر صعب عليك، ولكن مع مرور الوقت ستصبح اللغة بالنسبة لك سهلة، وإن أردت الإنتقال إلى الفرنسية بعد ذلك، ستجد كثيرًا من الكلمات التي تتشابه بين اللغتان علمًا بأن حوالي 30% من كلمات الإنگليزية ذات أصل فرنسي، كذلك الحال بين العربية و الإسپانية فأنت إن كنت تعلم العربية فسيسهل عليك تعلم الإسپانية؛ نظرًا للتركيب الجملي الذي يتشابه بين الإثنان، كذلك وجود ما يقرب من 6000 الآف كلمة عربية بداخل اللغة الإسپانية.
التشابه أيضًا بين اللغات يمكن تشبيهه بذلك، فهناك دوال تتشابه بين اللغات بينهم البعض، وكلمات محجوزة (الكلمات المحجوزة هي عبارة عن كلمات ثابتة تستخدم في حالات معينة لفعل أمر معين) في اللغات تتشابه فيما بينها، فلغات مثل الروبي والبايثون أخذت عن لغات أخرى مثل الـ Perl والـ Smalltalk والـ Lisp والـ Scheme بعض الطرق لكتابة الأوامر.

بعض النصائح المفيدة :

1- أنت في بداية تعلمك للغة تختار مصدرًا جيدًا يبسط لك اللغة وتتعلم منه أوامر اللغة وكيف تُكتب، وكن حريصًا في البداية على الإلمام بأوامر اللغة العامة ومعرفتها بصورة كاملة حتي يسهل عليك قراءة الشفرات الأخرى للمبرمجين (أنا لا أطلب منك حفظ اسماء الدوال كلها وماذا تفعل ولكن معرفة الكلمات المحجوزة والعبارات الشرطية وكيفية الإعلان عن دوال وما إلى ذلك من أساسيات اللغة).
2- احرص على تعلم لغات متعددة ولا تقتصر على لغة أو أثنتان أو ثلاثة، فلكل لغة نكهة خاصة بها، وتستخدم في بناء تطبيقات ذات طابع معين.
3- قم بعمل بحث عن حلول للمشاكل التي تواجهك، وعندما تجد الحل قم بتخزينه بصيغة تقوم أنت بكتابتها شارحًا فيها لنفسك هذا الحل وأحفظه في ملف خارجي، ومع الوقت ستجد مجموعة كبيرة من الحلول لمشاكل مستقبلية قد تواجهك.
4- اعمل على حفظ الدوال المشهورة التي تستخدم بكثرة بداخل البرامج، فستسهل عليك عملية كتابة البرامج.
5- قم بالإطلاع على مشاريع برمجية بلغات مستعينًا بموقع Github.
الآن نعرض لمجموعة من المقالات المهمة، التي تعطيك النصائح في بداية المشوار البرمجي، وهي مفيدة والأخذ بها سيساعدك بإذن الله.
كيف تصبح هاكر للمبرمج إيريك رايموند، مقالة بها مجموعة من النصائح الجيدة عامة و في الجزء البرمجي، المقالة العربية هي الترجمة للإنجليزية وقد ترجمت في 2005 وتفتقر إلى بعض النقاط الموجودة في المقالة الإنجليزية المحدثة. بعض النقاط الغير موجودة في النسخة العربية والتي من الممكن أن تأخذها بعين الإعتبار :
* من الممكن أن تبدء بالروبي بدلًا من البايثون، فالإثنتان عالميتان وتتوفر بكثرة الكتب والمصادر التي تستطيع بواسطتهما تعلم اللغتان بصورة سهلة.
* العمل في بيئة اللينوكس، ويمكنك البدء بتثبيت توزيعة أوبونتو، وستجد الدعم اللازم لكل مبتدء من البداية في مجتمع لينوكس العربي.
مقالة علم نفسك البرمجة في عشرة أعوام، أيضًا هذه المقالة بها نصائح هامة للمبرمج، وتوجد نسخة مترمجة منها للعربية ولكن وقت كتابة هذه السطور كان رابط النسخة العربية للمقالة لا يعمل.
مقالة TipsForReadingCode أيضًا ممتازة بها نصائح لتسهيل عملية قراءة الشفرة .
كتاب How to be a Programmar هو كتاب حصلت عليه أثناء قرائتي لتدوينات التويتر الخاصة بالأصدقاء الموجودون لدي في القائمة، وجدت حساب الأخ محمد زاهر غيبة به رابط لمدونة بها موضوع يخص ثتبيث الروبي في بيئة الويندوز، فقمت بإلقاء نظرة عليها ووجدت موضوعًا بها يتحدث عن كيف تصبح مبرمج، وهو ملف PDF لشخص يدعى Robert L.Read يعرض فيه ملخص لتجربته مع البرمجة وما هي المهارات التي يجب عليك تعلمها. قم بتحميله من هنـا
كتاب آخر يحمل اسم How to Become a Programmer يعرض فيه الكاتب لمجموعة من النصائح بجانب إخبارك ما هو الطريق الذي تسلكه للحصول على المال من البرمجة. حمله من هنـا
نختم بكتاب كبير هو كتاب How To Program Using Java، كتاب ممتاز أنصح كل فرد في بداية الطريق بقرائته فيه نصائح جميلة، هو ليس مجاني ولكن هناك نسخة PDF منه على الشبكة تستطيع بالبحث الحصول عليها.
في والنهاية أذكرك بأنه كلما بذلت مجهود أكبر كلما أصبحت مبرمج أكثر إحترافًا. وفقك الله

روابـــ(9)ــط

أكتوبر 22, 2010
السلام عليكم ورحمة الله وبركاته
* Programmer 101 : Teach your  self how to code – مقال للمبتدئين في طريق البرمجة للإجابة عن سؤال بأي لغة أبدء ؟
* RubyPulse – تسجيلات ڤيديو لشرح مكتبات روبي
* Read Ruby 1.9 – عمل ضخم ورائع كتوثيق وشرح للروبي في إصدارها 1.9 بطريقة منظمة
* تجربتي مع المصادر المفتوحة
* تعلم أساسيات الروبي – إرشادات لما بعد الأساسيات
* الفرق بين المتغيرات والرموز في روبي – توضيح الفرق بطريقة بسيطة وواضحة
* شرح الرموز في روبي – كإضافة للمقالة السابقة
* شجرة مشروع الروبي
* تحديات روبية للمبتدئين
* دروس لتعلم روبي بسهولة من البداية
* SetCode – فكرة عربية لحفظ الشفرات البرمجية
* ماذا يعتقد البايثونيون في روبي
* Teach me to code – مدونة مميزة لتعليم روبي وريلز وما يتعلق بهم
* Understanding Character Encoding – تعرف على ماهية ترميز الحروف

Follow

Get every new post delivered to your Inbox.