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';

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

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

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

anonymous
()

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

AiLr ★★
()

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

CrazyPit ★★★
()

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

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

hatefu1_dead
()
Ответ на: комментарий от CrazyPit

+1. Если в языке появляются идиомы и паттерны, это повод задуматься, не пора ли менять язык.

ero-sennin ★★
()
Ответ на: комментарий от anonymous

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

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

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

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

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

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

jek_
()

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

anonymous
()

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

shumer
()
Ответ на: комментарий от shumer

> У Кернигана-Пайка в "Практике программирования" есть немного про
> сишные.
Оттуда у меня вопрос и пошёл ;-)

sergey_feo
() автор топика
Ответ на: комментарий от anonymous

> "C&C++ Правила программирования" - была в интернете
Скачал, почитаю. Спасибо.

sergey_feo
() автор топика
Ответ на: комментарий от eXOR

Ну, тогда 3.14здец... ;-)
Применять тогда, когда точно известно, что строка не пустая.


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