مقدمة من أكاديمية حسوب
دورة تطوير التطبيقات باستخدام لغة JavaScript
في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp.
دورة تطوير واجهات المستخدم
في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية.
دورة تطوير تطبيقات الجوال باستخدام تقنيات الويب
في هذه الدورة ستتعلم أساسيات منصة كوردوفا و كيف تستخدمها لتطوير تطبيقات متعددة المنصات, بناء تطبيق لموقع Wordpress, تطوير تطبيق قائمة مهام, تطوير تطبيق حالة الطقس, تطوير تطبيق لمطعم باستخدام إطار العمل Ionic 4.
دورة تطوير تطبيقات الويب باستخدام لغة PHP
في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل.
دورة تطوير تطبيقات الويب باستخدام لغة Ruby
في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O.
دورة علوم الحاسوب
هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب.

طرق ربط لغات برمجة مع بعضها

يعتمد تحديد اللغة البرمجية التي ستُستخدم في برمجة المشروع على عدة عوامل، مثل نظام التشغيل الذي يتم برمجة المشروع من أجله, سهولة كتابة الكود (Syntax)، حجم المجتمع الذي يستخدمها و الداعم لها و الذي سيساعدك في إيجاد حلول للمشاكل التي قد تواجهك عند إستخدامها، بالإضافة إلى المكتبات المشهورة المكتوبة بها و التي تُستخدم لتسريع العمل.

عادةً ما تحمل المشاريع الكبيرة خواصاً مختلفة يصعب جمعها في لغة واحدة. كمثال بسيط موقع هرمش يستخدم لغة Javascript ليكون المستخدم قادر على وضع تعليقه على المقال و بنفس الوقت يستخدم لغة PHP ليستقبل تعليق المستخدم المرسل والتشييك عليها (فحصه) لمعرفة ما إن كان قد تسبب بضرر للموقع في حال كان يحتوي على كود خبيث, أو أنه يحتوي على كلام سيئ و عندها إن وجد أنه لا مشكلة فيه يقوم بحفظه في قاعدة البيانات و من ثم يرسل لنا رسالة تخبرنا بأنه يوجد تعليق جديد تم إضافته.

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

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

 

1- التواصل عن طريق واجهة برمجية

بعض لغات البرمجة  توفر لك مجموعة دوال يقال لها واجهة برمجية (API) تسمح بالتواصل مع لغات أخرى، فمثلاً يمكن لبرنامج مكتوب بلغة Java إستدعاء دوال مكتوبة بلغة ++C عن طريق واجهة برمجية مخصصة لذلك إسمها (JNI) التي هي إختصار لجملة Java Native Interface.

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

 

2- التواصل عن طريق موجه الأوامر

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

import sys

print("Hello " + sys.argv[1])

و البرنامج الأساسي مكتوب بلغة Java و يريد تشغيل البرنامج المكتوب بلغة Python سيكون الكود كالتالي.

import java.io.*;

public class Main {

    public static void main(String[] args) throws Exception {
        Process process = Runtime.getRuntime().exec("python helper.py Rami");
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
        System.out.println(stdInput.readLine());
    }
	
}

هنا عند تشغيل الكود المكتوب بلغة Java سيقوم بإرسال أمر مباشر لموجه الأوامر يطلب منه أن يشغل مفسّر لغة Python حتى ينفذ الأوامر الموجودة في الملف helper.py مع تمرير الكلمة Rami له أيضاً.

عند تنفيذ الأوامر الموجودة في الملف helper.py سيقوم بوضع الكلمة Rami التي مررناها له بشكل مؤقت في المصفوفة sys.argv و من بعدها سيقوم بطباعتها على الشاشة حتى يخرجها للبرنامج المكتوب بلغة Java.

في النهاية سيقوم البرنامج المكتوب بلغة Java بقراءة المخرجات التي نتجت عن تنفيذ الملف helper.py و يطبعها.

 

معلومة

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

 

3- الإتصال عن طريق الشبكة Network

يمكن للبرنامج الأساسي و البرنامج المساعد التواصل عن طريق localhost أو شبكة الإنترنت، و يتم تبادل البيانات بهذه الطريقة عن طريق بروتوكول معين مثل HTTP أو WebSocket، و تتميز هذه الطريقة عن غيرها بإمكانية تشغيل البرنامج المساعد على جهاز آخر يسمى حينها خادماً (Server).

لتتوضح الأمور قليلا عليك فهم كيف تعمل الشبكة.
الشبكة هي عبارة عن عدة طبقات كما هو موضح في الصورة التالية.

صورة توضح طبقات الشبكة تبعا لنموذج OSI (المصدر GeeksForGeeks.org , تحت رخصة CC BY-SA 4.0)

أول ثلاث طبقات في الأسفل هم طبقات الأجزاء المادية (Hardware)، و تكون هذه الطبقات مسؤولة بشكل عام عن نقل البيانات الرقمية Digital على شكل نبضات كهربائية في الأسلاك أو على شكل إشعاع كهرومغناطيسي، و تليها طبقة النقل Transport المسؤولة عن إدارة نقل البيانات بين الجهازين و من بروتوكولاتها TCP و UDP، و الطبقة الأخيرة هي طبقة البرمجيات Software، و هذه الطبقة التي تبرمج فيها البروتوكولات المعروفة مثل HTTP و WebSocket و وظيفة هذه البروتوكولات هي تبادل البيانات بين الجهازين بحيث يفهم كل طرف ما الذي يتم تبادله و كيف يتم تبادله، و يبدأ كل بروتوكول عملية المراسلة بعملية المصافحة (Handshaking)  وهي أول ما يتم إرساله من المستخدم إلى الخادم ليخبره فيها عن البروتوكول الذي يريد التواصل به معه و عن معلومات أخرى أيضاً تعتمد على نوع البروتوكول، و يقوم الخادم بعدها بالرد عليه بالإيجاب و يرسل معلومات أخرى أيضاً.

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

 

4- مشروع GraalVM

لمواكبة آخر التطورات يجب علينا ذكر هذا المشروع الرائد الذي طورته شركة Oracle عام 2019، و هو آلة Java إفتراضية تدعم عدة لغات برمجة أخرى مثل JavaScript، Ruby، R و Python حيث يمكن لأي لغة منهم إستخدام اللغات الأخرى، و هذا مثال على كود JavaScript يقوم بتنفيذ كود Python.

var array = Polyglot.eval("python", "[1,2,42,4]")
console.log(array[2]);
نبّهني عن
guest
8 تعليقات
الآراء المضمنة
شاهد جميع التعليقات
Amjed
Amjed
1 سنة سابقاً

السلام عليكم اذا امكن المساعدة في إنشاء برنامج يقوم بربط بيانات صور و إرسالها إلى برنامج آخر

komo15
komo15
1 سنة سابقاً

مقال جميل شكرا رامي

AmeenFarag
AmeenFarag
1 سنة سابقاً

السلام عليكم
أخي لدي مشروع ذكاء اصطناعي بلغة البايثون
واريد ابني الواجهات gui بلغة السي شارب وربطها مع البايثون هل في طريقة مثلى لمعل هذا؟؟؟ 🤔

ولكم جزيل الشكر والتقدير

Ceo of al-sahem
1 سنة سابقاً

شرح رائع وموضوع مهم جدا ❤️🙏🏻

آخر تعديل 1 سنة سابقاً بواسطة Ceo of al-sahem
منير
منير
7 شهور سابقاً

السلام عليكم ،أنا أريد ربط برنامج جافا موجود في netbeans مع برنامج بايثون في برنامج pychram كيف يمكنني ربطهم كل برنامج موجدود في مكان ،قرأت المثال الموجود ولم أفهم الرابط python helper.py Ramiممكن توضيح

جميع الحقوق محفوظة للموقع   ٢٠٢٠ - ٢٠١٤ ©
DMCA.com Protection Status

محتوى الموقع يخضع لرخصة (CC BY-NC-ND 4.0) التي لا تسمح باستخدام الشروحات لأغراض تجارية, إجراء تعديل عليها و نشرها في موقع آخر, وضع الشروحات في تطبيق أو في كتاب إلا في حال أخذ موافقة صريحة من إدارة الموقع.

© 2020 Harmash. All Content is licensed under CC BY-NC-ND 4.0 unless mentioned otherwise.