اذهب إلى المحتوى

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. رابط تحمل نسخة اوف لاين من موقع W3SCHOOLS اخر اصدار2024
  3. اليوم
  4. تتوفر معادلات مختلفة لتحقيق الترقيم التلقائي، وواحدة من أبسط الطرق هي الدالة ROW أو الدالة SEQUENCE. وللترقيم التلقائي في عمود معين، نستخدم الدالة ROW، أولاً انتقل إلى الخلية التي تريد أن تبدأ فيها الترقيم ثم أدخل الصيغة التالية: =ROW() - n حيث n هو الرقم الذي يقلل من رقم الصف الحالي ليبدأ الترقيم من الرقم الذي تريده، أي لو ترغب في أن يبدأ الترقيم من 1 في الصف الأول، نكتب: =ROW() - 1 والطريقة الأخرى هي بواسطة الدالة SEQUENCE المتاحة في إصدارات Excel الحديثة (Excel 365 وExcel 2019)، ونفس الأمر انتقل إلى الخلية التي تريد أن تبدأ فيها الترقيم وأدخل الصيغة التالية: =SEQUENCE(rows, [columns], [start], [step]) مع استبدال rows بعدد الصفوف التي تريد أن تملأها بالأرقام. و [columns] بعدد الأعمدة (تستطيع تخطي ذلك الجزء لو تريد عمود واحد فقط). [start] هو الرقم الذي تريد أن تبدأ به (أيضًأ تخطيه في حال ترغب في أن تبدأ من 1). [step] هو الفرق بين كل رقم والذي يليه (متاخ تخطي هذا الجزء إذا كنت تريد زيادة الأرقام بواحد). بمعنى، لإنشاء قائمة أرقام تبدأ من 1 وتزيد بمقدار 1 في عمود واحد من الصف 1 إلى الصف 10، نكتب: =SEQUENCE(10, 1, 1, 1)
  5. اطلب معادلة الترقيم التلقائي في الاكسل
  6. اكتب برنامج بلغة بايثون يقوم بحسابة مساحة الشكل بناءا عىل ادخال المستخدم اسم الشكل المطلوب ) مرب ع square , مستطيل rectangle, مثلث triangle, دائرة circle) علما بأن قانون المساحة لكل من االشكال التالية هو مساحة المرب ع = الضلع * الضلع مساحة المستطيل= الطول *العرض مساحة المثلث = 0.5 * القاعدة * االرتفاع 2 مساحة الدائرة = π *نق
  7. عادة لا نقوم بالإجابة على أسئلة الامتحانات والاختبارية، سأحاول شرح الطريقة والكيفية لمساعدتك على حلها بنفسك، يمكنك البدء بأن تطلب من المستخدم إدخال رقم باستخدام input() وحوّله إلى عدد صحيح باستخدام int(). والتحقق من القسمة باستخدام معامل الباقي %؛ فإذا كان الرقم يقبل القسمة على 10، النتيجة ستكون num % 10 == 0، وإذا كان الرقم يقبل القسمة على 5، النتيجة ستكون num % 5 == 0. يمكنك جمع الشروط للتحقق من القسمة على 10 و5 معا باستخدام شرط مركب بـ and. وكتابة الشروط في الكود باستخدام if للتحقق من الشرط الأول، وelif للتحقق من الشروط الأخرى، وelse للحالة الأخيرة. وبناء على تلك الشروط، يمكنك طبع الرسالة المناسبة. ستساعدك هذه المصادر للتعلم بشكل أفضل: العمليات العددية في بايثون وهذه المقالة:
  8. اكتب برنامج يسمح للمستخدم ادخال قيمة بدائية وقيمة نهاية ويطبع االرقام الزوجية بناءا عىل مدخالت المستخدم
  9. العفو. العمود "target" في مجموعة بيانات مرض القلب يمثل الهدف أو النتيجة التي نريد التنبؤ بها باستخدام نموذج تعلم الآلة. وفي هذه الحالة، هو مؤشر على وجود مرض القلب لدى المريض. أما القيم في العمود "target": 0: يعني أن الشخص ليس لديه مرض القلب (سليم). 1: يعني أن الشخص مصاب بمرض القلب. وهذا العمود يستخدم كناتج (Output) أو المتغير التابع في نماذج التعلم الآلي لتدريب النموذج على التنبؤ بحالة القلب بناء على باقي الخصائص (Features) في مجموعة البيانات.
  10. هل قمت بالدخول على الرابط السابق الخاص بالإجابة الذى أرسلته لك ؟ حيث بداخل الرابط ستجد طريقة التثبيت حيث أعتقد أنك قد أخطأت فى جزء ما . وستجد أيضا رابط لفيديو يتويب يمكنك الدخول عليه ويمكنك البحث على يوتيوب على طريقة تثبيت MacOs على vmware وستجد العديد من الشروحات يمكنك متابعة أى شرح لذلك وسيعمل معك إن شاء الله
  11. حملت النضام الماك ولما اشغله على VMware انا محمل VMware بس ابغا احمل نضام الماك وش اكتب في قوقل او عطني الرابط
  12. هذا الخطأ يرجع من السيرفر لذلك قم بالذهاب إلى الكود الخاص بالسيرفر حيث يتم إرسال الطلب و أرسال صورة لى أو الملف لنرى أين المشكلة . حيث أعتقد أن السيرفر ينتظر الطلب من نوع application/json ولكن حين إستخدام flutter وإرسال <Map<String, String فإن نوع الطلب يكون application/x-www-form-urlencoded . لذلك لنقم بالتعديل التالى : لنقم بتحويل ال body إلى json هكذا . body: jsonEncode(<String, String>{ }), وبداخل الأفواس تقوم بوضع البيانات التي لديك. ثانيا نقوم بإضافة خاصية Content-Type الى ال header لتعريف نوع الطلب حتى يستقبله الخادم بطريقة صيحيحة headers: <String, String>{ 'Content-Type': 'application/json; charset=UTF-8', }, قم بتجربة التعديل السابق وأخبرنى بالنتيجة وإذا حدث خطأ فمن فضلك قم بارسال صورة الخطأ من ال cmd الخاص بالخادم
  13. حاليًأ أصبحت نسخة VMware Workstation Pro for PC الكاملة مجانية، لذا عليك تحميلها من خلال الرابط التالي: https://download3.vmware.com/software/WKST-1751-WIN/VMware-workstation-full-17.5.1-23298084.exe وسيتم حل المشكلة من خلالها. إن لم يعمل معك الرابط السابق استخدم التالي: https://onedrive1.dennisyau.asia/?/Softwares/VMware-workstation-full-17.5.1-23298084.exe
  14. بعد تحويل القيمة الي string يظهر هذا الخطا I/flutter ( 6246): Exception: there is aproblem with statuscode 415
  15. إن http في flutter تتوقع أن تستقبل ال body على واحد من ثلاث هيئات . String <List<int <Map<String, String وبما أنك ترسل كائن فيجب أن يكون القيم من نوع String كما المفاتيح أيضا لذلك يجب وضع true أو false كسلسلة نصية string . وفى السيرفر سيستقبلها كسلسلة نصية دون أى مشاكل ويمكن مقارنة قيمتها بال boolean دون وجود أى مشاكل . لذلك قم بتغير true إلى "true" وإذا حدث خطأ في الخادم أرسل لي صورة للخطأ .
  16. لا شك أن اختيار لغة البرمجة المناسبة لتطبيقاتك وبرامجك أمرٌ صعب، لاسيما عندما لا تملك خبرة عميقة بالخيارات المتاحة، وفي مقال اليوم نعقد لك مقارنة شاملة بين لغتي C++‎‎ وجافا ونستكشف أبرز الاختلافات الأساسية بينهما، وما هي أبرز العوامل التي عليك أخذها بعين الاعتبار عند اختيارك لإحديهما. هناك الكثير من المقالات التي تقارن بين المميزات التقنية للغتي C++‎‎ وجافا، ولكنها لا توضح لك بشكل دقيق ما هي الجوانب التي ستؤثر بها هذه الاختلافات، على سبيل المثال، لا تدعم لغة جافا الوراثة المتعددة بينما تدعمها لغة C++‎، حسنًا ماذا يعني ذلك لي كمطور؟ وهل هذا أمر جيد أم لا؟ لماذا يعتبر البعض بأن هذه ميزة في جافا، بينما يعتبرها آخرون مشكلة. دعنا نستكشف كافة الحالات التي يجب على المطورين فيها اختيار لغة C++‎‎ أو جافا أو ربما لغة أخرى في تطوير التطبيقات، ولماذا يعد اختيار اللغة الصحيحة أمرًا مهمًا لنجاح مشروعك البرمجي. الفروقات الأساسية بين C++‎‎ وجافا: بناء اللغة والنظام البيئي أُُطلِقت لغة C++‎‎ عام 1985 كواجهة أمامية للغة سي C فهي تستخدم الكثير من مفاهيم وبنية لغة C، ولكنها أيضًا تضيف ميزات جديدة وتحسينات عليها، وهذا يشبه إلى حد ما طريقة ترجمة لغة TypeScript إلى جافا سكريبت JavaScript . عادةً ما تقوم مترجمات C++‎‎ الحديثة بترجمة أكواد C++‎‎ إلى لغة الآلة الأصلية، وعلى الرغم من أن البعض يرى أن مترجمات C++‎‎ تقلل من قابلية التنقل بين المنصات، وتتطلب إعادة بناء البرامج للتكيف مع المعماريات الحديثة للحواسيب، إلا أن كود C++‎‎ يعمل على جميع منصات المعالجات تقريبًا. أما لغة جافا فقد صدرت لأول مرة في عام 1995، وهي تتميز بأنها لا تترجم مباشرةً إلى لغة الآلة الأصلية Native Machine Code، بل تترجم بدلاً من ذلك إلى لغة وسيطة تسمى شيفرة البايت bytecode، وهي لغة ذات تمثيل ثنائي مخصصة للعمل على آلة جافا الافتراضية JVM أي بعبارة أخرى، يحتاج مترجم جافا الذي يترجم كود لغة جافا إلى كود يفهمه الحاسوب إلى ملف تشغيلي أصيل خاص بكل منصة أو نظام التشغيل كي يعمل بشكل صحيح. لذا، تختلف جافا عن بعض لغات البرمجة الأخرى من حيث أن كودها المصدري لا يتحول مباشرة إلى برنامج قابل للتشغيل بل يحول إلى كود البايت أولًا والذي يحتاج تنفيذه لبرنامج آخر يسمى آلة جافا الافتراضية. وتصنف كل من لغة C++‎‎ و جافا بأنها من عائلة اللغات الشبيهة بلغة سي C، حيث أنهما تشبهان لغة C بشكل عام في تراكيبها اللغوية وبنية التعليمات البرمجية، لكن يكمن الفرق الأبرز بينما في البيئة التشغيليلة الخاصة بكل لغة، حيث يمكن للغة C++‎‎ استدعاء المكتبات المستندة إلى C أو ++C، أو استدعاء واجهة برمجة التطبيقات API لنظام التشغيل بسهولة كبيرة، أما لغة جافا فهي ملاءمةً بشكل أفضل للمكتبات المعتمدة على لغة جافا، ويمكن الوصول إلى مكتبات C في جافا باستخدام واجهة برمجة التطبيقاتJava Native Interface أو اختصارًا JNI، لكن هذا قد يتسبب في وقوع بعض الأخطاء ويتطلب كتابة بعض أكواد C أو ++C، كما تتفاعل لغة C++‎‎ مع الأجهزة بسهولة أكبر من لغة جافا لكونها أقرب للعتاد وتعد أقرب إلى لغات البرمجة منخفضة المستوى. الفروقات التفصيلية بين لغة C++‎‎ وجافا: الأنواع المعمعة وإدارة الذاكرة وغيرها يمكننا مقارنة لغة C++‎‎ بلغة جافا من جوانب عديدة، ففي بعض الحالات يكون قرار اختيار لغة C++‎‎ أو لغة جافا واضحًا وسهلًا، على سبيل المثال في حال أراد مطور ما برمجة تطبيقات أصيلة لنظام التشغيل أندرويد ففي الغالب سيختار لغة جافا لهذه المهمة، إلا في حال كان التطبيق المطلوب عبارة عن لعبة فيديو، ففي هذه الحالة سيختار لغة C++‎‎ أو لغة أخرى من لغات برمجة الألعاب تساعده على الحصول على رسوم متحركة أكثر انسيابيةً في الزمن الحقيقي، فغالبًا ما تسبب إدارة الذاكرة في جافا في حدوث تأخير غير محبب أثناء اللعب. أما بالنسبة لتطوير التطبيقات متعددة المنصات التي ليست ألعابًا فهي خارج نطاق المناقشة اليوم، إذ لا تعد لا لغة C++‎‎ ولا لغة جافا مثاليتين في هذه الحالة لأنهما لغتان تحتاجان لكتابة تعليمات برمجية طويلة جدًا لتطوير واجهة المستخدم الرسومية، ولا تساعد المطورين على برمجتها بكفاءة، وبالنسبة إلى التطبيقات عالية الأداء من الأفضل إنشاء وحدات C++‎‎ للقيام بالأعمال الثقيلة، واستخدام لغة أكثر إنتاجية لتطوير الواجهة الأمامية لهذه التطبيقات. وبما أن اختيار اللغة الأنسب قد لا يكون واضحًا بالنسبة لبعض المشاريع، لذلك دعونا نقارن بين اللغتين بتفصيل أكبر من خلال الجدول التالي: الخاصية C++‎‎ جافا سهولة الاستخدام للمبتدئين لا نعم أداء زمن التشغيل ممتاز جيد التأخير Latency قابل للتنبؤ غير قابل للتنبؤ المؤشرات الذكية للعد المرجعي Reference-counting smart pointers نعم لا أسلوب جمع وتحرير القمامة أو البيانات المهملة في الذاكرة لا مطلوب تخصيص ذاكرة المكدس Stack memory allocation نعم لا الترجمة إلى ملف أصيل قابل للتنفيذ نعم لا الترجمة إلى شيفرة البايت bytecode جافا Compilation to Java bytecode لا التفاعل المباشر مع واجهات برمجة تطبيقات نظام التشغيل منخفضة المستوى نعم يتطلب كود C التفاعل المباشر مع مكتبات C نعم يتطلب كود C التفاعل المباشر مع مكتبات جافا من خلال JNI نعم البناء وإدارة الحزم بشكل موحد لا Maven إضافة إلى الميزات التي قارنها في الجدول أعلاه، سنركز أيضًا على ميزات أخرى مثل البرمجة كائنية التوجه OOP مثل الوراثة المتعددة multiple inheritance، والأنواع المعممة generics، والقوالب templates، والانعكاس reflection. فكلا اللغتين مثلًا تدعمان البرمجة كائنية التوجه مع فرق بسيط بينهما حيث تفرض لغة جافا استخدام نموذج البرمجة كائنية التوجه، بينما تدعم لغة C++‎‎ البرمجة كائنية التوجه إلى جانب نماذج برمجة أخرى. الوراثة المتعددة الوراثة هي أحد مبادئ البرمجة كائنية التوجه وهي تمكن صنف ابن child class من وراثة الواصفات attributes والتوابع methods من صنف أب parent class. وأحد الأمثلة القياسية على مبدأ الوراثة هو صنف المستطيل Rectangle الذي يرث من صنف الشكل Shape الأكثر عمومية: // Note that we are in a C++‎‎ file class Shape { // Position int x, y; public: // The child class must override this pure virtual function virtual void draw() = 0; }; class Rectangle: public Shape { // Width and height int w, h; public: void draw(); }; تحدث الوراثة المتعددة عندما يرث صنف ابن من عدة أصناف آباء بذات الوقت. فيما يلي مثال يستخدم صنف المستطيل Rectangle وصنف الشكل Shape وصنف إضافي Clickable: // Not recommended class Shape {...}; class Rectangle: public Shape {...}; class Clickable { int xClick, yClick; public: virtual void click() = 0; }; class ClickableRectangle: public Rectangle, public Clickable { void click(); }; لدينا في هذه الحالة صنفان أساسيان هما صنف الشكل Shape (الذي يمثل الصنف الأساسي أو الصنف الأب للمستطيل Rectangle) والصنف الأساسي Clickable والصنف ClickableRectangle الذي يرث من كل من الصنفين السابقين ويملك خصائص نوعي الكائنات التي يولدها كل صنف. تدعم لغة C++‎‎ الوراثة المتعددة، بينما لا تدعم لغة جافا هذه الميزة، وتعد ميزة الوراثة المتعددة مفيدة في بعض حالات المحددة مثل: إنشاء لغة تخصصية Domain-Specific Language أواختصارًا DSL للعمل في مجال معين ولحل مشكلة مخصصة. إجراء حسابات معقدة في وقت تصريف البرنامج كما في تطبيقات الزمن الحقيقي. تحسين سلامة المشروع البرمجي وضمان أمنه بطرق لا يمكن تحقيقها في لغة جافا. ومع ذلك، يُنصح عمومًا بعدم استخدام الوراثة المتعددة إلا عند الضرورة لكونها قد تعقد الكود البرمجي. الأنواع المعممة والقوالب تعمل الإصدارات المعممة Generics للأصناف مع أي نوع من أنواع البيانات وهي تسهل إعادة استخدام الكود البرمجي، وتدعم لغة جافا هذه الميزة عن طريق الأنواع المعممة في حين تدعم لغة C++‎‎ هذه الميزة عن طريق القوالب templates، ولكن مرونة التعامل مع قوالب C++‎‎ تجعل عملية البرمجة أكثر أمنًا وقوة. حيث يمكن لمترجمات C++‎‎ إنشاء أصناف أو وظائف مخصصة جديدة في كل مرة تستخدم فيها أنواعًا مختلفة مع القالب، كما يمكن لقوالب C++‎‎ استدعاء وظائف أو دوال مخصصة بناءً على أنواع وسطاء الدالة، مما يسمح بتخصيص شيفرات مخصصة لأنواع بيانات معينة بدلًا من إنشاء إصدار واحد يناسب جميع أنواع البيانات، يطلق على هذه الميزة اسم تخصيص القالب template specialization. لا تملك لغة جافا ميزة مكافئة لهذه الميزة. بل على العكس تمامًا عند استخدام الأنواع المعممة generics في لغة جافا، تنشئ مترجمات لغة جافا كائنات عامة دون أنواع محددة من خلال عملية تسمى شطب النوع type erasure. وتجري عملية التحقق من النوع أثناء عملية الترجمة، ولكن لا يمكن للمبرمجين تعديل سلوك صنف أو تابع عام بناءً على نوع وسطائه. وكي تتمكن من فهم هذا الأمر بشكل أفضل، انظر سريعًا على الدالة العامة التالية format: std::string format(std::string fmt, T1 item1, T2 item2) تستخدم هذه الدالة قالب template<class T1, class T2>‎‎ من مكتبة C++‎‎ تم إنشاؤها: std::string firstParameter = "A string"; int secondParameter = 123; // Format printed output as an eight-character-wide string and a hexadecimal value format("%8s %x", firstParameter, secondParameter); // Format printed output as two eight-character-wide strings format("%8s %8s", firstParameter, secondParameter); تنشأ الدالة العامة format في لغة C++‎‎ على النحو التالي (لاحظ أننا حددنا نوع وسطاء الدالة ليكون نص string ثم عدد صحيح int) std::string format(std::string fmt, std::string item1, int item2) بينما تنشأ هذه الدالة في لغة جافا دون تحديد أنواع الكائنات string و int الخاصة بوسطاء الدالةitem1 و item2 وفي هذه الحالة، يعرف القالب في لغة C++‎‎ أن آخر معامل مرسل هنا هو عدد صحيح int، وبالتالي يمكنه إجراء عملية تحويله لنص std::to_string المطلوب في الاستدعاء الثاني للدالة format. وبدون استخدام القوالب، قد تؤدي عبارة printf في لغة C++‎‎ والتي تحاول طباعة رقم على هيئة سلسلة نصية كما في الاستدعاء الثاني للدالة formatفي الكود السابق إلى سلوك غير محدد وقد تتسبب في تعطل التطبيق أو طباعة قيم غير صحيحة. من ناحية أخرى،ستكون الدالة في جافا قادرة على التعامل مع الرقم كنص في الاستدعاء الأول، ولكن لن تنسقه على هيئة قيمة ست عشرية مباشرةً. وعلى الرغم من بساطة هذا المثال، لكنه يوضح قدرة لغة C++‎‎ على تعريف واختيار قالب مخصص للتعامل مع أي كائن من الصنف بشكل ديناميكي دون الحاجة لتعديل الصنف أو تعديل كود الدالة format، ويمكنك الحصول على نفس النتيجة في لغة جافا باستخدام ميزة تسمى الانعكاس reflection كبديل على استخدام الأنواع المعممة generics، ولكن هذه الطريقة أقل مرونة وأكثر عرضة للأخطاء. الانعكاس Reflection تمكنك لغة البرمجة جافا من معرفة واستكشاف كافة تفاصيل بنية الكائن (في وقت التشغيل)، حيث يمكنك معرفة ما هي الأعضاء المتاحة في صنف أو نوع صنف معين. وتُسمى هذه الميزة الانعكاس Reflection لكونها تشبه رفع مرآة أمام الكائن لرؤية كل ما يوجد بداخله. في حين لا تمتلك لغة C++‎ ميزة الانعكاس بالكامل، ولكن تمكنك إصدارات C++‎‎ الحديثة من الحصول على معلومات عن نوع الصنف واكتشاف نوع صنف محدد في وقت تنفيذ الكود، لكنها غير قادرة على الوصول إلى معلومات أخرى مثل معلومات حول خصائص الصنف. ‎‎‎ إدارة الذاكرة تختلف لغتا جافا C++‎ كذلك في الأسلوب المتبع في إدارة الذاكرة والتي تتبع عادة أحد طريقتين رئيسيتين الأولى هي الطريقة اليدوية التي يتوجب فيها على المطورين تتبع الذاكرة وتحريرها يدويًا، والطريقة الثانية هي الطريقة الآلية ، حيث يقوم البرنامج بتتبع ومراقبة الكائنات التي لا تزال قيد الاستخدام في الذاكرة، فإذا لم يعد أي كائن قيد الاستخدام، سيعتبر قمامة ويمكن في هذه الحالة إعادة استخدام الذاكرة التي كان يحجزه ويستخدمها، ويسمى هذا الأسلوب في إدارة الذاكرة جمع القمامة أو كنس البيانات المهملة garbage collection. تستخدم لغة جافا هذا الأسلوب الذي يمكنها من إدارة الذاكرة بسهولة أكبر من الطريقة اليدوية، كما أنه يساعد في منع وقوع أخطاء تحرير الذاكرة التي تسهم غالبًا في حدوث ثغرات أمنية . من ناحية أخرى لا توفر لغة C++‎‎ طريقة إدارة الذاكرة الآلية بشكل مدمج لكنها تدعم نوعًا من أنواع كنس البيانات يطلق عليه اسم المؤشرات الذكية smart pointers حيث تستخدم المؤشرات الذكية أسلوبًا يسمى عدّ المراجع وهي طريقة آمنة وفعالة في حال استخدامها بشكل صحيح، كما تقدم لغة C++‎‎ أيضًا مفهوم الهودام destructors التي تقوم بتنظيف أو تحرير الموارد المخصصة للكائن عن حذفه من الذاكرة. وتقدم لغة جافا تخصيص الذاكرة بالطريقة الآلية وفق أسلوب يسمى تخصيص الذاكرة المعتمد على الكومة heap allocation (باستخدام الدالة new أو delete أو الدالة malloc الأقدم التي أتت من لغة C) وتخصيص الذاكرة المعتمد على المكدس stack allocation. ويمكن القول بأن تخصيص الذاكرة المعتمد على المكدس أسرع وأكثر أمانًا من تخصيص الذاكرة المعتمد على الكومة، لأن المكدس هو بنية بيانات خطية في حين أن الكومة هو بينة بيانات شجرية، لذا فإن أسلوب ذاكرة المكدس أسهل بكثير من ناحية التعامل مع تخصيص وتحرير الذاكرة. وهناك أيضًا ميزة أخرى لصالح لغة C++‎‎ تتعلق بتخصيص الذاكرة بالاعتماد على المكدس وهي استخدام تقنية برمجية معروفة باسم Resource Acquisition Is Initialization أو اختصارًا RAII أي أن الحصول على المورد يجب أن يحدث عند إنشاء وتهيئة الكائن، وتربط الموارد مثل المراجع references بدورة حياة الكائن الذي يتحكم فيها، وتحذف أو تحرر في نهاية دورة حياة هذا الكائن. يُحرر مرجع المؤشر الذكي المشار إليه في أعلى الدالة تلقائيًا عند الخروج من الدالة. كما تُحرر الذاكرة المرتبطة به إذا كان هذا هو المرجع الأخير إلى المؤشر الذكي. وبهذه الطريقة تعمل المؤشرات الذكية في C++‎‎ دون الحاجة إلى تحرير المراجع يدويًا، وعلى الرغم من أن لغة جافا تتبع طريقة مشابهًا لهذا الأسلوب في تحرير الذاكرة، إلا أن الأمور تنجز بطريقة أصعب من تقنية تخصيص المورد عند إنشاء الكائن RAII المستخدمة في لغة C++‎‎ خاصةً إذا كنت بحاجة إلى إنشاء عدة موارد في نفس كتلة التعليمات البرمجية. الأداء في وقت التشغيل يدل هذا المفهوم على مدى سرعة تشغيل البرنامج وفي هذا الصدد تملك لغة جافا أداء تشغيل جيد، ولكن تظل لغة C++‎‎ أعلى منها في الأداء لأن إدارة الذاكرة اليدوية أسرع من تقنية جمع القمامة. وبالرغم من ذلك يمكن أن تتفوق لغة جافا في الأداء على C++‎‎ وذلك في حالات خاصة معينة بسبب ميزة الترجمة اللحظية للغة Just-In-Time أو اختصارًا JIT وبشكل مخصص تُشغّل مكتبة الذاكرة القياسية في جافا جمع القمامة بشكل كبير، مقارنة بالتخصيص الأقل لذاكرة الكومة Heap في ++C لكن تبقى لغة جافا لغة سريعة نسبيًا ومقبولة الأداء في التطبيقات التي لا تكون فيها سرعة الاستجابة أمرًا أساسيًا مثل الألعاب أو التطبيقات التي تتطلب استجابة في الزمن الحقيقي. بناء وإدارة الحزم يمكن التغاضي عن نقص أداء لغة جافا مقابل سهولة الاستخدام التي توفرها لا سيما في إدارة الحزم وطريقة بناء التطبيقات وإضافة التبعيات الخارجية إليها. حيث توفر لغة جافا أداة تسمى Maven تبسط العمل على المشاريع وتمكنك من إداراتها ببضع خطوات سهلة كما أنها تتكامل مع العديد من بيئات التطوير المتكاملة مثل IntelliJ IDEA. أما في لغة ++C فلا يوجد مستودع حزم قياسي ولا أسلوب موحد لبناء كود تطبيقات C++‎‎ فبعض المطورين يفضلون استخدام محرر فيجوال استوديو Visual Studio، بينما يستخدم آخرون أداة CMake أو مجموعة أدوات مخصصة أخرى، كما أن بعض مكتبات C++‎‎ التجارية المتنوعة غير مفتوحة المصدر تكون متوفرة بتنسيق ثنائي، ولا يوجد أسلوب ثابت لدمج تلك المكتبات في التطبيقات، وقد تتسبب التغييرات في إعدادات البناء أو إصدارات المُصرّف مشكلات وأخطاء تحول دون عمل هذه المكتبات الثنائية بشكل صحيح. ملاءمة اللغة للمبتدئين تعد لغة C++‎‎ صعبة الاستخدام وغير ملائمة للمبتدئين ليس فقط بسبب تعقيد بناء التطبيقات باستخدمها وصعوبة إدارة الحزم البرمجية، بل بسبب عوامل أخرى من بينها صعوبة تصحيح الأخطاء البرمجية، وصعوبة استخدام اللغة بطريقة آمنة ما لم تكن على دراية جيدة بلغة C ولغات التجميع وبطريقة عمل أجزاء الحاسوب منخفضة المستوى، فلغة C++‎‎ أداة قوية يمكن أن تنجز من خلالها الكثير، ولكنها لغة خطيرة إذا استخدمتها بطريقة خاطئة. من ناحية أخرى، تعد لغة جافا أسهل للمبتدئين مقارنةً بلغة C++‎‎ بسبب أسلوب إدارة الذاكرة السهل الذي تتبعه والذي شرحناه سابقًا، فلن يحتاج مطورو جافا للقلق بشأن تحرير ذاكرة الكائنات غير المستخدمة حيث يمكن للغة التعامل مع هذه المهمة تلقائيًا بكل سهولة. هل أختار C++‎‎ أم Java؟ الآن بعد تعرفت على أهم الاختلافات والفروقات بين لغة C++‎‎ و Java لنعد للسؤال الأساسي هل أستخدم C++‎‎ أم جافا في تطوير تطبيقاتي؟ في الواقع لا يوجد جواب موحد على هذا السؤال يناسب الجميع حتى مع الفهم العميق لميزات كل من هاتين اللغتين. فقد يفضل مهندسو البرمجيات الذين لا يعرفون مفاهيم البرمجة على مستوى منخفض لغة البرمجة جافا عندما لا يكون أمامهم سوى خيارين فقط هما جافا أو C++‎، إلا في حال الحاجة لتطوير تطبيقات زمن حقيقي مثل الألعاب كما شرحنا من قبل. من ناحية أخرى، قد يختار المطورون الذين يسعون إلى تطوير خبراتهم البرمجية لغة C++‎. ورغم ذلك قد تؤثر الفروق التقنية بين لغتي C++‎‎ و Java بشكل بسيط على قرار اختيار اللغة الأنسب، ويعتمد نوع اللغة بشكل أكبر على طبيعة التطبيقات أو المنتجات التي تريد تطويرها فقد تكون جافا هي الأنسب أو هي الأنسب أو ربما في النهاية برمجة ثالثة هي الأنسب. ولمساعدتك على الاختيار إليك الشكل التالي الذي يعد بمثابة دليل يساعدك على تحديد اللغة الأفضل حسب طبيعة التطبيق الذي تنوي تطويره. الخلاصة تعرفنا في هذا المقال على أبرز الفروقات بين لغة C++‎‎ وجافا من عدة جوانب تتعلق بالإنتاجية وإدارة الذاكرة وطريقة عمل مصرّفات اللغة وغيرها من العوامل، ويمكن القول ختامًا أن لغة C++‎‎ تتفوق في الأداء على لغة جافا وتوفر إمكانية الوصول إلى ميزات منخفضة المستوى التي تفتقر إليها لغة جافا، في حين تتميز جافا بسهولة الاستخدام وتعتبر خيارًا أفضل للمبرمجين المبتدئين. وبالرغم من أن C++‎‎ و Java تنتميان إلى عائلة لغات سي C، إلا أنهما يحملان تصميمًا مستقلاً، ويبقى العامل الأهم في اختيار اللغة المناسبة هو أهداف تطبيقك وطبيعة المهام المطلوبة فيه. ترجمة بتصرف لمقال An In-depth Look at C++ vs. Java للكاتب Timothy Mensch اقرأ أيضًا دليلك الشامل إلى لغات البرمجة عالية المستوى أنظمة التصريف المستخدمة لبناء البرامج المكتوبة بلغة Cpp وأهم أخطاء عملية البناء مواضيع متقدمة عن الأنواع والتعامل معها في Cpp البواني وتهيئة الكائنات Object Initialization في جافا المؤشرات الذكية (Smart Pointers) في Cpp
  17. اواجه مشكله اتعامل مع rest api القيمه true قيمه منطقية عندما ارسل request علي صيغة bool يظهر لي هذا الخطأ _Type Error (type 'bool' is not a subtype of type 'String' in type cast) حاولت ارسال القيمه true علي صيغة string السيرفر اظهر خطأ اخر
  18. يمكنك أولا تحميل نسخة macOS High Sierra من هذا الرابط ثم تثبيتها على VMware لديك . ولكن تثبيت macOs على VMware ستسبب بطئ كبير فى جهازك حيث سيتم إستهلاك الكثير من الموارد لديك . يمكنك قراءة الأجوبة التالية لإقتراحات أفضل و طريقة خطوة بخطوة لتثبيت macOs على VMware
  19. كيف احمل نضام الماك على VMware لا اعرف الطريقة انا الان حملة VMware ماهي الخطوة الثانية هل اذهب الى قوقل
  20. يبدوا أنك لم تقم بتثبيت بايثون بشكل صحيح، حيث لا يظهر رقم إصدار بايثون لديك عند تنفيذ python - v لذا عند التثبيت عليك تحديد Add tho path كالتالي: ستجد تفصيل هنا ورابط التحميل:
  21. إن فى لغة SQL عند كتابة جملة أو تنفيذ أمر معين يجب إنهاء ذلك الأمر بضوع علامة semicolon (;) لذلك بعد كل سطر يجب وضع علامة ; بعد كل جملة . والأفضل يمكنك إستخدام جملة INSERT واحدة مع عدة قيم وذلك بإضافة فاصلة (,) بين كل قيمة هكذا . INSERT INTO STUDENTS (FirstName, LastName, Age) VALUES ('Ali','Mohamed',10), ('Mohamed','Amr',20), ('Ahmed','Anas',25);
  22. في نماذج التعلم الالي مفهوم ال"target" يعبر عن الخرج المستهدف أو النتيجة المرغوبة التي يتم استهدافها في مجموعة البيانات. حيث تكون موجودة في مسائل التعلم بالاشراف (supervised learning) من مسائل تصنيف او تنبؤ على غرار مسائل الغير خاضعة للاشراف (unsupervised learning) مثل خوارميات التجميع وغيرها. حيث يمكن ان تصادفك بغير اسم لكن تعبر عن نفس المعنى ومن الاسماء الشائعة الاخرى للtarget هي: Label (التصنيف) Class (الفئة) Outcome (النتيجة) Ground truth (الحقيقة الأساسية) Y (نتيجة او الدالة ) ففي مثالك الtarget هي حالة السكري في الدم حيث تعبر 0 للحالة الطبيعية اي انه بمعنى اخر غير مصاب بالسكر وال1 انه مرتفع السكري وهو مؤشر لاصابته بالسكري فيمكن ان تحل البيانات التي تملكها ان يمكن تصنيف الاشخاص المصابين بالسكري من غير المصابين وذلك تبعا للعوامل مثل العمر والجنس والخ...) هدف استخدام الـ target في التعلم الآلي هو تدريب النموذج للتنبؤ بالفئة المناسبة للمثال الجديد. عند تدريب النموذج، يتم مقارنة النتيجة المتوقعة المستنتجة من النموذج بالقيمة الهدف (target) الحقيقية. بناءً على هذه المقارنة، يتم تحديث وضبط معلمات النموذج ليتعلم التنبؤ الدقيق بالفئات وهذا تعريف التعلم بالاشراف.
  1. عرض المزيد
×
×
  • أضف...