IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Selon vous, quel est le meilleur langage pour apprendre la programmation ?

Votants
278. Vous ne pouvez pas participer à ce sondage.
  • C

    85 30,58%
  • C++

    36 12,95%
  • Python

    56 20,14%
  • Ruby

    16 5,76%
  • Java

    29 10,43%
  • C#

    12 4,32%
  • PHP

    9 3,24%
  • Matlab

    9 3,24%
  • HTML/CSS

    8 2,88%
  • OCaml

    14 5,04%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
Débats sur le développement - Le Best Of Discussion :

Quel est le meilleur langage pour débuter la programmation ?


Sujet :

Débats sur le développement - Le Best Of

  1. #241
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Et je ne pense pas que sur ce genre de processeur, on s'amuse à faire tourner un interpréteur Python .
    Non, une JVM
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  2. #242
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    le raspberrry a l'origine était concue pour l'éducation, pour coder en python dans les écoles....

    J'ai un raspberry chez moi et je code des carte arduino en python.

    C'est accessoirement ce que l'on se tue à dire : le C en premier langage dégoute beaucoup de monde. Il est de fait parfait pour filtrer et ne garder que les motivés. Du coup selon le public (genre un ado qui veut découvrir la programmation), c'est une catastrophe.
    Pourquoi filtrer ? pourquoi vouloir garder que les "meilleurs", les autres ont aussi droit a leurs chance, déja pour leurs cultures personnels, se dire qu'on a fait un pendu/puissance4 en python c'est toujours mieux que de se dire l'informatique c'est trop dur et c'est de la merde.

    Moi par exemple quand j'ai commencer de l'arduino, je me suis uniquement contenter de faire allumer une led depuis un fixe sous windows, c'était basique, mais sa a enrichie mes connaissances. Aujourd'hui je suis en train de faire un petit robot capable de se déplacer dans une pièce, avec un raspberry sous le capot.

    Moi je considère qu'il faut commencer par le plus simple, le plus magique, et ensuite aller vers un niveau de difficulté supérieure.
    Je me rend compte que mon analyse est fausse, car j'ai tendance a partir du principe que la personne et une jeune étudiant de collège/lycée, mais c'est vrai que y'a pas que eux qui peuvent débuter en informatique, mais pour mois un jeune de 10-20 ans doit commencer par quelque chose de simple, sinon il risque de s'ne dégoutter et passer a coter quelque chose de sympa.

  3. #243
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Citation Envoyé par Logan Mauzaize Voir le message
    Non, une JVM
    Sur les tout petits processeurs ?

    Je sais qu'on fait tourner une JVM sur certains processeurs quand on privilégie surtout la sécurité pour bénéficier du GC, etc. mais il me semble que ces processeurs sont tout de même un peu plus "costaux" non?
    Après, c'est pré-compilé, donc cela reste un peu plus performant qu'un langage 100% interprété. Quand j'ai dit 10c, j'ai sorti un ordre de grandeur, mais en fonction de la quantité, du fondeur, ... le prix peut varier.
    Il y a donc peut-être des processeurs à 10c qui font tourner des JVM, mais je pense que certains processeurs moins performant supporteraient mal une JVM. Après, cela dépend aussi des performances attendues.

    Il y a d'ailleurs des processeurs capables d'interpréter directement le bytecode Java si je ne m'abuse.

    Ce que je veux dire, c'est qu'on ne peut pas toujours utiliser Python pour des raisons dû aux contraintes du support et du projet.
    Après, dans le milieu professionnel, on aura pas toujours le choix du langage sur un projet donné et on sera déjà très content si on peut choisir une des bibliothèque utilisées, mais c'est encore un autre sujet.

  4. #244
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Java tourne bien sur Raspberry ...
    Par ailleurs les spécifications du Home Gateway Initiative repose sur Java et OSGi.

    Sinon des systèmes d'exploitation comme WebOS sont fait pour exécuter du JavaScript. Et l'exécutable de io.js pèse moins de 9Mo (Windows 64-bits), largement de quoi tenir dans une ROM.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #245
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Citation Envoyé par Logan Mauzaize Voir le message
    Java tourne bien sur Raspberry ...
    On a jamais dit le contraire…

    http://www.kubii.fr/raspberry-pi/76-...111000507.html
    Modèle A+ 27,75€
    • 256MB RAM ;
    • 700MHz ;


    Vous pensez sérieusement qu'on va utiliser cela pour certains objets électroniques vendus à 1 ou 2€ unité ???

  6. #246
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    euh, je rappelle que je parlais du raspberry pour débuter, c'est d'ailleurs sont but d'origine, l'éducation.

    Pour apres vous avez dévier du sujet en parlant qu'il fallait du C pour faire des application sultra performante..., mais aujourd'hui vec les pc qu'on as, un débutant en prog veut programmer pour voir ce que c'est, pas développer un OS (y'en as parfois sur les forum "Bonjour, je veut faire un os mais je ne sais pas comment faire...)" ni une application ultra optimiser, mais juste pour faire un basique, comme un pendu ou un puissance4.


    Au final, l'objectif c'est que la personne y arrive a faire sa petite application, peu importe le langage utiliser (C, python, javascript...), car pour un non informaticien, c'est un exploit de crée un mini jeu, et il a raison, c'est comme si moi je réparait tous seul le toi d'une maison, j'ai aucune connaissance en maçonnerie, sa ne pourrait qu'enrichir ma culture général.

  7. #247
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Au final, l'objectif c'est que la personne y arrive a faire sa petite application, peu importe le langage utiliser (C, python, javascript...), car pour un non informaticien, c'est un exploit de crée un mini jeu, et il a raison, c'est comme si moi je réparait tous seul le toi d'une maison, j'ai aucune connaissance en maçonnerie, sa ne pourrait qu'enrichir ma culture général.
    Oui et non.

    Cela dépend de l'objectif de l'apprentissage.
    Au niveau amateur, oui, c'est juste pour faire ce qu'il veut.
    Au niveau formation académique, non. Le langage importe, lequel, c'est là le débat .

    Citation Envoyé par sazearte Voir le message
    euh, je rappelle que je parlais du raspberry pour débuter, c'est d'ailleurs sont but d'origine, l'éducation.
    Tu as dit :
    Tu fait beaucoup plus de chose en python qu'en C
    Auquel j'ai répondu :
    As-tu des exemples ? Une chose possible en python et impossible en C ?
    CodeurPlusPlus a contre-argumenté :
    Citation Envoyé par CodeurPlusPlus Voir le message
    Ouais. Vas écrire des applis haute performance en Python... ou un système d'exploitation... ou du logiciel embarqué dans un avion...
    Donc en disant qu'il y a des choses possibles en C mais pas envisageable en Python. Donc que "Tu fait beaucoup plus de chose en python qu'en C" est faux.

    Tu lui as répondu et je t'ai dit :
    @sazearte : tu loupes totalement l'argument de CodeurPlusPlus.
    En gros, plus un langage permet de choses, plus, à priori, il est intéressant de l'apprendre.
    Il vaut mieux apprendre un langage qui permet de faire plein de choses que d'en apprendre 50 pour faire 50 choses différentes.

    Après, si on débute par un langage, il est bien que ce langage nous suive au maximum tout au long de la scolarité/de l'apprentissage, nous permette d'appréhender d'autres langages, soit utilisé dans le monde de l'entreprise. Plutôt que de commencer par un langage puis de le jeter. Bref, une sorte de ligne directrice.
    Je pense que c'est une des raisons (bonnes ou mauvaises) pour lesquelles on commence par le C puis qu'on enchaîne par du C++ dans certains IUT et écoles d'ingénieurs.

    Après, le but, c'est de former tout une promo hétérogène, certains qui aiment le bas niveau, d'autres qui n'aiment pas. Il faut bien faire un choix et on ne peut malheureusement pas plaire à tous.

  8. #248
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    J'en ai marre de ne pas pouvoir éditer ><

    Avant "En gros, plus un langage permet de choses, plus, à priori"

    On a donc essayé de te démontrer que dans certaines circonstances, on a besoin du C à la place du Python pour prouver le point "on peut faire des choses en C pas forcément envisageable en Python" pour contre-argumenter ton "Tu fait beaucoup plus de chose en python qu'en C".

  9. #249
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Tu fait beaucoup plus de chose en python qu'en C
    Oui je reconnais que j'ai tord

    Donc en disant qu'il y a des choses possibles en C mais pas envisageable en Python. Donc que "Tu fait beaucoup plus de chose en python qu'en C" est faux.
    Oui on peut faire plus de chose techniquement en C qu'en python, mais c'est pas forcement réalisable par le premier venu, alors qu'en python, un amateur qu'y connait rien en info pourras faire plus de chose, grâce a la pléthore de bibliothèque qui lui mâche le travail.
    Si je cite ton exemple, en C on peut faire un OS, mais qui ces faire un OS ? 0.001% des développeurs (dont je ne fais pas partie).

    Je reconnais que j'ai très mal exprimée mon propos.


    Je pense pas qu'il de débat a faire, car effectivement, sa dépend de la personne, de sa motivation et de ces objectifs, quand j'étais petits, je voulais juste faire un jeu, pour en faire un et c'est tous, j'avais fais a l'époque (j'avais 11ans) un puissance4 (qui marchait a moitie alors imaginer en C le résultat ) en python et sa m'a donnée ensuite gout a l'informatique, et que je fais mes études la dedans aujourd'hui. Mais oui, heureusement je ne suis pas une généralité.

    Pour un banquier, on doit l'orienter plutôt sur du java ou du cobol ?

  10. #250
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Citation Envoyé par sazearte Voir le message
    alors qu'en python, un amateur qu'y connait rien en info pourras faire plus de chose, grâce a la pléthore de bibliothèque qui lui mâche le travail.
    Il y a beaucoup de bibliothèques en C, le plus dur étant parfois de les trouver et/ou de les connaître, je le reconnais.

    Si je cite ton exemple, en C on peut faire un OS, mais qui ces faire un OS ? 0.001% des développeurs
    Ce n'est pas le mien^^.

    Pas forcément faire des OS, mais faire de la programmation bas niveau, écrire certains drivers, certains modules, …


    Pour un banquier, on doit l'orienter plutôt sur du java ou du cobol ?
    Cobol, sans hésiter. Il me semble que c'est très demandé par les banques.

    Après "banque", c'est très vague. Le système monétique est assez immense donc le mieux est de savoir ce qu'il veut faire exactement.

  11. #251
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Vous pensez sérieusement qu'on va utiliser cela pour certains objets électroniques vendus à 1 ou 2€ unité ???
    Tu parlais de Lave-linge, et c'est le genre de truc que tu trouves dedans comme tout ce qui est "home appliance". Pour des trucs à 1-2€, je pense plutôt qu'ils n'ont pas de "processeur" et que ce sont des trucs "codés" en VHDL ...
    C'est plus vraiment du logiciel.

    Autrement ma remarque sur la JVM, c'était surtout une boutade ...

    Citation Envoyé par Neckara Voir le message
    Au niveau formation académique, non. Le langage importe, lequel, c'est là le débat .
    Je suis pas convaincu ... Déjà cela suppose que tu vas apprendre un seul langage.

    Effectivement, la notion d'objectif est fondamentale. Apprendre l'algorithmie, le système ou simplement l'informatique au sens large ne reposera surement pas sur les mêmes langages.

    Citation Envoyé par Neckara Voir le message
    En gros, plus un langage permet de choses, plus, à priori, il est intéressant de l'apprendre.
    Il vaut mieux apprendre un langage qui permet de faire plein de choses que d'en apprendre 50 pour faire 50 choses différentes.
    Je ne suis pas d'accord surtout pour une formation académique. Apprendre de nouveaux langages c'est apprendre de nouveaux paradigmes, de nouvelles façons de penser, de nouvelles idées, etc.
    Tu peux faire qqch qui ressemble à de la programmation fonctionnelle en C et en C++ (et à priori dans tout langage objet) mais cela n'aura rien avoir avec ce que tu peux faire en Lisp/Haskell. Et je parle pas des autres formes de langages déclaratifs (HTML, SQL, Prolog, etc.)

    Citation Envoyé par Neckara Voir le message
    Après, si on débute par un langage, il est bien que ce langage nous suive au maximum tout au long de la scolarité/de l'apprentissage, nous permette d'appréhender d'autres langages, soit utilisé dans le monde de l'entreprise. Plutôt que de commencer par un langage puis de le jeter. Bref, une sorte de ligne directrice.
    Je pense que c'est une des raisons (bonnes ou mauvaises) pour lesquelles on commence par le C puis qu'on enchaîne par du C++ dans certains IUT et écoles d'ingénieurs.
    Dans mon IUT l'objectif était clair : formé des techniciens qui s'adaptent facilement à un nouveau langage ou une nouvelle technologie. Après l'objectif d'une formation peut-être de former des spécialistes d'une techno mais je trouverai ça vraiment dommage.

    Citation Envoyé par Neckara Voir le message
    Après, le but, c'est de former tout une promo hétérogène, certains qui aiment le bas niveau, d'autres qui n'aiment pas. Il faut bien faire un choix et on ne peut malheureusement pas plaire à tous.
    Si justement en faisant plein de choses différentes
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  12. #252
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Autrement ma remarque sur la JVM, c'était surtout une boutade ...
    Citation Envoyé par Logan Mauzaize Voir le message
    Non, une JVM
    Citation Envoyé par Logan Mauzaize Voir le message
    Java tourne bien sur Raspberry ...
    Laquelle ?



    Citation Envoyé par Logan Mauzaize Voir le message
    Tu parlais de Lave-linge, et c'est le genre de truc que tu trouves dedans comme tout ce qui est "home appliance". Pour des trucs à 1-2€, je pense plutôt qu'ils n'ont pas de "processeur" et que ce sont des trucs "codés" en VHDL ...
    C'est plus vraiment du logiciel.
    Je reconnais que je ne sais pas très au fait de ce qu'il y a dans un lave-linge.
    Ce que je voulais dire, c'est qu'il y a des tous petits processeurs pas cher du tout avec très très peu de performances sur lesquels on va très souvent "préférer" utiliser du C.

    Les trucs à 1/2€, c'est surtout le prix du plastique .
    Après ce qu'il y a dedans, cela va dépendre de ce qu'on fait, des performances demandée, du budget, mais parfois, il me semble qu'il y a des processeurs.

    Je suis pas convaincu ... Déjà cela suppose que tu vas apprendre un seul langage.
    Je veux dire commencer par un langage et l’approfondir un peu plus que les autres. On peut aussi approfondir plusieurs langages, mais pas 50.

    Je ne suis pas d'accord surtout pour une formation académique. Apprendre de nouveaux langages c'est apprendre de nouveaux paradigmes, de nouvelles façons de penser, de nouvelles idées, etc.
    Ce n'est pas ce que je voulais dire.
    Il y a des langages plus adaptés que d'autres pour certaines applications et des groupes de langages très différent que d'autres.
    Le but est d'avoir un large panel.

    Ce que je veux dire, c'est qu'on va éviter d'apprendre des langages trop spécifique et se concentrer plus sur des langages où on aura le plus de chance de retrouver partout.
    Un langage utilisé tous les 32 du mois sera, à priori, moins intéressant qu'un langage qu'on peut retrouver dans tous les domaines.
    Après si ce langage est fait parti d'une "famille" de langage très intéressant (ex. assembleur), cela peut être bien de le voir. En revanche, ce ne sera peut-être pas le langage par lequel commencer ni même celui qui sera le plus intéressant à approfondir je pense.

    Si justement en faisant plein de choses différentes
    Oui bien sûr, mais là on parlait du langage pour commencer la programmation. Lequel utiliser en tout premier.


    En gros, le but serait de commencer par un langage assez répandu dans divers domaines, qui soit proche d'autres langages, ... afin de pouvoir l'approfondir tout au long de la formation.
    Ce qui n'empêche pas d'apprendre d'autres langages.

  13. #253
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Laquelle ?


    Ceci dit Java semble avoir le vent en poupe dans le domaine du IoT/M2M, c'est un fait. Mais ce n'est pas absolument pas mon rayon.

    Citation Envoyé par Neckara Voir le message
    Je veux dire commencer par un langage et l’approfondir un peu plus que les autres. On peut aussi approfondir plusieurs langages, mais pas 50. [...]
    En gros, le but serait de commencer par un langage assez répandu dans divers domaines, qui soit proche d'autres langages, ... afin de pouvoir l'approfondir tout au long de la formation.
    Ce qui n'empêche pas d'apprendre d'autres langages.
    Ok, je comprends mieux le point de vue. Ce n'est pas idiot.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  14. #254
    Membre actif Avatar de Tr0n33
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2014
    Messages : 69
    Points : 220
    Points
    220
    Par défaut
    Débat intéressant qui tourne autour de l'apprentissage au final.

    Sur mon expérience personnel j'ai appris comme suit à l'université :

    Un langage abstrait pour simuler les cours d'algorithmie (la théorie)
    Un langage pratique pour le mettre en oeuvre : C. Quelques années plus tard il a été remplacé par PYTHON qui est un choix, à mon sens plus judicieux. Le C fait intervenir des notions de gestion mémoire, de pointeurs, qui n'ont rien à voir initialement avec la programmation d'algorithme "simple". Le PYTHON est donc plus utile pour ce domaine particulier.
    Un langage pour apprendre les théories de la compilation, un peu l'électronique : Assembleur, puis C (on avait quelques éléments en ADA et en FORTRAN).
    Un langage formel pour l'ingénerie des systèmes critiques : Atelier B et Alta Rica
    Un langage orienté objet pour mettre en oeuvre des concepts plus proche du génie logiciel : JAVA

    Comme toute bonne réponse, le langage que l'on apprend dépend aussi de la façon dont nous souhaitons apprendre l'informatique. Pour les jeunes, la programmation des Raspberry et autres Arduino (ou encore mieux les PCDuino), sont une chance pour nos têtes blondes. Si j'avais eu ça en 1990, j'aurais été le plus heureux des mômes. Raspberry est d'une simplicité enfantine et permet de donner le goût aux jeunes. Par contre pour débuter, il y a deux choix : soit l'on souhaite avoir une approche machine & hardware (proche de l'électronique), soit on souhaite avoir une approche logiciel (proche de l'utilisateur final).

    Généralement, j'ai enseigné en premier le PYTHON pour l'algorithmie, et derrière je fais toujours de l'Assembleur pour expliquer le fonctionnement mathématique d'une machine. Ensuite c'est en fonction de l'intérêt des individus : soit ils préfèrent le côté machine, gestion mémoire, grammaire, théorie de la compilation, auquel cas j'enseignerais plutôt le C en premier, soit ils préfèrent le côté utilisateur final, application et programmation pragmatique, auquel cas j'enseigne le JAVA.

    Je dirais donc qu'il y a plusieurs étapes : donner le goût de la programmation (tous les nouveaux composants Raspberry sont fantastiques pour ça), enseigner les abstractions fondamentales (PYTHON pour l'algorithmie, C pour l'approche Machine), puis se spécialiser dans un domaine informatique.

    J'ai donc répondu plutôt le PYTHON qui me semble vraiment bien pour les débutants (J'ai vu tellement d'étudiants bifurqués vers d'autres filières en voyant la complexité du C...).
    "Dans une hiérarchie, tout employé a tendance à s'élever à son niveau maximum d'incompétence" - Principe de Peter
    "Il n’y a pas de langage informatique dans lequel vous ne puissiez pas écrire de mauvais programmes" - Dérivation de Murphy
    Un scientifique doit douter de tout et connaître l'échec : http://fr.wikipedia.org/wiki/Corr%C3%A9lation_illusoire

    Tr0n

  15. #255
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Norbertd
    Selon moi le meilleur langage pour débuter la programmation est le langage C.

  16. #256
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Le meilleur langage doit être simple, performant, multi-plateforme et dois pouvoir faire tous et n'importe quoi et productif (dans le sens ou un programme dois se coder vite)

    J'aurais tendance à dire Python, car:

    Il est simple, en plus le langage force l'indentation (pratique pour les débutants)
    Multi-plateforme, il tourne sous Windows, Mac et Linux, sur android apparemment, mais j'ai pas testé.

    Il a tous les concepts "moderne" (les objets...etc)

    Performant: On peut débattre avec des benchmark, mais celui qui sait bien codé en python, peut facilement faire un code plus performant que du code C/C++. La bibliothèque numpy par exemple utilise des algo codé en C (pour la gestion mémoire), et des algo codé en fortran (pour les calcules), le mélange des 2 donne de très bonne perf.

    J'ai découvert il y'a peu une bibliotheque ultra puissante, pyOpenCl, en seulement 3 ligne de code, je peut dire a python, de lancer un calcule sur le cpu, ou mes cartes graphiques, avec cette outil magique, je peut lancer un calcule en parralele sur mon processeur, ma carte Nvidia, et une AMD, le tous en meme temps, en seulement 3 ligne de code, coupler avec la puissance de numpy !

    python, avec ces milliers de bibliothèques peut tous faire: du web, de l'arduino, du calcules scientifiques, des jeux 3D...

    Enfin, sa dépend du développeur, mais globalement python est plus productif que du C, dans le sens ou un programme se code plus rapidement en Python qu'en C.

    Et enfin, en python on peut tricher, on peut mettre des bouts de code en C (qu'on peut ensuite lancer sur le gpu avec pyopencl si on le souhaite)

    Et enfin python et le seul langage de prog actuel qui intègre un gestionnaire de package et qui gère les dépendances , c'est PIP.
    J'ai besoin d'une bibliothèque, je fais pip install mabibliotheque et tous se télécharge/s'installe tous seul.

    Un exemple basique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import numpy as n
    import pyopencl as cl
    import pyopencl.array as cl_array
    **
    def test1():
    ****ctx = cl.create_some_context()
    ****queue = cl.CommandQueue(ctx)
    **
    ****myList = [1, 2, 3]
    ****a=n.array(myList)
    
    ****a_dev = cl_array.to_device(queue, a)
    ****a_dev = a_dev * 10000000
    ******
    ****a = a_dev.get()
    *****
    ****print(a)
    ******
    test1()

  17. #257
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Le meilleur langage doit être simple, performant, multi-plateforme et dois pouvoir faire tous et n'importe quoi et productif (dans le sens ou un programme dois se coder vite). J'aurais tendance à dire Python
    C'est vrai que cela ne semble pas nécessairement un mauvais choix.

    Citation Envoyé par sazearte Voir le message
    Il est simple, en plus le langage force l'indentation (pratique pour les débutants)
    Ca dépend du type de débutant. Il faut déjà quelqu'un qui est des notions de "caractères blancs" pour bien comprendre. Et je pense qu'insister sur la configuration de l'éditeur et sur comment vérifier/afficher ces caractères sera une étape indispensable.

    Citation Envoyé par sazearte Voir le message
    Performant: On peut débattre avec des benchmark, mais celui qui sait bien codé en python, peut facilement faire un code plus performant que du code C/C++.
    Il faut peut-être pas pousser mémé dans les orties non plus. De toutes façons, sur le plan des performances, je ne pense pas que ce soit un critère pour l'apprentissage. Tant que les temps de réponse sont correctes pas besoin d'une machine de guerre.

    Citation Envoyé par sazearte Voir le message
    Enfin, sa dépend du développeur, mais globalement python est plus productif que du C, dans le sens ou un programme se code plus rapidement en Python qu'en C.
    Au delà de la rapidité de devéloppement, c'est surtout qu'en Python on est moins sujet à faire des erreurs qu'en C. Que ce soit avec les pointeurs ou les conversions de type.

    Citation Envoyé par sazearte Voir le message
    Et enfin, en python on peut tricher, on peut mettre des bouts de code en C (qu'on peut ensuite lancer sur le gpu avec pyopencl si on le souhaite)
    Sauf que dans le cadre d'un apprentissage cela ne s'applique pas.

    Citation Envoyé par sazearte Voir le message
    Et enfin python et le seul langage de prog actuel qui intègre un gestionnaire de package et qui gère les dépendances , c'est PIP.
    J'ai besoin d'une bibliothèque, je fais pip install mabibliotheque et tous se télécharge/s'installe tous seul.
    Sauf que PIP est uniquement intégré à l'auto-installeur mais ne fait pas partie ni du langage, ni du runtime.
    Et c'est loin d'être le seul langage à disposer de ce genre d'outils : Ivy/Maven/Gradle pour Java, NPM/Bower/... pour JavaScript, Clib pour le C, etc.
    Alors que nativement Ceylon, Dart, Go (et surement d'autres) intègrent un système de gestion de "package".


    Un point important tout de même pour Python, c'est qu'il s'agit du langage privilégié des librairies de Machine Learning.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  18. #258
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 951
    Points
    32 951
    Billets dans le blog
    4
    Par défaut
    Je suis moi-même grand fan du Python, en particulier pour les débutants pour toutes ces raisons, de cette syntaxe one-liner, mais
    Citation Envoyé par sazearte Voir le message
    facilement faire un code plus performant que du code C/C++
    va falloir le prouver. Et se lever tôt.
    Plus performant ? Quand Python est lui-même écrit en C, déjà ça part mal.
    Mais facilement ? Si tenté que ce soit possible, ça serait certainement pas facilement.
    Nous avions comparé Python et C++ à mon précédent job, le constat était clair : Python est ~100x plus lent qu'un même code en C++. Toutes les structures "simples" : boucles, if, sont celles qui souffrent le plus. Totalement optimisé par le compilo en C++, Python n'a pas cette chance même avec ses fichiers pré-compilés.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  19. #259
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    Plus performant ? Quand Python est lui-même écrit en C, déjà ça part mal.
    Mais facilement ? Si tenté que ce soit possible, ça serait certainement pas facilement.
    Nous avions comparé Python et C++ à mon précédent job, le constat était clair : Python est ~100x plus lent qu'un même code en C++. Toutes les structures "simples" : boucles, if, sont celles qui souffrent le plus. Totalement optimisé par le compilo en C++, Python n'a pas cette chance même avec ses fichiers pré-compilés.
    Toutes les structures "simples" : boucles, if, sont celles qui souffrent le plus.
    Oui, le dessus je suis d'accord, mais une boucle if/for c'est pas sa qui prend des ressources dans un programme, moi je parlais des truc gourmand, comme du calcules sur des tableaux/matrices.

    Python, de base oui il est lent, mais si tu utilise des bibliothèques comme numpy non.
    Numpy à des parties codé en C, mais aussi en Fortran, en fortran certains calcules sont plus rapide qu'en C.

    Sauf que PIP est uniquement intégré à l'auto-installeur mais ne fait pas partie ni du langage, ni du runtime.
    Et c'est loin d'être le seul langage à disposer de ce genre d'outils : Ivy/Maven/Gradle pour Java, NPM/Bower/... pour JavaScript, Clib pour le C, etc.
    Je me suis mal exprimé, je voulais dire que c'était le premier langage qui à possédé ce système, aujourd'hui (sous python3) PIP est fournie de base avec le langage. C'est un programme a part mais je vois pas ou est le problème ?

    Sauf que dans le cadre d'un apprentissage cela ne s'applique pas.
    Oui, je voulais dire que si tu as une boucle for qui est lente, tu la code en C. Remarquer on peut aussi faire l'inverse, en C on fait un include #python.h et on peut aussi codé en python.

  20. #260
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par sazearte Voir le message
    Performant: On peut débattre avec des benchmark, mais celui qui sait bien codé en python, peut facilement faire un code plus performant que du code C/C++. La bibliothèque numpy par exemple utilise des algo codé en C (pour la gestion mémoire), et des algo codé en fortran (pour les calcules), le mélange des 2 donne de très bonne perf.
    Ton argument ne vaut que si l'essentiel du temps CPU de ton programme est occupé par des besoins tellement standardisés qu'il existe des bibliothèques adaptées à tes besoins.

    En pratique c'est rarement le cas, mais ça l'est peut-être dans ton domaine particulier (calculs statistiques ?). Dans l'exemple sur lequel je travaille moi, il n'existe aucune biblio dans aucun langage, les calculs peuvent prendre des jours et le GPU n'est pas adapté (peu d'opérations en virgule flottante, ce sont les branchements et les accès mémoire erratiques qui dominent, avec un gros graphe en mutation constante).

    Au passage tu mentionnes le jeu mais combien de jeux commerciaux ont-ils été réalisés avec Python ? Très peu j'imagine. Bibliothèque ne veut pas dire bibliothèque adaptée et il y a souvent des besoins spécifiques mais qui réclament des performances (AI, simulation, génération procédurale, etc).


    Oui, je voulais dire que si tu as une boucle for qui est lente, tu la code en C.
    Encore une fois tout ne se résume pas à des opérations sur des tableaux de nombres. Si ton problème porte sur un graphe de nombreux objets alors il te faudrait maintenir toute ta structure de donnée en C et exposer des API pour chaque manipulation possible. Autant tout coder en C.


    Et enfin python et le seul langage de prog actuel qui intègre un gestionnaire de package et qui gère les dépendances , c'est PIP.
    Ce n'est pas le seul et à vrai dire le fait que tu considères ce genre d'outils comme indispensable relève d’une tare du langage : l'absence d'une bibliothèque de base suffisamment riche, ce qui oblige à systématiquement recourir à des dépendances.

    Le pire dans ce domaine est sans doute javascript, pour lequel tu as besoin de dizaines de dépendances (qui ne marcheront plus dans un an) rien que pour arriver à bâtir un pipeline de build.

    Par exemple avec C# il est rare qu'une bibliothèque requiert autre chose que les seules bibliothèques standard. Parfois une biblio native à la rigueur. Ce qui ne l'empêche pas d'avoir un Package Manager calqué sur celui de Python & co, qui ici ne fait gagner qu'une minute par an.

Discussions similaires

  1. Quel est le meilleur langage pour débuter la programmation ?
    Par Amine Horseman dans le forum Actualités
    Réponses: 144
    Dernier message: 28/11/2014, 18h06
  2. Quel est le meilleur langage pour la reconnaissance d'empreintes ?
    Par hanou88 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 09/02/2011, 08h58
  3. Débat : Quel est le meilleur langage pour coder en open-source ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 15
    Dernier message: 17/08/2009, 11h54
  4. Quel est le meilleur langage pour la portabilité : Windows & Linux (voire Mac) ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 57
    Dernier message: 27/11/2007, 00h45
  5. Réponses: 4
    Dernier message: 12/05/2007, 01h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo