Bonjour à tous, je me lance dans un nouveau projet personnel (à but potentiellement commercial) et je suis face au choix du langage. J’en est déjà pas mal discuté avec un ami qui connait beaucoup de langages et qui a fait beaucoup de projets différents mais essentiellement web. Et j’aime pas le web. Du coup une petite présentation rapide du projet mais surtout des contraintes pour le choix du langages s’impose.
Le but du projet est de donner une interface qui permette la rédaction d’histoires (roman, héroïc fantasy…) bien plus simple et intuitive. On oublie Word et on passe sur un véritable outil (Scrivener en vidéo).
Les contraintes : + Interface puissante. Je veux pouvoir faire une interface qui soit aussi souple que celles qu’on trouve dans le web (avec le puissant mélange HTML/CSS/JS). La partie interface est évidemment clé puisque le but est commercial et adressé à des gens pas forcément sensible à l’informatique (sans faire de préjugé). De plus j’aimerais qu’il soit possible d’avoir des interfaces qui se construisent automatiquement (à partir d’un fichier de config par exemple, un peu comme en HTML)
-
Structuration du code facile. Là c’est clairement pour moi, je suis assez organisé mais je n’ai jamais mené des projets de grandes taille. Ce critère me fait immédiatement penser à Java. Le gros avantage de Java (ou équivalent) c’est son système objet qui oblige à avoir une structure du programme correcte. Outre le fait que j’apprécie de langage, j’ai peur de me sentir très contraints à cause du fort typage (je code en python depuis 2 ans maintenant). Mais bon c’est un détail
-
Machine Learning. Particularité du logiciel, j’aimerais intégré du machine learning dans mon logiciel. Je ne développe pas trop puisqu’il s’agit de la vraie valeur ajouté mais il s’agit essentiellement d’analyse de texte (en même temps ce serait un peu bête de faire de l’analyse vidéo non ?). Du coup je pense à Python que je connais en plus assez bien.
Voilà mes 3 gros critères. J’aimerais un langage qui me permette une interface aussi flexible que du web, avec un paradigme objet fort et la possibilité de faire du calcul scientifique. A cela on peut ajouter les contraintes assez classiques multiplateforme, avec un bon support et surtout un langage haut niveau ; je veux pas m’embêter avec du C. La dernière contrainte étant que je puisse commercialiser le logiciel sans avoir à payer une licence développeur, ou alors vraiment pas cher.
Puisque j’y ai réfléchi, voici une liste des solutions trouvées et des avantages / inconvénients :
-
Java 100% : L’objet et le fort typage va permettre d’avoir un logiciel assez maintenable (bien sûr ça dépend de moi), les interfaces devrait être assez bonnes. Par contre j’ai peur qu’on ne puisse pas être aussi flexible qu’en web et surtout que le Machine Learning soit particulièrement difficile et lourd.
-
Python 100% : La partie interface et machine learning ne sont clairement pas un problème. Par contre le système objet en Python n’est pas fait pour être utilisé comme en Java et j’ai encore beaucoup de mal à m’y faire. Je risque de faire des bêtise et de développer un logiciel moins maintenable et évolutif qu’en Java, ce qui est très très gênant
-
Java 50% Python 50% : J’utiliserais Java pour l’interface et les fonctionnalités et Python pour le Machine Learning. Le problème avec cette solution c’est que j’ai peur de sacrément complexifier la chose et de devoir gérer les entités des deux côtés et c’est assez catastrophique pour la maintenance.
J’ai aussi pensé à du C# mais le fait que le logiciel doit être multiplateforme me paraît trop contraignant, mais peut être que je me trompe.
Merci d’avance de votre aide, n’hésitez pas à poser vos questions et me dire si je fais fausse route.
La bise