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

Langages de programmation Discussion :

[Débat] Les langages que tout programmeur doit connaître


Sujet :

Langages de programmation

  1. #21
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par GrandFather
    Cela nous laisse une chance à nous, profanes en mathématiques, de faire carrière dans l'informatique...
    Une question de néophyte : l'existence du problème P = NP n'est-elle pas un frein à une approche de l'informatique exclusivement sous l'angle du formalisme mathématique ?
    En quoi ? Un non-mathématicien aurait plus de difficulté à résoudre ce problème qu'un mathématicien (en admettant qu'il soit résolvable !). Au contraire, la mise en évidence du problème P=NP et de la classe des NP-complets sont une réussite de la rigueur mathématique appliquée à l'informatique !

    --
    Jedaï

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Citation Envoyé par GrandFather
    Il y a quand même les travaux de Noam Chomsky qui font référence en ce qui concerne la classification des langages et de leur grammaire, et pas seulement informatiques...
    La théorie des langages formels, dont Chomsky est évidemment l'un des principaux acteurs, est essentiellement une théorie de la syntaxe, qui est utilisée pour la compréhension et la conception des analyseurs syntaxiques. Elle n'aborde pas vraiment la sémantique, et pas du tout ce que je considère comme le plus important: la notion de type de données. Elle ne traite donc qu'un aspect, à mon avis mineur, de la question. De toute façon, il ne semble pas que ce soit de cela que parlait kisitomomotene, puisqu'il parlait de théorie des langages de programmation.

    Citation Envoyé par GrandFather
    Cela nous laisse une chance à nous, profanes en mathématiques, de faire carrière dans l'informatique...
    Ayant pratiqué intensément les mathématiques (40 ans) et l'informatique (20 ans), je constate que le modèle mathématique n'est pas applicable directement pour modéliser toute l'informatique. Cela tient à ce qu'en mathématiques, tout ce qu'on manipule est abstrait, et indépendant du temps et de l'espace, alors qu'en informatique, on doit interagir avec le monde réel, ce qui impose la manipulation d'objets (au sens de la POO) qui dépendent fortement du temps et de l'espace. D'une certaine façon, l'informatique est donc beaucoup plus compliquée que les mathématiques. Il faut prendre en compte tout ce non déterminisme. Bien sûr on peut le modéliser mathématiquement (encore que je ne connaisse aujourd'hui rien de vraiment convainquant), mais ce n'est pas natif en mathématiques.


    Citation Envoyé par GrandFather
    Une question de néophyte : l'existence du problème P = NP n'est-elle pas un frein à une approche de l'informatique exclusivement sous l'angle du formalisme mathématique ?
    La fonction d'Ackermann (par exemple) est mathématiquement correcte (en ce sens que la récursion est correcte), et on sait qu'elle est pratiquement incalculable. De même, la recherche de preuve de théorème, bien que semi-décidable est impraticable pour des raisons d'explosion combinatoire. Malgré cela, le fait par exemple qu'une fonction récursive soit programmée par une récursion mathématiquement incorrecte est une très forte présomption de bug. L'expérience me l'a souvent montré. La complexité n'est pas un frein à l'approche mathématique. Ce qu'il se passe est simplement que l'approche mathématique ne résoud pas ce problème. Par contre elle en résoud d'autres. En mathématique, on n'a aucun soucis de performance, ou de temps de calcul, puisqu'on n'execute pas les preuves. On se contente de les vérifier (c'est à dire de les compiler).

    En conclusion, il ne s'agit pas de voir l'informatique sous un angle exclusivement mathématique. Il s'agit simplement de ne pas se passer de mathématiques là où ça peut être utile. Et en particulier, je crois que le point le plus sensible est la conception des systèmes de typage, et c'est là que de gros progrès sont possibles par rapport aux langages actuels.

  3. #23
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut La véritable place des mathématiques
    Je pense que l'aspect mathématiques de la phase de développement d'un logiciel se situe au cours de l'analyse lorsqu'on fait abstraction du context réel d'execution. A ce niveau il n' y a pas à proprement parlé une tour de babel, UML ayant pratiquement fait l'unanimité.
    Lorsqu'on passe à la phase de conception et d'implémentation, là on doit tenir compte des technologies réelles, de la "réalité du terrain". Les maths s'arrête là. Et on fait véritablement de l'informatique.

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut Re: La véritable place des mathématiques
    Citation Envoyé par kisitomomotene
    Je pense que l'aspect mathématiques de la phase de développement d'un logiciel se situe au cours de l'analyse lorsqu'on fait abstraction du context réel d'execution.
    On parle de deux choses différentes. Je ne suggérais pas que le concepteur d'un logiciel doive obligatoirement faire des mathématiques. Je pensais surtout aux concepteurs de langages.

    Citation Envoyé par kisitomomotene
    A ce niveau il n' y a pas à proprement parlé une tour de babel, UML ayant pratiquement fait l'unanimité.
    UML n'a strictement rien de mathématique. C'est une méthodologie de modélisation qui tient plus des sciences sociales que des maths. De plus, je ne crois pas qu'il fasse l'unanimité, sauf peut être dans certaines SSII faisant des logiciels de gestion, de logistique, etc...

    Citation Envoyé par kisitomomotene
    Lorsqu'on passe à la phase de conception et d'implémentation, là on doit tenir compte des technologies réelles, de la "réalité du terrain". Les maths s'arrête là. Et on fait véritablement de l'informatique.
    Les maths fort heureusement ne s'arrètent pas là. Au risque de me répéter, je cite le logiciel du métro Météor (ligne 14), qui contient 29000 preuves mathématiques en langage B, un langage sur lequel tu ferais peut-être bien de te renseigner pour sortir de ta vision extrèmement étriquée du développement. Excuses-moi de te le faire remarquer crûment, mais je te trouve un peu catégorique et surtout mal renseigné sur la diversité de l'informatique.

  5. #25
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par kisitomomotene
    Citation Envoyé par DrTopos
    Excellente remarque de Jedaï.

    Mais pourquoi l'informatique est-elle une tour de Babel, et est-ce une fatalité ?
    justement non. C'est parceque les programmeurs n'ont pas la culture de l'integration. Si chacun en ecrivant son programme censé être reutilisable, presentait une interface WebService, Corba, ou C/C++, on n'aurait plus de tour de Babel.
    Quel interet pour un programmeur qui a un besoin precis de faire des wrapper, des interfaces, etc.. dans un langage dont il n'a pas besoin ? De prendre du retard sur son projet ? Si il y a un besoin pour un autre programme, il sera temps de faire cette interface.
    D'autant qu'il faudrait des connaissances enormes pour pouvoir implementer toutes les interfaces necessaires a s'interfacer avec toutes les langages existants dans toute les technologies existantes.

    Au risque de paraitre un peu provocateur, c'est plutot a toi, lorsque tu en as besoin, de faire cette interface et, eventuellement, de la publier.

  6. #26
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par gl
    Citation Envoyé par kisitomomotene
    Citation Envoyé par DrTopos
    Excellente remarque de Jedaï.

    Mais pourquoi l'informatique est-elle une tour de Babel, et est-ce une fatalité ?
    justement non. C'est parceque les programmeurs n'ont pas la culture de l'integration. Si chacun en ecrivant son programme censé être reutilisable, presentait une interface WebService, Corba, ou C/C++, on n'aurait plus de tour de Babel.
    Quel interet pour un programmeur qui a un besoin precis de faire des wrapper, des interfaces, etc.. dans un langage dont il n'a pas besoin ? De prendre du retard sur son projet ? Si il y a un besoin pour un autre programme, il sera temps de faire cette interface.
    D'autant qu'il faudrait des connaissances enormes pour pouvoir implementer toutes les interfaces necessaires a s'interfacer avec toutes les langages existants dans toute les technologies existantes.

    Au risque de paraitre un peu provocateur, c'est plutot a toi, lorsque tu en as besoin, de faire cette interface et, eventuellement, de la publier.
    Au contraire lorsque vous écrivez un programme censez être reutilisable, vous avez interêt à augmenter le nombre d'utilisateur potentiel. Par exemple je trouve inadmissible qu'un composant logiciel qu'on vend porte la mention "Developer audience:java developer ( ou C developper etc..)", parceque en faisant ainsi, on diminue le nombre d'utilisateur potentiel.

  7. #27
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut Re: La véritable place des mathématiques
    Citation Envoyé par DrTopos

    Citation Envoyé par kisitomomotene
    Lorsqu'on passe à la phase de conception et d'implémentation, là on doit tenir compte des technologies réelles, de la "réalité du terrain". Les maths s'arrête là. Et on fait véritablement de l'informatique.
    Les maths fort heureusement ne s'arrètent pas là. Au risque de me répéter, je cite le logiciel du métro Météor (ligne 14), qui contient 29000 preuves mathématiques en langage B, un langage sur lequel tu ferais peut-être bien de te renseigner pour sortir de ta vision extrèmement étriquée du développement. Excuses-moi de te le faire remarquer crûment, mais je te trouve un peu catégorique et surtout mal renseigné sur la diversité de l'informatique.
    Mais je crois que un programme ecrit en B, necessite après une autre phase d'implémentation qui necessite l'utilisation d'un autre langage comme C/C++. Donc c'est un peu ce que l'on fait avec UML. on décrit d'une façon formelle et rigoureuse et abstraite (donc mathématique je crois) le problème à resoudre, puis on cherche un autre langage pour implémenter.
    C'est vrai j'ai un peu exagéré en disant que les maths s'arrête après l'analyse. L'utilisation des maths quelque soit la phase de developpment depend de la culture du developpeur. Un programmeur en Java, C++, C# etc.. peu bien utiliser les assertions ou équivalent dans son code. Et pour moi l'utilisation des assertions c'est un peu faire les maths, dans la programmation.

  8. #28
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par kisitomomotene
    Au contraire lorsque vous écrivez un programme censez être reutilisable, vous avez interêt à augmenter le nombre d'utilisateur potentiel.
    Si il est destine a etre utilise dans differentes technos et differents langages oui je suis d'accord avec toi, il faut supporter ces langages et technos. Mais si j'ecris un bout de code dans un but precis, je ne vois pas l'interet de s'efforcer de le rendre interfacable avec tout ce qui existe.

    Citation Envoyé par kisitomomotene
    Par exemple je trouve inadmissible qu'un composant logiciel qu'on vend porte la mention "Developer audience:java developer ( ou C developper etc..)", parceque en faisant ainsi, on diminue le nombre d'utilisateur potentiel.
    Inadmissible, tu n'as pas l'impression d'exagere, tu recuperes un composant ecrit dans l'objectif d'etre utilise en Java ou en C, pourquoi devrait-il etre interfacable dans un autre langage ce n'est pas sa cible.
    C'est un peu comme si tu te plaignais de ne pas pouvoir utiliser ton moteur de tondeuse dans une BMW, ce n'est pas sa destination.

    Honnetement je vois au moins deux bonnes raisons pour qu'un composant ne soit pas interfacable avec tout :
    * le cout/delai : quel est l'interet de passer 3 semaines a developper une interface dans un langage obscure où les chances que ton composant soit utilisé sont néantes ?
    * les competences : vu les dizaines (voire centaines) de langages et de technologie existantes plus ou moins repandus, comment veux-tu développer des modules interfacables avec tout ?

  9. #29
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par gl
    Citation Envoyé par kisitomomotene
    Par exemple je trouve inadmissible qu'un composant logiciel qu'on vend porte la mention "Developer audience:java developer ( ou C developper etc..)", parceque en faisant ainsi, on diminue le nombre d'utilisateur potentiel.
    Inadmissible, tu n'as pas l'impression d'exagere, tu recuperes un composant ecrit dans l'objectif d'etre utilise en Java ou en C, pourquoi devrait-il etre interfacable dans un autre langage ce n'est pas sa cible.
    C'est un peu comme si tu te plaignais de ne pas pouvoir utiliser ton moteur de tondeuse dans une BMW, ce n'est pas sa destination.
    Si la technologie pouvait me permettre d'utiliser un moteur de tondeuse dans une BMW, en tant que concepteur du moteur de tondeuse, j'allais utiliser ces technologies pour remodeler mon moteur de tondeuse, et le vendre non seulement aux utilisateurs de tondeuses, mais également aux utilisateur des BMW.

    Honnetement je vois au moins deux bonnes raisons pour qu'un composant ne soit pas interfacable avec tout :
    * le cout/delai : quel est l'interet de passer 3 semaines a developper une interface dans un langage obscure où les chances que ton composant soit utilisé sont néantes ?
    Il s'agit de developper les interfaces, en général c'est developper les implémentations qui prennent du temps, pas les interfaces. Par exemple, il existe plusieurs environnement de developpement RAD qui peuvent permettre à un developpeur Java, C#, C++, de créer automatiquement des interfaces Webservices, à partir d'un code source ( en d'autre terme, créer une interface à partir d'une implémentation)


    * les competences : vu les dizaines (voire centaines) de langages et de technologie existantes plus ou moins repandus, comment veux-tu développer des modules interfacables avec tout ?
    Si vous créer par exemple une interface Web service de votre code ( cela peut se faire automatiquement comme je l'ai dis plus haut), vous rendez votre code capable d'être utilisé dans tous les langages. Donc il ne s'agit pas de crééer une interface pour chaque langage, mais de créer une seule interface pour tous les langages.

  10. #30
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par kisitomomotene
    Honnetement je vois au moins deux bonnes raisons pour qu'un composant ne soit pas interfacable avec tout :
    * le cout/delai : quel est l'interet de passer 3 semaines a developper une interface dans un langage obscure où les chances que ton composant soit utilisé sont néantes ?
    Il s'agit de developper les interfaces, en général c'est developper les implémentations qui prennent du temps, pas les interfaces. Par exemple, il existe plusieurs environnement de developpement RAD qui peuvent permettre à un developpeur Java, C#, C++, de créer automatiquement des interfaces Webservices, à partir d'un code source ( en d'autre terme, créer une interface à partir d'une implémentation)
    Oui, les interfaces prennent generalement moins de temps a developper que le coeur du programme, je suis d'accord avec vous. Mais moins de temps ne veut pas dire pas de temps et c'est parfois trop.
    Concernant l'exemple du RAD creant les interfaces web service soit ca existe et c'est une bonne chose. Mais tout le monde n'utilise pas de tels RAD, tout les projets n'utilisent pas de web service, ...
    Et puis ca ne reponds pas a la question quel interet de l'interface "universelle" ?
    Si pour mon projet j'ai besoin d'une interface donnee a un module, je la cree c'est evident.
    Si le rapport entre le marche potentiel d'une interface donnee et le cout/temps de developpement de cette interface est favorable, je la fait aussi.
    Mais dans les autres cas je ne vois pas l'interet de gaspiller du temps et de l'energie.

    Citation Envoyé par kisitomomotene
    * les competences : vu les dizaines (voire centaines) de langages et de technologie existantes plus ou moins repandus, comment veux-tu développer des modules interfacables avec tout ?
    Si vous créer par exemple une interface Web service de votre code ( cela peut se faire automatiquement comme je l'ai dis plus haut), vous rendez votre code capable d'être utilisé dans tous les langages. Donc il ne s'agit pas de crééer une interface pour chaque langage, mais de créer une seule interface pour tous les langages.
    Ah bon. Donc sur ma petite carte embarquée avec ces quelques ko de memoire qui n'a comme unique interface avec le monde exterieur (hors phase de mise a jour) un clavier et un ecran je serais a priori capable d'utiliser ce code avec son interface web service ? Vous voyez bien que meme comme ca, vous ne pouvez pas vous interfacer partout, l'interface universelle n'existe pas.
    Et encore je n'ai pas parler de projets qui ne savent communiquer avec des modules externes que dans un sombre protocoles proprietaires connus d'eux seuls, pour etre universelle, l'interface des modules se doit donc de communiquer dans ces protocoles.


    Je me permet de preciser un point qui n'est pas evident dans mes propos precedents : je ne denigre pas l'interet d'une telle interface, personnellement j'aimerais que cela soit possible et existe. Malheureusement actuellement vu la multitude de technologies existantes ca reste une utopie.

  11. #31
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Citation Envoyé par kisitomomotene
    Par exemple je trouve inadmissible qu'un composant logiciel qu'on vend porte la mention "Developer audience:java developer ( ou C developper etc..)", parceque en faisant ainsi, on diminue le nombre d'utilisateur potentiel.
    Hello.
    Perso je trouve inadmissible que ton message ne soit pas lisible en français, en anglais, en allemand, en mandarin et en swahili.

    Tu pourrais te donner un peu de peine pour t'interfacer correctement avec tous ces lecteurs potentiels!

  12. #32
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par Glob
    Citation Envoyé par kisitomomotene
    Par exemple je trouve inadmissible qu'un composant logiciel qu'on vend porte la mention "Developer audience:java developer ( ou C developper etc..)", parceque en faisant ainsi, on diminue le nombre d'utilisateur potentiel.
    Hello.
    Perso je trouve inadmissible que ton message ne soit pas lisible en français, en anglais, en allemand, en mandarin et en swahili.

    Tu pourrais te donner un peu de peine pour t'interfacer correctement avec tous ces lecteurs potentiels!
    Vous avez le sens de l'humour. Mais la comparaisons n'est pas correctement choisie. J'ai tout simplement voulu dire que si c'est appropriè de developper une interface Web service et/ou Corba pour un composant logiciel, son audience sera agrandie aux utilisateurs de plusieurs langages. C'est une évidence je crois.

  13. #33
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Cette discussion me rappelle ce qui m'est arrivé il y a quelques mois, et qui est à mon avis beaucoup plus inadmissible que ce que kisitomomotene suggère.

    Je me suis connecté sur un site de l'administration pour obtenir un certificat de non inscription de gage, qu'on doit pouvoir en principe imprimer chez soi. Eh bien, ça na pas marché parce que j'étais sous Linux et pas sous Windows. J'ai donc dû faire 80 km (aller-retour) pour aller bidouiller sur une borne interactive à la sous-préfecture. Alors, oui, les développeurs des administrations devraient connaitre plusieurs langages ou du moins plusieurs browsers ou OS.

    Ca c'est un vrai scandale, parce que c'est quand même un service public.

  14. #34
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Citation Envoyé par kisitomomotene
    Vous avez le sens de l'humour.
    Merci . Je voulais juste faire remarquer que le prix pour ajouter une couche "interface-avec-tout-le-monde" est parfois très très (très) élevé par rapport aux intérêts du programmeur du module.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/07/2013, 14h08
  2. Quel est LE livre que tout développeur doit lire absolument ?
    Par Idelways dans le forum Débats sur le développement - Le Best Of
    Réponses: 104
    Dernier message: 03/12/2012, 12h20
  3. Dites du bien de tous les langages que vous avez utilisés, si vous le pouvez
    Par Idelways dans le forum Langages de programmation
    Réponses: 38
    Dernier message: 05/02/2011, 22h41
  4. Réponses: 14
    Dernier message: 14/12/2010, 10h19

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