(python)لغة البرمجة بيثون
- Maan Bayya
- Dec 28, 2018
- 4 min read
https://www.python.org/
* ما هي لغة البرمجة (بيثون)
لغة البرمجة المعروفة (بيثون) , هي لغة برمجة محمولة , و تتمتع لغة البرمجة هذه في كونها لغة برمجة حيوية و ديناميكية و مجانية , و هي تسمح في اتباع نهج الوحدات , و نهج البرمجة الشيئية (OOP) ,
و قد تم تطوير لغة البرمجة (بيثون) سنة 1989 , على يد (غيدو فان) , و مشاركة عدد كبير من المطورين المتطوعين و المساهمين .
* ميزات لغة البرمجة (بيثون)
1 - لغة (بيثون) هي لغة برمجة محمولة , ليس فقط على مختلف أنظمة (يونكس) , و لكن حتى على أنظمة التشغيل (ماك) , و NexTStep , BeOS , Ms-DOS , و جميع إصدارات ويندوز , و يوجد هناك مترجم جديد إلى هذه اللغة البرمجية يسمى (JPython) , و قد تم كتابة هذا المترجم في لغة البرمجة (جافا) , و هو يقوم على إنشاء كود بايت في لغة جافا .
2 - لغة برمجة (بيثون) لغة برمجة مجانية , و يمكن استخدام هذه اللغة في المشاريع التجارية دون قيود .
3 - لغة برمجة (بيثون) مناسبة لعمل سكريبت مكون من 10 أسطر , و خاصة في المشاريع المعقدة , و التي تحتوى على عشرات الآلاف من الأسطر .
4 - طريقة تكوين جملة لغة (بيثون) بسيط جدا , و هذه الغة تعمل على تطوير برامج في سرعة تقاس ما بين 5 - 10 مرات , من لغة C++ , Java , و هذه اللغة سهلة جدا في الصيانة .
5 - لغة (بيثون) تدعم البرمجة الشيئية , و هي ايضا تدعم الوراثة المتعددة و مشغلات الحمولة الزائدة , و نماذج الكائنات , و تدعم لغة جافا , C++ .
6 - لغة البرمجة (بيثون) هي لغة موسعة مثل Tcl , Guile , و يمكن التعامل في سهولة مطلقة مع مكتبات لغة C , و يمكن استخدام مثل لغة موسعة إلى أنظمة برامج تمديد معقدة جدا .
7 - مكتبة (بيثون) القياسية و حزم التشارك و المساهمة , توفر لك الوصول إلى مجموعة واسعة من الخدمات , مثل السلاسل النصية , و التعابير العادية , و التعابير المعقدة , و نظام تصحيح التعابير , و معايير خدمات (يونكس) , و الملفات , sockets , و الخيوط , و بروتوكلات الإنترنت , FTP , CGI , HTML ,
و قواعد البيانات , و واجهات المستخدم الرسومية .
8 - لغة (بيثون) ما تزال في تطور مستمر و سريع جدا , و ذلك في فضل مجتمع المستخدمين و المطورين , و معظم هؤلاء المستخدمين و المطورين من أنصار البرمجيات الحرة , و البرمجيات مفتوحة المصدر , و في التوازي مع المفسر الرئيسي في لغة برمجة (بيثون) , و هو مكتوب في لغة C , و التي تم صناع (بيثون) منها , و يوجد هناك مفسر ثاني مكتوب في لغة Java , و هو حاليا في مرحلة التطوير .
9 - لغة (بيثون) هي اللغة المختارة في معالجة XML .

* الاتصال عبر الشبكة و خاصية التعدد - Multithreading
أثبت التطور غير المسبوق في الإنترنت , و في كل وضوح أن أجهزة الحواسيب يمكن أن تكون أدوات اتصال فعالة جدا , و ذلك من خلال إجارء بعض التجار على أساليب ربط الاتصال بين البرامج .
و نحن نفترض أنك تتعاون مع أشخاص آخرين , و محطة العمل الخاصة بك متصلة في شبكة محلية , من خلال استخدام بروتوكول TCP/IP , هنا لا يكون نظام التشغيل مهم لدينا , على سبيل المثال , يمكن تثبيت سكريبت (بيثون) على محطة تعمل على نظام تشغيل (لينكس) , و التواصل مع سكريبت آخر على محطة آخرى , و يعمل في نظام تشغيل مثل (ماك) أو (ويندوز) , كما يمكن وضع أكثر من سكريبت على محطة واحدة او جهاز واحد , و لكن في نوافذ منفصلة .
- مثال
ربط جهازين , الجاهز الاول يقوم في دور الخادم , و الجهاز الآخر يقوم في دور العميل .
برنامج الخادم يعمل في شكل مستمر على جهاز معروف الهوية على الشبكة , من خلال عنوان IP , و هو ينتظر وصول الطلبات المرسلة له من قبل العملاء , من خلال خاصية منفذ الاتصال المحدد , من أجل هذه الخطوة يجب على سكريبت ان ينفذ كائن برمجي مرتبط في هذا المنفذ , و الذي يسمى socket .
و من خلال البرنامج الآخر , برنامج العميل و الذي يحاول الاتصال عن طريق طلب مناسب , و هذا الطلب يكون من خلال رسالة ترسل إلى الشبكة , و الذي يجب أن يحتوى الطلب على عنوان IP محدد , و منفذ اتصال إلى المتلقي .
- كود برنامج الخادم
1# import socket, sys
2# HOST = '192.168.1.168'
3# PORT = 50000
4# counter =0
5# mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
6# try:
7# mySocket.bind((HOST, PORT))
8# except socket.error:
9# print("The connection socket to the chosen address failed.")
10# sys.exit
11# while 1:
12# print("Server ready, awaiting requests ...")
13# mySocket.listen(2)
14# connexion, adresse = mySocket.accept()
15# counter +=1
16# print("Client connecté, adresse IP %s, port %s" % (adresse[0], adresse[1]))
17# connexion, adresse = mySocket.accept()
18# counter +=1
19# print("Client connecté, adresse IP %s, port %s" % (adresse[0], adresse[1]))
20# msgServeur ="Vous êtes connecté au serveur Marcel. Envoyez vos messages."
21# connexion.send(msgServeur.encode("Utf8"))
22# msgClient = connexion.recv(1024).decode("Utf8")
23# while 1:
24# print("C>", msgClient)
25# if msgClient.upper() == "FIN" or msgClient =="":
26# break
27# msgServeur = input("S> ")
28# connexion.send(msgServeur.encode("Utf8"))
29# msgClient = connexion.recv(1024).decode("Utf8")
30# connexion.send("fin".encode("Utf8"))
31# print("Connexion interrompue.")
32# connexion.close()
33#
34# ch = input("<R>ecommencer <T>erminer ? ")
35# if ch.upper() =='T':
36# break
*******
- كود برنامج العميل
1# import socket, sys
2# HOST = '192.168.1.168'
3# PORT = 50000
4# mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5# try:
6# mySocket.connect((HOST, PORT))
7# except socket.error:
8# print("Failed connection.")
9# sys.exit()
10# print("Connection established with the server.")
11# msgServeur = mySocket.recv(1024).decode("Utf8")
12#
13# while 1:
14# if msgServeur.upper() == "FIN" or msgServeur =="":
15# break
16# print("S>", msgServeur)
17# msgClient = input("C> ")
18# mySocket.send(msgClient.encode("Utf8"))
19# msgServeur = mySocket.recv(1024).decode("Utf8")
20# print("Connexion interrompue.")
21# mySocket.close()
___________________________
* تطبيق ويب , هيكل موقع الكتروني فرنسي متعدد الصفحات
1# import cherrypy
2#
3# class HomePage(object):
4# def __init__(self):
5# self.maxime = MaximeDuJour()
6# self.liens = PageDeLiens()
7# def index(self):
8# return '''
9# <h3>Site des adorateurs du Python royal - Page d'accueil.</h3>
10# <p>Veuillez visiter nos rubriques géniales :</p>
11# <ul>
12# <li><a href="/entreNous">Restons entre nous</a></li>
13# <li><a href="/maxime/">Une maxime subtile</a></li>
14# <li><a href="/liens/utiles">Des liens utiles</a></li>
15# </ul>
16# '''
17# index.exposed = True
18#
19# def entreNous(self):
20# return '''
21# Cette page est produite à la racine du site.<br />
22# [<a href="/">Retour</a>]
23# '''
24# entreNous.exposed =True
25#
26# class MaximeDuJour(object):
27# def index(self):
28# return '''
29# <h3>Il existe 10 sortes de gens : ceux qui comprennent
30# le binaire, et les autres !</h3>
31# <p>[<a href="../">Retour</a>]</p>
32# '''
33# index.exposed = True
34#
35# class PageDeLiens(object):
36# def __init__(self):
37# self.extra = LiensSupplementaires()
38# def index(self):
39# return '''
40# <p>Page racine des liens (sans utilité réelle).</p>
41# <p>En fait, les liens <a href="utiles">sont plutôt ici</a></p>
42# '''
43# index.exposed = True
44#
45# def utiles(self):
46# # on peut procéder de manière ABSOLUE ou RELATIVE.
47# return '''
48# <p>Quelques liens utiles :</p>
49# <ul>
50# <li><a href="http://www.cherrypy.org">Site de CherryPy</a></li>
51# <li><a href="http://www.python.org">Site de Python</a></li>
52# </ul>
52# <p>D'autres liens utiles vous sont proposés
53# <a href="./extra/"> ici </a>.</p>
54# <p>[<a href="../">Retour</a>]</p>
55# '''
56# utiles.exposed = True
57#
58# class LiensSupplementaires(object):
59# def index(self):
60# return '''
61# <p>Encore quelques autres liens utiles :</p>
62# <ul>
63# <li><a href="http://pythomium.net">Le site de l'auteur</a></li>
64# <li><a href="http://ubuntu-fr.org">Ubuntu : le must</a></li>
65# </ul>
66# <p>[<a href="../">Retour à la page racine des liens</a>]</p>
67# '''
68# index.exposed = True
69# racine = HomePage()
70# cherrypy.quickstart(racine, config ="tutoriel.conf")
***********************
Comments