LINUX.ORG.RU

Идиомы языков программирования


0

0

Часто вижу в книжках рассуждения о полезности использования идиом, привычки к ним. Это позволяет сразу "по привычке" оценивать, что делает типовой участок кода, и позволяет легче увидеть ошибки.
Например,

i=0;
while(i <= n-1)
array[i++] = 1.0;

и

for(i = n; --i >= 0; )
array[i] = 1.0;

не являются типовыми, а типовой -

for(i = 0; i < n; i++)
array[i] = 1.0;

Если для C++ - то
for(int i = 0; i < n; i++)
array[i] = 1.0;

Идиома С для удаления последнего символа из строки:
string[strlen(string)-1] = '\0';

В общем, суть ясна Ж:-)

А вопрос вот в чём: есть ли где-нибудь своды этих самых идиом для разных языков? Особенно для С и Ады. Понятно, что в любых книжках по программированию примеры по идее должны быть в идиоматическом виде... И всё-таки, хочется почитать как можно более полный свод. Если знаете, где такое можно раздобыть - подскажите, пожалуйста.

Re: Идиомы языков программирования

Существует лишь одна идиома, перводить на асм/машиный язык и смотреть скорость выполнения. Если скорость не важна то никаких идиом вообще не существует.

anonymous ()

Re: Идиомы языков программирования

В Аде просто напросто нельзя так извращаться с массивами (инкремент внутри []), впрочем как и модифицировать счетчик For'а ;)

AiLr ★★ ()

Re: Идиомы языков программирования

Есть такая идиома -- использовать языки, которым не нужны подобные идиомы. Любой повторяющийся код нужно абстрагировать, лучше конечно эффективно.

CrazyPit ★★★ ()

Re: Идиомы языков программирования

> есть ли где-нибудь своды этих самых идиом для разных языков?

берешь какой-нибудь проект с открытыми исходниками и смотришь, как люди делают.

hatefu1_dead ()
Ответ на: Re: Идиомы языков программирования от anonymous

Re: Идиомы языков программирования

> Существует лишь одна идиома, перводить на асм/машиный язык и смотреть
> скорость выполнения. Если скорость не важна то никаких идиом вообще
> не существует.

Компилятор компилятору рознь.

Это вот безобразие 

for(i = n; --i >= 0; )
  array[i] = 1.0; 

в большинстве случаев есть бессмысленное затруднение читабельности.

Мало-мальский умный компилятор сам поймёт, в каком направлении крутить
индуктивную переменную.

jek_ ()

Re: Идиомы языков программирования

книжки Скотта Мейерса и книжка Алена И. Голуба ?  
"Эффективное использование С++", "..." 
 "C&C++ Правила программирования" - была в интернете

anonymous ()

Re: Идиомы языков программирования

У Кернигана-Пайка в "Практике программирования" есть немного про сишные. Например, кроме приведенных тобой, еще обход списков описывается.

shumer ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.