Python of JavaScript? Terwijl ontwikkelaars nog steeds discussiëren over welke van de twee er beter voor staat in de toekomst, is het maar al te duidelijk welke van de twee draait aan de front-end-kant van het web. JavaScript dus, en niets anders.

Ok, misschien niet niets anders, maar het is in elk geval een taal die maar al te graag gebruikt wordt als doel-taal om naar toe te converteren (Zie bijvoorbeeld TypeScript, Emscripten Cor en Cheerp). En Python's grote aantal volgers en rijkdom aan bestaande libraries maakt het een zeer goede kandidaat om zich te laten converteren of transpileren (het omzetten van de source code van de ene taal naar een ander met de zelfde mate van abstractie) naar JavaScript.

Hier zijn vier projecten die Python bruikbaar maken in de JavaScript wereld; eentje springt er met kop en schouders bovenuit doordat deze beide kanten op kan converteren.

1. Transcrypt

Deze gloednieuwe Python-naar-JavaScript transpiler maakt intrigerende beloftes over de kwaliteit van de code die het genereert. Het probeert de structuur van de originele Python code zo goed mogelijk te behouden, inclusief de verschillende inheritances en lambda's. De Python-source code kan ook calls maken naar objecten in de namespace van JavaScript. Als je probeert document.getElementById aan te roepen in Python, zal de geconverteerde code het echte document.getElementById gebruiken in JavaScript.

Als we kijken naar de documentatie zie je dat Transcrypt deze taken voor elkaar krijgt door gebruik te maken van de abstract syntax module van Cpython. Deze module maakt het mogelijk programmatische toegang te verlenen tot de manier hoe Python z'n eigen code part. Het project bevindt zich op dit moment nog in alfastadium.

Op de volgende pagina: Jiphy, Brython en RapydScript

2. Jiphy

Jiphy (wat staat voor JavaScript in, Python out) kan beide kanten op converteren. Bovendien kunnen beide talen door elkaar gebruikt worden voordat ze worden geconverteerd naar een van de twee doeltalen.

Op dit moment is het grootste nadeel van Jiphy dat het alleen maar kan werken met een subset van Python's functionaliteiten. Classen en standaard argumenten zijn nog niet beschikbaar, decorators en exceptions zijn overigens wel beschikbaar. Dit heeft voornamelijk te maken met de eis dat de regels van de broncode zo dicht mogelijk moeten liggen bij de broncode van de andere taal.

De ontwikkelaars houden wel de nieuwe features van ES6 in de gaten om late Python beter te kunnen ondersteunen.

3. Brython

Als WebAssembly ooit realiteit wordt, zou het mogelijk kunnen zijn dat wij kunnen ontwikkelen voor het web in welke taal we maar willen. De filosofie van Brython is, tenminste van Python 3, waarom wachten?

Brython implementeert een versie van Python 3 voor client-side webprogrammeurs via een JavaScript-bibliotheek die alle sleutelwoorden emuleert en de meeste standaardtermen van Python 3. In Python geschreven scripts kunnen direct in de webpagina worden omvat. Brython levert een high-level Python module interface (browser) voor het werken met de DOM binnen de browser, iets dat normaalgesproken wordt gedaan in JavaScript.

Brython houdt ook alle restricties in stand die van toepassing zijn op JavaScript in de browser. Er is bijvoorbeeld geen ondersteuning voor het werken met het lokale bestandssysteem.

4. RapydScript

Rapydscript belooft "Pythonische JavaScript die niet 'zuigt'." Dit project lijkt heel erg op CoffeeScript: Pak de in Python geschreven code, genereer JavaScript en kies het beste van beide werelden. In het geval van Python is het de netheid van de syntaxis; in het geval van JavaScript zijn het de anonieme functies, DOM manipulatie en de mogelijkheid bestaande JavaScript-bibliotheken als jQuery of Node.js core te gebruiken.