Python: Diferență între versiuni

De la YO3ITI
Sari la navigare Sari la căutare
Fără descriere a modificării
 
(Nu s-au afișat 37 de versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
Python este un limbaj [https://en.wikipedia.org/wiki/Dynamic_programming_language dinamic] [https://en.wikipedia.org/wiki/Interpreted_language interpretat], creat pe la începutul anilor '90. Nu este foarte rapid dar e de o eficiență ieșită din comun: la un număr egal de linii de cod faci mult mai multe în Python decât în alte limbaje de programare. Este un limbaj prietenos, dotat cu un sistem de ''garbage collection'' excelent astfel că nu solicită programatorul obligându-l la interacțiunea directă cu memoria (nu necesită gestiunea manuală a memoriei). Este [https://ro.wikipedia.org/wiki/Programare_procedurală procedural], [https://ro.wikipedia.org/wiki/Programare_funcțională funcțional], [https://ro.wikipedia.org/wiki/Programare_orientată_pe_obiecte orientat obiect], multi-platformă.
Încurajez orice radioamator să încerce să facă măcar o aplicație în Python, cât de simplă. Este un limbaj de nivel înalt, extrem de ușor de învățat și extrem de prietenos. Ceea ce îl face foarte atractiv este imensa și directa sa aplicabilitate în activitățile de zi cu zi: este foarte ușor să scrii rapid o aplicație relativ complexă, care să-ți satisfacă imediat nevoia de automatizare.
__TOC__
Python este un limbaj dinamic,<ref name="limbaj_dinamic">Un limbaj de programare este ''dinamic'' dacă, la rulare, execută activități pe care limbajele ''statice'' le execută în timpul compilării. De pildă adăugarea unui modul sau extensia unui program la rulare reprezintă activități tipice unui limbaj dinamic. Din acest motiv, limbajele dinamice solicită mult mai mult resursele pe care le au la dispoziție deoarece depind de execuția simultană a unui subsistem de rulare a procedurilor. Spre deosebire de limbajele statice (de ex.: C, C++ etc), limbajele dinamice sunt caracterizate prin performanțe inferioare. Mai multe informații [https://en.wikipedia.org/wiki/Dynamic_programming_language aici].</ref> interpretat<ref name="limbaj_interpretat">Un limbaj interpretat este un tip de limbaj de programare pentru care majoritatea sau toate instrucțiunile se execută direct și liber fără a necesita compilare în ''cod-mașină'' (ex. C, C++ etc). Mai multe informații [https://en.wikipedia.org/wiki/Interpreted_language aici]</ref>, creat pe la începutul anilor '90. Nu este foarte rapid dar e de o eficiență ieșită din comun: la un număr egal de linii de cod faci mult mai multe în Python decât în alte limbaje de programare. Este un limbaj prietenos, dotat cu un sistem de ''garbage collection''<ref name="gc">O formă de sistem de gestiune automată a memoriei. Mai multe informații [https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) aici].</ref> excelent astfel că nu solicită programatorul obligându-l la interacțiunea directă cu memoria (nu necesită gestiunea manuală a memoriei). Este [https://ro.wikipedia.org/wiki/Programare_procedurală procedural], [https://ro.wikipedia.org/wiki/Programare_funcțională funcțional], [https://ro.wikipedia.org/wiki/Programare_orientată_pe_obiecte orientat obiect], multi-platformă și foarte popular<ref name="tiobe">Pe locul 3 în clasamentul [https://www.tiobe.com/tiobe-index/ TIOBE], cu un scor de 9,7% (după C, care a împlinit venerabila vârstă de 47 de ani).</ref>.


Unul dintre cele mai importante atuuri este comunitatea programatorilor Python, un grup de oameni extrem de diverși și foarte primitori. Calitatea comunității programatorilor este esențială pentru succesul efortului de învățare și adoptare a unui limbaj de programare. O consecință este numărul uriaș de pachete și module care pot fi descărcate și utilizate gratis. Toate aceste trăsături îl fac ideal pentru a fi utilizat în proiecte de radioamatorism.
Unul dintre cele mai importante atuuri este comunitatea programatorilor Python, un grup de oameni extrem de diverși și foarte primitori. Calitatea comunității programatorilor este esențială pentru succesul efortului de învățare și adoptare a unui limbaj de programare. O consecință este numărul uriaș de pachete și module care pot fi descărcate și utilizate gratis. Toate aceste trăsături îl fac ideal pentru a fi utilizat în proiecte de radioamatorism. Alături de [https://ro.wikipedia.org/wiki/R_(limbaj_de_programare) R], Python este utilizat extrem de mult în cercetare și în alte proiecte științifice<ref name="r_vs_python">[https://www.guru99.com/r-vs-python.html R Vs Python: What’s the Difference?]</ref>. Există chiar o [http://phillipmfeldman.org/Python/Advantages_of_Python_Over_Matlab.html comparație intereseantă] între Python și Matlab. ;)
==Utile==
Pentru variate activități este necesară actualizarea pip. Pe windows se face cu:
<syntaxhighlight lang="console">
C:\Windows\System32>python.exe -m pip install --upgrade pip
</syntaxhighlight>


Mai jos e o listă de mici proiecte Python realizate de subsemnatul pentru și în diferite ocazii. Cele mai complexe sunt oferite ca pachete care pot fi descărcate de pe repozitoriul meu de pe GitHub.
Mai jos e o listă de mici proiecte Python realizate de subsemnatul pentru și în diferite ocazii. Cele mai complexe sunt oferite ca pachete care pot fi descărcate de pe repozitoriul meu de pe GitHub.
==Medii de dezvoltare virtuale personalizate, în Visual Studio Code==
O problemă de care m-am lovit la utilizarea Visual Studio Code este absența bibliotecilor în mediul de lucru selectat. Mesajul de eroare este:
<syntaxhighlight lang="console">
user@system % ModuleNotFoundError: No module named 'modul'
</syntaxhighlight>
Soluția mai complicată este modificarea mediului de dezvoltare global, adică cel instalat pe computer cu distribuția de Python utilizată. Dar acest lucru devine și mai complicat dacă, precum în cazul meu, se folosește un gestionar de aplicații gen ''homebrew''. În aceste situații cea mai simplă și elegantă soluție este configurarea în Visual Studio Code a mediului de dezvoltare în fiecare proiect Python. Această metodă este asemănătoare modului în care se configurează PyCharm.
Pașii necesari sunt:
Crearea unui mediu virtual de dezvoltare; în terminalul VSC se scrie:
<syntaxhighlight lang="console">
user@system % python3.11 -m venv teste
</syntaxhighlight>
Unde "test" este numele mediului virtual de dezvoltare
Apoi se activează mediul virtual de dezvoltare
<syntaxhighlight lang="console">
user@system % source teste/bin/activate
</syntaxhighlight>
Unde <code>teste/bin/activate</code> este calea către fișierul de activare care a fost creat odată cu mediul virtual de dezvoltare
De aici, instalarea librăriilor se face extrem de simplu cu pip. De exemplu:
<syntaxhighlight lang="console">
(teste) user@system % pip3 install numpy
</syntaxhighlight>
etc.
Este indicat să se actualizeze pip cu comanda:
<syntaxhighlight lang="console">
(teste) user@system % pip3 install --upgrade pip
</syntaxhighlight>
Pentru părăsirea mediului virtual se scrie:
<syntaxhighlight lang="console">
(teste) user@system % deactivate
</syntaxhighlight>
Mai multe informații [https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv aici].
==Exemple==
==Exemple==
* [[Analiza coerenței a două semnale]]
* [[Analiza coerenței a două semnale]]
* [[WPASupplicant status]]
* [[Citire senzor tmp102 pentru driver de termostatare]]
* [[Script pentru configurarea SA818]] din nodurile mobile RoLink
* [[Prerechizite Python pentru comunicarea cu Adalm Pluto]]
* [[Adalm Pluto și Python]]
==Note==
==Note==
<references />
<references />
==Cărți recomandate==
==Cărți recomandate==
Recomandările de mai jos sunt făcute exclusiv pe baza experienței personale.
===Cinci stele ;)===
===Cinci stele ;)===
* [https://www.goodreads.com/book/show/23241059-python-crash-course Python Crash Course: A Hands-On, Project-Based Introduction to Programming] – Eric Matthes
* [https://www.goodreads.com/book/show/23241059-python-crash-course Python Crash Course: A Hands-On, Project-Based Introduction to Programming] – Eric Matthes
Linia 22: Linia 76:
==Link-uri externe==
==Link-uri externe==
* [https://python4astronomers.github.io Practical Python for Astronomers]
* [https://python4astronomers.github.io Practical Python for Astronomers]
* [http://phillipmfeldman.org/Python/Advantages_of_Python_Over_Matlab.html Eight Advantages of Python Over Matlab]
* [https://docs.scipy.org/doc/scipy/tutorial/general.html SciPy] — SciPy este o colecție de algoritmi și funcții matematice construite pe fundația creată în Python de [https://numpy.org NumPy]. SciPy oferă funcționalități DSP similare MATLAB, IDL, Octave, R-Lab și SciLab.

Versiunea curentă din 19 martie 2025 20:11

Încurajez orice radioamator să încerce să facă măcar o aplicație în Python, cât de simplă. Este un limbaj de nivel înalt, extrem de ușor de învățat și extrem de prietenos. Ceea ce îl face foarte atractiv este imensa și directa sa aplicabilitate în activitățile de zi cu zi: este foarte ușor să scrii rapid o aplicație relativ complexă, care să-ți satisfacă imediat nevoia de automatizare.

Python este un limbaj dinamic,[1] interpretat[2], creat pe la începutul anilor '90. Nu este foarte rapid dar e de o eficiență ieșită din comun: la un număr egal de linii de cod faci mult mai multe în Python decât în alte limbaje de programare. Este un limbaj prietenos, dotat cu un sistem de garbage collection[3] excelent astfel că nu solicită programatorul obligându-l la interacțiunea directă cu memoria (nu necesită gestiunea manuală a memoriei). Este procedural, funcțional, orientat obiect, multi-platformă și foarte popular[4].

Unul dintre cele mai importante atuuri este comunitatea programatorilor Python, un grup de oameni extrem de diverși și foarte primitori. Calitatea comunității programatorilor este esențială pentru succesul efortului de învățare și adoptare a unui limbaj de programare. O consecință este numărul uriaș de pachete și module care pot fi descărcate și utilizate gratis. Toate aceste trăsături îl fac ideal pentru a fi utilizat în proiecte de radioamatorism. Alături de R, Python este utilizat extrem de mult în cercetare și în alte proiecte științifice[5]. Există chiar o comparație intereseantă între Python și Matlab. ;)

Utile

Pentru variate activități este necesară actualizarea pip. Pe windows se face cu:

C:\Windows\System32>python.exe -m pip install --upgrade pip

Mai jos e o listă de mici proiecte Python realizate de subsemnatul pentru și în diferite ocazii. Cele mai complexe sunt oferite ca pachete care pot fi descărcate de pe repozitoriul meu de pe GitHub.

Medii de dezvoltare virtuale personalizate, în Visual Studio Code

O problemă de care m-am lovit la utilizarea Visual Studio Code este absența bibliotecilor în mediul de lucru selectat. Mesajul de eroare este:

user@system % ModuleNotFoundError: No module named 'modul'

Soluția mai complicată este modificarea mediului de dezvoltare global, adică cel instalat pe computer cu distribuția de Python utilizată. Dar acest lucru devine și mai complicat dacă, precum în cazul meu, se folosește un gestionar de aplicații gen homebrew. În aceste situații cea mai simplă și elegantă soluție este configurarea în Visual Studio Code a mediului de dezvoltare în fiecare proiect Python. Această metodă este asemănătoare modului în care se configurează PyCharm.

Pașii necesari sunt: Crearea unui mediu virtual de dezvoltare; în terminalul VSC se scrie:

user@system % python3.11 -m venv teste

Unde "test" este numele mediului virtual de dezvoltare

Apoi se activează mediul virtual de dezvoltare

user@system % source teste/bin/activate

Unde teste/bin/activate este calea către fișierul de activare care a fost creat odată cu mediul virtual de dezvoltare

De aici, instalarea librăriilor se face extrem de simplu cu pip. De exemplu:

(teste) user@system % pip3 install numpy

etc.

Este indicat să se actualizeze pip cu comanda:

(teste) user@system % pip3 install --upgrade pip

Pentru părăsirea mediului virtual se scrie:

(teste) user@system % deactivate

Mai multe informații aici.

Exemple

Note

  1. Un limbaj de programare este dinamic dacă, la rulare, execută activități pe care limbajele statice le execută în timpul compilării. De pildă adăugarea unui modul sau extensia unui program la rulare reprezintă activități tipice unui limbaj dinamic. Din acest motiv, limbajele dinamice solicită mult mai mult resursele pe care le au la dispoziție deoarece depind de execuția simultană a unui subsistem de rulare a procedurilor. Spre deosebire de limbajele statice (de ex.: C, C++ etc), limbajele dinamice sunt caracterizate prin performanțe inferioare. Mai multe informații aici.
  2. Un limbaj interpretat este un tip de limbaj de programare pentru care majoritatea sau toate instrucțiunile se execută direct și liber fără a necesita compilare în cod-mașină (ex. C, C++ etc). Mai multe informații aici
  3. O formă de sistem de gestiune automată a memoriei. Mai multe informații aici.
  4. Pe locul 3 în clasamentul TIOBE, cu un scor de 9,7% (după C, care a împlinit venerabila vârstă de 47 de ani).
  5. R Vs Python: What’s the Difference?

Cărți recomandate

Recomandările de mai jos sunt făcute exclusiv pe baza experienței personale.

Cinci stele ;)

Ok