Software-update: Python 3.8.18/ 3.9.18 / 3.10.13 / 3.11.5

Python logo (75 pix) Python is een objectgeoriënteerde programmeertaal die kan worden gebruikt om eenvoudige tot complexe, platformonafhankelijke applicaties te ontwikkelen. Het is in de jaren negentig ontworpen door Guido van Rossum, die destijds in Amsterdam voor het CWI werkte. Guido was als BDFL betrokken bij de ontwikkeling van Python. Hij heeft daarnaast voor Dropbox gewerkt, ging daarna met pensioen en toen dat niet echt beviel, ging hij aan de slag bij Microsoft. Er zijn nu updates voor Python 3.8, 3.9, 3.10 en 3.11 verschenen, en ook de eerste release candidate van versie 3.12, die allemaal een verzameling van fouten en beveiligingsproblemen moeten verhelpen.

Python 3.11.5, 3.10.13, 3.9.18, and 3.8.18 is now available

There’s security content in the releases, let’s dive right in.

  • gh-108310: Fixed an issue where instances of ssl.SSLSocket were vulnerable to a bypass of the TLS handshake and included protections (like certificate verification) and treating sent unencrypted data as if it were post-handshake TLS encrypted data. Security issue reported as CVE-2023-40217 1.

Upgrading is highly recommended to all users of affected versions.

Python

Versienummer 3.8.18/ 3.9.18 / 3.10.13 / 3.1
Releasestatus Final
Besturingssystemen Windows 7, Linux, BSD, macOS, Solaris, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website Python
Download https://www.python.org/downloads/
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Bart van Klaveren

Downloads en Best Buy Guide

27-08-2023 • 08:43

19

Submitter: Nozmordre

Bron: Python

Reacties (19)

19
19
17
2
0
1
Wijzig sortering
Is er een reden om in Python ipv. C te programmeren? Ga zelf vaak tot de laatste bit qua efficiëntie, lukt Python dat ook? En werkt het met een interpreter of met een compiler?
Resumerend van de reacties hierboven en eigen ervaring:

C / C++
+ Resulteert in kleine executable met weinig gebruik van ROM en RAM
+ Executable is snel, vergeleken met andere programmeertalen
- Moet gecompileerd worden, altijd een extra handeling voor je het kan runnen
- Is na compilatie alleen bruikbaar voor 1 CPU-familie. (x86, ARM, MIPS, etc)
- Er zijn weinig standaard libraries. Je moet vaak het wiel opnieuw uitvinden
- Programma code (wat jij typed) is vaak groot (door gebrek aan bovenstaande libraries)

Python
+ Programma code is compact want de taal heeft een rijke semantiek en er zijn veel libraries beschikbaar
++ Zei ik al dat er veel libraries zijn? Je hoeft zelden zelf basiscode te schrijven, vaak kun je kiezen uit meerdere libraries. Er is een centraal registratiesysteem voor libraries. Dependencies zijn goed geregeld.
+ Wijzigen van programma is eenvoudig omdat je niet hoeft te compileren. Je maakt de wijziging, en dat is het. Wijzigen kan zelfs terwijl je aan het debuggen bent.
+ Platform onafhankelijk. Je maakt 1 programma en iedereen kan het op elk cpu-platform runnen.
+/- Iedereen kan je code inzien. Slecht voor commerciële toepassing, perfect voor open source.
- Gebruikt relatief veel RAM. Python programma is klein, maar de interpreter draait op achtergrond en geeft geheugen pas laat vrij.
- Opstarten duurt langer. Eerst moet de interpreter geladen worden en alle included libraries. Geen probleem op je 2GHz PC, wel op een wasmachine of ander klein apparaat.

Beide talen hebben hun bestaansrecht en keuze is afhankelijk van je toepassing.
Goed om ook nog C# te noemen wat een beetje tussen deze twee talen in zit.
Toch belangrijk om ook even te melden dat er wel degelijk compilers zijn voor Python.
Je krijgt dan dus effectief een executable en je kan het draaien op computers zonder Python geinstalleerd.
bvb
- https://nuitka.net/
- https://cython.org/
Micropython en CircuitPython draaien prima op microcontrollers, kijk maar eens naar de ESP32 reeks of de rpi2040 chipset.
Als je echt voor top efficiëntie gaat, dan zal C steeds het beste naar boven komen. Al is het maar omdat dit precompiled is, en python telkens on the fly moet gecompileerd worden.

Alles hangt een beetje af van je doel.

Als je jouw C programma gecompileerd hebt, dan is het voor bvb 64bit ARM gecompileerd of juist x86 oid.
Bij Pyhton moet je daar geen rekening mee houden, de interpreter zorgt voor het juiste platform. Dat maakt het heel portable.

Snel aanpassen en testen bij development is bij Python dus ook vele malen eenvoudiger dan bij C gezien je gewoon de code aanpast en je script draait. Je kan zelfs in minder dan 10 seconden een nieuw script draaiende hebben. (al laat die alleen een groet aan de wereld zien)

Ikzelf gebruik python ook vaak als alternatief voor bash scripts. Gewoon snel wat door bestanden gaan en er snel dingetjes mee doen. Je kan in principe Python wel gebruiken om bvb een REST API mee te bouwen, maar daar heb ik minder ervaring mee. Ik grijp dan persoonlijk naar nodejs (of bun - om wat mee te spelen).

Als je richting AI gaat, dan zal je vaker Python tegenkomen. Het interpreteren van het script is verwaarloosbaar tegenover de volledige runtime en het is nagenoeg de standaard geworden om dan Python te gebruiken.

En tenslotte is Python vaak iets compacter naar mijn mening. Er past net meer op je scherm omdat je het vaak in minder regels kan schrijven.
Onze data analysten gebruiken het veel op werk, het is een interpeted language. Maar toen we met ons dataplatform begonnen hebben we een aantal talen/frameworks geprobeerd en kwam eigenlijk Python icm Pandas het beste uit de bus. En dan hebben we het wel echt over serieuze datasets.
In ons geval waren het een combinatie van o.a. resource gebruik, verwerkingsnelheid, gemak van gebruik (ik heb veel data analysten gezien in ons team maar weinig konden echt goed programmeren ipv scripten) wat ons uiteindelijk heeft doen besluiten om Python in te zetten.

Ik zeg niet dat we nu nog dezelfde keuze zouden maken, maar voor ons specifieke doel is Python echt geen verkeerde keuze. Grappig genoeg is het Panda's framework ook in Java gebouwd wat we voor de rest voor zoon beetje alles gebruiken en hierin was het niet vooruit te branden in de vorm van tijd en was het resource gebruik ook veel hoger.
Veel Python libraries zijn in C geschreven. Puur interpreted Python is factoren trager dan compiled C / C++ maar de taal is compacter en daardoor leesbaarder dan C / C++ waar je alles moet uitspellen. Verder is de library support en de toegang daartoe (i.e. package manager) indrukwekkend; iets waar ze in C++ maar weinig aandacht aanbesteden.
Ah ja dat deel was ik even vergeten, moet zeggen dat veel van de echte details me ontvlogen zijn. Al zie ik helaas nog best vaak voorbij komen dat dingen erg belabberd uitgewerkt worden waardoor de taal/frameworks nog zo mooi mogen zijn dat het niet vooruit te branden is of een resource gebruik van hier tot gunter. Overigens kan de taal daar niets aan doen
Ik zie persoonlijk python meer als een proof of concept of onetime use taal.

Bv als ik datasets moet uitlezen manipuleren en combineren en het iedere keer een beetje anders kwa input en beetje anders kwa output is een interpreted language met vele bestaande libraries zeer nuttig en handig !

Als je wilt starten is pycharm een leuke ide de community edition is gratis.
Ander punt is op werklaptops is het soms niet mogelijk om zomaar exes te runnen…

Disclaimer: je kunt uiteraard ook sites mee bouwen bv met flask, of een soap server etc… en zoveel mensen zoveel use casen.

[Reactie gewijzigd door Icekiller2k6 op 23 juli 2024 02:08]

Joah, ik denk dat een project als Ansible het niet helemaal met jouw stelling eens is. :D
Maar ook voor management scripts is het ideaal. En het grote voordeel van Python is dat je het niet hoeft te compileren. Het is dus veel simpeler: Schrijven en gaan.
Overigens kun je in Python ook C-gecompileerde modules gebruiken voor de momenten dat snelheid echt key is en/of Python zelf tekort schiet.

[Reactie gewijzigd door Room42 op 23 juli 2024 02:08]

Zoals anderen ook al hebben geschreven, er zijn dingen waar Python erg goed in is en dingen waar het niet goed in is.

Als de code eenmaal draait wint het geen snelheidsprijzen dus je ziet het weinig in bepaalde toepassingen waar performance extreem belangrijk is. Aan de andere kant wint Python waarschijnlijk wel snelheidsprijzen als je een wedstrijd houdt van helemaal niets naar een betrekkelijk complexe applicatie omdat het snel ontwikkeld. Het is populair in prototyping.

Verder is het Django web framework helemaal rondom Python gebouwd en Django zie je veel in grotere web toepassingen. Wikipedia schrijft “Some well-known sites that use Django include Instagram, Mozilla, Disqus, Bitbucket, Nextdoor and Clubhouse.”

[Reactie gewijzigd door Maurits van Baerle op 23 juli 2024 02:08]

Ik ben totaal geen programmeur maar ik heb python al regelmatig gebruikt voor kleine projecten van mezelf. De grote kracht voor mij is dat het makkelijk te leren en te begrijpen is en dat er een heel pak library's bestaan waarmee je met een beperkt aantal lijnen code al mooie dingen mee kan doen.

Op het werk wordt python ook veel gebruikt met het uitlezen van databronnen en het formatteren van data.
Programmeren kan in elke taal, zelfs in het Nederlands. Iedere taal heeft voordelen en nadelen. Je noemt zelf al het onderscheid tussen compileren of interpreteren. Daar zijn ook tussenvormen van. Tel daar bij dat er ook vertaal-mogelijkheden zijn. C++ werd in het begin eerst naar c gecompileerd en daarna verder.

En je vraagt naar efficiëntie. Welke efficiëntie wil je? Snel schrijven, snel verspreiden, snel over meerdere verschillende systemen beschikbaar maken, snel draaien, weinig geheugen gebruiken, weinig cpu gebruiken, er is zo veel verschillende efficiëntie.
Kan iemand me uitleggen waarom men zich niet houdt aan 1 versie? Zoals gewoon de laatste versie? Tijdens het installeren ervan op mijn macos werd het op een gegeven moment een grote spaghetti bende omdat de softwares verschillende versies wilden zien. Heb met veel moeite eindelijk 3.11.4 erop gekregen na een avondje stuntelen 8)7
Ik gok omdat dit een security update is en ze die wellicht aan verschillende Linux distro's willen aanbieden zonder dat daarvoor een grote versiesprong nodig is? (meestal hangen die distro's met een package op een bepaalde versie met daarna nog kleine updates)

Nogmaals, gokje :)

[Reactie gewijzigd door vickypollard op 23 juli 2024 02:08]

De grotere programma's hebben vaak ook veel dependencies. Deze dependenties zijn dan nog niet overgezet naar de laatste Python versie, dus blijft jouw programma ook op die versie hangen, en dan is het wel zo prettig als de security issues gefixt zijn in jouw versie.

Daarnaast raad ik je aan om een versie\dependency management tool te gebruiken, b.v. pyenv of https://python-poetry.org, dan heb je nooit meer last van die spaghetti bende.
Er zullen in de praktijk best veel verschillende Python versies in productie gebruikt worden.

Eén van onze projecten draait bij een soort managed hosting provider en die draaien een LTS versie van Ubuntu. Aangezien Ubuntu geen major updates van Python doet binnen hun LTS versie draait dat project nu dus op Python 3.10 (zeg ik even uit mijn hoofd). Bij de volgende versie springt Ubuntu waarschijnlijk direct naar Python 3.12.

Zo zul je dus een hoop projecten in productie tegen komen die op oudere versies van Python draaien (waarschijnlijk zelfs juíst in productie omdat productie meestal conservatiever is). Dan heeft het voor het Python project dus ook zin om security updates voor een paar versies tegelijk uit te brengen.

Dat is overigens ook niet zo uitzonderlijk, bij Postgres zie je hetzelfde ook.
Oeps. Gepost onder verkeerde thread.

[Reactie gewijzigd door carlo op 23 juli 2024 02:08]

Op dit item kan niet meer gereageerd worden.