Je ne sais pas quoi choisir !

C/C++ lequel vaut le plus la peine ?

a marqué ce sujet comme résolu.

Non il n’est pas compilé il est interprété ce n’est pas un code binaire qui est éxécuter , mais un interpréteur qui lui fournit du code binaire mais à la voler

python est compilé en bytecode dans la majorité des implémentations de python.

Ensuite, oui C# est rapide, non il n’est pas bas niveau, et bien évidemment qu’il a beaucoup de lib car il a .NET (et nuget aussi d’ailleurs).

PS: ne pas gérer la mémoire c’est un piège dans tous les langages, même en python, java ou C#.

PS: ne pas gérer la mémoire c’est un piège dans tous les langages, même en python, java ou C#.

Gérer manuellement la mémoire est très largement un plus gros piège dans la majorité des langages pour la majorité des dev que de laisser ces technos éprouvés le faire pour toi.

Je ne sais pas à quoi tu pense particulièrement mais après des années à développer avec Python, les cas où j’ai eu des vrais raisons de râler après le garbage collector se comptent sur les doigts d’une main.

Pour le PO, le C++ n’est pas un langage ésotérique et a un vrai marché. Si il te plait, lance toi. Le langage précis que tu pratique a assez peu d’importance en début "de formation". Il est bien plus important de passer du temps à coder et pratiquer qu’à passer deux jours à choisir un langage.

Gérer manuellement la mémoire est très largement un plus gros piège dans la majorité des langages pour la majorité des dev que de laisser ces technos éprouvés le faire pour toi.

La dernière fois que j’ai mal vidé mes listes en mode brainless, je me suis tappé du swap assez méchant.

On peut aussi parler du java et de son ramasse miette à plusieurs niveaux qui font que si tu ne mets pas les variables à null assez vite, tu auras des ralentissement quand le gros gc passera.

Je ne sais pas à quoi tu pense particulièrement mais après des années à développer avec Python, les cas où j’ai eu des vrais raisons de râler après le garbage collector se comptent sur les doigts d’une main.

la seule fois où le gc ne m’a pas satisfait, j’ai profité du fait que mon programme était compatible python3 pour passer à cette version et le gc ne m’a plus embêté.

Non il n’est pas compilé il est interprété ce n’est pas un code binaire qui est éxécuter , mais un interpréteur qui lui fournit du code binaire mais à la voler

Raté, c’est plus compliqué que ça. Le code source que tu écris est compilé vers du bytecode, une sorte de format intermédiaire entre la source et le langage machine de ton processeur. C’est ensuite une machine virtuelle qui l’exécute – comme si c’était ton processeur. Et ça c’est pour son implémentation principale, il y en a d’autres qui font des choses encore plus proches de ce que tu appelles la compilation.

Le point étant surtout que "j’aime pas les langages interprétés" ne veut pas dire grand chose : comme tu peux le constater sur cet exemple, la plupart du temps ça ne fait aucune différence à l’utilisation. Et si ton seul argument est "j’aime pas et puis c’est tout", peut-être que tu gagnerais à y réfléchir un peu avant de te fermer la porte par principe (et probablement aussi parce que tu ne comprends pas très bien de quoi il s’agit, ce qui est plutôt normal) à beaucoup de langages qui pourraient par ailleurs te plaire.

Non il n’est pas compilé il est interprété ce n’est pas un code binaire qui est éxécuter , mais un interpréteur qui lui fournit du code binaire mais à la voler

Raté, c’est plus compliqué que ça. Le code source que tu écris est compilé vers du bytecode, une sorte de format intermédiaire entre la source et le langage machine de ton processeur. C’est ensuite une machine virtuelle qui l’exécute – comme si c’était ton processeur. Et ça c’est pour son implémentation principale, il y en a d’autres qui font des choses encore plus proches de ce que tu appelles la compilation.

Le point étant surtout que "j’aime pas les langages interprétés" ne veut pas dire grand chose : comme tu peux le constater sur cet exemple, la plupart du temps ça ne fait aucune différence à l’utilisation. Et si ton seul argument est "j’aime pas et puis c’est tout", peut-être que tu gagnerais à y réfléchir un peu avant de te fermer la porte par principe (et probablement aussi parce que tu ne comprends pas très bien de quoi il s’agit, ce qui est plutôt normal) à beaucoup de langages qui pourraient par ailleurs te plaire.

Eusèbe

Je préfère tout simplement le langage compiler, avoir la majorité des erreurs qui s’affichent d’un seul coup . Je sais très bien que python n’est pas le principale qui est interprété , c’est juste que je n’aime pas python et que les autres ont l’air très peu maintenue (à part pour php) . Après je suis quasiment sur maintenant de m’atteler à C++ .

Je ne comprends pas ton argument pour les erreurs.

L’étape de "compilation" des langages semi-interprétés qui génèrent du bytecode par exemple disposent d’une analyse syntaxique et sémantique tous comme les autres langages "compilés" que tu as l’air d’aduler au détriments des autres. Il n’y a pas moins d’erreurs levées parce qu’il s’agit d’un langage interprété ou "pas totalement" compilé.

De plus, les machines virtuelles permettent de lever des erreurs d’exécutions généralement plus précises.

Je ne comprends pas ton argument pour les erreurs.

L’étape de "compilation" des langages semi-interprétés qui génèrent du bytecode par exemple disposent d’une analyse syntaxique et sémantique tous comme les autres langages "compilés" que tu as l’air d’aduler au détriments des autres. Il n’y a pas moins d’erreurs levées parce qu’il s’agit d’un langage interprété ou "pas totalement" compilé.

De plus, les machines virtuelles permettent de lever des erreurs d’exécutions généralement plus précises.

JuDePom

Je préfère avoir toute les erreurs d’un coups pour en régler la majorité qui pose problème

Je préfère avoir toute les erreurs d’un coups pour en régler la majorité qui pose problème

en python comme en cpp tu as deux types d’erreurs :

  • erreur de compilation (car python, tout comme php ou java est compilé)
  • erreur d’exécution.

Les erreurs en python, surtout en python3 sont clairement plus parlantes.

Après si tu veux vraiment un langage statique, tu as go qui est procédural, adapté au système et assez simple à prendre en main.

Mais tu as tout à fait le droit de prendre C++, c’est juste que ton argumentation est mauvaise.

Je préfère avoir toute les erreurs d’un coups pour en régler la majorité qui pose problème

en python comme en cpp tu as deux types d’erreurs :

  • erreur de compilation (car python, tout comme php ou java est compilé)
  • erreur d’exécution.

Les erreurs en python, surtout en python3 sont clairement plus parlantes.

Après si tu veux vraiment un langage statique, tu as go qui est procédural, adapté au système et assez simple à prendre en main.

Mais tu as tout à fait le droit de prendre C++, c’est juste que ton argumentation est mauvaise.

artragis

Oui je suis maintenant convaincue de faire du C++ (@Ksass`Peuk) quitte à faire du C#(pour le dotnet) ou bien même du C(le bas niveau) après .

Sinon il existe d’autres alternatives très intéressantes : je pense notamment à Rust, le langage développé par Mozilla qui se veut une alternative à C++, corrigeant de nombreux "défauts" de celui-ci, et qui a été développé comme un langage adapté à la programmation système, concurrentielle, avec de fortes garanties sur la sureté du code. Alors certes il est encore en développement mais commence à être utilisé en production par plusieurs entreprises, la communauté est très dynamique et les ressources sont déjà bien fournies (doc, book officiel, recueil d’exemples et de bonnes pratiques, irc, …). Si tu n’as pas encore arrêté ton choix je te suggère d’aller jeter un oeil à : https://www.rust-lang.org

+7 -0

Sinon il existe d’autres alternatives très intéressantes : je pense notamment à Rust, le langage développé par Mozilla qui se veut une alternative à C++, corrigeant de nombreux "défauts" de celui-ci, et qui a été développé comme un langage adapté à la programmation système, concurrentielle, avec de fortes garanties sur la sureté du code. Alors certes il est encore en développement mais commence à être utilisé en production par plusieurs entreprises, la communauté est très dynamique et les ressources sont déjà bien fournies (doc, book officiel, recueil d’exemples et de bonnes pratiques, irc, …). Si tu n’as pas encore arrêté ton choix je te suggère d’aller jeter un oeil à : https://www.rust-lang.org

LeB0ucEtMistere

Merci ! Je pense peut être l’essayer un jour mais pas tout de suite dans tout les cas

Après, il faut aussi réfléchir en terme de besoin. Que voudras tu faire après ? Veux tu faire de l’embarqué, des jeux vidéos 3D, des applications mobiles…
Par exemple pour faire un jeu vidéo, tu pourras regarder les bibliothèques/frameworks existant répondant à ton besoin. Pour faire une application mobile Android, c’est plus le Java (quoique, ça change)…

Tu veux apprendre la mémoire bas niveau pourquoi ? Si c’est pour savoir comment ça marche, autant voir l’assembleur, t’apprendras encore plus de trucs ;)

Par exemple, j’ai commencé à apprendre à programmer en C/C++ (car c’était le tuto phare du SdZ, il n’y a pas vraiment de raison). Ensuite, j’ai voulu faire un site web donc j’ai appris le PHP et Cie. Et là récemment j’ai appris le C# et le COBOL pour le boulot. Et croit moi, j’aurai jamais choisi ce dernier langage par plaisir :D Et pour le C# ça m’arrange bien, ça me permet d’utiliser Unity.

Pense à ce que tu veux faire, car pour faire juste de l’algorithmique, tous les langages se valent.

+0 -0

Je me souviens de mes cours sur les microprocesseurs avec le cheminement des données dans la RAM et les caches en fonction des commandes ADD, MOVE… C’était vachement intéressant et encore plus concret que ce que j’avais déjà appris avec le C par le passé.

+0 -0

Tu veux apprendre la mémoire bas niveau pourquoi ? Si c’est pour savoir comment ça marche, autant voir l’assembleur, t’apprendras encore plus de trucs ;)

Dark Patate

Moyennement d’accord. Faire des manipulations low-level, à part sur des trucs ultra-spécifiques, c’est plus intéressant en C et C++.

Ksass`Peuk

Je me souviens de mes cours sur les microprocesseurs avec le cheminement des données dans la RAM et les caches en fonction des commandes ADD, MOVE… C’était vachement intéressant et encore plus concret que ce que j’avais déjà appris avec le C par le passé.

Dark Patate

C’est vrai que taper des mov , jmp, call à longueur de journer ça peut être intéressant mais franchement chiant , alors que en C++ il y a beaucoup plus de ressources / doc . Alors que sur de l’asm c’est plutôt "lire de la doc et encore de la doc de mon processeur"

Je me souviens de mes cours sur les microprocesseurs avec le cheminement des données dans la RAM et les caches en fonction des commandes ADD, MOVE… C’était vachement intéressant et encore plus concret que ce que j’avais déjà appris avec le C par le passé.

Dark Patate

Apprendre l’assembleur n’est pas un cours d’architecture processeur malheureusement, même si c’est lié.

Alors que sur de l’asm c’est plutôt "lire de la doc et encore de la doc de mon processeur

Ca s’appelle garder un niveau correct en informatique, voire faire son métier. ;)

+1 -0

Alors :

Et ne me dite pas "Apprend le python" j’en ai déjà fait et je déteste les langages interprétés et surtout le python pour son indentation sémantique

IMHO, je pense que tu devrais essayer de faire abstraction de l’indentation. Une fois que tu as compris le principe et que ton éditeur de texte est bien configuré, tu n’as plus rien à gérer.

"Détester" les langages interprétés ? C’est concept, étant donné que le Python (par exemple) est pré compilé en un bytecode avant d’être exécuté (ce qui revient à le compiler finalement). Et comme dit plus haut, les erreurs de Python sont généralement plus explicites que dans un langage type C.

Peut on faire du bas niveau avec du C++ ?

Oui, il est même possible de programmer des microcontrôleurs (8Kà de RAM) en C++ (regarder à ce propos les vidéos de C++ Weekly sur le C++), des systèmes d’exploitation en C++ et même de simuler du matériel avec (via SystemC) !

Peut on s’amuser avec du C/C++ ?

prendre plaisir ou ce sont des langages très professionnel et dur à écrire ?

Alors les langages "professionnels" ça n’existe pas (de mon point de vue). Tu as des langages qui sont très utilisés en entreprise (Java, C++), de par la qualité de leur documentation, leur connaissance très répandue, leur suite d’outils disponibles (gestion de version, bibliothèque standard, bibliothèques tierces, outils de build automatique, compilateur standard, etc). Certains ont essayé de vendre des langages (je pense à un langage/IDE dont les publicités sont toujours très … explicites sur la façon dont sont vus les développeurs par les annonceurs).

Le C++ est il vraiment un langage horrible comme l’a dit Linus Torvald ?

Mr Torvald a (selon moi) à la fois raison et pas raison :

  • raison car dans le noyau Linux, l’objectif est d’avoir le code le plus explicite possible, alors qu’en C++ beaucoup de choses se font dans ton dos (notamment des allocations mémoire)
  • pas raison, car le C++ apporte de nombreux avantages en termes de code (conteneurs standards, gestion automagique de la mémoire via les pointeurs intelligents, etc)

Ca n’était que mon humble opinion, mais je pense que comme Mr Torvald veut que le code de Linux reste le plus explicite possible, donc il ne voit pas d’intérêt au C++.

Peut aussi bien gérer la mémoire et le matériel que le C ?

Oui, en sachant que tu auras rarement à interagir avec du matériel, de nos jours c’est l’OS qui te donne une interface en C pour manipuler le matériel (utilisable depuis le C++). Sauf si tu fais de la programmation sur µC.

COBOL c’est ma passion, après l’avoir utilisé dans le cadre d’un projet en 2012 je suis tombé amoureux de ce langage! Après avoir découvert Pacbase et la magie des systèmes bancaires, je me suis mis à vraiment croire en COBOL et à sa nouvelle jeunesse.

Non, je plaisante :P Le COBOL ne me plait pas vraiment et je n’ai pas pris le contrat avec la banque au final j’ai préféré la fac ^^.

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