| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| السلام عليكم ورحمة الله وبركاته كنت أسبح يوما في بحور الإنترنت .. و صادفت مبرمجا أعجبني قوله و عمله .. فسرعان ما تعرفت به و دارت بيني و بينه محادثة طويلة على الماسنجر .. و كان يعمل باحثا في شركة CheckPoint المتعاقدة مع شركة Kaspersky Lab الشركة الروسية ذات مضاد الفيروسات الشهير .. سألته عن كيفية وصوله لهذه المكانة العلمية في البرمجة .. و ماذا علي أن أفعل كي أكون مثله .. قال لي سأختبرك في سؤال بسيط جدا في البرمجة .. و منه ستغير مسار حياتك البرمجية .. فقررت أن أنقل لكم هذا الحوار بعد أن ترجمته للعربية: هو : بتعرف ال factorial of a number ؟؟ أنا : طبعا .. فمثلا ال factorial للرقم تسعة هو 9*8*7*6*5*4*3*2*1 و ال factorial ل4 هو 4*3*2*1 و هكذا ... هو : مية مية كلامك ! عندي متغيرا نوعه Integer و اسمه مثلا Input واريد منك الان ان تكتب لي كود ، يجيب لي ال factorial الخاص به .. بس خلي الكود تبعك Optimized .. أنا : فقط هذا هو المطلوب ,, ثواني خليك معاي واكتبلك الكود هو : Take Ur Time و بعد حوالي من دقيقة إلى دقيقتين .. أنا : تفضل يا عزيزي الكود: كود PHP: كود PHP: أنا : أي نعم .. هو : ألا تعرف أن الRecursion لا تمس الOptimizing بشيء!!! و أنها خطيرة على الذاكرة !! أنا : بالطبع أعرف .. هو : اوك اريد منك تكتبلي الكود بدون Recursion .. أنا : يعني أعمله loop ؟؟؟ هو : أوك .. أنا : طيب ثواني خليك معاي .. أنا : تفضل الكود .. كود PHP: كود PHP: أنا : هههههه طيب كويس إني عجبتك هو : طيب يلا نناقش هذا الكود .. ونحاول نختصره .. أنا : ممم أوك ناقش يا سيدي .. وكنت بقول في بالي " هذا الرجل مجنون ولا شو ؟ شو يختصر وما يختصر !!! يعني لا عاجبه ال Recursion ولا عاجبه الكود هذا !! هذا واحد فاضي ومو لاقي حدا يتسلى عليه غيري ؟!!! " هو : انتبه معاي .. انت في الأول كاتب شرط كود PHP: كود PHP: أنا (قلتله و أنا مستغرب) : علشان لو القيمة ب2 أو ب1 أو صفر أو سالبة ترجع زي ما هي .. هو : طبعا طبعا معاك حق ! لكن هل من الممكن إنك تدمج هذا الشرط مع الloop ؟؟؟ أنا :مش فاهم ,, كيف يعني ؟؟ لو أنا كررت الشرط داخل الloop هكذا انا احمل على البروسيسور عمليات أكثر .. فكل مرة يكرر الكلام اللي جوه الloop سيتحقق من الشرط !! هو : أصبر أصبر انت مش فاهم .. أنا :طيب فهمني .. هو : تعال نجرب الأرقام التي ينطبق عليها الشرط على الloop لو الinput يساوي 2 حيكون الInput-1 يساوي 1 .. و ال1 لا ينطبق عليه شرط الloop اللي هو i >= 2 في هذه الحالة الloop لن يتم المرور خلالها ولا مرة !! و لو جربتها على ال1 و الصفر و الأرقام السالبة ستحصل على نفس النتيجة .. فما فائدة الشرط من الاساس ؟؟ أنا : تصدق معاك حق !! بس معلش أنا كتبتها على عجلة من أمري دون أن أحللها .. هو : مش مشكلة ماهو احنا بنحللها سوا اكتبلي الكود من غير الشرط اللي في الأول .. أنا : الكود يا سيدي .. كود PHP: كود PHP: بس فيه حاجة .. انت ليه فارض output على شكل Integer مع أنك عندك Input ايضا على شكلة Integer ؟؟ أنا : ههههه علشان الInput يكون فيه الرقم المدخل و الoutput يكون فيه الرقم المخرج .. أنا محتاجهم هما الإتنين .. هو : لأ ركز كويس .. انت مش محتاجهم هما الإتنين .. انت ممكن تستغنى عن واحد فيهم !! أنا : ممممم (بافكر) مممم مممم مممم مممم طيب يا معلم .. أنا ممكن أكتب الكود هكذا : كود PHP: كود PHP: أنا : آه بصراحة اختصارك كبير للكود .. و ده بيوفر كتير على الذاكرة و المعالج .. انت فعلا فنان لأن أنا ما كنت اختصر أكوادي من قبل بهذا الشكل !! هو : طيب فيه اختصارات تانية .. أنا : ههههههههه هو عاد فيه كود يا عم ؟ أختصر إيه بس !!! هو : شوف يا سيدي انت قايل في شرط الloop أن i >= 2 .. حلل لي هذا الشرط .. أنا : الأول المعالج بيتأكد إن قيمة i أكبر من 2 ثم بيتأكد إذا كانت قيمة i تساوي 2 هو : الله ينور عليك يا معلم .. هكذا انت عندك عمليتين طيب ينفع أختصرهم لعملية واحدة .. أنا : !!!!!!!!! كيف لم تاتني هذه الفكرة !!!!!!!! طبعا ينفع أقول i > 1 وهذا نظرا لانه عندنا اعداد صحيحة .. هو : طيب اكتب لي الكود النهائي علشان نحاول نختصره اكثر .. أنا :طيب يلا نختصره .. هذا هو الكود كود PHP: كود PHP: الloop متكونة من 3 أجزاء الجزء الأول و هو int i = input – 1 و بيتكرر مرة واحدة في بداية الloop و الجزء الثاني و هو i > 1 و هو بيتكرر في بداية كل دورة من الloop و الجزء الثالث i-- و هو بيتكرر في نهاية كل دورة من الloop كما أن الجزء الذي بداخل الloop اللي هو input *= i يتكرر بينهما صح ؟؟ أنا : تمام .. أنا عارف هذا الكلام كويس .. هو : طيب إيه رأيك نضم الجزء اللي داخل الloop إلى الloop نفسها !!!!! أنا : يا فنان !!! اكيد ما راح نضمه في الجزء اللي بيتكرر في بداية كل دورة .. راح نضمه في الجزء اللي بيتكرر في نهاية كل دورة اللي هو ال i-- هو : الله ينور عليييييييك إكتب الكود النهائي أنا : مممم طيب انا عندي ال i-- تختلف عن ال--i في ان الاولى تحدث بعد اتمام العملية والثانية تحدث اثناء العملية .. وانا اريد ان اخصم من ال i واجد من بعد ما اضربها في الinput .. مممممم هو : تمام ,, راح تستخدم من فيهم ؟؟ أنا : طبعا الi-- !!!!!!!! الكود النهائي بقى سطر واحد !! يا لهوي !!!!!!!!!!!!!! هو : الله ينور عليك .. اكتب السطر الذي بقي أنا : تفضل كود PHP: هو : 100% ما هو رايك في الاختصار ؟؟ تخيل الكود القديم كيف كان كود PHP: كود PHP: كود PHP: أنا : الفرق رهيييييييب بين الإتنين !!! بصراحة انت راجل راااااااائع !!! ربنا يزيدك علم يا شيخ !!! بس يعني أنا لو عندي برنامج كبير و اختصرت كل جزء فيه بهذا الشكل ما راح اخلص !! هو : كل شيء ياتي بالتدريب .. حاول من اليوم تكتب كل اكوادك مختصرة باكبر اختصار ممكن .. وبعد الانتهاء من البرنامج تحاول تختصره مرة اخرى .. وهذا الاختصار مكلوب جدا في برمجة برامج الانتي فايروس.. فتخيل معي لو لم نختصر هذا الكود الى اقل ما يمكن . راح يعمل scan لجهازك في سنين وسنين !!! لان كل عملية تتكرر ملايين المرات !!! وكل اختصار بتساويه بتوفر فيه وقت كثير .. أنا : بصراحة انت رجل لا يوجد مثلك اثنين .. انا اريد فعلا ان اتدرب على هذه الحكاية .. هو : طبعا طبعا .. وتشوف مستواك بعد فترة ,, راح تزيد من سرعة برمجتك و تضاعف مهاراتك .. المهم ما رايك بان نختصر هذا الكود اكثر ؟؟ أنا : أي كود ؟! هو : كود الفاكتوريال !!! أنا : هو في اختصار اكبر من هذا !!!!! هو : نعم .. شوف هذا ... كود PHP: **************** و في نهاية الحديث .. هو : I was born near a PC... ... ... ... ... ... ((مفاجئة الموضوع)) ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... هذا المبرمج عربي مسلم الموضوع الاصلي http://procastle.net/vb/showthread.php?t=1047
__________________ شبكة قلعة البرامج http://www.ProCastle.net .:: اذا اردت الرقي : فاسعى لـرفع مستواك : و لا تنتظر هبوط مستوى الاخرين ::. [ تحت المجهر ] شبكة قلعة البرامج | |||||
|
| |||||
|
بسم الله الرحمن الرحيم أنا مشترك في المنتدى من زمان بس ما مشاركاتي وردودي قليلة .. خصوصاً في الآونة الأخيرة بس هذا الموضوع يستحق الرد عليه بجدارة ، شكراً أخي الكريم على النقل المفيد وشكراً للمبرمج العظيم ![]() تذكرت واحد صاحبي من أيام الجامعه ، كنت دايماً أقول له هذا المتغير ما نحتاجه أو هذه التعليمة ممكن نختصرها أو نلغيها ولازم نوفر ونصير بخلاء في استهلاك الموارد ، وهوة دايماً يرد علي بنفس الرد .. ياخي الرام حجمه كبير لا تعقدها يا شيخ
__________________ نحن أمة إقرأ التي لا تقرأ | |||||
|
| |||||
| اقتباس:
وان شاء الله نشوفك الله يبارك فيك يا غالي اقتباس:
ونتمنى نشوف المزيد من العرب في هذا المستوى اقتباس:
ساضيفها الان في مشاركة لوحدها لانه لا يمكنني التعديل على المشاركة الاصلية اقتباس:
بالنسبة لاسئلتك ما عندي الها اجوبة...
__________________ شبكة قلعة البرامج http://www.ProCastle.net .:: اذا اردت الرقي : فاسعى لـرفع مستواك : و لا تنتظر هبوط مستوى الاخرين ::. [ تحت المجهر ] شبكة قلعة البرامج | |||||
|
| |||||
| بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته كنت أسبح يوما في بحور الإنترنت .. و صادفت مبرمجا أعجبني قوله و عمله .. فسرعان ما تعرفت به و دارت بيني و بينه محادثة طويلة على الماسنجر .. و كان يعمل باحثا في شركة CheckPoint المتعاقدة مع شركة Kaspersky Lab الشركة الروسية ذات مضاد الفيروسات الشهير .. سألته عن كيفية وصوله لهذه المكانة العلمية في البرمجة .. و ماذا علي أن أفعل كي أكون مثله .. قال لي سأختبرك في سؤال بسيط جدا في البرمجة .. و منه ستغير مسار حياتك البرمجية .. فقررت أن أنقل لكم هذا الحوار بعد أن ترجمته للعربية: هو : بتعرف ال factorial of a number ؟؟ أنا : طبعا .. فمثلا ال factorial للرقم تسعة هو 9*8*7*6*5*4*3*2*1 و ال factorial ل4 هو 4*3*2*1 و هكذا ... هو : مية مية كلامك ! عندي متغيرا نوعه Integer و اسمه مثلا Input واريد منك الان ان تكتب لي كود ، يجيب لي ال factorial الخاص به .. بس خلي الكود تبعك Optimized .. أنا : فقط هذا هو المطلوب ,, ثواني خليك معاي واكتبلك الكود هو : Take Ur Time و بعد حوالي من دقيقة إلى دقيقتين .. أنا : تفضل يا عزيزي الكود: كود PHP: أنا : أي نعم .. هو : ألا تعرف أن الRecursion لا تمس الOptimizing بشيء!!! و أنها خطيرة على الذاكرة !! أنا : بالطبع أعرف .. هو : اوك اريد منك تكتبلي الكود بدون Recursion .. أنا : يعني أعمله loop ؟؟؟ هو : أوك .. أنا : طيب ثواني خليك معاي .. أنا : تفضل الكود .. كود PHP: أنا : هههههه طيب كويس إني عجبتك هو : طيب يلا نناقش هذا الكود .. ونحاول نختصره .. أنا : ممم أوك ناقش يا سيدي .. وكنت بقول في بالي " هذا الرجل مجنون ولا شو ؟ شو يختصر وما يختصر !!! يعني لا عاجبه ال Recursion ولا عاجبه الكود هذا !! هذا واحد فاضي ومو لاقي حدا يتسلى عليه غيري ؟!!! " هو : انتبه معاي .. انت في الأول كاتب شرط [php] return input; كود PHP: أنا (قلتله و أنا مستغرب) : علشان لو القيمة ب2 أو ب1 أو صفر أو سالبة ترجع زي ما هي .. هو : طبعا طبعا معاك حق ! لكن هل من الممكن إنك تدمج هذا الشرط مع الloop ؟؟؟ أنا :مش فاهم ,, كيف يعني ؟؟ لو أنا كررت الشرط داخل الloop هكذا انا احمل على البروسيسور عمليات أكثر .. فكل مرة يكرر الكلام اللي جوه الloop سيتحقق من الشرط !! هو : أصبر أصبر انت مش فاهم .. أنا :طيب فهمني .. هو : تعال نجرب الأرقام التي ينطبق عليها الشرط على الloop لو الinput يساوي 2 حيكون الInput-1 يساوي 1 .. و ال1 لا ينطبق عليه شرط الloop اللي هو i >= 2 في هذه الحالة الloop لن يتم المرور خلالها ولا مرة !! و لو جربتها على ال1 و الصفر و الأرقام السالبة ستحصل على نفس النتيجة .. فما فائدة الشرط من الاساس ؟؟ أنا : تصدق معاك حق !! بس معلش أنا كتبتها على عجلة من أمري دون أن أحللها .. هو : مش مشكلة ماهو احنا بنحللها سوا اكتبلي الكود من غير الشرط اللي في الأول .. أنا : الكود يا سيدي .. كود PHP: بس فيه حاجة .. انت ليه فارض output على شكل Integer مع أنك عندك Input ايضا على شكلة Integer ؟؟ أنا : ههههه علشان الInput يكون فيه الرقم المدخل و الoutput يكون فيه الرقم المخرج .. أنا محتاجهم هما الإتنين .. هو : لأ ركز كويس .. انت مش محتاجهم هما الإتنين .. انت ممكن تستغنى عن واحد فيهم !! أنا : ممممم (بافكر) مممم مممم مممم مممم طيب يا معلم .. أنا ممكن أكتب الكود هكذا : كود PHP: أنا : آه بصراحة اختصارك كبير للكود .. و ده بيوفر كتير على الذاكرة و المعالج .. انت فعلا فنان لأن أنا ما كنت اختصر أكوادي من قبل بهذا الشكل !! هو : طيب فيه اختصارات تانية .. أنا : ههههههههه هو عاد فيه كود يا عم ؟ أختصر إيه بس !!! هو : شوف يا سيدي انت قايل في شرط الloop أن i >= 2 .. حلل لي هذا الشرط .. أنا : الأول المعالج بيتأكد إن قيمة i أكبر من 2 ثم بيتأكد إذا كانت قيمة i تساوي 2 هو : الله ينور عليك يا معلم .. هكذا انت عندك عمليتين طيب ينفع أختصرهم لعملية واحدة .. أنا : !!!!!!!!! كيف لم تاتني هذه الفكرة !!!!!!!! طبعا ينفع أقول i > 1 وهذا نظرا لانه عندنا اعداد صحيحة .. هو : طيب اكتب لي الكود النهائي علشان نحاول نختصره اكثر .. أنا :طيب يلا نختصره .. هذا هو الكود كود PHP: الloop متكونة من 3 أجزاء الجزء الأول و هو int i = input – 1 و بيتكرر مرة واحدة في بداية الloop و الجزء الثاني و هو i > 1 و هو بيتكرر في بداية كل دورة من الloop و الجزء الثالث i-- و هو بيتكرر في نهاية كل دورة من الloop كما أن الجزء الذي بداخل الloop اللي هو input *= i يتكرر بينهما صح ؟؟ أنا : تمام .. أنا عارف هذا الكلام كويس .. هو : طيب إيه رأيك نضم الجزء اللي داخل الloop إلى الloop نفسها !!!!! أنا : يا فنان !!! اكيد ما راح نضمه في الجزء اللي بيتكرر في بداية كل دورة .. راح نضمه في الجزء اللي بيتكرر في نهاية كل دورة اللي هو ال i-- هو : الله ينور عليييييييك إكتب الكود النهائي أنا : مممم طيب انا عندي ال i-- تختلف عن ال--i في ان الاولى تحدث بعد اتمام العملية والثانية تحدث اثناء العملية .. وانا اريد ان اخصم من ال i واجد من بعد ما اضربها في الinput .. مممممم هو : تمام ,, راح تستخدم من فيهم ؟؟ أنا : طبعا الi-- !!!!!!!! الكود النهائي بقى سطر واحد !! يا لهوي !!!!!!!!!!!!!! هو : الله ينور عليك .. اكتب السطر الذي بقي أنا : تفضل كود PHP: هو : 100% ما هو رايك في الاختصار ؟؟ تخيل الكود القديم كيف كان كود PHP: كود PHP: أنا : الفرق رهيييييييب بين الإتنين !!! بصراحة انت راجل راااااااائع !!! ربنا يزيدك علم يا شيخ !!! بس يعني أنا لو عندي برنامج كبير و اختصرت كل جزء فيه بهذا الشكل ما راح اخلص !! هو : كل شيء ياتي بالتدريب .. حاول من اليوم تكتب كل اكوادك مختصرة باكبر اختصار ممكن .. وبعد الانتهاء من البرنامج تحاول تختصره مرة اخرى .. وهذا الاختصار مكلوب جدا في برمجة برامج الانتي فايروس.. فتخيل معي لو لم نختصر هذا الكود الى اقل ما يمكن . راح يعمل scan لجهازك في سنين وسنين !!! لان كل عملية تتكرر ملايين المرات !!! وكل اختصار بتساويه بتوفر فيه وقت كثير .. أنا : بصراحة انت رجل لا يوجد مثلك اثنين .. انا اريد فعلا ان اتدرب على هذه الحكاية .. هو : طبعا طبعا .. وتشوف مستواك بعد فترة ,, راح تزيد من سرعة برمجتك و تضاعف مهاراتك .. المهم ما رايك بان نختصر هذا الكود اكثر ؟؟ أنا : أي كود ؟! هو : كود الفاكتوريال !!! أنا : هو في اختصار اكبر من هذا !!!!! هو : نعم .. شوف هذا ... كود PHP: **************** و في نهاية الحديث .. هو : I was born near a PC... ... ... ... ... ... ((مفاجئة الموضوع)) . ... ... ... ... ... ... ... |