Современные языки и условные обозначения массивов - PullRequest
0 голосов
/ 23 января 2011

Знаете ли вы какой-нибудь современный язык, в котором массивы помечаются как столбец / строка, а не как в C ++ / Java / C # строка / столбец?

Ответы [ 4 ]

6 голосов
/ 23 января 2011

Ни один из этих языков не имеет понятия строки или столбца, связанного с массивами. Только программисты связывают эти понятия с тем или иным измерением массива. Вы можете свободно обмениваться ими и хранить «строки» или «столбцы» в любой части массива.

2 голосов
/ 23 января 2011

«Строка» и «столбец» - это просто вопрос интерпретации. Они не соответствуют чему-то фундаментальному в языке.

(Примечание: есть несколько исключений; обычно это математические языки, такие как Matlab.)

0 голосов
/ 25 января 2011

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

Проверьте эту статью в Википедии для получения дополнительной информации.

0 голосов
/ 23 января 2011

Как ответили другие, интерпретация индексов как строк или столбцов зависит от программиста (как вы интерпретируете массив с пятью измерениями?), За исключением того, что несколько языков или языковых версий определяют, как многомерные массивы размещаются в памяти, и знание этого может помочь повысить производительность вычислений с интенсивным использованием массива, избегая подкачки страниц и увеличивая количество обращений к кэшам ЦП.

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

Если анализ зависимости (также Анализ потока данных ) определяет, что цикл можно развернуть и что выражения в одной итерации не зависят от выражений из предыдущих итераций, тогда выражения могут быть переупорядочены, например, путем инверсии индексации.

Это тот же самый анализ, который делается для определения возможности параллельного распараллеливания цикла. Это чаще делается в функциональных языках, потому что неизменность значений облегчает анализ. В процедурных языках побочные эффекты могут скрываться где угодно, поэтому оптимизации происходят только для циклов, включающих простые выражения.

...