أداة برمجة
[[ملف:WxHello with working button handler.png|تصغير|wxHello مع معالج أزرار العمل]]
'''أدوات البرمجة أو (أدوات تطوير البرامج)''' هي مجموعة من البرامج الحاسوبية التي يتم استخدامها من قبل المبرمجين أو المطورين لبناء وإنشاء ومعالجة وصيانة البرامج والتطبيقات. ربما يعبر هذا المصطلح ويشير إلى مجموعة من التطبيقات والبرامج البسيطة والسهلة التي تساعد في إنجاز المهمات، كما هو الحال الآن بتواجد العديد من البرامج اليدوية التي تساعد في تمكين الفرد من إصلاح عناصر بشكل فيزيائي. في عالم تطوير البرمجيات، هنالك عدة مكونات أساسية من أهمها هي «محرر مصادر الأكواد البرمجية» (source code editor), «المحول البرمجي» (compiler) و «المترجم» (Interpreter). كل هؤلاء العناصر هي مكونات رئيسية لا غنى عنها، تستخدم بشكل مطلق ومستمر في عالم البرمجيات والتطوير. بالإضافة، هناك العديد من برمجيات التطوير في في عالم الحوسبة، قد تزيد نسبة استخدام بعضها وقد يكون البعض منها غير مستخدمة بإستمرار، وهذا المعيار يحكمه المطور أو المبرمج بذاته. قد تكون الأدوات على هيئة برامج منفصلة متعددة يتم تشغيلها عبر «[[واجهة سطر الأوامر|واجهات سطور الأوامر]]» في أنظمة التشغيل، أو قد تكون أيضا متجزئة من برامج أخرى كبيرة الحجم تدعى «[[بيئة تطوير متكاملة|بيئة التطوير المتكاملة]]» ويرمز لها عادة باللغة الإنجليزية "[[بيئة تطوير متكاملة|IDE]]". في أغلب الأحيان وبالتحديد عند الاستخدام السهل والغير معقد أو للإجرائات السريعة والسهلة، يتم استخدام حيل وطرق مشتهرة ومعروفة عند المبرمجين المحترفين بحيث تنجز لهم المهام المطلوبة من دون الحاجة إلى تنزيل وتحميل الأداة البرمجية المختصة. على سبيل المثال، عندما يرغب المبرمج في تصحيح كود برمجي معين ([[تصحيح برمجي|debugging]]), بالإمكان استخدام طرق معينة مثل استخدام المصحح البرمجي السريع المدمج في [[متصفح ويب|متصفحات الإنترنت]] نفسها ومن دون اللجوء إلى تنزيل وتحميل أدوات برمجية خاصة للتصحيح البرمجي.<ref name=":0">{{استشهاد بدورية محكمة|عنوان=Lovelace & babbage and the creation of the 1843 'notes'|مسار= https://ieeexplore.ieee.org/document/1253887/|صحيفة=IEEE Annals of the History of Computing|تاريخ=2003-10|issn=1058-6180|صفحات=16–26|المجلد=25|العدد=4|DOI=10.1109/MAHC.2003.1253887|لغة=en|الأول=J.|الأخير=Fuegi|الأول2=J.|الأخير2=Francis|مسار أرشيف= https://web.archive.org/web/20190703175735/https://ieeexplore.ieee.org/document/1253887/|تاريخ أرشيف=2019-07-03}}</ref>

هناك غموض واضح لدى الكثير من الناس حول التفرقة مابين الأدوات والتطبيقات. وللتوضيح، يستخدم المطورين والمبرمجين «<u>الأدوات»</u> كوسيلة في كل الأوقات عند التعامل مع قواعد البيانات التي تتكون من ملفات يخزن فيها كافة العناصر والمعلومات المهمة. ولكن عند التعامل مع قواعد بيانات قد تم تطويرها بالكامل، فهي حينئذ تصبح بحد ذاتها <u>«تطبيق»</u>. لسنوات عديدة، كانت ولازالت [[هندسة البرمجيات|الهندسة البرمجية]] باستخدام الحاسب هي الأكثر طلباََ واستخدام، حيث أنها أدت نجاحات باهرة في الصناعات والهندسة المعمارية وقطاعات التصميم العام، ولكن برامج البيئة المتكاملة "IDE" هي الأكثر نجاحاً.<ref name=":0" />

== استخدامات أدوات البرمجة ==

=== الترجمة من لغة الإنسان إلى لغة الحاسب (لتنفيذ المهام) ===
الحواسب الذكية والحديثة تعتبر جداً معقدة، ومن أجل برمجتها، يجب جرد العديد من الأفكار. على سبيل المثال، عوضاً عن الكتابة ب<nowiki/>[[شفرة ثنائية|اللغة الثنائية]] وتمثيلها برمجياً، سيتطرق المبرمج بكتابة الكود البرمجي باستخدام لغات مفهومة له مثل [[سي (لغة برمجة)|لغة سي]]، و[[جافا (لغة برمجة)|لغة الجافا]] و[[بايثون (توضيح)|لغة البايثون]] (C, Java, Python). أدوات أو مكونات البرمجة الأساسية التي قمنا بتعريفها سابقاً ستقوم بترجمة وتحويل هذه اللغات المستخدمة والمفهومة من قبل الإنسان إلى ([[بت|bits & bytes]]) بحيث تمكن الحاسب نفسه من فهمها وقرائتها ثم بعد ذلك تشغيل أو تنفيذ المهام التي قام بطلبها المبرمج والمطور.

تؤدي هذه البرامج العديد من المهام المحددة والمكررة بشكل جيد والتي ستكون مضيعة للوقت ومعرضة للخطأ عند القيام بها من قبل الأفراد/المستخدمين، مثل وضع أجزاء من البرنامج في الذاكرة وتحديد المراجع بين أجزاء البرنامج كما يفعل الموصل. يمكن أن يؤدي تحسين برامج التحويل البرمجي من ناحية أخرى إلى إجراء تحويلات معقدة على التعليمات البرمجية المصدر لتحسين سرعة التنفيذ أو الخصائص الأخرى للبرنامج. يسمح هذا للمبرمج بالتركيز أكثر على الجوانب المفاهيمية العليا للبرنامج دون القلق بشأن تفاصيل الجهاز الذي يعمل عليه.<ref name=":1">{{استشهاد بدورية محكمة|عنوان=Improving computer program readability to aid modification|مسار=https://dl.acm.org/doi/10.1145/358589.358596|صحيفة=Communications of the ACM|تاريخ=1982-08-01|صفحات=512–521|المجلد=25|العدد=8|DOI=10.1145/358589.358596|الأول=James L.|الأخير=Elshoff|الأول2=Michael|الأخير2=Marcotty| مسار أرشيف = https://web.archive.org/web/20200212215157/http://portal.acm.org/citation.cfm?doid=358589.358596 | تاريخ أرشيف = 12 فبراير 2020 }}</ref>

=== إتاحة معلومات البرامج للأفراد ===
بسبب كمية التعقيد الكبيرة في أنظمة البرمجيات، من الصعب جداً المعرفة والإلمام التام بكافة عناصر وأدوات البرمجة حتى ولو كان هذا البرمج أو المطور خبير جداً ولديه خبرة متميزة. أيضاً، من الصعب جداَ فهم العلاقة الذي تدور وتتصل مابين مصادر السطور البرمجية الذي قد تم كتابتها بواسطة المبرمج وسلوك البرنامج نفسه. عندما يتم إنشاء برامج جديدة عبر المطورين، يحتمل وجود [[خطأ برمجي|أخطاء برمجية]]، ومن أجل العثور على هذه الأخطاء من قبل البرمجين/المطورين، يتم استخدام أدوات برمجية أخرى لإستكشاف المزيد من المعلومات الأخرى عن البرامج المستخدمة.

على سبيل المثال، يسمح [[منقح|مصحح الأخطاء]] للمبرمج باستخراج معلومات حول برنامج قيد التشغيل من حيث اللغة المصدر المستخدمة في البرنامج. يمكن للمصحح حساب قيمة متغير في البرنامج المصدر من حالة الجهاز الملموسة باستخدام المعلومات المخزنة بواسطة برنامج التحويل البرمجي. يمكن أن تشير مصححات الذاكرة مباشرة إلى الوصول إلى الذاكرة الخاطئة المشكوك فيها أو الصريحة في تشغيل البرامج التي قد تظل غير مكتشفة، وهي مصدر شائع لفشل البرنامج.<ref name=":1" />

أدوات البرمجة تأتي بمسميات وأشكال وأنواع مختلفة عديدة:<ref>{{استشهاد بكتاب|عنوان=Software tools|مسار= https://www.worldcat.org/oclc/2284279|ناشر=Addison-Wesley Pub. Co|تاريخ=1976|مكان=Reading, Mass.|ISBN=020103669X|OCLC=2284279|مسار أرشيف= https://web.archive.org/web/20200605224203/http://www.worldcat.org/oclc/2284279|تاريخ أرشيف=2019-12-08}}</ref>
* أدوات تحليل الأنظمة الثنائية وتوافقها.
* أدوات تتبع الأخطاء في قواعد البيانات.
* أدوات الإنشاء.
* أدوات الرسم البياني
* أدوات تشفير البرامج
* أدوات التعليمات البرمجية.
* الأدوات الموجودة في مواقع المشاركة مثل: [[سورس فورج]]، [[غيت هاب]].
* أدوات [[مصرف (حوسبة)|التجميع]] والربط: [[مجموعة مترجمات جنو|gcc]]، [[مايكروسوفت فيجوال ستوديو|Microsoft Visual Studio]] ،<nowiki/>[[كود واريور|rior]]، ICC.
* [[منقح|أدوات تصحيح الأخطاء]]: [[منقح|مصحح# قائمة مصححات الأخطاء]]. انظر أيضا [[تصحيح برمجي|تصحيح الأخطاء]].
* أدوات التفكيك: أدوات [[هندسة عكسية|الهندسة العكسية]] عمومًا.
* أدوات الوثائق: مقارنة الوثائق، help2man، الوثائق القديمة البسيطة.
* [[طريقة شكلية|أدوات الطرق الرسمية]]: التقنيات الرياضية للمواصفات والتطوير والتحقق.
* أدوات واجهة المستخدم الرسومية
* أدوات واجهة المكتبة.
* أدوات التكامل.
* [[تجزئة (لغة)|مولدات المحلل اللغوي]]: [[تجزئة (لغة)|Parsing# Parser development software]]
* تحليل الأداء أو التنميط: قائمة أداة تحليل الأداء
* التحكم في المراجعة: قائمة ببرنامج التحكم في المراجعة، مقارنة بين برنامج التحكم في المراجعة.
* [[لغة برمجة نصية|لغات البرمجة النصية]]: [[بي إتش بي|PHP]] و[[أوك|Awk]] و[[بيرل|Perl]] و[[بايثون (توضيح)|Python]] و[[ري أكس أكس|REXX]] و[[روبي (لغة برمجة)|Ruby]] و[[واجهة أوامر (حوسبة)|Shell]] و[[تي سي إل|Tcl]].
* أدوات البحث: [[جريب (يونكس)|grep]].
* شفرة المصدر استنساخ / الازدواجية الحقائق: [[تكرار الكود|تكرار رمز# أدوات]]
* [[محرر النصوص البرمجية|محرر شفرة المصدر]].
* [[محرر نصوص|أدوات وبرامج تحرير النصوص]]: [[قائمة محررات النصوص|قائمة برامج تحرير النصوص]].
* [[أسلوب البرمجة|تنسيق التعليمات البرمجية]]: المسافة البادئة، [[برتي برنت|الطابعات]].
* أدوات إنشاء شفرة المصدر: البرمجة التلقائية # التطبيقات.
* تحليل الكود الثابت: [[لنت (برمجية)|الوبر]]، قائمة أدوات تحليل الكود الثابت.
== بيئات التطوير المتكاملة ==
تجمع [[بيئة تطوير متكاملة|بيئات التطوير المتكاملة]] ميزات العديد من الأدوات في حزمة واحدة. فهي على سبيل المثال تسهل القيام بمهام محددة، مثل البحث عن المحتوى فقط في الملفات في مشروع معين. يمكن استخدام IDEs على سبيل المثال لتطوير التطبيقات على مستوى المؤسسة.

يمكن العثور على جوانب مختلفة من IDEs للغات برمجة معينة في هذه المقارنة لبيئات التطوير المتكاملة.

== انظر أيضًا ==
* أدوات [[هندسة البرمجيات بمساعدة الحاسوب|هندسة البرمجيات بمساعدة الكمبيوتر]]
* [[علم الحاسوب|علوم الكمبيوتر]]
* نظام التكوين
* [[لغة برمجة نصية|لغة البرمجة]]
* [[حزمة أدوات تطوير البرمجيات|مجموعة تطوير البرمجيات]]
* [[هندسة البرمجيات]] وقائمة مواضيع هندسة البرمجيات
* [[نظام برامج|نظم البرمجيات]]
* أدوات [[هندسة البرمجيات بمساعدة الحاسوب]]
* [[علم الحاسوب]]
* [[لغة برمجة نصية]]
* [[حزمة أدوات تطوير البرمجيات]]
* [[هندسة البرمجيات]]
* [[نظام برامج]]

== المراجع ==

{{مراجع}}
{{روابط شقيقة}}
{{شريط بوابات|برمجة الحاسوب}}
{{ضبط استنادي}}

[[تصنيف:أدوات برمجة]]
أدوات البرمجة أو (أدوات تطوير البرامج) هي مجموعة من البرامج الحاسوبية التي يتم استخدامها من قبل المبرمجين أو المطورين لبناء وإنشاء ومعالجة وصيانة البرامج والتطبيقات. ربما يعبر هذا المصطلح ويشير إلى مجموعة من التطبيقات والبرامج البسيطة والسهلة التي تساعد في إنجاز المهمات، كما هو الحال الآن بتواجد العديد من البرامج اليدوية التي تساعد في تمكين الفرد من إصلاح عناصر بشكل فيزيائي. في عالم تطوير البرمجيات، هنالك عدة مكونات أساسية من أهمها هي «محرر مصادر الأكواد البرمجية» (source code editor), «المحول البرمجي» (compiler) و «المترجم» (Interpreter). كل هؤلاء العناصر هي مكونات رئيسية لا غنى عنها، تستخدم بشكل مطلق ومستمر في عالم البرمجيات والتطوير. بالإضافة، هناك العديد من برمجيات التطوير في في عالم الحوسبة، قد تزيد نسبة استخدام بعضها وقد يكون البعض منها غير مستخدمة بإستمرار، وهذا المعيار يحكمه المطور أو المبرمج بذاته. قد تكون الأدوات على هيئة برامج منفصلة متعددة يتم تشغيلها عبر «واجهات سطور الأوامر» في أنظمة التشغيل، أو قد تكون أيضا متجزئة من برامج أخرى كبيرة الحجم تدعى «بيئة التطوير المتكاملة» ويرمز لها عادة باللغة الإنجليزية "IDE". في أغلب الأحيان وبالتحديد عند الاستخدام السهل والغير معقد أو للإجرائات السريعة والسهلة، يتم استخدام حيل وطرق مشتهرة ومعروفة عند المبرمجين المحترفين بحيث تنجز لهم المهام المطلوبة من دون الحاجة إلى تنزيل وتحميل الأداة البرمجية المختصة. على سبيل المثال، عندما يرغب المبرمج في تصحيح كود برمجي معين (debugging), بالإمكان استخدام طرق معينة مثل استخدام المصحح البرمجي السريع المدمج في متصفحات الإنترنت نفسها ومن دون اللجوء إلى تنزيل وتحميل أدوات برمجية خاصة للتصحيح البرمجي.

هناك غموض واضح لدى الكثير من الناس حول التفرقة مابين الأدوات والتطبيقات. وللتوضيح، يستخدم المطورين والمبرمجين «الأدوات» كوسيلة في كل الأوقات عند التعامل مع قواعد البيانات التي تتكون من ملفات يخزن فيها كافة العناصر والمعلومات المهمة. ولكن عند التعامل مع قواعد بيانات قد تم تطويرها بالكامل، فهي حينئذ تصبح بحد ذاتها «تطبيق». لسنوات عديدة، كانت ولازالت الهندسة البرمجية باستخدام الحاسب هي الأكثر طلباََ واستخدام، حيث أنها أدت نجاحات باهرة في الصناعات والهندسة المعمارية وقطاعات التصميم العام، ولكن برامج البيئة المتكاملة "IDE" هي الأكثر نجاحاً.

 استخدامات أدوات البرمجة 

 الترجمة من لغة الإنسان إلى لغة الحاسب (لتنفيذ المهام) 
الحواسب الذكية والحديثة تعتبر جداً معقدة، ومن أجل برمجتها، يجب جرد العديد من الأفكار. على سبيل المثال، عوضاً عن الكتابة باللغة الثنائية وتمثيلها برمجياً، سيتطرق المبرمج بكتابة الكود البرمجي باستخدام لغات مفهومة له مثل لغة سي، ولغة الجافا ولغة البايثون (C, Java, Python). أدوات أو مكونات البرمجة الأساسية التي قمنا بتعريفها سابقاً ستقوم بترجمة وتحويل هذه اللغات المستخدمة والمفهومة من قبل الإنسان إلى (bits & bytes) بحيث تمكن الحاسب نفسه من فهمها وقرائتها ثم بعد ذلك تشغيل أو تنفيذ المهام التي قام بطلبها المبرمج والمطور.

تؤدي هذه البرامج العديد من المهام المحددة والمكررة بشكل جيد والتي ستكون مضيعة للوقت ومعرضة للخطأ عند القيام بها من قبل الأفراد/المستخدمين، مثل وضع أجزاء من البرنامج في الذاكرة وتحديد المراجع بين أجزاء البرنامج كما يفعل الموصل. يمكن أن يؤدي تحسين برامج التحويل البرمجي من ناحية أخرى إلى إجراء تحويلات معقدة على التعليمات البرمجية المصدر لتحسين سرعة التنفيذ أو الخصائص الأخرى للبرنامج. يسمح هذا للمبرمج بالتركيز أكثر على الجوانب المفاهيمية العليا للبرنامج دون القلق بشأن تفاصيل الجهاز الذي يعمل عليه.

 إتاحة معلومات البرامج للأفراد 
بسبب كمية التعقيد الكبيرة في أنظمة البرمجيات، من الصعب جداً المعرفة والإلمام التام بكافة عناصر وأدوات البرمجة حتى ولو كان هذا البرمج أو المطور خبير جداً ولديه خبرة متميزة. أيضاً، من الصعب جداَ فهم العلاقة الذي تدور وتتصل مابين مصادر السطور البرمجية الذي قد تم كتابتها بواسطة المبرمج وسلوك البرنامج نفسه. عندما يتم إنشاء برامج جديدة عبر المطورين، يحتمل وجود أخطاء برمجية، ومن أجل العثور على هذه الأخطاء من قبل البرمجين/المطورين، يتم استخدام أدوات برمجية أخرى لإستكشاف المزيد من المعلومات الأخرى عن البرامج المستخدمة.

على سبيل المثال، يسمح مصحح الأخطاء للمبرمج باستخراج معلومات حول برنامج قيد التشغيل من حيث اللغة المصدر المستخدمة في البرنامج. يمكن للمصحح حساب قيمة متغير في البرنامج المصدر من حالة الجهاز الملموسة باستخدام المعلومات المخزنة بواسطة برنامج التحويل البرمجي. يمكن أن تشير مصححات الذاكرة مباشرة إلى الوصول إلى الذاكرة الخاطئة المشكوك فيها أو الصريحة في تشغيل البرامج التي قد تظل غير مكتشفة، وهي مصدر شائع لفشل البرنامج.

أدوات البرمجة تأتي بمسميات وأشكال وأنواع مختلفة عديدة:
 أدوات تحليل الأنظمة الثنائية وتوافقها.
 أدوات تتبع الأخطاء في قواعد البيانات.
 أدوات الإنشاء.
 أدوات الرسم البياني
 أدوات تشفير البرامج
 أدوات التعليمات البرمجية.
 الأدوات الموجودة في مواقع المشاركة مثل: سورس فورج، غيت هاب.
 أدوات التجميع والربط: gcc، Microsoft Visual Studio ،rior، ICC.
 أدوات تصحيح الأخطاء: مصحح# قائمة مصححات الأخطاء. انظر أيضا تصحيح الأخطاء.
 أدوات التفكيك: أدوات الهندسة العكسية عمومًا.
 أدوات الوثائق: مقارنة الوثائق، help2man، الوثائق القديمة البسيطة.
 أدوات الطرق الرسمية: التقنيات الرياضية للمواصفات والتطوير والتحقق.
 أدوات واجهة المستخدم الرسومية
 أدوات واجهة المكتبة.
 أدوات التكامل.
 مولدات المحلل اللغوي: Parsing# Parser development software
 تحليل الأداء أو التنميط: قائمة أداة تحليل الأداء
 التحكم في المراجعة: قائمة ببرنامج التحكم في المراجعة، مقارنة بين برنامج التحكم في المراجعة.
 لغات البرمجة النصية: PHP وAwk وPerl وPython وREXX وRuby وShell وTcl.
 أدوات البحث: grep.
 شفرة المصدر استنساخ / الازدواجية الحقائق: تكرار رمز# أدوات
 محرر شفرة المصدر.
 أدوات وبرامج تحرير النصوص: قائمة برامج تحرير النصوص.
 تنسيق التعليمات البرمجية: المسافة البادئة، الطابعات.
 أدوات إنشاء شفرة المصدر: البرمجة التلقائية # التطبيقات.
 تحليل الكود الثابت: الوبر، قائمة أدوات تحليل الكود الثابت.
 بيئات التطوير المتكاملة 
تجمع بيئات التطوير المتكاملة ميزات العديد من الأدوات في حزمة واحدة. فهي على سبيل المثال تسهل القيام بمهام محددة، مثل البحث عن المحتوى فقط في الملفات في مشروع معين. يمكن استخدام IDEs على سبيل المثال لتطوير التطبيقات على مستوى المؤسسة.

يمكن العثور على جوانب مختلفة من IDEs للغات برمجة معينة في هذه المقارنة لبيئات التطوير المتكاملة.

 انظر أيضًا 
 أدوات هندسة البرمجيات بمساعدة الكمبيوتر
 علوم الكمبيوتر
 نظام التكوين
 لغة البرمجة
 مجموعة تطوير البرمجيات
 هندسة البرمجيات وقائمة مواضيع هندسة البرمجيات
 نظم البرمجيات
 أدوات هندسة البرمجيات بمساعدة الحاسوب
 علم الحاسوب
 لغة برمجة نصية
 حزمة أدوات تطوير البرمجيات
 هندسة البرمجيات
 نظام برامج

 المراجع 

تصنيف:أدوات برمجة