Encontré esta publicación buscando expresiones idiomáticas comunes en C ++, ya que recientemente me he estado adentrando bastante y me gustaría que mi código no parezca tan amateur como siento que es ... :-P
Después de haber pasado bastante tiempo con Perl, he descubierto que los modismos en ese idioma son muy parecidos a los que se encuentran en los idiomas naturales, como el inglés o el español (solo dos que conozco lo suficiente como para conocer algunos modismos).
No estoy de acuerdo con que un idioma sea como un "patrón de diseño pequeño". Todavía estoy en desacuerdo, aunque menos, que un idioma es una forma de evitar una deficiencia en un idioma.
Quizás la respuesta de Luc Danton se acerca más, pero déjame explicarte. Creo que un idioma es, bueno, idiomático de aquellos que usan el idioma. Por lo general, una expresión común o secuencia de expresiones que, aunque quizás no sea obvia, realiza una operación o expresa intención de una manera que tenga sentido para aquellos que son lo suficientemente fluidos como para haberla visto antes.
Volviendo a Perl, quizás el idioma más conocido es la " Transformación de Schwartzian ", una expresión que realiza una clasificación de datos de manera compacta y eficiente. No es la forma más obvia de realizar una operación de este tipo, pero es sucinta y aquellos que la han visto antes saben instantáneamente lo que está haciendo.
Otro ejemplo notable es " La maniobra de los orcos ", que aprovecha las nociones de perl de operadores verdaderos / falsos, ricos y precedencia de operadores.
Uno que personalmente me gusta bastante está relacionado con la maniobra de los orcos, pero no conozco su nombre:
push @{ $some_hash{$key} ||= [] }, $some_value;
De hecho, esto no es ofuscación, sino más bien una expresión clara y compacta de algo que de otro modo tomaría varias líneas. Si la clave está presente en el hash y tiene un valor verdadero, desconéctela como una matriz y coloque $ some_value en esa matriz. Si el elemento hash no está presente o tiene un valor falso, asígnele una matriz vacía, luego haga referencia a esa matriz y realice la inserción.
También vale la pena señalar que a partir de Perl 5.14, parte de este modismo está obsoleto: ¡ push ahora puede operar directamente en la referencia de matriz, no se necesita @ {}! Además, a partir de Perl 5.10, se puede usar // = en lugar de || = que verifica no la verdad sino la definición.