• الإعلانات

    • فيصل الحربي

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

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

Khaled Alshaya

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

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

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

مشاركه بواسطة Khaled Alshaya


  1. السلام عليكم ...

    أود سماع أفكاركم حول مشاريع صغيرة على منصة CUDA. هل لدى أحدكم فكرة معينة يود رؤيتها تطبق في العالم المتوازي و العالم المتتالي مع مقارنة بسيطة؟

    الفكرة التي سأطبقها إن شاء الله, إن لم يكن هناك فكرة أكثر فائدة :sad: هي إيجاد الـ Transitive Closure لـ Undirected Graph(و Directed Graph بالمحصلة). هذه ستتضمن العديد من الأجزاء الجيدة و السهلة التطبيق, إضافة إلى أنها أكثر من مناسبة للعمل بشكل متوازي. إضافة إلى ذلك, سأقوم بمقارنة أداء النسخة المكتوبة على CUDA بنسخة مكتوبة بـ Standard Cpp و ربما بنسخة أخرى مكتبة بـ Boost.uBlas! الهدف هو التعرف على CUDA لا أكثر, و هذه مسألة يسهل كتابة برنامج متوازي لحلها. ربما أقوم بكتابة نسخة منقحة مثلاً ليكون رفع المصفوفات لأس ما باستخدام exponentiation by squaring أو ربما أتهور أكثر و أقوم بكتابة addition chain exponentiation و لكن لا أدري حقيقة إن كنت سأصل إلى هذه النقطة, ادعوا لنا بالتوفيق في تعلم CUDA :)

    فائدة المشروع تكمن في أننا يمكن أن نستخدم الفكرة في التالي: تصور أن لدينا الأعضاء في الفريق العربي للبرمجة, و مع كل عضو لدينا قائمة بأصدقائه. نريد أن نقسم الأعضاء إلى disjoint subsets بحيث أن الأعضاء في أي مجموعة أصدقاء مباشرين أو غير مباشرين(صديق صديقك هو صديقك, و صديق صديق صديقك هو صديقك و هلم جرا). ببساطة, أي عضو في أي مجموعة ليس هناك علاقة مباشرة أو غير مباشرة بينه و بين أي عضو في أي مجموعة أخرى. يمكن أن يكون نظام للدعايات في الموقع, أو خلافه ربما من يستفيد من هكذا تحليل. عموماً هذه هي الفكرة!

    تحياتي...

    0

  2. ملاحظة: ما الذي يجعلك متأكد أخي خالد من كون الأخ .S.T.A.L.K.E.R لديه Private IP على الانترنت؟

    هل يعطى IP مباشر للمستخدمين في المنازل؟ كنت أعتقد أن المستخدمين العاديين دائماً يقبعون خلف NAT لمزود الخدمة :S

    شكراً على التوضيح :)

    0

  3. ماذا تقصد بخطأ في الـ NAT System أخ خالد؟

    يعني الموقع المعاد كان من المفرض أن يتم عمل forward له من مزود الخدمة إلى IP جهاز آخر, و لكن فشل Network Address Translation System في هذه الحالة. مجرد فكرة لا أكثر, لأنه حصل في الجامعة لدينا مرة أن النظام تحت الضغط الشديد لخبط الدنيا و السبب حسب ما فهمت أن الـ Table الذي يستخدمه النظام لا يحتوي على معلومات كافية ليكون deterministic! أنا متأكد بأن الأخ .S.T.A.L.K.E.R ليس لديه IP مباشر و إنما Private IP. عموماً, نحتاج من خبراء الشبكات في المنتدى أن يشرحوا لنا الأمر :huh:

    0

  4. و عليكم السلام,

    كون اللغة case-sensitive أم لا هو قرار لا يؤثر في اللغة بأي شكل من الأشكال برأيي, لأنه يتبع تفضيل منشأ اللغة نفسها. حتى من ناحية سرعة الـ Implementation فإن ذلك لا يذكر, مجرد insensitive comparison في مرحلة الـ Lexical Parsing!

    أما كون المصفوفة تبدأ من صفر أم من واحد, فإن القرار مهم. في البداية كان الجميع يعتقد أن هذا الأمر يتبع تفضيل صاحب اللغة, و لكن Dijkstra له رأي آخر: Why numbering should start at zero

    0

  5. أظن أن الموقع تعرض لـ Spoofing attack في تلك اللحظة, ﻷن الصورة توضح أن الدومين مضاف على السيرفر الذي تم التحويل عليه

    فالتحويل إلى هذا السيرفر كان مقصوداً

    لا أعتقد ذلك أخ محمد. لسبب بسيط, أن الموقع عبارة عن الـ index الذي يوفره الـ web server بشكل افتراضي, ألا يجب أن يكون هناك code لاستغلال ثغرة في المتصفح لكي يتم استغلالها و تغيير العنوان دون الذهاب إليه؟ إضافة إلى ذلك أنه ليس هناك شيء يدل على أنه الموقع الذي جلبه المتصفح هو Hotmail إلا معلومات الـ DNS نفسها. إضافة إلى ذلك, لم يتكرر الأمر. بالتالي فإن DNS Cache Poisoning هو على الأغلب السبب.

    1

  6. اذا الذي ارجع هذه الصفحة شركة الانترنت المشترك فيها؟

    ليس الصفحة نفسها. عندما أرسلت طلب للحصول على الصفحة أرسل المتصفح طلب لتحويل الـ URL إلى عنوان IP لكي يقوم بالاتصال به على المنفذ 80. الـ IP المعاد خاطئ, و قام المتصفح بطلب الـ IP على المنفذ 80 فحصل على الرد!

    0

  7. لا أدري و لكن من المستحيل أن يكون هذا هو الـ root الخاص بـ Hotmail! ماهذه الملفات أصلاً, و يبدو أن صاحبه يقوم بقص و لصق المجلدات دون إزالة الملفات غير المطلوبة مثل Thumbs.db الذي يستخدمه سطح المكتب في Windows :lol:

    اتوقع انها مشكلة في DNS لا اكثر

    +1 لأنه لو تأكدنا أن الـ IP هو أحد الـ IPs المستخدمة لـ Hotmail لكان الأمر مريباً, و لكن من الواضح فعلاً أن هناك مشكلة في الـ DNS.

    1

  8. بس بصراحة انا شايف انه الرابح الاكبر هم مبرمجي الـ C++ واتصور انه وندوز ثمانية اكبر مصالحة من ميكروسوفت لهم.

    للأسف كنت أتمنى أن يكون ذلك صحيحاً. الذي يحصل هو العكس, هو أن هناك غضب عارم على الطريقة التي يدار بها مستقبل cl(مترجم ++C الخاص بـ Microsoft) و كافة المشاريع المتعلقة بـ ++C. في خلال سنة تقريباً, أعتقد أن gcc و clang سوف يكونان في مقدمة المترجمات التي تدعم 11++C رسمياً. بدلاً من أن تقوم Microsoft بدعم لغة ++C, قامت بإنشاء WinRT الذي هو Framework خاص مع extensions للغة في منتصف الطريق! لا أدري مالذي يفكر فيه مدراء Microsoft و لكن هذا القرار خاطئ تماماً برأي الغالبية الساحقة(على الأقل مما ينشر في العالم الافتراضي!). انظر مثلاً إلى الردود في موضوع VC vNext:

    http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx

    إما أن الأمر غير مقصود و هذه مصيبة, أو أن يكون الأمر مقصوداً و تلك مصيبة أكبر. محاولة جر مبرمجي ++C إلى عالم الـ extensions لم يعد يجدي نفعاً! و COM-Like أخرى من خلال الـ reflection الخاصة بـ NET. في ++C؟!! بصراحة لا أفهم سبب هذا التوجه من Microsoft, سوى أنها تترنح بالضربة القاضية و تحاول حصر المستخدمين في منتجاتها, بينما يمكنهم كتابة كود يعمل في كل مكان من خلال مكتبات متوفرة منذ عشرات السنين! المشكلة أن gcc و clang يمكنك تحميلهما مجاناً! و أداؤهم أفضل, و لكن مايحزنني هو أني سأفتقد الـ IDE. هذا هو الشيء الوحيد الذي أفتقده في VS, أما المترجم فإلى سلة المهملات بصراحة.

    0

  9. وها انا اليوم اعود الى C القياسية وابرمج بها لادرك مدى الفرق ..وهي انني اكتب برنامج حقيقي من الصفر .. ويعتمد على الشروط والحلقات وما توفره اللغه التي ظهرت للعالم قبل 40 سنة ..

    لست هنا ضد البرمجة الكائنية .. بالعكس هي التي غيرت اتجاه البرمجة ..ولكن انا صراحة ضد البرمجة الكائنية الجاهزة التي تجعل المبرمج حافظا للكود وليس مبرمجا له ..

    أخ سنان, أختلف معك لأن Microsoft أو غيرها عندما تطرح إضافة للـ Framework فهي تفترض أن لديك المعرفة بكيفية استعمال تلك الإضافة. بمعنى أن Microsoft ليس هدفها تقديم prototype للـ Multitasking لكي يتعلم المبرمجون من خلاله. هي تطرح حلول للمبرمجين الذي يودون اختصار الطريق, من خلال مكتبات مكتوبة باحترافية. صدقني, موضوع البرمجة اليوم أصبح توفر المكتبات من عدم توفرها. المبرمج الحقيقي هو الذي يستطيع استغلال المكتبات من خلال معرفته بالـ domain الذي تنتمي إليه تلك المكتبات.

    2

  10. أشكرك أخي.. لكن أتوقع أن يؤخذ هذا التعديل بعين الاعتبار

    الشكل الذي تقترحه كان يستخدم في المشرق الإسلامي, و الشكل الذي تستخدمه اللغة الانجليزية حالياً كان يستخدم في المغرب الإسلامي. كلاهما من تطوير المسلمين.

    1

  11. لا والله يا أخ محمد المشكلة في Microsoft نفسها. شخص واحد يعمل على المكتبة القياسية لـ ++C, و التي ليست أصلاً من صناعة Microsoft بل مرخصة من شركة أخرى. ميزات المترجم و المكتبة القياسية ليست متعلقة بشكل كبير بالـ IDE. كل ما في الأمر أن Microsoft تعيش في الزمن الأغبر حيث تعتقد أن المبرمجين لن يستغنوا عنها! رأيت الكثير من الحوارات حول الانتقال إلى GCC أو clang بشكل تدريجي و البعض فعلياً. على Microsoft أن تدرك أن MFC لم تعد نهاية العالم كما كانت في التسعينيات, فهناك Qt و Boost و غيرهم.

    0

  12. الـ script هوا برنامج يعمل داخل برنامج أخر للتحكم به. يعني كمثال المتصفح عبارة عن برنامج يتم التحكم به من خلال الـ script ... البرنامج قادر على ان يعمل بذاته بينما الـ script لايعمل الا بوجود البرنامج الذي يحتويه. مثال اخر python و blender وغيره الكثير من الامثلة.

    بما ان الـ script يعمل من خلال برنامج اخر فأدائه يكون دائما اقل من برنامج مكتوب مثلا بلغة برمجة كـ c/c++ .... اتصور نحن متفقون حتى الان.

    ملاحظة: رح تقول لي انه هالتعريف غير صحيح لأن java و C# تعمل من خلال برنامج اخر فاقول لك ان التعريف صحيح لانه البعض وانا منهم يعتبر java و C# لغات سكربت.

    حسب تعريفك فإن كل برنامج هو عبارة عن Script :lol:

    الـ Executables عبارة عن Scripts للـ Abstract Machine المقدمة من قبل نظام التشغيل, و الـ Kernel عبارة عن Script للتحكم في المعالج الذي هو عبارة عن Abstract Machine!

    المصطلحات دائماً ما تكون رمادية, و ليس هناك أبيض أو أسود :)

    الان لنرجع الى javascript فبما انها يتوجب ان تعمل من داخل المتصفح فهي لغة script صح ؟؟؟ يعني رح تعاني من ضعف الاداء مقارنة بالبرامج العادية .... صح ؟؟؟

    وبسبب طبيعة الويب متعدد المنصات توجب ان تكون javascript لغة Interpreted ... صح ؟؟؟

    لا ليس من الضروري أن تكون مفسرة, هي في الحقيقة Jitted في معظم المنصات الحديثة. أي أن Java Script لها مترجمات "وقت التشغيل". موضوع الـ Implementation ليس له علاقة باللغة, لأنه يمكن بناء أي نوع Implementation تريده للغة بكل بساطة "حسب احتياجك" و تقديرك لاستعمال اللغة.

    إذن javascript واجهتها مشاكل الأداء المنخفض الناتجة عن كونها scripting language وكونها Interpreted وبسبب هذا اتخذ مصممو اللغة القرار بجعل اللغة بسيطة ولا تحتوي abstractions عميقة كتلك الموجودة في لغات C++ مثلا فهاجس المطورين كان الاداء والاداء فقط.

    يعني يا اخ Khaled.Alshaya تخيل قديش رح يصبح الاداء منخفض لو كان يتوجب على المتصفح تحليل abstractions التي يفرضها oop قبل تنفيذ كل سكربت .... اخواني اذا كانت C++ اقل اداء من لغة C بسبب oop abstractions فتخيلو كيف سيكون الوضع مع لغة script و كذلك Interpreted.

    Java Script قد تكون بسيطة من ناحية الاستخدام(إذا افترضنا أنك تعرف ماهو الـ duck typing و الـ functional programming و خلافه) و لكنها من ناحية الـ abstraction عالية جداً مقارنة بأي لغة تريدها. هل بعد الـ Dynamic Typing هناك Abstraction :S

    Javascript تمتلك قدرات OOP و لكنها على طريقة Smalltalk و ليس بالطريقة الكلاسيكية(Simula). الـ Abstraction الذي توفره Prototype OOP أعلى بكثير أيضاً من Classical OOP‍!

    0

  13. السلام عليكم...

    يبدو أن حليمة عادت لعادتها القديمة بالفعل!

    على مدونة VC Blog الرسمية منذ أيام عدة,تم إعلان الميزات الجديدة المختصة بـ Cpp11 في النسخة القادمة من VCpp11. و حتى أكون صريحاً معكم, فإن صبري قد نفذ. و انتقلت بالفعل للعمل على GCC في كل مشاريعي. بينما يسابق GCC الريح في تطبيق اللغة الجديدة, و يبهر clang الجميع بتصميمه الحديث, و سهولة إضافة المميزات عليه بالدليل الفعلي الذي وصل في وقت قياسي إلى تطبيق لغة Cpp الجديدة بشكل شبه كامل مع دعم شبه كامل أيضاً للمكتبة القياسية حاملاً ميزات كمترجم لم يحلم بها أي مبرمج ++C أو مطور أدوات لـ ++C, بقي VCpp عالقاً في مكانه تقريباً في نسخة جديدة. هذا يذكرني بالفترة التي تلت إصدار Cpp98!

    بدأت البرمجة بـ ++C, من خلال GCC و لكن ما لبثت أن انتقلت لـ VCpp بولاء شبه مطلق حتى وقت قريب. و لكن هذه المرة قررت الخروج بلا عودة من عالمه. ماهي الآراء حول الموضوع؟ هل تعتقد أن VCpp سيبقى صامداً في وجه في وجه GCC و clang اللذان يكتسحان السوق حالياً, أم أنه سيصبح أحد تلك المشاريع المنقرضة؟

    0

  14. يجب التفريق بين scripting language و programming language وبين interpreted and run on-the-fly language وبين compiled languages ... لانه صراحة نقاش مع اغفال هكذا اساسيات (المفروض حتى سنة اولى كليه يعرفها) يجعل الحوار اهانه لمنتدى علمي معروف على شبكة الانترنت بحجم الفريق العربي.

    ماهو الفرق أخ عصام بين الـ scripting و الـ "programming language", و بالمناسبة أي لغة يمكن بناء compiler أو Jitter أو interpreter لها. فما هو الفرق الذي تتكلم عنه؟!

    0

  15. على العكس ما يطلبه الشمري رغم أني لا أوافقه الرأي, يزيد من إمكانية فرص الـ Optimization لدى JS Implementations لأن الأنواع ستصبح explicit و يمكن التحقق منها في كثير من الحالات. بينما في حالة الـ Prototype Inheritance كل "كائن" يجب أن يحمل معلومات عن الدوال. بينما في الحالة الكلاسيكية كما في Java و ++C على سبيل المثال معلومات الدوال لأي كائن من فئة معينة يتم استعلامها من الفئة و الكائن لا يحمل سوى متغيرات.

    0

  16. مسائل Project Euler من البداية و حتى السؤال الخمسون تقريباً, عبارة عن مسائل عادية يجب على أي طالب علوم حاسب أو هندسة برمجيات أن يقوم بحلها بلغته المفضلة, حيث يحل البرنامج السؤال في أقل من دقيقة. هناك بعض المسائل الصعبة في الخمسين الأولى و قد يكون الطالب تعرض للمفهوم بشكل مبسط أو تجاوزه. بعد ذلك تأتي الخمسين الثانية التي تعتمد على مهاراتك في الـ Optimization, ستحتاج في معظمها إلى دراسة كل سؤال, و البحث عن بداية الخيط لحل السؤال بعد أن تكون قد قمت بعمل formulation للسؤال على شكل graph مثلاً. تتعلم الخوارزمية و تفهمها ثم تقوم بكتابتها. نصف الأسئلة تشبه النصف الآخر, و لكنك إن لم تفهم الخوارزميات التي تطبقها لن تستطيع تحويرها لحل أسئلة أخرى, مثل تطبيق الـ memoization. عموماً, حللت أول خمسين كاملة و الحمدلله. و لكن المصيبة في الخمسين الثانية :(

    هذه الأسئلة لم أستطع حلها: 51, 54, 60, 64, 66, 77, 80, 84, 86, 88, 89, 90, 91, 93, 94, 95, 96, 98

    و لاحظ أنني حللت أسئلة مشابهة لأفكار الأسئلة التي ذكرتها, و لكن لم أستطع من فهمها و تحليلها و قمت بعمل implementation من خلال اتباع الـ pseudopod في Wikipedia و غيرها. أتمنى ممن يستطيع شرح أحد الأسئلة أن يتفضل علينا, إلا سؤال 54 فكل مافي الأمر أني كسول لكتابة برنامج بوكر :lol:

    أخيراً, halsten هذا يبدو أنه شخصية محترمة. كان لديه مدونة و لكنها لا تعمل حالياً كما يبدو, يتكلم فيها عن كتابة mods لألعاب PS3 و يصمم البعض منها كما فهمت. أتمنى لو أرسلت دعوة من المنتدى لهذا النوع من المبرمجين.

    -------------

    عفواً وضعت رابط خاطئ للمدونة, يبدو أنها لا تعمل.

    1

  17. إذا لم مخطئاً, فأنت تعمل في مجال الويب حالياً يا أبو شمر و لهذا فأنت لديك ردة فعل قوية تجاه JS. عندما يكون هناك deadline الحياة تصبح سوداوية :lol:

    إذا كان لديك وقت, اطلع على هذا المقال مفيد جداً لاستغلال الـ functional paradigm في أي لغة و بالتأكيد JS.

    http://www.defmacro.org/ramblings/fp.html

    1

  18. انها تحوز على اهتمامي فعلا هذه الايام ولهذا قلت I am intrigued

    مرحباً بك في قسم ++C على كل حال :)

    ولكن حبذا لو كانت السي بلس بلس شامله لان حلم كل مبرمج هو ان تكون لديه تقوم بكل شيء ، اليس كذلك؟

    Anybody who comes to you and says he has a perfect language is either naive or a salesman. -- Stroustrup

    3

  19. مثلا لتكن هناك مكتبه تتعامل مع الuser preferences بحيث انه لو كان النظام المستخدم ويندوز يتم خزنه في registry او اذا كان في لينوكس يتم خزنه في script file حسب نظام التشغيل

    كيف ستقوم بعمل Abstraction لهذه المشكلة؟ الـ registry لها تقسيمات معينة, مثلاً يمكنك تخصيص بعض الإعدادت للمستخدم و البعض الآخر للنظام ككل! كيف يمكن للمكتبة تحديد ما تريد؟

    إذا كنت تريد مكتبة للتعامل مع الإعدادات تقوم بهذا الأمر بشكل portable, فهناك مكتبة في boost تسمى Program Options رائعة بمعنى الكلمة, في البداية ستعتقد أن المكتبة عبارة عن تخاريف, و لكن بمجرد أن تفهم أنها DSL أنا متأكد أن ++C ستحوز على اهتمامك!

    هناك مكتبة أخرى في boost أيضاً, تسمى property tree, و هذه يفضل استخدامها عندما تكون البيانات على شكل شجرة. يمكن التصدير لـ ini, json, xml, ... و خلافه!

    0

  20. لذا من الممكن مثلا ان اصمم برنامج لبيئة ويندوز ، ثم اذا اردت ان اغير البرنامج الى بيئة linux اغير الاستدعاءات التي تتضمن المكتبات الغير قياسية بما يناسبها في البيئة الاخرى

    عزيزي, في C و ++C على حد سواء يتم استخدام المكتبات, نحن لا نخترع العجلة في كل مرة كما تعتقد :)

    ماهو الشيء الذي تحاول تصميمه؟ هناك مكتبات portable لـ ++C في أي مجال تتخيله. و أضف إلى ذلك, أن مكتبات C هي first class libraries أي أنك لا تحتاج إلى bindings لكي تستخدم مكتبات C. صحيح أن المكتبات القياسية ليست كمكتبات لغات أخرى, و هناك نقص نسبي في المكتبات إلا أنك تطلب شيء لا يريده أحد. مثالك حول الـ GUI هو في صالح ++C من الأساس. هل لك أن تسمي تطبيقاً واحداً عليه القيمة يستخدم Swing؟ أريد تطبيقاً واحداً موجود على جهازك أو جهاز أي أحد يقرأ الموضوع مكتوب بـ Swing! هل هذا صعب. في بعض الأحيان, قد تبدو فكرة الـ portability ممتازة من الناحية النظرية, و لكن من نواح عملية عدة ستجد أن الموضوع خاطئ تماماً. قارن ذلك بـ Qt التي كتب بها سطح المكتب KDE! الفرق أن هناك إمكانية لكتابة portable GUI على عدة أنظمة تشترك فيما بينها في إمكانيات معينة يمكن عمل Abstraction للـ GUI.

    عموماً, موضوع بناء المكتبات هو من اهتماماتي في ++C, و لكن لن أدخل في نقاش حول الموضوع إلا بطرح نقاط بعينها :)

    او حتى لما لا يتم جعل الاستدعاءات في سي بلس بلس لدوال خاصة بنظام تشغيل معين تترجم حسب نوع النظام؟

    ماذا تريد أن تفعل بالضبط؟ أحب أن تعطي مثالاً في الموضوع لكي يكون أكثر وضوحاً.

    وهناك حالات لبرامج يتم بناءها مره اخرى من الصفر From scratch لاي سبب كان ، كما ان البرنامج المكتوب الى منصة عمل معينة يكون اداءة افضل من البرنامج الذي يستهدف منصات عمل متعدده

    فقط في عالم الأحلام يتم بناء برنامج من الصفر مع وجود كود يعمل أصلاً للبرنامج الأصلي! و نعم البرنامج المكتوب لمنصة عمل معينة يكون أداؤه أفضل في حالة استخدام لغة لا تراعي الفروق كـ Java. أما C و ++C, فهما في الأساس لبناء portable source code that compiles to native code.

    1

  21. Ok, I am intrigued. But what about GUI, Databases, Daemon Services, Network Sockets?

    Does C++ 11 provide these facilities or I should somehow abstract the system API?

    بالنسبة للـ GUI فأنا أتفق مع الرأي القائل بأنه من الخطأ إنشاء مكتبة قياسية للواجهات. لغة كـ ++C, تمتد من الـ embedded systems إلى الـ supercomputers مروراً بالحاسبات الشخصية لايمكن أن يكون هناك مكتبة تغطي كل هذه الأنظمة. ثانياً, مكتبات الـ GUI التي تدعي أنها قياسية لا تراها إلا في الـ demos و البرامج البسيطة و خلافه! خذ Java على سبيل المثال, أولاً AWT ثم Swing ثم قامت Eclipse ببناء مكتبتها الخاصة, و عندما أتى Android, هل قام باستخدام أحدهم؟ الفروق بين الأنظمة كبيرة و هذا يؤدي إلى صعوبة وجود Abstraction حقيقي يغطي الفروق الجسيمة بين الأنظمة. عموماً, لو تكلمنا عن الحاسبات الشخصية و ما حولها, ستجد MFC كانت البداية الشهيرة تقريباً جاء بعدها مكتبات عدة, و باعتقادي أثبتت Qt أنها الأفضل حالياً لبناء واجهات متقدمة في ++C عابرة للأنظمة.

    بالنسبة لقواعد البيانات, فأنا أتفق معك. لكن يمكنك بسهولة إيجاد مكتبة مناسبة و portable. بالنسبة لي قرأت الكثير ممن يستخدمون SOCIو هم راضون كثيراً عنها, و هي عبارة عن DSL مشابه لـ SQL بالمناسبة :)

    أما Daemon Services, فهلا تطلعنا ماهي اللغة التوفر portable demons؟! أصلاً demons هذا مصطلح في عالم nix* مشابه للـ services في Windows.

    بالنسبة للـ Sockets, فـ Asioهي الـ de facto حالياً بين مبرمجي ++C, و تعمل على أنظمة لا تعد و لا تحصى!

    انا لا اتحدث عن مكتبات مثل Qt وغير هذه من الادوات الcross platform ولكني اتحدث عن كيفيه المحافظة على اداء السي بلس بلس الذي يعتبر Superior بالنسبة للغات الاخرى ولكن في مجال هذه الادوات التي تعتبر ضروريه تقريبا في كل برنامج

    الأداء الحقيقي يأتي من التصميم الجيد و استخدام إمكانيات اللغة بشكل صحيح. شخصياً أجد في Boost كل ما أحتاجه و زيادة. الأداء في ++C يأتي من أن كل الـ abstractions تذوب و ينتج لديك كود كما لو أنه مكتوب يدوياً(أفضل من اليدوي في كثير من الحالات!). هذه هي نقطة قوة ++C. يمكنك بناء مكتبة كاملة دون تكلف عناء أي overhead من جراء استخدام abstraction. و لكن لا تنسى أن بناء المكتبات بشكل احترافي بـ ++C ليس لعبة :)

    ولم لا يا محمد ، لم لا يكون هناك اصدارات خاصة بكل نظام تشغيل على حده بحيث تستخدم مكتبات خاصه لكل نظام تشغيل ، فلو جئنا الى الواقع مسألة الportability ليست مهمة لهذه الدرجة وانا ارى انها overrated والحقيقه هي انها المبرمجون الذين يبرمجون لويندوز في الغالب لايهتمون بالبرمجة لانظمة UNIX والعكس ، الى ماندر ، حتى اني لاحظت في كثير من البرامج المفتوحه المصدر ، اختلاف المكتبات المستخدمة في النسخة الخاصة بالويندوز عن المستخدمة في UNIX

    كلامك هذا ينافي الواقع تماماً. كيف الـ portability غير مهمة؟! كيف تم بناء Microsoft Office و Adobe Photoshop لـ Windows و Mac؟ هل تعتقد أنهم أعادوا كتابة الكود في كل مرة؟ :lol:

    الاختلاف في الكود بين النسخ, ينبع من الاختلافات الجوهرية بين النظامين.

    2

  22. يمكنك سؤاله فى هذا الشأن!! (انا لا امزح)

    على الأرجح أنه لم يكن يحتاجها, لأن Stroustrup و Richie كانوا جيراناً في المكاتب, و غالباً ما كان Stroustrup يذهب و يملأ اللوح الخاص بـ Richie و يسأله فيما يشاء, لا أعتقد أنك تحتاج إلى وثائق بينما كاتب الوثائق على بعد 5 أمتار من مكتبك :lol:

    2