-1

배열이 C++/Java/C# 행/열에서와 같이 열/행으로 표시되는 최신 언어를 알고 계십니까?현대 언어 및 배열 표기 규칙

+5

? 그러나 2 차원 배열을 정의 할 때 행의 내용과 열의 정의는 사용자가 결정합니다. – delnan

+2

나는 왜 그 downvotes 궁금해? 내가 모른다는 질문에 대답 할 수 없습니까? 그리고 하느님을 사랑하기 때문에 당신이 downvote 때 적어도 일부 배짱이 인정합니다. 진심으로 ... –

+1

+1 downvotes 카운터 +1 - 그것은 (오해를 기반으로하지만, 유효한 질문입니다 범죄가 아니에요). – delnan

답변

6

없음 배열과 공동으로 행 또는 열의 개념이 없습니다. 이러한 개념을 하나의 차원 또는 다른 배열과 연관시키는 것은 프로그래머들뿐입니다. 변수를 자유롭게 교환하고 배열의 모든 부분에 "행"또는 "열"을 저장할 수 있습니다.

2

"행"과 "열"은 해석상의 문제입니다. 그것들은 언어의 근본적인 어떤 것과도 일치하지 않습니다.

(참고 : 몇 가지 예외가 그러한 matlab에와 같이 일반적으로 전용 수학 언어.) 그 언어의

-2

다른 사람들이 대답했듯이 색인을 행 또는 열로 해석하는 것은 프로그래머에게 달려 있습니다 (5 차원의 배열을 어떻게 해석합니까?). 단, 다국어 배열을 배치하는 방법을 지정하는 언어 나 언어 버전은 다릅니다 페이징을 피하고 CPU 캐시에서 히트를 늘림으로써 배열 집약적 인 계산의 성능을 향상시키는 데 도움이 될 수 있습니다.

즉 현대적인 최적화 컴파일러는 배열에 액세스하는 가장 효율적인 방법을 알아낼 수 있어야하므로 프로그래머는 메모리 레이아웃에 신경 쓸 필요가 없습니다.

dependence analysis (또는 Dataflow Analysis)은 루프가 펼쳐질 수 있고 한 반복의 표현식이 이전 반복의 표현식에 의존하지 않는다고 결정하면 예를 들어 색인화를 반전시킴으로써 표현식을 재정렬 할 수 있습니다.

루프가 자동으로 병렬화 될 수 있는지를 결정하는 것과 동일한 종류의 분석입니다. 값의 불변성으로 인해 분석이 더 쉬워지기 때문에 함수 언어에서 더 자주 수행되는 작업입니다. 절차 언어에서 부작용은 어디에서나 숨길 수 있으므로 간단한 표현이 포함 된 루프에서만 최적화가 수행됩니다.

+2

마지막 단락은 C 또는 C++에서 사실이 아닙니다. 컴파일러가 캐시 액세스 패턴을 예측하고 "빠른"차원을 전환 할 수있는 언어가 있다면 그것에 대해 듣고 싶습니다! –

+0

.NET 언어의 JITter조차도이 작업을 수행하지 않습니다. 여전히 작성중인 코드가 실제로 무엇을 의미하는지 이해해야하며, 처음부터 가장 논리적 인 방법으로 구현해야합니다. –

+0

-1 확인되지 않았거나 오도 된 대답 인 경우 –

0

행 대 열 - 주 순서에 대해 질문하는 경우 미묘한 저수준 차이가 있습니다. 그것은 다차원 데이터가 메모리에 어떻게 저장되는지에 달려 있습니다.

자세한 내용은 wikipedia article을 확인하십시오.