2 votes

Quelle langue pour mon projet de thèse ?

Je fais mon projet de thèse sur les problèmes NP-Hard : Je vais implémenter divers algorithmes pour des problèmes tels que la partition, la somme de sous-ensembles, le sac à dos, etc. et ensuite comparer les résultats, le temps d'exécution, etc. Je vais également voir ce qui se passe avec les algorithmes lorsque vous modifiez le problème (comment l'algorithme se comporte-t-il sur le problème réduit, etc).

J'ai choisi ce sujet comme projet parce que je m'intéresse à l'informatique théorique, mais je ne sais pas si je veux continuer en tant qu'universitaire/chercheur ou rejoindre une entreprise/startup et ce projet a à la fois un côté théorique et un côté pratique (codage réel).

Ma question est la suivante : quel langage de programmation dois-je utiliser ? Devrais-je m'en tenir à ce qui me semble le plus familier (Java et peut-être Python), ou devrais-je opter pour les langages web (HTML, CSS, PHP, RoR, etc.), sachant que les compétences en développement web sont très demandées de nos jours ?

EDIT : HTML et CSS seraient évidemment utilisés uniquement pour l'interface utilisateur.

Je veux que mon projet soit quelque chose qui impressionne lors d'un entretien (pour un emploi ou un cours de maîtrise) et je ne suis pas sûr qu'un "énième projet en Java" puisse y parvenir. Je comprends que tant que le travail est bon et que le résultat est satisfaisant, ça devrait aller, mais si, par exemple, l'utilisation de Ruby peut me faire gagner des points, je suis tout à fait d'accord. En même temps, je comprends que le choix du langage à utiliser fait partie du projet et je ne veux pas compliquer les choses juste pour essayer d'avoir l'air cool.

Merci d'avance !

EDIT : Au cas où cela changerait les réponses, il s'agit d'un projet de thèse de premier cycle, et non d'un doctorat.

5voto

Si le sujet de votre projet est impressionnant, personne ne se souciera de la langue dans laquelle il est rédigé. Faites-le dans la langue que vous jugez appropriée à la tâche. Savoir comment faire le choix du langage approprié et défendre ce choix devrait être plus impressionnant que "OMG j'ai utilisé RoR XSL ActionScript CSS ! !!".

Par ailleurs, combien de temps pensez-vous que ce projet prendra ? Si vous optez pour un langage flashy et à la mode aujourd'hui, savez-vous qu'il sera toujours aussi cool et populaire lorsque le projet sera terminé ? En d'autres termes, la popularité n'est pas une raison suffisante pour choisir un langage pour un projet de ce type.

5voto

David Titarenco Points 17148

Tout d'abord, il s'agit d'une question subjective, qui ne convient pas parfaitement à SO, mais nous vous pardonnons :)

Contrairement à l'opinion populaire ici (en regardant les réponses précédentes), si vous essayez de résoudre des problèmes NP-Hard, je voudrais certainement pas écrire les programmes en C ou C++. Principalement parce que les méthodes de programmation dynamique ont tendance à ressembler à du caca de chien lorsqu'elles sont écrites dans des langages de bas niveau. Par exemple, voici la solution de programmation dynamique de quelqu'un pour le problème du sac à dos : http://www.joshuarobinson.net/docs/knapsack.html .

C'est bien écrit et bien formé, mais à peine lisible simplement à cause de la quantité énorme de malloc , memcpy y free vous devez faire. Choisissez Java ou Python, sans hésiter. Vous voulez que les gens lisent (et peut-être même apprécient ?) votre thèse, je suppose.

Ne l'écrivez pas en PHP ou en Ruby, car ces langages ne sont pas particulièrement applicables à la théorie informatique. Cela dit, si vous postulez pour un emploi de développeur web et que vous essayez d'impressionner vos futurs employés avec un problème de sac à dos ou des solveurs NP-Hard de programmation dynamique, c'est comme tirer sur un moineau avec un boulet de canon.

1voto

zerodin Points 560

Si vous pouvez investir de l'effort et du temps, alors je recommande le c/c++. ce sera une compétence supplémentaire impressionnante.

0voto

Matt Caldwell Points 818

Mon langage de prédilection serait Python. Vous pourriez utiliser Django et, à mon avis, il serait très applicable aux choses qui se font dans le secteur (surtout avec les startups). De plus, Python est imbattable en matière de lisibilité et de rapidité de développement.

0voto

Skilldrick Points 33002

J'aurais pensé que Python ferait trop de choses intelligentes sous le capot pour pouvoir vraiment mesurer les performances relatives avec précision.

Ne serait-il pas préférable d'utiliser un langage de plus bas niveau comme le C ? Les employeurs vous respecteraient davantage pour cela que si vous utilisiez quelque chose parce que c'est "cool".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X