لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 11/05/23 في كل الموقع
-
السلام عليكم , اتممت كورس مجاني لجافا سكربت والآن اريد ان اعرف ماهي الخطوة التالية ؟ كيف يمكنني الاحتراف في JS أريد مواقع problem solving ونصائح لاتقن JS1 نقطة
-
اذا امكن كيفية عمل تطبيق HR للموظفين يخزن بياناته في goggle sheet وشكرا1 نقطة
-
السلام عليكم. متى يحبك إستعمال cloudinary. و متى يكون إستعمالها عبء على المشروع. شكرا.1 نقطة
-
يفضل استعمال Cloudinary: كنت بحاجة إلى تخزين الصور ومقاطع الفيديو وإدارتها بكفاءة دون الحاجة إلى بناء بنية تخزين خاصة بك، واستخدام Cloudinary لتخزين هذه الوسائط وإدارتها بسهولة. تساعد Cloudinary على تحسين أداء موقع الويب من خلال تقديم الصور بأحجام وجودات مختلفة تلائم الأجهزة وسرعة الاتصال بالإنترنت للمستخدمين، أي تحتاج إلى ميزات متقدمة لمعالجة الصور وتحسينها، مثل التحويل إلى أحجام مختلفة أو إضافة مؤثرات. تعمل على توفير توصيل سريع للوسائط من خوادم موزعة على مستوى العالم، مما يقلل من وقت تحميل الوسائط ويحسن تجربة المستخدم. تحسين تجربة المستخدم من خلال تقديم صور محسنة ومقاطع فيديو بجودة عالية وبسرعة. يمكنك توفير التكاليف المرتبطة بتخزين وتسليم الوسائط الرقمية عبر الإنترنت بشكل مستقل. بينما يكون استعمال Cloudinary عبء على المشروع في حال: لديك مشروع صغير ولا يتضمن الكثير من الوسائط، وبالتالي استخدام Cloudinary زيادة غير ضرورية. لا تحتاج إلى ميزات متقدمة لمعالجة الصور. لديك ميزانية محدودة وعندها تعتبر تكلفة استخدام Cloudinary باهظة بالنسبة لمشروعك. السيطرة الكاملة على تخزين وتوصيل الوسائط الخاصة بك دون الاعتماد على خدمة خارجية، وهنا لا يعتبر Cloudinary الخيار المناسب.1 نقطة
-
كيف يمكن حل مشكلة اللغة العربية? عندما اكتب في. Entry تكون الحروف مفككه ومقلوبه.. مالحل? مع خالص شكري لكم.1 نقطة
-
السلام عليكم ورحمه الله وبركاته .. اسعد الله اوقاتكم بكل خير ،، لدي استفسار .. في كيفيه عرض حقل التاريخ يقبل الهجري والميلادي والمستخدم يختار التاريخ الذي يرغب فيه ، ولكن عند الحفظ بقاعده البيانات ارغب في ان يكون الحفظ بالتاريخ الميلادي . انا اعمل على نظام لارافيل وفي طور التطور والتدريب وحاولت البحث عن مكتابت ، وجدت مكتبه مثل bootstrap-hijri-datepicker . لكن كما ذكرت سابقاً ارغب في عرض التاريخ هجري وميلادي للمستخدم وعند اختياره للتاريخ ارغب في حفظ التاريخ الميلادي حتى لو قام باختيار تاريخ هجري . فهل يوجد مكتبات اولا للتقويم الهجري والميلادي تنصحون بها ، وثانيا هل يوجد طريقه لحفظ القيمه الميلاديه بدلا من الهجريه. وشكرا لكم1 نقطة
-
كفكرة، يمكنك حفظ التواريخ بالتاريخ الميلادي على مستوى طبقة البيانات وقواعد البيانات ثم عرضه بالتاريخ الهجري أو الميلادي على مستوى ملفات العروض. يمكنك الاستعانة بالمكتبات التي تهتم بالتحويل من وإلى التاريخ الهجري من مثل alkoumi/laravel-hijri-date في لارافيل. مثال عملي: ثم بتثبيت الحزمة: composer require alkoumi/laravel-hijri-date أضف موفر الخدمة إلى ملف app.php لمصفوفة providers: 'providers' => [ // ... Alkoumi\LaravelHijriDate\LaravelHijriDateServiceProvider::class, ]; قم باستعمالها في ملفات العروض على نحو: <p> {{ Hijri::FullDate($post->created_at) }} </p>1 نقطة
-
السلام عليكم احتاج دالة فصل النصوص العربي عن الانجليزي في الخلية الواحدة ولكم جزيل الشكر1 نقطة
-
لا يوجد لغة برمجة قوية ولغة برمجة ضعيفة، كل برمجة مميزة في مجال ما مثلا لغة بايثون لا يوجد لها منافس ابدا في مجال الذكاء الصنعي وذلك بسبب عدد الاشخاص الذين يعملون في المشاريع المفتوحة ودعم المصدر المفتوح وكذلك توفر إطارات خاصة بعمليات تدريب نماذج الذكاء الصنعي مثل tensorflow أو keras أو pytorch وهذا يجعلها متقدمة على غيرها في مجال الذكاء الصنعي كذلك تدعم تقنيات الويب من خلال django وغيرها الكثير لكن مثلا لغة c++ تعتبر الافضل في برمجة المتحكمات والحساسات الدقيقة لأنه في هذه الحالة مثلا أنت بحاجة رد فعل سريع وخاصة على مستوى الطائرات الحربية عند الدخول في مناورات حربية أو السيارات في الأماكن المزدحمة كل هذه التطبيقات بحاجة إلى اتخاذ قرار سريع في الزمن الحقيقي ولذلك تعتبر لغة c++ الأفضل هنا لأنها الأسرع وهكذا من أجل كل لغة برمجة لها ميزة تختص بها، وكذلك اختيار اللغة يقع على نوع المجال الذي اردت العمل به1 نقطة
-
أولاً لا يلزمك أي شهادة للعمل في مجال البرمجة، وبالطبع الشهادة الجامعية تعطي ميزة إضافية لك، لكن الأهم هي مهاراتك وما تستطيع فعله ومعرض أعمالك، لكن بالطبع هناك بعض الشركات تشترط الحصول على شهادة في علوم الحاسوب CS، وستجد تفصيل عن ذلك هنا: وبخصوص دراسة الدورات التي اشتركت بها، فهو أمر جيد الإطلاع على كافة المجالات، ففي حال اشتراكك في جميع الدورات، فأنت تقصد التالي: دورة علوم الحاسوب دورة إدارة تطوير المنتجات دورة تطوير واجهات المستخدم دورة تطوير التطبيقات باستخدام لغة Python دورة تطوير التطبيقات باستخدام لغة JavaScript دورة تطوير تطبيقات الويب باستخدام لغة PHP دورة تطوير تطبيقات الويب باستخدام لغة Ruby ولنبدأ بالأمر بشكل ممنهج وتدريجي، ما أنت بحاجة إلى التركيز عليه حاليًا هو دراسة دورة علوم الحاسوب لتأسيسك في مجال البرمجة، وبعد الإنتهاء ستتمكن من تحديد المجال الذي تريد دراسته من خلال الدورات الأخرى. وستجد في وصف كل دورة ما الذي ستتعلمه وأيضًا ما الفئة التي تم إعداد الدورة لها أي الأشخاص المناسبين للدورة، وستتمكن من فهم ما يتم ذكره في وصف الدورة بعد دراستك لدورة علوم الحاسوب.1 نقطة
-
يعد مجال برمجة التطبيقات أحد التخصصات المربحة والمطلوبة بكثرة في سوق العمل التقني، فإذا كنت مهتمًا بأن تصبح مبرمج تطبيقات محترف وترغب بالتعرف على كافة أنواع التطبيقات سواء تطبيقات الجوال أو تطبيقات الويب أو تطبيقات سطح المكتب وتتساءل عن المهارات والتقنيات التي عليك تعلمها للعمل في هذا التخصص وضمان مستقبل وظيفي واعد فتابع قراءة المقال حتى النهاية. من هو مبرمج التطبيقات قبل أن نشرح من هو مبرمج التطبيقات دعنا نوضح بداية ما معنى كلمة تطبيق application أو ما يعرف بالبرنامج التطبيقي application program، إن كلمة تطبيق تعني ببساطة برنامجًا مصممًا لأداء مهمة محددة أو ربما مجموعة متنوعة من المهام من خلال جهاز الحاسوب أو الهاتف الجوال أو الجهاز اللوحي أو غيرها من الأجهزة القابلة للبرمجة فكل مهمة محددة تقوم بها على أحد أجهزتك تلك لها تطبيق محدد يساعدك على أدائها. وبالتالي مبرمج التطبيقات applications programmer أوما يعرف بمطور التطبيقات application developer هو الشخص المسؤول عن كتابة كافة الشيفرات البرمجية الضرورية لعمل التطبيق واختبارها وضمان تنفيذها بشكل صحيح خالٍ من أية أخطاء،كما أنه مسؤول عن تعديل التطبيقات وتطويرها عند الحاجة لتتوافق مع متطلبات المستخدمين واحتياجات العمل المتغيرة وقد يتولى مبرمج التطبيقات كذلك مسؤولية رفع التطبيقات إلى المتاجر المتخصصة والالتزام بكافة الشروط والإرشادات المطلوبة لقبول التطبيقات فيها. أنواع مبرمجي التطبيقات عندما تنوي العمل كمبرمج تطبيقات ستلاحظ وجود تنوع كبير التخصصات وفي أنواع التطبيقات التي يمكنك تعلم تطويرها وأبرز هذه الأنواع هي: مبرمج تطبيقات سطح المكتب مبرمج تطبيقات الويب مبرمج تطبيقات الجوال والأجهزة المحمولة مبرمج تطبيقات الويب التقدمية مبرمج تطبيقات الأجهزة الملبوسة لنتعرف على طبيعة عمل كل تخصص من هذه التخصصات والتقنيات التي تحتاج إلى تعلمها للعمل فيه. مبرمج تطبيقات سطح المكتب هو المبرمج المسؤول عن تطوير البرامج والتطبيقات التي تعمل على أجهزة الحاسوب المكتبية والحواسيب المحمولة والتي تعمل على نظام التشغيل مباشرةً وتستخدم موارده حيث تكون هذه التطبيقات مخصصة للعمل على نظام تشغيل محدد مثل ويندوز أو لينكس أو ماك أو إس، بالرغم من أن تطبيقات الويب وتطبيقات الجوال أخذت تنتشر بكثرة في الآونة الأخيرة إلا أن تطبيقات سطح المكتب لازالت مطلوبة في سوق العمل لاسيما في المؤسسات والشركات التي تحتاج إلى تطبيقات محلية التي لا تشترط الاتصال بالإنترنت لتعمل أو تلك التي تتطلب درجة أمان كبيرة أو سرعة تنفيذ عالية. تطور تطبيقات سطح المكتب باستخدام لغات برمجة متخصصة مثل بايثون Python أو جافا java أو C++، وللاطلاع على مزيد من التفاصيل حول هذا التخصص وتقنياته المختلفة أنصح بمطالعة مقال برمجة تطبيقات سطح المكتب. مبرمج تطبيقات الويب هو المطور المسؤول عن برمجة التطبيقات المصممة للعمل عبر أحد متصفحات الإنترنت مثل جوجل كروم أو فايرفوكس والتي يتم الوصول إليها من خلال عنوان URL محدد خاص بكل تطبيق. تطور هذه التطبيقات عادة على مرحلتين أو مستويين هما الواجهة الأمامية frontend التي يطورها مطور الواجهات الأمامية باستخدام تقنيات الويب الأساسية وهي HTML و CSS وجافا سكريبت والواجهة الخلفية backend التي يطورها مطور الواجهات الخلفية باستخدام لغات برمجة مثل PHP أو بايثون Python أو جافا سكريبت مع بيئة Node.js ويمكن للشخص بالطبع التخصص في تطوير الواجهتين معًا وتعلم كافة التقنيات المطلوبة لكل منهما وفي هذه الحالة يطلق عليه اسم مطور كامل full stack developer. ولمطالعة المزيد من المعلومات حول تطوير تطبيقات الويب وأهم المسؤوليات التي عليك القيام بها والتقنيات التي عليه تعلمها لتصبح مطور ويب محترف أنصحك بمشاهدة هذا الفيديو: كما يمكن أيضًا الرجوع إلى مقال تطوير الواجهة الأمامية لمواقع الويب Frontend Web Development ومقال تطوير الواجهة الخلفية لمواقع الويب Backend Web Development. مبرمج تطبيقات الجوال مبرمج تطبيقات الجوال هو المسؤول عن تصميم وبرمجة تطبيقات مصممة للعمل على الأجهزة المحمولة باختلاف أنواعها سواء الهواتف الذكية أو الأجهزة اللوحية والتي ترفع عادةً على متاجر التطبيقات الرسمية مثل جوجل بلاي Google Play ومتجر تطبيقات آبل App Store كي يتمكن المستخدمون من تثبيتها على أجهزتهم. تعد برمجة تطبيقات الجوال مجال عمل مربح ومطلوب بكثرة في سوق العمل نظرًا للاعتماد المتزايد على الهواتف الذكية والأجهزة المحمولة لأداء مختلف المهام، وكي تصبح مطور تطبيقات جوال عليك قبل كل شيء تحديد المنصات أو الأنظمة التي تريد تطوير تطبيقات لها وأبرز هذه المنصات هي أندرويد Android و أي أو إس iOS. يمكنك بعدها تطوير تطبيقات الجوال الأصيلة native mobile apps المخصصة للعمل على إحدى هذه المنصات أو تطوير تطبيقات جوال عابرة للمنصات cross-platform mobile apps والبدء بتعلم لغات البرمجة وأطر العمل اللازمة النوع الذي اخترته من هذه التطبيقات. على سبيل المثال لتطوير تطبيقات أندرويد أصيلة يمكنك تعلم لغة البرمجة جافا ولتطوير تطبيقات iOS أصيلة يمكنك تعلم لغة سويفت swift أو Objective-C ولتطوير تطبيقات جوال عابرة للمنصات فيمكنك استخدام نفس التقنيات المستخدمة في تطوير تطبيقات الويب. ولمطالعة المزيد من التفاصيل حول هذا الاختصاص وأهميته ومنصاته المختلفة أنصح بمطالعة مقال برمجة تطبيقات الجوال كما أنصح بمشاهدة الفيديو التالي: مبرمج تطبيقات الويب التقدمية Progressive Web Apps مبرمج تطبيقات الويب التقدمية أو ما يعرف اختصارًا PAWs هو المطور المسؤول عن تطوير نوع مخصص من تطبيقات الويب التي تعمل بطريقة مشابهة لتطبيقات الأجهزة المحمولة فهي تثبت على جهاز المستخدم بنفس طريقة تثبيت تطبيقات الجوال لكن الفرق بينها وبين تطبيقات الجوال هو أنها تعمل داخل نافذة المتصفح وتعتمد على واجهات برمجة تطبيقات الويب Web APIs للوصول إلى موارد الجهاز ويمكنها العمل حتى دون وجود اتصال بالانترنت. يجمع هذا النوع من التطبيقات بين مميزات تطبيقات الجوال وتطبيقات الويب وتكون متوافقة مع كافة أنواع الأجهزة وأنظمة التشغيل كما أنها تعمل بنفس الكفاءة سواء على أجهزة سطح المكتب أو الأجهزة المحمولة وتستخدم في برمجتها نفس التقنيات المستخدمة في تطوير تطبيقات الويب أيضًا. وللاطلاع على مزيد من التفاصيل حول هذا النوع من التطبيقات وأهميتها والتقنيات المستخدمة في برمجتها أنصحك بمطالعة مقال ما هي تطبيقات الويب التقدمية PWA. مطور تطبيقات الأجهزة الملبوسة هو المبرمج الذي يتخصص في تطوير تطبيقات مخصصة للعمل على الأجهزة القابلة للارتداء مثل الساعات الذكية وسماعات الرأس الذكية والنظارات الذكية وغيرها وتعتمد هذه التطبيقات في عملها على تقنية إنترنت الأشياء IoT وهي تتميز بتأدية وظائف محدودة مقارنة بتطبيقات الهاتف المحمول كما أنها تتطلب الحصول على مدخلات أقل من المستخدم. يتوقع أن يزداد الطلب على تطوير تطبيقات الأجهزة الملبوسة نظرًا للسهولة والسرعة التي توفرها في أداء المهام مقارنة بالهواتف المحمولة وأجهزة الحاسوب، ولتعلم تطوير هذا النوع من التطبيقات عليك تحديد الجهاز المحدد الذي تريد تطوير تطبيق مخصص له هل هو ساعة ذكية أو نظارة أو جهاز طبي أو غير ذلك كما يتوجب عليك تحديد نظام التشغيل الخاص المستهدف على سبيل المثال تستخدم الساعات الذكية لآبل نظام watchOS في حين تستخدم ساعات Galaxy الذكية نظام Wear OS وبعدها عليه تحديد التقنيات اللازمة لتطوير هذا التطبيق حيث أن لكل نظام تقنيات خاصة به. مزايا مطور التطبيقات إذا كنت ترغب بأن تصبح مبرمج تطبيقات لكنك لا تزال متردد بشأن هذا الأمر دعنا نستعرض لك العديد من الفوائد والإيجابيات التي يوفرها لك الاختصاص: تعد برمجة التطبيقات مهنة ذات طلب مرتفع وسريع النمو في سوق العمل نظرًا لشهرة التطبيقات وازدياد الاعتماد عليها لأداء المهام المختلفة. يضمن مبرمج التطبيقات المحترف الحصول على راتب مرتفع مقارنة ببقية المهن. يمكن لمبرمج التطبيقات الاستفادة من ميزة العمل عن بعد إذا كان يفضل العمل ضمن ساعات عمل مرنة لا يلتزم بمكان محدد. يمكن تطبيق المهارات التي تتعلمها كمبرمج تطبيقات في مجالات متعددة، مثلًا يمكنك من خلال تعلم لغة البرمجة بايثون لتطوير تطبيقات سطح المكتب وتطبيقات الويب وتطبيقات الأجهزة الملبوسة. لغات برمجة التطبيقات ذكرنا في الفقرات السابقة العديد من التقنيات واللغات التي يمكن لمبرمج التطبيقات تعلمها للتخصص في برمجة كل نوع من أنواع التطبيقات، وفي هذه الفقرة نطلعك على قائمة بأبرز اللغات وأطر العمل المستخدمة في تطوير التطبيقات: لغة بايثون Python: من أشهر لغات البرمجة متعددة الأغراض التي تصلح لمختلف التطبيقات حيث يمكنك من خلال تعلمها تطوير تطبيقات متنوعة سواء تطبيقات سطح المكتب أو تطبيقات الويب أو تطبيقات إنترنت الأشياء كما توفر بايثون العديد من أطر العمل مثل العمل جانغو Django وفلاسك Flask التي تسهل عليك عملية التطوير وتسرع إنتاجيتك بشكل كبير. لغة جافا سكريبت JavaScript: التي تستخدم بشكل أساسي لتطوير تطبيقات الويب سواءً في برمجة الواجهات الأمامية للتطبيقات والمواقع أو برمجة الواجهات الخلفية من خلال استخدام بيئة التشغيل Node.js. لغة جافا: تعد جافا إحدى لغات البرمجة القوية ومتعددة الاستخدامات التي تمكن المطورين من إنشاء العديد من التطبيقات القوية والآمنة والمتوافقة مع مختلف المنصات وأنظمة التشغيل سواء تطبيقات الأندرويد Android أو تطبيقات IOS أو تطبيقات سطح المكتب. C#: هي لغة برمجة عامة الأغراض تستخدم بشكل أساسي لإنشاء تطبيقات سطح المكتب لنظام التشغيل ويندوز وصناعة الألعاب بالاستعانة بمحرك تطوير الألعاب يونيتي Unity وتطوير تطبيقات الويب الديناميكية بالاعتماد على منصة دوت نت .NET. لغة C++: لغة برمجة قوية ومتعددة الأغراض تستخدم بشكل أساسي لتطوير أنظمة التشغيل وتطبيقات سطح المكتب. لغة PHP هي لغة برمجة نصية تستخدم بشكل أساسي لتطوير الواجهات الخلفية لتطبيقات الويب. لغة HTML5 و CSS3: وهما تستخدمان بشكل أساسي إلى جانب لغة جافا سكريبت لتطوير الواجهات الأمامية لتطبيقات الويب. كما يحتاج مبرمج التطبيقات إلى فهم أنواع قواعد البيانات ومميزات كل منها وأنظمة إدارة قواعد البيانات المختلفة مثل MySQL و MongoDB لتخزين بيانات التطبيقات والتعامل معها بكفاءة. ويحتاج مبرمج التطبيقات كذلك إلى فهم أنظمة التشغيل المختلفة التي يريد استهدافها في تطبيقاته مثل أنظمة تشغيل سطح أندرويد Android و iOS عند التخصص في برمجة تطبيقات الجوال. كانت هذه قائمة بأبرز التقنيات المستخدمة في تطوير التطبيقات ولست بحاجة إلى معرفة كل هذه اللغات والتقنيات بالطبع لتكون مبرمج تطبيقات ناجح، بل ينبغي أن تركز على تعلم مجموعة التقنيات التي تناسبك حسب أهدافك واهتماماتك وطبيعة التطبيقات التي ترغب بتطويرها. نصائح لتصبح مبرمج تطبيقات محترف أيًا كان نوع التطبيقات التي تقوم بتطويرها إليك أهم النصائح التي عليك اتباعها لتعلم برمجة التطبيقات باحترافية والنجاح في سوق العمل: حدد نوع التطبيقات التي تفضل تطويرها وركز على تعلم لغات البرمجة وأطر العمل اللازمة لتطوير هذا النوع من التطبيقات ولا تشتت نفسك بكثرة التقنيات. طور مهاراتك في التفكير المنطقي وحل المشكلات فهذا يساعدك على برمجة التطبيقات بصورة أسرع وأكثر احترافية وحل أي أخطاء برمجية تحدث خلال عملية التطوير. تعلم منهجيات تطوير التطبيقات مثل تقنية آجايل Agile التي تساعدك على تحليل متطلبات التطبيق والتخطيط له وتنفيذه بشكل أسرع لا سيما في المشاريع البرمجية الضخمة. طور عدة تطبيقات تقوم بمهام متنوعة فهذا يعزز من قدرتك على كتابة الشيفرات وحل المشكلات البرمجية وأنشئ من خلالها معرض أعمالك الخاص. تعلم مهارات التواصل فغالبًا ما يعمل مبرمجو التطبيقات ضمن فرق عمل ويحتاجون للتواصل مع باقي أعضاء الفريق كما أنهم سيحتاجون للتواصل مع العملاء وفهم متطلباتهم بشكل دقيق. إذا كنت تفضل العمل الحر المعتمد على المشاريع يمكنك عرض خدماتك كمبرمج تطبيقات في مواقع العمل الحر مثل مستقل وخمسات وإذا كنت تفضل العمل ضمن فريق متعاون يمكنك أن تتقدم لفرص العمل التي توفرها الشركات المتخصصة. الخلاصة تعرفت في هذا المقال على الخطوات التي ينبغي عليك اتباعها وأهم التقنيات واللغات التي عليك تعلمها كي تصبح مبرمج تطبيقات محترف وناجح في سوق العمل، ووضحنا أهم المسؤوليات التي تقع على عاتقك عند التخصص في هذا المجال. هل أنت متحمس للعمل في مجال برمجة التطبيقات وتجد أن لقب مطور التطبيقات مناسب لك؟ شاركنا في التعليقات ما هي التطبيقات التي ترغب بالتخصص في تطويرها. اقرأ أيضًا دليلك الشامل إلى برمجة التطبيقات تطوير التطبيقات المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع1 نقطة
-
تلعب برمجة التطبيقات دورًا مهمًا في توفير خدمات وأدوات تساعدنا وتحسن من إنتاجية أعمالنا اليومية سواء على الصعيد الشخصي أو على صعيد الشركات والمؤسسات، فنحن نتعامل يوميًا مع عدد كبير من التطبيقات على حواسبنا وهواتفنا الذكية وغيرها من الأجهزة، وهذه التطبيقات تلبي مختلف متطلبات حياتنا كالبرامج المكتبية ومشغلات الوسائط وتطبيقات المتاجر الإلكترونية ووسائل التواصل الاجتماعي والألعاب وحتى تطبيقات الطبخ والرياضة والبودكاست وغيرها، ولا نستطيع أن نتخيل حياتنا اليوم دونها والفضل يعود إلى تخصص علوم الحاسوب وهندسة البرمجيات -وضمنها البرمجة- المصانع التي تُنتج لنا تلك التطبيقات المختلفة. سنسلط الضوء في مقال اليوم على كل ما يخص مجال برمجة التطبيقات باختلاف أنواعها، ونتعرف على أهم التقنيات والأدوات المستخدمة في تطوير كل نوع من هذه الأنواع، ونختم بأهم النصائح والمصادر المفيدة التي تساعدك في تعلم برمجة التطبيقات بسرعة واحترافية. ما هي التطبيقات؟ التطبيق application أو ما يعرف باسم البرنامج التطبيقي application program أو اختصارًا برنامج program هو نوع خاص من البرامج مصمم ليساعدك على أداء وظيفة محددة ومباشرة بواسطة جهاز الحاسوب أو الجوال أو غيرها من الأجهزة القابلة للبرمجة فهو يُبرمج أساسًا باستخدام حاسوب، وبدون وجود التطبيقات على هذه الأجهزة لن تتمكن من الاستفادة من الحاسوب وعتاده المكون أساسًا من معالج وذاكرة ووحدة تخزين ولن تستطيع أداء المهام والعمليات بالاستعانة بذلك العتاد. على سبيل المثال بدون تطبيقات متصفح الإنترنت على حاسوبك لن تتمكن من البحث عبر الإنترنت وبدون تطبيق المنبه على جوالك لن تتمكن من ضبط ساعة جوالك على تنبيهك في وقت محدد وبدون تطبيقات الشبكات الاجتماعية المختلفة لن يكون بإمكانك تصفح حسابات التواصل الاجتماعي الخاصة بك…إلخ. فلكل مهمة محددة تقوم بها على أجهزتك هناك تطبيق محدد يساعدك. ما الفرق بين البرمجيات وبين التطبيقات والبرامج؟ قد يكون هناك فارق بين مصطلح تطبيق application أو برنامج program المستخدمين غالبًا بشكل متبادل للدلالة على الأمر نفسه وبين مصطلح برمجية software الذي يُطلق أحيانًا على التطبيق وأحيانًا على برمجية مكونة من عدة تطبيقات أو منتج إلكتروني يوفر مجموعة حلول متكاملة مثل نظام التشغيل. كما أن مصطلح برمجيات softwares يستخدم للدالة على الأجزاء غير الملموسة للحاسب ومنها نظام التشغيل وهو معاكس لمصطلح hardware الذي يعني عتاد الحاسب أو الأجزاء المادية الملموسة التي يتكون منها الحاسب. ولمعرفة المزيد من المعلومات حول الفرق بينهما يمكنك مطالعة المناقشة ما هو الفرق بين Software و Hardware وما هي العلاقة بينهما؟. برمجة التطبيقات وسوق العمل تعد برمجة التطبيقات أحد مجالات البرمجة الرائجة والمطلوبة بكثرة في سوق العمل فمعظم الشركات في جميع المجالات تبحث اليوم عن مبرمجي تطبيقات للعمل لديها لبرمجة التطبيقات الخاصة بها أو لصيانة تحسين التطبيقات الجاهزة التي تستخدمها. وقد بين الاستبيان الذي أصدره موقع Stack Overflow الشهير نهاية عام 2022 الذي شارك به آلاف المبرمجين والمطورين حول العالم أن أول أكثر خمس مهن يعمل بها التقنيون حول العالم متعلقة ببرمجة التطبيقات وشملت تطبيقات الويب باختلاف أنواعها كتطوير الواجهة الأمامية أو الخلفية أو التطوير الكامل وتطبيقات سطح المكتب وتطبيقات الجوال وهذا إن دل على شيء فإنما يدل على أهمية هذا التخصص وطلبه المتنامي في سوق العمل. كما أن برمجة التطبيقات تخصص مربح وعالي الأجر فبحسب نفس الاستبيان يمكن أن يصل متوسط الراتب السنوي لمطور التطبيقات في الولايات المتحدة الأمريكية لغاية 68 ألف دولار وهذه الأرقام تتفاوت بالطبع حسب المنطقة الجغرافية وسنوات الخبرة إلا أنها تبقى مرتفعة مقارنة ببقية المهن والوظائف الأخرى، ففي حال قررت التخصص في برمجة التطبيقات على اختلاف أنواعها فستضمن بلا شك الحصول على وظيفة مجزية وتكسب امتيازات وظيفية رائعة وتحقق الأمان الوظيفي. فإذا كنت تحب تخصص البرمجة وكتابة الشيفرات وتملك تفكيرًا إبداعيًا وقدرة على حل المشكلات وتفضل نظام العمل المعتمد على المشاريع أو العمل عن بعد في بيئة عمل مرنة فإن برمجة التطبيقات مسار وظيفي مناسب لك حتمًا لذا لا تضيع وقتك وابدأ بتحديد نوع التطبيقات التي تفضلها وابدأ فورًا بتعلم أدواتها وتقنياتها. أهمية برمجة التطبيقات برمجة التطبيقات واحدة من أهم التخصصات في عالمنا الحديث فلا غنى عنها في عصر التطور التقني الذي نشهده اليوم، وتأتي أهمية التخصص في مجال برمجة التطبيقات من أهمية التطبيقات نفسها والفوائد التي تعود بها على الأفراد والأعمال التجارية على حد سواء. وفيما يلي قائمة ببعض الفوائد التي يمكن أن تعود على الأعمال التجارية من برمجة التطبيقات: تساهم التطبيقات في أتمتة أعمال الشركات وتنظمها وتبسط إجراء الحسابات والمعاملات المعقدة. تساعد برمجة تطبيقات الويب والجوال الشركات على توسيع نطاق عمل الشركات والوصول إلى المستخدمين عبر كافة المنصات ومختلف الأسواق. تساهم التطبيقات المعتمدة على الإنترنت في بناء قناة اتصال فعالة مع العملاء وإطلاعهم على آخر العروض والمستجدات. تحسن التطبيقات تجربة العملاء وتمكنهم من إنجاز معاملاتهم بسرعة وسلاسة ما يساهم بدوره في كسب مزيد من العملاء وزيادة الإيرادات. تساعد التطبيقات في جمع البيانات المختلفة حول العمل وتمكن من تحليل هذه البيانات باستخدام أدوات التحليل المناسبة والحصول على معلومات قيمة لتطوير العمل واستهداف الأسواق المناسبة. خطوات برمجة التطبيقات رغم التنوع الكبير في أنواع التطبيقات وخصائصها إلا أن برمجة التطبيقات تتبع دومًا نفس الخطوات في برمجتها وهذه الخطوات هي كالتالي وضع متطلبات التطبيق: تحدد هذه الخطوة كافة الوظائف والميزات التي تريد تضمينها في التطبيق وتحتاج للمناقشة مع العميل أو صاحب التطبيق لتحديد كافة المواصفات بدقة. تصميم واجهات التطبيق: في هذه الخطوة عليك وضع نماذج أو تصاميم أولية لتطبيقك بالاستعانة ببرامج تصميم واجهات المستخدم UI مثل فيجما Figma أو أدوبي إكس دي Adobe XD. برمجة التطبيق: وهي أهم خطوة ففيها يبدأ العمل الفعلي لتطوير التطبيق وتتم كتابة الأكواد البرمجية التي تحقق تصميم التطبيق ووظائفه التي تم تحديدها في الخطوات السابقة. اختبار التطبيق ونشره: بعد الانتهاء من برمجة التطبيق تبدأ مرحلة اختباره والتأكد من أنه خالي من الأخطاء ويعطي نتائج صحيحة وبعدها يتم نشره وإتاحته للاستخدام من قبل المستخدمين. الفرق بين برمجة التطبيقات وتطوير التطبيقات قد تتساءل عن الفرق بين برمجة التطبيقات وتطوير التطبيقات وهل هما الشيء نفس الشيء؟ الجواب نعم تقريبًا فمصطلح برمجة التطبيقات ومصطلح تطوير التطبيقات يستخدمان بالتبادل ويعنيان في الواقع الأمر ذاته ويشيران إلى عملية تصميم وإنشاء واختبار وتشغيل تطبيقات تلبي احتياجات المستخدمين. وأحيانًا يشير مصطلح تطوير التطبيقات إلى عملية تطوير التطبيق ككل وهي الخطوات السابقة الذي ذكرناها للتو كلها بينما تقتصر برمجة التطبيقات على الخطوة الثالثة فقط لذلك ستجد في مقال تطوير التطبيقات أنه يركز على منهجيات تطوير التطبيقات وطرقها أكثر من تركيزه على الجانب البرمجي ولغات البرمجة. وتجدر الإشارة لأن برمجة التطبيقات لا تشير بشكل محدود إلى تطبيقات الهواتف الذكية فقط بل يشمل على اختلاف أنواعها والتي سنتطرق لها بالتفصيل في فقرتنا التالية. أنواع التطبيقات قبل أن نشرح تقنيات برمجة التطبيقات من المهم معرفة الأنواع المختلفة للتطبيقات التي نحتاج إلى استخدامها فكما هو معروف هناك طيف واسع من التطبيقات المتنوعة التي تعمل على أنظمة ومنصات مختلفة وبرمجة التطبيق ولغات البرمجة والأدوات المستعملة تختلف باختلاف النوع. عند برمجة التطبيقات ستلاحظ أن وجود عدة أنواع من التطبيقات وهي: تطبيقات الحاسوب (سطح المكتب) تطبيقات الويب تطبيقات الجوال والأجهزة المحمولة تطبيقات الأجهزة الملبوسة دعنا نستكشف في فقراتنا التالية مميزات كل نوع من هذه التطبيقات وآلية عملها والفروقات الأساسية فيما بينها وأهم لغات البرمجة والتقنيات المستخدمة في برمجة التطبيقات على اختلاف أنواعها. تطبيقات الحاسوب (سطح المكتب) تعرف تطبيقات البرامج باسم تطبيقات الحاسوب أو الاسم الشائع سطح المكتب -إشارة إلى الحاسوب المكتبي والذي يدخل ضمنه الحاسوب المحمول أيضًا- وهي برامج مصممة للعمل على أجهزة الحاسوب وهي تعمل مع نظام التشغيل مباشرة وتُثبَّت عليه. لذا فإن برمجة تطبيقات سطح المكتب تعني إنشاء برامج مخصصة لأجهزة الحاسوب المكتبية والمحمولة. تستخدم هذه التطبيقات موارد النظام لأداء وظائفها وتخزن كل ملفاتها وبياناتها على الحاسوب نفسه وتعمل بشكل منفصل على أنظمة تشغيل الحواسيب مثل ويندوز Windows ولينكس Linux وماك أو إس macOS حيث يحتوي كل نظام من أنظمة التشغيل هذه على مجموعة أوامر خاصة به للوصول إلى موارد وخدمات الجهاز كما أنها تخزن البيانات بشكل محلي مما يسمح للمستخدمين بالوصول إلى كامل وظائف التطبيق دون الحاجة إلى الاتصال بالإنترنت. تُبرمج هذه التطبيقات لكل نظام تشغيل على حدة مثلًا تطبيق ويندوز وهو ملف ينتهي غالبًا بالامتداد exe. لن يعمل على تطبيق ماك الذي ينتهي بالامتداد app. أو حتى لينكس ولو كان التطبيق نفسه ويحتاج إلى برمجة كاملة من جديد، وأحيانًا يُلجأ إلى أدوات برمجة قادرة على برمجة تطبيق واحد ونشره على مختلف أنظمة التشغيل وهذا ما سنتطرق إليه في قسم البرمجة. توجد أمثلة كثيرة على تطبيقات سطح المكتب تتفاوت فيما بينها من حيث التعقيد والوظائف التي تؤديها، مثل مايكروسوفت أوفيس Microsoft Office والرسام والآلة الحاسبة ومشغل الوسائط ومكافح الفيروسات أمثلة على تطبيقات سطح المكتب كما أن الألعاب تندرج ضمن هذه الفئة فهي في النهاية برامج تؤدي وظيفة معينة وهي اللعب والترفيه. تتطلب بعض تطبيقات سطح المكتب مواصفات وموارد معينة للمعالج أو وحدة معالجة رسومات GPU أو سعة ذاكرة الوصول العشوائي أو إصدار محدد من نظام التشغيل وتوفر مساحة تخزين كافية كي تتمكن من العمل على حاسوبك. ولاستخدام تطبيق سطح المكتب عليك أولًا تنزيل البرنامج المتوافق مع نظام تشغيلك وموارد جهازك على جهاز الحاسوب الخاص بك من المتجر المخصص، فلكل نظام متجره الخاص مثل متجر تطبيقات مايكروسوفت المخصص لنظام ويندوز Windows App Store أو متجر تطبيقات ماك Mac App Store أو تبحث عن الإصدار المناسب لك للتطبيق من داخل موقعه الرسمي ثم تقوم بتثبيت هذا التطبيق على جهازك وبعد اكتمال عملية التثبيت يمكنك تشغيله ولتسهيل العثور على التطبيق وتشغيله بسرعة تضع معظم تطبيقات سطح المكتب أيقونات خاصة بها على سطح المكتب. تطبيقات الويب تطبيق الويب web application أو اختصارًا web app هو برنامج تفاعلي تم إنشاؤه باستخدام تقنيات الويب الأساسية HTML و CSS وجافا سكريبت JavaScript وهو يخزن ملفات التطبيق والبيانات فيه على خادم ويب بعيد ويعالج هذه البيانات. تُشغَّل تطبيقات الويب عبر أحد متصفحات الإنترنت مثل جوجل كروم أو فايرفوكس والانتقال إلى عنوان URL محدد خاص بالتطبيق ويعد محرر مستندات جوجل مثالًا على تطبيق ويب. قد يملك تطبيق الويب بعض القيود على استخدام الموارد مثل قيود على استخدام الكاميرا أو الميكروفون على أجهزة معينة، وقد يمنع من التفاعل مع جوانب معينة من نظام التشغيل مثل منع التطبيق من إرسال الإشعارات هذا لأنه يُشغل ضمن حاوية وسيطة تصله مع نظام التشغيل وهو المتصفح ويحتاج إلى اتصال بالإنترنت على عكس تطبيقات سطح المكتب التي تتواصل مباشرة مع نظام التشغيل ولا تحتاج إلى اتصال إنترنت -عادةً- لذلك فهي أسرع تفاعلًا وأكثر أمانًا. كي تتمكن من برمجة تطبيقات الويب يجب أن تضع بالحسبان أن هذه التطبيقات لها طرفان أو جهتان هما طرف العميل أو ما يعرف بالواجهة الأمامية للتطبيق وهي تتضمن المحتوى الذي تراه عند التفاعل مع تطبيقك مثل القوائم والأزرار والرسوم المتحركة، وطرف الخادم أو ما يعرف بالواجهة الخلفية للتطبيق وهي المسؤولة عن إدارة الخادم وإدارة البيانات عبر قواعد البيانات وتحقيق وظائف الموقع. يمكنك تعلم برمجة الواجهة الأمامية Front-End Developer أو برمجة الواجهة الخلفية Back-End Developer فلكل منهما تقنيات وأدوات مخصصة سنفصلها في الفقرة التالية وفي حال كنت مسؤولًا عن برمجة كل من الواجهة الأمامية والخلفية بذات الوقت سيطلق عليك اسم مطور كامل Full Stack Developer. تطبيقات الويب التقدمية PWAs تطبيقات الويب التقدمية Progressive Web Apps أو اختصارًا PWA ويطلق عليها أيضًا اسم تطبيقات الويب للجوال Mobile web apps هي نوع حديث من تطبيقات الويب طورتها شركة جوجل كي تسمح لتطبيقات الويب بالعمل بطريقة مشابهة لتطبيقات الأجهزة المحمولة إلا أنها تطبيقات تعمل على المتصفح وهي بالأساس تطبيقات ويب مُغلفة بحاوية ويب مخصصة تُسمى على أجهزة الجوال عادة WebView توفر لها هذه الميزات يتم تحميلها فورًا بغض النظر عما إذا كنت متصلاً أو غير متصل بالإنترنت. وهي متوافقة مع كافة أنواع الأجهزة وأنظمة التشغيل ولكنها تسمح بالوصول فقط إلى ميزات النظام الأساسي التي توفرها المتصفحات. يسمح لك بتحميل هذه التطبيقات على المتاجر الرسمية مثل متجر جوجل بلاي ومتجر تطبيقات آبل وتثبيتها على أنظمة التشغيل ويندوز وماك بخلاف تطبيقات الويب العادية، وعند تشغيلها لا يبدو لك أنك في المتصفح بل يبدو أنك تشغل تطبيق جوال أو سطح مكتب عادي ومن الأمثلة على هذا النوع من التطبيقات نذكر Google Office Suite وتويتر لايت Twitter Lite وأوبر Uber و Pinterest …إلخ. وانظر مقال جعل تطبيق الويب التقدمي PWA يبدو كتطبيق أساسي في نظام التشغيل لمزيد من التفاصيل. يمكن لهذه التطبيقات العمل في الخلفية إذا توفر اتصال بالإنترنت من خلال تقنية خاصة تسمى منجز الخدمة service worker وهي تستفيد من ميزة ذاكرة التخزين المؤقت في المتصفحات، وقد بدأ هذا النوع من التطبيقات يلقى رواجًا بين أوساط المستخدمين لا سيما أصحاب الأعمال الصغيرة ورغم ذلك لا يزال دعم نظام التشغيل لهذه التطبيقات محدودًا عند مقارنتها بتطبيقات الأجهزة المحمولة أو سطح المكتب كما أن العديد من الأجهزة والمتصفحات لا تدعم جميع وظائف التطبيقات التقدمية. ولمعرفة المزيد حول تطبيقات الويب التقدمية وفوائدها يمكنك الاطلاع على مقال ما هي تطبيقات الويب التقدمية PWA؟ تطبيقات الجوال والأجهزة المحمولة Mobile Apps تطبيقات الجوال Mobile applications أو ما يعرف اختصارًا بالتطبيقات apps هي تطبيقات مصممة للعمل على الأجهزة المحمولة مثل الهواتف الذكية أو الأجهزة اللوحية ويتم تحميلها من متاجر التطبيقات الرسمية مثل جوجل بلاي Google Play ومتجر تطبيقات آبل App Store التي تضم ملايين التطبيقات المتنوعة التي تخدم كافة الأغراض والاستخدامات مثل تطبيقات شبكات التواصل الاجتماعي والأخبار والألعاب والصحة والرياضة والطبخ والتعليم وغيرها. تتضمن متاجر التطبيقات الرسمية ملايين التطبيقات المتنوعة التي تخدم كافة الأغراض والاستخدامات مثل تطبيقات شبكات التواصل الاجتماعي والأخبار والألعاب والتغذية والرياضة والصحة والتعليم والخرائط والتنقل GPS …إلخ. تقسم تطبيقات الجوال إلى عدة أنواع هي: تطبيقات الجوال الأصيلة Native mobile apps وهي تطبيقات مخصصة للعمل على جهاز محمول معين ولنظام تشغيل معين فقط. تطبيقات الجوال الهجينة Hybrid mobile apps وهي تطبيقات تستخدم تقنيات الويب لبناء تطبيقات الجوال وتعد بمثابة حل وسط بين التطبيقات الأصيلة وتطبيقات الويب. تطبيقات الأجهزة الملبوسة Wearable Devices App هي تطبيقات مخصصة للعمل على الأجهزة القابلة للارتداء وأشهرها الساعات الذكية والنظارات الذكية وكاميرات المراقبة وسماعات الرأس الذكية وتعتمد على تقنية إنترنت الأشياء IoT. شاعت هذه التطبيقات حديثًا بسبب الانتشار الكبير للأجهزة الإلكترونية الذكية القابلة للارتداء وتُصنف أحيانًا ضمن تطبيقات الأجهزة المحمولة لأننا تتشابه نوعًا ما بعملية البرمجة فغالبية أنظمة تشغيل الأجهزة الملبوسة هي آندرويد حاليًا وبعضها له نظام تشغيل خاص مثل المنتجات التي تصدرها شركة آبل وغيرها. لغات برمجة التطبيقات في هذه الفقرة سنوضح أهم التقنيات والأدوات التي تستخدم في برمجة التطبيقات على اختلاف أنواعها فلكل نوع من أنواع التطبيقات التي ذكرناها سابقًا لغات وأدوات برمجية متخصصة. لغات برمجة تطبيقات سطح المكتب كي تتمكن من برمجة تطبيقات سطح المكتب عليك تعلم إحدى لغات البرمجة المتخصصة مثل: #C ++C Objective-C جافا Java بايثون Python روبي Ruby جافا سكريبت JavaScript سويفت Swift جو Go يمكنك برمجة تطبيق سطح مكتب بالكامل من البداية بالاعتماد على إحدى لغات البرمجة فقط كل ما عليك هو تحديد نظام التشغيل الذي تريد تطوير تطبيقك له ثم تختار إحدى لغات البرمجة المناسبة لذلك النظام حيث تعد لغات مثل C++ و C# مفضلة عند برمجة تطبيقات ويندوز، بينما تستخدم Objective-C في برمجة تطبيقات ماك أو إس macOS …إلخ. لكن انتبه إن برمجة التطبيقات بهذه الطريقة قد يستغرق منك وقتًا طويلاً وجهدًا مضاعفًا إن كنت تريد برمجة تطبيق يعمل على نظامي تشغيل مثل ويندوز وماك، لذا يمكنك الاعتماد على خيار آخر وهو تعلم المنصات أو أطر العمل المساعدة التي تسرع من مهمة تطوير تطبيقات سطح المكتب وتحسن عملك من خلال توفير الكثير من العناصر الجاهزة وقد تمكنك من تطوير التطبيقات مرة واحدة متوافقة مع عدة أنظمة تشغيل ومن أبرز هذه المنصات: منصة إلكترون Electron JS وهي منصة مخصصة لتطوير تطبيقات تعمل على أنظمة ويندوز ولينكس وماك باستخدام نفس الكود البرمجي فهي تستخدم تقنيات تطوير الويب لتطوير تطبيقات سطح المكتب، ومن أشهرها تطبيق سلاك Slack و Visual Studio Code. منصة Universal Windows Platform أو اختصارًا UWP وهي منصة متخصصة في برمجة التطبيقات المخصصة للعمل على نظام التشغيل Windows10 و Windows11 تتيح لك تحقيق الدخل من تطبيقك من خلال تقنيات مثل عمليات الشراء والإعلانات داخل التطبيق أو عن طريق تحديد رسوم تنزيل قياسية على متجر تطبيقات مايكروسوفت. إطار عمل Cocoa الذي يستخدم لإنشاء تطبيقات سطح مكتب خاصة بأنظمة التشغيل iOS و OS X و macOS. لغات برمجة تطبيقات الويب هناك مجموعة من المهارات الفنية ولغات البرمجة المطلوبة في برمجة التطبيقات المخصصة للويب وفيما يلي نذكرها لكم حسب تخصص التطوير. لغات برمجة الواجهة الأمامية لتطبيقات الويب تستخدم ثلاث لغات أساسية في تطوير الواجهة الأمامية وهي: لغة HTML لإنشاء بنية موقع الويب لغة CSS لتغيير مظهر موقع الويب لغة جافا سكريبت JavaScript لإضفاء التفاعلية على صفحة الويب. وهناك عدة مكتبات وأطر عمل مساعدة تسهل على المطورين مهمة برمجة وتطوير الواجهات الأمامية لتطبيقات الويب نذكر منها: Next.js المبني على مكتبة React إطار عمل أنغولار Angular إطار عمل فيو Vue هذه أشهرها وهنالك غيرها الكثير. لغات برمجة الواجهة الخلفية لتطبيقات الويب يتضمن تطوير الواجهة الخلفية المهام التي لا يراها المستخدم والتي تعمل على الخوادم وتتعامل مع قواعد البيانات وخيارات تطوير الواجهة الخلفية كثيرة وليس محصورة بلغة برمجة معينة وهذا ما يميزها عن عملية تطوير الواجهات الخلفية لأن عملية البرمجة تعتمد على التواصل مع نظام التشغيل مباشرة وأغلب لغات البرمجة تفعل ذلك (باستثناء لغة جافا سكريبت إلا عبر بيئة Node.js التشغيلية)، لذا الخيار متاح أمامك لاختيار اللغة التي تعرفها أو تحب تعلمها، وكل لغة بطبيعة الحال لها أدوات ومكتبات وأطر عمل مساعدة ولن تكتب كل شيء من الصفر. ومن بين لغات برمجة الواجهات الخلفية لتطبيقات الويب نذكر: لغة بايثون Python مع إطار العمل جانغو Django أو فلاسك flask لغة PHP مع إطار العمل لارافل Laravel الشهير. لغة جافا سكريبت JavaScript مع بيئة Node.js لغة روبي Ruby مع إطار العمل ريلز Rails لغة جافا Java يمكن أيضًا أن تستخدم بشكل فعال في برمجة تطبيقات الويب لغات برمجة تطبيقات الويب التقدمية يتوقع أن تحظى برمجة تطبيقات الويب التقدمية بمستقبل باهر لكونها تطبيقات تعمل على أي متصفح ويب على أجهزة سطح المكتب والأجهزة المحمولة وتستخدم في برمجتها نفس التقنيات المستخدمة في تطوير تطبيقات الويب الأساسية HTML و CSS وجافا سكريبت. ولا تختلف برمجة تطبيقات الويب التقدمية عن برمجة تطبيقات الويب بالعموم فتطبيق الويب التقدمي ليس في نهاية المطاف سوى تطبيق ويب له ضبط مخصص بسيط فقط. عمومًا، ننصحك بالرجوع إلى مقال المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع لتفاصيل أوسع حول هذا المجال. لغات برمجة تطبيقات الجوال والأجهزة المحمولة من أبرز لغات برمجة تطبيقات الجوال الأصيلة نذكر: لغة جافا Java أو كوتلن Kotlin لتطبيقات أندرويد لغة Objective-C أو Swift لتطبيقات iOS لغات C# و C++ وفيجوال بيزك لهواتف ويندوز كما توفر آبل Apple وغوغل Google أيضًا أدوات وحزم تطوير البرمجيات SDK التي يمكن للمطورين استخدامها لإنشاء تطبيقات الأجهزة المحمولة الأصيلة. ومن أجل برمجة تطبيقات الجوال الهجينة يمكنك استخدام لغات HTML و CSS وجافا سكريبت وبمجرد الانتهاء من عملية البرمجة يتم تجميع الكود البرمجي الخاص للاستخدام على Android و iOS أي يتم توفير تطبيق مخصص لكل نظام تشغيل أو منصة محددة تجميع خاص بها. كما يمكنك الاستعانة بأطر عمل مساعدة لبرمجة التطبيقات وتصديرها للعمل على مختلف المنصات مثل فلاتر Flutter و ريآكت نيتف React Native برمجة تطبيقات الأجهزة الملبوسة وكي تتخصص في برمجة تطبيقات الأجهزة الملبوسة عليك بدايةّ تحديد نظام التشغيل للجهاز المستهدف الذي تريد أن تطور له تطبيقك وتحدد لغات البرمجة والتقنيات المتاحة لهذه المنصة وبعدها يمكنك استخدام محاكي لاختبار تطبيقك وتصحيح أخطائه كما يمكنك اختبار تطبيقك على جهاز فعلي باستخدام USB أو Wi-Fi أو Bluetooth لتتمكن من تقييم تجربة المستخدم بشكل أفضل. ومن أبرز تقنيات برمجة التطبيقات المخصصة للأجهزة الملبوسة نذكر لغة سي C و PHP وجافا Java ولغة بايثون Python التي تعتبر لغة مثالية لتطوير تطبيقات إنترنت الأشياء، كما تعد جافا سكريبت JavaScript إحدى لغات البرمجة الأكثر شيوعًا لتطوير أجهزة iOS الملبوسة. وأخيرًا وليس آخرًا وفي هذا الصدد، يمكنك الرجوع إلى مقال برمجة تطبيقات الجوال لمزيد من التفاصيل أو إن أردت التخصص في هذا المجال. كيف أتعلم برمجة التطبيقات إذا كنت تنوي العمل كمبرمج تطبيقات وتتخصص في كتابة الأكواد البرمجية لإنشاء برامج تؤدي مهام محددة بناءً على متطلبات العملاء وصيانة هذه البرامج وتحسينها فلا بد أنك لاحظت مدى التنوع الكبير في هذا المجال وتتساءل كيف أتعلم برمجة التطبيقات في كل هذا الزخم من لغات البرمجة والتقنيات والأدوات؟ بالطبع لا يتوجب عليك تعلم كل هذه التقنيات وإنما عليك أن تركز جهودك بحسب نوع التطبيقات التي ترغب بتطويرها والعمل فيها ويفضل بدايةً أن تُحدد المجال الفرعي ضمن نوع التطبيق نفسه مثلًا في تطبيقات سطح المكتب حدد نظام التشغيل أو في تطبيقات الويب حدد إن كنت تريد التخصص في الواجهات الأمامية أم الخلفية وهكذا لأنه سيسهل عليك تحديد اللغات والتقنيات من البداية ويجنبك الضياع والتشتت. بعد تحديد التخصص بالضبط، يمكنك بدء رحلتك والبحث عن مصادر تعلم إذ سواءً اتبعت المسار الجامعي الذي لا تُدرَّس عملية برمجة التطبيقات بشكل مخصص أو يتم التطرق لأحد أنواعها بسطحية أو كنت تريد تعلم المجال بمفردك، فستحتاج إلى مصادر خارجية ومواد تخصصية وربما تكون هذه الحلقة الأصعب لذلك توفر أكاديمية حسوب العديد من مصادر التعلم المفيدة والمقالات والدروس المجانية لمعظم التقنيات ولغات البرمجة والأطر المنوعة التي ذكرناها في سياق مقالنا. توفر أكاديمية حسوب أيضًا دورات تدريبية متخصصة تساعدك على تعلم برمجة التطبيقات بسرعة من خلال التدرب العملي على برمجة تطبيقات حقيقية مثل دورة تطوير التطبيقات باستخدام جافا سكريبت التي توفر العديد من المسارات التي تعلمك طريقة استخدام تقنيات الويب من أجل برمجة التطبيقات الهجينة مثل تطبيق مشاركة وصفات باستخدام أيونيك Ionic مع React.j وتطبيق طبيبي باستخدام React Native وتطبيق محادثة يشبه واتس أب باستخدام React Native وغيرها من المسارات. كما توفر الأكاديمية دورة تطوير تطبيقات الويب باستخدام لغة Ruby التي تعلمك برمجة تطبيقات الويب وتطوير الواجهات الخلفية باستخدام إطار العمل Rails من بينها تطبيق شبكة اجتماعية وتطبيق مجتمع إلكتروني وغيرها من التطبيقات التي تؤهلك لدخول سوق العمل بسرعة واحترافية. وتقدم الأكاديمية كذلك دورة تطوير التطبيقات باستخدام لغة Python والتي ستتمكن من خلالها من تطوير تطبيق لإدارة المهام و متجر إلكتروني متكامل باستخدام إطار العمل جانغو Django وهو إطار قوي يمكنك من تطوير مواقع الويب وتطبيقات ويب آمنة وسهلة الصيانة بسرعة كبيرة. نصائح لتعلم برمجة التطبيقات دعنا نختم مقالنا الشامل هذا بأهم النصائح والخطوات التي يمكنك اتباعها للبدء في برمجة التطبيقات أيًا كان نوعها: حدد فكرة التطبيق وكافة الميزات التي ستحققها في هذا التطبيق. صمم التطبيق وحدد النماذج الأولية له بمساعدة أدوات مثل Adobe XD و Moqups. اختر لغة البرمجة أو إطار العمل الأنسب لتطوير تطبيقاتك وتحقيق الأهداف المطلوبة منها. 4.استخدم بيئة تطوير متكاملة IDEs تسهل عليك كتابة التعليمات البرمجة وإكمالها وتوفر لك أدوات التصحيح. تعلم استخدام المنصات والأطر التي تسرع من وتيرة عملك وتوفر عليك الكثير من الوقت والجهد. تدرب على برمجة التطبيقات الخاصة بك بشكل عملي ونفذ الميزات واحدة تلو الأخرى وتدرب على حل المشكلات والأخطاء التي تواجهك في عملية التطوير كي تكتسب الخبرة. بعد الانتهاء من برمجة تطبيقاتك احرص على اختبارها جيدًا والتأكد من أن جميع الميزات تعمل كما هو متوقع قبل نشرها بشكل نهائي. الخلاصة بهذا نكون قد وصلنا لنهاية مقالنا الشامل الذي تعرفنا فيه على كل ما يخص مجال برمجة التطبيقات أحد مجالات البرمجة الرائجة والمطلوبة بكثرة في سوق العمل فلا غنى عن التطبيقات على اختلاف أنواعها سواء تطبيقات الويب أو الهاتف المحمول أو سطح المكتب في بيئة الأعمال لذا إذا كنت مهتمًا بالبرمجة والتطوير يمكنك بدء مسارك المهني في تطوير التطبيقات ما يضمن لك فرصة عمل مميزة. وشرحنا كذلك العديد من الطرق المختلفة التي تمكنك من برمجة التطبيقات المتنوعة وتأدية الوظائف المفيدة من خلالها لذا من الضروري أن تحدد بدقة نوع التطبيقات الذي تنوي التخصص فيه كي تكون خطة تعلم واضحة ولا تتشتت بين التقنيات المختلفة. إذا كان لديك أي تساؤل حول تعلم برمجة التطبيقات يسرنا أن تكتبه في التعليقات أسفل المقال، وإذا كنت قد بدأت بالفعل في العمل كمطور تطبيقات فما هو نوع التطبيقات التي تهتم ببرمجتها، وما هي التقنيات التي تستخدمها في عملك؟ يسرنا أن تشاركنا تجربتك ونصائحك. اقرأ أيضًا أسهل لغات البرمجة دليلك الشامل لتعلم البرمجة تعلم البرمجة من الصفر برمجة تطبيقات الأندرويد1 نقطة
-
TypeScript هي لغة برمجة مصممة لتنفيذ مشاريع JavaScript ضخمة، صممتها Microsoft. فقد بُنيت على سبيل المثال برنامج مثل Azure Management Portal الذي يبلغ عدد أسطر شيفرته 1.2 مليون، وبرنامج Visiual Studio Code الذي يبلغ عدد أسطر شيفرته 300 ألف باستخدام TypeScript. تقدم TypeScript ميزات عديدة لدعم مشاريع JavaScript الضخمة مثل أدوات تطوير أفضل وتحليل شيفرة ساكنة والتحقق من الأنواع عند الترجمة والتوثيق على مستوى الشيفرة. المبدأ الرئيسي تمثل اللغة TypeScript مجموعة مطوّرة من تعليمات JavaScript قادرة على تمييز الأنواع وتترجم عادة إلى شيفرة JavaScript صرفة. ويمكن للمطور أن يحدد إصدار الشيفرة الناتجة طالما أن إصدار ECMAScript هو الإصدار 3 أو أحدث. ويعني أنّ هذه اللغة مجموعة مطوّرة من تعليمات JavaScript أنها تتضمن كل ميزات JavaScript بالإضافة إلى ميزات خاصة بها. وتعتبر كل شيفرات JavaScript شيفرات TypeScript صحيحة. تتألف TypeScript من ثلاثة أقسام منفصلة لكنها متكاملة مع بعضها: اللغة المصرِّف خدمة اللغة تتألف اللغة من القواعد والكلمات المحجوزة (تعليمات) ومسجلات الأنواع Type annotations وتتشابه قواعدها مع مثيلاتها في JavaScript لكنها ليست متماثلة. وأكثر ما يتعامل معه المبرمجون من تلك الأقسام هي اللغة. تنحصر مهمة المصرِّف في محو المعلومات المتعلقة بالنوع بالإضافة إلى التحويلات على الشيفرة. إذ تمكن عملية تحويل الشيفرة من نقل شيفرة TypeScript إلى شيفرة JavaScript قابلة للتنفيذ. يزيل المصرِّف كل ما يتعلق بالأنواع أثناء الترجمة، وبالتالي لا تميز هذه اللغة الأنواع بشكل فعلي قبل الترجمة. تعني عملية التصريف بالمعنى المتعارف عليه، تحويل الشيفرة من الشكل الذي يمكن للإنسان قراءته وفهمه إلى الشكل الذي تفهمه الآلة. أما عملية الترجمة في TypeScript فهي عملية تحويل الشيفرة من شكل يفهمه الإنسان إلى شكل آخر يفهمه الإنسان أيضًا، لذا من الأنسب أن تسمى هذه العملية بالنقل Transpilling. لكن مصطلح الصريف هو الأشيع في هذا المضمار وسنستخدمه نحن بدورنا. ينفذ المصرِّف أيضًا عملية تحليل الشيفرة ما قبل التنفيذ. إذ يمكنه إظهار رسائل التحذير والخطأ إن كان هناك سبب لذلك، كما يمكن أن يُهيَّئ لتنفيذ مهام إضافية كضم الشيفرة الناتجة في ملف واحد. تجمع خدمة اللغة معلومات عن الأنواع الموجودة في الشيفرة المصدرية. وبالتالي ستتمكن أدوات التطوير من استخدامها في تقديم ميزة إكمال الشيفرة في بيئات التطوير وطباعة التلميحات وتقديم اقتراحات لإعادة كتابة أجزاء من الشيفرة. الميزات الرئيسية للغة TypeScript سنقدم تاليًا وصفًا لبعض ميزات اللغة TypeScript. والغاية من ذلك تزويدك بالأساسيات التي تقدمها اللغة وميزاتها، وذلك للتعامل مع الأفكار التي سنراها تباعًا في المنهاج. مسجلات الأنواع وهي طريقة خفيفة في TypeScript لتسجيل الأنواع التي نريد أن تمرر أو تعاد من الدوال أو أنواع المتغيرات. فلقد عرفنا في المثال التالي على سبيل المثال الدالة birthdayGreeter التي تقبل معاملين أحدهما من النوع string، والآخر من النوع number، وستعيد قيمة من النوع string. const birthdayGreeter = (name: string, age: number): string => { return `Happy birthday ${name}, you are now ${age} years old!`; }; const birthdayHero = "Jane User"; const age = 22; console.log(birthdayGreeter(birthdayHero, 22)); نظام الخصائص المعرفة للأنواع تستخدم اللغة TypeScript الخصائص المعرفة للأنواع structural typing. ويعتبر عنصران في هذا النظام متوافقان إن كان لكل ميزة في النوع الأول ميزة تماثلها تمامًا في النوع الثاني. ويعتبر النوعان متطابقان إذا كانا متوافقان مع بعضهما. الاستدلال على النوع يحاول المصرِّف أن يستدل على نوع المعلومة إن لم يحدد لها نوع. إذ يمكن الاستدلال على نوع المتغير بناء على القيمة التي أسندت له. تحدث هذه العملية عند تهيئة المتغيرات والأعضاء، وعند إسناد القيم الافتراضية للمعاملات، وعند تحديد القيمة التي تعيدها دالة. لنتأمل على سبيل المثال الدالة Add: const add = (a: number, b: number) => { /* تستخدم القيمة المعادة لتحديد نوع القيمة التي تعيدها الدالة*/ return a + b; } يستدل المصرِّف على نوع القيمة المعادة للدالة بتعقب الشيفرة حتى الوصول إلى عبارة return. تعيد هذه العبارة مجموع المعاملين a وb. وكما نرى فكلا المعاملين من النوع number وهكذا سيستدل المصرِّف على أن القيمة التي تعيدها الدالة من النوع number. وكمثال أكثر تعقيدًا، لنتأمل الشيفرة التالية (قد يكون المثال صعب الفهم قليلًا إن لم تكن قد استخدمت TypeScript مسبقًا. يمكنك تخطي هذا المثال حاليًا.) type CallsFunction = (callback: (result: string) => any) => void; const func: CallsFunction = (cb) => { cb('done'); cb(1); } func((result) => { return result; }); بداية نجد تصريحًا لاسم نوع مستعار type alias يدعى CallsFunction. يُمثل نوع دالة تقبل معاملًا واحدًا callback يمثِّل بدوره دالة تتلقى معاملًا من النوع "string" وتعيد قيمة من النوع any. وكما سنرى لاحقًا فالنوع any هو شكل من أشكال الحروف البديلة wildcards والتي يمكن أن تحل محل أي نوع. بعد ذلك نعرّف الدالة func من النوع CallsFunction. يمكننا أن نستدل من نوع الدالة بأن معاملها الدالة cb ستقبل فقط معاملًا من النوع string.ولتوضيح ذلك سنورد مثالًا آخر تُستدعى فيه دالة كمعامل لكن بقيمة من النوع number، وسيسبب هذا الاستدعاء خطأً في TypeScript. وأخيرًا نستدعي الدالة func بعد أن نمرر إليها الدالة التالية كمعامل: (result) => { return result; } وعلى الرغم من عدم تحديد أنواع معاملات الدالة، يمكننا الاستدلال من سياق الاستدعاء أن المعامل result من النوع String. إزالة الأنواع تزيل TypeScript جميع الأنواع التي يبنيها نظام تحديد الأنواع أثناء الترجمة: فلو كانت الشيفرة قبل الترجمة كالتالي: let x: SomeType; ستكون بعد الترجمة: let x; ويعني هذا عدم وجود أية معلومات عن الانواع أثناء التنفيذ، فلا يشير أي شيء على أن متغيرًا X على سبيل المثال قد عُرِّف أنه من نوع ما. سيكون النقص في المعلومات عن الأنواع في زمن التنفيذ مفاجئًا للمبرمجين الذين اعتادوا على استخدام تعليمات التحقق Reflection وغيرها من أنظمة إظهار البيانات الوصفية. هل علينا فعلا استعمال TypeScript؟ إن كنت من متابعي المنتديات البرمجية على الانترنت، ستجد تضاربًا في الآراء الموافقة والمعارضة لاستخدام هذه اللغة. والحقيقة أنّ مدى حاجتك لاستخدام الدوال التي تقدمها TypeScript هي من يحدد وجهة نظرك. سنعرض على أية حال بعض الأسباب التي قد تجعل استخدام هذه اللغة مفيدًا. أولًا: ستقدم ميزة التحقق من الأنواع وميزة التحليل الساكن للشيفرة (قبل الترجمة والتنفيذ). كما يمكننا أن نطلب قيمًا من نوع محدد وأن نتلقى تحذيرات من المصرِّف عندما نستخدم هذه القيم بشكل خاطئ. سيقلل هذا الأمر الأخطاء التي تحصل وقت التنفيذ، كما يمكن أن يقلل من عدد اختبارات الأجزاء unit tests التي يحتاجها التطبيق وخاصة ما يتعلق باختبارات الأنواع الصرفة pure types. ولا تحذرك عملية التحليل الساكن للشيفرة من الاستخدام الخاطئ للأنواع وحسب، بل تشير إلى الأخطاء الأخرى ككتابة اسم المتغير أو الدالة بشكل خاطئ أو استخدام المتغير خارج المجال المعرّف ضمنه. ثانيًا: يمكن لميزة تسجيل الأنواع أن تعمل كشكل من أشكال التوثيق على مستوى الشيفرة. إذ يمكنك أن تتحقق من خلال بصمة الدالة signature من الأنواع التي تتلقاها الدالة والأنواع التي ستعيدها. سيبقى هذا الشكل من التوثيق محدّثًا أثناء تقدم العمل، وسيسهّل ذلك التعامل مع مشاريع جاهزة وخاصة للمبرمجين الجدد. كما ستساعد كثيرًا عند العودة إلى مشاريع قديمة. يمكن إعادة استخدام الأنواع في أي مكان من الشيفرة، وستنتقل أية تغييرات على تعريف النوع إلى أي مكان استخدم فيه هذا النوع. وقد يجادل البعض بأن استخدام JSDoc سينجز التوثيق على مستوى الشيفرة بشكل مماثل، لكنه لا يرتبط بالشيفرة بشكل وثيق كما تفعل أنواع TypeScript، وقد يسبب هذا خللًا في تزامن عرض المعلومات، بالإضافة إلى أنها أطول. ثالثًا: ستقدم بيئة عمل اللغة ميزة إكمال الشيفرة بشكل أفضل لأنها تعلم تمامًا نوع البيانات التي تعالجها. وتعتبر الميزات الثلاث السابقة مفيدة للغاية عند إعادة كتابة الشيفرة. فسيحذرك التحليل الساكن للشيفرة من الأخطاء في شيفرتك، وسيرشدك معالج إكمال الشيفرة إلى الخصائص التي يقدمها المتغير أو الكائن أو حتى خيارات لإعادة كتابة الشيفرة بشكل أنسب، وسيساعدك التوثيق على مستوى الشيفرة في فهم الشيفرة المكتوبة. وبهذه المساعدة التي تقدمها لك بيئة عمل هذه اللغة، سيكون من السهل استخدام الميزات الأحدث من لغة JavaScript وفي أية مرحلة تقريبًا بمجرد تغيير إعدادات التهيئة. ما الأمور التي لا يمكن للغة TypeScript أن توفرها لك؟ لقد ذكرنا سابقًا أن تسجيل الأنواع والتحقق منها فقط في مراحل ما قبل التنفيذ. فحتى لو لم يشر المصرِّف إلى أخطاء فقط تحدث الأخطاء أثناء التنفيذ. تحدث أخطاء زمن التنفيذ بشكل متكرر عند التعامل مع مصدر دخل خارجي كالبيانات المستقبلة كطلب عبر شبكة. وضعنا أخيرًا قائمة بالمشاكل التي قد تواجهنا عند استخدام TypeScript، ويجب الانتباه إليها: الأنواع غير المكتملة أو الخاطئة أو المفقودة التي مصدرها مكتبات خارجية قد تجد في بعض المكتبات الخارجية أنواعًا غير معرّفة أو ذات تعريف خاطئ بشكل أو بآخر. والسبب المرجح أنّ المكتبة لم تُكتَب بلغة Typescript، وأنّ المبرمج الذي صرّح عن النوع يدويًا قد ارتكب خطأً. عليك في هذه الحال كتابة التصريح عن النوع يدويًا بنفسك. لكن هناك فرصة كبيرة أن يكون أحدهم قد فعل ذلك مسبقًا عوضًا عنك، تحقق من موقع DefinitelyTyped أو صفحة GitHub الخاصة بهذا الموقع أولًا. وهذان المصدران هما الأكثر شعبية لإيجاد ملفات تعريف الأنواع. في حال لم يحالفك الحظ، لابدّ أن تبدأ من الصفر بقراءة توثيق TypeScript بما يخص تعريف الأنواع. قد يحتاج الاستدلال على النوع إلى بعض المساعدة إن الاستدلال على النوع في هذه اللغة جيد جدًا لكنه ليس مثاليًا. قد تعتقد أحيانًا أنك صرحت عن نوع بشكل مثالي، لكن المصرِّف يحذرك بشكل مستمر من أن خاصية محددة غير موجودة أو أنّ التصريح بهذه الطريقة غير مسموح. عليك في حالات كهذه مساعدة المصرِّف بتنفيذ عملية تحقق إضافية من النوع الذي صرحت عنه، وخاصة فيما يتعلق بالتحويل بين الأنواع type casting أو حاميات الأنواع type gaurds. عند التحويل بين الأنواع أو عند استخدام الحاميات فأنت بذلك تضمن للمصرِّف أن القيمة التي وضعتها هي بالتأكيد من النوع المصرح عنه وهذا مصدر للأخطاء. ربما عليك الاطلاع على التوثيق فيما يتعلق بحاميات الأنواع أو مؤكدات الأنواع Type Assertions. أخطاء الأنواع الغامضة من الصعب أحيانًا فهم طبيعة الخطأ الذي يعطيه نظام تحديد الأنواع، وخاصة إن استخدمت أنواع معقدة. وكقاعدة أساسية، ستحمل لك رسائل خطأ TypeScript المعلومات الأكثر أهمية في نهاية الرسالة. فعندما تظهر لك رسالة طويلة مزعجة، ابدأ بالقراءة من آخر الرسالة. ترجمة -وبتصرف- للفصل Background and introduction من سلسلة Deep Dive Into Modern Web Development1 نقطة