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

كل الأنشطة

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

  1. الساعة الماضية
  2. ستجدي أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  3. مرحبا Ran Om فى المرات القادمة يرجى وضع التعليق أسفل الفيديو الخاص بالدرس فى خانة التعليقات فى نهاية صفحة الفيديو إذا كان يوجد تعليقات سابقة خاصة بهذا الدرس فى المكان المخصص للتعليقات ليتم مساعدتك بشكل أفضل. حيث أن هذا القسم متعلق بالأسئلة العامة التى لاتخص أى فيديو داخل الدورات. فى ملف index.html سطر 445 يتم تعديل اسم الصنف cartTob <div class="cartTob"> ^^^^^^^^^ </div> إلى cartTab <div class="cartTab"> </div> ليكون نفس اسم الصنف عند استخدامه فى ملف الstyle.css حيث أنه تستخدميه باسم cartTab. سطر 100 وليسcartTob. .cartTab .listaCart .item img بالتوفيق..
  4. اعتقد ان الخطأ هنا لقد قمت بوضع نقطة قبل كلمة img وهذا خاطئ حيث ان النقطة تدل على ان هذه الكلمة هى سمة "class" ونحن لا نريد تنفيذ على سمة بل على عنصر لذلك نحذف النقطة . والخطأ الاخر فى فى كلمة cartTap حيث تم تعريفها فى العنصر ك cartTop لذلك نقوم بتعديلها فى ملف html بالاسم الصحيح cartTap. و من فضلك يمكنك مستقبلا التعليق اسفل الدرس الذى تريد الاستفسار عنه حتى نستطيع مساعدتك بشكل افضل. ستجد صندوق التعليقات اسفل الفيديو مباشرة حيث يمكنك التعليق هناك. شكرا لك
  5. سويت نفس الي بالفديو بس حجم الصوره عندي ما يتغير ابد ليه؟
  6. اليوم
  7. مرحبا آسر يرجى وضع التعليق أسفل الفيديو الخاص بالدرس فى خانة التعليقات فى نهاية صفحة الفيديو إذا كان يوجد تعليقات سابقة خاصة بهذا الدرس فى المكان المخصص للتعليقات ليتم مساعدتك بشكل أفضل. يوجد مكان مخصص للتعليقات أسفل كل فيديو بهذا الشكل حيث أن هذا القسم متعلق بالأسئلة العامة التى لاتخص أى فيديو داخل الدورات. بالتوفيق..
  8. أهلا. يرجى طرح الأسئلة المتعلقة بدروس الدورات في قسم التعليقات الموجود أسفل الفيديو الخاص بالدرس. هذا قسم الأسئلة العامة. لذلك نحن هنا لا نعرف ما هو الدرس الذي تقصده بسؤالك. شكرا.
  9. السلام عليكم اخر مثال كتبه الاستاذ في الدقيقة 8:15 غير مفهوم
  10. لاشك أن أي مطور تطبيقات سمع بلغة البرمجة كوتلن Kotlin ولغة جافا Java فهما من لغات البرمجة القوية والمستخدمة بشكل كبير مع نظام التشغيل أندرويد، وبالرغم من أن لغة جافا قد خسرت معركة نظام أندرويد لصالح لغة كوتلن بعد أن أعلنت جوجل عام 2017 أن كوتلن هي اللغة الرسمية المعتمدة لنظام التشغيل أندرويد وأنها أكثر ملاءمةً لتطبيقات الهواتف المحمولة الجديدة، إلا أن كلا اللغتين تملكان العديد من نقاط القوة، ومن المهم للمطورين فهم الاختلافات اللغوية بينهما لتحقيق انتقال سهل من جافا إلى كوتلن. سنناقش في هذا المقال مميزات كل لغة من هاتين اللغتين، ونسلط الضوء على أبرز جوانب التشابه والاختلاف بينهما لنساعدك على تحديد اللغة الأنسب لك من بينهما والانتقال بسلاسة بينهما. هل لغة كوتلن ولغة جافا متشابهتان؟ نعم، حيث تملك هاتان اللغتان الكثير من القواسم المشتركة، فكلتاهما تعملان على آلة جافا الافتراضية JVM ولن يحتاج المطورون للقلق بشأن كتابة الأكواد البرمجية الأصلية للآلة، ويمكن للغتين أن تستدعيا أكواد بعضهما البعض بسهولة-بمعنى أن بإمكانك استدعاء أكواد جافا من داخل أكواد كوتلن- والعكس صحيح. كما يمكن استخدام لغة جافا في تطبيقات الواجهة الخلفية التي تعمل من طرف الخادم وفي تطبيقات قواعد البيانات وتطبيقات الواجهة الأمامية والأنظمة المدمجة وتطبيقات الجوال وغيرها من أنواع التطبيقات المتنوعة الأخرى، وكذلك تتميز لغة كوتلن أيضًا بأنها لغة متعددة الاستخدامات فهي تعمل على أي نظام تشغيل يدعم آلة جافا الافتراضية JVM وتعد اللغة الرسمية لتطوير تطبيقات أندرويد، ويمكن كذلك استخدامها في برمجة تطبيقات جافا سكريبت من خلال مشروع Kotlin/JS الذي يسمح بكتابة شيفرات مشتركة بين اللغتين، ولتطوير تطبيقات من طرف الخادم، وتطبيقات الويب، وتطبيقات سطح المكتب. إن لغة جافا هي لغة أقدم وأكثر نضجًا من كوتلن، فقد صدرت لأول مرة في عام 1996، بينما أُطلِق أول إصدار من كوتلن Kotlin 1.0 في عام 2016، وبالرغم من ذلك تمكنت لغة كوتلن من فرض نفسها بسرعة وأصبحت اللغة الرسمية المفضلة لتطوير نظام التشغيل أندرويد في عام 2019، ويمكن القول بأننا إذا استثنينا مجال الأندرويد، فلن يكون هناك أي مميزات ترجح كفة كوتلن على جافا. وإليك الجدول التالي الذي يوضح تطور لغتي البرمجة Java و Kotlin: السنة جافا كوتلن 1995–2006 JDK Beta, JDK 1.0, JDK 1.1, J2SE 1.2, J2SE 1.3, J2SE 1.4, J2SE 5.0, Java SE 6 لم تكن لغة كوتلن موجودة 2007 بدء العمل على مشروع Project Loom لم تكن لغة كوتلن موجودة بعد 2010 لم يطلق إصدار جديد من جافا بدء تطوير كوتلن 2011 Java SE 7 الإعلان عن مشروع كوتلن 2012 لم يطلق إصدار جديد من جافا اعتبار لغة كوتلن مفتوحة المصدر 2014 Java SE 8 (LTS) لم يطلق إصدار جديد من كوتلن 2016 لم يطلق إصدار جديد من جافا Kotlin 1.0 2017 Java SE 9 Kotlin 1.2 والإعلان عن دعم Kotlin لنظام أندرويد. 2018 Java SE 10, Java SE 11 (LTS) Kotlin 1.3 ودعم الروتينات المساعدة coroutines 2019 Java SE 12, Java SE 13 Kotlin 1.4 (توافق مع Objective-C و Swift) والإعلان عن كوتلن كلغة مفضلة للمطورين من قبل جوجل. 2020 Java SE 14, Java SE 15 لم يطلق إصدار جديد من كوتلن 2021 Java SE 16, Java SE 17 (LTS) Kotlin 1.5, Kotlin 1.6 2022 Java SE 18, JDK 19 Kotlin 1.7 (alpha version of Kotlin K2 compiler), Kotlin 1.8 2023 Java SE 20, Java SE 21, JDK 20, JDK 21 Kotlin 1.9 2024 Java SE 22 Kotlin 2.0 مقارنة بين كوتلن وجافا من ناحية الأداء واستهلاك الذاكرة قبل الخوض في تفاصيل مميزات لغتي كوتلن وجافا، لنقارن أداءهما واستهلاكما للذاكرة حيث يشكل هذان العاملان اعتبارين مهمين لكل من المطورين والمستخدمين على حد سواء. أولًا: من ناحية الأداء على الرغم من أن كوتلن و جافا ولغات البرمجة الأخرى التي تنفذ على الآلة الافتراضية JVM الأخرى مختلفة في عدة عوامل عن بعضها، إلا أنها متشابهة إلى حد ما في الأداء، لا سيما عند مقارنتها مع عائلة اللغات المعتمدة على المصرّفات والتي تنفذ على المعالج الخاص بالآلة مثل مُصرّف GCC أو Clang ، فقد صممت آلة جافا الافتراضية JVM في الأصل لاستهداف الأنظمة المدمجة محدودة الموارد التي كانت متوفرة في فترة التسعينيات، وهذا فرض قيدين أساسيين على هذه اللغات لتتمكن من العمل بكفاءة على موارد محدودة وهما: جعل شيفرة البايت لآلة جافا الافتراضية بسيطة قد المستطاع: إذ يحتوي الإصدار الحالي من آلة جافا الافتراضية JVM التي تترجم لغتي كوتلن وجافا، على 205 تعليمة فقط، في حين يمكن للمعالجات الحديثة x64 أن تدعم وتنفذ أكثر من 6000 تعليمة مشفرة اعتمادًا على طريقة العد. التحسين في وقت التشغيل Runtime: فأسلوب تعدد المنصات الذي يعتمد على كتابة الكود مرة واحدة وتشغيله في أي مكان يساعد على إجراء عمليات تحسين الأداء في وقت تشغيل الكود (وليس في وقت تصريفه compile-time)، بعبارة أخرى تقوم آلة جافا الافتراضية JVM بترجمة معظم شيفرة البايت الخاصة بها إلى تعليمات في وقت التشغيل، فعند ترجمة كود جافا أو كوتلن لا يحول هذا الكود مباشرةً إلى كود الآلة بل يحول إلى كود بايت byte code وسيط ثم تترجم الآلة الافتراضية هذا الكود الوسيط إلى تعليمات يمكن للجهاز فهمها أثناء تشغيل البرنامج، وبالتالي تؤجل بعض عمليات التحسين لحين تشغيل البرنامج بشكل فعلي. كما يمكن استخدام تطبيقات مفتوحة المصدر لآلة جافا الافتراضية JVM مثل HotSpot لتحسين الأداء إذ تقوم في هذه الحالة بتجهيز كود بايت مسبق الترجمة pre-compiles لتشغيله بشكل أسرع من خلال المفسر interpreter. فكما ترى تتبع كل من جافا وكوتلن أساليب متشابهة لترجمة وتشغيل التعليمات البرمجية لذا لا توجد سوى اختلافات طفيفة في الأداء بينهما سببها بعض الخصائص الفريدة المميزة لكل لغة، على سبيل المثال: تتجنب لغة كوتلن استدعاء الدوال باستخدام الدوال المباشرة inline functions مما يحسن أداءها، بينما تعتمد جافا على الدوال التي تتطلب تخصيص ذاكرة إضافية. تتجنب كوتلن استخدام الدوال العليا higher-order functions التي تستخدمها جافا لامدا Java lambda في الاستدعاء الديناميكي للدالة من خلال التعليمة InvokeDynamic مما يحسن الأداء. تحتوي شيفرة كود البايت bytecode التي تولدها لغة كوتلن على ميزة التحقق من القيم الفارغة عند استخدام التبعيات الخارجية، مما يبطئ أداءها مقارنةً بجافا. ثانيًا: من ناحية الذاكرة صحيح أن استخدام الكائنات للأنواع الأساسية (وهو الأسلوب المتبع في لغة كوتلن) يتطلب تخصيصًا أكثر للذاكرة مقارنة باستخدام أنواع البيانات الأولية (وهو الأسلوب المتبع في لغة جافا) من الناحية النظرية، لكن من الناحية العملية تستخدم تعليمات كود البايت في لغة جافا تقنية التغليف التلقائي autoboxing وفك التغليف unboxing للتعامل مع الكائنات والتي يمكن أن تضيف حملًا وعبئًا حسابيًا عند استخدامها بشكل مفرط. على سبيل المثال، لا تقبل الدالة String.format الخاصة بجافا سوى الكائنات كدخل لها، لذلك لذلك عند الحاجة لتنسيق عدد صحيح من نوع int في جافا، يتم تغليفه تلقائيًا في كائن من نوع Integer قبل استدعاء الدالة String.format. ويمكن القول بشكل عام، لا توجد اختلافات كبيرة بين لغتي جافا وكوتلن فيما يتعلق بالأداء والذاكرة، وبالرغم من أنك قد تجد معايير أداء مختلفة عبر الإنترنت تظهر اختلافات طفيفة في الاختبارات الدقيقة بين هاتين اللغتين، ولكن لا يمكن تعميم هذه النتائج. والجدير بالملاحظة أن الأداء واستهلاك الذاكرة لا ينبغي أن يكونا العاملين الأساسيين في اختيارك بين كوتلن أو جافا ومن الأفضل التركيز على عوامل أخرى مثل المميزات الخاصة بكل لغة. مقارنة الميزات الفريدة لكل من لغتي كوتلن وجافا تشترك لغتا كوتلن وجافا في العديد من السمات الأساسية، لكن كل لغة تقدم ميزات فريدة ومختلفة عن الأخرى، فمنذ أن أصبحت كوتلن لغة جوجل المفضلة لتطوير أندرويد، برزت ميزات مثل الدوال الإضافية وإمكانية تعيين القيم null بشكل صريح Explicit nullability بكونها الميزات الأكثر فائدة للغة، من ناحية أخرى عند استخدام كوتلن فإن أكثر الميزات التي سنفتقدها والتي كانت تتيحها لغة جافا هي الكلمة المفتاحية protected والمعامل الشرطي الثلاثي ternary operator الذي يمكننا من التعبير عن الشروط بطريقة قصيرة ومختصرة. لنقم بتحليل مفصل للمميزات المتاحة في كولن مقارنةً بجافا، يمكنك تنفيذ الأمثلة التالية المكتوبة بلغة كوتلن وجافا لفهم الفروقات بشكل عملي. إليك بعض الميزات البارزة في لغة كوتلن بالمقارنة مع لغة جافا: الخاصية كوتلن جافا الوصف الدوال الإضافية Extension functions نعم لا تسمح لك بتوسيع صنف أو واجهة بوظائف جديدة من خلال تعريف التوابع أو الخصائص الإضافية فقط دون الحاجة إلى إنشاء أصناف جديدة class Example {}<br />// extension function declaration fun Example.printHelloWorld() { println("Hello World!") }<br /><br />// extension function usage Example().printHelloWorld() التحويلات الذكية Smart casts نعم لا تتبع الشروط داخل عبارة if الشرطية، وتحويل الأنواع تلقائياً بطريقة آمنة.<br /><br /> fun example(a: Any) { if (a is String)<br /> { println(a.length) <br />// automatic cast to String } } كما توفر لغة كوتلن معاملات تحويل آمنة بين الأنواع تعيد null عند حدوث خطأ في عملية التحويل ومعاملات تحويل غير آمنة ترمي استثناء عند حدوث خطأ في التحويل // unsafe "as" cast throws exceptions val a: String = b as String // safe "as?" cast returns null on failure val ? String? = d as? String الدوال المباشرة Inline functions نعم لا تقلل من التحميل الزائد للذاكرة وتحسن سرعة الكود عن طريق تضمين رمز الدالة (نسخه إلى موقع الاستدعاء) inline fun example() دعم مدمج لمفهوم التفويض delegation نعم لا تدعم نمط التفويض بشكل مدمج باستخدام الكلمة المفتاحية by class Derived(b: Base) : Base by b كتابة أسماء مستعارة أو بديلة لأنماط البيانات نعم نعم توفر أسماء مختصرة أو مخصصة لأنماط البيانات والتوابع والأصناف لتسهيل قراءتها typealias ShortName = LongNameExistingType الحقول غير الخاصة بالصنف لا نعم توفر جافا كافة معاملات تعديل الوصول الأربعة وهي المحمي protected والافتراضي default المعروف أيضًا بمعامل الحزمة الخاص package-private بالإضافة إلى معامل الوصول العام public والخاص private. بينما تفتقد كوتلن لمعامل تعديل الوصول المحمي والافتراضي. العامل الثلاثي Ternary operator لا نعم يستبدل عبارة if/else بكود أبسط وأكثر قابلية للقراءة: if (firstExpression) { // if/else variable = secondExpression; } else { variable = thirdExpression; } // ternary operator variable = (firstExpression) ? secondExpression : thirdExpression; توسيع نطاق البيانات بصورة ضمنية لا نعم تسمح لغة جافا بالتحويل التلقائي من نوع بيانات أصغر إلى نوع بيانات أكبر مثلًا من عدد صحيح إلى عشري بصورة تلقائية في حين لا تقوم كوتلن بذلك int i = 10; long l = i; // first widening conversion: int to long float f = l; // second widening conversion: long to float الاستثناءات المتحقق منها Checked exceptions لا نعم يحتاج المصرف إلى طريقة للتعامل مع الاستثناءات التي تقع عند تنفيذ البرنامج إما باستخدام الكلمة المفتاحية throws أو من خلال كتلة تعليمات try-catch ملاحظة: تم تصميم الاستثناءات التي يجب التحقق منها لتشجيع المطورين على تصميم برمجيات قوية. ومع ذلك، يمكن أن تؤدي إلى هذه الاستثناءات لزيادة حجم الكود، وتجعل عملية إعادة التصميم صعبة، وتؤدي إلى معالجة سيئة للأخطاء عند استخدامها بطريقة غير صحيحة. لذا فإن مسألة تحديد فيما إذا كانت هذه الميزة إيجابية أم سلبية تعتمد على احتياجات المطورين. هناك موضوع واحد تم استبعاده عمدًا من هذا الجدول وهو التعامل مع القيم الفارغة null في كل من لغتي كوتلن وجافا. إذ يستحق هذا الموضوع مقارنة أكثر تفصيلاً بين اللغتين لذا سنناقشه بشكل منفصل في الفقرة التالية. الفرق بين كوتلن وجافا في التعامل مع القيم الفارغة null إن ميزة عدم قبول القيم الفارغة هي واحدة من أروع ميزات كوتلن. إذ توفر هذه الميزة الوقت على المطورين ولا تضطرهم للتعامل مع الاستثناء من نوع NullPointerExceptions (وهو أحد الاستثناءات التي تطلق في وقت التشغيل RuntimeExceptions). ففي لغة جافا يمكنك بشكل افتراضي تعيين قيمة فارغة لأي متغير على النحو التالي: String x = null; // Running this code throws a NullPointerException try { System.out.println("First character: " + x.charAt(0)); } catch (NullPointerException e) { System.out.println("NullPointerException thrown!"); } أما في لغة كوتلن فلديك خياران، إما تجعل المتغير يقبل قيم فارغة nullable أو لا يقبل قيم فارغة non-nullable كما يلي: // This line throws a compile-time error because you can't assign a null value nonNullableNumber = null var nullableNumber: Int? = 2 // This line does not throw an error since we used a nullable variable nullableNumber = null يفضل استخدام المتغيرات non-nullable بشكل افتراضي، وتجنب استخدام المتغيرات nullable للحصول على أفضل الممارسات. ملاحظة: الهدف من الأكواد المكتوبة بكوتلن ومقارنتها مع أكواد مكتوبة بلغة جافا هو توضيح الاختلافات بين اللغتين وفي حال كنت مبتدئًا في لغة كوتلن تجنب قدر المستطاع تعيين المتغيرات لتكون nullable بدون هدف أو عند تحويل كود جافا إلى كوتلن. ومع ذلك، هناك بعض الحالات التي قد تستخدم فيها المتغيرات التي تقبل القيم null في كوتلن ومن بين هذه الحالات نذكر: الحالة مثال عندما تبحث عن عنصر في قائمة غير موجود (عادةً عند التعامل مع بنية لتخزين ومعالجة البيانات). val list: List<Int> = listOf(1,2,3) val searchResultItem = list.firstOrNull { it == 0 } searchResultItem?.let { // Item found, do something } ?: run { // Item not found, do something } عندما تريد تهيئة متغير في وقت التنفيذ وليس في لحظة الإعلان عنه باستخدام lateinit. lateinit var text: String fun runtimeFunction() { // e.g., Android onCreate text = "First text set" // After this, the variable can be used } ينصح بعدم المبالغة في استخدام التعليمة lateinit التي تؤجل تهيئة المتغير حتى يتم الوصول إليه لأول مرة بشكل مفرط مع لغة كوتلن باستثناء الحالات التي لا يمكنك فيها معرفة قيمة المتغير عند إعلانه، أو عند الحاجة لربط العرض view bindings أي ربط عناصر واجهة المستخدم (مثل الأزرار والنصوص والصور وما إلى ذلك) بمتغيرات في الشيفرة البرمجية، كي تتمكن من لتحكم فيها والتفاعل معها من خلال العرض وإجراء حقن قيم للمتغيرات في وقت التشغيل variable injections في أندرويد. @Inject // With the Hilt library, this is initialized automatically lateinit var manager: SomeManager lateinit var viewBinding: ViewBinding fun onCreate() { // i.e., Android onCreate binding = ActivityMainBinding.inflate(layoutInflater, parentView, true) // ... } بشكل عام، تتعامل لغة كوتلن مع القيم الفارغة null بمرونة أكبر وتوفر تجربةً محسنةً مقارنةً بلغة جافا. الاختلافات في الميزات المشتركة بين جافا وكوتلن على الرغم من أن كل لغة لها ميزات فريدة، إلا أن كوتلن و جافا تشتركان في العديد من الميزات أيضًا، ومن الضروري فهم خصوصية كل لغة من أجل الانتقال بسلاسة بين اللغتين. لنقم بفحص أربعة مفاهيم مشتركة بين جافا وكوتلن لكنها تعمل بشكل مختلف في كل لغة: الميزة جافا كوتلن كائنات نقل البيانات بين طبقات التطبيق المختلفة DTOs توفر سجلات جافا Java records طريقة مناسبة لنقل المعلومات عن البيانات أو حالة هذه البيانات كما تتضمن التوابع المساعدة toString و equals و hashCode بشكل افتراضي وهي متاحة منذ إصدار جافا SE 15: public record Employee( int id, String firstName, String lastName ) توفر لغة كوتلن أصناف البيانات data classes وهي تعمل بشكل مشابه لسجلات جافا كما تتوفر فيها توابع مدمجة مساعدة toString و equals وcopy: data class Employee( val id: Int, val firstName: String, val lastName: String ) تعبيرات لامدا Lambda expressions تتوفر تعبيرات لامدا في جافا منذ الإصدار جافا 8 وهي تملك بنية بسيطة كالتالي parameter -> expressionوتستخدم القوسين المتعرجين لتمرير الوسطاء(parameter1, parameter2) -> { code } كما في المثال التالي الذي يستخدم تعبيرات لامدا لصباعة عناصر قائمة أعداد صححية: ArrayList ints = new ArrayList<>(); ints.add(5); ints.add(9); ints.forEach((i) -> { System.out.println(i); }); تكتب تعبيرات لامدا في كوتلن بالصيغة التالية { parameter1, parameter2 -> code } وتحيط بها دائمًا الأقواس المتعرجة على سبيل المثال يستخدم الكود التالي تعبير لامدا لتعريف دالة بسيطة تقارن طول سلسلتين نصيتين: var p: List = listOf("firstPhrase", "secondPhrase") val isShorter = { s1: String, s2: String -> s1.length < s2.length } println(isShorter(p.first(), p.last())) التزامن Concurrency توفر الخيوط threads في لغة جافا ميزة تنفيذ مهام متزامنة وتسهل الحزمة java.util.concurrency التعامل مع تعدد المهام من خلال توفير أصناف خاصة مثل Executor و ExecutorService (كما يمكن مشروع Project Loom لتحسين جافا من إنجاز التزامن بطريقة أسرع من خلال توفير خيوط خفيفة الوزن lightweight threads). تعمل الروتينات المساعدة في كوتلن التي توفرها مكتبة kotlinx.coroutines على تسهيل التزامن وتعدد المهام، كما تتضمن قسم خاص لتعدد الخيوط multithreading. ويساهم مدير الذاكرة في إصدار Kotlin 1.7.20 والإصدارات الأحدث بتقليل القيود السابقة على تنفيذ التزامن وتعدد الخيوط للمطورين الذين ينتقلون بين نظام التشغيل أندرويد Android وآي أو إس iOS. السلوك الثابت في الأصناف Static behavior in classes تسهل الأعضاء الثابتة أو الستاتيكية static members في جافا مشاركة التعليمات البرمجية بين كائنات الصنف وتضمن إنشاء نسخة واحدة فقط من العنصر. ويمكن تحقيقها من خلال كتابة الكلمة المفتاحية static قبل المتغيرات والدوال والكتل: class Example { static void f() {/…/} } تتيح الكائنات المرافقة للأصناف companion objects في كوتلن من تحقيق السلوك الثابت للأصناف ومشاركة التعليمات البرمجية بين كائنات الصنف فالأعضاء في الكائن المرافق تكون مشتركة بين جميع كائنات الصنف ولا حاجة لإنشاء كائن منه لاستخدامها، ولكن صياغتها ليست بسيطة كما هو الحال في جافا: إليك مثال على كيفية استخدام كائن مرفق في كوتلن:\ class Example { companion object { fun f() {/…/} } } بالطبع، تملك كل من لغة البرمجة كوتلن وجافا أيضًا تراكيب مختلفة في كتابة التعليمات البرمجية، ولن نناقش كل الاختلافات هنا في سياق المقال الحالي، لكننا سنكتفي بالاطلاع على طريقة كتابة الحلقات التكرارية في كل لغة وهذا سيمنحك فكرة عن الأسلوب العام لكتابة تعليمات كل لغة: نوع الحلقة جافا كوتلن حلقة for باستخدام in for (int i=0; i<=5; i++) { System.out.println("printed 6 times"); } for (i in 0..5) { println("printed 6 times") } حلقة for باستخدام until for (int i=0; i<5; i++) { System.out.println("printed 5 times"); } for (i in 0 until 5) { println("printed 5 times") } forEach List<String> list = Arrays.asList("first", "second"); for (String value: list) { System.out.println(value); } var list: List<String> = listOf("first", "second") list.forEach { println(it) } while int i = 5; while (i > 0) { System.out.println("printed 5 times"); i--; } var i = 5 while (i > 0) { println("printed 5 times") i-- } احرص على الفهم العميق لميزات لغة كوتلن فهذا سيساعدك في التحول بين كوتلن وجافا بسهولة وسلاسة هل أختار جافا أم كوتلن من أجل مشاريع أندرويد لقد ناقشنا حتى الآن العديد من العوامل المهمة التي يجب التفكير فيها عند اتخاذ القرار بين كوتلن وجافا في من وجهة نظر عامة، لكن لا تكتمل عملية المقارنة بين لغتي كوتلن وجافا إذا لم نتطرق للحديث عن نظام أندرويد. فإذا كنت تنوي تطوير تطبيق أندرويد من الصفر وتتساءل ما إذا كان يجب عليك أن تستخدم جافا أو كوتلن فينصح بأن تختار كوتلن بدون أي تردد فهي لغة الأندرويد المفضلة لدى جوجل كما ذكرنا سابقًا. ورغم ذلك، فإن الإجابة على هذا السؤال قد يخضع لاعتبارات أخرى بالنسبة لتطبيقات الأندرويد المطورة مسبقًا. إذا يجب عليك أيضًا مناقشة أمور إضافية مثل مسألة الأعباء التقنية والكلفة المرتبطة بتعديل التقنية المستخدمة في هذه التطبيقات من لغة جافا إلى كوتلن وخبرة المطور Developer Experience الذي يعرف من قبل جافا ويتوجب عليه تعلم لغة جديدة! فإذا كان لدى شركة ما تطبيق أندرويد يستخدم جافا، فمن المستبعد أن تعيد برمجته من جديد بكوتلن بل ستفضل إضافة ميزات جديدة له فقط، وهذا أمر مفهوم. فطبيعة السوق تنافسية وتتطلب دورة سريعة لتحديثات التطبيق. لكن يجب الانتباه فالعبء التقني له تأثير خفي، فهو يزيد من التكاليف مع كل تحديث لأن المهندسين يضطرون للتعامل مع الشيفرة غير المستقرة التي من الصعب إعادة تنظيمها، وقد يدخل الشركات في دورة لا نهائية من التكاليف الباهظة الناتجة عن كثرة عمليات التعديل. وقد يكون من الأجدى التوقف عن تعديل الأكواد القديمة والاستثمار في حلول طويلة الأمد، حتى لو تطلب ذلك عمليات إعادة كتابة الكود البرمجي من جديد أو تحديث كود البرنامج لاستخدام لغة حديثة مثل كوتلن. كما أن استخدام لغة برمجة جديدة من قبل المطورين أمر يستحق النقاش حيث يمكن أن يفيد المطورين باختلاف خبراتهم إذ: يستفيد المطورون المبتدئون من الموارد المناسبة. يتحسن المطورون ذوو المستوى المتوسط ويحصلون على فرص أكبر للعمل. يحتاج المطورون الكبار إلى القدرة على تصميم وتنفيذ شيفرات رائعة. ولا شك أن الاهتمام بتجربة المطورين الخبراء مهم وضروري لاسيما بأن خبرتهم تؤثر على جميع المطورين ويمكن باستخدام لغات حديثة مثل كوتلن تطوير التطبيقات بسرعة وكفاءة وسهولة وهو ما سيستغرق وقتًا أطول مع لغات أقدم مثل جافا. الخلاصة تعرفنا في مقال اليوم على أهم الفروقات بين لغتي كوتلن و جافا اللتان تعدان من لغات البرمجة القوية والفعالة، ووجدنا أنه وبالرغم من أن لغة جافا لديها مجموعة واسعة من التطبيقات، فقد استحوذت كوتلن على المكانة التي امتلكتها لغة جافا والتي كانت لغة مفضلة لتطوير تطبيقات الأندرويد فقد وجهت جوجل كل جهودها نحو تطوير ودعم كوتلن، ما جعلها تحظى بالأولوية أمام جافا. لذا ينصح أي مطور تطبيقات باعتماد لغة كوتلن في أي شيفرة جديدة يكتبها لا سيما أن بيئة تطوير تطبيقات جافا IntelliJ IDEA تأتي مع أداة تحويل تلقائي من لغة جافا إلى كوتلن. ترجمة وبتصرف للمقال Kotlin vs. Java: All-purpose Uses and Android Apps للكاتب Gabriel Gircenko اقرأ أيضًا تعرف على لغة جافا Java الدليل السريع إلى لغة البرمجة Kotlin Kotlin هو جافا الجديد كيفية كتابة برامج صحيحة باستخدام لغة جافا
  11. دائمًا ستجد في المستند الرسمي للمكتبة أو الإطار دليل تحديث للنسخة الجديدة باسم migration guide، وكمثال بالنسبة لمكتبة react ستجد في المستند الرسمي الدليل التالي: How to Upgrade to React 18 أو يمكنك مشاهدة فيديو على اليوتيوب للتحديثات الجديدة التي تمت وفهم ما تم التخلي عنه أو أصبح قديم، لكي تقوم بتحديث مشروعك بناءًا على ذلك، لكن يجب الموازنة بين التحديث وبين استقرار المشروع فلا يعني صدور إصدار جديد أن يتم تحديث المشروع فورًا، بالطبع التحديثات الأمنية لها أولوية أخرى تلك يجب تطبيقها فورًا. ويمكنك متابعة أشخاص لهم خبرة في المجال الذي تنوي التخصص به على LinkedIn وTwitter لمتابعة التغيرات والتعلم منهم.
  12. وعليكم السلام ورحمة الله وبركاته . اولا قم بالبحث عن المعلومات والاضافات الجديدة والتحسينات و حتى الاشياء التى تم الاستغناء عنها فى الاصدار الجديد. قم بمقارنة البنية الخاصة بمشروعك بالبينة الخاصة بالاصدار الحديث ومدى الاختلاف بينهما . يمكنك الان الاختيار بين التحديث للاصدار الاحدث او تظل على الاصدار الاقدم بناء على احتياجك للاضافات الجديدة ام لا وايضا هل سيتم تغير البنية الخاصة بمشروعك كاملة ام لا . اذا قررت التحديث فعليك اولا اخذ نسخة احتياطية من مشروعك القديم والافضل استخدام نظام إدارة الإصدارات git مثل github. الان يمكنك تحديث الاصدار الى الاصدار الاحدث وتثبيت وتحديث المكتبات اللازمة التى يعتمد عليها . بعد ذلك تطوير الجزء الخاص من المشروع الذى تريده ان يعتمد على احدث الاضافات فى الاصدار الجديد. اذا كان قد تم الاستغناء عن بعض الخصائص او تم استبدال اسمائها فبيجب تعديل هذا الجزء من بنية المشروع حتى يعمل جيدا لانه سيظهر لك خطأ بان هذه الاشياء قم تم هجرها والاستغناء عنها . واخيرا اذا كان مشروعك مرفوع على استضافه فتاكد من ان الاستضافة توفر لك التحديثات الاخيرة من اللغه التى يعتمد عليها الاصدار . فمثلا فى اطار laravel 11 فانه يعتمد على php 8.2 فتاكد من وجود اصدار 8 لديك على الجهاز عند التطوير وايضا توفره على الاستضافه لديك حتى لا تقوم بتطويره ونمن ثم لا يعمل على الاستضافه. والافضل اذا كان المشروع كبير و البنية الخاصة به معقده فيمكنك تجاهل التحديثات ولكن تاكد من اصلاح التحديثات الخاصة بالامان حتى لا يكون موقع معرض للهجمات .
  13. وعليكم السلام، لغة Python هي لغة برمجة عامة تصلح للكثير من الأمور، مثل الحسابات العلمية، الذكاء الاصطناعي، معالجة الصور، الواجهات الخلفية للمواقع، تطبيقات سطح المكتب، وأحيانا تستخدم حتى لتطبيقات الهاتف الذكي. عندما تم إنشاء مفسر Python لأول مرة، لم يكن كل هذا في الحسبان من البداية، لكن انتشارها بين المبرمجين بسبب سهولة تعلمها وتطبيقها هو ما جعل كثيرا منهم يقومون بإنشاء مكتبات لهذه الوظائف على هذه اللغة. وبمرور السنوات، وصلت Python إلى ما وصلت إليه حاليا. لا يمكنني حصر جميع مكتبات Python المستخدمة في كل المجالات، فلو بقيت ساعات أذكرها لما أكملت. لكن سوف أنتقي بعض المكتبات من بعض المجالات: التشغيل التفاعلي: Jupyter و IPython. معالجة البيانات المجدولة: Pandas. الجبر والتحليل والعمليات الرياضية: Numpy و Scipy. التعلم الآلي: Scikit-learn. التعلم العميق: Tensorflow و .PyTorch نماذج اللغة الكبيرة: LangChain. معالجة الصور: OpenCV (Python) و Pillow. كشط الويب: Scrapy. الواجهات الخلفية للمواقع: Django و Flask. واجهة برمجة التطبيقات: FastAPI. تطبيقات سطح المكتب: PySide. وغير ذلك الكثير... لذلك بالفعل يمكنك استخدام Python في كل المجالات تقريبا، بما في ذلك المجالات العلمية والحوسبة.
  14. السلام عليكم انا مثلان شغل دلوقتي علي مشروع معينه باطاره عمل معينه و ظهرت نسخة جديدة محدثة من التقنية أو اطار العمل الذي استخدمه. ماذا أفعل؟
  15. السلام عليكم هل بيثون متفوق في مجالات العلميه وكمان في مجال الحوسبه ؟ واي هي المكتبات المستخدم في المجالات ده ؟
  16. وعليكم السلام، لا مشكلة. في الواقع، أنا في الصباح الآن، بل قد اقترب موعد الغداء عندنا. فنحن متفرقون في أنحاء العالم وليس لدينا نفس التوقيت! هذه حالة نفسية معروفة وتحدث دائما في بدايات التعلم، لأنه في البداية يكون لديك مقدار مرتفع جدا من الحماس يجعلك تشعر أن كل شيء سهل. لكن مشكلة هذا الحماس أنه يبقى معك لأيام قليلة فقط ويبدأ بالذبول إلى أن أن ينتهي تماما. وهذا هو السبب الذي يجعل أغلب الناس في العالم يفشلون بسرعة ولا يتحولون جميعا إلى إيلون ماسك! لذلك، لا يمكن الاعتماد عليه في أي مسار تعليمي أو وظيفي أو أي شيء من الحياة. لذلك، تحتاج إلى "نفس طويل" وصبر في التعلم. وما يساعدك في هذا الأمر هو أن تعلم أنه لا يوجد علم يمكن أن يأتيك بسهولة، فكل من نجحوا في حياتهم قد صرفوا سنوات طويلة من حياتهم في التعلم والتجريب وكذلك في الفشل، مرات ومرات كثيرة، حتى وصلوا إلى ما وصلوا إليه. لذلك، يجب أن لا تعتقد أنك استثناء عن هذه القاعدة، حتى لو شعرت أنك كذلك. الاستثناءات قليلة جدا في العالم ولا يمكن أن يعتبر كل شخص منا نفسه استثناء. للأسف لا يوجد كما قلت في الجواب السابق. البحث عن بديل لـCSS في مجال الويب هو مثل البحث عن بديل للحديد في الصناعات الثقيلة، أو بديل للإسمنت في البناء. CSS هي اللغة التي تحدد كيف يظهر عناصر HTML، فبدون CSS، لا توجد ألوان، لا توجد حدود، لا يوجد تموضع، لا يمكن تحديد الأحجام، ولا يمكن القيام بأي شيء لعرض العناصر بطريقة مقبولة. كل ما تقوم به الـHTML هو وضع المحتوى أسفل بعضه البعض، بلون أسود فوق خلفية بيضاء مملة، ولا يمكن أن تكون أية صفحة ويب محترمة بهذا الشكل. هذه المفاهيم كلها أساسية وسوف يظهر لك فائدتها مع التقدم في التعلم. لكن إذا كان ما يتم تدريسه في الدورة ليس مفهوما لك بشكل كاف، فما يمكنك فعله هو الإطلاع على المقالات الموجودة في أكاديمية حسوب بخصوص CSS. فبعض الناس (وأنا منهم) يفهمون من الدروس المكتوبة أكثر بكثير من الدروس المرئية، لأن الدروس المرئية تتطلب متابعة المدرب لحظة بلحظة، بينما الدروس المكتوبة متاحة بين يديك ويمكنك أن تقلبها ذهابا وإيابا كيفما شئت، لذلك أشعر أن التعامل معها أسهل. إليك سلسلة الدروس هذه التي يتم استخدام CSS فيها في إنشاء موقع معين. حاول متابعتها فربما سوف تساعدك أكثر في فهم الموضوع: بالتوفيق.
  17. هل هناك بديل ل css والسؤال الثاني ال html درستها وكانت جميلة جدا وممتعة حسيت راح اكون سابق عصري واني ايلون ماسك العرب بس يوم درسيت css اصبت بتعقيد صناديق وحواف وهوامش لا ادري متى وكيف س استخدمها في الموقع جلبت لي الهم على العموم اشكرك على سرعة الرد في هذا الوقت المتاخر ياصديقي لو تقبل صداقتي طبعا السلام عليكم وصباحك سعيد
  18. نعم هذا ممكن، لأن Bootstrap في أصله هو مجموعة من عناصر HTML التي تم إضافة أنماط لها باستخدام CSS، مع القليل من JavaScript في العناصر التفاعلية (مثل collapse و modal و popover...). لذلك، عدم معرفة JavaScript لا يؤثر بشكل كبير على دراستك لـBootstrap إذا كنت لا تقوم بإنشاء مواقع تعتمد على العناصر التفاعلية. هنا للأسف سوف أخالفكما الرأي. Bootstrap هو إطار عمل يختصر عليك وقت التطوير ويمكنك من إنشاء واجهات جميلة في وقت قصير. ما يفعله Bootstrap هو أنه يقوم بإخفاء بعض CSS عنك، لكنه ليس بديلا لـCSS أبدا ولا يمكن أن يكون هناك بديل لها. استخدام Bootstrap في إنشاء الواجهات مثل استخدام الآلة الحاسبة للتاجر. التاجر يجب أن يعرف الحساب بدون استخدامها، لكن بدل أن يضيع وقته بالحساب ببطء فإنه يختصر الوقت باستخدام آلة حاسبة لكي يستثمر وقته في أعمال أخرى. لكن عندما يصادف مسألة لا تصلح فيها الآلة الحاسبة، فإنه يجب عليه أن يستطيع الاعتماد على عقله. لذلك، استخدام Bootstrap بدون معرفة CSS هو مثل أن تعطي آلة حاسبة لطفل في المدرسة الابتدائية وتقول هل: لا داعي لتعلم الحساب، يمكنك الاعتماد على هذه الآلة الحاسبة في حياتك! ما رأيك بهذا التصرف؟ هل هو تصرف عقلاني؟ من الطبيعي أن تكون الأخطاء كثيرة وأن يكون منحنى التعلم هكذا في البداية. كلنا مررنا بهذه المرحلة في لحظة ما من حياتنا. لذلك تحتاج في البداية إلى بذل جهد أكبر مما سيكون عليك فعله لاحقا. سوف تصبح الأمور أبسط مع تقدم الوقت. يمكنك أن تسأل أي مبرمج متقدم عن صعوبة HTML و CSS، سوف يقول لك أن هذه أسهل لغات البرمجة التي تعلمها في حياته! (بل في الواقع، هي ليست لغات برمجة بالمعنى الدقيق للكلمة، بل هي لغات توصيف فقط). لذلك، بالمثابرة سوف تصل بعد مدة إلى هذه المرحلة وسوف تنظر إلى الماضي وتقول مثلما نقول نحن الآن إن شاء الله.
  19. إذا كنت تقصد ملفات تعريف الارتباط (cookies) فهي ملفات صغيرة يتم إرسالها من الخادم لحفظ معلومات معينة على جهاز المستخدم. هذه المعلومات قد تكون مثلا اللغة التي يفضلها المستخدم في المواقع التي تحوي عدة لغات، وقد تكون العملة المفضلة للمستخدم في مواقع الشراء التي تتيح استخدام عدّة عملات. والأشهر من ذلك كله أنها قد تكون معرفا للجلسة (Session) الحالية، والتي عن طريقها يتم تذكر أن المستخدم قد قام بتسجيل الدخول أم لا. فعندما يقوم المستخدم بتسجيل دخوله تقوم الواجهة الخلفية للموقع بتوليد ملف تعريف ارتباط (cookie) ويتم إرساله إلى المستخدم. المتصفح يقوم بدوره بحفظ هذا الملف ويعيد إرساله في جميع الطلبات اللاحقة. عندما تقرأ الواجهة الخلفية للموقع هذا الملف فإنها تعرف أن هذا يخص مستخدما محددا وتعرض له الموقع بالطريقة المناسبة له (مثلا، تسمح له بكتابة تعليقات وتعرض له اسمه وصورته، خلافا للزائر الذي لم يسجل الدخول). ملفات تعريف الارتباط هي ملفات مؤقتة لها مدة صلاحية معينة وتختلف باختلاف وظيفتها. بعض ملفات تعريف الارتباط لا تصلح سوى لدقائق معدودة ويتم مسحها بمجرد إغلاق المتصفح (هذا النوع يستخدم عادة في المواقع البنكية)، وبعضها الآخر قد يبقى صالحا لمدة سنة كاملة. كما أن المستخدم يمكنه أن يحذف ملفات تعريف الارتباط في أي وقت يريد، وجميع المتصفحات لديها هذه الميزة. ملفات تعريف الارتباط ليست خاصة بلغة PHP، بل هي من أساسيات الويب وبروتوكولات HTTP/HTTPS، وجميع التطبيقات التي تستخدم هذه البروتوكولات يمكنها أن تتعامل مع ملفات تعريف الارتباط.
  20. هل ينفع ادرس البوت ستراب قبل الجافا سكربت في مجال الفرونت اند لاني درست css وواجهت صعوبة كبيرة في فهمها واخطاء ومشاكل بالرغم من اني انسخ الكود من الفيديو ولام افم قال لي صديق ان البوت ستراب سيغنيك عن كتابة css
  21. البارحة
  22. السلام عليكم شنو الطريقة الصحيحة للتعامل مع صاحب المشروع اثناء التقديم على عمل وتواصله معي؟ اقصد انو بكثير من الأحيان يجي صاحب المشروع احس انه يتواصل معاي عشان ياخد افكار وفجأة يقول لغيت الفكرة او يروح يختار مستقل ثاني بعد ما نكون متفقين وقايل انو حيشتغل معي مثلاً وكيف الطريقة الصح اللي ممكن اتبعها لتحديد المتطلبات بشكل صح بحيث اضمن ما يصير تغيير؟ يعني من بداية التواصل حتى البدأ بالمشروع ارجو الافادة والتفصيل واتشكركم
  23. شكرًا لك أخي مصطفى، اني اختاجها لأني قمت بتثبيت الحزم على جهازي بإصدارات محددة ومتأكد من عدم تضاربها وأنا أقوم بإنشاء بيئة افتراضية دوماً، لكن لماذا أعيد تثبيت الحزم التي قمت بتثبيتها مسبقاً واللي حجمها كبير! اني فقط أريد أن آخذها من الأساس وأضعها في البيئة الافتراضية جيد عشان ما أضيع وقت بالتنزيل رائع شكراً لحضرتك تم حل المشكلة
  24. تقريباً وصلت الفكرة شكراُ لحضرتك شكرا جزيلاً أخ علي على جهدك وأمثلتك الجميلة، تمام اني افتهمت الفكرة
  1. عرض المزيد
×
×
  • أضف...