Python: batteries included

hitesh-choudhary-D9Zow2REm8U-unsplash

Python is afkomstig uit de academische wereld, maar wordt momenteel voor veel meer doelen gebruikt. Volgens de TIOBE-index is Python de populairste programmeertaal na Java, C en C++.

Python is een geïnterpreteerde programmeertaal. Programmacode compileert naar bytecode, die in een eenvoudige virtuele machine wordt uitgevoerd. De taal gebruikt dynamische typering (zoals JavaScript en PHP) en heeft net als Java automatisch geheugenbeheer. Het is standaard aanwezig op alle Linux-distributies en macOS, en is onder Windows eenvoudig te installeren.

Het doel van de Python syntax is om zo leesbaar mogelijk te zijn, door het zoveel mogelijk vermijden van leestekens zoals haakjes en accolades. Soms lezen stukken Python bijna als pseudocode! Eén van de meest in het oog springende eigenschappen is het feit dat het inspringen van code de enige manier is om blokken code af te bakenen. Waar je in de meeste andere talen accolades gebruikt om een blok code aan te geven, gebeurt dit in Python door een control statement met : en inspringen:

def ask_for_name():
    name = input('Wat is je naam? ')
    if name != '':
        print('Hallo %s,' % name)
        print('hoe gaat het?')
    else:
        print('Geen invoer gegeven')

ask_for_name()

Sommigen vinden dit een reden om Python niet te gebruiken. Naar mijn mening heb je er in de praktijk geen last, en juist profijt van.

Voordelen Python

Verdere eigenschappen van de taal:

  • eenvoudig klassesysteem met multiple inheritance. Het werken met klassen is niet verplicht zoals in Java.
  • een aantal zaken die we van Java kennen: exceptions, annotaties, lamda’s;
  • een aantal zaken die we van C++ kennen: operator overloading en de genoemde multiple inheritance;
  • standaard datatypes: lijsten, sets, dictionaries (maps) en tuples (niet-wijzigbare lijsten). Tuples zijn bijvoorbeeld handig voor het teruggeven van meerdere returnwaarden vanuit een functie.

Verder beschikt het over een uitgebreide standaardbibliotheek. Daarnaast zijn er veel “third-party” extensies (packages), met daarbij ook veel wrappers voor bestaande C en C++-bibliotheken.

Dit alles maakt Python bij uitstek geschikt voor het integreren van componenten die in verschillende programmeertalen geschreven zijn. Ook wordt het gebruikt voor het kunnen schrijven van plugins, bijvoorbeeld in Sublime Text. Ook als backend voor web-applicaties is het prima inzetbaar. Er is veel keuze uit web-frameworks, object-relational mappers, templating engines, etc. Python wordt ook veel gebruikt in artificial intelligence; het is de standaardprogrammeertaal voor de Raspberry Pi.

Nadelen Python

  • Doordat de taal geen verplichte type-aanduidingen gebruikt, is het onderhoud van grotere applicaties lastiger. In nieuwere versies kan je optioneel type-hints geven. Die controleert de   interpreter niet, maar kunnen je wel helpen bij het geven van suggesties.
  • De taal rekent niet erg snel. Vanwege architecturele keuzes schaalt het bovendien niet goed met threads. In de praktijk wordt er daarom overwegend met processen geschaald.
  • De overstap van Python 2 naar Python 3 is niet erg soepel verlopen, vanwege het gebrek aan backwards compatibility.

Veelgebruikte tooling voor het ontwikkelen in Python:

  • IntelliJ met de Python plugin (of PyCharm) biedt autocompletion, automatische imports en controleren van types (bijv. heeft een object een bepaalde methode of eigenschap?).
  • Voor Eclipse-gebruikers is er PyDev.
  • Visual Studio Code heeft een goede Python plugin. Deze wordt inmiddels door Microsoft onderhouden.

Django: The Web framework for perfectionists with deadlines

Python en het Django web framework is een combinatie die in de praktijk veel voorkomt. Met Django kun je in zeer korte tijd web-based applicaties bouwen. Dit kunnen zowel server-side gerenderde applicaties op basis van templates zijn, als REST backends voor bijvoorbeeld single-page JavaScript-apps.

Django vult Python aan met het volgende:

  • een model/view/template framework: opslag en structurering van data in models, manipulatie en transformatie van de data in views en presentatie van de data in templates;
  • ingebouwde admin-interface voor het uitvoeren van basale CRUD-operaties op de modellen;
  • standaard aanwezig authenticatie van gebruikers en het toekennen van rechten;
  • object-relationele mapper met ondersteuning voor een groot aantal databases, zowel open-source (MySQL als PostgreSQL) als commercieel (Oracle);
  • schemamigraties (ALTER TABLE): in veel gevallen kan Django deze automatisch voor je genereren;
  • uitstekende documentatie en goed leesbare broncode.

Django is redelijk “opinionated”: het schrijft een standaard-layout voor models, views en templates voor. De ORM en templating engines zijn in Django ook niet vervangbaar door andere implementaties. De kracht is juist dat elke Django-applicatie op dezelfde manier werkt.

Net als bij Python zijn er voor Django vele modules van derden die functionaliteit toevoegen:

  • Het Django REST framework tovert Django om tot een REST backend;
  • Met de Django SAML2 module kan je de authenticatie in je applicatie uitbesteden (single-sign on).

We zien bij onze klanten meerdere toepassingen van de taal. Het wordt gebruikt om webportalen te bouwen en om koppelingen tussen meerdere systemen te maken. Daarnaast is het mogelijk om snel proof of concepts te maken met weinig code.

Voorbeelden van websites op basis van Django (en dus ook Python):

  • Instagram
  • Disqus
  • Pinterest

Onderwerpen

Delen
Share on linkedin
Share on email
Andere items uit onze kennisbank:
How to
De voordelen van co-development

Wat zijn de voordelen van ontwikkelen door middel van co-development? Als het om softwareontwikkeling gaat wil je misschien niet alles uit handen geven. Zeker niet als je zelf ook goede ontwikkelaars in huis hebt. Anderzijds mis je soms net de juiste expertise of capaciteit om een project optimaal uit te voeren. Hoe mooi zou het zijn als jouw eigen mensen optimaal worden ingezet en daarbij ook nog hun kennisniveau kunnen verhogen? 

Verder lezen »
Whitepaper
SAST Tools vergelijking

SAST tools vergelijken? Download ons whitepaper! Om een softwareapplicatie te scannen op security kwetsbaarheden middels een security scan kan gebruik gemaakt worden van zo geheten

Verder lezen »
Software developer (senior)
Ben jij een softwareontwikkelaar pur sang en wil je écht de kans krijgen om verder te groeien in kennis en functie? Haal jij energie uit het delen van jouw expertise, het coachen van collega’s en wil jij het verschil maken voor onze opdrachtgevers? Dan ben je bij ons aan het goede adres!
Java developer (junior)
Is software development helemaal jouw ding, ben je net klaar met je IT-opleiding of minder dan 3 jaar aan het werk? Dan zijn wij opzoek naar jou. Carthago biedt uitstekende arbeidsvoorwaarden en veel ruimte om te leren. Wat nog meer? Ontdek het in deze vacature!
Software developer (medior)
Krijg je geen genoeg van nieuwe softwaretechnieken en wil je hard groeien als professional? Zoek je afwisseling, uitdaging en een gezellige organisatie? Dan zoeken wij jou! Carthago biedt uitstekende arbeidsvoorwaarden en veel ruimte om te leren. Wat nog meer? Ontdek het in deze vacature!
Traineeship Fullstack developer
Is software development helemaal jouw ding, ben je net klaar met je IT-opleiding of minder dan 2 jaar aan het werk? Start dan met onze Traineeship. Je wordt on-the-job getraind en na één jaar mag jij jezelf Fullstack Developer noemen!
Fullstack developer
Krijg je geen genoeg van nieuwe softwaretechnieken en wil je hard groeien als professional? Zoek je afwisseling, uitdaging en een gezellige organisatie? Dan zoeken wij jou! Carthago biedt uitstekende arbeidsvoorwaarden en veel ruimte om te leren. Wat nog meer? Ontdek het in deze vacature!

Werken bij Carthago ICT

Benieuwd wat Carthago voor jou kan betekenen?

Carthago ICT maakt gebruik van cookies om je ervaring te verbeteren. We gaan er van uit dat je hiermee akkoord gaat. Lees meer.