Idióma (programozás)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. február 13-án felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A programozási idióma bizonyos összetett szerkezetek egy vagy több programozási nyelven történő kifejezésének stabil módja . Az idióma egy problémamegoldási minta, egy algoritmus vagy adatstruktúra írása a beépített nyelvi elemek kombinálásával.

Az idióma tekinthető a legalacsonyabb szintű tervezési mintának , amelyet a tervezés és a kódolás metszéspontjában alkalmaznak egy programozási nyelvben. Az idióma meghatározott módot ír elő bizonyos részletek és a köztük lévő kapcsolatok megvalósítására egy adott nyelv eszközeivel. Az idiómák halmaza a programozási nyelvtől függ, és ugyanaz az idióma két különböző nyelven eltérően nézhet ki, vagy az egyikben nincs is rá szükség [1] .

Az idióma lehet egy nyelvben egy szemantikailag eltérő nyelv elemeinek reprodukciója, amelyek ebben a nyelvben is alkalmazhatók, de nem maga a nyelv váltja ki őket (azaz nem szerepelnek az idiómái között). Ebből a szempontból az objektum-orientált tervezés számos mintáját funkcionális nyelvek elemeinek idiomatikus reprodukciójaként tekintik [2] [3] .

Példák egyszerű kifejezésekre

Növekedés

Az olyan nyelvekben, mint a BASIC , a változó értékének eggyel növelésének idióma a következő:

i = i + 1

Rövidített változat C-szerű nyelveken:

i += 1 ; /* i = i + 1; */ ++ i ; /* ugyanaz az eredmény */ i ++ ; /* ugyanaz az eredmény */

A Pascal hasonló hozzárendelési eljárást tartalmaz:

i := i + 1 ; Inc ( i ) ; (*ugyanaz az eredmény*)

Értékcsere (swap)

A legtöbb nyelven a két változó közötti értékcsere így néz ki:

hőmérséklet = a ; a = b _ b = hőmérséklet ;

Perlben ez elegánsabbnak tűnik:

( $a , $b ) = ( $b , $a );

Endless Loop

Pascal :

míg true do begin do_something () ; vége ;

A C-szerű nyelvekben számos módja van a végtelen ciklusok szervezésének, de a következő példa mutatja ezt a legkézenfekvőbb módon:

mert (;;) { csinál_valamit (); }

A Perl támogatja a C szintaxist és más változatokat is:

do_something () while ( 1 ); # lerövidített végtelen ciklus while ( 1 ) { do_something () }; # hasonló # Egy "csupasz blokk" és a redo operátor használata { do_something (); újra ; }

Ada :

ciklus csinál_valamit ; end - loop ;

Python :

míg igaz : do_something ()

Kiválasztás asszociatív tömbből

Sok nyelvnek van egy asszociatív tömb megvalósítása , az ún. hash tábla .

Az asszociatív tömb megvalósítása Perlben :

saját %elemek = térkép { $_ => 1 } @elemek ;

Kritika

A Learn Ruby The Hard Way című könyv szerzője, Zed Shaw megjegyzi, hogy a fejlesztői közösségekben az idiómákkal kapcsolatos attitűd azt sugallja, hogy az idiómák használatát az erkölcsök közé kell sorolni , mivel természetes nyelven írva, amely egyértelmű megjelenítést igényel, az idiómákat kell használni. kerülni kell [4 ] . A következő példát hozza a Ruby Styleguide-ból [5] :

arr = [ 1 , 2 , 3 ] # bad for elem in arr do puts elem end #jó arr . mindegyik { | elem | elemet tesz }

A for ciklus használata a hivatalos Ruby stílus szerint elavult, és a .each. Shaw álláspontja az, hogy a programozási nyelvek hallgatóinak nem csak egy adott programozási nyelv idiómáit, hanem alternatív kódolási módokat is meg kell tanulniuk – ez elkerüli az indoktrinációt és megkönnyíti az átállást más nyelvekre.

Lásd még

Linkek

Jegyzetek

  1. Buschmann, F. és Meunier, R. és Rohnert, H. és Sommerlad, P. és Stal, M. Pattern-Oriented Software Architecture, A System of Patterns. - Wiley, 2013. - 350 p. — ISBN 9781118725269 .
  2. Tervezési minták a Haskellben
  3. Peter Norvig - Tervezési minták dinamikus nyelveken (diák)
  4. Zed A. Shaw, A programozási nyelveknek szociális többeik vannak, nem idiómáik  (lefelé mutató link)
  5. Ruby Styleguide