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

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

  1. سمير عبود

    سمير عبود

    الأعضاء


    • نقاط

      3

    • المساهمات

      3552


  2. عبدالله غازي

    عبدالله غازي

    الأعضاء


    • نقاط

      2

    • المساهمات

      194


  3. Mahmoud Alrashidi

    Mahmoud Alrashidi

    الأعضاء


    • نقاط

      2

    • المساهمات

      104


  4. سامح أشرف

    سامح أشرف

    الأعضاء


    • نقاط

      2

    • المساهمات

      2934


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

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

  1. يُمكنك عمل ذلك من خلال هذه الطريقة: تعريف مصفوفة ترابطية تضم الكلمات التي تبحث عنها، حيث المفتاح هو الكلمة و القيمة هي عدد التكرار و تكون مبدئياً 0 فتح الملف للقراءة كرر حتى تصل لنهاية الملف: -- إقرأ السطر و خزنه في مُتغير. -- تقسيم السلسلة النصية المُكونة للسطر إلى كلمات و تخزينها في مصفوفة -- من أجل كل كلمة من الكلمات: -----> تحقق أنها أحد الكلمات التي تبحث عنها و إذا وجدتها كذلك إرفع عدد تكرارها بِ 1 إطبع عدد تكرار كل كلمة. و هذا هو الكود الخاص ب الخوارزمية بإستخدام لغة php: <?php /* تعريف مصفوفة بالكلمات التي نريد البحث عن تكرارها مصفوفة ترابطية حيث أن كل كلمة هي المفتاح و القيمة توضح عدد التكرارات مع وضع قيمة التكرار لكل كلمة 0 مبدئياً */ $count_array = ["if" => 0,"lol" => 0]; $file = fopen('data.txt', "r"); // فتح ملف البيانات للقراءة /* عمل حلقة بينما هناك مُحتوى للقراءة و بما أننا لم نصل إلى نهاية الملف */ while(!feof($file)) { $line = trim(fgets($file)); // قراءة سطر كل مرة و مسح المسافات الإضافية في الأول و الأخير و تخزينه في مُتغير /* الدالة explode تُساعدنا في تقسيم سلسلة نصية إلى مصفوفة بإستعمال separator هو أول مُعامل */ $words = explode(" ", $line); // مصفوفة الكلمات المُكونة للسطر الذي قرأناه من الملف /* نقوم بعمل حلقة للمرور على كافة كلمات السطر و من أجل كل كلمة نتحقق إن كانت أحد الكلمات التي نبحث عنها إذا كان الحالة نرفع عدد التكرار للكلمة */ foreach($words as $word) { if (array_key_exists($word, $count_array)) { $count_array[$word]++; } } } /* هذه الحلقة لطباعة عدد تكرار كل كلمة */ foreach ($count_array as $word => $number) { echo $word . " occurred " . $number . " times" . "<br>"; } و هذا مثال لملف data.txt: asd lol rotflol if world lol rotflol world bubu hehe lol gnigni lol if if if lol hehe if world lol asd lol rotflol و هذه نتيجة السكربت: if occurred 5 times lol occurred 7 times
    3 نقاط
  2. السلام عليكم ، لدي سوال يدور كثيرا في بالي ويقلقني بعض الشي ، لنفترض اني قد انهيت الدوره الخاصه بي وهي تطوير واجهات المستخدم واخذت الامتحان ونجحت وبعدها ذهبت الي مواقع العمل الحر ، وجائني عميل يريد مني موقع ويريد ان اصمم له موقه من البدايه وانا لست مصمم وانما مبرمج ماذا افعل ؟؟؟؟ ماذا على ان اتعلم ، ثانيا لنفترض بانه اتي الي عميل ولديه التصميم كامل ومصصم وفقط على انا احوله الي كود كيف لي ان اعرف المقاسات مثلا ال padding و ال margin ؟ وايضا قد قرات بانه يوجد مراحل لانشاء موقع 1- تصميم الموقع 2- تكويد الموقع 3- تطبيق ال business انا فاهم وعارف اول ثنتان اما الاخيره لم افهم ما معنى business
    2 نقاط
  3. "أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ!" هذه هي أكثر عبارة تتردد على سمعي من حديثي العهد بالبرمجة، إذ يأتيني هذا السؤال مرارًا وتكرارًا؛ وفي كل مرة أحاول أن أجيب عنه في سياقه، أجد أنني أضيف معلومات جديدة على إجاباتي السابقة، لذا قررت كتابة هذا المقال بعنوان "تعلم البرمجة" لعله يفيد الراغبين في تعلم تطوير التطبيقات في بدء رحلتهم مع تعلم البرمجة من الصفر. جدول المحتويات حرصًا على تنظيم المقالة ولتسهيل الوصول إلى القسم الذي تريده بسهولة، سنذكر هنا جدول المحتويات باختصار: ما هي البرمجة؟ لماذا تتعلم البرمجة؟ ما عليك معرفته لتصبح مبرمجًا الأدوات اللازمة للبدء في تعلم البرمجة لماذا هناك العديد من لغات البرمجة؟ مفاهيم البرمجة مصادر تعلم البرمجة تطوير واجهات المستخدم تطوير الواجهات الخلفية تعلم تطوير تطبيقات الجوال تطوير الألعاب تطوير الأنظمة المدمجة تطوير تطبيقات سطح المكتب كيفية اختيار لغة البرمجة التي تناسبك نصائح لتعلم البرمجة ما هي البرمجة؟ البرمجة هي عملية تقسيم مهمة معينة يراد تنفيذها عبر الحاسوب إلى أجزاء صغيرة ومترابطة وقابلة للتنفيذ بأوامر بسيطة. بعد ذلك، تجري كتابة هذه الأوامر والتعليمات بإحدى لغات البرمجة، والتي هي وسيلة للتخاطب مع الحاسوب. إليك المثال العملي التالي الذي يشرح ماهية البرمجة: إن كنت تتوقع زيارة صديق لك اليوم، واتصل بك ليقول لك: "أنا واقف بجانب الحديقة ولا أعرف كيف أصل إلى منزلك". أنت عادةً تمر كل يوم من جانب الحديقة وتعرف الطريق بينها وبين منزلك شبرًا بشبر. برأيك هل ينفع إن قلت له: "منزلي معروف وقريب من الحديقة وأنا كل يوم أمر من جانبها"؟ لا، بالتأكيد. تحتاج إلى أن تقسِّم المشكلة إلى أجزاء تمثل خطوات بسيطة يستطيع صديقك فهمها وتنفيذها. مثلًا، أخبره أن ينفذ الأوامر التالية: "سر إلى الأمام عشرة أمتار" ثم "اتجه إلى اليمين" ثم "سر إلى نهاية الشارع" ثم "اتجه إلى اليسار". أخبره بعد ذلك: "عُدَّ الأبنية الموجودة على اليسار حتى تصل إلى البناء الرابع" ثم "اصعد إلى الطابق الثاني" ثم "اطرق على الباب الذي سيظهر أمامك". مبارك! بهذه الطريقة، تستطيع أن تدل صديقك على منزلك بدقة. البرمجة هي الشيء نفسه تمامًا. فهل ترى التعابير المكتوبة بين علامتي الاقتباس؟ إنها التعابير التي تكتب بإحدى لغات البرمجة والتي تخاطب الحاسوب بدلًا من صديقك السابق. لغات البرمجة هي مجموعة من المفردات والقواعد اللغوية التي تشكل لغةً وسيطةً للتخاطب مع الحاسوب وأمره بتنفيذ تعليمات وأشياء محدَّدة. فلا الحاسوب يفهم لغة البشر ولا البشر يفهمون لغة الحاسوب، لذا كان هنالك حاجة ملحة لوجود لغة وسيطة يفهمها كلاهما؛ نتيجةً لذلك، انبثق مفهوم لغة البرمجة. بعبارة أخرى، لو أردنا أن نقول للحاسوب "افعل كذا"، فسنحتاج إلى لغةٍ مشتركةٍ بيننا وبينه ليفهم ما نبتغيه، وهنا يأتي دور لغات البرمجة، إذ يمكنك أن تعدّ لغات البرمجة على أنها وسيط بين المبرمج والحاسوب. يهتم المبرمج بالتفكير في تسلسل الخطوات التي على الحاسوب القيام بها لإتمام العمل المطلوب منه (مثل حساب العمر اعتمادًا على تاريخ الولادة)، ثم كتابة هذه الخطوات بترتيب منطقي بإحدى لغات البرمجة. ربما لاحظتَ في الجملة السابقة أن جزءًا من مهمة المبرمج هو التفكير المنطقي، وهذا يجعلنا ننتقل إلى السؤال الشائع "هل أستطيع تعلم البرمجة وأصبح مبرمجًا؟" أو "هل أنا مؤهل لأصبح مبرمجًا؟". لماذا تتعلم البرمجة؟ يبدو أن تعلم البرمجة من الصفر ليس بالصعوبة التي توقعتها، لكنك تريد حافزًا يجعلك تتعلم البرمجة. تسمع كثيرًا أن البرمجة هي مجال المستقبل، وأن وظائف المبرمجين ستكتسح مجال التوظيف في السنوات القادمة؟ أستطيع أن أؤكد لك ذلك، كما أنَّ وظائف البرمجة هي من أعلى الوظائف دخلًا. فلو كنت تريد بدء مشوارك الاحترافي وتريد عملًا مستقرًا وذا دخلٍ ممتاز، فإن تعلم البرمجة والعمل بها هو أفضل خيارٍ أمامك. وظائف البرمجة مريحة عمومًا، فالعمل كله مكتبي أمام حاسوب في بيئة مريحة ومناسبة، وأغلبية الشركات تتبع نظام العمل 40 ساعة في الأسبوع (أي 5 أيام لمدة 8 ساعات يوميًا)، ولا تغفل عن قدرتك على العمل عن بعد من خلال الانترنت أو كمستقل في أوقات فراغك. تعلم البرمجة سيوسع أفق تفكيرك كثيرًا، خصوصًا أن تعاملك مع الحاسوب يتبع إلى التفكير المنطقي، وستجد أن البرمجة ستسهل لك القيام بأمور أخرى في الحاسوب. ما عليك معرفته لتصبح مبرمجًا يتردد الكثيرون في تعلم البرمجة متذرعين بأن مستواهم في الرياضيات ليس ممتازًا، وهذا ليس صحيحًا، فصحيحٌ أنَّ هنالك أمور تعترضك أثناء أداء عملك كمبرمج تتطلب خبرة في الرياضيات، إلا أنَّه قد تمر عليك فترات طويلة لا تحتاج فيها إلى مسائل رياضية. كل ما يلزمك للبدء في تعلم البرمجة هو الأساسيات التي يعرفها الجميع. إلى حين اعتراضك أية مسألة أو مشكلة تتطلب مهارة في الرياضيات، هنالك الكثير من المصادر والمراجع التي تستطيع الرجوع إليها آنذاك. بعبارة أخرى، أجِّل هذا الأمر قليلًا ولا تخف. الأهم من ذلك هو أن تكون قادرًا على التفكير بشكل منطقي. التفكير المنطقي التفكير المنطقي هو المهارة التي تجمع كافة المبرمجين تحت مظلة واحدة، وهي أساس كتابة الخوارزميات، إذ يجب أن تكون قادرًا على اكتساب هذه المهارة وتطويرها. الخوارزميات كلمة "الخوارزميات" هي الكلمة المرعبة التي ينفر منها البعض، فكل ما يتخيلونه عند ذكرها هو الرياضيات المعقدة والمعادلات الطويلة والرموز العجيبة، لكن الأمر بسيط جدًا؛ فالخوازرميات هي تطبيقٌ للتفكير المنطقي في خطوات متسلسلة واضحة تمامًا لحل مشكلة ما. لكي أوضِّح لك أن الخوارزميات ليست أمرًا معقدًا، سأخبرك بكيفية كتابة برنامج يسأل المستخدم عن سنة ميلاده، ثم يعيد عمره الحالي بالسنوات. الخطوة الأولى: إظهار رسالة نصية نطلب فيها من المستخدم إدخال تاريخ ميلاده. الخطوة الثانية: تخزين سنة الميلاد التي أدخلها المستخدم. الخطوة الثالثة: الحصول على السنة الحالية. الخطوة الرابعة: طرح مدخلات المستخدم من السنة الحالية. الخطوة الخامسة والأخيرة: إظهار الناتج. ما سبق هو خوارزمية بسيطة تتألف من خطوات متسلسلة، لكن إذا أمعنّا النظر فيها سنجد خللًا في حال أدخل المستخدم تاريخًا أكبر من التاريخ الحالي، أي لو أدخل 2050 مثلًا بدلًا من 1995. عندها سيصبح العمر المعاد من الخوارزمية سالبًا، ويمكننا أن نحل هذه الإشكالية منطقيًا بوضع شرط يمنع المستخدم من إدخال تاريخ أكبر من التاريخ الحالي. إطارات العمل كلمة أخرى شائعة جدًا في عالم البرمجة هي "إطارات العمل" frameworks، إطارات العمل هي مجموعة من الشيفرات البرمجية التي تسهل على المبرمج إنشاء التطبيقات، بتوفير وحدات جاهزة تقدم خدمات متنوعة مثل تسجيل المستخدمين، وإرسال البريد الإلكتروني، والتعامل مع قواعد البيانات. أي يمكنك أن تعدّها أدوات برمجية تساعدك في برمجة تطبيقك وتسهِّل لك فعل ذلك. الأدوات اللازمة للبدء في تعلم البرمجة تحتاج إلى حاسوبٍ بمواصفات جيدة (ليس من الضروري أن يكون من أفضل الحواسيب، وإنما أن يمتلك مقدارًا جيدًا من الذاكرة العشوائية). لا ننصح بمواصفات معينة أو نظام تشغيل معين، استعمل ما يحلو لك وما ترى نفسك معتادًا عليه (سواءً كان ويندوز أو لينكس أو ماك). ستحتاج أيضًا إلى اتصالٍ جيد بالإنترنت للوصول إلى المواد التعليمية، ولتنزيل البرمجيات والمكتبات اللازمة للتطوير. أما بخصوص أدوات التطوير، فستحتاج إلى برمجية لكتابة الشيفرات، وهنالك نوعان رئيسيان لها: المحررات النصية: مثل Visual Studio Code أو Atom أو Sublime Text أو Bracktes أو Notepad++‎. وهذه المحررات النصية تكون بسيطة في أغلبها، وتوفر ميزات أساسية مثل تلوين الشيفرات، وبعض ميزات الإكمال التلقائي، وتدعم أغلبيتها إضافات لزيادة وظائفها. وظيفة هذه المحررات النصية عمومًا هي تعديل الشيفرات بسهولة وسرعة. ننصحك بتجربة Visual Studio Code لشهرته حاليًا وكثرة إضافاته ودعمه الممتاز من شركة Microsoft. بيئات التطوير المدمجة: مثل Visual Studio و Eclipse و Android Studio و NetBeans و Apple Xcode وغيرها. وهذه البيئات توفر ميزات أكثر بكثير من المحررات النصية، مثل تشغيل الشيفرات وتنقيحها (debugging) وميزات التحكم بالإصدارات (version control) والاتصال بقواعد البيانات وخلاف ذلك. لماذا هناك العديد من لغات البرمجة؟ قد تتساءل، لماذا هناك العديد من لغات البرمجة؟ أليست هذه اللغات كلها تنفذ الهدف ذاته؟ لماذا لا يكون هنالك لغة موحدة بين المبرمجين والحاسوب؟ الحقيقة أنّه توجد لغة برمجة واحدة ولكن ليست إحدى اللغات التي تراها أمامك في الصورة. اللغة التي نشير إليها هي لغة الآلة التي يستطيع معالج الحاسوب قراءتها وفهمها. أتتساءل ما هي لغة الآلة وكيف تبدو؟ إليك مقطعًا منها: معلومٌ أنّ معالج الحاسوب لا يفهم شيئًا سوى الأصفار والواحدات، وهذه اللغة -أي لغة الآلة- هي تمثيل للأصفار والواحدات بطريقة تخبر الحاسوب بما يجب عليه فعله. الجدير بالذكر أن هذه اللغة عصية الفهم على البشر، وحتى إن استطعت كتابة شيفرة مثل الشيفرة الموضحة بالصورة (كما في السنوات الأولى من بداية اختراع الحاسوب)، لن يفهمها الآخرون ولن يستطيع أحد التعديل على الشيفرة وتطويرها لاحقًا باستثنائك. سعيًا لإيجاد لغة قريبة من لغة البشر، انقسمت لغات البرمجية إلى قسمين: لغات البرمجة منخفضة المستوى، ولغات البرمجة عالية المستوى وذلك تبعًا لمدى قربها من لغة الآلة أو لغة البشر على التوالي. أي أنّ لغات البرمجة منخفضة المستوى هي اللغات الأقرب للغة الآلة آنفة الذكر مثل لغة التجميع Assembly language، ولغات البرمجة عالية المستوى هي اللغات الأقرب للغة البشر مثل لغة بايثون وجافا. تنفيذ البرامج المكتوبة بلغات برمجة عالية المستوى يقودنا الحديث عن اللغات عالية المستوى واللغات منخفضة المستوى إلى الحديث عن كيفية تنفيذ المعالج للشيفرة المكتوبة بلغة عالية المستوى لا يفهمها المعالج (أليس هذا ما تفكر به الآن؟). عرفنا أن المعالج يفهم الأوامر والتعليمات المكتوبة بلغة منخفضة المستوى (لغة الآلة)، فمَثَلُ هذه العملية كمَثَلِ شخصٍ أجنبي تعلم اللغة العربية وبدأ التحدث مع ناطقٍ باللغة العربية، إذ يمكن لهما التواصل مباشرةً - ليخبر كل منها ما يريد من الآخر فعله - دون وسيط. أمَّا مَثَلُ كتابة برنامج بلغة عالية المستوى أقرب إلى لغة البشر والطلب من الحاسوب تنفيذه كمثل ناطق باللغة الهندية يريد التخاطب مع ناطق باللغة العربية دون أن يفقه أحدهما لغة الآخر. في هذه الحالة، لن يستطيع أحدهما فهم ما يتكلم به الآخر وستفشل عملية التواصل. قد تقول: لماذا لا يحضران مترجمًا يترجم ما يقوله كل منها للآخر؟ حسنًا، هذا ما يحصل تمامًا عندما يراد تنفيذ برنامج بلغة لا يفهمها معالج الحاسوب. في اللغات البشرية، هنالك نوع واحد من المترجمين يعرفه الجميع للترجمة من لغة إلى آخرى؛ أما في لغات البرمجة، هنالك نوعان من المترجمين بين اللغات هما: المفسر interpreter، والمترجم compiler. بناءً على ذلك، تنقسم لغات البرمجة إلى لغات مفسرة ولغات مترجمة. (من الآن وصاعدًا، كلما ذكرنا لغات البرمجة، فنحن نشير إلى لغات البرمجة عالية المستوى.) -المفسر (interpreter): وهو برنامج خاصٌ يفسِّر الشيفرة المصدرية لبرنامج مكتوب بلغة عالية المستوى سطرًا بسطر ويحولها إلى لغة منخفضة المستوى لينفذها الحاسوب مباشرةً. -المترجم (compiler): وهو برنامج خاصٌ يحوِّل الملفات المصدرية لبرنامج مكتوب بلغة عالية المستوى إلى ملف تنفيذي مكتوب بلغة الآلة دفعةً واحدةً، ثم يمكن تشغيل الملف التنفيذي على الحاسوب للقيام بالمهمة المطلوبة. لماذا يوجد الكثير من لغات البرمجة عالية المستوى؟ الآن وبعد أن عرفت الفرق بين لغة الآلة ولغة البشر، لربّما ما زلت تتساءل عن كثرة اللغات البرمجية عالية المستوى المتوافرة وعدم وجود لغة واحدة. نستطيع القول أنك خطوت خطوةً جيدةً للأمام إذ أصبحت الآن أكثر دقة. جواب سؤلك هو أنّ كل لغات البرمجة تُستخدم لتحويل فكرة منطقية إلى سلسلة أوامر يمكن للحاسوب أن ينفذها. فعلى سبيل المثال لا الحصر يمكنك استخدام أي من Ruby أو Java أو Python أو C#‎ أو Go أو JavaScript لبناء موقع ويب. لكن يمكنك أن تعدّ لغات البرمجة على أنها أدوات، وكل أداة تسهّل مهمة دونًا عن أخرى. فعلى سبيل المثال، السيارة والحافلة والدراجة والمحراث الزراعي كلها وسائط نقل، لكنها مختلفة الاستخدام؛ فلا يمكنك أن تذهب وعائلتك لقضاء إجازة صيفية مستخدمين المحراث الزراعي، كما لا يمكنك استخدام سيارة سباق في مدينة مكتظة ذات شوارع ضيقة للذهاب بها إلى العمل. مع أن آلية عمل هذه المركبات متشابهة. والأمر سيانٌ بالنسبة إلى البرمجة. خلاصة القول أنّ هنالك لغات برمجة متخصصة بإنشاء تطبيقات سطح المكتب، وأخرى متخصصة بإنشاء تطبيقات الجوال، وأخرى تستعمل خصيصًا لمواقع الويب، وأخرى لبرمجة العتاد، وهذا ما يحيلنا إلى الحديث عن مجالات البرمجة واللغات الأنسب لكلٍ منها. مفاهيم البرمجة "حسنًا، اقتنعتُ أن البرمجة مناسبة لي وليست صعبة كما كنتُ أتخيل، من أين أبدأ طريقي في تعلم البرمجة إذًا؟" قبل الإجابة عن السؤال السابق، سآخذ وقتي لأشرح لك بعض المفاهيم الخاصة بالبرمجة، ثم سنتحدث عن مجالات العمل فيها وما المسار الأفضل لتعلمك كلًا منها. أنت تعلم أن البرنامج هو سلسلة أوامر ينفذها الحاسوب لحل مشكلة ما، والبرنامج نفسه مكتوب بلغة يفهمها الحاسوب تسمى لغة الآلة. من الأمور الملحوظة التركيز كثيرًا على لغة البرمجة ذاتها أثناء بداية تعلم البرمجة. سأخبرك حقيقةً صادمةً: "لغة البرمجة التي تستعملها ليست بتلك الأهمية التي تتوقعها"، أنا لا أقول لك أن جميع لغات البرمجة متماثلة أو تُستعمل لنفس الاستعمالات، لكن لا تركِّز كثيرًا على تعلم كيفية الكتابة في لغة برمجة ما وتهمل المفاهيم البرمجية التي تقف وراءها. المتغيرات والثوابت عليك أن تتعرف على مفهوم المتغيرات variables المستعمل في جميع لغات البرمجة، والذي يعني إسناد قيمة ما إلى رمز أو كلمة وتخزين هذه القيمة في الذاكرة. فلو أردنا أن نخزن العبارة "Hello World" في متغير ما فنكتب شيئًا شبيهًا بما يلي: var variable_name = "Hello World"; أي أننا نسند الجزء الموجود على يمين إشارة المساواة إلى المتغير المذكور على يسار إشارة المساواة. يمكننا أن نستنتج من اسم "المتغيرات" أن قيمتها قابلة للتغيير خلال تنفيذ البرنامج، فيمكننا في مكانٍ ما من الملف المصدري أن نعيد تعريف المتغير السابق بكتابة: var variable_name = "New value"; أما الثوابت فهي تتشابه مع المتغيرات في كثيرٍ من النواحي، إلا أنك لا تستطيع إعادة تعريف قيمتها بعد تعريفها أول مرة. قد تستفيد من الثوابت عندما تكون متأكدًا تمامًا من عدم تغيير القيمة خلال فترة تنفيذ البرنامج. فلو أردنا تعريف ثابت اسمه pi يحتوي على القيمة 3.14 (والتي سنعرف أنها لن تتغير مطلقًا)، فيمكننا أن نكتب: const pi = 3.14; وإذا حاولتَ تغيير قيمة الثابت بعد تعريفه فستحصل على رسالة خطأ. الشروط تدعم جميع لغات البرمجة تعريف شروط تُنفَّذ في حالات معينة. ففي الخوازرمية السابقة التي شرحنا فيها حساب العمر، يمكننا أن نكتب الشرط بالعربية كما يلي: إذا كان (تاريخ الميلاد أكبر من التاريخ الحالي): نقول للمستخدم أن هنالك خطأ وإلا: سنحسب العمر بطرح تاريخ الميلاد من التاريخ الحالي وإذا أردنا كتابتها بإحدى لغات البرمجة فستبدو شبيهةً بما يلي: if ( user_birth > current_year ) { // ERROR! } else { age = current_year - user_birth; } لا تلقِ للأقواس بالًا، فهي جزء من لغة البرمجة، وقد تختلف من لغة لأخرى، وليست موضع اهتمامنا حاليًا. حلقات التكرار ماذا لو كانت لدينا قاعدة بيانات فيها أكثر من مستخدم ولكل مستخدم تاريخ ميلاد. لا تقل لي سنأخذ التواريخ يدويًا وندخلها إلى البرنامج! هذا مضيعةٌ للوقت، والصواب هو إنشاء حلقة تكرار تأخذ قيمة تاريخ الميلاد الخاص بكل مستخدم ثم تحسب عمره كما أسلفنا في القسم السابق. دعنا نعدل الخوارزمية البسيطة لنضيف تكرارًا فيها: ما أجمل البرمجة! تخيل لو كان عندك ألف مستخدم، وكان عليك حساب أعمارهم، يمكنك بضغطة زر أن تحسبها كلها. الدوال الدالة function هي مجموعة من التعليمات البرمجية التي تقبل مدخلات وتعيد القيمة المطلوبة. تكون الدوال عادةً قصيرةً وتقوم بمهمة وحيدة فقط. فمثلًا لو أردنا تعريف دالة باسم divide تقبل عددين، وتعيد ناتج قسمة العدد الكبير على الصغير، فيمكننا أن نكتب الخورزمية الآتية: مصادر تعلم البرمجة للمبتدئين أول ما سيتبادر إلى ذهنك بعد قرارك تعلم البرمجة هو من أين سأتعلم؟ هنا يأتي دور القسم التعليمي المتكامل في حسوب ليقدم للمبتدئ (والمحترف على حدٍ سواء) محتوى علمي مميز ومبسط. تزخر أكاديمية حسوب بالمحتوى المفيد عن تعلم البرمجة للمبتدئين وحتى الخبراء أي على كافة المستويات، ستجد فيها أقسامًا تشرح لغات البرمجة وتقنياتها كلها. ولدينا قسم للأسئلة البرمجية التي يمكنك أن تطرح فيه سؤالك وسيجيب عليه أحد أفراد مجتمع أكاديمية حسوب. أضف إلى ذلك أن الأكاديمية توفر قسمًا للدورات المتخصصة التي تبدأ معك من الصفر وحتى احتراف لغة البرمجة التي تريد تعلمها مع كادر من المدربين المختصين الذي يقدمون لك المساعدة ويجيبون عن جميع استفساراتك. وهنالك قناة للأكاديمية على يوتيوب ننشر فيها دوريًا دروسًا قصيرةً عن تساؤلات محددة ومفاهيم البرمجة وخلافه. لا تنسَ الاشتراك في قناة الأكاديمية لتصلك الفيديوهات الجديدة. ماذا لو أردتَ التعمق أكثر في لغة معيّنة؟ تأتي هنا موسوعة حسوب التي توفِّر توثيقًا عربيًا كاملًا وعالي الجودة، مدعّمًا بالأمثلة لمختلف لغات البرمجة وتقنيات تطوير الويب والجوال. ستكون الموسوعة مرجعًا تعود إليه في مسيرتك البرمجية، وتستعين بها لمعرفة التفاصيل الدقيقة عن لغات البرمجة. فأنت لست مضطرًا لحفظ كل شيء في لغة البرمجة، إذ حتى المبرمجون المختصون ذوو الخبرة يعودون إلى التوثيقات بين الفينة والأخرى أثناء عملهم. لننطلق الآن للتحدث عن مجالات البرمجة الأساسية وما اللغات والتقنيات المستعملة فيها. تطوير واجهات المستخدم يبدأ أغلبية المطورين مشوارهم من خلال تعلم تطوير واجهات المستخدم عند اتخاذ قرارهم لدخول مجال تطوير وبرمجة مواقع الويب، وذلك لسهولة اللغات المستعملة في هذا المجال. هدف هذا المجال هو تطوير صفحات الويب التي تعرض محتوى مختلف مواقع الويب، وهي الصفحات التي تراها عند زيارتك لموقع أكاديمية حسوب أو موسوعة حسوب أو مستقل أو أي موقع آخر. تتألف صفحة الويب من مجموعة من المكونات، وتُكتَب هذه المكونات باستخدام لغة HTML، وبعد كتابة البنية الهيكلية للصفحة سنأتي على تنسيقها باستخدام لغة CSS، وهي اللغة المستعملة لإضفاء شكل وهيئة على عناصر HTML. أي أن عناصر HTML تصف محتوى الصفحة (مثل الترويسات والقوائم والمحتوى الرئيسي والفقرات والروابط والصور والفيدوهات)، وقواعد CSS تُعرِّف كيف يجب أن تبدو هذه العناصر (سواءً من ناحية الألوان أو المساحات أو الخلفيات أو الخطوط أو خلاف ذلك). تأتي لغة JavaScript مكملةً لهما وتستعمل لإعطاء بعض عناصر الصفحة صفاتٍ تفاعلية، مثل شريط متحرك من الصور أو قوائم تظهر عند وقوع حدث معيّن …إلخ. هنالك تقنيات كثيرة تستعمل في تسهيل إنشاء الواجهات الأمامية وسنذكر بعضها: إطار Bootstrap لتسهيل تنسيق عناصر الصفحة. مكتبة jQuery لتسهيل التعامل مع عناصر الصفحة باستخدام JavaScript. مكتبة React JS: لتسهيل تطوير واجهات المستخدم بالاعتماد على مكونات قابلة لإعادة الاستخدام. لغة Sass لإنشاء ملفات CSS بسرعة وسلاسة. أدوات بناء مثل Webpack الذي يسهِّل تحويل الملفات المصدرية للتطبيق إلى النسخة النهائية التي ستعرَض للمستخدم. لتعلم تطوير واجهات المستخدم، ننصحك بالتسجيل في دورة تطوير واجهات المستخدم المقدمة من أكاديمية حسوب، والتي تحتوي على أكثر من 72 ساعة فيديو تتوزع على ثمانية مسارات تعليمية تشرح أمثلة عملية تطبيقية شرحًا مفصلًا. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب لتتعرف على توثيق لغات البرمجة المذكورة، وذلك للاطلاع على تفاصيل وأمثلة أكثر عن كل جزئية من الجزئيات المشروحة في دورة تطوير واجهات المستخدم. اللغات والتقنيات المستخدمة في تطوير واجهات المستخدم: HTML و CSS و JavaScript و Bootstrap و Sass و jQuery و Webpack. تطوير الواجهات الخلفية قد تتساءل: ماذا يعني تطوير الواجهات الخلفية (backend)؟ وما الفرق بينه وبين تطوير واجهات المستخدم (frontend)؟ الفرق بينهما هو أن الواجهات الخلفية هي البرمجيات التي تُنفَّذ على الخوادم وتجري عمليات عليها مثل التعامل مع قواعد البيانات والملفات والخدمات الخارجية، أما واجهات المستخدم فهي الصفحات التي تظهر على شاشة الزائر في متصفحه. سأطرح عليك الخيارات المتاحة أمامك للبدء في مجال تطوير الواجهات الخلفية، وجميع اللغات المذكورة هنا هي لغات ناجحة وقوية ولا يهم أي لغة تختار منها، المهم أن تتطلع على شيفرات بسيطة من كل لغة وتتخذ قرار تعلمها، واحذر من تضييع وقتك في التنقل بين لغات البرمجة والبحث عن أفضلها، فكلُ لغةٍ ممتازةٌ في مجالها. تعلم البرمجة باستخدام لغة PHP بعد تبيان الفرق بين واجهات المستخدم والواجهات الخلفية، يمكن القول بأن أشهر لغة لتطوير الواجهات الخلفية هي لغة PHP، وتتفوق على اللغات المنافسة لها أضعافًا مضاعفة. تعلم البرمجة بلغة PHP أمر سلس، فهي لغة سهلة التعلم وبسيطة الشكل، والمجتمع حولها كبير وتطويرها مستمر. هذه اللغة هي خيار استراتيجي لمن يريد الدخول إلى مجال تطوير الواجهات الخلفية. هنالك عدد من البرمجيات المكتوبة بلغة PHP مثل ووردبريس WordPress ودروبال Drupal وميدياويكي MediaWiki (التي تشغِّل ويكيبيديا وموسوعة حسوب) وغيرها الكثير؛ إضافةً إلى عددٍ كبير من إطارات العمل مثل Laravel و CodeIgniter و Symfony و CakePHP و Yii وغيرها، وهذا ما يدل على إمكانيات اللغة الكبيرة والمجتمع الكبير الذي يحيط بها. لتعلم تطوير الواجهات الخلفية باستخدام PHP، ننصحك بالتسجيل في دورة تطوير تطبيقات الويب باستخدام PHP المقدمة من أكاديمية حسوب، والتي تحتوي على 75 ساعة فيديو تتوزع على اثني عشر مسارًا تعليميًا تبدأ بأساسيات لغة البرمجة PHP للمبتدئين، مرورًا بشرح أمثلة عملية تطبيقية بالتفصيل، ووصولًا لتطوير التطبيقات باستخدام إطار العمل Laravel، وشرح تطوير ووردبريس. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة PHP وإطار العمل Laravel. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام PHP هي: PHP و Laravel وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم البرمجة باستخدام لغة روبي - Ruby إذا كنتَ تبحث عن لغةٍ أنيقة وسهلة الاستعمال فستجد ضالتك في لغة روبي Ruby فهي من أجمل اللغات وأسلسها كتابةً، وهي لغة برمجة عامة يمكن استخدامها لتطوير مختلف أنواع التطبيقات ومن ضمنها تطوير تطبيقات الويب. ذاع صيت روبي في تطوير الويب بعد نشر إطار العمل Ruby on Rails (يشار إليه اختصارًا "ريلز"). هنالك إطارات عمل أخرى مثل سيناترا Sinatra لكن يبقى ريلز أشهرها. لتعلم تطوير الواجهات الخلفية باستخدام روبي، ننصحك بالتسجيل في دورة تطوير تطبيقات الويب باستخدام روبي المقدمة من أكاديمية حسوب، والتي تحتوي على 20 ساعة فيديو تتوزع على أربعة مسارات تعليمية تشرح أمثلة عملية تطبيقية شرحًا مفصلًا، وتشرح تطوير التطبيقات باستخدام إطار العمل ريلز. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة روبي وإطار العمل ريلز. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام روبي: روبي و ريلز وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم البرمجة باستخدام لغة جافا سكربت - JavaScript نعم! تستعمل JavaScript في تطوير الواجهات الخلفية أيضًا. الفضل يعود لبيئة Node.js التي تسمح للمطورين باستخدام JavaScript لكتابة برمجيات تعمل من جهة الخادم وذلك لتوليد صفحات ويب ديناميكية قبل إرسالها إلى المتصفح، وتستطيع Node.js التعامل مع الملفات وقواعد البيانات ومختلف أنظمة الشبكات وخدمات أنظمة التشغيل. هل يوجد أجمل من استخدام نفس اللغة لبرمجة الواجهات الأمامية لمواقع الويب والواجهات الخلفية؟ وكل ذلك باستخدام لغة سهلة التعلم والاستعمال ومدعومة دعمًا ممتازًا من المجتمع. تعلم لغة JavaScript لتطوير الواجهات الخلفية من خلال التسجيل في دورة تطوير التطبيقات باستخدام JavaScript المقدمة من أكاديمية حسوب، والتي تحتوي على 69ساعة فيديو تتوزع على أحد عشرمسارًا تعليميًّا تشرح أمثلة عملية تطبيقية شرحًا مفصلًا، وتشرح تطوير الواجهة الخلفية باستخدام Node.js. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة JavaScript وبيئة العمل Node.js. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام JavaScript: لغة JavaScript وبيئة Node.js وإطار العمل Express.js وقواعد البيانات (مثل MongoDB و MySQL و PostgreSQL وGraphQL وغيرها). تعلم البرمجة باستخدام لغة بايثون - Python لغة بايثون متعددة الاستعمالات، ويمكن عدّها على أنها أسهل لغة برمجة على الإطلاق، إذ تبدو شيفرتها البرمجية كأنها مقالة مكتوبة باللغة الإنكليزية. إذا أردتَ لغةً سهلةً ومدعومةً دعمًا ممتازًا ولها أطر عمل كثيرة فأنت تبحث عن لغة بايثون. الخيارات المتاحة أمامك هي إطار العمل جانغو (Django) وفلاسك (Flask) وغيرها، يمكنك تعلم لغة البرمجة بايثون لتطوير الواجهات الخلفية من خلال قراءة سلاسل المقالات عن تعلم بايثون في قسم البرمجة في أكاديمية حسوب، ثم الانتقال إلى تعلم إطار العمل جانغو أو فلاسك. يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة بايثون. تعلم لغة بايثون لتطوير الواجهات الخلفية من خلال التسجيل في دورة تطوير التطبيقات باستخدام Python المقدمة من أكاديمية حسوب، والتي تحتوي على 69 ساعة فيديو تتوزع على عشرةمسارات تعليمية تشرح أساسيات لغة بايثون للمبتدئين، ثم تطبق عمليًا بأمثلة واقعية، وتشرح إطار العمل جانغو Django وفلاسك Flask. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام بايثون: لغة بايثون وإطارات العمل المبنية عليها (مثل جانغو وفلاسك) وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم تطوير تطبيقات الجوال ازداد عدد تطبيقات الجوال لأنظمة أندرويد و iOS ازديادًا كبيرًا في الفترة الماضية، وأصبح لكل شركة أو خدمة تطبيق خاص بها يسهِّل على مستخدميها الوصول إلى الخدمات التي توفرها. النظامان الرئيسيان المسيطران على سوق الجوال حاليًا هما أندرويد ثم iOS. يمكن برمجة تطبيقات أندرويد بلغة Java أو Kotlin (أو غيرهما) وبرمجة تطبيقات iOS باستخدام Swift (وغيرها). ستكتشف أنَّ عليك تطوير تطبيقين منفصلين تمامًا، واحد لهواتف أندرويد وآخر لهواتف iOS، وذلك يسبب زيادةً في حجم العمل المطلوب وصعوبةً في إدارة التغييرات. بسبب ذلك، ظهر مفهوم "التطبيقات متعددة المنصات"، وهي تطبيقات تعمل على نظام أندرويد و iOS دون أي تعديلات، وذلك باستخدام تقنيات مشتركة وهي في الغالب تقنيات الويب. أي أصبح بإمكان مطوري الويب الاستفادة من معلوماتهم في تطوير تطبيقات الجوال باستخدام منصات مثل آيونيك Ionic. تسمح آيونيك Ionic للمبرمجين بالتعامل مع مختلف وظائف الجهاز باستخدام لغة JavaScript، مثل الوصول إلى الموقع الجغرافي، والتقاط صور بالكاميرا، والتعامل مع الملفات وخلاف ذلك. طوِّرت في الفترة الماضية تقنيات أخرى مبنية على JavaScript مثل React Native المبنية على مكتبة React.js والتي تسمح للمطورين بكتابة تطبيقات أصيلة باستخدام تقنيات الويب. تستطيع تعلم تطوير تطبيقات الجوال عبر Ionic وعبر React Native من خلال التسجيل في دورة تطوير التطبيقات باستخدام لغة JavaScript المقدمة من أكاديمية حسوب، والتي تحتوي على 69 ساعة فيديو تشرح أمثلة عملية تطبيقية شرحًا مفصلًا. وكالعادة يمكنك أثناء مشاهدتك للدورة أن تعود إلى موسوعة حسوب للاطلاع على التوثيقات اللازمة. اللغات والتقنيات المستخدمة في تطوير تطبيقات الجوال: Java و Swift و Kotlin و Ionic و React Native وغيرها. تطوير الألعاب تطوير الألعاب هو المجال الذي يحلم جميع مستخدمي الحاسوب بالدخول إليه. فالأغلبية تعرفوا على الحاسوب من خلال ألعاب الفيديو ومن ثم بدؤوا برحلة الاستكشاف عن البرمجة والتطوير. أغلب من يجيب عن تطوير الألعاب يقول "عليك بتعلم لغة C++‎" لكن دعني أفصِّل لك الأمر قليلًا. برمجة الألعاب تتطلب عملًا كثيرًا من فريق عمل كبير، مدعوم من شركة تجارية. من الصعب على مطوِّر وحيد أن ينشئ لعبة كاملة من الصفر دون فريق. تُطور أغلبية الألعاب باستخدام محرِّك ألعاب Game Engine والذي يسهِّل الأمر على المطورين ويتيح بيئة تطوير مناسبة للألعاب، ويتيح الميزات الأساسية لجميع الألعاب مثل التحكم بالكاميرا ونمذجة الشخصيات ثلاثية الأبعاد وتحريكها والأمور الفيزيائية الأخرى. هنالك عدد كبير من محركات تطوير الألعاب، ومن المرجح أنك شاهدت شعارها في الألعاب التي لعبتها من قبل، ومن أشهرها: Unreal Engine و Unity و Godot. يمكن التعامل مع هذه المحركات باستخدام عدِّة لغات، مثل C++‎ (وهي أشهرها)، وجافا (خصوصًا للألعاب على هواتف أندرويد) وحتى يمكن استخدام JavaScript في التعامل مع بعضها. تذكر أنّ الألعاب غير محدودة بتطبيقات سطح المكتب أو الهواتف، فهنالك ألعاب كثيرة تعمل على المتصفحات باستخدام تقنيات HTML5 و JavaScript. اللغات والتقنيات المستخدمة في تطوير الألعاب: C++‎ و Java و JavaScript ومحركات Unity و Unreal Engine و Godot. برمجة الذكاء الاصطناعي يُعد الذكاء الاصطناعي (AI) من المجالات الرائدة والمطلوبة بكثرة في سوق العمل اليوم، لاسيما بعد أن أصبحت تطبيقاته في متناول الجميع وبات يستخدم في العديد من المجالات فتعلمك لهذا المجال الرائد يعزز قدراتك كمبرمج ويساعد على تعزيز تطبيقاتك بقدرات الذكاء الاصطناعي القوية. يتفرع الذكاء الاصطناعي لعدة مجالات من أبرزها تعلم الآلة والتعلم العميق التي تُمكّن الحواسيب من التعلم من البيانات وتحسين أدائها بمرور الوقت دون الحاجة لبرمجة تقليدية. كي تتعلم برمجة الذكاء الاصطناعي تحتاج لامتلاك فهم جيد للبرمجة وتحليل البيانات ويمكنك استخدام لغات برمجة متعددة في هذا المجال أشهرها لغة البرمجة بايثون التي توفر الكثير من المكتبات والأطر المساعدة مثل تنسرفلو TensorFlow وكيراس Keras وبايتورش PyTorch وباندا Pandas. إذا كنت مهتمًا بتعلم هذا الاختصاص القوي فستوفر لك دورة الذكاء الاصطناعي من أكاديمية حسوب التي تحتوي على 58 ساعدة تدريبية ممتدة على ثمانية مسارات تدريبية شاملة كل ما تحتاج إليه للبدء بتطوير تطبيقات ذكاء اصطناعي قوية واكتساب مهارة في تحليل البيانات من الصفر ودون الحاجة لامتلاك معرفة مسبقة. اللغات والتقنيات المستخدمة في برمجة الذكاء الاصطناعي هي Python و MongoDB وPymongo و TensorFlow و Keras و Pandas والنماذج اللغوية الكبيرة LLMs المختلفة. تطوير الأنظمة المدمجة الأنظمة المدمجة هي أنظمة حاسوبية شبيهة بالحاسوب ولكنها لا تملك كل ميزات الحاسوب الذي تراه أمامك الآن. بعبارة أخرى، النظام المدمج هو حاسوب صغير مبرمج لأداء مهام محددة فقط ومدمج ضمن الجهاز أو البيئة المراد استخدامه فيها. أنت الآن محاط بالكثير من الأنظمة المدمجة الآن مثل جهاز مقياس مستوى المياه وجهاز التحكم بالتلفاز وجهاز إنذار الحريق وأجهزة المراقبة …إلخ. حتى إشارات المرور وتنظيم السير وألعاب الأطفال الآلية تصنَّف على أنها أنظمة مدمجة. هل سمعت أيضًا بمصطلح "إنترنت الأشياء"؟ إنترنت الأشياء هو نظام مدمج متصل بالإنترنت. نعم، بهذه البساطة! لابد الآن أن يتبادر إلى ذهنك الساعات والثلاجات والغسالات الذكية وطائرات الدرون وأنظمة المراقبة عن بعد وأنظمة البيوت الذكية، إذ كلها أمثلة على إنترنت الأشياء. كيفية برمجة الأنظمة المدمجة أشهر وأكثر لغة برمجة تستعمَل في برمجة الأنظمة المدمجة وإنترنت الأشياء هي لغة C (أي لغة سي) وكل اللغات المشتقة منها (مثل‎ لغة أردوينو C). تُستعمَل لغة C++‎ كثيرًا في هذا المجال، إذ تعدُّ لغة ذات مستوى أعلى من لغة C لدعمها للبرمجة كائنية التوجه. أضف إلى ذلك أنه بدأ حديثًا استعمال لغة بايثون في برمجة تطبيقات الأنظمة المدمجة مع أنها لم ترتبط تقليديًّا بهذا المجال سابقًا. صحيح أنَّ لغة بايثون ليست بقوة لغة C و C++‎ في هذا المجال إلا أنها تستمد ميزاتها وفعاليتها من المكتبات الهائلة المتوافرة فيها. بعيدًا عن C وبايثون، تستعمل في مجال الأنظمة المدمجة أيضًا لغات أخرى تنضوي ضمن "لغات توصيف العتاد" (Hardware Description Languages)؛ لغتي VHDL و Verilog هما من أشهر لغات توصيف العتاد المستعملة في هذا المجال. تُستعمَل مثل هذه اللغات في برمجة "مصفوفة البوابات المنطقية القابلة للبرمجة" (FPGA أي Field Programmable Gate Array). أخيرًا، قد تجد بعض المراجع تشرح برمجة الأنظمة المدمجة بلغة أخرى تدعى "لغة التجميع" (Assembly Language) التي تصنف من اللغات منخفضة المستوى. يتطلب تعلم البرمجة باستخدام هذه اللغة فهمًا واسعًا بمعمارية وحدة التحكم المركزية والمعالج بالمجمل لأنها أقرب لغة يفهمها الحاسوب. الانتقال إلى هذه اللغة قد يكون في مستويات متقدمة من تعلمك لبرمجة الأنظمة المدمجة وتطبيقات إنترنت الأشياء. من ميزات البرمجة بهذه اللغة هي التحكم الواسع بالعتاد والمعالج الذي لا توفره لغات أخرى. يقال أن هذه اللغة صعبة بعض الشيء ومعقدة، ولكن لا أرى ذلك! قد يكون سبب قول ذلك هو أن لغة التجميع هي لغة منخفضة المستوى وأقرب شيء إلى لغة الآلة ولا يستطيع من يلقي نظرة على شيفرة مكتوبة فيها فهمها مطلقًا إن لم يعرفها. تطوير تطبيقات سطح المكتب مجال تطوير تطبيقات سطح المكتب كالمحيط الواسع؛ إن لم تملك بوصلة وتعرف إلى أين تريد الاتجاه، ستضيع فيه حتمًا. هنالك الكثير من أنظمة التشغيل أشهرها - وأكثرها سيطرةً على السوق حاليًا - هي: نظام التشغيل ويندوز، ولينكس، وماك (macOS)، ويملك كل نظام تشغيل تطبيقات مكتبية خاصة به. لذلك، يجب عليك أولًا -قبل الدخول إلى سوق برمجة تطبيقات سطح المكتب- تحديد نظام التشغيل المستهدف. أي يجب الإجابة على السؤال التالي: هل يستهدف تطبيقك نظام تشغيل محدد، أم تريد لتطبيقك أن يعمل على عدة أنظمة تشغيل في آن واحد؟! بعد تحديد نظام التشغيل المستهدف، اطلع على اللغات المفضل استعمالها في ذلك النظام لبرمجة تطبيقاته؛ فعلى سبيل المثال، اللغات C و C++‎ و C#‎ و VB.NET هي الأكثر استعمالًا في برمجة تطبيقات نظام التشغيل ويندوز، واللغات C و C++‎ و Bash هي الأكثر استعمالًا في برمجة تطبيقات توزيعات نظام التشغيل لينكس. أمَّا نظام الشغيل ماك، فينفرد باستعمال لغة Objective-C. حسنًا، دعني أخبرك الحقيقة، كل لغة برمجة عامية الغرض يمكن استعمالها في برمجة التطبيقات، إذ أشهر اللغات التي تُدرَّس أكاديميًّا في هذا المجال هي لغة جافا (Java). لا يخفى على القارئ دخول لغة بايثون بقوة على هذا المجال نظرًا لامتلاكها الكثير من المكتبات الرائعة وسهولة صياغتها. دخلت مؤخرًا لغة جافاسكريبت على سوق برمجة تطبيقات سطح المكتب عبر إطار العمل Electron (إلكترون)، إذ توظف في هذا المجال تقنيات تطوير الويب (HTML و CSS و JavaScript …إلخ.). بدأ هذا الإطار ينتشر كالنار في الهشيم مما دفع شركات كبيرة لتطوير تطبيقات سطح المكتب الخاصة بها باستعمال هذا الإطار ومنها شركة Slack التي استعملت هذا الإطار لتطوير تطبيقها المكتبي. أعلم أنك الآن تشعر بالضياع من كثرة لغات البرمجة والتقنيات المستعملة في هذا المجال؛ معك حق، فقد أخبرتك بذلك منذ قليل. دخول هذا السوق يحتاج منك تحديد هدفك منه بالضبط. هل لديك فكرة تطبيق وتريد إنشاءه والربح منه؟ هل تريد العمل لدى شركة محددة؟ ما هي مواصفات التطبيق الذي تريد إنشاءه أو تريد العمل على تطويره؟ كل ذلك يلعب دورًا في تحديد لغة البرمجة الأنسب لك لتعلمها. في النهاية، إن تعلمت أساسيات البرمجة وأتقنت العمل على لغة برمجية محددة، سيسهل عليك الانتقال إلى لغة برمجة أخرى، إذ أغلب لغات البرمجة تشبه بعضها بعضًا من ناحية المفهوم والمضمون وتختلف بعض الشيء من ناحية الصياغة والشكل. لذلك، اطمئن من هذه الناحية. كيفية اختيار لغة البرمجة التي تناسبك يمكنك اختيار لغة البرمجة اعتمادًا على المجال الذي تحب العمل فيه، سألخص لك مسار التعلم لمختلف مجالات العمل: العمل كمطور ويب full-stack: يعني ذلك تعلم تطوير واجهات المستخدم أو الواجهات الأمامية، وتطوير الواجهات الخلفية. يمكن التخصص بمجال واحد من هذين المجالين فقط، إذ يُطلَب كثيرًا في سوق العمل مبرمجين متخصصين في واجهات المستخدم أو الواجهات الخلفية. العمل كمطور تطبيقات للهواتف المحمولة: يمكنك تعلم برمجة تطبيقات أندرويد أو iOS كلًا على حدة، أو استعمال تقنيات مثل كوردوفا لتطوير لكلا النظامين معًا. العمل كمطور تطبيقات سطح المكتب: يمكنك البدء بالتخصص في تطوير تطبيقات مكتبية لنظام تشغيل محدَّد (مثل نظام التشغيل ويندوز أو لينكس) عبر تعلم لغة البرمجة المستعملة في ذاك المجال (كما أشرنا إلى ذلك في قسم تطوير تطبيقات سطح المكتب)؛ خيار آخر هو تعلم اللغات والتقنيات التي تمكنك من تطوير تطبيقات عابرة للمنصات (تعمل على عدة أنظمة تشغيل) مثل استعمال إطار العمل Electron. العمل كمطور للأنظمة المدمجة والأنظمة الذكية: لغة C هي أساس هذا المجال، سواءً كنتَ تتعامل مع المتحكمات مباشرةً، أو تتعامل مع شريحة مثل أردوينو (والتي تمتلك لغةً مشتقةً من C). يساعدك هذا الفيديو على معرفة المعايير التي من خلالها ستتمكن من اختيار لغة البرمجة التي تتناسب مع تطلعاتك وأهدافك المستقبلية. نصائح لتعلم البرمجة مشوار تعلم البرمجة من الصفر طويل وشائق، ولكنه جميل ومسلٍ بذات الوقت، قد تصاب بالإحباط في بداية طريقك لكثرة الأمور التي عليك الإلمام بها، لذا جهزت إليك النصائح الآتية من تجربتي في البرمجة: حدد هدفك من تعلم لغة البرمجة وسوق العمل الذي تريد دخوله واجعله واقعيًا. بدون هدف، أبشرك بأنك ستتخلى عن فكرة تعلم البرمجة بعد حين. انتبه إلى أن يكون هدفك واقعيًا وقابلًا للقياس والتجزيء على مراحل. بدون ذلك، ستفشل من أول عقبة وتترك تعلم البرمجة. أعرف نفسك جيدًا ونقاط قوتك وضعفك. كلنا لديه نقاط قوة وضعف، ولكن المفلح من عمل على ترميم وتحسين نقاط ضعفه في المجال الذي يرغب بتعلمه. رشح دورة واحدة وكتابًا واحدًا وابدأ بقراءة الكتاب ومتابعة الدورة تدريجيًّا ثم انتقل بعد الانتهاء إلى دورة أخرى وكتاب آخر، إذ سيجنبك ذلك التشتت بين الدورات الكثيرة والكتب العديدة. الشيء الذي أفعله قبل بداية تعلم شيء جديد هو ترشيح قائمة من عدة كتب ودورات ثم ترتيب هذه الكتب والدورات بحسب جودتها ومدى بساطتها وتعقيدها. أرقم الكتب والدورات وأبدأ بالخيار الأول منها. أحدد الوقت التقريبي الذي يأخذه كل خيار لدراسته وأجدول الخيارات البقية على رزنامتي الخاصة. لا تأخذ العلم إلا ممن تثق بعلمه، فالكثير من المبتدئين يحاولون مساعدة غيرهم وقد يضعون معلومات مغلوطة دون قصد. طبق ما تعلمته مباشرة، وأنشئ أي شيء من كل أمر جديد تتعلمه حتى لو كان رسمة بسيطة أو شيفرة من عدة أسطر فقط. فرحة إنجاز شيء مما تعلمته تدفعك لتعلم المزيد والاستمرار في طلب العلم. نظم وقتك بورقة وقلم، حدد بداية كل أسبوع خطةً لسائره والتزم بتنفيذها. أخبر أصدقائك أن لديك التزامات وأمور مهمة عليك إنجازها. خصص وقتًا للاستراحة بالطبع ولا تنسَ نصيبك منها. في نهاية كل أسبوع، وازن مدى الإنجاز الذي حققته ومدى تطبيق الخطة التي وضعها وحاول أن تصل النسبة إلى 100%. أنصحك بقراءة ومتابعة استراتيجيات تنظيم الوقت ورفع الإنتاجية. تمرس على حل المشكلات وتحدى نفسك باستمرار وتابع المسابقات البرمجية واشترك بها إن استطعت، أنصحك بقراءة مقالة حل المشكلات وأهميتها في احتراف البرمجة بعد هذه المقالة. لا تنسَ أن تكافئ نفسك في كل مرة تنهي فيها كتابًا أو تكمل العمل على مشروع. لا تنسَ حظك من الاستراحة، لأن طريق البرمجة قد يكون له بداية ولكن النهاية بعيدة ومتعبة -مثله مثل أي مجال آخر-. في النهاية أرجو لك كل التوفيق في مشوارك البرمجي. وأرجو منك أن تشاركنا تجربتك في تعلم البرمجة، لعل غيرك يستفيد منها. اقرأ أيضًا كيف تتعلم البرمجة المدخل الشامل إلى تعلم علوم الحاسوب المرجع الشامل إلى تعلم لغة بايثون تعرف على أعلى تخصصات البرمجة أجرا تعلم لغة HTML قواعد البرمجة ما هي فوائد تعلم البرمجة؟ أسهل لغات البرمجة أهمية البرمجة
    1 نقطة
  4. سنفترض أنك قد قرأت الفصول السابقة وتأكدت أن العمل الحر مناسب لك، وأنشأت حسابًا جديدًا في إحدى منصات العمل الحر ولتكن مستقل أو خمسات مثلًا، ورفعت نماذج من أعمالك السابقة إن كانت لك أعمال، أو أنشأت أعمالًا جديدة من تلقاء نفسك لتجعلها نماذج شاهدة على جودة عملك، والخطوة التالية الآن هي التعاقد مع عملاء، أليس كذلك؟ بلى، لكن كيف السبيل إلى ذلك؟ إننا ندرك جيدًا الصعوبة التي يشعر بها من لم يتعامل مع عملاء بشكل حر عبر الإنترنت من قبل، فقد مررنا بهذه المرحلة، ولن نحاول تجميل الوضع لك هنا لنقول لك أن هذه مرحلة عابرة أو أنها قصيرة أو نحو ذلك، بل نفضل إبقاء الأمور على حقيقتها مع بذل الوسائل التي تعينك على تجاوزها بإذن الله. وإنك لا محالة ستعمل بأحد أسلوبين، إما أن تعرض خدماتك في حسابك ليتصفحها العميل ويختار منها ما يشاء، كما في حالة موقع خمسات للخدمات المصغرة، أو أنك تضع ملخصًا عنك وعن أعمالك في حسابك، وتزين معرض أعمالك بأفضلها، ثم تتصفح أنت المشاريع التي يطرحها العملاء ليطلبوا من يتعاقدون معه على تنفيذها، كما في حالة موقع مستقل. وربما تقدم عروضك على المشاريع في مستقل أو تنتظر طلب العميل لخدمتك على خمسات وقتًا طويلًا، لكن هذا لا يعني أن تنتظر مكتوف اليدين دون عمل، فهذا وقت فراغ لك تشغله بتطوير نفسك ومهاراتك، والبحث عما يطلبه العملاء، فقد تقدم خدمات لسوق غير موجود، أو ربما لديك ثغرة في ملفك الشخصي تمنع العملاء من التعاقد معك. ولا يصيبنك الإحباط عند رفض العميل لك، فهذا سوق يحكمه العرض والطلب، وقد يكون العميل ممثلًا لشركة تحكمها قواعد ضابطة لاختيار العاملين معها، قواعد قد لا يكون لك فيها دخل، كمن يطلب من له خبرة بلهجة معينة أو قوانين لدولة بعينها. وإننا ندعوك إلى الحرص على تتبع العملاء بشكل لطيف غير مزعج لتسألهم عن سبب عدم اختيارهم لك من أجل أن تصقل نفسك فيه، وستجد العميل يخبرك أنه كان يحتاج من عنده مهارة كذا، أو من له خبرة في كذا وكذا، فتضع يدك على مطالب السوق لتصرف فيها وقتك وجهدك. ولنقل أنك وضعت عرضك على أحد المشاريع التي رأيت أنها مناسبة لك، وحددت ميزانيتك ووقت التنفيذ، وقبل العميل عرضك، وها أنتما الآن وجهًا لوجه في صفحة المشروع ونقاش الصفقة، فهذا محل حديثنا في هذا المقال وما يليه، وسنبدأ بالإدارة الفنية للمشروع. تنظيم طريقة التعامل بينك وبين العميل يتحمس البعض لقبول عرضه فيلتفت فورًا إلى مباشرة العمل، ثم لا يرجع إلى العميل إلا عند انتهاء المشروع، وهذا خطأ يجب الحذر منه أشد الحذر، خاصة عند التعامل مع عميل لأول مرة لا يعرف نمط عملك ولا تعرف طبيعة احتياجاته، وقد وقعت في هذا كثيرًا، والواجب هنا هو إرساء أرضية واضحة مشتركة بينكما تحددون فيها المطلوب في المشروع بدقة وفي نقاط واضحة، وتحددون وسائل التواصل بينكما وأوقات ذلك التواصل، وأنواع الملفات التي ستقدمها له وامتداداتها لاحتمال عملك على نظام تشغيل يختلف عن الذي لدى العميل، وسنبين كل ذلك في هذا المقال إن شاء الله. وربما يشعر العميل ببعض الراحة إن كان يتعامل على منصة عمل حر تضمن له حقه مثل مستقل أو خمسات أكثر من التعامل عبر البريد أو عبر أداة إدارة مشاريع مثل تطبيق أنا أو تريللو، لكن هذا لا يمنع أنه يريد معرفة مجريات المشروع وما حدث فيه وقتما يحب أو يرى ذلك مناسبًا. وهذا التفصيل أول المشروع مفيد لك أنت أيضًا في حفظ حقك، فقد يطلب العميل شيئًا في صفحة المشروع أمام المستقلين، ثم يراسلك أنه يريد كذا وكذا -أكثر من الذي طلبه أول مرة- أو يطلب عينة مجانية كبيرة للتأكد من جودة عملك، أو يغير طلباته أو يضيف عليها بعد قبوله لعرضك، فكل هذه مؤشرات تنذر أنه عميل سوء يجب الحذر منه والتعامل معه بشكل واضح ومحدد، حتى إذا حدث -لا قدر الله- نزاع بينكما، استطعت ضمان حقك من جانب إدارة المنصة التي تستخدمها. تنظيم الملفات قد يكون شأن تنظيم ملفات العمل تافهًا لظنك أنك يجب أن تولي المشروع الذي بين يديك وقتك وجهدك، لكن اعلم أن عمل بلا تخطيط هو بداية فوضى محققة، وإن لم تشعر بها في أول عملك، لكن ستجد نفسك بعد عام أو أكثر تنفذ أعمالًا من الصفر أنت تعلم أنك عملتها من قبل، لكن لأنك لم تنظم الملفات يوم بدأت العمل عليها لا تستطيع استرجاعها ولا ربما تذكر أين كانت! وكذلك أثناء العمل على المشروع نفسه، فبين ملف على حاسوبك وآخر على خدمة تخزين سحابية، وملف اسمه "الملف النهائي" وآخر اسمه "التعديل الأخير" ستجد أنك والعميل تائهين بين هذه الإصدارات وبعضها. وقد شرحنا بالتفصيل هذه النقطة لتتعلم كيف تنظم ملفاتك في خطوات بسيطة دون الدخول في تعقيدات في العناية ببيئة العمل. مجلد جامع للمشروع إذا كان العميل يريد ترجمة ملف واحد أو تصميمًا واحدًا أو استشارة فنية لشركته أو نحو ذلك مما يمكن إتمامه بأدوات بسيطة فإن صفحة نقاش المشروع تكفي في الغالب، إذ ترفق الملفات إن وجدت في ردودك على العميل وانتهى الأمر. وقد عملت بهذا الأسلوب بضعة سنين كنت أترجم فيها أحيانًا المقالة الواحدة والخمسة والستة، ولا أحتاج سوى صفحة إدارة المشروع فقط. لكن إن كان المشروع يحتاج تفصيلًا لملفات كثيرة أو متنوعة فقد تحتاج إلى مجلد مشترك بينكما تكون ملفات العمل متاحة فيه للاطلاع والمراجعة والتعديل، بل والعمل عليها من البداية للنهاية أحيانًا، والخيار الشائع الآن والمناسب هو خدمة مثل درايف (Google Drive) من جوجل، أو ما يشابهها من الخدمات السحابية مثل دروب بوكس (DropBox) أو زوهو (Zoho) أو غيرها، وفق ما يناسبك ويناسب عميلك. صيغة ملفات المشروع فإن اخترت موقع المجلد المشترك بينكما وليكن في جوجل درايف مثلًا، فيجب أن تتفق مع العميل على صيغة الملفات التي يريدها، فإن كانت ملفات نصية فقد يريدها بصيغة odf مثلًا أو odt أو حتى بصيغة مارك داون (Mark Down)، عوضًا عن صيغة docx المعتادة التي يصدرها طقم مكتب مايكروسوفت. وقل مثل هذا على ملفات الصور والصوتيات والمرئيات وملفات التصميم ثنائي وثلاثي الأبعاد وغير ذلك، كي لا يحدث أي عبث واختلاف في طريقة عرض المستندات بينك وبين العميل. وقد وقعت في هذا بنفسي أول عملي في الترجمة على موقع مستقل، إذ كنت أستخدم نظام تشغيل وطقم مكتب يختلفان عن اللذان يستخدمهما العميل، فكنت إذا أرسلت إليه الملف وفتحه وجد الكلمات مبعثرة فيعيده إلي مرة أخرى، وذلك لأننا لم نتفق على صيغة محددة للملفات التي سأرسلها إليه. أسلوب إدارة المشروع والآن نأتي لطريقة إدارة المشروع بينك وبين العميل، إذ يجب أن تحددا هل يجب تقسيم المشروع إلى عدة مراحل إن كان كبيرًا أم تكفي مرحلة واحدة، وهذه الطريقة مفيدة لكما على سواء، وهل تكفي صفحة إدارة المشروع على منصة العمل الحر التي تستخدمانها أو رسائل البريد إن كان العميل وصل إليك من بريدك أو موقعك أو أحد حساباتك الاجتماعية، أم يحتاج المشروع إلى تقسيم وتفصيل للمهام وملفات مرجعية وغير ذلك مما قد يجعل العمل من صفحة واحدة أو رسائل بريدية أمرًا مزعجًا جدًا وفوضويًا. وكذلك تنظر مع العميل في كيفية التواصل بينكما ومواقيت ذلك التواصل، هل ستكفي رسائل البريد أو صفحة إدارة المشروع أم تحتاج إلى أن تجتمع به في مكالمات مرئية، أو ربما تحتاج أن تريه شيئًا على حاسوبه أو العكس، وتخبره بمواعيد إجازاتك الأسبوعية كي لا ينزعج حين يراسلك ولا ترد عليه، ومنطقتك الزمنية إن علمت أنه من منطقة زمنية مختلفة. تقسيم المشروع إلى مراحل إن كان المشروع كبيرًا، مثل ترجمة كتاب من سبع مئة صفحة، أو تطبيق لمستشفى يعمل على الأندرويد والآيفون إضافة إلى موقع للمستشفى مرتبط بهذين التطبيقين، أو تصميم لهوية شركة مثلًا، فإننا نفضل أن تطلب من العميل الاتفاق على تقسيم المشروع على عدة مراحل مناسبة، ثم تقدر ميزانية كل مرحلة وتشرعان في العمل. وفائدة ذلك للعميل أنه إن حدثت مشكلة معك أو لم يعجبه عملك فإنه يستطيع أن يلغي ما بقي من المشروع دون أن يخسر وقتًا أو مالًا كبيرًا، أما فائدة ذلك بالنسبة لك فإنه يحفظ حقك المالي أولًا، ويخفف وطأة العمل وإدارته عليك ثانيًا. ذلك أنك ربما تدرك أن العميل قد يحصل على المشروع الذي طلبه ثم لا يعطيك مالك وأجرك! وقد تقول أن منصة العمل ستحفظ لك حقك، نعم، هذا صحيح، ولهذا ننصحك دومًا بالعمل من منصات عمل حر، فإنها وإن كانت ستقتطع نسبة من كل مشروع إلا أنها تضمن لك حقك بما أن العميل يودع قيمة المشروع لدى المنصة قبل أن تتم الموافقة على مشروعه. لكن ماذا لو أتاك العميل من خلال موقعك أو حسابك الشخصي وطلب أن تتعاملا عبر البريد أو أي وسيلة أخرى؟ حينها تطلب منه نصف قيمة المشروع (أو الجزء المتفق العمل عليه) مقدمًا حفظًا لحقك، وتقسم المشروع إلى مراحل إن كان كبيرًا كما ذكرنا، فإن حدث -لا قدر الله- أن حصل العميل على المشروع ولم يعطك باقي المبلغ، فإنك تكون حصّلت أخف الضررين، فلا أنت أنفقت وقتك في المشروع كاملًا، ولا أنت فقدت أجرك على المشروع بما أنك حصلت على نصف الثمن مقدمًا. وإني أخبر عملائي الذين يراسلونني عبر بريدي أني أحصل على نصف قيمة المشروع قبل أن أشرع في العمل فيه، فإن قرر العميل إلغاء المشروع قبل البدء فيه فإني أرجع إليه ما دفعه، وإن قررت أنا الاعتذار عن المشروع فإني أعيد إليه ما دفعه كذلك، أما إن قرر العميل إلغاء المشروع بعد البدء فيه فإن الأمر إلي إن شئت أرجع المال وإن شئت احتفظت به، وذلك وفقًا للوقت والجهد الذي بذلته في المشروع إلى حين طلب العميل إلغاءه. وتبقى الحالة الأخيرة التي يقرر فيها العميل إلغاء المشروع بعد نصف مدة التنفيذ، فإنه لا يحق له حينها شيء مما دفعه طبعًا في حال انتهيت من العمل على ذلك النصف وسلمته إياه أو أوشكت على ذلك. وتلك الفقرة أعلاه ليست بيني وبين نفسي أو أحدثك بها سرًا، بل أخبره بها مفصلة قبل البدء في المشروع إن لم نكن على منصة عمل حر تضمن حقي أو لم نكن تعاملنا من قبل ولا نعرف قواعد العمل لكل منا. لتقسيم العمل أيضًا فائدة أخرى لا يعلمها إلا أصحاب الخبرة في المجال ومن ذاق لوعة الاحتيال؛ ففي حال عدم تقسيم العمل وإنجازه كله وتسليمه إلى العميل، قد يدَّعي العميل أن العمل ليس بالجودة أو المواصفات المطلوبة ويطلب إلغاء العمل ثم يأخذ العمل ويستعمله في حال نجح في إلغاء المشروع وبذلك تقع ضحية الاحتيال والنصب. فإن كنتما تستعملان منصة مثل منصة مستقل، فربما ينصفك فريق الدعم الفني في ذلك إلا إن نجح العميل في إقناع فريق الدعم الفني بطريقة مخادعة بصحة ادعائه خصوصًا أن لديه حجة تسليم العمل دفعة واحدة دون الرجوع إليه أو اطلاعه على سير العمل وعرض عينات له. وهذا الحال على منصة تضمن لك حقك، فكيف إن كنت خارجها؟! لذلك، احرص على تسليم العميل جزءًا تلو الآخر من العمل، وتأكد أن يعطيك الضوء الأخضر بالإكمال في كل جزء وتأكد من توثيق ذلك كتابيًا لإبرازه لفريق الدعم الفني إن حصل أي خلاف بعدئذٍ. أدوات إدارة المشاريع ومتابعة المهام ربما تكفيك صفحة إدارة المشروع على منصة العمل نفسها مع إرسال تقرير دورية عن مرحلة التنفيذ إلى صاحب المشروع أو ربما تكتفي بملف بسيط في جداول جوجل لمتابعته إن كانت مراحله لا تحتاج كثيرًا من التفصيل، مثل ترجمة مقالات فلا تحتاج إلا إلى مرحلتي الترجمة والمراجعة بالإضافة إلى حساب عدد كلمات المقال وعدد الكلمات المترجمة أو ما أنجز من العمل وغير ذلك، فتضعه كله في ورقة عمل (sheet) بصيغة معينة تتفق عليها مع صاحب المشروع. لكن المشاريع المعقدة التي ترتبط بأقسام مختلفة تحتاج إلى تفصيل أكثر من هذا في مراحل التنفيذ خصوصًا المشاريع البرمجية منها، بل ربما تكون أنت جزءًا من عدة أشخاص يوظفهم العميل كي يعملوا على مشروع واحد كبير، وهنا يبرز دور تطبيقات متابعة المهام وإدارة المشاريع. تطبيق "أنا" من حسوب أطلقت حسوب قبل عام تقريبًا تطبيق "أنا" لاستخدامه في إدارة المهام والمشاريع، وهو تطبيق يمكّنك من رفع ملفات إليه وإنشاء ملاحظات ومستندات وقوائم مهام العمل الذي تعمل عليه ومشاركتها مع الآخرين، وتخصيص قوائم للمشاريع التي تنفذها إن كنت تعمل على عدة مشاريع في وقت واحد. كذلك تستطيع إنشاء لوحات فيها قوائم الأخبار والمعلومات المتعلقة بموضوع ما لتتصفحها متى شئت، دون أن تشتت نفسك على الويب، فتكون مجموعة لك في مكان واحد. انظر الصورة التالية. وميزة هذا التطبيق عن تطبيق Trello أو غيره الذي سنتحدث عنه فيما يلي، أنه من العرب للعرب، ولا أقصد من حيث اللغة فقط، بل هو يسد الثغور التي ليس لدينا تطبيقات نحن العرب تفهمنا ونفهمها وتعرف احتياجاتنا، فنضطر إلى استخدام تطبيقات أجنبية قد تحل مشاكل لا تهمنا بالضرورة. وحسب قول عبد المهيمن الآغا في مقالة نشرها على مدونته بشأن تطوير "أنا" أنه لم يرد أن تتحكم خوارزميات في ما يراه على الويب كل يوم، وأراد إنشاء قوائم لما يتابعه تحديدًا، ومكانًا يجمع ما يهتم به في مكان واحد. وفي رأيي هو أسهل التطبيقات بدءًا لك، إذ يكون لك حساب فيه مباشرة إذا سجلت حسابًا في حسوب للعمل على منصة مثل مستقل أو خمسات، فتستطيع تجربته أولًا فإن لم يعجبك انتقلت إلى غيره. تطبيق إدارة المهام ومتابعتها (Trello) لنقل أن العميل يريد إنشاء موقع به عشرين قسمًا كل قسم فيه أربع صفحات، ستجد في الغالب أن كل صفحة ستمر بمرحلة التخطيط الهيكلي (Wireframing) ثم التصميم المرئي، ثم مراجعة التصميم المرئي برمجيًا، ثم تجهيز قواعد البيانات في الناحية الخلفية (BackEnd)، وكتابة محتوى الصفحة ومراجعته وتنسيقه مرئيًا داخل الصفحة، وغيرها. وهكذا قد تجد نفسك بين ثلاثة أو أربعة أشخاص يعملون على هذا المشروع، وحينها لن تصلح صفحة إدارة المشروع لإنهائه أو حتى الرسائل البريدية، بل يحسن بكم حينها استخدام أحد برامج متابعة المهام وتنظيمها، وهذا مثال يمكن إسقاطه على تطبيق أنا الذي ذكرناه أعلاه، لكن لديك خيار Trello هنا بما أننا نتحدث عنه، إذ هو مختص بإدارة المهام فقط، على عكس "أنا" الذي يشمل أكثر من هذا كما وضحنا، كما أن لديك بدائل أخرى مثل BaseCamp و Asana. والحق أني جربتها جميعًا ووجدت أن تطبيق "أنا" أفضل في جمع كل ما أحتاج من إدارة لمشاريعي في مكان واحد، ثم BaseCamp الذي يتفوق على Trello في متابعة المهام وتفويضها وإشعاراتها لكنه ليس مجانيًا وعليه يكون غير مناسب لك إذا كانت ميزانيتك محدودة، على عكس "أنا" وتريللو. المكالمات والاجتماعات قد تحتاج إلى الحديث مع العميل حول عدة أمور أو نقاط لتتخذوا قرارات بشأنها، وإن تم ذلك عبر رسائل نصية فربما يطول اتخاذ قرار واحد إلى نحو أسبوع مثلًا بين الأخذ والرد، فحينها يكون الخيار الأفضل هو اعتماد برنامج للمحادثات الصوتية والمرئية بينك وبين العملاء مثل Skype أو Zoom أو أي وسيلة تواصل مناسبة، بل ربما حتى يكون الاتصال الهاتفي إن رأيتما ذلك، المهم أن تتوفر وسيلة تواصل سريعة تكون قناة مباشرة للمناقشة والعصف الذهني. وإنني أعتمد سكايب في مكالماتي مع العملاء، لكن قد يكون سكايب غير متاح أحيانًا لدي أو لدى العميل، فحينها نستخدم جيتسي Jitsi، وكنت أستخدم Zoom أحيانًا أخرى عند عدم توفر الخيارين الأولين أو عند الحاجة إلى تسجيل الاجتماع بسهولة. وانتبه إلى أن تستأذن العميل من باب الأمانة في تسجيل اجتماعه إن أردت التسجيل، فإني أذكر أن أول استخدام لي لبرنامج Zoom كان أثناء عملي عن بعد في شركة برمجية من قبل، فكنت أسجل اجتماعي مع مدير الشركة في كل مرة بعلمه بأن أخبره أني سأسجل الجلسة إن كنت أنا بادئ الاجتماع، أو أطلب منه السماح لي بالتسجيل إن كان هو البادئ، إذ يجب أن يسمح صاحب الجلسة لغيره بتسجيلها من خلال البرنامج أولًا. ثم استخدمته بعد ذلك مع عملاء من غزة والسعودية وغيرها، وقد وافق البعض بأريحية تامة إذ أني أخبرهم بتسجيلي من أجل العودة إلى الجلسة ومراجعة ما قيل فيها، فقد تمتد الجلسة إلى نصف ساعة أو ساعة، ولا آمن أن أسهو في تسجيل نقطة أو اثنتين إن كنت أسجل كتابةُ، في حين استهجن بعض العملاء واستغربوا طلب التسجيل في البداية، ثم لما شرحت لهم وافقوا على طلبي. وبأي حال فإن شاهد هذه النقطة أن يكون لك أكثر من بديل ليكون احتياطيًا للخيار الافتراضي في حال تعطل البرنامج أو عدم توافره لديك أو لدى العميل، وهذه نقطة يجب التنبه إليها في كل أمرك وأدواتك إذ لا بد من بدائل تكون جاهزة للاستخدام دومًا كي لا يتعطل عملك. إدارة الأزمات نقصد بإدارة الأزمات كيفيّة الاستجابة والتّعامل مع المُشكلات التي تواجهنا فجأةً أثناء تنفيذ عمل معيّن والتي لا يكون لك يد فيها في الغالب مثل المرض والحوادث والسفر الاضطراري، فالمستقل بَشرٌ معرض لمشكلات ومواقف لم يحسب حسابها، وفي حين أنّ الموظّف العادي يستطيع أخذ إجازة فإن المستقل يجب عليه إيجاد آليّة معيّنة للتّجاوب مع الأزمة التي تعرض له لحلّها واستكمال العمل بأسرع وقت ممكن. وأحد الأساليب المهمّة جدًا في حل هذه المشاكل وأنجحها هو إطلاع العميل على الموقف في أقرب وقت ممكن، فذلك أدعى أن تنظرا في حالة المشروع في أقرب وقت لتلافي الخسائر المحتملة عليك أو على العميل. وإننا لنعرف أن التصرف الافتراضي للمستقل في هذا الشأن هو تأجيل إخبار العميل ريثما يتحسن الوضع خوفًا من خسارة المشروع، لكن اعلم أنك تخاطر هنا بعلاقتك مع هذا العميل وربما سمعتك على الإنترنت، فربما لا يتحمل العميل هذا التأخر غير المبرر ويلغي مشروعه معك على أي حال، وربما يتجاوز هذا إلى تحذير غيره من العملاء منك. فتجنب هذا بالمسارعة إلى إخباره بما حدث معك مع تقديم الحلول المقترحة مراعيًا لمصلحة العميل، إما تأجيل التنفيذ أو الاعتذار عن إتمامه إن كان العميل في عجلة من أمره أو كان الطارئ الحادث لك سيطول أمده. وقد واجهت سارة أثناء إعدادها لهذه السلسلة من المقالات أزمة صحية منعتها ممارسة الأعمال اليومية الروتينية، فقررت رغم ذلك متابعة العمل لكن مع شرح حالتها الصحية لأي عميل تعاملَت معه في تلك الفترة، أما العملاء الذين لم تنهي مشاريعهم فقد خيَّرَتهم بين تأجيل المشروع أو إلغائه بشكل نهائي، أو متابعة العمل لكن بوتيرة أبطأ من المعتاد، ولم يطلب أي عميل منهم التوقف عن العمل بل اختار جميعهم انتظارها حتى تتحسن صحتها. خلاصة المقال وهكذا بعد أن فصَّلنا كيفية الإدارة الفنية للمشروع، سننظر في المقال التالي كيفية التعامل الأمثل مع العملاء وإدارة التواصل معهم، والخلافات التي قد تطرأ أثناء العمل على المشروع. اقرأ أيضًا المقال التالي: فن التعامل مع العملاء في العمل المستقل المقال السابق: كيفية التسويق الذاتي في العمل الحر أنا حسوب: أداة واحدة تجمع كل ما تحتاجه لإدارة عملك عن بعد مقدمة إلى تطبيق Trello لإدارة المشاريع أفضل أدوات التواصل عن بعد كيف يساعدك برنامج إدارة البريد الإلكتروني في السيطرة على بريدك الوارد النسخة الكاملة من كتاب دليل المستقل والعامل عن بعد
    1 نقطة
  5. مادري وين اكتب فكتبت هنا مشكلتي لان مافي مكان للكتابه للاستفسارات في مشكله اسوي تسجيل خروج من الحساب مايعمل تسجيل خروج ياليت تحلون المشكله
    1 نقطة
  6. السلام عليكم انا اريد ان اتعلم الموشن جرافيك الا ان ما يردني انه اغلب المصممين يستعملون الموسيقى في اعمالهم وانا لا اريد ذالك هل يمكن ان اشترط على العميل عدم وضع الموسيقى ؟ بمعنى اصمم له المشهد بدون وضع الموسيقى ويمكن هو ان يضعها اويطلب من احد اخر وضعها ؟ يارب فهمتوني و شكرا لكم
    1 نقطة
  7. عندما بدأت عملي، وكالكثير منكم، كنت أقبل العمل مع أي شخص يراسلني، ولا حاجة إلى القول أنّني وجدت نفسي أقوم بالكثير من الأعمال التي لا تناسبني. وبما أنّي أدير الحسابات المستحقّة للعملاء (حيث اضطر إلى القيام بالعديد من المكالمات الهاتفيّة المُحرجة لأطلب المال نيابة عن عملائي)، كثيرًا ما وجدت نفسي في الطرف الآخر من العديد من المكالمات الهاتفيّة التي تم الصراخ عليّ فيها، وذلك ليس بالأمر المثالي. لكنني تعلّمت سريعًا أنّ عليّ انتظار العميل المثالي، وأنّه من المقبول رفض عمل لا يناسبني بكل بساطة. قبل قبول أي عملاء جدد، فكّر كيف يبدو العميل المثالي بالنسبة لك. إذا عملت فقط مع العملاء الذين تحبّهم، لن تكون فقط أسعد، بل سينعكس ذلك على عملك أيضًا. ففي نهاية المطاف، يجب أن يكون عملك هو الجائزة. لا يجب وفي أي مرحلة أن تكون مجبرًا على قبول عمل من عملاء لا يلّبون حاجاتك أو توقّعاتك. قبل أن تتحدث إلى عميل محتمل آخر، اكتب قائمة بالصفات التي قد يمتلكها العميل المثالي. قد يشتمل ذلك على أي أمر بدءً من "الإجابة بسرعة على المكالمات/الرسائل" إلى "الاستعداد للدفع مقدّمًا" (وهي واحدة من النقاط التي أنصحك أن تكون دائمًا في قائمتك!). ما الذي عليك فعله في حال كان لديك بالفعل عملاء غير سعيد معهم ولا يلّبون توقعاتك؟ اتركهم ببساطة. أعلم أنّ ردة فعلك ستكون غالبًا "إنّ هذه المدونة من المفترض أنّها تساعدني على تلقّي أجوري! لا أن تجعلني اترك عملائي!"، أنا أتفهم أنّ قول ذلك أسهل من فعله، لكن إن كان لديك عميل غير مناسب لك، فإنّه من الأفضل لكلا الطرفين إن افترقتما. لا تهجر طبعًا جميع العملاء، فقط من تشعر أنّك اُستهلكت بالعمل معه ومن لا يبدو ابدًا أنّه سيدفع لك في الوقت المحدّد. وتمامًا كما ترغب بإيجاد عملاء يصلون إلى توقّعاتك، يجب أن يكون هو أيضًا قادر على إيجاد شخص محترف يصل إلى توقّعاته. لذا إذا كنت قادرًا على الافتراق عنهم بالاتفاق، افعل ذلك. إذا لم تكن بعد في مرحلة تمتلك فيها قاعدة من الزبائن، يجب أن تكون هذه العملية سهلة عليك أنت بالذات. لذا إذا كنت جديدًا في عالم العمل الحر، وما زلت تحاول الحصول على قاعدة من الزبائن، ابدأ فورًا بهذه العملية. قد لا تمتلك حاليًا قائمة مفصّلة بالصفات المثاليّة للعميل (عليك في بعض الأحيان العمل مع بعض العملاء السيئين قبل أن تدرك ما الذي تريده وتحتاجه في العميل)، لكن يجب أن تكون قادرًا على الأقل على كتابة قائمة مبدئية لتبدأ بها، ثم مع امتلاكك المزيد من الخبرة يمكنك إضافة المزيد إلى قائمتك. لماذا هذا الأمر مهم جدًا؟ إذا كنت تعمل مع عملاء تحبّهم ويتفهمّونك ويقدّرون عملك، سيكون من الأسهل بكثير عليك العمل معهم، وستكون أكثر رضا بما تقوم به، سيكون بينكما علاقة أفضل بالمجمل، وسيجعل امتلاك هذا النوع من العلاقات من تحديد معدلات أجر مناسبة لك ودفع فواتيرك في وقتها أمرًا أسهل بكثير. أن تكون مدير نفسك يمكنه أن يكون مصدرًا للتوتر، لذلك الحرص على العمل مع أفضل العملاء هو أكثر من مهم للحفاظ على صحتك النفسيّة وعلى عملك. ترجمة-وبتصرف-للمقال: Qualifying Your Clients لصاحبته Julie Elster.
    1 نقطة
  8. لدي المصفوفة التالية تضم مجموعة من البيانات: <?php $results = array ( array( "name" => "Kamel Mahmoudi", "email" => "kamel@gmail.com", "age" => 20, "country" => "Saudi Arabia", ), array( "name" => "John Doe1", "email" => "john@foo.com", "age" => 24, "country" => "Jordan", ), array( "name" => "John Doe2", "email" => "john@bar.com", "age" => 31, "country" => "Egypt", ) ); أريد تصدير هذه البيانات لملف csv بحيث يتم تحميل الملف من طرف المُتصفح للمُستخدم.
    1 نقطة
  9. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class car { int ID; string Color; string Model; public void information(int ID,string Color,string Model) { ID = ID; Color = Color; Model = Model; } public void showd() { Console.WriteLine("this is ID:{0}\n this is color:{1}\nthis is model:{2}", ID, Model, Color); } } class Program { static void Main(string[] args) { car myCar = new car(); // عندما اكتب //myCar.information(); //يحدث خط تحت الانفورميشن myCar.information(95," blue", "once"); myCar.information(); //ما هيا المشكله Console.ReadKey(); } } } نرجو المساعدة
    1 نقطة
  10. السلام عليكم ورحمة الله وبركاته المشكلة هي أن الـmethod المسمى information في الصف car يأخذ ثلاث معاملات بينما أنت تمررين لا شيء له بهذا بالطبع سيرفض الكومبايلر هذا الكود. لحل المشكلة عليك تعريف نسخة ثانية من تابع information ليصير الصف car هكذا: class car { int ID; string Color; string Model; public void information(int ID,string Color,string Model) { ID = ID; Color = Color; Model = Model; } public void information() { // do something here } public void showd() { Console.WriteLine("this is ID:{0}\n this is color:{1}\nthis is model:{2}", ID, Model, Color); } } ما تضعه داخل النسخة الثانية يتوقف على ما تريد فعله، يمكنك مثلاً فعل اﻵتي: public void information(int ID,string Color,string Model) { ID = ID; Color = Color; Model = Model; } public void information() { information(95," blue", "once"); } أو أي شيء تريده. بالمناسبة هناك خطأ في implementation الخاصة بالتابع information ذو الثلاث معاملات وهي في السطر التالي: ID = ID; ربما تظن أن التعليمة السابقة تسند ID parameter إلى ID Field الموجود ضمن الصف ولكن هذا غير صحيح بل التعليمة السابقة تسند ID parameter إلى نفسه مما يجعلها عديمة الفائدة، الصحيح هو التالي: this.ID = ID; وكذلك اﻷمر بالنسبة للـmodel وcolor، بهذا يصير صف car النهائي هو التالي: class car { int ID; string Color; string Model; public void information(int ID,string Color,string Model) { this.ID = ID; this.Color = Color; this.Model = Model; } public void information() { information(95,"blue","once"); } public void showd() { Console.WriteLine("this is ID:{0}\n this is color:{1}\nthis is model:{2}", ID, Model, Color); } } أرجو أن تكون الفكرة قد أصبحت واضحة بالتوفيق وشكراً لك
    1 نقطة
  11. هل دورة البرمجة جافا سكريبت في اكاديمية حاسوب راح تعلمني اكتشاف الثغرات
    1 نقطة
  12. لنفترض أنه لدي ملف txt و اريد البحث عن كلمات مُعينة كل كلمة كم تكررت من مرة في هذا الملف بلغة php
    1 نقطة
  13. سمعت هذه الكلمة كيش و الشارح كان يعنى او مافهمته ان الملف قد تلف فهل ما فهمته صحيح و كيف يحدث ذلك و كيف يمكننى تلافى ذلك
    1 نقطة
  14. في حال مثلا طلب عميل تقرير فني للاطلاع عليه وعطاني مشروع متطلبات وطلب اعمل تقرير فني لايش الاشيا الي راح استخدمها وتفاصيل المشروع كيف اعد تقرير فني لذلك
    1 نقطة
  15. اريد ان اشتري حساب جوجل بلي للمطورين في العراق انا بطاقتي مسبقة الدفع و جوجل لا تقبل البطاقات المسبقة الدفع. اذا شخص يقدر يشتري لي حساب ، راح ادفعلة بس كون طريقة طريقة دفع متوفرة في العراق. ممكن شخص يساعدني .
    1 نقطة
  16. وعليكم السلام لا شيء يمنع ذلك إذا تم التوافق بينك وبين العميل كما أن هنالك بعض الأعمال التي لا تتطلب وضع الموسيقى مثل بعض الإ علانات التي يتم فيها وضع حوار عادي بأصوات من غير موسيقى.
    1 نقطة
  17. مرحبًا @رغد حميد محمد أكيد لا بأس في عدم وضع موسيقى في فيديوهات الموشن جرافيك فهي ليست الشيء الأساسي بها، فالفكرة الأساسية من فيديوهات الموشن جرافيك هي توصيل فكرة ما، على سبيل المثال الإعلان عن منتج أو خدمة ما، ويمكن أن يحتوي على كتابة فقط بدون أي موسيقى، وتحتوى على تعليق صوتي Voice Over في الغالب. ولا بأس في وضع ذلك كشرط في تفاصيل العمل، يجب عليك فقط توضيح أنكِ لن تضعي موسيقى في الفيديو حتى لا تحدث مشاكل وقت التسليم.
    1 نقطة
  18. Write a program in C++ to implement circular Linked Queue
    1 نقطة
  19. هل بدأت بكتابة البرنامج؟ في حال وجود أخطاء نستطيع تقديم المساعدة ولكن لن نكتب لك البرنامج أو نحل الوظيفة.
    1 نقطة
  20. مرحبًا بك مرة أخرى فهمت الآن ما قَصَده المدرب، وسأحاول شرحه بشكلٍ أبسط. عند فتحك لصفحة ما في المتصفح يقوم المتصفح بفحص الكود الخاص بها لكي يحمل كل الصور وملفات التنسيق css والجافاسكريبت، ويقوم بتخزين هذه الملفات لفترة من الزمن في حسوبك وتسمى هذه الملفات بالملفات المؤقتة cache files، بحيث إن قمت بزيارة الصفحة مرة أخرى في وقت قريب يقوم بإستخراج هذه الملفات وعرضها مباشرة لك بدلًا من تحميلها مرة أخرى وبالتالي يتم عرض الصفحة بشكل أسرع. لاحظ أن المتصفح لا يقوم بحفظ كل الملفات والصور (لأن ذلك سيستغل حجم كبير من مساحة جهازك) بل يقوم بتخزين فقط الملفات والصور التي يتم تحميلها مرات كثيرة، فعند تحديث الصفحة أكثر من مرة (عمل refresh لها) يقوم المتصفح بحفظ بعض الملفات الخاصة بها، ولذلك قال المدر أن الصفحة "كيشيت" cached أي قام المتصفح بحفظ الملفات الخاصة بها وبالتالي عند تعديل كود الصفحة source code لن تظهر التغيرات في المتصفح حيث يقوم المتصفح بإستدعاء الصفحة (أو جزء منها) من الملفات المؤقتة cached files. ولحذف هذه الملفات المؤقتة في جوجل كروم: أضغط Ctrl + Shift + Del قم بتحديد "Cookies and other site data" و "Cached images and files" أضغط على Clear Data
    1 نقطة
  21. الشيفرتين البرمجيتين متطابقتين و لهما نفس الغرض و نفس الأداء، الاختلاف هو: عدد مرات استدعاء الدالة count لتحسب عدد عناصر المصفوفة. في الحلقة الأولى: for($i = 0; $i < count($salaries); $i++) تم اسدعاء الدالة count بعدد مرات اختبار الشرط (عدد عناصر المصفوفة) و إن كل منهم يلأخذ وحدة زمنية فقط لحساب عدد العناصر (1)O (وحدة زمنية واحدة) أي أن تكرار استدعاء الدالة لن يؤثر على أداء الحلقة. في الحلقة الثانية: for( $i = 0, $count = count($salaries) ; $i < $count; $i++) $i = 0, $count = count($salaries) نلاحظ أن الجزء الأول من حلقة for تم فيه تعريف متغيرين معاً، عداد الحلقة i و متغير يحوي عدد العناصر count.(وهذا مسموح) قبل الفاصلة المنقوطة التي تشير لبداية جزء الشرط من الحلقة. حيث تم تنفيذ استدعاء الدالة count مرة واحد هنا، أما في باقِ تكرارات الحلقة اعتمدنا على الشرط الموضح في الكود $i < $count - ملاحظة عامة: في بعض لغات البرمجة و عند استدعاء الدالة count تقوم هذه الدالة بالمرور على جميع عناصر المصفوفة و تقوم بعدهم أي أنها ستأخذ وقتا بعدد العناصر وهم عادة N عنصر (غير محدد) حيث نلاحظ أن تكرار الاستدعاء سيؤدي في هذه الحالة لزيادة في عدد العمليات الحسابية و بطئ في البرنامج. في PHP الدالة count تأخذ واحدة زمنية أي تنفيذها سريع و تكرار استدعائها لا يؤثر على البرنامج.
    1 نقطة
  22. توفر مبادرة مليون مبرمج عربي عدة مسارات تعليمية: مسار Front-End Development: الذي يهتم بتطوير واجهات المستخدم في مواقع الويب. اللغات والتقنيات: HTML,CSS,Javascript وغيرها. مسار Full-Stack Development: يتولى هذا المجال مسؤوليات المجال الأول وهو Front-End Development ومسؤوليات تطوير الواجهات الخلفية الغير ظاهرة للمستخدم التي تتعامل مع السيرفر وقواعد البيانات. اللغات والتقنيات المستخدمة: لغة Python ، HTML ، CSS ، Javascript. مسار أساسيات تطوير تطبيقات الـAndroid: ستتمكن من تصميم واجهات التطبيقات بإستخدام XML، وتطوير وظائف فعالة للتطبيق من خلال لغة Java. اللغات والتقنيات: Java و XML. يتم منح دورات nanodegree مجانية لأعلى مئة طالب من حيث الدرجات/التحصيل العلمي.
    1 نقطة
  23. اريد تعلم الذكاء الاصطناعي وليس لدي اي خلفية عن هذا المجال من اين ابدا وماهي الخطوات او الخارطة للتعلم من الصفر ؟
    1 نقطة
  24. ما هو الذكاء الإصطناعي يشير مصطلح الذكاء الاصطناعي (AI) إلى الأنظمة أو الأجهزة التي تحاكي الذكاء البشري لأداء المهام والتي يمكنها أن تحسن من نفسها استنادًا إلى المعلومات التي تجمعها يشمل الذكاء الإصطناعي العديد من المجالات ويجب دراسة أحد هذه المجالات مثل روبوتات(Robotics) تعليم الاله(Machine Learning) Neural Networks الشبكات العصبية لمحاكاة المخ البشري Vision يهتم بالرؤية وتفسير الصور Speech Processing تفسير الكلام وإنتاجه Natural Language Processing يستخدم في الترجمة خطوات دراسة ال ai دراسة أساسيات ال ai دراسة أحد فروع ال ai دراسة الأدوات أو اللغات البرمجية المستخدمة مثل لغة ال python بالإضافة للمكتبات الخاصة بالذكاء الإصطناعي
    1 نقطة
  25. في هذا الدرس سنستعرض بعض دوال النصوص المضمّنة في مكتبة دوال اكسل ونوضّح من خلال الأمثلة كيفية استخدامها لتطبيق إجراءات مختلفة على القيم النصيّة مثل، البحث عن النصوص واستبدالها، تنسيق حالة الأحرف للنصوص الإنجليزية، وغيرها. TRIM تعمل هذه الدالة على إزالة المسافات الزائدة بين الكلمات، أو في بداية ونهاية السلسلة النصية. والصيغة العامة لها هي: =TRIM(text) text: النص الذي نريد إزالة المسافات الزائدة منه. مثال: تحتوي الخلية B4 الموضّحة أدناه على مسافات غير منتظمة بين الكلمات، ولحذف المسافات غير المرغوبة نكتب الصيغة التالية في خلية النتيجة: بإمكاننا تحديد الخلية التي تحتوي على النص مباشرة، أو لصق النص يدويًا بين علامتي اقتباس (" "). نضغط على ENTER لإظهار النتيجة: كما نلاحظ في خلية النتيجة، تمت إزالة كل المسافات الزائدة باستثناء المسافات الفردية بين الكلمات. يمكننا استخدام هذه الدالة عند استيراد النصوص إلى اكسل ويكون تباعد الكلمات فيها غير منتظم. إذ ستكون عملية إزالة المسافات الزائدة أسهل وأسرع بكثير من القيام بها يدويًا. PROPER تعمل هذه الدالة على تحويل الحرف الأول من كل كلمة في السلسة النصية إلى حرف كبير وتبقي بقية الحروف صغيرة. ويمكننا الاستفادة منها عند استيراد نصوص معيّنة إلى اكسل وكانت حالة الأحرف للكلمات غير مرتّبة، إذ ستجعل هذه الدالة عملية تنسيق حالة الأحرف أسرع وأسهل بكثير من القيام بها يدويًا. الصيغة العامة لهذه الدالة: =PROPER(text) text: النص الذي نريد تطبيق الدالة عليه. مثال: تحتوي الخلية B5 الموضحة أدناه على نص باللغة الإنجليزية، وحالة الأحرف للكلمات غير منتظمة، لتعديل النص وجعل كل كلمة تبدأ بحرف كبير وبقية الحروف صغيرة، نكتب الصيغة التالية في خلية النتيجة: يمكننا تحديد الخلية التي تحتوي على النص، أو لصق النص غير المرتب بين علامتي اقتباس في الصيغة. نضغط على مفتاح ENTER لإظهار النتيجة: من خصائص دالة PROPER هو أنّه حتّى إذا كانت بداية الكلمة أرقام أو رموز (مثل 09test)، فأنّها تتجاوز الأرقام وتحوّل الحرف الأول إلى حرف كبير (أي تصبح الكلمة المذكورة 09Test). FIND تُستخدم هذه الدالة لتحديد موقع كلمة/عبارة معيّنة ضمن سلسلة نصيّة. فتقوم بإرجاع ترتيب الحرف الأول للكلمة التي نبحث عنها نسبة إلى عدد حروف السلسلة. وتكون هذه الدالة حساسة لتشكيل الكلمة في اللغة العربية ولحالة الأحرف (كبيرة أو صغيرة) في اللغة الإنجليزية. الصيغة العامة للدالة: =FIND(find_text; within_text; [start_num]) find_text: النص الذي نبحث عنه، وهو مطلوب في الصيغة. within_text: النص الذي نريد البحث فيه، وهو أيضًا مطلوب في الصيغة. start_num: مرتبة الحرف الذي نريد بدء البحث منه، ووجوده اختياري في الصيغة (معطيات الصيغة التي توضع بين قوسين مربعين [ ] تكون اختيارية). مثال: لمعرفة موقع كلمة "Functions" في نص الخلية G3 نكتب الصيغة التالية: نراعي وضع الكلمة التي نريد البحث عنها بين علامتي اقتباس في الصيغة ونتأكّد من مطابقة حالة الأحرف، ثم نضغط على مفتاح ENTER لإظهار النتيجة: تم إرجاع النتيجة "6" وهو بالفعل تسلسل أول حرف في كلمة "Functions". فكلمة "Text" تحتل 4 مراتب، والمسافة بين "Functions" و"Text" تأخذ مرتبة واحد ليصبح المجموع 5، وحرف "F" هو السادس. في هذا المثال لم نحدد قيمة start_num، وفي هذه الحالة سيتم افتراض هذه القيمة 1، أي يبدأ البحث من أول حرف في النص. لنغيّر الصيغة ونحدد قيمة المتغيّر start_num 17 مثلا: بالنتيجة تم إرجاع الخطأ #VALUE! لأنّه لم يتم العثور على كلمة "Functions" بعد المرتبة 17. فكلمتي "Text" و"Functions" مع المسافة بينهما تحتل 14 مرتبة، بمعنى أنّ كلمة "Functions" تقع قبل المرتبة 17: لنغيّر الصيغة ونبحث عن موقع كلمة "حسوب" في الخلية G2، وكالتالي: عند الضغط على مفتاح ENTER تم إرجاع الخطأ #VALUE! وذلك لأننا قمنا بإضافة ضمّة فوق حرف السين عند كتابة الصيغة، وكما أسلفنا الذكر، تكون دالة FIND حسّاسة لتشكيل الحروف في اللغة العربية. SEARCH تماثل دالة FIND من حيث الوظيفة، لكنّها غير حسّاسة لتشكل الحروف في اللغة العربية وحالتها في اللغة الإنجليزية. الصيغة العامة للدالة: =FIND(find_text; within_text; [start_num]) find_text: النص الذي نبحث عنه، وهو مطلوب في الصيغة. within_text: النص الذي نريد البحث فيه، وهو أيضًا مطلوب في الصيغة. start_num: ترتيب الحرف الذي نريد بدء البحث منه، ووجوده اختياري في الصيغة. مثال: سنطبّق هذه الدالة لتحديد موقع الكلمة "Functions" كما في المثال السابق: سنلاحظ أنّه سيتم إرجاع نفس النتيجة، "6"، بالرغم من أننا كتبنا بداية كلمة "functions" بحرف صغير: REPLACE تستخدم هذه الدالة لاستبدال نص معيّن في سلسلة نصيّة بنص آخر حسب عدد الحروف الذي نحدّده. ووظيفتها مشابهة لوظيفة أداة استبدال النصوص Replace. الصيغة العامة للدالة: =REPLACE( old_text; start_num; num_chars; new_text ) old_text: السلسلة النصية التي نريد استبدال جزء منها. start_num: مرتبة الحرف الأول للنص الذي نريد استبداله. num_chars: عدد حروف النص القديم الذي نريد استبداله. new_text: النص الجديد الذي نريد الاستبدال به. ملاحظة: كل المتغيرات أعلاه مطلوبة في الصيغة. مثال: لاستبدال كلمة "النصوص" في الخلية G2 بالكلمة "نصية"، نكتب الصيغة كالتالي: قمنا بإدخال الخلية G2 في الصيغة لأنّها تحتوي على النص الأصلي الذي نريد استبدال جزء منه، يليه الرقم "6" لأنّ مرتبة أول حرف من كلمة "النصوص هي السادسة (كلمة "دوال" مع المسافة بعدها تحتل 5 مراتب، وكلمة "النصوص" تبدأ عند المرتبة 6)، يليه الرقم "6" لأنّ كلمة "النصوص" تتكوّن من ستّة حروف، وأخيرًا كلمة "نصيّة" التي نريد الاستبدال بها بين علامتي اقتباس. والنتيجة: UPPER تقوم هذه الدالة بجعل كل أحرف السلسلة النصيّة كبيرة. والصيغة العامة لها هي: =UPPER(text) text: النص الذي نريد تطبيق الدالة عليه. مثال: لتحويل كل النصوص في الخلية B5 إلى أحرف كبيرة نكتب الصيغة التالية: والنتيجة: LOWER عملها معاكس للدالة السابقة، إذ تجعل كل أحرف السلسلة النصية صغيرة. الصيغة العامة لهذه الدالة هي: =LOWER(text) مثال: لتحويل نفس النص في الخلية B5 إلى أحرف صغيرة نكتب الصيغة التالية: والنتيجة: خاتمة لقد تعلّمنا كيفية إزالة المسافات الزائدة بين النصوص، كيفية البحث عن نصوص معيّنة واستبدالها، وكيفية تغيير حالة الأحرف باستخدام بعض الدوال النصيّة. في الدرس القادم سنغطّي المزيد من هذه الدوال ونتعلّم كيفية تجميع النص وكيفية استخلاص جزء منه.
    1 نقطة
×
×
  • أضف...