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: Quels sont les langages de programmation à conseiller à un débutant ?

Votants
219. Vous ne pouvez pas participer à ce sondage.
  • Assembleur

    6 2,74%
  • Basic

    17 7,76%
  • Bash

    2 0,91%
  • C

    53 24,20%
  • C++

    35 15,98%
  • C#

    62 28,31%
  • Cobol

    0 0%
  • Delphi

    2 0,91%
  • Fortran

    3 1,37%
  • Go

    0 0%
  • Java

    84 38,36%
  • Javascript

    38 17,35%
  • Kotlin

    23 10,50%
  • Ladder

    0 0%
  • Pascal

    91 41,55%
  • PHP

    18 8,22%
  • Python

    124 56,62%
  • Ruby

    10 4,57%
  • Rust

    50 22,83%
  • Swift

    0 0%
  • Typescript

    63 28,77%
  • Visual Basic

    7 3,20%
  • VBA

    14 6,39%
  • VHDL

    0 0%
  • Autres (à préciser)

    4 1,83%
  • Je ne sais pas

    0 0%
Sondage à choix multiple
Débats sur le développement - Le Best Of Discussion :

Les étudiants de première année doivent-ils être initiés à la programmation en s’appuyant sur Python ou Java


Sujet :

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

  1. #41
    Membre éprouvé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2015
    Messages : 270
    Points : 1 059
    Points
    1 059
    Par défaut Ce n'est que mon opinion...


    Perso, je pense qu'il faut d'abord apprendre "les bases" avant d'utiliser des langages de plus haut niveau. Je dirais donc,

    • Le C, qui est un langage "relativement" facile a apprendre, mais parfois difficile a utiliser correctement. Cela permettra de mettre en évidence à l'étudiant les différents problèmes universelles en programmation: Typage, gestion de la mémoire et pointeurs. Et au passage, un peu d'assembleur pour comprendre ce qui est fait d'un "code source" lorsqu'on le compile peut être très utile.
    • En // je dirais Pascal, pour l'étude de la programmation structurée, et l'études des principales "Structures de données" (stack, list, dict, ...).
    • Ensuite, tout en restant dans les langages "qui compilent nativement", Ada, Rust et (C++). Ils permettent l'utilisation de la POO, avec les avantages et les défauts des concepts de la POO (encapsulation, héritage, polymorphisme) . Je mets volontairement le C++ à part, car sa syntaxe est horrible, rendant un "code source" difficile à lire (et on lit plus souvent un code qu'on en écrit). Le passage par cette étape permet aussi d'aborder les "Design Patterns" (voir le GoF).
    • Pour finir, étudier un langage dit de "haut niveau". Là je préconniserais Python, non seulement parce qu'il est simple a apprendre une fois les étapes précédentent franchie. Mais attention, "Python" a tendance à se compliquer au fil du temps. Mais si on s'en tient aux "bases" du langages, c'est le meilleur choix.


    Armé ainsi, on peut plus facilement s'adapter à ce qu'on rencontrera dans le future. Mais si l'étudiant est curieux, je pense qu'il est bon d'avoir des notions de ce qu'est :

    • Le travail fait par un compilateur (lexer, parser, type checker, IR code, ...). Qui expose un tas de "concepts", qu'on retrouvera tout au long de sa carrière, et de mieux comprendre le pourquoi et le comment des choses qui sont ce qu'elles sont actuellement.
    • Le travail d'un RTOS, (µC/OS II ou III ou FreeRTOS). C'est non seulement très instructif, mais permet de mettre en lumière et d'expliquer ce qui régit nos programmes.


    Et si notre étudiant à le feu sacré,

    • Définir un (nouveau) petit langage, via la compréhension des règles BNF.
    • De développer un interprèteur et/ou un compilateur pour ce petit langage.


    Ensuite, tout dépend du sur quoi on tombe dans son boulot, où on a pas trop le choix des armes.

    BàV et Peace & Love.

  2. #42
    Membre émérite
    Inscrit en
    Janvier 2006
    Messages
    742
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 742
    Points : 2 818
    Points
    2 818
    Par défaut
    Citation Envoyé par calvaire Voir le message
    l'objectif d'une 1ere année et de maitriser les fondamentaux, donc je dirais plutôt le langage C, qui permet de mettre en pratique le théorique (gestion mémoire, instruction cpu...etc.),
    On parle de programmation, pas d'architecture machine, donc considérer les instructions CPU comme des fondamentaux, faut le faire...

    Citation Envoyé par calvaire Voir le message
    et le C est un langage stricte (un entier ne peut pas devenir une chaine de caractère comme en python)
    Ah bon?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int x = 12345;
    printf("%s", &x);
    Oui je sais c'est pas du code propre, mais ça compile et pas de core dump à l'exécution (sauf si on enlève le &, là ça compile - ce qui est quelque peu problématique - mais core dump), alors juste pour dire que le caractère "strict", euh comment dire...

    Je reste pour ma part sur Pascal, qui a été conçu pour ça, et qui permet d'apprendre la gestion de la mémoire (pas de ramasse-miettes donc il faut bien penser à libérer ses resources après usage) sans pour autant autoriser l'arithmétique des pointeurs grâce à laquelle, justement, un entier peut être miraculeusement transformé en chaîne de caractères ... mais avec des résultats bien moins prévisibles qu'en Python!
    Ou Ada, qui reprend les bons côtés de Pascal avec une gestion du typage mille fois plus stricte, mais qui pourra en contrepartie te donner un maximum de détails sur chaque erreur détectée.

    Le seul point positif pour Python, c'est la syntaxe qui enseigne la notion d'indentation. Mais le typage dynamique et surtout la gestion des variables sans déclaration sauf si globales, c'est une source de grosses erreurs pour les débutants, donc je ne recommande pas.
    Exemple (exagéré mais bien réel):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xr = 100
    while xr > 0:
       print(xr)
       xs = xr - 1
    Ici le "xs" au lieu de "xr" est une faute de frappe, pas forcément visible au premier coup d’œil sur un petit écran, et que Python ne détectera pas, puisqu'il n'impose pas de déclarer les variables (à moins qu'il y ait un mode strict optionnel comme en Perl?). Mieux vaut démarrer avec un langage où c'est obligatoire, ça évite des erreurs.

    Citation Envoyé par popo Voir le message
    J'ai croisé beaucoup trop de personnes se disant développeur mais ne comprenant pas ce qui se cache derrière une ligne de code et se retrouvant avec des comportements non désirés ou des performances dégradées sans être capables de l'expliquer. Trouver du code fonctionnel sur internet est à la portée de n'importe qui (encore plus avec ChatGPT).
    Le comprendre et avoir conscience de ce qui se passe en interne, c'est déjà plus compliqué.
    Tout dépend de ce que tu entends par là.
    Se rendre compte que son algorithme est exponentiel alors qu'il existe une version quadratique plus rapide, ça peut faire partie des fondamentaux (mais pas forcément en première année quand même).
    Mais il ne s'agirait pas de demander aux débutants de savoir que telle instruction CPU est plus rapide que telle autre (même si quand j'ai commencé la fac j'avais quelques collègues geek qui s'intéressaient déjà à ce genre de choses, faut pas généraliser). Surtout qu'en dehors des domaines où tu dois travailler avec des ressources réduites (embarqué, mobile) il est devenu rare de travailler en assembleur.

    Citation Envoyé par popo Voir le message
    Enfin, je conseillerai de passer un petit moment sur l'assembleur pour aider à comprendre comment fonctionne la machine.
    Lequel? Celui des mobiles sera différent de celui des PC.
    En licence on nous a fait travailler sur un assembleur virtuel, histoire d'en rester aux fondamentaux. Mais pas en première année!

  3. #43
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 637
    Points : 15 858
    Points
    15 858
    Par défaut
    Pour apprendre les bases, je dirais que peut importe le langage, tant qu'on ne part pas sur des langages d'assemblage ou des langages ésotériques comme le brainfuck. Quelque soit le langage on sera confronté aux mêmes basiques : variables, conditions, itérations, tableaux, procédures, ... La clarté des cours et l'intérêt des exercices sont énormément plus importants que le langage lui même.

    Contrairement à beaucoup qui recommandent le C, je pense que même si ça reste un choix possible si on privilegie le bas niveau, ce n'est probablement pas le meilleur car il va assez rapidement poser des problèmes bas niveau que je préfère ne pas avoir a aborder tant que l'on a pas maîtrisé les fondamentaux de l’algorithmie.
    Pour la même raison, je ne recommencerais pas le Rust : il va poser des problématique de durée de vie des variables que je préférerais aborder plus tard. Si on tient quand même absolument à commencer par du bas niveau, je préférerais quand même Rust à C car le typage est énormément plus strict et les problèmes sont systématiquement levés et clairement indiqués par le compilateur.

  4. #44
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 848
    Points : 5 743
    Points
    5 743
    Par défaut
    Citation Envoyé par esperanto Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int x = 12345;
    printf("%s", &x);
    Oui je sais c'est pas du code propre, mais ça compile et pas de core dump à l'exécution (sauf si on enlève le &, là ça compile mais core dump), alors juste pour dire que le caractère "strict", euh comment dire...
    En effet, c'est très moche.
    Et même si ça compile, il y a peu de chance que ça affiche 12345.
    En combinant '%s' avec &x, on demande à printf() d'interpréter l'adresse mémoire de x comme s'il s'agissait d'une chaîne de caractères.
    J'aurais donc tendance à dire que puisque tu n'a pas respecté le caractère strict du typage, tu obtiens n'importe quoi.

    Citation Envoyé par esperanto Voir le message
    Tout dépend de ce que tu entends par là.
    Se rendre compte que son algorithme est exponentiel alors qu'il existe une version quadratique plus rapide, ça peut faire partie des fondamentaux (mais pas forcément en première année quand même).
    Mais il ne s'agirait pas de demander aux débutants de savoir que telle instruction CPU est plus rapide que telle autre (même si quand j'ai commencé la fac j'avais quelques collègues geek qui s'intéressaient déjà à ce genre de choses, faut pas généraliser). Surtout qu'en dehors des domaines où tu dois travailler avec des ressources réduites (embarqué, mobile) il est devenu rare de travailler en assembleur.
    Tu mélanges tout.
    Je n'avais pas encore parlé d'assembleur à ce moment là.
    Sans aller jusqu'à parler d'algo exponentiel ou quadratique, l'exemple que j'avais en tête était beaucoup plus simple.
    Pour la petite histoire, nous avons embauché un développeur avec 8 ans d'expérience sur C# et Entity Framework.
    J'ai dû, moi même lui expliquer, traces SQL à l'appui, quelles étaient les conséquences du simple ToList() dont il usait et abusait.


    Citation Envoyé par esperanto Voir le message
    Lequel? Celui des mobiles sera différent de celui des PC.
    En licence on nous a fait travailler sur un assembleur virtuel, histoire d'en rester aux fondamentaux. Mais pas en première année!
    Là aussi, tu mélanges tout.
    J'ai parlé de passer un peu de temps sur l'assembleur mais après avoir acquis les concepts fondamentaux et la POO.
    Durant mes études, c'est en terminale que mon prof nous à fait travailler quelques heures en assembleur, soit la deuxième année de mes études d'info. Donc pas si loin de la première année.
    L'objectif était de se rendre compte de ce que faisait la machine juste pour faire de l'arithmétique simple.
    Et l'idée sous jacente était de nous apprendre à optimiser nos instructions, parce que certains de mes camarades (et moi même à quelques occasions) passaient souvent par des étapes inutiles (voire carrément des boucles inutiles).

  5. #45
    Membre expert
    Profil pro
    programmeur du dimanche
    Inscrit en
    Novembre 2003
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 916
    Points : 3 931
    Points
    3 931
    Par défaut
    Citation Envoyé par esperanto Voir le message
    [...]
    Le seul point positif pour Python, c'est la syntaxe qui enseigne la notion d'indentation. Mais le typage dynamique et surtout la gestion des variables sans déclaration sauf si globales, c'est une source de grosses erreurs pour les débutants, donc je ne recommande pas.
    Exemple (exagéré mais bien réel):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xr = 100
    while xr > 0:
       print(xr)
       xs = xr - 1
    Ici le "xs" au lieu de "xr" est une faute de frappe, pas forcément visible au premier coup d’œil sur un petit écran, et que Python ne détectera pas, puisqu'il n'impose pas de déclarer les variables (à moins qu'il y ait un mode strict optionnel comme en Perl?). Mieux vaut démarrer avec un langage où c'est obligatoire, ça évite des erreurs.

    [...]
    On peut utiliser __slots__ pour interdire la création dynamique d'attributs aux objets, ce qui empêche l'erreur supra en POO. J'aurais aimé connaître cette astuce plus tôt. C'est un des exemples d'un langage sans garde-fou, qui permet de faire des cours simples pour les débutants, d'écrire de manière concise, mais qui nécessite pas mal de concepts avancés pour écrire correctement.

    A mon humble avis, python, si c'est pour faire de l'algo et des bases c'est pas si mal, on peut écrire naïvement quasi en pseudo-code.
    Pour la rigueur il faudra passer par quelque chose de compilé typé qui permette la gestion de la mémoire.

    Citation Envoyé par calvaire
    edit: j'ai déjà travaillé avec des datascientistes, bon en datascience mais absolument pas dev et quand ils m'envoyait leurs code python c'était affreux, absolument pas industrialisable. Ils ne maitrisait aucune notion, les variables qui change de type, pas d'objets, des fonctions avec n'importe quoi en entrés et en sortie...etc.
    C'est pour cela que je dis que python est un très mauvais langage pour débuter, toute les horreurs sont possibles.
    Un dev c/c++/java ou autres ne fera pas ces erreurs de débutant. Il aura eu les réflexes de faire une bonne structure/architecture (des objets, des fonctions, il ne fera pas de variables globale inutilement...) clairement définie.
    Une data scientist m'a expliqué que la programmation ça ne servait plus à rien, car elle demandait à chatGPT de lui générer un code, elle le lançait pour voir si ça marche et c'est tout comme validation. Comme quoi, apprendre les bases propres de l'informatique c'est pas inutile...

  6. #46
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 848
    Points : 5 743
    Points
    5 743
    Par défaut
    Citation Envoyé par Fagus Voir le message
    On peut utiliser __slots__ pour interdire la création dynamique d'attributs aux objets, ce qui empêche l'erreur supra en POO. J'aurais aimé connaître cette astuce plus tôt.
    Les Slots sont très pratiques, en effet, sauf lorsqu'on transmet nos objets à certaines librairies et que rien ne fonctionne parce que la librairie n'arrive pas pas à lire ou écrire dans ces objets du fait des slots.
    Je l'ai peut être mal utilisé mais j'en ai fait l'expérience avec FastAPI. Avec une définition de membres classique, ça passe avec des slots pour cadrer, ça ne passe plus.

    Citation Envoyé par Fagus Voir le message
    C'est un des exemples d'un langage sans garde-fou, qui permet de faire des cours simples pour les débutants, d'écrire de manière concise, mais qui nécessite pas mal de concepts avancés pour écrire correctement.
    C'est la raison pour laquelle, je le déconseille à un débutant.
    Il est trop facile de prendre des raccourcis et des mauvaises habitudes avec ce langage.
    Je ne dis pas que c'est un mauvais langage.
    Je dis qu'il est trop permissif et qu'à moins de rester toutes sa vie sur du python, le débutant va avoir de sacrées surprises lorsqu'il passera sur d'autres langages beaucoup plus strictes.

    Citation Envoyé par Fagus Voir le message
    A mon humble avis, python, si c'est pour faire de l'algo et des bases c'est pas si mal, on peut écrire naïvement quasi en pseudo-code.
    Pour la rigueur il faudra passer par quelque chose de compilé typé qui permette la gestion de la mémoire.
    Entièrement d'accord avec ça.
    Python est trop permissif et ça n'aide pas à devenir rigoureux.


    Citation Envoyé par Fagus Voir le message
    Une data scientist m'a expliqué que la programmation ça ne servait plus à rien, car elle demandait à chatGPT de lui générer un code, elle le lançait pour voir si ça marche et c'est tout comme validation. Comme quoi, apprendre les bases propres de l'informatique c'est pas inutile...
    Et c'est comme ça qu'on arrive à 40% d'anomalies en plus, depuis que ChatGPT code ces gens là.

  7. #47
    Membre émérite
    Inscrit en
    Janvier 2006
    Messages
    742
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 742
    Points : 2 818
    Points
    2 818
    Par défaut Sauf que...
    Citation Envoyé par popo Voir le message
    Et même si ça compile, il y a peu de chance que ça affiche 12345.
    Sauf que je n'ai jamais indiqué ce qu'il fallait afficher, c'était juste pour contredire la phrase "un entier ne peut pas devenir une chaine de caractère"
    Ici non seulement c'est très clairement ce qui se passe mais en plus comme tu le dis toi-même le résultat n'est même pas prévisible.
    Un débutant pourrait faire ce genre d'erreur et avoir beaucoup de mal à comprendre ce qui se passe. Raison pour ne pas recommander le C à un débutant.

    Citation Envoyé par popo Voir le message
    J'aurais donc tendance à dire que puisque tu n'a pas respecté le caractère strict du typage, tu obtiens n'importe quoi.
    Pour moi un langage qui accepte ce genre de truc sans même à minima générer une exception ne peut être qualifié de strict. Je ne dis pas que c'est toujours une mauvaise chose, le C a été créé pour des situations où ce genre de choses peut se justifier... mais pas pour débuter.

    Citation Envoyé par popo Voir le message
    J'ai dû, moi même lui expliquer, traces SQL à l'appui, quelles étaient les conséquences du simple ToList() dont il usait et abusait.
    Intéressant mais tout dépend de la spécification de la méthode: en vertu de l'encapsulation, sauf si c'est indiqué dans la doc, tu es juste supposé savoir que la méthode renvoie une liste mais pas comment elle la construit.
    Bon ici d'accord on peut supposer qu'il va y avoir un nouvel objet généré à chaque appel, mais dans l'absolu méfies-toi de ce genre d'affirmation, même si la méthode s'appelle ToQuelqueChose.

    Citation Envoyé par popo Voir le message
    J'ai parlé de passer un peu de temps sur l'assembleur mais après avoir acquis les concepts fondamentaux et la POO.
    OK c'est déjà ça.
    Pour ma part je préfèrerais parler de l'assembleur le plus tard possible pour éviter de mauvais réflexes que j'ai déjà vus chez des collègues venant du monde BASIC ou COBOL et qui refusaient de faire de la programmation structurée au prétexte que c'est "comme ça que la machine fonctionne". Même si c'est vrai, je ne voudrais pas qu'une pratique trop précoce de l'assembleur renforce cette impression.

    Citation Envoyé par Fagus Voir le message
    On peut utiliser __slots__ pour interdire la création dynamique d'attributs aux objets, ce qui empêche l'erreur supra en POO.
    Intéressant mais ça ne résout pas le problème des variables non déclarées utilisées hors de tout objet, surtout qu'elles sont supposées locales par défaut ... à condition de savoir où commence le contexte courant!

  8. #48
    Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 18
    Points : 40
    Points
    40
    Par défaut
    Rien de tout ça !

    Un bon retour au LSE, voilà ce qu'il leur faut !

    PS : ceci est un message d'outre-tombe...

  9. #49
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2019
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2019
    Messages : 267
    Points : 1 248
    Points
    1 248
    Par défaut
    Je rejoins popo sur le fait que le pascal (la version Object Pascal) a l'avantage d'être simple, très structuré et clair, et contient les concepts objet. Il permet d'apprendre les bases de programmation objet et autres, ce qui n'empêche pas ensuite de s'orienter vers d'autres langages.
    A part Ada qui est un peu trop austère, je ne vois aucun langage adapté à un apprentissage rigoureux, excepté éventuellement une variante objet du Basic.

  10. #50
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 848
    Points : 5 743
    Points
    5 743
    Par défaut
    Citation Envoyé par esperanto Voir le message
    Sauf que je n'ai jamais indiqué ce qu'il fallait afficher, c'était juste pour contredire la phrase "un entier ne peut pas devenir une chaine de caractère"
    Ici non seulement c'est très clairement ce qui se passe mais en plus comme tu le dis toi-même le résultat n'est même pas prévisible.
    Un débutant pourrait faire ce genre d'erreur et avoir beaucoup de mal à comprendre ce qui se passe. Raison pour ne pas recommander le C à un débutant.
    Je te rejoins sur le fond, même si j'aurais tendance à dire que x ne devient pas un chaine, on force C à le considérer comme une chaine (le & pouvant difficilement être une faute de frappe).
    Sur la forme, puisqu'on utilise printf, l'objectif est très clairement d'afficher "12345' et en tant que professeur (puisqu'on parle d'enseignement en première année), je demanderai à mon étudiant pourquoi li a utilisé %s au lieu de %d.
    Comme je le disais, mettre le & devant le x, ce n'est pas une faute de frappe, c'est intentionnel.



    Citation Envoyé par esperanto Voir le message
    Intéressant mais tout dépend de la spécification de la méthode: en vertu de l'encapsulation, sauf si c'est indiqué dans la doc, tu es juste supposé savoir que la méthode renvoie une liste mais pas comment elle la construit.
    Bon ici d'accord on peut supposer qu'il va y avoir un nouvel objet généré à chaque appel, mais dans l'absolu méfies-toi de ce genre d'affirmation, même si la méthode s'appelle ToQuelqueChose.
    Ce que j'affirme ici n'a rien a voir avec la technique ou ce que dit ou non la documentation.
    Ce que j'affirme, c'est que lorsqu'un développeur dit qu'il maitrise EF, je ne devrais normalement pas avoir à lui apprendre une chose aussi élémentaire.
    Ce que j'affirme, c'est qu'un développeur ne devrait pas utiliser bêtement une méthode sans s'intéresser un minimum à ce qu'elle fait, et si possible à comment elle le fait.

  11. #51
    Expert éminent
    Avatar de calvaire
    Homme Profil pro
    .
    Inscrit en
    Octobre 2019
    Messages
    1 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : .
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 1 808
    Points : 6 648
    Points
    6 648
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Ben si, car justement il est facile. Il remplace je pense le BASIC au collège/lycée, il est utilisé depuis longtemps dans le monde scientifique.
    Il est simple, mais il est aussi puissant (ça reste de l'interprété).
    Python est un langage qui est utilisé par de tout petits projets tels que Youtube, Pinterest, Instagram, Spotify
    Le plus gros challenge quand on apprends a coder, c'est de coder proprement avec les bonnes pratique. Car c'est très difficile de se défaire des mauvaises pratiques.
    Python est pour moi trop permissif pour être un bon candidat en 1ere année, les études d'informatiques c'est 5ans, y'a le temps pour apprendre le python par la suite.
    Une fois le C maitrisé, de toute façon apprendre python sera assez simple et globalement tous les langages procédurale, ça se ressemble, la mécanique reste la même (java, c++, python...), C n'a juste pas l'objet.
    Mais C est très bien pour se greffer aux cours d'architectures et de mettre en pratique les cours sur la gestion mémoire par exemple.

  12. #52
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 848
    Points : 5 743
    Points
    5 743
    Par défaut
    Citation Envoyé par chrtophe
    Ben si, car justement il est facile. Il remplace je pense le BASIC au collège/lycée, il est utilisé depuis longtemps dans le monde scientifique.
    Il est simple, mais il est aussi puissant (ça reste de l'interprété).
    Python est un langage qui est utilisé par de tout petits projets tels que Youtube, Pinterest, Instagram, Spotify
    Je rejoins Calvaire sur le sujet.
    J'ajouterai que ce n'est pas parce qu'un site populaire comme Youtube a été écrit avec tel ou tel langage que cela en fait un langage adapté pour l'apprentissage.
    Et d'autres appli célèbres ont été écrite sans une seule ligne de Python : Skype et Kaspersky Anti-Virus, InnoSetup ont été écrit avec Delphi ou certain MMORPG comme Rise of Legions.

    Et en ce qui concerne Youtube, il a été écrit en PHP à l'origine.
    La partie écrite aujourd'hui en Python est utilisée pour le backend et les services côté serveur.
    Mais, il n'y pas que du Python en Backend, il y aussi du Java.
    Mais la partie la plus importante, celle qui garantie la performance et la fluidité de la vidéo est écrite en C++

    Pour Instagram, c'est à peu près pareil : python pour les API utilisée par l'appli mais appli développée en Java pour Android et Objective-C/Swift pour iOS.

  13. #53
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 918
    Points
    918
    Par défaut Apprendre à marcher avant de courir
    Avant d'apprendre un langage, il faut commencer par apprendre les bases de l'algorithmie/logique, comment fonctionne un ordinateur (mémoire, cpu, etc...) et les principaux paradigmes de programmation:
    1. impératif structuré (le paradigme de base de tous les processeurs courants)
    2. fonctionnel basé sur la théorie du lambda-calcul de Church (celui qui a permis d'inventer la POO ou les bases de l'IA). Bien que simple et puissant, la plupart des développeurs ont du mal avec ce paradigme.
    3. programmation orienté objet (utile pour les grosses applications)
    4. logique basé sur la théorie des prédicats du premier ordre (anecdotique dans son usage, mais qui a son intérêt pour les systèmes experts et l'IA). C'est certainement le paradigme le plus difficile à apprendre.

    La mise en pratique des paradigmes pourra se faire en utilisant un langage de programmation lié:
    1. impératif structuré: Pascal/Delphi mais sans objets
    2. fonctionnel: Lisp ou Python qui permettent de mettre en pratique plus de choses que Java ou C#
    3. programmation orienté objet: je dirais Eiffel car il permet de tout faire (héritage multiple, etc) mais aussi il propose des solutions pour gérer les cas dangereux. Ensuite on pourra passer à un langage comme C# ou Java qui ne supportent qu'un sous-ensemble du paradigme.
    4. logique: Prolog

  14. #54
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 848
    Points : 5 743
    Points
    5 743
    Par défaut
    Cela n'engage que moi.
    Mais je trouve que l'héritage multiple pose plus de problème qu'il n'en résout.

Discussions similaires

  1. Quels langages de programmation utilisez-vous pour Arduino ?
    Par Michael Guilloux dans le forum Arduino
    Réponses: 13
    Dernier message: 21/04/2020, 22h33
  2. Dans quels langages de programmation seriez-vous prêt à vous investir en 2017 ?
    Par Community Management dans le forum Langages de programmation
    Réponses: 70
    Dernier message: 21/02/2020, 20h14
  3. Quels sont les langages de programmation que vous détestez le plus, et pourquoi ?
    Par Community Management dans le forum Langages de programmation
    Réponses: 214
    Dernier message: 31/08/2017, 11h38
  4. Sondage : quels sont les langages de programmation que vous maîtrisez ?
    Par Michael Guilloux dans le forum Débats sur le développement - Le Best Of
    Réponses: 81
    Dernier message: 27/03/2017, 10h33

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