Bonjour, après avoir fait que du developpement web, j'aimerais apprendre un language plus "mathématique". J'ai trouvé ce site sur lequel on peut trouver des problèmes
https://codeforces.com/problemset/problem/4/A
Et j'aimerais savoir quel language je devrais apprendre, j'hésite entre Python et C++ !
J'ai cru comprendre que C++ était plus performant pour ce cas précis mais j'aimerais en même temps apprendre un language qui me permettrais de faire d'autres choses.
Merci beaucoup de vos retours (:
Modifié par vzytoi (15 Oct 2020 - 20:01)
Modérateur
Et l'eau,

Python sans hésiter. C++, c'est pour de l'embarqué....
niuxe a écrit :
Et l'eau,

Python sans hésiter. C++, c'est pour de l'embarqué....


Bon bah je vais partir sur du Python (:
Si tu as une formation à conseiller je suis preneur sinon excellente nuit à toi.
Merci
Modérateur
Bonjour,

Du point de de vue de la résolution de problème (c'est à dire en gros pour écrire des "algorithmes"), il n'y a pas vraiment de différences entre des langages que j'appelle "généralistes" comme C++, Python, Java (ou même javascript ou php). Il peut y avoir des différences en terme de rapidité du code produit, mais ça dépend surtout s'il s'agit d'un langage interprété ou compilé (pour un langage interprété, il y aura en plus du temps d'exécution de "l'algorithme", du temps d'exécution consacré à interpréter le code, alors que pour un langage compilé, l'interprétation n'est faite qu'une fois lors de la compilation), et aussi cela peut dépendre des outils de compilation ou d'interprétation utilisés (certains sont mieux optimisés que d'autres), mais ce n'est pas vraiment lié à la nature du langage. Enfin, toujours en ce qui concerne la rapidité, c'est sûr que des langages comme le C ou le fortran, relativement "dépouillés" (ou l'assembleur qui est encore plus dépouillé) seront plus rapide qu'un langage plus ou moins sophistiqué dont font partie les langages objects comme C++, Java, etc, parce qu'il y aura dans le code machine généré des "sur-couches" de code machine ajoutées par les outils d'interprétation ou de compilation pour gérer la complexité de ces langages (des données sous forme objet, il faut plus de code machine pour les gérer que si c'est juste des cases dans un tableau). Par contre, plus le langage est sophistiqué, moins le développeur aura à faire de lignes de code.

Le choix d'un langage, selon moi, dépend surtout du context dans lequel tu veux l'utiliser. Par exemple, si tu es dans un context web et que côté serveur tu n'as que le php, bah, tu devras faire du php. Si c'est node.js côté serveur, tu feras du javascript. Si tu as besoin de faire une application pour mobile, il te faudra choisir un des langages disponibles pour fabriquer cette application en fonction du mobile ciblé (principalement objective C pour IOS et Java pour Android). Si tu es dans un contexte aérospatiale ou militaire (très procédurier du point de vue assurance qualité) ce sera sans doute Ada. Et ainsi de suite !

Il y a aussi des grosses différences en ce qui concerne les interfaces homme-machine et les bibliothèques de code disponibles. Certains langages, plus utilisés que d'autres, auront des bibliothèques de codes faites par d'autres plus fournies. Mais là encore, ce n'est pas vraiment dû à la nature du langage lui-même mais à son context d'utilisation.

Après, il y a des langages moins répandus (que je range dans la catégorie exotique) qui eux sont complètement différents. Je pense en particulier au Lisp (j'ai eu l'occasion de faire une fois "une ligne de code" en Lisp, ça m'a pris 4 ans et la ligne en question tenait sur 50 pages Smiley lol Smiley lol Smiley lol ), mais il y en a beaucoup d'autres. Ce n'est à utiliser que s'il y a vraiment un projet derrière, pas juste pour apprendre un langage de plus (ou alors simplement pour voir vite fait).

Tout ceci est bien joli, mais concrètement, par quoi commencer ? Le choix doit être essentiellement fait en fonction de la "demande". Je te conseille (dans cet ordre) Java, C++ et Python. Ils te serviront tôt ou tard.

Amicalement,
Modérateur
Bonjour,

niuxe a écrit :
C++, c'est pour de l'embarqué....


Hum ! Hum ! Hum ! Smiley cligne

Je me demande ce que veux dire "embarqué" !

Edit : s'il s'agit des logiciels qui sont installés dans les ordis, alors oui, on est d'accord, C++, c'est pour de "l'embarqué".

Quoi qu'il en soit, C/C++ (ou C# dans le monde windows, ou objective C dans le monde Mac OS), c'est sans doute le langage numéro un pour fabriquer les logiciels qu'on utilise tous les jours sur les ordis (genre Words, Open Office, les navigateurs, etc.).

Cependant, certains de ces logiciels sont tellement gros que certaines parties ont été écrits dans des langages moins répandus.

Les systèmes d'exploitation eux-même comme Windows, Mac OS, Linux sont faits principalement en C/C++/C#/Objective C.

Du coup, si on est développeur et qu'on ne fait plus de web, on aura souvent à faire du C/C++. Difficile d'y échapper sur une vie ! Smiley biggrin

Amicalement,
Modifié par parsimonhi (15 Oct 2020 - 22:19)
Modérateur
parsimonhi a écrit :


Edit : s'il s'agit des logiciels qui sont installés dans les ordis, alors oui, on est d'accord, C++, c'est pour de "l'embarqué".


C'est ce dont je parlais en effet
Modérateur
vzytoi a écrit :


Bon bah je vais partir sur du Python (:
Si tu as une formation à conseiller je suis preneur sinon excellente nuit à toi.
Merci


Commence par ce livre : apprendre python 3.5

ps : actuellement, nous sommes à la 3.9. La 2.7 étant plus supportée officiellement.

La discussion que nous avons eu hier à propose de la série sprintf. En python, tu as ceci :

from math import pi

template = 'le nombre pi (%f) après 3 décimales est de %.3f !'
print(template % (pi,pi))


Pour la concaténation des chaines de caractères, c'est comme en JS :

from math import pi
chaine = 'le nombre pi est ' + pi
print(chaine)


Mais c'est dégueu de faire comme ça. Il vaut mieux utiliser les format string :

from math import pi

# python 3
template = 'le nombre pi {} après 3 décimales est de {.3f} !'
print(template.format(pi, pi)) #il y a des variantes (passage d'une liste, dictionnaire ou en paramètres nommés)

# python +3.8
template = f'le nombre pi {pi} après 3 décimales est de {pi:.3f} !'
print(template)

Modifié par niuxe (15 Oct 2020 - 23:01)
Merci parsimonhi pour ton message (:

En fait je voudrais justement m'ouvrir les champs du possible en découvrant un nouveau language, comme je le disais j'ai toujours fait du web et je voudrais aller voir un peu ailleurs ...
C'est vrai que le C++ à l'air très performant mais uniquement dans son champs du possible alors que j'ai cru comprendre que python ouvrait une porte du possible assez large ( je parles
sans connaissance de cause, j'ai seulement fait du python au lycée ).

Et merci nuixe pour ce livre, c'est la première fois que je me trouve confronter à un livre sur la programmation, je vais bien voir (:

Bonne nuit à vous deux et encore merci !
Modérateur
parsimonhi a écrit :

si tu es dans un context web et que côté serveur tu n'as que le php, bah, tu devras faire du php.,


Non pas du tout.
- Flask (Je le connais un petit peu et il est bien)
- Django Smiley loveu (Courbe d'apprentissage relativement ardue, mais quel bonheur)
- Cherrypy (moins bien que ses prédécesseurs. Dans le livre de Swinnen, il y a une introduction à cet outil)
- Ruby on rail (excellent framework à ce qu j'ai pu voir. Cela dit, le Ruby n'est peut être pas une bonne idée
- Sinatra (Ruby)
- J2E (Java)
- .net
- Sharepoint
- etc. etc.

L'avantage du Python, Java, C# (.net), tu peux faire beaucoup plus de choses que php. Et oui, php sans Apache ou une base de données, tu fais vraiment pas grand chose. De plus le php a une syntaxe qui commence vraiment à être bien pourrie. Par contre, il a acquis ses lettres de noblesses sur de très bons nombreux points : industrialisation, sécurité, poo, souplesse, procédurale, etc.

parsimonhi a écrit :
Je te conseille (dans cet ordre) Java, C++ et Python.


Perso, je mettrai Python en premier. Bien que je ne pas les autres langages, voici par exemple ce que j'ai fait dernièrement là où je bosse :
Une fois que les fichiers front compilés, et si on veut passer ses derniers sur un server cible, on doit les envoyé en ftp. Ce qui a été fait :
un petit script python executé par un terminal envoyant les ficheirs sur le serveur en ftp avec choix du type de fichiers : template smarty, css, js.
Modifié par niuxe (15 Oct 2020 - 23:27)
niuxe a écrit :



from math import pi

template = 'le nombre pi (%f) après 3 décimales est de %.3f !'
print(template % (pi,pi))




Finalement en regardant les language ont des aspects très similaire ...
Python à l'air un peu moins chiant avec les point virgules heureusement Smiley fou

niuxe a écrit :


L'avantage du Python, Java, C# (.net), tu peux faire beaucoup plus de choses que php. Et oui, php sans Apache ou une base de données, tu fais vraiment pas grand chose. De plus le php a une syntaxe qui commence vraiment à être bien pourrie. Par contre, il a acquis ses lettres de noblesses sur de très bons nombreux points : industrialisation, sécurité, poo, souplesse, procédurale, etc.



Python peut gérer des bases de données sans SQL ou autre ?
Modifié par vzytoi (15 Oct 2020 - 23:25)
Modérateur
vzytoi a écrit :


Finalement en regardant les language ont des aspects très similaire ...
Python à l'air un peu moins chiant avec les point virgules heureusement Smiley fou

la syntaxe est très élégante Smiley cligne (c'est dans les gènes du langage Smiley cligne )
vzytoi a écrit :

Python peut gérer des bases de données sans SQL ou autre ?


mongoDB, cassandra... (avec intégrité des données Smiley cligne )
mysql, postgresql, sqlite, oracle, etc. etc.

Avec Python, tu peux faire du jeu vidéo, du réseau, des drivers, etc. si tu veux.
Modifié par niuxe (15 Oct 2020 - 23:33)
niuxe a écrit :

Perso, je mettrai Python en premier. Bien que je ne pas les autres langages, voici par exemple ce que j'ai fait dernièrement là où je bosse :
Une fois que les fichiers front compilés, et si on veut passer ses derniers sur un server cible, on doit les envoyé en ftp. Ce qui a été fait :
un petit script python executé par un terminal envoyant les ficheirs sur le serveur en ftp avec choix du type de fichiers : template smarty, css, js.


Ça m'a l'air un peu compliqué j'aurais préférer utiliser fileZilla (:
Modérateur
non pas du tout. Ça permet d'automatiser et ne pas se casser la tête. Smiley cligne La fainéantise chez les devs.... Aujourd'hui, j'ai fait un truc qui permet d'automatiser encore des trucs sur le projet en cours. Smiley cligne
Bon en bien merci beaucoup pour vos aides !!!
Je vais m'essayer au python voir si j'accroche avec ce livre de 473 PAGES ( au secours )
Si j'ai un problème niuxe tu seras obligé de m'aider du coup haha (;
Bonne nuit à vous
Modérateur
Bonjour,

niuxe a écrit :


Non pas du tout.
- Flask (Je le connais un petit peu et il est bien)
- Django Smiley loveu (Courbe d'apprentissage relativement ardue, mais quel bonheur)
...
- etc. etc.


Je disais juste que si sur le serveur, y a que php de dispo, tu fais du php.

Après, je suis bien d'accord qu'il y a plein d'autres possibilités ... si c'est effectivement disponible sur le serveur, mais c'est très aléatoire ! Smiley smile

Amicalement,