المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : إلى كل من يريد بدء البرمجة .. من هنا الطريق الصحيح !


حسين بن محمد
23-11-09, 04:15 PM
إلى كل من يريد بدء البرمجة .. من هنا الطريق الصحيح !<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
<o:p> </o:p>
بسم الله الرحمن الرحيم ، والصلاة والسلام على أشرف المرسلين سيدنا محمد وآل بيته الطاهرين وصحبه أجمعين ومن تبعهم بإحسان إلى يوم الدين . أما بعد :<o:p></o:p>
السلام عليكم ورحمة الله وبركاته<o:p></o:p>
نظرا للأسئلة المتكررة للإخوة الكرام حول لغات البرمجة وأي اللغات أحسن للمبتدئ ؛ أقدم لكم إخواني الكرام موضوعا كاملا - بإذن الله - يناقش البرمجة ولغاتها المختلفة ، ويناقش الطريق الصحيح للاحتراف في ميدان البرمجة حسب رأي أغلب خبراء البرمجة .<o:p></o:p>
أرجو من الإخوة الكرام قراءة الموضوع إلى النهاية حتى تكتمل الفكرة .<o:p></o:p>
قبل أن تبرمج يجب عليك أولا أن تفهم : ما هي البرمجة ؟<o:p></o:p>
أنت عندما تستعمل الكمبيوتر كمستخدم عادي أو تستخدم برنامجا تكون أنت التابع والكمبيوتر - أو البرنامج - هو المتحكم ؛ لأنك ستتبع كل ما يأمرك الجهاز بفعله ، فأنت هنا في موقع الضعف ؛ لأنك لن تستطيع التواصل مع الجهاز إلى بواسطة الوسائل التي يتيحها لك ، وستضطر للتعامل مع هذا الوضع لأنك لا تستطيع إيصال ما تريده للجهاز فلا توجد بينكما لغة مشتركة للتواصل ، وهذه المعادلة الأولى . بواسطة البرمجة تنقلب المعادلة ؛ تصبح أنت المتحكم والكمبيوتر هو التابع ، لماذا ؟ لأنك استطعت أن تخاطب الجهاز بلغته ، وبالتالي ستتمكن من التحكم فيه كيفما شئت ، فأنت الآن انتقلت من موقف الضعف إلى موقف القوة ، وصرت الآمر الناهي الأول ، كل هذا لأنك تمكنت من فهم الحكاية وتغلبت على الجهاز بالسلاح الذي كان يواجهك به ، و هذه المعادلة الثانية.<o:p></o:p>
الآن : ما هي لغات البرمجة ؟<o:p></o:p>
هي نظام كامل يتوسط المستخدم والجهاز ، أو هي واجهة مشتركة بين المبرمج والجهاز ، تقوم بأخذ أوامر المستخدم ثم تترجمها إلى لغة الجهاز ، فيقوم هذا الأخير بتنفيدها . فلو تعلمت هذه اللغات ستستطيع أن تحاكي النظام كما تحاكي أي شخص آخر ، وتمرر أفكارك مهما كانت للجهاز ، فيقوم بتنفيدها .<o:p></o:p>
والآن : ما هي لغات البرمجة فعلا ؟<o:p></o:p>
البرمجة يا أخي عبارة عن علم واسع جدا مليء بالأسرار والخبايا ، لا يستطيع أحد أن يعلمك هذا المجال ! عبارة عن فكر خاص وعقلية متكاملة ، عبارة عن أسلوب حياة وأسلوب تفكير ، عبارة عن ألف مشكل ومشكل ، هي الهواء المغذي للعقول ، والقلم الذي تكتب به أفكارك وتجعلها حقيقية .<o:p></o:p>
الكثير من الأشخاص تغيرت حياتهم بتعلمهم للبرمجة وتغير تفكيرهم تماما ؛ لأن البرمجة تكسبك التفكير المنطقي ، وتكسبك القدرة على ملامسة أفكارك وتجسيدها ، وتعلمك الصبر والمثابرة عند مواجهة المشاكل والصعاب .<o:p></o:p>
الآن كلام جميل ، ولكن أنا لا أريد تعلم البرمجة ! بل أريد احترافها .. بل أريد اللعب بها !! كيف السبيل إلى ذلك ؟<o:p></o:p>
طلبت شيئا عظيما ، ولكن معك حق ؛ يجب أن تمشي بمقولة ( كن مبرمجا أو لا تكن ) .. نعم هذه هي المقولة الصحيحة ؛ لأنه كونك مبرمجا ولا تستطيع حل مشكل واجهك ، أو لا تستطيع إكمال مشروع بدأت فيه - فأنت لست بمبرمج حقيقي ! لماذا ؟<o:p></o:p>
ينقسم المبرمجون إلى قسمين أساسيين :<o:p></o:p>
القسم الأول هم المبرمجون العاديون ، يكتبون برامج وأكواد بسيطة - أو حتى معقدة - ، ولكن يبقى ينقصهم شيء يسمى الإبداع والأفكار الجديدة ! فتجد برامجهم كلاسيكية ولا تخلو من الأخطاء والثغرات البرمجية ، هذا القسم من الأشخاص - بصراحة - لن يذهب بعيدا بالبرمجة .<o:p></o:p>
القسم الثاني : هم المطورون أو المحترفون . لماذا يسمون كذلك ؟ لأنهم لا يقومون بكتابة البرامج فقط ، بل يطورونها ، وفي غالب الأحيان يقوم المطورون بتعديل وتطوير برامج القسم الأول ، يتقنون عدة مهارات و أساليب حازوا بها هذا الاسم عن جدارة .<o:p></o:p>
لقد شوقتنا !! أريد فعلا أن أصبح مطورا .. كيف السبيل إلى ذلك ؟<o:p></o:p>
جميل ! تريد أن تصبح محترفا ؟ يجب أن تعرف أولا من هم المطورون ؟<o:p></o:p>
يبدأ طريق الاحتراف من النية ؛ فاجعل نيتك لله ، ودع عنك كل الزيف والمظاهر والتباهي ؛ لأن المظاهر تشتت الفكر ، وكل ما يحتاج إليه المحترف هو قوة التركيز ، فلتكن نيتك العمل لصالح الإسلام والمسلمين ، ولو علم الله أنك صادق سيفتح لك أبواب العلوم والمعارف ، وستحصل العلم والثواب معا ، وﺫلك هو الفوز المبين .<o:p></o:p>
يقوم المحترفون بحل المشاكل وصنع الأشياء ، ويؤمنون بالحرية وبالعمل التطوعي . لكي تعرف كمحترف يجب أن تتصرف بهذا المنطق ، يجب أن تكون حر الفكر واسع الخيال ، ولكي تتصرف بهذا المنطق يجب أن تؤمن بهذا المنطق . ولكن إذا ادعيت الإيمان بهذه المبادئ لكي تكتسب القبول في هذا المجتمع فسوف تفقد الهدف الأساسي وهو حرية الفكر والعمل التطوعي ؛ لأن فكرك صار مربوطا بمن حولك . لكن لماذا العمل التطوعي بالذات ؟ لأن العمل التطوعي يكسبك الكثير من الأفكار الجديدة ، لا أعرف كيف يحدث هذا الشيء ! ولكن اعلم أنه مهم جدا ، وأقل شيء ستكسب الثواب من الله . إيمانك بهذه المبادئ مهم بالنسبة إليك ؛ فسوف يساعدك و يدفعك إلى التعلم ، سيزيد في الحافز التعليمي لديك .<o:p></o:p>
مثل كل الفنون الإبداعية أفضل الطرق لتصبح محترفا هو أن تفكر بعقل محترف ، ليس فقط فكريا وإنما عاطفيا أيضاً ، يجب أن تقنع نفسك أنك محترف .<o:p></o:p>
راقب المحترف ، تتبع المحترف ، فكر بعقل المحترف ، كن محترفا .<o:p></o:p>
كونك محترفا سيصبح مصدر رضى لك ، ولكنه رضى يحتاج لمجهود شاق . هذا المجهود يحتاج إلى دافع وحافز قوي ، يحصل الرياضيون على الدافع من نوع السعادة عند جعل أجسادهم في حالة أفضل وعند النظر إليها في المرآة ، فهي تخطت حدود طاقتهم الجسدية . بالمثل ؛ لتصبح محترفا يجب أن تحصل على السعادة من حل المشاكل وعمل البرامج الخارقة التي عجز عنها الكثير ، يجب عليك تطوير مهاراتك ، واستعمال ذكائك حتى يتخطى الحدود ، ولا يوجد حدود للعقل ، مهمتك كمحترف برمجة هي حل المشاكل مهما كانت ، ويجب أن تكون لديك دائما الحلول الجديدة وبمصادر مفتوحة ، فلو أن المسلمين تبادلوا المشاريع المفتوحة المصدر بينهم وتشاركوا في تطويرها يدا بيد لاستفاد الكل ، وهذا يسمح للمبتدئين بتطوير أسلوبهم بالاعتماد على هته المشاريع ، أما أن يطور كل واحد برنامجا يجعله مغلق المصدر فلن يستفيد أحد ، بل ستنتج طبقية فكرية في المجتمع .<o:p></o:p>
يا إخواني .. موضوع المصدر المفتوح موضوع مهم جدا ، وهو أحد ركائز الاحتراف ؛ أضرب مثالا بالجامعات الأمريكية ، فهي تطور كل شهر برامج مفتوحة المصدر ، وتشارك معها كل الجامعات الأخرى ، ويستطيع كل الطلاب تعديل هته البرامج ومتابعة تطورها مجانا ! فما كانت النتيجة ؟<o:p></o:p>
الطالب ( لينوس تورفالدس (http://ar.wikipedia.org/wiki/%25D9%2584%25D9%258A%25D9%2586%25D9%2588%25D8%25B3 _%25D8%25AA%25D9%2588%25D8%25B1%25D9%2581%25D8%25A 7%25D9%2584%25D8%25AF%25D8%25B3) ) استطاع أن يضع حجر الأساس لليونكس - أعظم نظام في العالم ! - وهو في سن العشرين !<o:p></o:p>
عالم المعلوماتية عالم معقد وسريع ، لكي تقتحم هذا العالم يجب أن تكون لديك القدرة على سرعة التأقلم ، وتكون لديك القدرة على رؤية الأشياء على حقيقتها ، فإذا طرحت في السوق تقنية جديدة تستطيع تحليلها وفهم طريقة عملها ، والأهم المشاكل والثغرات التي تحتويها ، هنا يبدأ عملك يا محترف ؛ طرح الحلول وسد الثغرات ، وهذا هو التميز بعينه ؛ لأننا قلنا أن المبرمجين ينقسمون إلى قسمين ؛ فالأول يكتفي بكتابة البرامج ، أما الثاني فيقوم بتطويرها وحل المشاكل التي تواجهها .<o:p></o:p>
ولا يخفى عليكم أن عالم البرمجة هو عالم المشاكل بحد ذاته ، فلإنجاز مشروع صغير ستواجه العشرات من المشاكل ! لذا هيئ نفسك لما ينتظرك ، وإن واجهتك مشكلة ادرس أسبابها أولا ، ثم عالج الأسباب واحدا تلو الآخر ، وحاول تجديد أفكارك لكي لا تقع في فخ التكرار إذا لم تصل إلى الحل ، لا تعيد نفس الفكرة ، بل غيرها تماما ، حاول تغيير الإستراتيجيات التي تواجه بها المشكل مع كل مرة ، وحاول إدخال بعض الأمور الجديدة على أسلوبك مع كل مرة حتى تبقى دائم التطور والتجدد .<o:p></o:p>
اللغات التي يستعملها المحترف :<o:p></o:p>
طريقة تفكير المحترف مطلوبة ، ولكنها لا تغني عن المهارات الأساسية التي يجب أن تتوفر لديه قبل أن يستطيع أي شخص أن يلقبه بلقب المحترف !<o:p></o:p>
يملك المحترف عدة لغات برمجة معينة تساعده على حل المشاكل وعمل برامج ومشاريع متميزة ، إذا كنت أخي القارئ لا تعرف أيا من لغات البرمجة فاتبع المنهج التالي الذي سيقودك للاحتراف بسهولة ؛ لغات البرمجة كثيرة ومتنوعة ، منها السهلة ومنها الصعبة ، منها القوية ومنها الضعيفة ، منها ما يفيد ومنها ما يضر .<o:p></o:p>
إﺫا كنت لا تعرف أيا من لغات البرمجة أنصحك بالبدء بتعلم لغة البايثون Python (http://ar.wikipedia.org/wiki/%25D8%25A8%25D8%25A7%25D9%258A%25D8%25AB%25D9%2588 %25D9%2586) ؛ فهي لغة رائعة وحديثة وسهلة على المبتدئين . أنشئت هذه اللغة خصيصا لمستعملي لغة السي C (http://ar.wikipedia.org/wiki/%25D8%25B3%25D9%258A_(%25D9%2584%25D8%25BA%25D8%25 A9_%25D8%25A8%25D8%25B1%25D9%2585%25D8%25AC%25D8%2 5A9)) حتى يستعينوا بها لعمل مشاريع في وقت قصير .<o:p></o:p>
كتبت هذه اللغة بلغة السي ، وهي تعمل كل ما تعمله لغة السي ، طبعا لن تعطيك الحرية كحرية السي ، ولكن من حيث الفعالية لا يوجد فرق بينهما ، ولا تغرك سهولة هذه اللغة وتظن أنها ضعيفة ؛ فقد كتب بواسطة هذه اللغة كل أدوات توزيعة الردهات RedHat (http://ar.wikipedia.org/wiki/%25D8%25B1%25D8%25AF_%25D9%2587%25D8%25A7%25D8%25A A) ، ولمن لا يعرف الردهات : هي توزيعة لينيكس Linux المستعملة من طرف أغلب الخوادم Servers ، ويغيظني في قلبي عندما أرى المسلمين يجهلون عن هذه اللغة الرائعة ! بل إن البعض يشكك في فعاليتها ، وهذه أخي القارئ بعض المشاريع التي استعملت لغة البايثون فيها :<o:p></o:p>
Google, NASA, YouTube, Industrial Light & Magic, One Laptop Per Child , Opie sur pocket PC .<o:p></o:p>
كما نرى لغة البايثون قوية وواسعة الاستعمال ، فبالرغم من كونها لغة جيدة للبدء بها ، فهي ليست لعبة ! بل إنها لغة قوية ، ومناسبة للمشاريع الكبيرة ، إنها لغة لن تجد صعوبة كبيرة في تعلمها ، وستكسبك الثقة في النفس ، وستتعلم معها أساسيات البرمجة في ظرف زماني قصير ؛ لأنها لغة سلسة وغير معقدة .<o:p></o:p>
لغة البيرل Perl (http://ar.wikipedia.org/wiki/%25D8%25A7%25D9%2584%25D8%25A8%25D9%258A%25D8%25B1 %25D9%2584) - أو الجافا Java (http://ar.wikipedia.org/wiki/%25D8%25AC%25D8%25A7%25D9%2581%25D8%25A7_(%25D9%25 84%25D8%25BA%25D8%25A9_%25D8%25A8%25D8%25B1%25D9%2 585%25D8%25AC%25D8%25A9)) - تعتبر أحسن اختيار ثان لك ، أنا أفضل أن تتعلم البيرل أولا ؛ فهي اللغة التي تستعمل في إدارة أنظمة الشبكات والتحكم في الخوادم عن بعد ، كما تستعمل في برامج التواصل عن بعد . إذا تعلمت لغة البايثون لن تجد صعوبة في تعلم لغة البيرل لأنهما متشابهتان نوعا ما .<o:p></o:p>
لغة الجافا أصعب قليلا ، ولكنها تنتج أكواد أسرع من لغة البايثون والبيرل ، كما أنها أصبحت واسعة الاستعمال ، حتى الروبوتيك (http://ar.wikipedia.org/wiki/%25D8%25B9%25D9%2584%25D9%2585_%25D8%25A7%25D9%258 4%25D8%25A7%25D9%2586%25D8%25B3%25D8%25A7%25D9%258 6_%25D8%25A7%25D9%2584%25D8%25A2%25D9%2584%25D9%25 8A) صار يبرمج بهذه اللغة ، وهي لغة شابة سريعة التطور ، وهي أحسن لغة تتعلم بها مبادئ البرمجة الكينونية (http://ar.wikipedia.org/wiki/%25D8%25A8%25D8%25B1%25D9%2585%25D8%25AC%25D8%25A9 _%25D9%2583%25D8%25A7%25D8%25A6%25D9%2586%25D9%258 A%25D8%25A9_%25D8%25A7%25D9%2584%25D8%25AA%25D9%25 88%25D8%25AC%25D9%2587) لأنها لغة موجهة صارمة للغاية ، وتمهدك جيدا للدخول إلى عالم C++ (http://ar.wikipedia.org/wiki/%25D8%25B3%25D9%258A_%25D8%25A8%25D9%2584%25D8%25B 3_%25D8%25A8%25D9%2584%25D8%25B3) .<o:p></o:p>
عند وصولك لهذه المرحلة يجب عليك إدخال تقنيات جديدة على برامجك ؛ كالتعامل مع تقنيات CGI ، أو البرمجة بواسطة مكاتب SQL ، وبرمجة تطبيقات تستخدم فيها مكتب الشبكات RTp,H.323,SIP .<o:p></o:p>
لكن احذر ! لن تصل إلى مستوى المحترف - أو حتى إلى مستوى المبرمج العادي - إذا تعرفت على لغة برمجة واحده أو اثنتين ؛ يجب أن تتعلم كيفية التفكير في المشاكل البرمجية بشكل عام ، مستقلا عن أية لغة برمجة ، لا تربط نفسك بلغة معينة .<o:p></o:p>
لكي تصبح محترفا يجب أن تصل إلى مستوي حيث يمكنك تعلم لغة برمجة في أيام ، عن طريق ربط ما هو موجود في كتيب هذه اللغة بما تعرفه أنت مسبقا ، وهذا يعني تعلمك للعديد من لغات البرمجة ، يجب أن يكون لديك أسلوبك الخاص لا تربط نفسك بأسلوب لغة معينة ؛ لأنك إذا غيرت اللغة ستضطر إلا تغيير أسلوبك بالكامل .<o:p></o:p>
إذا بدأت في التعمق تعلم لغة السي في البرمجة بجدية فسوف يجب عليك ، لغة العصر ، قلب نظام التشغيل يونكس . لغة السي++ قريبه جدا من لغة السي ، ولكنها أوسع منها ، إذا تعلمت واحده فسوف يصبح من السهل عليك تعلم الأخرى . ليست أي منهما الاختيار الصحيح لكي تبدأ به.<o:p></o:p>
في الحقيقة كلما استطعت الابتعاد عن البرمجة بالسي كلما أصبحت أكثر إنتاجية ؛ السي لغة قوية وموفرة لمصادر جهازك ، ولكن لكي توفر السي هذه الميزة يتوجب عليك عمل العديد من الوظائف بنفسك للتحكم في المصادر ( كالذاكرة مثلا ) ، ولقد أنشئت هذه اللغة لتحل محل لغة FORTRAN التي كانت معتمدة سابقا ، فهي قريبة نوعا ما إلى تشكيلة النظام ، مما يتطلب منك كتابة شفرات كثيرة لإنجاز برامجك ، كل هذه الشيفرة البرمجية تزيد من احتمالات الخطأ ، وسوف تتطلب منك وقتا أطول في تتبع الأخطاء بالبرنامج . هذه الميزة ليست في غاية الأهمية هذه الأيام مع وجود أجهزة قوية كالموجودة حاليا . يفضل استخدام لغة برمجة تقوم بإهدار مصادر الجهاز و لكنها ستقوم بتوفير وقتك ، مثل البايثون . إﺫ أنك تستطيع حل مشكل بواسطة البايثون في 15 سطرا ، ولو حاولت حل هذا المشكل بلغة السي سيكون الكود 60 سطرا ، وخلاصة القول : لا تتجه إلى السي إٍِلا إﺫا احتجت إليها ؛ حتى توفر وقتك وجهدك .<o:p></o:p>
بعض الناس يعتبرونني أهاجم لغة السي بهذا الكلام ، وهذا خطأ ؛ لأني مهووس بهذه اللغة ! ولكن الحق حق ، وكما قلت لك : لا تربط نفسك بلغة معينة ، اجعل السي دائما آخر الحلول . تجد المبتدئيين دائما يتجهون إلى هذه اللغة ظنا منهم أن تعلمها سيختصر عليهم الطريق ، وهذا خطأ كبير جدا ؛ لن تستطيع أخي القارئ إتقان هذه اللغة حتى تكتسب خبرة جيدة جدا في البرمجة ، أنا لا أتكلم عن 5 أشهر أو عام ، بل أتكلم عن خبرة برمجة بثلاث لغات على الأقل ! ولا تغرك المواضيع المطروحة في المنتديات عن هذه اللغة ، والتي يزينها أصحابها بعنواين زائفة " احترف لغة السي من الصفر .." ! .. لغة السي لا تستخدم لطباعة الأرقام على الشاشة وحل معادلة من الدرجة الثانية ، ولكن تستخدم للتحكم في عمل المعالج ، أو برمجة التعريفات Drivers ، أو التحكم في أعمال الجهاز gestion des processus ، كما أنها تستخدم في برمجة أنظمة الأمان العالية الحساسية . والمبتدأ لن يستطيع استيعاب هذه الأمور حتى يتمرس في مجال البرمجة جيدا ، إذن أخي القارئ انس هذه اللغة الآن تماما ، وستأتي بها الأيام - إن شاء الله - . اختر لغة سهلة وسلسلة تكسبك الثقة بالنفس وتمكنك من فهم مبادئ البرمجة بسهولة .<o:p></o:p>
تستحق لغة ليسب Lisp (http://ar.wikipedia.org/wiki/%25D9%2584%25D9%258A%25D8%25B3%25D8%25A8) لفت الانتباه لها ، لسبب مختلف ؛ بسبب التجربة الرائعة التي سوف تحظى بها عندما تصل إلى فهم هذه اللغة المخصصة لبرمجة الذكاء الاصطناعي ، وستكسبك خبرة تحسد عليها في التعامل مع بنوك المعلومات وأمانها . هذه الخبرة سوف تجعلك مبرمجا أفضل لبقية حياتك حتى لو لم تستخدم هذه اللغة كثيرا.<o:p></o:p>
لغة PHP (http://ar.wikipedia.org/wiki/Php) أيضا صارت تعتبر من أهم اللغات ؛ لأن جل الصفحات الديناميكية أو صفحات الويب صارت تكتب بها ، لذا يجب عليك تعلمها ، أو على الأقل فهم الأكواد المكتوبة بها ، كما أنك تستطيع إدماجها مع لغة السي ( على لينيكس ) وتستفيد من ميزاتها - كما قلتُ من قبلُ - لحفظ الوقت والمجهود.<o:p></o:p>
يجب عليك أيضا فهم الأكواد المكتوبة بالـ HTML (http://ar.wikipedia.org/wiki/HTML) التي يعتبرها الكثير لغة برمجة ، مع أنها لا تمس البرمجة بصلة ، لكن يجب عليك فهمها جيدا ؛ لأنك ستصادفها كثيرا هي و XML (http://ar.wikipedia.org/wiki/XML) .<o:p></o:p>
أفضل اختيار بالطبع أن تتعلم الخمس لغات : البايثون ، والسي ، والسي++ ، والجافا ، والبيرل ، وبي إتش بي ، والليسب . إلى جانب أنهم أهم اللغات المحترفين ، فهم يمثلون تعريفا بأكثر من تقنية برمجية ، وكل منهم سوف يعلمك شيئا ذا قيمة عالية ، وستكتسب من كل لغة أفضل ما فيها وتأخذ منها ما يفيدك فقط .<o:p></o:p>
اقرا الكثير من الأكواد :<o:p></o:p>
لا تكن انعزاليا فتقضي على نفسك ، بل شارك المجتمع وقم دائما بتتبع أخبار المبرمجين . يوجد العديد من المواقع التي يطرح فيها المبرمجون آخر مشاريعهم ، قم بتحميل هذه المشاريع ، واقرأ الكود المصدري ، ودون ملاحظاتك حول المشروع ، ثم قم بإضافة أشياء جديدة على المشروع ، ( قم بتطويره) ! بهذه الطريق ستبقى دائما مواكب للتقدم ( تبقى في المستوى) وستطور قدراتك وتستفيد من تجارب الغير عند قراءتك للكثير من الأكواد ، ستتمكن من اكتشاف الثغرات والأخطاء بسهولة ، كما أن أسلوبك في البرمجة سيتحسن كثيرا باعتمادك على نقاط قوة الآخرين .<o:p></o:p>
ولكن احذر أخي الكريم ! لا تحفظ الأكواد ؛ فإن البرمجة أبعد ما تكون عن الحفظ ، لأنك إذا حفظت الكود أو الطريقة ستنساها سريعا ولن تفيدك في شيء ، وأنا لا أعني بقراءة الأكواد التقليدَ ، فهذا أيضا لن يفيدك في شيء ، بل خذ أفكار الآخرين وطورها حسب فكرك أنت .<o:p></o:p>
الاستقلالية والتنوع :<o:p></o:p>
معنى الاستقلالية أن تكون مستقلا فكريا عن لغة أو تقنية ؛ أن لا تربط نفسك بلغة معينة فتبقى تتحكم فيك إلى الأبد ، بل كن دائما أنت المتحكم في اللغات ؛ لأن كل لغات البرمجة تحتوي على نقاط قوة ونقاط ضعف ، فمعنى الاستقلالية أن تأخذ من اللغة ما تريد أنت فقط ، أي أن تأخذ من كل لغة نقاط قوتها فقط ، وتغطي نقاط ضعفها بلغة أخرى ، وهذا سيجعلك تبرمج أشياء في منتهى القمة .<o:p></o:p>
فمثلا : لو أردت أن تبرمج مشروعا ضخما يقوم بالتحكم في قاعدة بيانات لشبكة كبيرة :<o:p></o:p>
تقوم بالبدء بلغة البايثون ؛ لأنها سريعة جدا ، فتنجز بها قاعدة المشروع ، ثم تضيف إليها السي أو السي ++ للتعامل مع موارد الجهاز والتعامل بالمؤشرات ، ثم تدخل لغة البيرل للتحكم في السيرفر والأجهزة عن بعد وللتعامل مع السلاسل الحرفية ، ثم الجافا أو php لعمل واجهة محكمة ، وإذا أردت تفاعل أحسن وأمنا أكبر ادخل لغة ليسب . و بهذا تكون قد أنجزت مشروعا كاملا يستطيع العمل لسنوات عديدة دون مشاكل .<o:p></o:p>
هذا ما تعنيه الاستقلالية في البرمجة ؛ أن تتحكم في البرمجة كما تريد ، وهذا هو معنى الاحتراف حقا .<o:p></o:p>
و يبدأ الطريق إلى التنوع في مراحلك الأولى ، فيجب عليك إدخال أشياء جديدة على أسلوبك ؛ مثلا : استدعاء مكتبات النظام والتعامل مع موارده ، كتشفير الملفات والتحكم في نظام المدخلات E/S ، الاتصال بقاعدة بيانات ، وركز على نقاط القوة أكثر ، وعند تعلمك للغة الثانية اعمل نفس الشيء ، وحاول الجمع بين اللغتين في مشروع واحد معتمدا على نقاط قوتهما ، وهكذا مع كل لغة تتعلمها .<o:p></o:p>
استغلال المشاكل لصالحك :<o:p></o:p>
المشاكل في البرمجة نعمة كبيرة وفائدة عظيمة ! ستتعلم من المشاكل أشياء لن تستطيع تعلمها في عدة سنوات ، ولكن مع شرط الاستفادة منها ! فعندما يواجهك مشكل لا تترك العمل أو تتخلى عن الفكرة ، بل ابحث عن حل لها .. اسأل الخبراء .. ابحث في الإنترنت عن حل لمشكلتك .. حاول تبديل الاستراتيجية لحل المشاكل .. لا تتعامل مع المشكل بفكرة وحيدة أو بطريقة كلاسيكية ، بل كن ديناميكيا تستطيع تغير إستراتيجياتك بسلاسة كبيرة دون أن تسبب في تغيير المشروع ككل .. حاول البحث عن الحل في لغة أخرى ، فإذا لم تستطع إيجاد حل غير الفكرة تماما حتى لا تضيع الكثير من الوقت ، ولكن لا تنس المشكل ، بل اجعله تحديا لك ، فإذا استطعت التغلب عليه ستشعر براحة نفسية كبيرة ، وتشعر بالرضى عن نفسك ، وهذا ما سيعطيك الدافع للصمود أمام المشاكل المستقبلية .<o:p></o:p>
تعلم الشبكات :<o:p></o:p>
أصبح مجال الشبكات مجالا واسعا جدا ، تعدى اتساعه مجال المعلوماتية بحد ذاتها ، وصارت له أهمية كبيرة في سوق العمل ، بحيث إن المختصين في هذا المجال مطلوبون في كل مكان ، وستتعلم مع الشبكات أمورا كثيرة تزيد بها في مهاراتك البرمجية ؛ لأنك عندما تنجز مشروع برنامج لكي يعمل على جهاز واحد ليس كإنجازك مشروعا يعمل على عدة أجهزة . ستتعلم في هذه الحالة التحكم في الأجهزة عن بعد ، كما أنك ستتعلم تنظيم عملك ، وتتعلم أيضا كيفية إنجاز خطة ( إستراتيجية ) للعمل ، والكثير من الأمور الرائعة التي تكسبك الكثير من الخبرة ، ويوجد في النت الكثير من المكتبات المخصصة لبرمجة الشبكات أو التحكم في البروتوكولات ، قم بتحميلها وحاول التعامل معها بصنع برامج تستخدم هذه المكاتب .<o:p></o:p>
تعلم العمل والبرمجة على نظام لينيكس :<o:p></o:p>
سيسمح لك لينيكس باكتشاف النظام على حقيقته ؛ فهو نظام مرن جدا ، أقصد بالمرونة أنه يعطيك حرية التوغل في قلبه كيف ما شئت ، وشفافيته أذهلت الجميع ، بحيث أنك تستطيع رؤية وتعديل أي ذرة في هذا النظام من النواة حتى البرامج ، ستكتشف معه الكثير من الأمور التي لا تستطيع رؤيتها مع أنظمة مايكروسوفت ، وهو ليس نظاما صعبا كما يظنه الكثير ، بالعكس ، سيتعامل معك هذا النظام كما تريد ؛ إذا أردت الاحتراف سيتعامل معك كنظام محترف ، وإذا أردت الواجهات الرسومية والجمال والبساطة فهو نظام جميل وسهل ، وهو نظام كامل لن تضطر إلى تحميل أي شيء عند استعمالك له .<o:p></o:p>
كما أن لينيكس يسمح لك بالمزج بين لغات البرمجة بسهولة ؛ إذ تستطيع إنجاز مشروع بأربع لغات دون تحميل أي برنامج ، وهذا مكسب كبير لك كمبرمج .<o:p></o:p>
دون كل ملاحظاتك :<o:p></o:p>
هذا الأمر سيساعدك كثيرا على تطوير قدراتك ، لذا قم دائما بتدوين ملاحظاتك ، وتدوين كل استنتاجاتك والمشاكل التي واجهتك ، ثم قم بمناقشة هذه الملاحظات كما يفعل الأدبيون تماما ، كأنك تناقش في مقال ، جرب هذا الأمر ستجد أنه يسرع في تطوير مهاراتك .<o:p></o:p>
تم بحمد الله<o:p></o:p>
<o:p></o:p>
<o:p>____________ </o:p>
نقلته من هنا (http://www.bramjnet.com/vb3/printthread.php?t=543262) متصرفا بيسر ، متحفظا على بعض أفكاره . والله الموفق .<o:p></o:p>

محمد الأمين
23-11-09, 07:10 PM
كيف تقارن لغة البايثون Python مع لغة #C ?

ابو هبة
23-11-09, 08:01 PM
وماذا عن فيجوال بايسك ؟

احمد ابو معاذ
23-11-09, 08:25 PM
جزاك الله خير اخي حسين

إسلام الغرباوي
24-11-09, 01:25 AM
بمناسبة البرمجة والمبرمجون
نحتاج وبشدة برنامج لرسم شجرة الأسانيد بسهولة والتحكم الكامل فيها مع إمكانية طبعها

وجزى الله خيرا من قام ببرمجة هذا البرنامج

محمد وحيد
24-11-09, 04:32 PM
بمناسبة البرمجة والمبرمجون
نحتاج وبشدة برنامج لرسم شجرة الأسانيد بسهولة والتحكم الكامل فيها مع إمكانية طبعها

وجزى الله خيرا من قام ببرمجة هذا البرنامج

ربما يفيدك هذ البرنامج

شجرة الأسانيد..برنامج لمساعدة الدارس والباحث في علم الحديث والسنة النبوية

http://www.alriyadh.com/2008/07/08/img/087149.jpg



http://www.tech2click.net/archives/948

د. محمد العطار
24-11-09, 07:07 PM
باعتباري هاوي برمجة منذ اكثر من 10 سنوات ...
انصح بلغات غير مايكروسوفتية ... لن تعمل الا في الوندوز ... ولن تشكل الا حلقة اخرى في اعتمادنا على تقنيات مغلقة ...
بايثون جيدة ... وسهلة التعلم ... انا اتجه لها ...
وساكتب قريباً (سنوات الضياع مع vb)

تحياتي

د. محمد العطار
24-11-09, 07:09 PM
لماذاا لا یتم تشکیل رابطة مبرمجي الملتقى؟
لعل الاعضاء يجتمعون على نقاش ما يخص البرامج المعتم بها هنا ...

مثل هذه: رابطة اطباء الملتقى (http://www.ahlalhdeeth.com/vb/showthread.php?t=185678)
تحياتي

عبد الرحمن العدناني
26-11-09, 08:49 PM
من وادي التقنية
كيف تصبح مبرمجا

http://www.itwadi.com/Become-a-Programmer



كيف تحسن من مهاراتك كمبرمج
http://www.itwadi.com/Improve-your-Skills-as-a-Programmer

أبو حازم المسالم
05-07-10, 12:34 PM
لماذاا لا یتم تشکیل رابطة مبرمجي الملتقى؟
لعل الاعضاء يجتمعون على نقاش ما يخص البرامج المعتم بها هنا ...

مثل هذه: رابطة اطباء الملتقى (http://www.ahlalhdeeth.com/vb/showthread.php?t=185678)
تحياتي
هم معدودون على الأصابع.
والبرمجة لها تخصصات كثيرة متفرعة، حيث يندر أن تجد اثنين بنفس المهارات والاهتمامات.

د. محمد العطار
05-07-10, 02:52 PM
اخي ابوحازم ...
لا اتوقع ان يجتمع هنا مثل عدد المبرمجين في الفريق العربي للبرمجة ... كما لم اكن اتوقع ان يجتمع لدينا عدد كبير من الاطباء المهتمين بالعلوم الدينية ... ولكن اجتمع جم غفير، وهو امر مفيد لتداول ما يفيد مما يرتبط بالدين والطب، ومثله: ما يرتبط بعلوم الدين وتقنيات الحاسب ..

لو فُتح موضوع، ربما اجتمع البعض (واعرف البعض فعلاً)، قد يناقشون ما يفيد الجميع....

د. محمد العطار
05-07-10, 03:50 PM
رابطة مبرمجي الملتقى (http://www.ahlalhdeeth.com/vb/showthread.php?t=216280)

أبو وئام
05-08-10, 04:29 AM
بارك الله فيكم
بقي لي أن أضيف أن أهم ما يجب تعلمه قبل تعلم البرمجة هو هندسة الحاسب الألي أي معرفة مكوناته وكيفية عمله
ثانيا : الخوارزميات مهم جدا تعلمها
ثالثا : في ما يتعلق بلغة بايثون، إن أكبر ميزة في هذه اللغة كونها تعمل على جميع الأنظمة : لينكس بمختلف توزيعاته، ويندوز وماكينتوش وهي لغة مرنة، والكود الذي تكتبه بها يمكن تنفيذه مباشرة دون الحاجة إلى محول يترجمه إلى برنامج تطبيقي

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