jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
| Page 1 | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |
| Page 1 | |
Oyabi
|
# Posté le 26/11/2010 à 16:57:49 |
![]()
|
Bonjour à tous,
je me suis posé une question et j'aurais aimé une réponse. Je ne suis pas un programmeur averti, je m'intéresse à la programmation de loin seulement, mais j'ai remarqué que certains langages comme le python ( v 3.x je crois), le PHP ( v 5.x) et tout un tas d'autres avaient des numéros de version. Alors que le C lui n'en a pas tout comme le C++. Comment est ce possible ? Est-ce que le C++ a des « add-on » le faisant évoluer ? Ou est-ce tout simplement la programmation du langage (« lol ») qui est pensée pour ne pas évoluer ou justement évoluer grâce aux librairies ( « c'est peut être ça les « add-on » dont je parlais). J'espère que j'ai était clair et que vous saurez m'apporter une réponse =). A+ Nobody knows who I really am. J'attire les injures et non les louanges. J'offre la peur et non le respect. Voici ma résurrection. |
| Publicité | # Posté le 26/11/2010 à 16:57:49 |
|
|
|
Tosh
|
# Posté le 26/11/2010 à 17:01:33 |
EOT![]()
|
|
Ssanguine
|
# Posté le 26/11/2010 à 18:58:23 |
![]()
|
Et on peut même rajouter des fonctionnalités au langage!
Par exemple Apple a ajouté les blocks, une sorte de fonction qui permet de profiter de plusieurs coeurs en "découpant" les taches. Il n'est disponible que sur Mac OS X avec la version Apple de GCC ou avec LLVM-Clang. Bon, en réalité, Apple "triche" un peu, puisque les additions faites au C utilisent des fonctionnalités de la runtime Objective C. Mais l'idée est la... Projet d'agrégateur de réseaux sociaux sur Mac |||||||||||||||||||| 10% |
Harfangdesneiges
|
# Posté le 27/11/2010 à 08:43:22 |
Je suis bête.![]()
|
Les langages ont plusieurs versions, tout simplement parce qu'ils évoluent, aussi bien pour corriger des bugs que pour ajouter des fonctionnalités. Un langage, c'est comme n'importe quel autre logiciel, ça doit savoir s'adapter à son temps et aux envies des utilisateurs.
Après le C c'est un peu différent, parce que il existe plusieurs compilateurs, c'est pour ça qu'il faut définir une norme commune ; comme il n'existe qu'un seul interpréteur PHP, là on peut parler de version. EDIT : des trucs sont faux, cf le post de Bluestorm en dessous
Édité
le 27/11/2010 à 10:05:31
par Harfangdesneiges
Citation : plougue Enculer les mouches (même consentantes) n'a jamais mené à rien à part chopper des MST bizarres. M. |
bluestorm
|
# Posté le 27/11/2010 à 09:56:17 |
dont ask to ask![]() Groupe : Anciens
|
Dans ton message Harfangdesneiges tu fais une confusion entre un langage, qui est un ensemble de règle d'écriture de programmes, et une implémentation d'un langage, qui est un logiciel qui prend en entrée des programmes écrits dans un langage et permet de les exécuter.
Les langages et les implémentations ont des bugs, des fonctionnalités, et évoluent, mais ils sont de nature différente. Par exemple, un langage aura un bug "conceptuel" : telle construction complique le langage en rendant les programmes moins lisibles, il faudrait essayer de la retirer; par exemple les variables variables en PHP ou le traitement des variables de boucle et son interaction avec les closures en Javascript, Python, C#, etc. Une implémentation aura des bugs logiciels concrets (quand on fait ça, le programme plante alors qu'il ne devrait pas, ou l'inverse). On peut donc parler indépendamment de versions du langage et de versions des implémentations. Par exemple GCC sort de nouvelles versions de ses compilateurs (C, C++, Ada, Fortran, etc.), alors que les langages implémentés ne changent pas forcément. Dans l'autre sens, une modification d'un langage est souvent accompagnée d'une modification des implémentations pour la mettre en œuvre, même s'il y a des fonctionnalités qui sont considérées et ajoutées avant que les principales implémentations ne les aient intégrées (par exemple les fonctionnalités de C++0x). Le flou relatif vient que les langages n'ont souvent qu'une seule implémentation, et qu'on tend donc à confondre le langage et son implémentation. Par exemple on confond allègrement le langage PHP et son implémentation par Zend. De même, on a longtemps confondu "Python" et "Ruby" et leur unique implémentation, jusqu'à que d'autres implémentations essaient de se développer; ça pose des problèmes pratiques parce qu'on découvre alors que certaines fonctionnalités ne sont pas ou peu documentées, et que la définition implicite c'était "faire comme l'implémentation fait, c'est naturel"; cela rend difficile aux autres implémentations le fait d'avoir un comportement compatible, et cela limite la flexibilité du langage. Bref, même quand les langages ont une seule implémentation, il est important de bien faire la différence entre les deux, et si possible de spécifier proprement le langage indépendamment de son implémentation, pour éviter les parties mal définies. Cela renforce aussi la qualité du langage. |
ProgVal
|
# Posté le 30/12/2010 à 11:07:21 |
Catapoulpe !![]()
Ville : Jouy aux arches |
Bonjour,
Par exemple, si je prend le C ou le C++, une fois passée l'étape de la compilation (c'est le développeur qui s'en occupe), la "version" (par abus de... langage) du C ou du C++ est invisible à l'utilisateur. Alors que par exemple pour Python, il faut que le programme soit compatible avec la version de Python installée sur l'ordinateur de l'utilisateur. Mais il y a un autre fait à noter : Python est livré "batteries included", c'est à dire que sa bibliothèque standard est très complète. D'une version à l'autre, c'est donc majoritairement cette bibliothèque qui change (à part pour le passage de Python 2 à Python 3, qui occasionne également des changements de syntaxe). Alors que pour le C ou le C++ (c'est encore une fois un exemple), il faut charger les bibliothèques séparément : soit elles sont livrées avec le programme, comme c'est majoritairement fait sous Windows (les fameuses DLL) ; soit elles doivent être téléchargées séparément à la main (c'est une technique archaïque, aujourd'hui trop difficile pour être envisagée), soit avec un gestionnaire de paquets (comme c'est de coutume sous GNU/Linux, *BSD, etc.). J'en profite pour faire un petit troll : la première méthode peut sembler plus attrayante à première vue, mais en fait, elle cache un problème majeur : si deux programmes utilisent la même bibliothèque, et que chacun a la sienne, dans C:\Program Files\ExplorezLEnfer\ et C:\Program Files\ConqueteDuMonde, on va avoir deux fois le même .dll. En sachant qu'il y a bien plus de programmes que ça, et que chaque programme peut utiliser plein de DLL, ça fait pas mal d'espace disque qui se fait avaler bêtement. Cordialement, ProgVal
Édité
le 30/12/2010 à 11:11:34
par ProgVal
|
bubuche
|
# Posté le 30/12/2010 à 20:05:45 |
I miss you...![]()
Études : Université Paris XII |
Bonjour,
Citation : ProgVal J'en profite pour faire un petit troll : la première méthode peut sembler plus attrayante à première vue, mais en fait, elle cache un problème majeur : si deux programmes utilisent la même bibliothèque, et que chacun a la sienne, dans C:\Program Files\ExplorezLEnfer\ et C:\Program Files\ConqueteDuMonde, on va avoir deux fois le même .dll. En sachant qu'il y a bien plus de programmes que ça, et que chaque programme peut utiliser plein de DLL, ça fait pas mal d'espace disque qui se fait avaler bêtement. D'accord avec toi, sauf qu'alors tu créés un petit dossier que tu mets dans le path et roulez jeunesse (voir Système 32). Jusqu'à ce que Windows commence à inclure les liens comme le fait le système Unix. Mais de toute façon, la taille commence à se compter en Terras, alors ... Les langages qui ont plusieurs versions sont les langages "récents". De nos jours, tout ce qui a plus de deux ans est "vieux" et "archaïque". Et comme dans notre monde si quelque chose n'est plus à la mode il ne se vend plus, on nous sors des nouvelles versions tous les ans/6 mois pour essayer de nous convaincre que ça roxx. Où va la monde ... ?
"Il ne faut pas confondre rêver sa vie et vivre ses rèves." "Je pleurais quand je vins au monde, et chaque jour me montre pourquoi." |
ProgVal
|
# Posté le 31/12/2010 à 08:48:26 Message supprimé pour le motif suivant : Message complètement hors sujet. |
Ice_Keese
|
# Posté le 31/12/2010 à 08:51:46 Message supprimé pour le motif suivant : Message complètement hors sujet. |
spider-mario
|
# Posté le 31/12/2010 à 14:24:31 Message supprimé pour le motif suivant : Message complètement hors sujet. |
GuilOooo
|
# Posté le 01/01/2011 à 13:12:16 |
Attention, je mords !![]()
|
On va arrêter la dérive ici et repartir sur le sujet initial, merci.
|
Retour au forum "Autres langages, outils et approches" ou à la liste des forums
