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

لوحة المتصدرين

  1. Ail Ahmed

    Ail Ahmed

    الأعضاء


    • نقاط

      4

    • المساهمات

      1202


  2. فيصل فهد3

    فيصل فهد3

    الأعضاء


    • نقاط

      3

    • المساهمات

      5


  3. محمد Mmm2

    محمد Mmm2

    الأعضاء


    • نقاط

      3

    • المساهمات

      140


  4. Ran Om

    Ran Om

    الأعضاء


    • نقاط

      2

    • المساهمات

      6


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 05/07/24 في كل الموقع

  1. السلام عليكم انا مثلان شغل دلوقتي علي مشروع معينه باطاره عمل معينه و ظهرت نسخة جديدة محدثة من التقنية أو اطار العمل الذي استخدمه. ماذا أفعل؟
    2 نقاط
  2. السلام عليكم هل بيثون متفوق في مجالات العلميه وكمان في مجال الحوسبه ؟ واي هي المكتبات المستخدم في المجالات ده ؟
    2 نقاط
  3. سويت نفس الي بالفديو بس حجم الصوره عندي ما يتغير ابد ليه؟
    2 نقاط
  4. نعم هذا ممكن، لأن Bootstrap في أصله هو مجموعة من عناصر HTML التي تم إضافة أنماط لها باستخدام CSS، مع القليل من JavaScript في العناصر التفاعلية (مثل collapse و modal و popover...). لذلك، عدم معرفة JavaScript لا يؤثر بشكل كبير على دراستك لـBootstrap إذا كنت لا تقوم بإنشاء مواقع تعتمد على العناصر التفاعلية. هنا للأسف سوف أخالفكما الرأي. Bootstrap هو إطار عمل يختصر عليك وقت التطوير ويمكنك من إنشاء واجهات جميلة في وقت قصير. ما يفعله Bootstrap هو أنه يقوم بإخفاء بعض CSS عنك، لكنه ليس بديلا لـCSS أبدا ولا يمكن أن يكون هناك بديل لها. استخدام Bootstrap في إنشاء الواجهات مثل استخدام الآلة الحاسبة للتاجر. التاجر يجب أن يعرف الحساب بدون استخدامها، لكن بدل أن يضيع وقته بالحساب ببطء فإنه يختصر الوقت باستخدام آلة حاسبة لكي يستثمر وقته في أعمال أخرى. لكن عندما يصادف مسألة لا تصلح فيها الآلة الحاسبة، فإنه يجب عليه أن يستطيع الاعتماد على عقله. لذلك، استخدام Bootstrap بدون معرفة CSS هو مثل أن تعطي آلة حاسبة لطفل في المدرسة الابتدائية وتقول هل: لا داعي لتعلم الحساب، يمكنك الاعتماد على هذه الآلة الحاسبة في حياتك! ما رأيك بهذا التصرف؟ هل هو تصرف عقلاني؟ من الطبيعي أن تكون الأخطاء كثيرة وأن يكون منحنى التعلم هكذا في البداية. كلنا مررنا بهذه المرحلة في لحظة ما من حياتنا. لذلك تحتاج في البداية إلى بذل جهد أكبر مما سيكون عليك فعله لاحقا. سوف تصبح الأمور أبسط مع تقدم الوقت. يمكنك أن تسأل أي مبرمج متقدم عن صعوبة HTML و CSS، سوف يقول لك أن هذه أسهل لغات البرمجة التي تعلمها في حياته! (بل في الواقع، هي ليست لغات برمجة بالمعنى الدقيق للكلمة، بل هي لغات توصيف فقط). لذلك، بالمثابرة سوف تصل بعد مدة إلى هذه المرحلة وسوف تنظر إلى الماضي وتقول مثلما نقول نحن الآن إن شاء الله.
    2 نقاط
  5. هل اذا اخذت تحليل البيانات في دوره الذكاء الاصطناعي سيغنيني عن تعلم تليل البيانات في دوره البيثون؟
    1 نقطة
  6. السلام عليكم شنو الطريقة الصحيحة للتعامل مع صاحب المشروع اثناء التقديم على عمل وتواصله معي؟ اقصد انو بكثير من الأحيان يجي صاحب المشروع احس انه يتواصل معاي عشان ياخد افكار وفجأة يقول لغيت الفكرة او يروح يختار مستقل ثاني بعد ما نكون متفقين وقايل انو حيشتغل معي مثلاً وكيف الطريقة الصح اللي ممكن اتبعها لتحديد المتطلبات بشكل صح بحيث اضمن ما يصير تغيير؟ يعني من بداية التواصل حتى البدأ بالمشروع ارجو الافادة والتفصيل واتشكركم
    1 نقطة
  7. شكراً جداً لشرحك افتهمت عليك هل فيك تساعدني عن كيف اسوي عقد رسمي يحدد بوضوح المسؤوليات والتوقعات لكلا الطرفين واوثقه واحنا كل واحد ببلد؟
    1 نقطة
  8. هل ينفع ادرس البوت ستراب قبل الجافا سكربت في مجال الفرونت اند لاني درست css وواجهت صعوبة كبيرة في فهمها واخطاء ومشاكل بالرغم من اني انسخ الكود من الفيديو ولام افم قال لي صديق ان البوت ستراب سيغنيك عن كتابة css
    1 نقطة
  9. طيب عندي سؤال مالفرق بين حسوب النقاش وحسوب الاكادمية يعني لو بنزل مقال وين انزله ولو بقراء عن شيء وين افضل مكان اتوجه له
    1 نقطة
  10. تعاملنا كمستقلين مع مختلف أصحاب المشاريع حتما سيختلف من عميل إلى آخر، شخصيا مررت بالعديد من التجارب مع مختلف العملاء داخل منصات العمل الحر وخارجها، لهذا أنصحك أولا عند التفاوض على المشروع، أرسل عرضا خطيا يتضمن نطاق العمل، والمواعيد النهائية، والميزانية، وشروط الدفع (ستستغني عن هذه المرحلة في حالة تعاملك داخل منصة للعمل الحر كمستقل مثلا، وبهذا الشكل يكون هناك دليل واضح على ما تم الاتفاق عليه وكأنك قمت بتوثيق كل شيء من البداية. في الغالب يكون العمل بمبدأ سكرام واعتماد منهجية أجايل لإدارة المشاريع وتسليم المقررات أمرا يعتمده بعض العملاء من غيرهم، لهذا في حالة لم تجد أمرا مشابها في طريقة العمل يمكنك أن تقترح عقد اجتماعات منتظمة لمراجعة التقدم المحرز مع التوثيق داخل نقاش المشروع. ففي المشاريع الكبيرة مثلا، من الأفضل استخدام عقد رسمي يحدد بوضوح المسؤوليات والتوقعات لكلا الطرفين. العديد من الأمور قد تحدث فنحن المستقلون لا نستطيع أن نفرض على العملاء توظيفنا مباشرة من أول نقاش، لهذا يجب أن نردّ بسرعة عند أول استفسار ورسالة منه، وإذا بدأ صاحب المشروع بتغيير المتطلبات أو التراجع عن الاتفاقيات فيمكنك التصرف معه باحترام. ومناقشة أي قضايا وطلب شروحات بوضوح، فعليك أن تكسب العميل وتعرف كيف تتفاوض معه من أول رسالة يرسلها لك، لأن إرسال الاستفسار والرد عليه بشكل مناسب هو نصف التفاوض. يمكنك مراجعة هذه المقالة للاستفادة أكثر: نصائح للتواصل مع العملاء قبل التوظيف ومشاهدة هذا الفيديو التوضيحي:
    1 نقطة
  11. ماهيا ملفات الارتباط في php وش المقصود
    1 نقطة
  12. السلام عليكم و رحمه الله احتاج الى تعديل طريقه LOGEIN للمستخدمين بدلا من الايميل الى التليفون و الايميل معا بمعني اخر يمكنه الدخول بالايميل او التليفون اي منهما يصلح للدخول مع العلم ان لدي عملاء و تجار و موظفين و احاول منذ فتره ولم استطع ذلك هل من مساعدة
    1 نقطة
  13. التطبيقات الي ذكرتها هل هي على الويب راح ننشرها
    1 نقطة
  14. طيب هل في دوره php هل راح ندرس كيف نتعامل معها وهل راح نبني تطبيقات وننشرها على الاندرويد او على الموقع
    1 نقطة
  15. السلام عليكم اخر مثال كتبه الاستاذ في الدقيقة 8:15 غير مفهوم
    1 نقطة
  16. لاشك أن أي مطور تطبيقات سمع بلغة البرمجة كوتلن 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 هو جافا الجديد كيفية كتابة برامج صحيحة باستخدام لغة جافا
    1 نقطة
  17. هل هناك بديل ل css والسؤال الثاني ال html درستها وكانت جميلة جدا وممتعة حسيت راح اكون سابق عصري واني ايلون ماسك العرب بس يوم درسيت css اصبت بتعقيد صناديق وحواف وهوامش لا ادري متى وكيف س استخدمها في الموقع جلبت لي الهم على العموم اشكرك على سرعة الرد في هذا الوقت المتاخر ياصديقي لو تقبل صداقتي طبعا السلام عليكم وصباحك سعيد
    1 نقطة
  18. بارك الله فيك علي الرد الان ممكن كود تحقق من انه مستخدم موجود في قاعدة بيانات او لا في حالة موجود ينتقل لصفحة الرئيسية في حالة لا يظهر رسالة خطأ هل نستخدم كلاس يسمي User ممكن توضيح
    1 نقطة
  19. في البداية يوجد خطأ عند تطبيقك الخط على محتويات الجدول أي عند انشاء كائن من الـTableStyle: ('FONTNAME', (0, 0), (-1, -1), 'Arabic') بهذا تكون قد حلت مشكلة عدم فهم وتشفير اللغة العربية أما بالنسبة للأرقام فيمكنك إنشاء التابع البسيط التالي للتحويل: def convert_to_arabic(number): arabic_digits = { '0': '٠', '1': '١', '2': '٢', '3': '٣', '4': '٤', '5': '٥', '6': '٦', '7': '٧', '8': '٨', '9': '٩' } arabic_number = '' for digit in number: if digit.isdigit(): arabic_number += arabic_digits[digit] else: arabic_number += digit return arabic_number ومن ثم استخدامه بالشكل التالي: reshaped_data = [ [ get_display(reshape(convert_to_arabic(cell))) for cell in row ] for row in mydata ] لتظهر النتيجة بالشكل التالي وتم ارفاق الكود كامل في المرفقات وتأكد من تنزيل المكاتب التالية قبل التشغيل : pip install reportlab pip install arabic_reshaper pip install python-bidi arabic_tables.py
    1 نقطة
×
×
  • أضف...