Czym jest idiom programistyczny?

Widzę zwrot "idiom programowania" rzucany wokół tak, jakby był powszechnie rozumiany. Jednak w wynikach wyszukiwania i stackoverflow widzę wszystko...

From micro:

  • zwiększanie zmiennej
  • reprezentująca nieskończoną pętlę
  • Zamiana wartości zmiennych

Do medium:

Do makra:

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

  • Micro: syntactic niuance or common syntax
  • Medium: wspólny styl i wzory
  • makro: paradygmaty programowania jako idiom

Czy poprawne jest używanie tego wyrażenia w którymkolwiek z te lunety? Odpowiedzi do tej pory skupiają się na idiomach składniowych. Czy pozostałe też są ważne?

Author: Corbin March, 2008-11-19

10 answers

Idiom programistyczny jest zwyczajowym sposobem kodowania zadania w określonym języku. Na przykład pętla jest często zapisywana w ten sposób w C:

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

PHP zrozumie podobną konstrukcję:

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

Ale w PHP nie zaleca się zapętlania tablicy. W tym przypadku można użyć:

foreach ($arr as $value)

Natomiast w Ruby, można by użyć:

(1..10).each

Dla pętli, lub:

array.each

Istnieje wiele możliwości zapisu pętli w tych językach. Używanie idiomu sprawia, że natychmiast rozpoznawalne przez doświadczonych czytelników. Mogą wtedy spędzać czas na ważniejszych problemach.

 45
Author: Christian Lescuyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 16:49:26

"Idiom" w języku (Nie-programowania) to powiedzenie lub wyrażenie, które jest unikalne dla danego języka. Generalnie coś, co nie jest zgodne z" zasadami "langauge i istnieje tylko dlatego, że native speakerzy "po prostu wiedzą", co to znaczy. (na przykład w języku angielskim mówimy "in line", ale "out of line" -- to byłoby idiomatyczne)

Przenoszenie tego na arenę programowania, otrzymujemy takie rzeczy jak:

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

Co oznacza:

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

Które każdy Programista C / C++ rozumie, ale całkowicie zdziwiłby kogoś, kto pochodzi z innego języka programowania.

 15
Author: James Curran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 16:31:15

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

Idiom programistyczny to wzór, algorytm lub sposób strukturyzacji kodu. Mówienie o idiomach programistycznych to mówienie o tych wzorcach, które często powtarzają się w kodzie lub proponowanie nowych.

Korzyści płynące z znajomości idiomów, szczególnie tych większych, polega na tym, że patrząc na kod można zobaczyć kilka linijek kodu, ale ponieważ jest on znany jako konkretny idiom, można go mentalnie reprezentować i pomyśl o kodzie jako o tym pojedynczym idiomie, zamiast koniecznie czytać i rozumieć każdą linijkę z osobna.

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

 10
Author: Sam Hasler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 16:36:07

Z WikiPedia : idiom programowania jest sposobem wyrażania powtarzających się konstrukcji w jednym lub więcej językach programowania.

Zgaduję, że już to przerabiałeś!

 2
Author: Mat Nadrofsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 16:25:27

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());
}

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

Innym doskonałym przykładem idiomu jest Socket . Wszystkie platformy, które twierdzą, że mają gniazda, wszystkie działają koncepcyjnie w ten sam sposób, to znaczy wszystkie mają mniej więcej ten sam interfejs.
 2
Author: Zuu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-15 12:12:17

Ponieważ duże programy wyrastają z małych, ważne jest, abyśmy opracowali arsenał standardowych struktur programowych, których poprawność staliśmy się pewni - nazywamy je idiomami - i nauczyli się łączyć je w większe struktury za pomocą technik organizacyjnych o sprawdzonej wartości.

Programista powinien nabyć dobre algorytmy i idiomy.

Alan J. Perlis- SICP Przedmowa

 2
Author: Ahmad Ajmi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-14 04:35:45

Idiom to termin z językoznawstwa. Jest to grupa słów, które nie oznaczają dosłownie tego, co mówią. Na przykład powiedzenie, że ktoś jest "pod wpływem pogody", gdy nie czuje się dobrze. To konkretne zdanie pochodzi od marynarzy mówiących o pasażerach, pasażerowie z chorobą morską szli poniżej pokładów "pogodowych", gdzie ruch statków był mniejszy. Ale większość z nas nie jest marynarzami i nie zna dosłownego znaczenia tego wyrażenia.

W programowaniu wiele, nawet większość instrukcji nie jest zrozumiane przez ogół społeczeństwa, mimo że są to angielskie słowa. na przykład "pętla for". Chociaż mają sens dla programistów, nie dla większości innych ludzi.

 1
Author: Jim C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 16:29:57

Wpadnij w rutynę wcześnie: Zrób ten sam proces w ten sam sposób. / Align = "left" / / Align = "left" / Jedyna różnica(!) między Szekspirem a tobą była wielkość jego listy idiomów-nie wielkość jego słownictwa.

  • ALAN PERLIS, epigramy w programowaniu

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

 1
Author: ibm2100,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 02:38:23

Idiom to sposób na powiedzenie czegoś, co jest specyficzne dla danego języka. Na przykład oto garść angielskich idiomów .

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

 0
Author: Aaron Palmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-19 16:33:25

Po pierwsze zastanów się nad znaczeniem słowa Ideom , można je podsumować jako wyrażenie, które ma więcej znaczenia i implikacji niż suma słów. W programowaniu większość fragmentów kodu jest idiomatyczna.

Idiom programistyczny można uznać za opisowy klasy rozwiązań, które można przenieść do różnych przypadków. Rozważmy while { ... } vs do {} while są idiomatyczne, zawierają te same słowa, ale kolejność niesie ze sobą ważne rozróżnienie. Dokładne sformułowanie będą się różnić w zależności od języka, ale podstawowe znaczenie i implikacje będą się różnić; na przykład do {} while będą zawsze wykonywane raz, bez względu na język lub wyrażenia używane do jego implementacji. Jako idiom jest to przekazywalny kształt idei. Może być używany w wielu okolicznościach i wyrażany różnymi słowami (deklaracjami/poleceniami), ale podstawowy wynik zawsze będzie taki sam.

 0
Author: Martin Spamer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 17:35:35