• [^] # Re: Intérêt

    Posté par . En réponse à la dépêche Sortie d'une première version stable de Go. Évalué à 9.

    Un langage comme Scheme (et ses multiples implémentations) est un concurrent sérieux.

    Tu compares un langage impératif et un langage fonctionnel. Je ne veux pas rentrer dans le troll fonctionnel/impératif, mais pour faire court, force est de constater que tout le monde ne se retrouve pas forcément dans ce style.

    (tout (le (monde (n'est (pas (fan)))))))

    Personnellement c'est un langage que je trouve séduisant, mais son apprentissage vaut-il vraiment le coup ?

    C’est l’avantage de Go : tu connais le C, tu connais Go. Son apprentissage est quasi-immédiat pour un dev C (Go, c’est du C avec un peu de sucre syntaxique (:=, interfaces, go, defer) et un GC).

    Alors, quel est l'intérêt profond de Go ?

    Go, fondamentalement, est à mi-chemin entre Python et C.
    - Si le cahier des charges de ton projet te dirige vers le C pour des contraintes de « légèreté » (en terme d’infrastructure de runtime nécessaire, d’utilisation mémoire, que sais-je), alors Go pourrait être un bon candidat : proche du C sur ces points, il a l’avantage d’une meilleure expressivité.
    - Si le cahier des charges de ton projet te dirige vers un langage interprété pour des contraintes de rapidité de développement, alors Go pourrait être un bon candidat : presque aussi expressif que Python, il est généralement bien plus performant.

    Bref, l’intérêt profond de Go, c’est d’être « presque » aussi performant que le C en étant « presque » aussi expressif que Python.

    D’un autre côté, étant à mi-chemin, tu perds aussi un peu des bons côtés des deux : côté C, le GC pourrait être un point bloquant ; côté Python, outre l’écosystème bien plus réduit, la méta-programmation est bien plus pénible en Go, et le typage statique limite parfois l’expressivité comparativement à ce qu’on pourrait retrouver dans un langage à typage dynamique (je pense par exemple aux collections, dont la gestion peut être parfois frustrante, ou à l’impossibilité d’un équivalent du type tuple en Python)