Jusqu'à présent, tu disais plein de trucs intéressants, qui faisaient que je pertinentais à tout va, et puis là, boum, catastrophe :
« À part ça - le monde est plein à craquer de langages universitaires, par des universitaires, pour des universitaires. Qui sont dans leur tour d'ivoire, confortablement installés sur leur modèle théorique qui est d'une élégance qu'ils sont les seuls à pouvoir apprécier.
Et puis il y a ceux qui essaient de faire des choses utiles. »
Certes, juste derrière tu dis que « ah mais non, le formalisme c'est bien aussi hein » (oui bon, je simplifie), mais cette phrase, là, elle n'a pas lieu d'être. Parce que tu vois, LISP, OCaml, tous ces langages plus ou moins multi-paradigmes, plus ou moins fonctionnels, le lambda-calcul, toutes ces conneries inutiles inventées par des universitaires, tout le monde en bouffe plus ou moins tout le temps sans le voir. Genre Java, c'est rempli de machins pour la sûreté des types [1]) ; C# intègre de plus en plus de constructions directement empruntées aux langages fonctionnels; C++ veut intégrer les lambda-fonctions, etc.
Et tout le monde, à un moment donné (dans l'industrie, celle qui « fait des vrais choses » bien sûr) a qualifié ces langages de « pas utilisables par le commun des mortels », etc.
Parce que des langages faits « par et pour des universitaires », crois-moi, j'en ai connus quelques uns, mais -- oh surprise ! -- lesdits universitaires le savent. Dingue non ? En fait, très souvent, un universitaire crée un langage non pas parce que ça le fait kiffer à mort (il est spécialiste en langages, du coup fabriquer une grammaire et utiliser lex/yacc ou LISP ou OCaml pour fabriquer une nouvelle syntaxe, il sait faire sans trop se forcer).
Non, il fait ça pour donner une preuve de concept [2].
« C'est juste que pour réaliser quelque-chose de concret et d'utile, il faut maintenir un équilibre entre l'amateurisme et le formalisme. »
Le truc, c'est qu'à partir d'un certain moment, si le langage devait vraiment être intéressant, plaisant à utiliser, etc., bref, si une communauté un peu plus grosse devait s'intéresser à ton bébé, tu vas devoir finir par réellement formaliser ton langage. Des gens potentiellement intéressés pour aider à développer le langage, je suis persuadé que tu vas en trouver plein. Des gens intéressés et qui vont proposer des modifications pertinentes, tu vas peut-être en avoir qui se compte sur les doigts des deux mains. Mais il y a de fortes chances pour que ces derniers arrivent jusqu'à toi, ils aient besoin d'avoir des repères qui leurs parlent. Genre euh ... un langage commun qu'on appellerait ça. Oui, mais lequel utiliser ? Ah ben, si on utilisait la BNF ? Par exemple, hein. ;-) [3]
« Je fais partie de ces gens qui, sans cracher sur les diplômes, ont commencé à programmer par passion, et continuent à la faire pour la même raison. Je pourrais avoir le plus beau formalisme du monde, cela ne me rendrait pas aussi heureux que de voir des projets fleurir comme des frameworks web, des jeux vidéos, des bots irc, des IDEs, etc., etc. parce que j'ai fait des compromis pour être plus facile à interagir avec le C. »
Tu sais, quand tu finis par arriver au niveau de la thèse, t'as intérêt à un minimum aimer ce que tu fais (j'en connais pour qui ce n'est pas le cas, mais c'est quand même super rare). Et je mets la barre très haut pour le « minimum ». Donc t'inquiète, la passion est là. [4].
En temps normal je serais d'accord avec toi, « les diplôme on s'en fout » [4]. Quand il s'agit du design d'un nouveau langage, je vois deux cas de figures : l'amateur éclairé (dont tu fais partie), et le « pro » (souvent un de ces sales universitaires, ou un ingé de recherche avec très souvent un doctorat, hou la honte, encore un mec qui sert à rien [5]). L'amateur éclairé se décline là encore en deux catégories : celui qui a pas mal de bouteille concernant la prog, les concepts en informatique, etc., bref qui a lu des articles/des bouquins concernant l'info, qui se passionne, etc. Techniquement, je lui fais confiance pour comprendre les concepts, et savoir comment les appliquer dans un langage. Et y'a aussi l'inventeur de MultiDeskOS, le meilleur programme de tous les temps, qui fait le café, enfin promis, dès que le soft dépassera le stade pré-pré-alpha. Celui-là est très certainement aussi passionné, mais n'a pas forcément la culture informatique pour réellement arriver à quoi que ce soit. [6]
« Pour qu'un langage ait du succès, il ne suffit pas d'avoir un doctorat en sémantique. Il faut avoir la patience de coordonner l'effort dans le bon sens jour après jour. »
Non, pour qu'un langage ait du succès, il faut juste y mettre les moyens logistiques et financiers qui vont bien. Le langage D est très intéressant par exemple, mais on entend bien plus parler de C# ou Java (qui a mis le temps pour s'imposer, certes). Dans notre microcosme « libriste » (quel affreux mot), on est plus curieux quant aux nouveaux langages, mais 'achement moins nombreux que la masse laborieuse des informaticiens. Du coup, il faut réellement que le langage ait une valeur très ajoutée pour qu'il ait du succès hors de son petit monde du Libre. [7] Les exemples les plus flagrants sont certainement Perl (dans les années 90), PHP, Python, et dans une moindre mesure Ruby.
[1] Cf. le bouquin de Pierce: Types and Programming Languages par exemple.
[2] Hou que c'est moche la traduction mot-à-mot, personne n'aurait une proposition plus idiomatique ?
[3] Ou n'importe quel autre type de formalisme, mais un machin que les gens « du métier » comprennent. Et par métier, je veux simplement dire des gens qui trifouillent le domaine, de façon pro ou amateur.
[4] Soyons bien d'accord : je me fous des diplôme d'un programmeur 99% du temps. J'ai assez eu de boulets en binôme pendant mes études pour des projets info pour savoir que le diplôme n'indique absolument rien en ce qui concerne les compétences techniques d'une personne. Au contraire, je connais des gens qui ont pas loin de 10 ans de moins que moi, et qui sans aucun diplôme sont sans doute bien meilleurs développeurs que moi.
[5] Je suis en plein décalage horaire, et sur une autre planète, il est encore certainement vendredi.
[6] Concernant les universitaires, il y a aussi deux sortes : celui qui va savoir tout théoriser mais n'approchera jamais un clavier, sauf pour rédiger un article en latex -- et encore -- et celui qui sait aussi coder. Généralement, on se retrouve avec un directeur de recherches qui a su coder, mais délègue désormais cette tâche aux grouillots^Wthésards.
[7] Je ne porte aucun jugement sur ton langage, je ne le connais pas.
[^] # Re: Un langage amateur sympa, mais qui se prend trop au sérieux
Posté par lasher . En réponse à la dépêche Le langage ooc auto-hébergé - les nouveautés de rock 0.9.0. Évalué à 10.
« À part ça - le monde est plein à craquer de langages universitaires, par des universitaires, pour des universitaires. Qui sont dans leur tour d'ivoire, confortablement installés sur leur modèle théorique qui est d'une élégance qu'ils sont les seuls à pouvoir apprécier.
Et puis il y a ceux qui essaient de faire des choses utiles. »
Certes, juste derrière tu dis que « ah mais non, le formalisme c'est bien aussi hein » (oui bon, je simplifie), mais cette phrase, là, elle n'a pas lieu d'être. Parce que tu vois, LISP, OCaml, tous ces langages plus ou moins multi-paradigmes, plus ou moins fonctionnels, le lambda-calcul, toutes ces conneries inutiles inventées par des universitaires, tout le monde en bouffe plus ou moins tout le temps sans le voir. Genre Java, c'est rempli de machins pour la sûreté des types [1]) ; C# intègre de plus en plus de constructions directement empruntées aux langages fonctionnels; C++ veut intégrer les lambda-fonctions, etc.
Et tout le monde, à un moment donné (dans l'industrie, celle qui « fait des vrais choses » bien sûr) a qualifié ces langages de « pas utilisables par le commun des mortels », etc.
Parce que des langages faits « par et pour des universitaires », crois-moi, j'en ai connus quelques uns, mais -- oh surprise ! -- lesdits universitaires le savent. Dingue non ? En fait, très souvent, un universitaire crée un langage non pas parce que ça le fait kiffer à mort (il est spécialiste en langages, du coup fabriquer une grammaire et utiliser lex/yacc ou LISP ou OCaml pour fabriquer une nouvelle syntaxe, il sait faire sans trop se forcer).
Non, il fait ça pour donner une preuve de concept [2].
« C'est juste que pour réaliser quelque-chose de concret et d'utile, il faut maintenir un équilibre entre l'amateurisme et le formalisme. »
Le truc, c'est qu'à partir d'un certain moment, si le langage devait vraiment être intéressant, plaisant à utiliser, etc., bref, si une communauté un peu plus grosse devait s'intéresser à ton bébé, tu vas devoir finir par réellement formaliser ton langage. Des gens potentiellement intéressés pour aider à développer le langage, je suis persuadé que tu vas en trouver plein. Des gens intéressés et qui vont proposer des modifications pertinentes, tu vas peut-être en avoir qui se compte sur les doigts des deux mains. Mais il y a de fortes chances pour que ces derniers arrivent jusqu'à toi, ils aient besoin d'avoir des repères qui leurs parlent. Genre euh ... un langage commun qu'on appellerait ça. Oui, mais lequel utiliser ? Ah ben, si on utilisait la BNF ? Par exemple, hein. ;-) [3]
« Je fais partie de ces gens qui, sans cracher sur les diplômes, ont commencé à programmer par passion, et continuent à la faire pour la même raison. Je pourrais avoir le plus beau formalisme du monde, cela ne me rendrait pas aussi heureux que de voir des projets fleurir comme des frameworks web, des jeux vidéos, des bots irc, des IDEs, etc., etc. parce que j'ai fait des compromis pour être plus facile à interagir avec le C. »
Tu sais, quand tu finis par arriver au niveau de la thèse, t'as intérêt à un minimum aimer ce que tu fais (j'en connais pour qui ce n'est pas le cas, mais c'est quand même super rare). Et je mets la barre très haut pour le « minimum ». Donc t'inquiète, la passion est là. [4].
En temps normal je serais d'accord avec toi, « les diplôme on s'en fout » [4]. Quand il s'agit du design d'un nouveau langage, je vois deux cas de figures : l'amateur éclairé (dont tu fais partie), et le « pro » (souvent un de ces sales universitaires, ou un ingé de recherche avec très souvent un doctorat, hou la honte, encore un mec qui sert à rien [5]). L'amateur éclairé se décline là encore en deux catégories : celui qui a pas mal de bouteille concernant la prog, les concepts en informatique, etc., bref qui a lu des articles/des bouquins concernant l'info, qui se passionne, etc. Techniquement, je lui fais confiance pour comprendre les concepts, et savoir comment les appliquer dans un langage. Et y'a aussi l'inventeur de MultiDeskOS, le meilleur programme de tous les temps, qui fait le café, enfin promis, dès que le soft dépassera le stade pré-pré-alpha. Celui-là est très certainement aussi passionné, mais n'a pas forcément la culture informatique pour réellement arriver à quoi que ce soit. [6]
« Pour qu'un langage ait du succès, il ne suffit pas d'avoir un doctorat en sémantique. Il faut avoir la patience de coordonner l'effort dans le bon sens jour après jour. »
Non, pour qu'un langage ait du succès, il faut juste y mettre les moyens logistiques et financiers qui vont bien. Le langage D est très intéressant par exemple, mais on entend bien plus parler de C# ou Java (qui a mis le temps pour s'imposer, certes). Dans notre microcosme « libriste » (quel affreux mot), on est plus curieux quant aux nouveaux langages, mais 'achement moins nombreux que la masse laborieuse des informaticiens. Du coup, il faut réellement que le langage ait une valeur très ajoutée pour qu'il ait du succès hors de son petit monde du Libre. [7] Les exemples les plus flagrants sont certainement Perl (dans les années 90), PHP, Python, et dans une moindre mesure Ruby.
[1] Cf. le bouquin de Pierce: Types and Programming Languages par exemple.
[2] Hou que c'est moche la traduction mot-à-mot, personne n'aurait une proposition plus idiomatique ?
[3] Ou n'importe quel autre type de formalisme, mais un machin que les gens « du métier » comprennent. Et par métier, je veux simplement dire des gens qui trifouillent le domaine, de façon pro ou amateur.
[4] Soyons bien d'accord : je me fous des diplôme d'un programmeur 99% du temps. J'ai assez eu de boulets en binôme pendant mes études pour des projets info pour savoir que le diplôme n'indique absolument rien en ce qui concerne les compétences techniques d'une personne. Au contraire, je connais des gens qui ont pas loin de 10 ans de moins que moi, et qui sans aucun diplôme sont sans doute bien meilleurs développeurs que moi.
[5] Je suis en plein décalage horaire, et sur une autre planète, il est encore certainement vendredi.
[6] Concernant les universitaires, il y a aussi deux sortes : celui qui va savoir tout théoriser mais n'approchera jamais un clavier, sauf pour rédiger un article en latex -- et encore -- et celui qui sait aussi coder. Généralement, on se retrouve avec un directeur de recherches qui a su coder, mais délègue désormais cette tâche aux grouillots^Wthésards.
[7] Je ne porte aucun jugement sur ton langage, je ne le connais pas.