• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

Khaled Alshaya

المشرفون
  • عدد المشاركات

    2,052
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة Khaled Alshaya

  1. [مخالف - طلب حل : ]رجاء حل سؤال

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  2. تمرين في ال structures .

    أخ محمد حديثي عن الـ POD أصلاً. هذا ليس ما فهمته أنا من الـ standards, و لا ما فهمه صانعو المترجمات: http://msdn.microsoft.com/en-us/library/71kf49f1%28VS.80%29.aspx http://stackoverflow.com/questions/364483/determining-the-alignment-of-c-c-structures-in-relation-to-its-members/364491#364491
  3. تمرين في ال structures .

    هذا ليس شرطاً. يمكن أن يكون هناك padding بين d و i (أو, و) i و c (أو, و) في النهاية بعد c و ربما لا يكون هناك padding أصلاً.
  4. تمرين في ال structures .

    هذا صحيح, لا يمكن أن يكون هناك padding في أول الكائن. سقطت هذه النقطة في ردي السابق. عموماً, سؤال. ماذا تقصد بـ "بعد عناصر النوع"؟ هل تقصد بعد جميع العناصر؟ أم يحق له وضع padding بعد أي بين أي عنصرين و في النهاية؟ :sleep:
  5. تمرين في ال structures .

    و عليكم السلام و رحمة الله و بركاته, لماذا تريد عمل ذلك؟ #include <cstddef> // for offsetof macro struct my_type { int x; int y; }; int main() { my_type point; int *x_ptr, *y_ptr; x_ptr = (int*)((char*)&point + offsetof(my_type, x)); y_ptr = (int*)((char*)&point + offsetof(my_type, y)); *x_ptr = *y_ptr = 10; /* point.x == 10; point.y == 10; */ }
  6. [مخالف - طلب حل : ]سؤال مهم

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  7. و عليكم السلام و الرحمة, كل عام و أنت بخير. بداية, بشكل عام الـ overloading لا يستخدم للحالات التي تسأل عنها. الحالات التي يستحب فيها الـ overloading هو عندما تريد استخدام دوال لها نفس الاسم لأغراض متعددة. تصور أن لديك مجموعة دوال كلها اسمها toStr تقوم بالتحويل لنص من أي نوع قمنا بعمل overloading له في parameters الدالة. المهم هنا, هو أننا استخدمنا دوال مختلفة, لها نفس الاسم, للقيام بعملية مشتركة في النتيجة مختلفين في كيفية تنفيذ الوظيفة نفسها. أحياناً يقال: same name for different implementation. لا أدري ماذا تقصده بهذا السؤال, و لماذا نحتاج لشيء كهذا. تحياتي...
  8. الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  9. functional and nonfunctional

    كما قلت لك سابقاً, يمكن تقسيم المتطلبات "من وجهة نظر معينة" إلى هذين القسمين. و هذا يأتي مع الخبرة, و ليس هناك معادلة لتنفيذ الموضوع. حاول البحث عن موضوع الـ Requirements Engineering و اقرأ عنه بشكل عام. تحياتي...
  10. الغوا عضويتي

    عزيزي, ضعه في المكان الصحيح على الأقل!
  11. functional and nonfunctional

    و عليكم السلام و رحمة الله و بركاته, عزيزي, عندما تذهب إلى عميل ما يريد من حضرتك أن تصمم له برنامج و تقوم بتشغيله لديه و تدريبه على استخدامه فأول ما تفعله هو أن تعرف ما يريده الزبون. قبل ذلك, سيخبرك الزبون بالفكرة التي يريد تطبيقها, و بعد هذا الأمر يجب أن تأخذ متطلباته requirements. المتطلبات هي الخدمات و الوظائف الرئيسية(الرئيسية و غير الرئيسية في الحقيقة), التي يجب على برنامج أن يوفرها حسب طلب الزبون. المتطلبات يمكن تقسيمها(من وجه نظر معينة) إلى قسمين, الأول الخدمات أو الوظائف functional و القسم الثاني القواعد constraints أو nonfunctional. تصور أن أجهزة الزبون تعمل على نظام Windows. بالتالي سيطلب منك أن يعمل النظام على Windows, فهذه ليست وظيفة في البرنامج و لكن قاعدة أو constraint يجب أن تلبيه. تصور أن موقع الزبون به خدمة الدفع عبر الانترنت, فخدمة الدفع نفسها عبارة عن functional requirements و لكن الشروط التي تضعها Visa و البنك الذي يتم تحصيل الدفعات من خلاله يضع شروطاً أو قواعد constraints. الـ Constraints ببساطة ليست خدمة في البرنامج, و لكن القواعد التي تؤثر على الخدمة, كالـ Standards و Environments و خلافه. و هي بشكل عام تنطبق على البرنامج ككل, و ليس لكل خدمة على حدة. المبرمجون يتعاملون مع أصناف مختلفة من الزبائن من شتى مجالات الحياة. ليس هناك طريقة تمكنك من الحصول على طلبات الزبون 1-كاملة 2-بدقة 3-غير متعارضة. لابد من حصول خلل في عملية فهم المطلوب و لو كان بسيطاً لايوثر على عمل النظام بشكل عام, و لذلك يجب محاولة فهم ما يريده العميل بشكل عام في البداية, و من ثم ندخل في التفاصيل. كبداية, نقوم باستخدام use case diagrams لفهم المتطلبات بشكل مبدئي من خلال الرسوم التوضيحية. أعتقد أن لديك خلفية بسيطة حول موضوع الـ diagrams. و هنا مقدمة بسيطة أيضاً: usecase_diagrams.pdf بعد أن نقوم بفهم الطلبات بشكل عام من خلال use case diagrams نقوم بتفصيل معنى الـ diagram من خلال وصفه كتابة. الوصف الكتابي للرسم يسمى use case descriptions. في هذه الخطوة تقوم بتحديد ما يريده الزبون بشكل دقيق. دقيق هنا تختلف من شخص لآخر و من نظام لآخر. بشكل عام هناك templates تتبعها الشركات و كل مكان ستجد template مختلف على الأرجح. هذا مثال على template: usecase_description_template.pdf لو وضحت سؤالك أكثر, و حددت الذي لا تفهمه بدقة فسيقوم الأخوة بمساعدتك أيضاً, سؤالك عام جداً أخي العزيز. تحياتي...
  12. سؤال غريب جداً!!!! ماذا تعني بحماية فكرة؟ facebook ليس فكرة, google ليس فكرة, youtube ليس فكرة. هناك ملايين الأفكار التي تراود البشر, و كلها لا قيمة لها, إلا ما تم تطبيقه و أثبت نجاحه. إذا قدمت خدمة خارقة للوصف و عبقرية, لن تنافسها الشركات الكبيرة, بل ستتنافس للحصول عليك أنت. لسبب بسيط, إن كنت تتكلم عن موقع, فيمكنك تقليد الواجهة. و لكن سبب نجاح أي خدمة ليس الواجهة و إنما الخدمة و مستخدموها بالدرجة الأكبر. خذ Twitter على سبيل المثال, صدقني في weekend يمكنك بناء خدمة "مشابهة" أو حتى يمكنك نسخها 100%, لماذا سيستمر الناس في استخدام twitter و لا يلتفتون لغيره؟ لماذا نجح SO, هل بسبب الخدمة نفسها؟ الذي يجب أن يفهم, أن سؤالك من الأساس خاطئ لأن النجاح لايمكن أن يقلد حتى و إن تم تقليد الخدمة نفسها.
  13. ما هو سبب عدم انتشار لغة بايثون ؟

    هل تتفضل و تخبرنا ماهي اللغات المستخدمة في برمجة البرامج المستخدمة على جهازك؟ هذه قائمة بالتي لدي, و العلم عند الله معظمها مبرمج بـ ++C و ربما بالاستعانة ببعض مكتبات C: utorrentadobe reader ie 7zip avg fdm visual studio & included compilers firefox np++ vlc vmware استعمل أيضاً برنامج paint.net و هو مبرمج بـ net. و لا تنسى أن البرامج التي في الأعلى لا تستخدم شيء اسمه لغة برمجة نقية لأن النقاء جميل! adobe reader تستخدم فيه لغة خاصة بـ adobe لبناء الواجهات و ربطها مع الـ core, إضافة إلى أن visual studio به الكثير من المكملات بلغات أخرى غير ++C, و firefox يستخدم لغة scripting خاصة به و هكذا. إذا كنت تعتقد أن استعمالات لغات البرمجة تقتصر على برامج سطح المكتب, فاسمح لي أن أقول لك راجع معلوماتك. بايثون لغة جميلة جداً, و عملية. معظم مبرمجي ++C الكبار يصفون استخدامهم لبايثون بالعبارة التالية: python where I can, C++ where I have to!
  14. @GM كلامك صحيح بالفعل نظراً للأسئلة التي في النقاش, و لكن أحب أن أضيف أننا يجب أن نعرف(تشديد الراء!) معنى تحرير الذاكرة أولاً. في C, كلامك لا غبار عليه. بينما في ++C, هناك خطوتان واحدة بعد حجز الذاكرة, و واحدة قبل تحريرها real allocation & deallocation. بعد حجز الذاكرة, يتم استدعاء الـ constructor. و قبل تحرير الذاكرة يتم استدعاء الـ destructor. في ++C لا يتم الحديث عن تحرير الذاكرة على أنه الـ deallocation و لكن عن العملية كلها من استدعاء الـ destructor إلى تحرير الذاكرة. لهذا, delete operator لا يمكن عمل overloading كامل له. و إنما يحق لك عمل overloading لعملية الـ deallocation فقط, و أما استدعاء الـ destructor فسيتم استدعاءه دائماً قبل delete. لهذا أيضاً, يمكن أن يقال أن المتغيرات يتم تحريرها بعد الخروج من الـ scope مباشرة في حالة المتغيرات الـ automatic و لكن عملية التحرير نفسها تختلف باختلاف الـ storage specifie automatic, static, dynamic, extern or register تحياتي...
  15. و عليكم السلام, من من القوائم الرئيسية, اختر Tools, ثم Options ثم قم بتوسيع Text Editor ثم اختر All Languages ثم في قسم Display قم بعمل check لـ Line numbers.
  16. برمجة مترجم و نظام تشغيل معا

    استطعت اختصار الموضوع و شرحه أفضل مني يا أخ محمد :lol:
  17. و عليكم السلام و رحمة الله و بركاته, أسهل طريقة برأيي هي أن تقوم باستخدام مترجم مثل GCC, بحيث يكون موجود على السيرفر. ثم تقوم باستخدام لغة كـ php, و معظم تقنيات الويب توفر لك طريقة لتنفيذ برامج على السيرفر. أعتقد أنها تسمى exec في php. كل ما عليك هو استدعاء GCC كما تستدعيه باستخدام shell. سينتج لك المترجم رسالة إذا كان هناك أخطاء و هل تمت العملية بسلام, و سينتج لك ملف تنفيذي في الحالة الثانية. كل ما عليك هو تنفيذ البرنامج بنفس طريقة استدعاء المترجم, و أخذ الناتج و عرضه هو الآخر. تحياتي...
  18. رغم أني لا أستطيع الجزم بشيء من خلال قصاصة الكود التي وضعتها, إلا أن المشكلة حسب اعتقادي هي أنك تستخدم realloc لعمل exapand لمؤشر لا يشير إلى ذاكرة محجوزة لبرنامجك أصلاً, و قيمته لا تساوي NULL. فحسب قولك: لا أفهم لماذا لايعيد مؤشر جديد ل buffer رغم أني أقوم بتحرير الذاكرة كل دورة في while. لا أدري ماهي الحاجة إلى استخدام realloc في هذه الحالة, إن كنت تحرر الذاكرة في كل دورة. قم باستخدام malloc, و هذا كل شيء. الحل الآخر هو أن تقوم بإسناد NULL للمؤشر, حتى تعامله realloc مثل malloc أي تقوم بحجز ذاكرة جديدة, و لكن هذا الحل طريق طويل و الطريقة الأفضل هي استخدام malloc من الأساس.
  19. برمجة مترجم و نظام تشغيل معا

    أهلاً محمد, حتى يكون الكلام واضحاً, معلوماتي ضحلة في المجال و لكن مالدي لا أكثر و لا أقل :) بمعنى, أنك لو كنت تعمل على embedded system فأنت لن تحتاج إلى مترجم يعمل على المنصة نفسها. لأن المنصة ربما تقوم بتشغيل ساعة يد, و في هذه الحالة المنصة ليست معدة للتطوير عليها أصلاً(هناك تفاصيل كثيرة عن كيفية القيام بـ remote-debugging). و لكن في حالة نظام كـ linux, فالأمر مختلف لأنك تحتاج إلى أن تطور برامجك على النظام نفسه في أغلب الأحوال. لذلك بمجرد استقرار النظام و صلاحيته و اكتمال أجزاءه, تقوم بترجمة source code المترجم باستخدام نفس المترجم. بالطبع لابد أن تكون كتبت المترجم نفسه بلغة portable كلغة C و و لا تنسى كتابة loader لنظام تشغيلك! عندما ترجمنا المترجم نفسه, نتج لنا object files هذه الـ object files يمكن أن نقوم بتحويلها إلى الـ format الخاص بالـ loader الذي يعمل في نظامك إما يدوياً أو عن طريق cross-linker! بمجرد حصولنا على نسخة تعمل من المترجم و الـ linker على النظام الجديد, أصبح بإمكاننا الترجمة و الربط على النظام نفسه. نقاش جميل, تحياتي...
  20. برمجة مترجم و نظام تشغيل معا

    بداية, يقوم صناع نظام التشغيل بكتابة النواة على أي نظام تشغيل باستخدام مترجم معين. يقومون بترجمة النواة cross-compile لمنصة معينة. هذه هي الفكرة ببساطة. النواة نفسها يمكن أن تحتوي على kernel memory manager و جميع الاحتياجات الضرورية لعمل abstractions في النواة نفسها. ستجد مثلاً أن معظم دوال مكتبة C القياسية موجودة في Linux kernel. القضية أنه يجب أن تملك مترجم يستطيع ترجمة الـ source code للمنصة التي تريد النواة أن تعمل عليها. عندما تستقر النواة, تقوم بعمل ترجمة cross-compile "للمترجم نفسه". لا تقم بالخلط بين عملية الترجمة و الربط. عملية الترجمة هي عملية إنتاج كود. هذا الكود بعد ذلك يمكن أن تقوم بعمل إطار له ليعمل في أي بيئة أي نظام تشغيل(بالطبع الكود مترجم لمعالج معين فقط). خلال عملية الربط, يمكن على سبيل المثال, أن تقوم بعمل format للـ executable format لكي يقوم الـ loader بقبول البرنامج. لاحظ أن المترجم الذي تمت عمل cross-compile له سيتم عمل linking له حسب شروط النظام الجديد. بمجرد حصولك على أول نسخة مترجمة من المترجم على النواة, يمكن بعد ذلك التطوير على النظام. تحياتي...
  21. يا جماعة مالي أراكم تتحدثون عن Photoshop و كأنه helloworld الويب؟! أعتقد أن المقصود هو تسهيل بناء برامج الـ desktop على الويب. و إلا للمعلومية الـ core الخاص بـ Photoshop أبهر Stroustrup نفسه و قال بأنه من أفضل التصاميم و جودة الـ Implementation التي رآها في حياته. و حسب معلوماتي لم يقل عن كود تابع لشركة تجارية أبداً غير Photoshop! لذلك رفقاً بـ js فهي ليست ما يمنعنا من بناء Photoshop على الويب!
  22. بسيطة, جرب كتابة برنامج معقول مكون من ألف سطر أو أكثر و قم بإعادة كتابته باستخدام لغة scripting. و أعطنا نتائجك. قضية كون javascript بطيئة يرجع لكون الـ implementations بطيئة. بالطبع مبرمج C محترف لن يقارعه أحد في السرعة, و لكن الكلام هنا بشكل عام. أخيراً, ما أود أن أقوله, هو أن التقنيات التي تم ذكرها تتميز بسرعة التطور و لكن سرعة التطور ليست أهم ميزة و لا ثاني أهم ميزة و لا ثالث أهم ميزة. ربما تكون ميزة من الميزات في القائمة, و لكن في النهاية الجميع يبحث عن لغة يتم الاتفاق عليها. أن لا تكون مملوكة لأحد, و أن يكون هناك implementations تعمل في كل مكان هو الأهم. تحياتي...
  23. برأيي الشخصي, javascript أفضل من اللغات المذكورة كبديل عنها للأسباب التالية: 1) هي لغة قياسية بكل ما تحمله الكلمة من معنى. 2) هناك بلايين الصفحات التي تستخدمها. و تغييرها يعني تغيير تلك الصفحات و هذا غير ممكن عملياً. 3) هناك خبرات متراكمة لدى المبرمجين حول العالم في كيفية استخدامها بفعالية و استخدام نقاط القوة و التحايل على نقاط الضعف. باختصار هناك الملايين ممن يبرمجون بها, و استبدالها يعني عملية تعلم جديدة لملايين البشر. 4) هي لغة dynamic و هذا يعطيها مرونة كبيرة جداً في الإيجاز و التعبير. هي لغة weakly typed أيضاً, و لكن لا تعليق لدي على كون هذه نقطة ضعف أو قوة في مثل الـ platform التي تعمل عليه. 5) هي لغة قوية من ناحية الخصائص, و تم تطويرها. قد لا أستسيغ طريقة استخدام بعض الخصائص, و لكن بكل تأكيد لأنني لم اعتد على التفكير من خلال javascript و تفكيري ينطلق من ++C. الانطباعات الأولية المبنية على تجارب سابقة قد توهمنا بضعف أو قوة غير حقيقيين. فأولاً, لا أحد يملكها. و ببساطة قد سلكت مسلك اللغات "السرمدية" :P مثلها مثل C و Frotran و البعض الآخر. ليس هناك من يملك javascript, و ستضمن دائماً أنه لن يعكر تفكيرك القضايا القانونية المتعلقة بالبرمجيات. هذا بكل بساطة يعني أن javascript ستبقى مدعومة لأجل طويل من أطراف عدة كحل وسط. ثانياً, هي تعمل و بكفاءة! و هناك مقولة: why fix what ain't broken؟ ثالثاً, الويب الذي نعرفه اليوم, ليس نفسه الذي عرفناه أول مرة. أخبرني كم إصداراً صدر للغة Java منذ تعلمنا البرمجة؟ هل هناك أمل أن تظهر Java 7؟ سنين مضت و لا شيء جديد! بينما js تستخدم حالياً بشكل أكبر مما كان و بطرق جديدة, و هذا يعني أن استخدامها تطور. رابعاً, ربما تكون التطبيقات المكتوبة بـ Java أو ++C تقاس بملايين الأسطر, و لكن كمية الأسطر التي تحتاجها في javascript ستكون تقسيم 10. يعني كل سطر في javascript يمكن أن يقوم مقام 10 أسطر من الـ verbosity! لماذا احتجنا إلى class اسمه MainListener و ورث HtmlListener! لماذا تريد إحضار كل تلك الرتوش التي لا فائدة منها؟ خامساً, javascript فيها مميزات عديدة! و كثير منها لا يتوفر في لغة كـ Java: prototype OOP, كما كانت SmallTalk. تكلمت في بداية ال Dynamic Typing و ال Static Typing في سطور! عن الـ prototype OOP. إضافة إلى ذلك فهي تدعم الـ functional paradigm بشكل جميل. المشكلة أن مفهوم الـ listener هو ترقيع لعدم وجود lambda و closures و كون الدوال متغيرات كباقي المتغيرات! عموماً, أختلف معك في استبدال java أو غيرها بـ javascript.
  24. مساعدة لو سمحتوا

    لهذا يمنعون الـ tabs في الـ style guides الخاصة بـ ++C, و يفرضون استعمال المسافات.
  25. لا أعتقد بأي حال من الأحوال أن طبقة العرض هي المهمة في الويب. في الحقيقة إنها نقطة ضعف الويب الكبرى. لو كنت أريد برنامجاً يقدم أكثر واجهات التشغيل تقدماً لكان Desktop Application بدلاً من كتابته للويب.