• # Pas vraiment

    Posté par (site web personnel) . En réponse au lien Lua, un langage incompris.. Évalué à 10. Dernière modification le 14 février 2021 à 09:25.

    Je suis l'auteur original du binding Lua-SDL2, je l'ai commencé globalement quand Lua 5.2 est sorti et donc j'ai rajouté de la compatibilité pour Lua 5.1 et pour Lua 5.3 et pour Lua 5.4.

    Les 3 développeurs (parce que Lua n'accepte pas les patchs ni les contributeurs externes) cassent l'API C et l'API Lua à chaque version sans aucun guide précis de migration et comme il n'y a pas de SCM public, vous perdez un temps fou à la sortie d'une nouvelle version pour mettre à jour vos modules et rajouter une trentaine de #ifdef de compatibilité. D'ailleurs, c'est bien pour ça que même les modules connus comme LuaSocket étaient pendant très longtemps en retard sur les nouvelles versions et de manière générale c'est souvent le cas pour les autres modules. Malgré cela beaucoup continuent d'utiliser ce langage est finissent emprisonnés par ce problème. La solution la plus adéquate : embarquer une version du langage dans votre logiciel puis fournir la documentation de cette version précise et espérer que personne ne s'en plaigne. Exemple : löve est toujours basé sur du Lua 5.1 (parce que LuaJIT est encore sur du 5.1)

    J'ai beaucoup aimé Lua au début mais avec l'émergence d'ECMAScript 6 et versions ultérieures qui font Javascript un bien meilleur langage qu'auparavant; je ne comprends pas l'intérêt de continuer un langage qui n'offre plus grand chose à part des inconvénients majeurs.

    À part ça, il y a beaucoup de choses qui sont bizarres et sont choisies arbitrairement :

    • La syntaxe du non-égal est ~=, dans la plupart des cas on considère ça comme « approximativement égal ».
    • Les développeurs sont fortement contre l'ajout du mot clé continue, alors ils ont rajouté le terrible goto. Par contre break existe.
    • Les tableaux commencent à 1. Oui il est possible d'utiliser un tableau avec un indice de 0, voire -1 mais l'API Lua ne fonctionnera pas avec.
    • Mélanger les structures clé-valeur avec les tableau dans la même syntaxe est une bonne chose sur le papier, mais dans la réalité c'est plutôt merdique (voir # et tableaux à trous).
    • Pas d'expression régulière, mais un format maison bien plus limité.
    • Pas de fonctionnalité modernes comme le pattern matching ni de switch case amélioré.
    • Les chaînes sont des « objets », mais pas les tableaux.

    Je ne peux que conseiller de bien réfléchir avant d'utiliser Lua, à moins que perdre votre temps ou utiliser 3 versions de retard ne vous rebute pas.

    AI is a mental disorder