Question Qu'est-ce qu'un idiome de programmation?


Je vois l'expression "idiome de programmation" comme si elle était communément comprise. Pourtant, dans les résultats de recherche et le stackoverflow, je vois tout ...

De micro:

  • Incrémenter une variable
  • Représentant une boucle infinie
  • Echange de valeurs de variables

À moyen:

Pour macro:

Existe-t-il une seule définition commune pour "idiome de programmation"? Depuis "idiome de programmation" est utilisé dans de nombreux domaines:

  • Micro: nuance syntaxique ou syntaxe commune
  • Moyen: style et modèles communs
  • Macro: paradigmes de programmation comme idiome

Est-il valable d'utiliser la phrase dans l'une de ces portées? Les réponses à ce jour se concentrent sur les idiomes syntaxiques. Les autres sont-ils également valables?


62
2017-11-19 16:21


origine


Réponses:


Un langage de programmation est le moyen habituel de coder une tâche dans une langue spécifique. Par exemple, une boucle est souvent écrite comme ceci dans C:

for (i=0; i<10; i++)

PHP comprendra une construction similaire:

for ($i = 1; $i <= 10; $i++)

Mais en PHP, il est déconseillé de faire une boucle sur un tableau. Dans ce cas, vous utiliseriez:

foreach ($arr as $value)

Alors qu'en Ruby, vous utiliseriez:

(1..10).each

pour la boucle, ou:

array.each

Il existe de nombreuses possibilités d’écrire une boucle dans ces langues. L'utilisation de l'idiome le rend immédiatement identifiable par les lecteurs expérimentés. Ils peuvent alors consacrer leur temps à des problèmes plus importants.


44
2017-11-19 16:49



Un "idiome" dans un langage (sans programmation) est un dicton ou une expression propre à une langue particulière. Généralement, quelque chose qui ne suit pas les "règles" de la langue, et existe juste parce que les locuteurs natifs "savent" simplement ce que cela signifie. (par exemple, en anglais on dit "in line" mais "out" de line "- ce serait idiomatique)

En déplaçant cela dans l'arène de la programmation, nous obtenons des choses comme:

 if(c=GetValue())
 {...}

ce qui signifie par définition:

 c = GetValue();
 if (c != 0)
 {....}

que tout programmeur C / C ++ comprend, mais dérouterait totalement quelqu'un venant d'un langage de programmation différent.


15
2017-11-19 16:31



Voir http://en.wikipedia.org/wiki/Programming_idiom

Un langage de programmation est un modèle, un algorithme ou un moyen de structurer le code. Parler d'idiomes de programmation, c'est parler de ces schémas récurrents dans le code ou en proposer de nouveaux.

Les avantages de la familiarité avec les idiomes, en particulier les plus importants, sont les suivants: lorsque vous regardez du code, vous pouvez voir plusieurs lignes de code, mais comme il est familier, vous pouvez représenter mentalement le code au lieu de devoir nécessairement lire et comprendre chaque ligne individuellement.

Dire que le code n’est pas idiomatique, c’est dire qu’il ne se structure pas de manière à permettre aux lecteurs humains de penser au code efficacement.


10
2017-11-19 16:24



De Wikipédia: Un langage de programmation est un moyen d'exprimer une construction récurrente dans un ou plusieurs langages de programmation.

Je suppose que vous avez déjà été dans cette voie!


2
2017-11-19 16:25



Un idiome est un "modèle" qui peut être identifié à plusieurs endroits.

Je ne dirais pas que cela a quelque chose à voir avec un langage de programmation particulier.

Iterator foo;
foo.reset();
while (foo.next())
{
    print(foo.value());
}

C'est un extrait de ce que j'appellerais l'idiome «pour chaque» qui est exprimé légèrement différent dans un certain nombre de langues.

Un autre excellent exemple d'idiome est Prise. Toutes les plates-formes qui prétendent avoir des sockets fonctionnent toutes de la même manière, c'est-à-dire qu'elles ont à peu près la même interface.


2
2018-06-15 12:12



Étant donné que les grands programmes se développent à partir de petits programmes, il est crucial de développer un arsenal de structures de programmes standard dont nous sommes devenus sûrs - nous les appelons des idiomes - et d'apprendre à les combiner dans des structures plus importantes.

Un programmeur devrait acquérir de bons algorithmes et idiomes.

Alan J. Perlis - SICP Avant-propos 


2
2018-05-14 04:35



Idiom est un terme de la linguistique. C'est un groupe de mots qui ne signifie pas littéralement ce que le mot Par exemple, dire que quelqu'un est "sous la pluie" quand il ne se sent pas bien. Cette phrase particulière provenait de marins parlant de passagers, les passagers ayant le mal de mer allaient au-dessous des ponts «météo» où le mouvement des navires était moindre. Mais la plupart d'entre nous ne sommes pas des marins et ne connaissons pas le sens littéral de la phrase.

En programmant beaucoup, même la plupart des instructions ne sont pas comprises par le grand public même s’il s’agit de mots anglais. par exemple "pour la boucle". Bien qu'ils aient un sens pour les programmeurs, ils ne le font pas pour la plupart des autres.


1
2017-11-19 16:29