أدوات ولغات برمجة .. تقلل جهود وتكاليف العمل

لغات «مرئيّة» تحول الحلول إلى لغة يفهمها الكومبيوتر

TT

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

ويمكن تعريف لغات البرمجة بأنها لغات مصطنعة تُستخدم للتحكم في سلوك آلة أو كومبيوتر ما، وتحتوي على قوانين وقواعد تصف أسسها وكيفية استخدامها، وتسمح بالتعبير عن الـ «خوارزميّات» Algorithms (فكرة سير البرنامج بشكل مجرّد) بشكل دقيق جدا. وتوجد حاليا الآلاف من لغات البرمجة، وهي تختلف عن اللغات المحكية في أن لغات البرمجة دقيقة إلى أقصى الحدود ولا يوجد فيها مجال لإخفاء المعلومات أو الخطأ وتعبّر عما يكتب بالتحديد، وليس عما يُقصد بما كُتب. وتُطرح لغات جديدة في كل عام، على الرغم من تعدد اللغات الحالية، وعلى الرغم من المحاولات الفاشلة لتطوير لغة برمجية واحدة شاملة، ذلك أن الاحتياجات والظروف المختلفة تتطلب وجود عدة لغات، مثل كتابة برامج من شخص واحد أو من فريق مكون من مئات المبرمجين، أو اختلاف السرعة والحجم وسهولة البرمجة. وتستطيع معظم اللغات الحديثة تجريد المشاكل والحلول إلى درجات عالية جدا، على خلاف اللغات القديمة التي كانت مرتبطة بالقطع الداخلية للجهاز وتتطلب تغييرات كبيرة عند تغيير قطعة داخلية في الكومبيوتر. ونظرا لأن المبرمجين اليوم غير مضطرين إلى الدخول في تلك التفاصيل الصغيرة، فإنه بمقدورهم فعل المزيد في برامجهم وبجهود أقل. وسبّب النمو المتسارع للإنترنت في منتصف التسعينات، تطورا كبيرا في لغات البرمجة، حيث طُورت لغات وأدوات عديدة تسهل تفاعل البرامج في الإنترنت، مثل «بيرل» Perl التي تطورت منذ عام 1987 لتصبح شائعة جدا في صفحات الإنترنت المختلفة، أو لغة «جافا» Java التي طُرحت في عام 1994 وتسمح للبرامج بالعمل في بيئة افتراضية Virtual Machine على أي جهاز ومن دون الاكتراث لنظام التشغيل أو نوعية القطع الإلكترونية الداخلية. واستطاعت لغات البرمجة التطور بشكل كبير جدا وتسهيل كتابة النصوص البرمجية، الأمر الواضح في عملية كتابة كلمة «مرحبا» على الشاشة، التي تحتاج إلى 70 سطرا في بعض اللغات، أو إلى سطر واحد في لغات أخرى، أو حتى من دون كتابة أي سطر برمجي في بعض اللغات المرئية Visual Programming Languages.

* أدوات ولغات «مرئية»

* ومن التطورات الكبيرة في عالم لغات البرمجة السماح للمبرمجين بكتابة برامج من دون نصوص، وذلك باستخدام مجموعات من الوظائف مسبقة الإعداد Pre-made Functionalities (على شكل صناديق أو مربعات أو أشكال هندسية مختلفة) من قائمة و«رسم» كيفية انتقال المعلومات بين هذه الوظائف بواسطة أسهم أو خطوط، لتفهمها أداة أو لغة البرمجة.

ويمكن بهذه الطريقة كتابة برامج لا تحتوي على أية نصوص برمجية من طرف المبرمج Zero-Coding Programs، عوضا عن كتابة آلاف الأسطر بإحدى لغات البرمجة العادية لأداء العمل نفسه. وباستخدام هذه اللغات والأدوات، فإنه يمكن إيجاد حلول في ساعات عوضا عن الأشهر، وبفترة تعلم تستغرق بضعة أسابيع عوضا عن سنين طويلة من المراس.

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

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

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

تجدر الإشارة إلى أن مجموعة اللغات المتضمنة في مجموعة «مايكروسوفت فيجوال ستوديو» Microsoft Visual Studio (مثل «فيجوال بيسيك» Visual Basic و«فيجوال سي شارب» Visual C# و«فيجوال جيه شارب» Visual J#)، ليست من هذه الفئة من اللغات، ذلك أنها لغات نصية يجب فيها على المبرمج كتابة الخوارزميّات عن طريق النصوص، وليس بالرسم. إلا أن هذه المجموعة توفر بيئة مرئية تريح المستخدم من عناء رسم الأزرار والنوافذ والصناديق، وتقوم بذلك بشكل آلي، إلا أنه يجب كتابة الحل بشكل يدوي. ومن لغات وأدوات البرمجة المرئية Alice وAmiga Vision وTibco BusinessWorks Designer وDrakon وFlow وjMax وLava وScala Multimedia وVirtools وWireFusion وXpresso.

* أدوات متقدمة

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

ومن التقنيات الأخرى التي تستخدم النصوص الحركية ActionScript أدوات «أدوب فلاش» Adobe Flash، التي كُتبت بلغة C++ في عام 1996، وتسمح ببرمجة إعلانات وعروض فيديو وألعاب تفاعلية بسيطة وبرامج عبر الإنترنت بشكل سهل جدا، ومن دون الحاجة إلى الدخول في التفاصيل التقنية الصعبة لذلك. هذا الأمر أدى إلى انتشار هذه التقنية بشكل كبير جدا في الإنترنت، حيث استطاعت جيوش كبيرة من محبي الرسم طرح أفكارهم في العالم الرقمي بسرعة وسهولة كبيرة.

* أجيال لغات البرمجة

* ويمكن تقسيم لغات البرمجة إلى 5 أجيال، كل جيل متخصص في هدف ما وليس مرتبا حسب الزمن، حيث من الممكن أن نشهد لغة جديدة بعد 10 أعوام تصنف تحت الجيل الثالث أو الثاني. ومن الطبيعي أن تُستخدم مجموعة أدوات برمجية هي عبارة عن خليط من هذه الأجيال، مثل مجموعة لغات «مايكروسوفت ستوديو» Microsoft Studio (مع استخدام الجيل الأول بشكل محدود جدا، وفي الأماكن التي تحتاج إلى سرعة عالية جدا).

الجيل الأول للغات هو لغة الآلة Machine Code، التي تعتمد على الدارات الإلكترونية للجهاز التي تعمل عليه، وهي نوع متخصص جدا يتكون من سلاسل طويلة من أرقام 0 و1، وهي تتميز بسرعة عالية في الأداء والكفاءة، لكنها صعبة التعلم والتعديل والتطوير، ومن الصعب جدا نقل البرنامج ليعمل على أجهزة أخرى، لأن لغة آلة ما قد تكون مختلفة عن آلة أخرى، ومن الممكن إلحاق الضرر بدارات الجهاز في حال كتابة الأرقام بشكل خاطئ.

الجيل الثاني يحتوي على رموز وعناوين وأوامر بسيطة تُترجم إلى لغة الآلة بشكل آلي في الخلفية، مثل لغات IBM BAL وVAC Macro وAssembly. وتعتمد هذه اللغات على فئة المعالجات، وتتغير بتغيرها، وهي تُستخدم في الكثير من الألعاب الإلكترونية وبرامج التلاعب بالرسومات وعروض الفيديو ومحاكاة الدارات الكهربائية Emulation/ Virtualization وضغط الملفات وتشفير المعلومات، وذلك لسرعتها الكبيرة في العمل (مقارنة باللغات الأعلى منها). ويمكن اعتبار بعض استخدامات لغة C المشهورة على أنها من فئة الجيل الثاني للغات، بينما تكون بعض الاستخدامات الأخرى لها، من فئة الجيل الثالث.

أما الجيل الثالث، فهو عبارة عن لغات تهدف إلى حل المشاكل بمصطلحات مفهومة ومتغيرات يمكن تسميتها حسب اختيار المبرمج وتعابير حسابية متقدمة، وتحتوي على أدوات لفحص اللغة وترجمتها إلى لغة الآلة وربطها بالذاكرة بشكل آلي وعدم التقيد بالمعالج المستخدم، مثل لغات Fortran وCobol وPascal وC وADA وBasic وPL/I وALGOL وC++ وDelphi وJava.

وبالنسبة للجيل الرابع، فهو يستخدم لغات غير منهجية Non-Procedural ذات درجة تجريد أعلى من اللغات السابقة، وهي نتيجة هندسة برمجية للغات الجيل الثالث تقلل من جهود وتكاليف برمجة المتطلبات (قد تصل فوائد الإنتاجيّة إلى 8 أضعاف مقارنة بلغة «كوبول» الخاصة بالجيل الثالث). ومن فوائد التجريد العالي لهذه اللغات قدرة المديرين وخبراء الأعمال من فهم النصوص المكتوبة بشكل معقول، وسهولة وسرعة تغيير قوانين سير العمل. ومن لغات هذا الجيل Focus وPowerhouse وSQL وSAS وSPFF وStata وOracle Reports وOracle Reports وPostScript وGenero وMaple وMapper وMark-IV وMatlab وPL/SQL وXbase++ وColdFusion وRuby On Rails.

ويبقى الجيل الخامس الذي هو عبارة عن لغات تعتمد في حل المشاكل على استخدام الشروط عوضا عن كتابة «خوارزميّة» كاملة. وتهدف هذه اللغات إلى جعل الكومبيوتر يحل المشكلة بنفسه عوضا عن تلقينه كيفية حلها، وبالتالي السماح للمبرمجين بالتركيز على نوعية المشاكل التي يجب حلها، وما هي الشروط التي يجب برمجتها من دون معرفة كيفية حل المشكلة.

وتُستخدم هذه اللغات في مجال أبحاث الذكاء الاصطناعي Artificial Intelligence (مثل سؤال الكومبيوتر باللغة الإنجليزية «مَن هم العملاء الذين أودعوا أكثر من 5 آلاف دولار أميركي أو يورو في حساباتهم المصرفية في الأسبوع الأخير، والذين يسكنون في منازل مستأجرة ويمتلكون بطاقات ائتمانية؟»، عوضا عن كتابة ذلك في إحدى لغات البرمجة). وعلى الرغم من أن هذه اللغات كانت تعتبر مستقبل لغات البرمجة في تسعينات القرن الماضي، إلا أن الأخطاء والمشاكل التي اكتُشفت عند تطويرها، بدءا من تعريف الشروط، وجعل اللغة تكتب حلا ناجحا وسريعا وفق تلك الشروط، جعلت من هذه العملية مشكلة صعبة الحل، وبالتالي عدم القدرة على أتمتة العملية، حيث إنها تحتاج إلى بصيرة وبُعد رؤية فريق البرمجة، وأصبحت مجرّد أسلوب برمجي يدرس في الجامعات ومراكز التعليم التقنية. ومن اللغات التي تتبع لهذا الجيل Prolog وOPS5 وMercury.

* مواقع مهمة

* http://www.scriptol.org/history.php http://www.scriptol.org/chronology-programming-languages.html http://www.scriptol.org/hello-world-programming-language.php http://msdn.microsoft.com/vstudio http://www.tibco.com http://www.visual-paradigm.com/product/vpuml http://www.adobe.com/devnet/platform http://www.embarcadero.com/products/erstudio