2008-11-19 11 views
57

Widzę zwrot "idiom programowania", tak jakby był powszechnie rozumiany. Jednak w wynikach wyszukiwania i stackoverflow widzę wszystko ...Co to jest idiom programowania?

Od Micro:

  • inkrementacja zmiennej
  • Reprezentujący nieskończoną pętlę
  • Zamiana wartości zmiennych

Pośrednim :

Makro:

Czy istnieje jedna, wspólna definicja "programowania idiomu"? Ponieważ "idiom programowania" jest używany w wielu zakresach:

  • Micro: składniowej niuansów lub wspólnego składni
  • Medium: wspólny styl i wzorów
  • Makro Programowanie paradygmatów jak idiom

Czy go poprawne użycie frazy w dowolnym z tych zakresów? Dotychczasowe odpowiedzi koncentrują się na idiomach składniowych. Czy inne są również ważne?

Odpowiedz

42

Idiom programowania to zwykły sposób kodowania zadania w określonym języku. Na przykład pętlę często przedstawiany tak C:

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

PHP zrozumieć podobną konstrukcję:

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

jednak nie jest zalecane w PHP pętli na tablicy. W tym przypadku należałoby użyć:

foreach ($arr as $value) 

Natomiast w Ruby, należy użyć:

(1..10).each 

dla pętli, czyli

array.each 

Istnieje wiele wiele możliwości, aby napisać pętla w tych językach. Korzystanie z idiomu umożliwia natychmiastową identyfikację przez doświadczonych czytelników. Następnie mogą spędzać czas na ważniejszych problemach.

8

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

programowaniem idiom to wzór, algorytm lub sposób kodu strukturę. Mówienie o programowaniu idiomów to mówienie o tych wzorcach, które często powtarzają się w kodzie lub proponują nowe.

Korzyści z bycia znanym z idiomów, szczególnie tych większych, polega na tym, że patrząc na kod można zobaczyć kilka linii kodu, ale ponieważ jest on znany jako konkretny idiom, można go mentalnie przedstawić i pomyśleć o kodzie jako jeden idiom zamiast koniecznie przeczytać i zrozumieć każdą linię indywidualnie.

Powiedzieć, że kod nie jest idiomatyczny, to powiedzieć, że nie strukturyzuje się w sposób, który pozwala ludzkim czytelnikom na skuteczne myślenie o kodzie.

2

Od WikiPedia: Idiom programowania jest środkiem wyrażania powtarzającego się konstruktu w jednym lub kilku językach programowania.

Zgaduję, że już byłaś na tej drodze!

+0

to tylko delegaci pytanie do "Jaki jest konstruktem * *" Czy to mikro, średnie czy makro? – Pacerier

1

Idiom to termin z zakresu językoznawstwa. Jest to grupa słów, które nie dosłownie oznaczają tego, co mówią.Na przykład mówienie, że ktoś jest "pod wpływem pogody", kiedy nie czuje się dobrze. Ta konkretna fraza pochodzi od żeglarzy mówiących o pasażerach, pasażerowie kursujący drogą morską schodzili poniżej pokładów "pogodowych", gdzie ruch statków był mniejszy. Ale większość z nas nie jest żeglarzami i nie zna dosłownego znaczenia tego zwrotu.

W programowaniu wielu, nawet większość instrukcji nie jest zrozumiała dla ogółu społeczeństwa, mimo że są to angielskie słowa. na przykład "dla pętli". Chociaż mają sens dla programistów, nie dotyczą większości innych osób.

+4

-1: Język programowania różni się od wariantu nieza-programującego. –

+0

... a jednak tak nie jest. –

12

"Język" w języku (nie-programowaniu) jest powiedzeniem lub wyrażeniem, które jest unikalne dla określonego języka. Zasadniczo coś, co nie jest zgodne z "regułami" języka i istnieje tylko dlatego, że native speakerzy "po prostu wiedzą", co to znaczy. (Na przykład w języku angielskim mówimy „w linii”, ale „z z linii” - to byłoby idiomatyczne)

Moving to na arenę programowania, mamy takie rzeczy jak:

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

który actaually oznacza:

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

których każdy C/C++ programista zrozumieć, ale byłoby całkowicie przegroda kogoś pochodzących z innego języka programowania.

+1

-1 Chociaż na idiomy może mieć wpływ składnia, myślę, że jest w nich znacznie więcej. –

+0

Podoba mi się ta odpowiedź. W języku naturalnym idiom jest czymś, którego znaczenia nie można zbudować ze znaczeń jego terminów składowych. Innymi słowy, jest to niepodzielny atom semantycznie, choć składnie można go podzielić. Tak więc w programowaniu idiomy to rzeczy, których nie kwestionujesz, ale po prostu zapamiętywane na pamięć i mogą być produktywne. –

0

Idiom jest sposobem na powiedzenie czegoś, co jest szczególne dla danego języka. Na przykład tutaj jest garść english idioms.

Można to ekstrapolować, aby zastosować koncepcję do programowania.

2

Idiom to wzór "", który można zidentyfikować w kilku miejscach.

Nie powiedziałbym, że ma to coś wspólnego z konkretnym językiem programowania.

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

To jest fragment tego, co nazwałbym idiomem "dla każdego", który jest wyrażany nieco inaczej w wielu językach.

Kolejnym doskonałym przykładem idiomu jest Socket. Wszystkie platformy, które twierdzą, że mają gniazda, wszystkie działają w ten sam sposób koncepcyjnie, to znaczy, że mają z grubsza ten sam interfejs.

+0

Kiedy słyszę "Gniazdo", myślę "Wzór we/wy". Nie widzę tego jako idiomu - wzorce istnieją w różnych językach, podczas gdy (jak opisują większość innych respondentów) idiomy są specyficzne dla języka. – Tom

+0

Nie podałem mojej konkretnej odpowiedzi jako próby rozróżnienia między "idiomem" a "wzorami", co powinno być jasne, jeśli przeczytasz pierwsze pięć słów. Miało to być informacyjną i wyjaśniającą odpowiedź. – Zuu

1

Wkrocz w rutynę: wykonaj ten sam proces w ten sam sposób. Akumuluj idiomy. Ujednolicić. Jedyną różnicą (!) Między Szekspirem a tobą była wielkość jego listy idiomów - a nie wielkość jego słownictwa.

  • Alan Perlis, fraszki w programowaniu

http://www.cs.yale.edu/quotes.html

2

Od dużych programów rosną z małych, ważne jest, że możemy rozwijać arsenał standardowych struktur program którego dokładność staliśmy się upewnić - nazywamy je idiomami - i uczymy się łączyć je w większe struktury, stosując techniki organizacyjne o sprawdzonej wartości.

Programista powinien nabyć dobre algorytmy i idiomy.

Alan J. Perlis - SICP Foreword