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

البحث في الموقع

المحتوى عن 'شيفرات'.

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المحتوى


التصنيفات

  • الإدارة والقيادة
  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • السلوك التنظيمي في المؤسسات
  • عالم الأعمال
  • التجارة والتجارة الإلكترونية
  • نصائح وإرشادات
  • مقالات ريادة أعمال عامة

التصنيفات

  • مقالات برمجة عامة
  • مقالات برمجة متقدمة
  • PHP
    • Laravel
    • ووردبريس
  • جافاسكربت
    • لغة TypeScript
    • Node.js
    • React
    • Vue.js
    • Angular
    • jQuery
    • Cordova
  • HTML
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • لغة C#‎
    • ‎.NET
    • منصة Xamarin
  • لغة C++‎
  • لغة C
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • لغة Rust
  • برمجة أندرويد
  • لغة R
  • الذكاء الاصطناعي
  • صناعة الألعاب
  • سير العمل
    • Git
  • الأنظمة والأنظمة المدمجة

التصنيفات

  • تصميم تجربة المستخدم UX
  • تصميم واجهة المستخدم UI
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب GIMP
    • كريتا Krita
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • مقالات DevOps عامة
  • خوادم
    • الويب HTTP
    • البريد الإلكتروني
    • قواعد البيانات
    • DNS
    • Samba
  • الحوسبة السحابية
    • Docker
  • إدارة الإعدادات والنشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
    • ريدهات (Red Hat)
  • خواديم ويندوز
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • شبكات
    • سيسكو (Cisco)

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح
  • مبادئ علم التسويق

التصنيفات

  • مقالات عمل حر عامة
  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • العمل الحر المهني
    • العمل بالترجمة
    • العمل كمساعد افتراضي
    • العمل بكتابة المحتوى

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

  • الأقسام
    • أسئلة البرمجة
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات

التصنيفات

  • كتب ريادة الأعمال
  • كتب العمل الحر
  • كتب تسويق ومبيعات
  • كتب برمجة
  • كتب تصميم
  • كتب DevOps

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

تم العثور على 2 نتائج

  1. يُدرك المبرمج أيًا كانت خبرته أن أي مساعدة مهما كانت صغيرة في تحسين تجربته أثناء كتابة الشيفرات أمر على قدر كبير من الأهمية لما فيه من اختصار لوقت كتابة الشيفرة وزيادة في الإنتاجية وتقليل الأخطاء التي قد يقع فيها. لهذا يميل المبرمجون المحترفون إلى العمل ضمن بيئات عمل متكاملة تضم محرر شيفرة متطور، وأدوات لتصريف أو تفسير الشيفرة، وأدوات لتنفيذها ومراقبتها وإجراء الاختبارات المختلفة عليها. نستعرض في مقالنا دور محررات الشيفرات البرمجية الاحترافية في تأمين بيئة برمجية مريحة والميزات التي تقدمها لتوفير وقت وجهد المبرمجين وزيادة إنتاجيتهم، كما سنلقي نظرة على أكثر محررات الشيفرة البرمجية انتشارًا. ما هي محررات الشيفرات البرمجية تُعرَّف محررات الشيفرة بأنها برمجيات تُستخدم لكتابة شيفرة خاصة بلغة برمجة محددة أو شيفرات عدة لغات برمجية مقدمة دعمًا للمبرمج وفق سويات مختلفة تتعلق بسهولة متابعة الشيفرة والإكمال التلقائي للتعابير البرمجية والتنبيه إلى أخطاء الصياغة ما قبل التصريف أو التفسير. تُعد الأكثرية الساحقة من لغات البرمجة لغات مكتوبة؛ أي ينبغي على المبرمج كتابة جميع التعليمات على شكل عبارات نصية متلاحقة وفق صياغة صحيحة. وبالطبع فإن الشيفرات المكتوبة هي نصوص تمامًا كأي نص آخر، ويجري تحريرها كتحرير أي نص آخر، ففي النهاية قد تخطأ في كتابة بعض التعليمات وتريد التراجع أو تريد نسخ جزء من الشيفرة إلى مكان آخر وهكذا. وطالما أن الشيفرات هي في الأصل تعابير نصية مكتوبة فلماذا لا أستطيع استخدام محررات النصوص التقليدية مثل المفكرة أو مايكروسوفت وورد أو مستندات جوجل؟ في الواقع تستطيع ذلك بكل سهولة، لكن لنتخيل الحالة التي تكتب فيها برنامجًا مكوُنًا من 20 سطرًا برمجيًا على سبيل المثال،ولاحظ أن عليك تذكر كل تعليمات الشيفرة التي عليك وضعها في سياقها الصحيح. بعد أن تنهي كتابة برنامجك عليك نقله إلى المفسر الذي سيحلل الشيفرة ويفسرها ثم يضعها موضع التنفيذ، وقد تتفاجأ بكم من الأخطاء يشير إليها المفسر وتبدأ رحلة التقصي عنها لمعالجتها بالعودة إلى محررك النصي وتفقد مواطن الخطأ. لنفترض الآن أن أخطاءك كتابية كأن تكون قد بدلت حرفًا بآخر في التعليمات أو أغفلت حرفًا أو نقطة أو فاصلة (لم أقل أنك ارتكبت أخطاءً قواعدية Syntax errors أو في الدلالة Semantic errors فهذه قصة أخرى)، عليك هنا البحث عن هذه الأخطاء ضمن 20 سطرًا سيستغرق الأمر بعض الوقت، لكن تخيّل أن تبحث عن الأخطاء ضمن 1000 سطر أو أكثر! كارثة، أليس كذلك؟ لهذا السبب ظهرت فكرة وجود محررات مخصصة للشيفرة تتميز بقدر كافٍ من الذكاء لتمييز أخطاءٍ كالتي أسلفنا ذكرها مباشرة أثناء كتابة الشيفرة وبالتالي سيكون المبرمج قادرًا على تصحيحها في موضوعها بأقل جهد. إضافة إلى تلك الأخطاء تساعدك محررات الشيفرة العصرية في الإشارة إلى خرقك لقواعد اللغة التي تبرمج فيها وحتى الإشارة إلى الأخطاء الدلالية وهي أخطاء منطقية قد لا ينتبه إليها المبرمجون المتقدمون إلا عند تنفيذ الشيفرة وغيرها الكثير من النقاط التي تجعل محررات الشيفرة أداة لا غنى عنها. وأيًا كان مستواك في تعلم البرمجة، ستلمس فرقًا واضحًا عند استخدامك محررات الشيفرة سواء أكنت تتعلم البرمجة حديثًا أم كنت على قدر جيد من الكفاءة، إذ ستحصل على شيفرة صحيحة بأقل جهد ممكن وأقل وقت. ميزات محررات الشيفرات البرمجية تقدم محررات الشيفرات البرمجية مجموعة من المزايا التي قد تجدها جميعًا وقد تجد بعضها، وسنتحدث عن الأكثر عمومًا ثم تليها الميزات الأقل شيوعًا. 1. تمييز التعليمات أثناء كتابتها تُعد هذه الميزة أساسيةً لأي محرر شيفرة، إذ يتعرف المحرر على هذه الكلمة هي كلمة أو تعليمة خاصة بلغة البرمجة المستخدمة ويعرضها بشكل مختلف كأن تظهر بخط سميك أو مائل أو أن تُعرض بلون مختلف. كما تميّز المحررات أنواع البيانات المختلفة وتعرضها بألوان مختلفة. فقد تعرض الأعداد بلون معين والقيم النصية (التي توضع عادة بين إشارة أو إشارتي تنصيص) بلون آخر وهكذا… تعرض لقطة الشاشة السابقة أحد محررات الشيفرة الذي يمّيز الكلمات المفتاحية والأنواع والتعليمات بألوان وتنسيقات كتابية مختلفة. وهكذا يمكن للمبرمج أن يعلم مثلًا أنه ارتكب خطأً في كتابة تعليمة ما إذا ظهرت بخط عادي. 2. ترقيم الأسطر تُرقّم معظم المحررات البرمجية أسطر الشيفرة بما في ذلك الأسطر الفارغة وأسطر التعليقات وهذا أمر ضروري كي تعرف مكان الخطأ وتنتقل إليه مباشرة. كما يمكن أن تشير بعض المحررات إلى موقع الخطأ ضمن السطر الواحد من خلال رقم العمود، وهو رقم يطابق ترتيب الحروف انطلاقًا من بداية السطر. 3. تجميع الشيفرة وترتيبها تستطيع بعض محررات الشيفرة فهم هيكلية الشيفرة التي تكتبها من خلال تمييز بداية الدالة أو الإجرائية ونهايتها أو بداية الكتل الشرطية ونهايتها أو بداية ونهاية الأصناف وهكذا. وبالتالي يمكن لهذه المحررات تصنيف هذه الأقسام المختلفة من الشيفرة ضمن قوائم خاصة كأن تكون هناك قوائم خاصة بأسماء الدوال التي تشير إليها الشيفرة وقوائم تضم الأصناف التي كتبت شيفرتها وقوائم بالمصفوفات إلى ما هنالك. إضافة إلى ذلك تعرض بعض المحررات إشارة - أو إشارة < عند بداية كل قسم تميّزه، وبالنقر على هذه الإشارة (تحول شكل الأيقونة إلى + أو >) يعرض المحرر شيفرة هذا القسم أو يخفيها للتقليل من حجم الشيفرة المعروض ضمن الصفحة وبالتالي التركيز فقط على القسم الذي يعمل عليه المبرمج. 4. التحقق من أخطاء الصياغة (قواعد اللغة) تتعرف بعض محررات الشيفرة إلى الأخطاء في الصياغة أو الأخطاء التي تخالف قواعد اللغة وتشير إليها من خلال وضع خط تحتها أو إحاطتها بمربع أو وضع إشارة ملونة ضمن هامش الصفحة إلى جوار السطر الذي ارتُكب فيه الخطأ القواعدي. لهذه الميزة فائدة عظيمة للمبرمجين لإن الإشارة إلى هذا النوع من الأخطاء سيريح المستخدم من التحقق دائمًا أن صياغته للتعليمات صحيحة دون نسيان أية أقواس أو إشارات أو رموز نهاية السطر. إضافة إلى ذلك تشير بعض المحررات إلى استخدام قيم خاطئة لنوع محدد من البيانات كإسناد قيمة نصية إلى متغير من النوع الصحيح مثلًا أو التحويل الخاطئ أو غير المسموح لنوع إلى نوع آخر وغيرها من الأخطاء التي تنتج عن الأنواع. 5. الإكمال التلقائي للشيفرة لبعض المحررات القدرة على توقع التعليمات التي تريد كتابتها بمجرد كتابة بعض الأحرف؛ فتراها تعرض قائمة من التعليمات أو الأصناف أو الأعضاء أو البنى أو العمليات التي تبدأ بنفس الأحرف وقد تكون إحداها غايتك مما يسرع في كتابة الشيفرة ويساعدك في نفس الوقت على اختيار التعليمة مكتوبةً بطريقة صحيحة، وكذلك في معرفة الخيارات المتاحة لإكمال هذه التعليمة في حال لم تتذكرها كلها. لبعض محررات الشيفرة أيضًا أسلوب ترميزي لتمييز الأنواع والدوال والأغراض عند إظهار قوائم الإكمال التلقائي، إذ يسبق كل خيار أيقونة صغيرة تشير إلى نوعه وطبيعته متغيرًا كان أم دالة أم عضوًا في كائن وهكذا يمكنك اختيار ما هو مطلوب إن تشابهت التسميات. 6. إظهار معلومات عن استخدام الشيفرة ونصائح لحل الأخطاء تعرض بعض المحررات معلومات عن التعليمات التي تكتبها سواء كانت متغيرات أم أصناف أو دوال بمجرد تمرير مؤشر الفأرة فوقها أو حتى أثناء ظهور هذه التعليمات ضمن قوائم الإكمال التلقائي. تتعلق هذه المعلومات بنوع الصنف والأعضاء التي يأخذها ونوع الدالة والمعاملات والقيم التي تعيدها وعدد معاملاتها ونوع كل معامل. وبهذه الطريقة قد تجد دالة أو تعليمة أنسب من التي تفكّر في استخدامها لربما لم تتعرف عليها مسبقًا. كما تشير بعض المحررات إلى ضرورة تغيير صياغة بعض التعليمات لتتوافق مع معايير أحدث للغة، وقد تكون صياغتك صحيحة لا لبس بها. كما قد تنصحك باستخدام دوال بدلًا من دوال لأنها ستسبدل قريبًا ولن تكون متاحة لاحقًا. وتقدم بعض المحررات مبدأ الإصلاح السريع للشيفرة "Quick Fix"، إذ تقدم لك مجموعة من الحلول الجاهزة للخطأ الذي ارتكبته كي تسهّل عليك التصحيح، وتظهر عادة إشارة مصباح في الأماكن التي تُقترح فيها إصلاحات سريعة. 7. تخصيص الإكمال التلقائي تقدم بعض المحررات إمكانية تخصيص الإكمال التلقائي من خلال ملفات إعداد خاصة وهذا أمر متقدم نوعًا ما. تتيح لك هذه الميزة مثلًا ظهور خيارات إكمال تلقائي محددة ضمن صنف معين أو ضمن كتلة معينة من الشيفرة. فلو فرضنا أنك ضمن حلقة for وكان عداد الحلقة بالاسم index فسيظهر لك الخيار index كأول خيار ضمن قوائم الإكمال التلقائي عندما تكتب الشيفرة داخل هذه الكتلة. كما يمكنك تخصيص مفاتيح محددة من لوحة المفاتيح لإدراج أفضل تكملة ممكنة لما تكتبه وفقًا للسياق مثل المفتاح Tab. محررات الشيفرات البرمجية وتنفيذ الشيفرة هل يستطيع محرر الشيفرة البرمجية تنفيذ هذه الشيفرة؟ لا يمكن لمحررات الشيفرة من ناحية المبدأ أن تنفذ الشيفرات المكتوبة فهي محررات وفقًا لتسميتها وليست مصرّفات Compilers أو مفسّرات interpreters. وكما أشرنا سابقًا، تقتصر وظيفة المحررات على تسهيل كتابة الشيفرة وتسريعها ومراقبة أخطاء الصياغة. لكن كتابة الشيفرة على محرر ثم نقله إلى مصرّف ومن ثم إعداد النسخ التنفيذية للبرنامج على مجمّع مدير الحزم package manager أمر مربك لا يعطي راحة في العمل، لهذا يفضل معظم المبرمجين المحترفين الذي يعملون على مشاريع برمجية كاملة استخدام بيئات العمل المتكاملة Integrated Development Environment واختصارًا IDE التي تضم جميع أدوات العمل من المحررات إلى المصرّفات إلى آلات تحزيم ونشر البرمجيات. إذًا ما الحاجة لمحررات الشيفرة إن كانت بيئات العمل المتكاملة حلًا مثاليًا؟ في الواقع لا تُعد بيئات العمل المتكاملة الحل المثالي دائمًا لأسباب عدة أهمها: لا تحتاج الكثير من اللغات المحمولة الرائجة إلى مصرّفات خاصة مثل HTML وجافاسكربت. الحجم الكبير لبيئات العمل المتكاملة ووجود ميزات كثيرة لا حاجة لها في العديد من الحالات. تسبب البطء في الأجهزة وخاصة ذات المواصفات المنخفضة وحتى المتوسطة. قد تكون مهمة المبرمج كتابة أجزاء محددة أو وظائف محددة فلا حاجة لبيئة عمل في هذه الحالة. ظهر الحل في وجود محررات شيفرة برمجية قابلة للتوسع أي أنها تدعم تحرير عدد كبير من لغات البرمجة من ناحية تمييزها لكنها تقبل في نفس الوقت موسّعات خاصة Extensions خاصة بلغة محددة تدعم هذه المحررات بميزات إضافية من ناحية التعرف على الشيفرة والإكمال التلقائي كما تؤمن آلية لتصريف وتنفيذ الشيفرة. وهكذا تختار موسّعًا ذو حجم وإمكانات معينة تناسب أعمالك ثم تثبيته على محرر الشيفرة. نذكر من هذه المحررات فيجوال ستديو كود Visual studio code من مايكروسوفت الشهير وهو محرر مجاني ومفتوح المصدر وقابل للتوسع. أشهر محررات الشيفرة المجانية نستعرض تاليًا مجموعة من أكثر محررات الشيفرة شعبية المحرر فيجوال ستديو كود VS Code اللغات المدعومة أصلًا: جافاسكربت و JSON و HTML و Node.js و TypeScript. المنصات المدعومة: ويندوز، لينكس، ماك. اللغات المدعومة عن طريق الموّسعات: معظم اللغات البرمجية مثل ++C و بايثون وجافا و #C و GO. يعمل كمحرر نصي: نعم. السعر: مجاني وتوجد نسخة بيئة تطوير متكاملة IDE مدفوعة. مفتوح المصدر: نعم يُعد فيجوال ستديو كود محرر شيفرة ومحرر نصي متقدم ومجاني ومفتوح المصدر ويحتل حتى الآن المرتبة الأولى كأكثر المحررات شعبية. ويتميز بأنه محرر خفيف وقوي ويدعم الكثير من اللغات وإطارات العمل من خلال تثبيت الموّسعات المختلفة التي تستطيع إيجادها على المتجر الخاص على الإنترنت. يتمتع فيجوال استوديو بجميع ميزات محررات الشيفرة العصرية التي فصّلناها سابقًا من خلال تقنية IntelliSense التي تزود المستخدم بإمكانات التعرف على صياغة اللغة والإشارة إلى أخطائها والإكمال التلقائي للشيفرة. يقدم لك فيجوال ستوديو معلومات مرجعية وتعريفات بالأصناف والدوال والمتغيرات بمجرد أن تظلل العبارة البرمجية ومن ثم النقر بالزر اليميني عليها ثم اختيار المعلومة المطلوبة. يؤخذ على هذا المحرر النقاط التالية: قد تُضطر إلى تثبيت بعض الموّسعات بنفسك وليس من خلال المحرر نفسه، ومن ثم ضبط إعداداتها وهذا أمر مربك في أحيان كثيرة. توافق ضعيف مع ماك أو إس وقد يكون بطيئًا أحيانًا على لينكس. طريقة تعامله مع الأخطاء الناتجة عن ضبط الإعدادات والتي قد تدفعك إلى التخلي عن المحرر ككل. المحرر Sublime Text يُعد هذه المحرر من المحررات القوية ومتعددة المنصات ويدعم عددًا كبيرًا من الإضافات Plugins التي تزيد من إمكاناته وتدعم تفاعله مع لغات برمجة جديدة. يحقق هذه المحرر معايير محررات الشيفرة العصرية ويمتاز بقدرته على فتح ملفات شيفرة تصل إلى أكثر من 200000 سطر برمجي بكل سهولة. اللغات المدعومة: ++C وبايثون و PHP و Rails وغيرها الكثير من خلال حزم الإضافات. المنصات المدعومة: ويندوز، لينكس، ماك. يعمل كمحرر نصي: نعم. السعر: مدفوع مع وجود نسخة مجانية محدودة. مفتوح المصدر: لا. ومن الميزات الخاصة التي يتمتع بها Sublime text نجد: كم واسع من تعليمات التحرير كالإزاحة وتنسيق الفقرات والحفظ التلقائي والبحث بمجرد الكتابة. تعيين اختصارات للأوامر المختلفة. التدقيق الإملائي. ميزة "الانتقال إلى أي شيء Goto Anything" للانتقال السريع إلى أي ملف أو رمز أو سطر أو كائن. التحرير المتزامن: وهي تقنية تسمح بالكتابة في عدة ملفات أو أقسام في نفس الوقت. يتكامل مع برنامج Sublime Merge الذي يُستخدم كعميل للاتصال مع Git. لهذا المحرر سلبيات عدة نذكر منها: النسخة المجانية محدودة وتعرض دائمًا نافذة تحثك على شراء النسخة المدفوعة. صعوبة في تثبيت الكثير من الإضافات وخاصة للمبتدئين. تختفي بعض الاقتراحات وخيارات الإكمال التلقائي أثناء كتابة الشيفرة ولا يمكن رؤيتها. المحرر ++Notepad يتميز هذا المحرر بسرعته الكبيرة فهو محرر خفيف ولا يعتمد على الكثير من الموارد وبالتالي سيكون المحرر المثالي للمستخدمين الذين يمتلكون حواسيب ضعيفة. اللغات المدعومة: أكثر من 70 لغة بما فيها ++C وبايثون و PHP وHTML و CSS و swift المنصات المدعومة: ويندوز، لينكس. يعمل كمحرر نصي: نعم. السعر: مجاني. مفتوح المصدر: فقط لنسخة لينكس. يمتاز ++Nodepad المحرر بأنه: فعّال وبسيط ويؤمن ميزات مثل تمييز الصياغة اللغوية وتمييز النصوص والدوال والأقواس. يؤمن ميزة الإكمال التلقائي. قادر على تنظيم الشيفرة وتجميعها ضمن كتل يمكن عرضها وإخفاؤها. يزوّد هذا المحرر المستخدمين بخارطة للمستند للوصول إلى أية نقطة من الشيفرة في حال كان الملف ضخمًا. وهكذا تستطيع الانتقال بسرعة بين أي منطقتين من الملف دون الحاجة إلى التمرير إلى الأعلى والأسفل مرارًا. مجاني ومترجم إلى أكثر من 80 لغة منها العربية. يؤخذ على البرنامج مايلي: واجهة المستخدم غير عصرية وتوحي بأنه برنامج قديم. لا يضم متصفح ملفات. صعوبة عرض عدة ملفات بطريقة مريحة مما ينعكس سلبًا عند العمل على عدة مشاريع. محدودية الميزات التي يقدمها موازنة بغيره. لا يوجد دعم رسمي لنسخة نظام لينكس، علمًا أنه بالإمكان تحميلها من متجر أوبونتو Ubuntu software center. المحرر Bluefish بلوفيش محرر شيفرة قوي ومخصص للمستخدمين المتمرسين من مبرمجين ومطورين ومصممين لمواقع الويب. وهو برنامج مفتوح المصدر متعدد المنصات يتميز بخفة وزنه وواجهته الرسومية السريعة. اللغات المدعومة: ++C وبايثون و بيرل وPHP وHTML و CSS و Ruby وجافاسكربت و SQL وغيرها الكثير. المنصات المدعومة: ويندوز، لينكس، ماك، FreeBSD، Solaris. يعمل كمحرر نصي: نعم. السعر: مجاني. مفتوح المصدر: نعم. لمحرر بلوفيش ميزات عديدة أهمها: يضم شريط اختصارات سريعة يمكن أن يضع فيه المستخدم اختصارات للأداوات الأكثر استخدامًا. يمكن تخصيص واجهة المستخدم من ناحية اللون والشكل بما يناسب لغة البرمجة. يستطيع تمييز الصياغة اللغوية للغات البرمجة المدعومة ويدعم الإكمال التلقائي وإغلاق وسوم اللغات التوصيفية والتنسيقية مثل وسوم HTML و CSS. يمكن فتح عدد كبير من الملفات ضمن واجهة المستخدم والتعامل معها. معلومات مرجعية عن الشيفرات المكتوبة. الاستعادة التلقائية للملفات عند حدوث خطأ. قابل للتوسع عن طريق الإضافات والسكربتات. لا يؤخذ على هذا المحرر الكثير لكن يواجه بعض الانتقادات مثل: صعوبة فتح ملفات شيفرة ضخمة الحجم فقد يتوقف أو لا يحفظ التغييرات. لا يدعم الاختيارات المتعددة أو البحث ضمنها أي لا يمكن اختيار أجزاء منفصلة من الشيفرة والتعامل معها. المحرر Emacs يُعد من أفضل محررات الشيفرات البرمجية إن كنت تبحث عن بيئة عمل قابلة للتخصيص بشكل كبير. إذ يأتي مع شريط قوائم وشريط أدوات وقوائم منسدلة يمكن أن تظهر أو تخفي أيًا منها، كما يمكنك إضافة نوافذ فرعية لعرض ملفات وفضاءات عمل خاصة والتحكم بالألوان ومظهر واجهة المستخدم. اللغات المدعومة: ++C وبايثون و Lisp وغيرها الكثير. المنصات المدعومة: ويندوز، لينكس، ماك، FreeBSD. يعمل كمحرر نصي: نعم. السعر: مجاني. مفتوح المصدر: نعم. للمحرر Emacs الميزات التالية: يتميز هذا المحرر بقدرته على تصريف وتنفيذ الشيفرة واختبار البرامج وتنفيذ الأوامر التنفيذية shell commands. خيارات متقدمة للبحث والاستبدال. يعمل من خلال واجهة رسومية أو من خلال الطرفية. يميز الصياغة اللغوية ويدعم الإكمال التلقائي من خلال نمط الإكمال التلقائي إذ يدعم المحرر عدة أنماط للعمل. يضم مستكشف ملفات. يؤخذ على هذا المحرر: صعوبة التعامل معه وخاصة للمبتدئين. لا بد من العودة دائمًا إلى التوثيق الخاص به لتذكر تعليمات الضبط والإعداد. صعوبة التعامل مع نمط الإكمال التلقائي. ملاحظة: يمكنك أيضًا استخدام محرات شيفرة تعمل من خلال الإنترنت نذكر منها Codepen و CodeSandbox و Glitch و Repl.it. خاتمة لمحررات الشيفرات البرمجية دور كبير في تحسين بيئة عمل المبرمجين أثناء كتابة الشيفرة وزيادة إنتاجيتهم؛ كتمييز صياغة لغة البرمجة التي يكتب شيفرتها والتنبيه إلى وجود أخطاء فيها والإكمال التلقائي للشيفرة وعرض اقتراحات لحلها وتسهيل عمليات التحرير الأساسية من نسخ ولصق وعمليات البحث والاستبدال هي مفاتيح رئيسية لتسهيل عمل المبرمج وتوفير وقته وجهده. لهذا إن كنت مقبلًا على تعلم البرمجة وأردت محرر شيفرات يناسب احتياجاتك، سيساعدك هذا المقال على توضيح النقاط الأساسية التي ينبغي أن تبحث عنها في محرر الشيفرات البرمجية ويعرض لك عددًا من المحررات الممتازة التي تتمتع بمعظم ميزات محررات الشيفرة العصرية إضافة إلى كونها مجانية وتعمل على أكثر المنصات شيوعًا. اقرأ أيضًا محررات الشيفرة البرمجية ما هو أفضل محرر أكواد بايثون أسلوب كتابة الشيفرات البرمجية وتحقيق سهولة قراءتها
  2. يرغب الجميع بأن يصبح خبيرًا، إذ يوجد على مر السنين نوعان من البشر يُدعون "الخبراء"؛ حيث خبراء النوع الأول هم ممن يعرفون جميع الأدوات المتوفرة في لغة البرمجة ويحرصون على استخدام كل جزئيةٍ منها سواءً كانت تُفيدهم أم لا؛ والنوع الثاني هم ممن يعرفون كل جزئيةٍ من لغة البرمجة ولكنهم انتقائيون بما يجب استخدامه لحل المشاكل البرمجية، حيث يأخذون بالحسبان مجموعةً من العوامل المرتبطة بالشيفرة البرمجية وأمورًا أخرى غير برمجية. يمكننا تخمين أي نوعٍ من هؤلاء الخبراء يرغب مدير الفريق العمل معهم، إذ يقع الاختيار غالبًا على النوع الثاني من الخبراء، فهم مطورون يركزون على تسليم سطورٍ برمجيةٍ مقروءة من جافاسكربت ومفهومةٍ أيضًا، كما يعملون على صيانتها، إضافةً إلى قدرتهم على جعل المعقد يبدو بسيطًا. هناك عدة عواملٍ يجب النظر إليها من قِبل الخبراء عند كتابة شيفرةٍ مقروءة، وتحديد الخيارات الواضحة الصحيحة منها والخاطئة. الخيار الواضح لقد أضاف TC39 الكثير من الميزات الجديدة إلى ECMAScript خلال السنوات الماضية بهدف تحسين تجربة المطوّر، حيث تتضمن هذه الميزات أنماطًا مُحسنةً ومستوحاةً من لغاتٍ أخرى، وأحد هذه الإضافات في ES2019 هي Array.prototype.flat()‎، حيث يُطلب مُدخلٌ واحدٌ وهو العمق أو Infinity لنشر مصفوفة، ويكون العمق الافتراضي عند عدم استخدام أي مدخلٍ هو 1، وبدون هذه الإضافة كان علينا استخدام الصيغة التالية لنشر المصفوفة في مستوٍ واحدٍ. let arr = [1, 2, [3, 4]]; [].concat.apply([], arr); // [1, 2, 3, 4] أما عند إضافة flat()‎ أصبح من المُمكن التعبير عن نفس الوظيفة باستخدام تعليمةٍ واحدةٍ وهي الدالّة التالية. arr.flat(); // [1, 2, 3, 4] يُعَد السطر الثاني من الشيفرة أكثر قابليةً للقراءة، وسوف يتفق على هذه النقطة كِلا النوعين من الخبراء. لا يعلم جميع المطورين بوجود الدالّة flat()‎ وهم ليسوا بحاجةٍ لذلك، وعند ورودها فإن flat سيكون فعلًا يصف نفسه ويتضمن محتوى ما يفعله وهي أسهل للفهم من concat.apply()‎. من النادر وجود جوابٍ واضحٍ وصريح بأفضلية الصيغ الجديدة عن القديمة، وسوف يختار الخبير -لأي مجموعةٍ كان ينتمي- الخيار الثاني إن كان على علمٍ بكلا الخيارين لكتابة التعليمات، لأن الخبير يميل لاختيار الشيفرة الأقصر والأوضح والتي تسهل صيانتها وتتبع الخطأ فيها. الفحص الداخلي تتميز لغة جافاسكربت بأنها متعددة الاستخدام وواسعة الانتشار، فهي مُستخدمة في جميع أجزاء شبكة الويب، ويمكن كتابة الشيفرة نفسها بعدة طرقٍ ولكن لن تتمكن من تحديد الخيار الصحيح ما لم تفهم جيدًا الخيارات المتوفرة والقيود التي تُرافق كل منها. ستُستخدم البرمجة الوظيفية مع map()‎ مثالًا لذلك وستُشرح جميع التكرارات التي تعطي نفس النتيجة، ويُعَد المثال التالي النسخة الأقصر من الأمثلة التي تستخدم map()‎ حيث يتسع في سطرٍ واحدٍ. const arr = [1, 2, 3]; let multipliedByTwo = arr.map(el => el * 2); // multipliedByTwo is [2, 4, 6] سيُضاف مِحرفان فقط إلى المثال التالي وهما قوسان "()"، حيث توجد دائمًا خسارةٌ وكسب بعد أي تغيير، كما يوجد اختلافُ عند استخدام دالةٍ متعددة المتغيرات الأقواس دائمًا، ولا يوجد ضررٌ في إضافة هذين القوسين هنا فهما يحسّنان التناسق عند كتابة دالةٍ متعددة المتغيرات، وحقيقةً يجبرنا Prettier على استخدام الأقواس، فهو لا يسمح بإنشاء دالةٍ سهميّةٍ دون استخدام الأقواس. let multipliedByTwo = arr.map((el) => el * 2); ستُرفع سوية المثال وتُضاف أقواس مجموعة وتعليمة return لتبدو هذه الدالّة أشبه بالدوال التقليدية. هذه الإضافات مطلوبة عندما تكون الدالّة أكثر من سطرٍ واحد، وبالتأكيد ستُكتب العديد من الدوال المتضمنة أكثر من سطر واحد ضمن الشيفرة البرمجية. let multipliedByTwo = arr.map((el) => { return el * 2; }); ستُزال الآن الدالّة السهمية وتُستخدم نفس صيغة المثال السابق لكن مع استخدام الكلمة المفتاحية function، وهذا مثير لأن هذه الصيغة سوف تعمل في جميع الحالات، ولن ينتج أي خطأ مهما كان عدد المتغيرات أو السطور، وذلك نظرًا لكونها مقروءةً ومألوفة أكثر من الصيغة المستخدمة في المثال الأول، ولكن هل هذا التغيير سيء؟ وكيف سيكون وقعه على مُبرمجٍ جديد أو شخصٍ خبير جدًا بلغةٍ مختلفةٍ عن جافاسكريبت؟ هل سوف تُشكل هذه الصيغة عبئًا على شخص يعرف جافاسكربت جيدًا بالموازنة مع المثال الأول؟ let multipliedByTwo = arr.map(function(el) { return el * 2; }); وصلنا الآن إلى الخيار الأخير وهو تمرير الدالّة فقط، حيث يمكن كتابة timesTwo بأي طريقةٍ تريدها ولا توجد مشكلة يُسببها تمرير اسم الدالّة في أية حالة، لكن لنتوقف للحظة ونفكر فيما إذا كانت هذه الصيغة تُسبب الحيرة أم لا، فإذا كنت جديدًا على طريقة كتابة هذه الشيفرة، فلن يكون واضحًا لك أن timesTwo هي دالّة وليست كائنًا، ولكن map()‎ موجودة لتُعطيك تلميحًا، لذلك هناك العديد من الأمور الهامة الواجب الانتباه إليها وهي امكانية إغفال هذه الدالة، وسهولة العثور عليها، وتأثيرها على النتيجة. const timesTwo = (el) => el * 2; let multipliedByTwo = arr.map(timesTwo); لا توجد إجابةٌ واضحةٌ هنا، حيث أن اتخاذ الخيار الصحيح لطريقة كتابة الشيفرة يعني فهم جميع الخيارات المتوفرة ومحدوديتها، كما يجب إدراك أن التناسق يتطلب استخدام أقواس المجموعة والأقواس العادية والكلمة المفتاحية return. يجب أن تسأل نفسك مجموعةً من الأسئلة عند كتابة شيفرة برمجية، والأسئلة المرتبطة بالأداء هي الأكثر رواجًا، ولكن عندما تنظر إلى شيفرة برمجية متطابقة من الناحية الوظيفية، فيجب أن يكون اختيارك مبنيًا على الإنسان وكيفية فهم غيرك لهذه الشيفرة. ليس بالضرورة أن يكون الأحدث هو الأفضل طُرح حتى الآن مثالٌ يوّضح أي صيغةٍ برمجيةٍ جديدةٍ، بحيث يستخدم كل نوعٍ من الخبراء حتى وإن كانت غير معروفةٍ عالميًا، كما طُرح مثالٌ يدعو للكثير من التساؤلات دون إجاباتٍ كافية، وأصبح الوقت الآن مُناسبًا للتعمق أكثر في الشيفرة البرمجية التي كُتبت سابقًا ثم أُزيلت، وهي الشيفرة البرمجية التي استخدمت صيغًا غير معروفة على نطاقٍ واسع لحل مشكلة، إضافةً إلى قابلية صيانتها بالاعتماد على القواعد المعروفة لكتابة الشيفرة. يسمح لك التعيين بالتفكيك Destructing assignment؛ إمكانية تفريغ القيم من الكائنات (أو المصفوفات) وهو مماثل للشكل الآتي. const {node} = exampleObject; وهو يُهيئ متغيرًا ويُسند له قيمةً في سطرٍ واحد ولكن هذا غير ضروري. let node ;({node} = exampleObject) يُسنِد السطر الأخير من الشيفرة البرمجية قيمةً للمتغير باستخدام التفكيك، لكن التصريح عن المتغير يشغل سطرًا قبله، وهذا أمرٌ يرغب الكثير باستخدامه، إلا أن الغالبية لا تُدرك إمكانية ذلك. نلاحظ عند النظر إلى الشيفرة بتمعُّن؛ وجود الفاصلة المنقوطة غير المُستخدمة لإنهاء السطر كما جرت العادة، إضافةً إلى استخدام الأقواس للإحاطة بالتعليمة واستخدام أقواس مجموعة داخلها أيضًا، وبالتأكيد فإن وظيفة هذه التعليمة غير واضحة، فمن الصعب قراءتها، و يجب ألا تكون موجودة في أي شيفرةٍ مكتوبة من قِبل خبير. let node node = exampleObject.node تحل هذه الشيفرة المشكلة فهي تعمل ووظيفتها واضحة، كما يسهل فهمها دون الحاجة للبحث عنها، وبالتالي فلا يجب استخدام الصيغة التفكيكية فقط لأننا نستطيع ذلك. الشيفرة ليست كل شيء كما هو ملاحظ فقد كان حل خبراء النوع الثاني واضحًا بالاعتماد على الشيفرة فقط، ومع ذلك لا يزال هناك فرقٌ واضحٌ بالنسبة للشيفرة التي يكتبها كل خبير، وذلك لأن الشيفرة موجهةٌ للآلة كي تقرأها وللإنسان كي يُفسرها، وبالتالي لا توجد عوامل مرتبطة بالشيفرة هنا لأخذها بالحسبان. تختلف صيغة لغة البرمجة التي تستخدمها من أجل فريقٍ من مطوّري جافاسكربت عن تلك التي تستخدمها من أجل فريقٍ متعدد اللغات لم يتعمق أفراده في تفاصيل اللغة، ونذكر على سبيل المثال الصيغة spread مقابل concat()‎، حيث أُضيفت spread إلى ECMAScript منذ عدة سنوات واعتُمدت على نحوٍ واسعٍ، فهي تُعَد ميزةً للصيغة تسمح لك بإنجاز العديد من الأمور وأحدها هو تعاقب تسلسل مجموعةٍ من المصفوفات. const arr1 = [1, 2, 3]; const arr2 = [9, 11, 13]; const nums = [...arr1, ...arr2]; بالرغم من فعالية وقوة spread إلا أنها ليست رمزًا بديهيًا تستطيع التنبؤ بعمله، وبالتالي إن كنت لا تعلم وظيفته فلن يكون مفيدًا. بينما يعتقد العديد من الخبراء أن هذه الصيغة مألوفةً بالنسبة لفريقٍ من مُختصي جافاسكربت، يتساءل خبراء النوع الثاني عما إذا كان هذا الكلام صحيحًا بالنسبة لفريقٍ من المبرمجين متعددي اللغات، لذلك فمن المُحتمل أن يختار هؤلاء الخبراء استخدام concat()‎ بدلًا من spread لأن اسمها يُعبّر عن عملها. ينتج عن الشيفرة البرمجية التالية نفس النتيجة التي تُقدمها spread في المثال السابق. const arr1 = [1, 2, 3]; const arr2 = [9, 11, 13]; const nums = arr1.concat(arr2); كان هذا أحد الأمثلة لتأثير العامل البشري على خيارات الشيفرة البرمجية، لذلك عند التعامل مع شيفرةٍ برمجيةٍ تعمل عليها فرقٌ مختلفة، فلا بد من الالتزام بمعاييرٍ صارمةٍ لا تراعي بالضرورة الصيغة الأحدث للغة البرمجة، وتنتقل بعد ذلك لعواملٍ أخرى مرتبطة بالأدوات المُستخدمة والتي تجعل العمل أكثر سلاسةً أو صعوبةً لأفراد الفريق. توجد شيفرات برمجية من الصعب اختبارها، وشيفرات من الصعب استخدامها على مجالٍ أوسع في المستقبل نظرًا لصعوبة إضافة وظائف إضافية لها، وشيفرات ذات أداءٍ ضعيف، وشيفرات لا تستطيع التعامل مع متصفحاتٍ مختلفة، وهذه جميعها عواملٌ يُفكر بها خبراء النوع الثاني، إضافةً إلى تأثير الأسماء المستخدمة. ولكن حتى هم لا يستطيعون اعتماد صيغةٍ صحيحةٍ معظم الوقت لهذا الأمر. الخلاصة لا يُثبت الخبير نفسه من خلال قدرته على استخدام كل جزئية من خواص لغة البرمجة، بل من خلال معرفة ما يكفي من هذه الخواص لاستخدامٍ حكيمٍ لصيغةٍ برمجية واتخاذ القرارات المناسبة، فهكذا يكون الخبراء، وبهذه الطريقة يساهمون في تخريج خبراء جُدد، وهذا يعني الكثير لمن يجد نفسه خبيرًا أو يطمح إلى أن يصبح خبيرًا، إذ عليه أن يسأل نفسه العديد من الأسئلة عند كتابة شيفرة برمجية والتفكير بمن يُتابعه من المطوّرين، حيث أن أفضل شيفرةٍ برمجية هي تلك التي تُنفِذ شيئًا معقدًا، ولكنها بنفس الوقت مفهومةٌ عند مراجعتها من قِبل فريق العمل، وهذا بالطبع ليس أمرًا سهل المنال ولا توجد طريقةٌ واضحةٌ للوصول له لكن لا بد من أخذه بالحسبان عند كتابة أي دالّة. ترجمة -وبتصرّف- للمقال Human-Readable JavaScript: A Tale of Two Experts لصاحبه Laurie Barth. اقرأ أيضًا تطويع البيانات في جافاسكربت التخاطب بين نوافذ المتصفح عبر جافاسكريبت مشروع تطبيقي لبناء رجل آلي (روبوت) عبر جافاسكريبت
×
×
  • أضف...