• الإعلانات

    • فيصل الحربي

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

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

Khaled Alshaya

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

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

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

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

  1. بصراحة أدرت مشروعاً واحداً عليه القيمة :S المشروع كان معظمه في الإلكترونيات و جزء صغير فقط برمجة embedded systems. الفريق كان عبارة عن عشرة أشخاص, تسعة أشخاص للإلكترونيات واحد منهم فقط لديه خبرة بسيطة في البرمجة و أنا المبرمج الوحيد و المدير الفاشل أيضاً! ببساطة كان المشروع يسير إلى الفشل لولا توفيق الله عز وجل, إضافة إلى التعديلات التالية في طريقة إدارة المشروع: أولاً, كنت أتدخل في عمل المجموعات, و أوزع المهام بحيث تعرف كل مجموعة ماهو مطلوب منها و تحت إشرافي نقوم بعملية الـ Integration. في البداية كان هذا ناجحاً ثم تحول الأمر إلى جحيم عندما زاد حجم المشروع و أصبحت المهام أكثر تفصيلاً, و أصبح هناك متطلبات لم نأخذها في الحسبان. بمجرد أن أصبحت مجرد منسق يقوم بالتنسيق و مناقشة العمل و القرار الأخير يعود للمجموعة أو الشخص المسؤول عن المجموعة أصبحنا نرى جودة في الإنتاج. و غالباً ما كانت قرارات المجموعات في الاتجاه الصحيح بعد الدخول في نقاش يأخذون منه الملاحظات و يردون على الملاحظات الموجهة إليهم, و لكن لم يعد هناك قبول و رفض لعملهم مادام يعطي النتيجة المطلوبة. وجود شخص مسؤول عن عملية الـ Integration بحيث يعرف الفكرة العامة من البرنامج و المتطلبات و يقارن بينها و عمل النظام. كنا نقوم بعمل اجتماعات اسبوعية لعمل Integration و أحياناً تفشل و أحياناً تنجح و لكنها كانت تأخذ وقتاً طويلاً. و الأسوأ أنه في بعض الأحيان كانت بعض المجموعات تنتهي في يومين أو ثلاثة من المهمة الأسبوعية و بعض الفرق ينتهي بها الأسبوع دون إنتاج المطلوب. عندما أصبح لدينا Integrator أصبحنا نقوم بعمل نظام Helpers للمجموعات المتأخرة بحيث يدخل معهم لإنجاز المهام الجانبية دونه التدخل في عمل المجموعة الرئيسي. بحيث أن الـ Integrator مسؤول عن تكامل النظام في أي وقت بينما مهمتي كمنسق الجري بين المجموعات لمعرفة التطورات و توضيح المهام الجديدة المتفق عليها في الاجتماعات كجسر بين المجموعات. و أصبحت اجتماعاتنا الدورية تنتج خططاً للأسبوع القادم بعد أن كنا نغرق في متاهات تجربة النظام بشكل كامل بحيث نستمر في العمل دون وضوح في مهمات الأسبوع القادم! تحياتي...
  2. النوعين int128 و uint128

    جمييييييييييييييييل ;) رجاءً قم بإزالة دوال min/max من الفئة, و بدلاً من ذلك قم بعمل specialization لـ numeric_limits. أنا في طور الاطلاع عليها و لكن عمل جميل بلا شك. هناك بعض الملاحظات في الـ Implementation سأعقب عليها عندما أنتهي من قراءة الكود. تحياتي...
  3. يا أخي من قال لك أن هناك لغة أسرع من لغة؟! المقارنات تتم بين implementations مختلفة لنفس اللغة, و إلا كأنك تقول هل القطار أسرع أم أن العصا أطول! أو على أقل تقدير بين implementations للغات مختلفة ببرامج متشابهة, رغم اعتقادي الجازم بأنها مقارنات غير دقيقة دائماً و أبداً. ابحث عن JVM المخصصة للعمل على الـ servers و سترى أن برامج Java يمكنها العمل بالسرعة القصوى, إلا أن استهلاكها للذاكرة يزيد بشكل ملحوظ.
  4. ماهو تعقيد هذه الخوارزمية

    عزيزي ببساطة تحاول تلخيص الخوارزمية إلى الجزء المؤثر. بمعنى لو نظرنا إلى الخوارزمية التي تطرحها فالجزء المؤثر هو الحلقة. هذه الحلقة تعتمد على متغير واحد هو n. و عملية الوصول إلى شرط الخروج من الحلقة أو سمها ما شئت reduction أو دون تسمية هو وصول المتغير إلى القيمة صفر. و هناك عبارة داخل الحلقة تقوم بعملية الـ reduction و هي القسمة على اثنين. بالتالي, فإنك يمكن أن تنظر إلى الأمر على أنه عدد يقسم على اثنين في كل مرة, بالتالي فإن تعقيد الخوارزمية log n. مثلاً لو كانت n عبارة عن 128 فإننا نحتاج إلى ثمان عمليات قسمة على اثنين للوصول إلى الصفر.
  5. الشمري متأثر بـ C/Cpp :lol:
  6. جميل, قم بنقل ملفات المشروع إلى Windows و قم بترجمة المشروع من خلال أحد المترجمات التي تفضلها. حاول قراءة ملاحظات الترجمة للمكتبات لأخذ فكرة على الأقل إن كان هناك أي مشكلة رغم أني لا أرى مبدئياً لأن كلا المكتبتين يمكن ترجمتهما على Windows أيضاً. إن احتجت للمساعدة ستجدها بإذن الله و لكن اطرح أين واجهت المشاكل. تحياتي...
  7. أوجد نتيجة العمليه الحسابيه

    كلامك صحيح أخ محمد, المعاملات التي تم إعادة تعريفها عبارة عن دوال بالتالي ليست هناك undefined behavior :S سأحاول حل المسألة بإذن الله, مسألة جميلة أخي كالعادة. تحياتي...
  8. إذا كنت فهمت سؤالك بشكل صحيح, فأنت تريد ترجمة برنامج مكتوب على Linux لكي يعمل على Windows أيضاً. هل استخدمت مكتبات غير المكتبات القياسية؟ إذا كانت الإجابة بنعم فماهي تلك المكتبات لكي نبحث الاحتمالية, و إذا كانت الإجابة بلا, فالترجمة بدون مشاكل على Windows, هناك عدة مترجمات لنظام Windows يمكنك استخدام أحدها بكل بساطة.
  9. مع احترامي أخي محمد يجب أن تصارع الديناصورات أولاً لكي تكتب عن أنظمة التشغيل. و لا تعتقد أن أمزح بكلمة الديناصورات لو أنك قرأت عن أنظمة التشغيل بشكل علمي لعلمت ماذا أقصد :)
  10. أوجد نتيجة العمليه الحسابيه

    أخ محمد, أليس تعديل متغير أكثر من مرة دون وجود sequence points تفصل بين عمليات التعديل عملية غير معرفة undefined؟
  11. أخ mental-driller, بالمثال يتضح المقال بدلاً من التعميم. تصور أنك تقوم بكتابة Data Structure معينة, و تريد توفير Iterators لهيكل البيانات الذي تقوم ببنائه. الدوال التي سيحتاجها الـ Iterator ستكون دوالاً يجب أن لا تسمح لأحد غير الـ Iterator بالوصول إليها و هذا منطقي و إلا ما الحاجة إلا الـ Iterator أصلاً؟ إما أن تكون تلك الدوال public في واجهة الكائن الأصلية و إما أن تكون private. إذا كانت private لا يمكن لأحد الوصول إليها من خارج الكائن, و إذا كانت public فأنت تصدر دوالاً عبارة عن helpers في واجهة الكائن و تكسر الـ encapsulation. ماذا لو كان هناك friend class تستطيع الوصول إلى هذه الدوال دون أن تكون في واجهة الـ data structure التي نقوم ببنائها؟ فكر في هذا المثال. المقارنة بين internal و friend غير دقيقة. لأن friend تحدد بالضبط من سيصل إلى الكائن بينما internal تفتح الطريق أمام من يريد. لذلك لا داعي لخوض الخلاف في هذا الأمر. ملاحظة بسيطة, و هي أنه يمكن أن يحتج على على استخدام friend باستخدام inner classes بدلاً من ذلك, و هذه مشاكلها لا تنتهي بالمناسبة :) أدع لك القراءة في ورقة ممتعة من Stroustrup تنطبق على ++C و #C في نفس الوقت: Minimizing Dependencies within Generic Classes for Faster and Smaller Programs ملاحظة إضافية: و من قال أن الخلط بين الأساليب يؤدي دائماً إلى كود سيء؟ :lol: إضافة أخرى, هذه الأسئلة التي تتعلق بـ friend في SO, استمتع: http://stackoverflow.com/questions/tagged/c%2b%2b%20friend تحياتي...
  12. عزيزي لا تعتمد على المقارنات الموجودة على الويب لبناء آرائك حول إمكانات معينة لـ ++C. قولك بأنها تكسر الـ encapsulation يعني أنك لا تفهم وظيفة friend, لأنها في الحقيقة تقوي الـ encapsulation, و ليس هذا الموضوع مجالاً لنقاش هذه النقطة و لكن أحببت أن أستفسر عن رأيك و كما يبدو أنه نفس الكلام الموجود في مواقع كثيرة دون وعي عن ماهية الـ friend functions & classes. تحياتي...
  13. ماهي وظيفة friend برأيك, و مالفائدة من وضعها في ++C, و الأهم كيف تفتح الطريق أما كتابة كود سيء؟
  14. أخ mental-driller, أعرف كتاب Rosen من الجلدة للجلدة و حللت ما يقارب الـ 90% من مسائله, و لكن TAOCP يتطلب أكثر من ذلك بكثيييييييييييييييييييييييييييييييييييييييييييييييييييييييييير صدقني.
  15. للأخ الذي يسأل كيف يجد الكتاب أقول له لا تتعب نفسك أصلاً. الكتاب ليس guide من أبو 24 ساعة, أو تعلم البرمجة و أنت نائم. أقول لك أني قضيت 3 شهور في عشر صفحات و لم أفهمها كاملة. و نسيت أن أقول أني لم أتجرأ على فهم إثباتات الخوارزميات. لا أدري ربما طريقتي في دراسة الكتاب خاطئة و لكني مستغرب كيف أن البعض استطاع قراءة أجزاء كبيرة من الكتاب, هل لنا بطريقة دراستكم للكتاب من فضلكم؟ بالعربي الفصيح, لا تحاول قراءة الكتاب لأنه موجه لفئة معينة هي باحث أو طلاب الدراسات العليا الذين يريدون الحصول على المعلومة من مصدر لا يشك فيه أما التعلم منه فهو شبه مستحيل برأيي لأن كل كلمة فيه محسوبة بدقة.
  16. و الله عن نفسي قرأت الفصل المتعلق بالـ Arbitrary Precision Math, عبارة عن 10 صفحات تقريباً استغرق الأمر أكثر من ثلاثة أشهر مع استشارة أكثر من دكتور في بعض المسائل و لم أستطع فهم الموضوع بشكل كامل. عموماً في النهاية ستكتشف أنك تحتاج إلى أن تكون قد شبعت حتى التخمة من الرياضيات البحتة و المتقطعة - و ستراه يدخل الرياضيات المتصلة بالمتقطعة! - حتى يصح أن تمسك الكتاب بيديك دع عنك القراءة فيه! لذلك عندما تقول بأنك قرأته يجب أن تحل المسائل في آخر كل فصل :) و ليس مجرد مسك الكتاب و تصفحه. إضافة بسيطة, أكره استخدام Knuth لآلته الافتراضية, لو أنه كتب الخوارزميات بلغة C لسهل الأمر على القراء بشكل كبير :( و +1 للأخ mental-driller, و لكن Concrete Math هو كتاب لطلاب الدراسات العليا فما بالك بـ TAOCP!!! تحياتي...
  17. Type Conversion

    أهلاً أخ محمد, الأسئلة التي تضعها تجعل أي شخص يعيد التفكير في ما يقوله مرتين قبل أن يصل إلى نتيجة :P أفضل شيء هو الترجمة بأعلى مستوى تحذير مع إبطال أي extensions يقدمها VC: /Wall و Za/
  18. Type Conversion

    عزيزي محمد, بالنسبة للمتغيرات المؤقتة في مثالك, فإن حياتها تنتهي بمجرد الخروج من الـ Initialization, راجع 12.2 و على فرض أننا لم نستخدم متغيرات مؤقتة كما في مثالك, فإن الموضوع الذي أشرت إليه سابقاً ينطبق على سؤالك. لا أدري لماذا فهمت أن الموضوع ينطبق على char فقط, بينما كان مثالاً على المشكلة في الوثائق و لكنه ينطبق على المؤشرات حيث درجة الـ indirection عبارة عن 2 أو أكثر. تحياتي...
  19. ما الفرق بين التطابق و التساوى

    مشاركات أستاذنا ياسر ذهبية :)
  20. Type Conversion

    السلام عليكم ... بصراحة السؤال صعب و حيرني, و لكن هذا ما عندي. أولاً بالنسبة للسطر التالي: Number* n[] = { &Number(2), &Number(3), &Number(5), &Number(7) }; n عبارة عن مصفوفة مؤشرات, قمت بتهيئتها بعنواين متغيرات مؤقتة, هل هذا يصح أصلاً؟ ثانياً, أذكر أننا تكلمنا في موضوع الـ Aliasing هذا مرة سابقة: ال Overloading و ال Type Checking
  21. عزيزي PWCT Maker, حسب السياق يتضح المعنى. كلمة Translator متداولة أكثر عند الحديث عن الناحية النظرية سواء كان ذلك الـ Translator عبارة FSM أو Automaton أو حتى Turing Machine بعظمتها! عندما يكون الحديث على التطبيق يطلق عليه Compiler. و لكن كما قلت سابقاً كلمة Translator عامة أكثر من Compiler, بينما الأخيرة انحصر استخدامها في معنى واحد. الـ Syntax Analysis ماهي إلا عملية الـ Deriving. يعني أنك ستبني الـ Parsing Tree, و لاحظ أن الشجرة هنا المقصود بها الشجرة نظرياً. كون الـ Translator يقوم بعمل Backtracking في حالة وجود خطأ فهذا ليس مهماً من الناحية النظرية لسبب بسيط. أنك عندما تقوم بكتابة القواعد فإن أي خطأ يعني أن الـ machine انتقلت للـ halt state. بمعنى آخر أن أي خطأ يوقف عملية الترجمة كلها. في الحياة العملية هذا يجعل العمل مع المترجم مستحيلاً, لذلك لابد من تحديد سبب الخطأ(التحديد بشكل مطلق غير ممكن, و لكن المترجم يقدم اقتراحات من خلال توقعات). إضافة إلى ذلك فإنه يفترض إحدى تلك التوقعات و يسير في عملية الترجمة حتى يواجه خطأ آخر, و يحاول افتراض أن المبرمج يقصد قاعدة محددة. و بذلك تحصل على قائمة من الأخطاء بدلاً من ترجمة الكود من جديد عند حصول أي خطأ. تحياتي,
  22. ماهو الكتاب الذي تنصح به حضرتك, و هل جربت تعلم أنظمة التشغيل من خلال Minix3 حقاً؟! لن أعطيك رأيي في الدخول من خلاله لهذا العالم و لكن أول سطرين في الموقع يشرحون لمن يوجه النظام: What Is MINIX 3? MINIX 3 is a new open-source operating system designed to be highly reliable, flexible, and secure. It is loosely based somewhat on previous versions of MINIX, but is fundamentally different in many key ways. MINIX 1 and 2 were intended as teaching tools; MINIX 3 adds the new goal of being usable as a serious system on resource-limited and embedded computers and for applications requiring high reliability
  23. هل بالفعل خلطت بين fd32 و مواصفات النظام الذي تقترحونه في Arab-OS؟ آسف لهذا الأمر.
  24. ستحتاج إلى المزيد من العتاد لأنك تضيف طبقة إضافية.
  25. أعتقد أن استخدام لغة C سيكون أفضل لأنه سيكون لديك Standard ABI على كل منصة. ++C ممتازة جداً في استيعاب أي ABI و لكنها الأسوأ في التصدير لأنه ليس هناك ABI موحدة بأي شكل من الأشكال! إذا كنت مصراً على استخدام ++C فستحتاج للقيام بتصدير C-Interface و هذا ممكن عمله بـ ++C, و لكن لا ليس هناك داع لهذا الأمر من الأساس برأيي. ابحث عن مكتبة C جاهزة و قم بتعديلها لتلائم API نظامك, و انس فكرة مكتبة ++C. مكتبة C ليست لعبة لكي تدرجها تحت بند فرعي, هي مشروع قائم بذاته. تحياتي...