Menu

pythonPourquoiComment

Imbaud

Python: pourquoi, comment.

Projet de conférence teragull.

Objet
Aider développeurs et décideurs à déterminer dans quelle mesure
python peut les assister dans leur jungle quotidienne.

public
Développeurs, managers.

niveau
Pas de connaissance préalable python. Bonne connaissance des
problèmes de développement, de manipulation de données, etc.

Quoi

  • Langage haut niveau, généraliste, interprété.
  • multi paradigme: script, objet, fonctionnel.
  • simplicité
  • embarquable, extensible.

Ecosystème

  • Langage
  • Doc
  • Interpréteur(s)
  • lib standard
  • wrapping C.
  • libs non standard.
  • communeauté.

Forces:

  • courbe d'apprentissage
  • simplicité/régularité.
  • souplesse: héritage multiple et/ou duck typing.
  • système d'exceptions.
  • modèle mémoire.
  • introspection.
  • structures de données: listes, sets, dicts.
  • expressivité.

Erreurs, faiblesses:

  • pas de compil ==> erreurs de syntaxe en exploitation.
  • gil
  • 2.x/3.x
  • simplicité illusoire.
  • parfois plus facile de développer que de réutiliser.

En débat

  • indentation
  • typage fort ==> délimiteurs.

Addiction

Argument d'autorité: ceux qui l'ont essayé l'ont adopté.

  • en langage principal
  • en complément de leur langage principal
  • en remplacement d'outils ad hoc ou généraux: sed, grep, awk, join,
    merge, ...
  • et deviennent prosélytes.

Viralité

  • J'apprend le langage.
  • Je l'utilise lors d'une première mission.
  • Je change de mission (ou de poste, ou de projet)
  • Je repère les nouveaux usages possibles.
  • Je développe les libs permettant le couplage
  • Je mène mon projet à bien.
  • Je publie les libs de couplage.

Modèles économiques

Quel intérêt de développer 10 x moins cher?

Intérêt plus clair pour les marchés de niche.

Mais intérêt aussi pour des marchés larges:

  • l'entrée sur le marché devient possible avec une moindre mise
    initiale: startups, petites équipes.
  • time to market réduit; intérêt:

    • au lancement.
    • en réaction à un changement de niche: nouvelle techno à adopter
      rapidement.
  • Maîtrise de la complexité.

Modes

  • glue langage
  • prototypage
  • développement

Domaines d'utilisation

  • niches
  • admin système: supervisord, circus, salt.
  • web: pléthore de frameworks.
  • text processing.
  • graphique, ihms: couplage avec grandes libs (qt).
  • scientifique: numpy
  • sql
  • nosql

Comment

Implémentations:

cpython
Implémentation historique, de référence.

jithon
Implémentation sur jvm; accès classes java, en particulier
graphique.

iron-python
Implémentation dot-net.

pypy
Implem en python.

cython
Langage proche; traduit en c.

Versions

1
mort depuis 10 ans

2
2.5 -> 2.7

3
3.3, 3.4

Pourquoi la 3?

2 types de classes en 2: dérive ou non de objet. Unification en 3. Plus
de compatibilité ascendante: porter applis 2=>3

Pourquoi la 2 dure?

  • Grandes libs pas dispo en 3 (jusqu'à récemment)
  • Perfs parfois meilleures en 2
  • 3 unicode.

Python/Perl?

Chassent sur les mêmes terres.


MongoDB Logo MongoDB