Un langage adapté à mes désirs ?

Non ce n'est pas un énième sujet sur quel langage choisir, promis!

Le problème exposé dans ce sujet a été résolu.

Bonjour à toutes et à tous!

Comme certains le savent peut être je pratique de l'aéronautique. Et justement dans cette fabuleuse matière, on utilise au quotidien un logiciel qui s'appelle Navigation de Foufou qui est une boite à outil incroyable. Le problème est que je tourne sous Linux (ArchLinux) et que le programme est fait en Visual Basic. Il est totalement inutilisable avec Wine tellement il freeze. Je souhaite donc faire une nouvelle boite à outils mais qui fonctionne sous Linux (pourquoi pas sous Mac OS X aussi, ça m'est égal).
Ce que je voudrais faire c'est une base sur laquelle je peux rajouter des fonctionnalités au fur et a mesure (par exemple, le programme me calcul déjà ma route et j'aimerais que en plus il m'indique la météo.. Et bah je code un "plugin" et hop il est disponible, pas besoin de recoder toute la base pour que je "plugin météo" sois pris en compte.).

Pour ce faire, j'ai besoin d'un langage de programmation. Là vous allez me dire que tous les langages de programmation peuvent faire ce que Visual Basic peut faire. Certes, mais disons que je suis un peu touche à tous et que j'ai déjà fait 2-3 langage de programmation et j'ai déjà pu relever certains défauts.

Comme par exemple le Python :
J'aime pas du tout sa syntaxe, il n'y a pas d'accolade ni de point virgule, je trouve ça illisible sans. Ou encore le Java dont je n'aime pas le fonctionnement tout objet… Fin bref, je l'aurais bien fait en Python, mais je ne supporte pas sa syntaxe…

Donc ma question serait, auriez vous un langage à me conseiller qui correspondrais à mon projet ? Sachant que le PHP à une syntaxe que je trouve juste GÉNIALE !
Où auriez-vous tout simplement des conseils à me donner ?

Merci de votre aide ! :)

+0 -0

Techniquement tu peux le faire en tout ! Perso je ne comprends pas la facon dont tu fais tes choix ^^. Tu choisis de delaisser le Java parce que tout est objet, mais si tu le fais en PHP tu vas faire de l'objet like si ce n'est du veritable et dans ce cas la je trouve Java plus adapter. En plus, avec Java tu pourras le porter tres simplement pour tes collegues utilisant mac, voire meme ceux qui prefere ton truc d'apoint !

Sinon il y a la solution C/C++, mais je ne sais pas si integrer un plugin se fait si facilement qu'en Java :/

Je pense qu'il faut que tu choisisses un langage pour les bonnes raisons et qui soit adapter à ce que tu veux faire, au risque de dire une betise, php ne semble pas etre la bonne solution, du moins si tu souhaite l'utiliser de facon semi objet, tu fais erreur dans ta conception et donc autant utiliser Java, qui meme si tu l'aimes pas pour ca (et perso je le trouve trop verbeux et approximatif), est bien plus adapter a une representation objet.

Si tu ne veux pas faire de l'objet ou rester en semi objet il reste lenC++ mais a confirmer que l'ajout de plugin est aussi simple :)

Je reproche les mêmes choses que toi au Java, beaucoup trop verbeux ! Je n'arrive pas à m'y faire au tout objet, semi-objet je trouve ça très bien !

De plus, je sais que ma façon de choisir un langage est un peu spé, mais je me disait que dans la pléthore de langages qui existe, il doit bien y en avoir un qui me correspond.. Et pour le Php, je sais bien que c'est pour le web, c'est juste sa syntaxe que je trouve excellente ! ;).

En tout cas merci, je vais attendre l'avis des autres pour me faire une idée !

Essaye le C++ … Pas tout objet, syntaxe qui semble te correspondre. Le langage n'est en générale pas trop verbeux sauf si tu dois faire des trucs un peu plus complexe. Puis y a Qt … Si tu veux faire une interface graphique et multiplatforme …

+1 -0

Des langages c-like il y en a un paquet. Ruby si tu veux un truc philosophiquement proche de python mais avec une autre syntaxe pleine d'accolades, JavaScript (avec node), etc.

En réalité la syntaxe d'un langage est souvent accessoire. Ton outil, il est censé faire quoi ? Il y a peut être un langage plus adapté.

Et si vraiment tu adore le PHP, fait le en PHP. L'interface sera une page web, et alors ? Sachant que PHP peut aussi servir de langage de programmation et faire des interfaces graphique.

Enfin si wine est trop lent pour l'outil que tu veux copier, il y a la virtualisation qui est souvent plus efficace.

PS: il est codé en vb6 ou VB.net ?

Essaye le C++ … Pas tout objet, syntaxe qui semble te correspondre. Le langage n'est en générale pas trop verbeux sauf si tu dois faire des trucs un peu plus complexe. Puis y a Qt … Si tu veux faire une interface graphique et multiplatforme …

ache

Le multi-platforme est vraiment un plus, c'est un outil pour moi. Après si je peux le partager si il fonctionne bien, tant mieux ! Mais il me semble qu'il n'est pas facile d'ajoter des sortes de "plugins" en C++, si ? Fin j'ai encore du mal à bien voir comment je vais organiser ça…

Des langages c-like il y en a un paquet. Ruby si tu veux un truc philosophiquement proche de python mais avec une autre syntaxe pleine d'accolades, JavaScript (avec node), etc.

Kje

C'est vrai que le Ruby peut-être une bonne alternative, je l'avais totalement oublié ! Après si il convient à mon utilisation je ne sais pas…

Le programme devra être capable de se rendre sur Internet et de mettre à jour ses METAR (ce sont des messages textes relativement cours permettant de connaitre très précisément la météo) et de l'analyser. C'est à dire de me sortir sous forme développé. Par exemple :
- Un METAR qu'il aura téléchargé : LFRN 130700Z AUTO 13010KT 9999 NSC 10/09 Q1003
- Puis sa traduction : Aéroport : Rennes, Date : etc. (tout est indiqué dans le message au-dessus).
Pour se faire j'aurais besoin des expressions régulières je pense.

Ensuite, de me calculer la route que je dois prendre pour faire (par exemple) LFRN (Rennes) vers LFRB (Brest). C'est à dire tenir une base de données des aéroports de France (pour le moment, je pourrais voir plus loin plus tard). Il devra me calculer les caps à prendre, l'altitude.

Et la partie la plus facile sera sûrment de calculer la feuille de masse et centrage, je rentre les proriétés de l'avion, le poids des passager et toutes les infos et il me sort, après avoir appliqué bêtement les formules, une feuille de masse et de centrage. Pour info, ça ressemble à ça : Feuille de masse et de centrage

Voilà globalement le programme.. Il est possible qu'il évolue bien sur, et c'est mon but. Quand je serais capable de faire une telle chose ce sera déjà pas mal, c'est pour ça que je compte rajouter des fonctionnalités au fur et à mesure sous forme de plugins.

Et si vraiment tu adore le PHP, fait le en PHP. L'interface sera une page web, et alors ? Sachant que PHP peut aussi servir de langage de programmation et faire des interfaces graphiqu

Kje

Disons que je ne trouve pas le PHP très adapté… Après pourquoi pas ! Mais il n'y a pas l'air d'avoir beaucoup de doc sur Internet concernant une utilisation telle de PHP..

Enfin si wine est trop lent pour l'outil que tu veux copier, il y a la virtualisation qui est souvent plus efficace.

Kje

Certe mais j'ai toujours aimé programmer, et j'ai enfin un projet qui tient la route donc une vraie motivation ! Mais j'aimerais avoir un langage qui me plait afin que je ne me décourage pas (je sais que mon projet est assez gros et décourageant, mais j'ai pas de limite de temps pour le réaliser, donc rien ne m'enpêche d'apprendre un langage pendant un an et de commencer mon prjet).

PS: il est codé en vb6 ou VB.net ?

Kje

Je ne sais pas, il ne l'indique pas

Merci de vos réponses!

+0 -0

Bon visiblement c'est du vb6, dommage.

Techniquement je déconseillerait le C++. C'est un langage très bien mais pas pour ça. Ce n'est pas un langage adapté pour un "débutant" en programmation. Tu te prendrais tout ces désavantages (gestion manuel de la mémoire entre autre), sans avoir d'interet de profiter de ces avantages.

Tu as tout interet de partir sur un langage type script ou en tout cas rapide a développer. Php, node, python, ruby, Java, C#/mono, etc.

Sincèrement, peut importe le langage. Si tu aime le PHP, pourquoi ne pas faire un service web pour ça ? Ce n'est pas la mort.

Mais dans l'absolus tu n'as pas besoin de puissance et aucune fonctionnalités avancés donc utilise le langage qui te plaie / où tu te sent le plus apte.

D’après ce que j’ai compris de ton dernier message, pour l’instant ce serait surtout 3 petits programmes indépendants. Pourquoi ne pas commencer par là ? C’est certainement mon coté unixien qui parle mais des petits utilitaires indépendant avec une sortie texte c’est le pied.

Naturellement en réalité il faudrait mieux sortir des objets capable se représenter en mode texte, comme ça quand tu intègrera le tout tu pourras travailler directement avec les entités sans passer par du texte pour la communication inter-module.

Quand au langage, je pense qu’il importe peu du moment qu’il est multiplateforme et dispose de bonnes bibliothèques. (j’irais pas jusqu’à recommander PHP mais au fond Kje n’a pas tord)

+0 -0

Pourquoi ne pas se tourner vers un EFB existant (au moins pour ne pas partir de zéro) ? Tu n'auras pas le choix du langage mais ce sera nettement plus facile (faire ce que tu veux est en réalité assez coton).

Tu en as pour à peu près toutes les plateformes. De mémoire, il y a EFB aero dispo sous Android et linux (à vérifier). En tout cas, je me souviens en avoir vu sous Linux…

a- Techniquement je déconseillerait le C++. C'est un langage très bien mais pas pour ça. Ce n'est pas un langage adapté pour un "débutant" en programmation.

Pour ça, je ne sais pas si le C++ apporte quoique ce soit à son programme. Un ensemble de scripts qui dialoguent me parait tout aussi efficace.

b- Tu te prendrais tout ces désavantages (gestion manuel de la mémoire entre autre), sans avoir d'interet de profiter de ces avantages.

Kje

Mais alors là, c'est totalement faux. Il ne faut en aucun cas chercher à gérer la mémoire à la main en C++. Dans des vrais applis, en tant que pros on s'y refuse, pourquoi est-ce que l'on irait le conseiller à des débutants ?

Mais alors là, c'est totalement faux. Il ne faut en aucun cas chercher à gérer la mémoire à la main en C++. Dans des vrais applis, en tant que pros on s'y refuse, pourquoi est-ce que l'on irait le conseiller à des débutants ?

On est d'accord mais malheureusement c'est ce qui est majoritairement enseigner dans les cours C++. Les bonnes pratiques du C++ et la RAII sont rarement au coeur des cours pour débutant.

Pour moi (ce n'est que mon avis) le C++ n'est pas un langage pour débutant. Il est très facile de faire n'importe quoi, et c'est souvent fait ainsi.

Il est facile de faire n'importe quoi dans tous les langages. C'est juste que la limite n'est pas la même n'importe où. Certains vont exploser quelque part à l'exécution sur une chaine qui n'est pas un entier, d'autres à la compilation, et d'autres sur des problèmes de mémoire. Le besoin de savoir concevoir est vrai dans tous les langages. Par contre, certains sont effectivement plus adaptés à la bidouille – en général, c'est le créneau des langages de script depuis BASIC il y a longtemps jusqu'à python aujourd'hui.

BTW, je reconnais volontiers que beaucoup de cours de C++ vont montrer les mauvaises pratiques. Mais il est faux de dire qu'il faut gérer la mémoire à la main. Les mauvais cours l'enseignent. Mais ce n'est pas ainsi qu'il faut procéder.

Pour ce qui est de est-ce que le C++ est adapté au débutants, je renvoie à /Je me Lance/ de Francis Glassborrow qui est une expérience assez étonnante. Cf le profil de son cobaye

D’après ce que j’ai compris de ton dernier message, pour l’instant ce serait surtout 3 petits programmes indépendants. Pourquoi ne pas commencer par là ? C’est certainement mon coté unixien qui parle mais des petits utilitaires indépendant avec une sortie texte c’est le pied.

Simbilou

Enfaite ce sont des sortes de petits programme qui sont complémentaire, par exemple la météo sera utile our calculer la route, donc non, ils ne sont pas indépendants.

Pourquoi ne pas se tourner vers un EFB existant (au moins pour ne pas partir de zéro) ? Tu n'auras pas le choix du langage mais ce sera nettement plus facile (faire ce que tu veux est en réalité assez coton). Soruce: RomHa Korev

Alors je suis absolument désolé mais je ne sais pas ce qu'est un EFB… Et je sais que mon projet n'est pas facile, mais j'ai tout mon temps pour le faire, et je compte le faire au fur et à mesure, donc ça ce n'est pas un problème!

Donc globalement il faut que je me tourne vers un langage de script, ou le Java. J'héiste entre le Ruby (mais il n'y a pas l'air d'avoir des tonnes de documentation..), le Php (pourquoi pas..) et le Java (probablement le plus intéressant dans mon cas, non ?).

Tu disais dans ton premier message que tu avais du mal avec le tout objet. Fais donc gaffe à ruby, si java c'est déjà du tout objet pour toi, alors ruby c'est du encore plus tout objet.

Je ne sais pas dans quelles mesures ça peut s'appliquer mais tu peux essayer Node.js aussi. C'est du javascript donc ça se laisse assez facilement appréhender et c'est extensible.

Et puis si tu es fan de php et qui de plus est sous linux, peut-être que perl te plaira… outre le C, php s'est aussi un peu inspiré de perl pour sa syntaxe (notamment les $)

Sinon je voulais réagir à ça :

On est d'accord mais malheureusement c'est ce qui est majoritairement enseigner dans les cours C++. Les bonnes pratiques du C++ et la RAII sont rarement au coeur des cours pour débutant.

Pour ma part en tout cas je n'ai jamais eu de cours parler de smart_ptr, ni de RAII par exemple. Je viens de vérifier, même un de mes anciens cours Advanced C++, qui était très bien d'ailleurs, détaille des trucs aussi avancés et inutiles en pratique que placement new.... mais ni dans le chapitre gestion de la mémoire , ni dans STL, ni dans idiomes il n'est fait mention de ces concepts.

En fait, pour les débutants en C++, il faudrait un cours où on aborde les pointeurs, l'allocation dynamique, et new/delete le plus tard possible. Le véritable tour de force serait de faire de l'OO avancé avec polymorphisme sans parler ni de pointeur ni de new. Comme ça on prend la bonne habitude tout de suite, systématiquement utiliser smart_ptr (j'ai encore pas pigé à quoi servait unique_ptr, donc pas taper si je viens de dire une énorme bêtise)

+0 -0

Perso je trouve que la meilleure formation c'est l'enchainement : C (avec la gestion memoire et des pointeurs etc), commencer une approche "type objet" avec les structures. Ensuite faire du c++ objet pour la stl et l'objet. Le Java, parce que c'est omnipresent et fait penser differemment par rapport au C++ et enfin alterner entre les deux pour pas oublier les betises aprises avec le garbage collector :p

@Ricocotam: Non pas vraiment :s Le tuto de M@teo21 sur le SdZ l'a très bien montré, les débutants en C++ qui commencent à apprendre le C++ gardent longtemps de mauvaises habitudes du C.

Le contraire apporte moins d'erreur et est plus logique de nos jours. J'apprend le C++ car je veux faire un programme. J'apprend le C car finalement je dois toucher des composantes très particulières pour un de mes programmes. Et plus bas encore si besoin. Selon les besoins, on se rapproche du plus bas niveau.

+1 -0

Aah oui, je ne parlais pas d'apprendre avec ces tutos la et malheureusement je n'en connais pas d'autre :(. Je parlais d'une veritable formation (je suis en DUT). Meme si pour un debutant le C est assez dur, il me Emble indispensable de savoir comment cela fonctionne vraiment. Et d'ailleurs on nous a parler rapidement de la RAII nous ^^

Bah c'est toujours le même problème au fond, dans l'idée, il n'y a rien de mal à faire du C puis du C++ tant qu'on fait bien la distinction entre les deux et qu'on ne présente pas le C++ en partant du C.

Dans les faits ce n'est malheureusement pas très souvent le cas, ce qui conduit à du C++ horrible et tout plein de bugs, où les gens (profs comme élèves) font des allocs partout et utilisent des pointeurs nus à la C responsables de leur ressource, et donc forcément en C++, ça se passe pas bien…

Et si le C n'est enseigné juste en guise d'intro au C++, alors autant bypasser cette étape purement et simplement^^

+1 -0

Pour ma part en tout cas je n'ai jamais eu de cours parler de smart_ptr, ni de RAII par exemple. Je viens de vérifier, même un de mes anciens cours Advanced C++, qui était très bien d'ailleurs, détaille des trucs aussi avancés et inutiles en pratique que placement new.... mais ni dans le chapitre gestion de la mémoire , ni dans STL, ni dans idiomes il n'est fait mention de ces concepts.

A vrai dire, le RAII et la SL, c'est pourtant la base et devrait être vu dans un cours pour débutant. Cependant, il est vrai que les gens qui viennent vers des cours "advanced" ont souvent besoin de revoir ce que l'on estime appartenir aux bases.

En fait, pour les débutants en C++, il faudrait un cours où on aborde les pointeurs, l'allocation dynamique, et new/delete le plus tard possible. Le véritable tour de force serait de faire de l'OO avancé avec polymorphisme sans parler ni de pointeur ni de new. Comme ça on prend la bonne habitude tout de suite, systématiquement utiliser smart_ptr (j'ai encore pas pigé à quoi servait unique_ptr, donc pas taper si je viens de dire une énorme bêtise)

QuentinC

Tout à fait. Je me Lance de Francis Glassborrow ne parlait justement que du C++ procédural avec 0 OO, 0 template, 0 exception (même si le code était exception (et error) safe au final), et 0 pointeur.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte