Developpez.com

Le Club des Développeurs et IT Pro

Souhaiteriez-vous reprogrammer en C/C++ après des années d'utilisation de .NET/C# et Java ?

Pour ou contre le low level ?

Le 2009-11-27 00:59:27, par Katleen Erna, Expert éminent sénior
Souhaiteriez-vous reprogrammer en C/C++ après des années d'utilisation de .NET/C# et Java ? Pour ou contre le low level ?

En tant que développeur, envisageriez-vous de faire un petit voyage dans le passé, disons dans les années 1980, pour retrouver les langages de programmation d'avant ?

Beaucoup de professionnels de l'informatique ont passé la dernière décennie à travailler sous C# et Java (on parle évidement ici d'une tendance, et non pas d'une généralité). Certains ont récemment choisis de se remettre à coder en C/C++ et sont satisfaits de ce choix.

Bien sûr, certains outils et bibliothèques leurs manquent mais ils se sentent soulagés par un style "plus simple que celui de Java et de ses bibliothèques inutilement complexes". Pour autant, Java apporte l'avantage du code multi-thread. Mais d'autres de conciderer que la programmation en pthreads n'est pas plus difficile.

En outre, certains codes de socket seraient plus faciles a éxecuter en C du fait de la façon ardue dont fonctionne I/O dans Java.

Dans la liste des arguments favorables au low level, on note également que la majorité des APIs actuelles ont été construites en C. Certains développeurs perfectionnistes expliquent aussi que la programmation de ce type leur permet de se focaliser d'avantage sur la performance et les optimisations et de pousser très loin les assemblages.

Dans l'autre camp, on préfère traiter des problèmes "plus compliqués, que le low level ne permet pas de prendre en charge". Eclipse (dans Java) faciliterait beaucoup de tâches avec "une seule manière de faire chaque chose".

Bref, toute cette cuisine de langages semble finalement surtout être une question de goûts personnels. Quels sont les vôtres ?

Sources : Diverses opinions de développeurs anonymes.

Java est-il vraiment d'un plus "haut niveau" que le low level (C/C++) ? Et C# ?

Que pensez-vous des performances de Python comparé à Java et C# ?

Le recours à un compiler moderne peut-il changer la donne ?
  Discussion forum
97 commentaires
  • robert_trudel
    Membre éprouvé
    j'ai débuter avec le langage C, j'en ai fait durant plus de 3 ans, un peu de vb, delphi, une miette de C++ et ensuite Java

    je dirais que la majorité des tâches que je fais à chaque jours je pourrais aussi le faire en C, mais ça prendrais beaucoup plus de temps

    c'est certain que java est beaucoup plus haut niveau que le C, C++
    il "cache" certain élément

    faire du C, C++ portable n'est pas du tout évident, aucun compilateur respecte entièrement les performances

    pour ton exemple de socket, c'est la première chose que j'ai du faire en Java... difficile de faire plus simple

    elle varie d'un compilateur à un autre

    j'ai jamais été un fan de python, j'aime pas trop sa syntaxe et n'importe qu'elle benchmark montre qu'il est plus que le c, c++, java
  • deadalnix
    Membre émérite
    Je trouve que D est une bonne réponse à ce problème.

    C'est pourquoi j'ai décidé de m'y mettre.

    Andrei Alexandrescu est d'accord, ce qui me fait penser que je ne dois pas être totalement fou.
  • Hayaxx
    Membre du Club
    Il est vrai que D semble une bonne alternative.

    Encore étudiant, je n'ai pas une maitrise totale des langages mais je prefere tout de meme la syntaxe complexe du C++ que celle de Java.
    J'aime la sensation de controle totale d'un langage bas niveau.

    Et pour la portabilité C++/Qt !
  • Viish
    Rédacteur
    Envoyé par robert_trudel
    pour ton exemple de socket, c'est la première chose que j'ai du faire en Java... difficile de faire plus simple
    Si, en Python c'est encore plus simple et rapide

    Sinon perso je préfère le Java ou le Python au C/C++/C#.
  • Averroes
    Membre du Club
    Envoyé par Katleen Erna
    Mais d'autres de conciderer que la programmation en pthreads n'est pas plus difficile.
    [...]
    Dans l'autre camp, on préfère traiter des problèmes "plus compliqués, que le low level ne permet pas de prendre en charge". Eclipse (dans Java) faciliterait beaucoup de tâches avec
    Avant tout il y a des grosses fautes dans ton passage (en plus des petites que je n'ai pas re-cité. (Utilises au moins le dico Fr si t'utilises Firefox).

    Pour ma part je pense que le problème du langage est un sujet de masturbation cérébrale propre aux experts dans un langage.
    J'ai toujours favorisé les objectifs du projet avec les contraintes temps de développements et temps d'exécution et accessoirement préférence du client pour un langage car il a des ressources pour maintenir.
  • mister3957
    Membre expérimenté
    J'ai fait pas mal de trucs en C++, puis je suis passé à C#.

    La transition n'était pas facile étant donné que je faisais les conceptions, et arrivé à l'implémentation, je m'apercevait qu'il n'était pas possible de faire certains trucs en C# (méta programmation notamment).

    Ca m'a donné un sentiment de manque de liberté, de ne pas pouvoir avoir la main sur tout ce que je voulais. Du coup, je m'arrange pour n'être que sur les projets en C++.

    Il y a également pas mal de fonctionnalité apportées au C++ via les différentes libs disponibles (surtout boost) qui ne sont pas disponibles en .net ou en java. Quand on est habitué à les avoir, ensuite c'est difficile de s'en passer.

    Enfin, je trouve les libs C++ plus créatives et ingénieuses que celles de .net ou java, la communauté est plus large et plus ouverte.

    Python je ne connais pas.
  • smyley
    Expert éminent
    Le truc c'est que normalement tout ce qui est lib C/C++ en général, soit c'est intégré nativement en .NET soit on peut quand même y accéder via des P/Invoke.

    Personnellement j'ai fait du C/C++ et du C# (et d'autres trucs genre Java, but i'd rather not talk about it ) et il y a plein de petites choses qu'il faut surveiller en C/C++ pour faire un programme propre (référence ? pointeur ? copie ? j'ai bien tout libéré ? je crois que j'ai oublié un \0 ... c'est des erreurs de noob mais quand on a pas fait de C/C++ depuis longtemps, il arrive forcément un moment où on en fait) qui sont quasiment géré automatiquement par .NET.

    Et puis ça fait plaisir de ne jamais avoir de Access Violation ou Heap Corrupt. Par contre, il n'y a encore aucun moyen de faire certains trucs genre des Drivers en C#, sur le coup c'est indéniable ...

    ps. C++ n'implique pas low level
  • brulain
    Membre habitué
    Genre : vous préférez avoir une jambe en mousse ou des dents en carton ?
    Pas de doute, le schmilblic avance...
  • vintz72
    Membre averti
    Actuellement sur Java, j'ai tâté de C# et de C et C++ également.
    Je pense que le langage lui-même n'est pas si important. Ce qui l'est pour moi, c'est qu'il soit orienté objets. Ca, je ne pourrais plus m'en passer. Ensuite, si l'EDI est performant, ça facilite grandement les choses !
    En outre, ça fait 10 ans que je n'ai plus fait de C++, mais a priori, il y a eu pas mal d'évolutions (libs standards, etc.), donc pourquoi pas s'y remettre à l'occasion.
    Sinon, il y a Objective-C aussi... ;-)

    Quant on Python, je ne connais pas suffisamment pour en parler.
  • Médinoc
    Expert éminent sénior
    Personnellement, j'adore le bas niveaul. Mais pour certaines applications, le C pur, c'est vraiment gonflant.
    Le C++ est bien mieux, vu qu'il permet de faire du bas niveau tout en apportant l'avantage de la RRIF.

    Pour autres langages plus évolués, je pense que .Net est un bon compromis: Selon moi, C# est un poil plus bas que java, et couplé à C++/CLI, on peut tout faire avec.