프로그래밍 방법을 배울 수 있도록 도와주세요. - 페이지 4

 

드미트리 페도세프 :
매번 재계산하거나 재계산하지 않음

당신은 아무것도 이해하지 못했습니다. PositionTotal()의 쐐기 조명이 수렴되지 않았습니다. 나는 그렇게 하는 것이 나쁘다고 지적했을 뿐입니다.

드미트리 페도세프 :
하지만 살인적인 실험을 가져오는 대신

내 실험에 대해 무엇을 싫어합니까? 컴파일러가 첫 번째 호출의 결과를 최적화 캐시했습니까?

이것이 바로 그가 최적화한 것입니다. for (int i = 0; i < 1+2 ; i++) {}

또는 이와 같이: const int X = 1 ; (int i = 0; i < X+2; i++) {}

그리고 이것은 확실히 아닙니다: int X = 1 ; for (int i = 0; i < X+1; i++) {} for not telepath, 그리고 xs는 이 X로 무엇을 그리고 어디서 일어날 수 있습니까? 갑자기 루프 본문에서 수정되거나 참조/포인터에 의해 간접적으로 수정됩니까? 각 반복마다 'X+1'을 추가하는 것이 좋습니다. '+1'을 제거하더라도 이 x가 상수로 선언되지 않으면 'X'의 현재 값을 계속 사용합니다.

그리고 그것은 확실히 함수에 의해 반환된 결과를 캐시하지 않습니다, Carl! ("and if for (int index=f();;) " 예상 - 인덱스가 초기화될 때 정확히 한 번 호출됨).

드미트리 페도세프 :
그리고 컴파일러 - 코드를 최적화하고 함수를 통하지 않고 변수에 직접 액세스할 수 있음을 의미합니다.

물론 컴파일러는 시장 상황을 정확히 알고 있고 함수 호출이 항상 하나의 값을 반환한다고 확신합니다. 그렇다면 이 함수를 두 번 이상 호출하는 이유는 OnInit()에서 한 번이면 충분합니다. 결과를 스스로 기억하십시오 , 그리고 좋아!

그리고 그는 사이클 자체의 실행 프레임워크 내에서도 PositionsTotal()의 경우 일부 주문이 더 이상 존재하지 않을 수 있다는 점에 신경 쓰지 않습니다. 예를 들어 다른 고문 - 나머지는 모두 갑자기 처리되기 때문에 어리석게도 처리되지 않습니다! 덜해졌다?

드미트리 페도세프 :
이것은 ArraySize() 함수에서 매우 두드러지며, 함수 호출과 변수 사용의 차이점을 구분하지 못합니다. 하지만 PositionsTotsl()의 경우에는 그렇지 않습니다.

일부 중간 크기 어레이의 크기와 현재 열려 있는 위치의 수는 어떻게 관련되어 있습니까? 인덱스를 사용 하여 배열의 요소에 액세스하고 있습니다. 예를 들어 3개의 요소 크기에 대해서는 array[999]를 참조하십시오. 이 배열이 실제로 "스마트" 유형인 경우 클래스는 예를 들어 유효성 검사가 발생하는 '[]' 연산자와 함께 존재합니다. 그러면 괜찮습니다. 그리고 그렇지 않다면? 예, 어쨌든 코드의 고전적인 예가 있습니다. 웅덩이를 가스화하기 위해 거기에 무엇이 있는지, 그들은 인정하고 부풀리지 않을 것입니다.

 
Tio Nisla :

드미트리 페도세프 :
매번 재계산하거나 재계산하지 않음

당신은 아무것도 이해하지 못했습니다. PositionTotal()의 쐐기 조명이 수렴되지 않았습니다. 나는 그렇게 하는 것이 나쁘다고 지적했을 뿐입니다.

드미트리 페도세프 :
하지만 살인적인 실험을 가져오는 대신

내 실험에 대해 무엇을 싫어합니까? 컴파일러가 첫 번째 호출의 결과를 최적화 캐시했습니까?

이것이 바로 그가 최적화한 것입니다. for (int i = 0; i = 1+2; i++) {}

또는 이와 같이: const int X = 1 ; (int i = 0, i = X+2, i++) {}

그리고 이것은 확실히 아닙니다: int X = 1 ; for (int i = 0; i = X+1; i++) {} for not telepath, 왜 그리고 어디서 이 X가 발생할 수 있습니다. 갑자기 루프 본문에서 또는 참조/포인터에 의해 간접적으로 수정됩니까? 각 반복마다 'X+1'을 추가하는 것이 좋습니다. '+1'을 제거하더라도 이 x가 상수로 선언되지 않으면 'X'의 현재 값을 계속 사용합니다.

그리고 그것은 확실히 함수에 의해 반환된 결과를 캐시하지 않습니다, Carl! ("and if for (int index=f();;) " 예상 - 인덱스가 초기화될 때 정확히 한 번 호출됨).

드미트리 페도세프 :
그리고 컴파일러 - 코드를 최적화하고 함수를 통하지 않고 변수에 직접 액세스할 수 있음을 의미합니다.

물론 컴파일러는 시장 상황을 정확히 알고 있고 함수 호출이 항상 하나의 값을 반환한다고 확신합니다. 그렇다면 이 함수를 두 번 이상 호출하는 이유는 OnInit()에서 한 번이면 충분합니다. 결과를 스스로 기억하십시오 , 그리고 좋아!

그리고 그는 사이클 자체의 실행 프레임워크 내에서도 PositionsTotal()의 경우 일부 주문이 더 이상 존재하지 않을 수 있다는 점에 신경 쓰지 않습니다. 예를 들어 다른 고문 - 나머지는 모두 갑자기 처리되기 때문에 어리석게도 처리되지 않습니다! 덜 되었다?

드미트리 페도세프 :
이것은 ArraySize() 함수에서 매우 두드러지며, 함수 호출과 변수 사용의 차이점을 구분하지 못합니다. 하지만 PositionsTotsl()의 경우에는 그렇지 않습니다.

일부 중간 크기 어레이의 크기와 현재 열려 있는 위치의 수는 어떻게 관련되어 있습니까? 인덱스를 사용 하여 배열의 요소에 액세스하고 있습니다. 예를 들어 3개의 요소 크기에 대해서는 array[999]를 참조하십시오. 이 배열이 실제로 "스마트" 유형인 경우 클래스는 예를 들어 유효성 검사가 발생하는 '[]' 연산자와 함께 존재합니다. 그러면 괜찮습니다. 그리고 그렇지 않다면? 예, 어쨌든 코드의 고전적인 예가 있습니다. 웅덩이를 기화시킬 수 있는 것이 무엇인지, 그들은 인정할 것이고 부풀려지지 않을 것입니다.

빛이 PositionTotal()에 수렴하지 않으면 표시를 완전히 놓친 것입니다. 따라서 루프가 반복될 때마다 ArraySize() 함수를 호출할 수 있으며 이로 인해 속도가 변경되지 않습니다.

당신의 실험은 부재 때문에 나에게 적합하지 않습니다.

나머지 모든 환상은 환상이기 때문에 흥미롭지 않습니다.

당신은 유치원에 있어야합니다.

 
Dmitry Fedoseev :

무엇에 대한 지식으로? 이 알고리즘이 자연에 존재하지 않지만 직접 발명해야 하고 모든 것을 결정하는 사람은 그 사람입니다.

원하는 언어로 원하는 코드를 능숙하게 작성하는 방법에 대한 지식.

이해할 수 없습니다. 이것을 할 수있는 그러한 알고리즘이 없습니까?

거래에 대한 정보를 어떻게 수집하고 활용하나요? 고문의 모든 위치, 거래량, 이익, 유형, 개시 가격에 대한 정보를 수집해야 합니다. 그런 다음 가장 최근의 위치 또는 가장 큰 위치에 대한 정보를 확인합니다.

그래서 이 질문을 가진 저자는 주제도 일반적으로 만들었습니다.

그리고 함수의 주기와 성능에 대해서는 이미 다른 관심 있는 사람들이 작성했습니다. 말하자면, 그러한 알고리즘의 구현에서 더 정교함) 그러나 그들은 또한 그것을 가장 잘하거나 올바르게 수행하는 방법을 알고 싶어하는 사람들입니다.

 
Nikolay Mitrofanov :

원하는 언어로 원하는 코드를 능숙하게 작성하는 방법에 대한 지식.

이해할 수 없습니다. 이것을 할 수있는 알고리즘이 없습니까?

그래서 이 질문을 가진 저자는 주제도 일반적으로 만들었습니다.

그리고 함수의 주기와 성능에 대해서는 이미 다른 관심 있는 사람들이 작성했습니다. 말하자면, 그러한 알고리즘의 구현에서 더 정교함) 그러나 그들은 또한 그것을 가장 잘하거나 올바르게 수행하는 방법을 알고 싶어하는 사람들입니다.

그리고 당신은 여전히 위치를 계산하는 방법에 대해? 그럼 실례합니다.

흥미롭게도, 이 세련된 사람들은 여전히 알고 싶어하지만 ... 여전히 알지 못합니다. 그리고 위치 계산에 관한 모든 것입니까?

다시 한 번 죄송합니다. 제가 잘못 이해한 것이 아닙니다. "알고리즘 구현"이라는 문구는 위치를 계산하는 기능을 의미합니까? 즉, 루프에서 PositionsTots() 함수를 작성합니까 아니면 변수를 사용합니까? 이것을 알고리즘이라고 합니까?
 
Dmitry Fedoseev :

위치 계산 방법에 대해 여전히 이야기하고 있습니까? 그럼 실례합니다.

흥미롭게도, 이 세련된 사람들은 여전히 알고 싶어하지만 ... 여전히 알지 못합니다. 그리고 위치 계산에 관한 모든 것입니까?

그래서 문제가 해결되면 무엇에 대해 논쟁하는 것입니까?) LOL.

위치에 대한 데이터를 얻는 작업이 있습니다.

루프에서 사용되는 열린 위치의 수를 가져오는 언어 함수가 있습니다.

루프에서 올바르게 사용하는 방법에 대한 질문이 있습니다. for 루프의 첫 번째 매개변수 또는 두 번째 매개변수에서 조건이 확인됩니다.

그들이 당신에게 원하는 것을 이해하지 못하는 것이 이상합니다)))

숫자가 일정하지 않기 때문에 비용이 많이 든다고 씁니다. 하지만 왜, 당신은 설명할 수 없습니다.

왜 비싼지 설명해주실 수 있나요?

저는 개인적으로 이 기능이 매 틱마다 열린 위치를 다시 계산하지 않고 위치를 열고 닫을 때만 이 기능을 수행하도록 개발자들이 주의를 기울였다고 생각합니다.

개발자가 그것에 대해 생각하지 않았다고 생각합니까?

왜 함수는 비용이 많이 들고 재계산을 수행하며 터미널의 RAM에서 값을 가져오지 않는다고 확신합니까?

지금까지 실질적인 답변 대신 공허한 수다를 읽었습니다.

 
Nikolay Mitrofanov :

그래서 문제가 해결되면 무엇에 대해 논쟁하는 것입니까?) LOL.

이것은 상황의 전체 유머입니다. 위치 계산 방법에 대한 심포지엄의 네 번째 페이지에 있는 두 번째 날입니다. 매우 흥미로운.

 
Dmitry Fedoseev :

빛이 PositionTotal()에 수렴하지 않으면 표시를 완전히 놓친 것입니다. 따라서 루프를 반복할 때마다 ArraySize() 함수를 호출할 수 있으며 이로부터 속도는 변하지 않습니다.

당신의 실험은 부재 때문에 나에게 적합하지 않습니다.

나머지 모든 환상은 환상이기 때문에 흥미롭지 않습니다.

ArraySize(), 배열이 동적이 아니고 클래스 유형이 아닌 경우 배열 자체를 선언할 때 이미 상수입니다. 그러나 ArraySize (배열)와 sizeof(배열)는 두 가지 큰 차이점이기 때문에 아무 의미가 없습니다. 첫 번째 것은 호출되지만 당신은 그것을 볼 수 없습니다, 두 번째 것은 컴파일 타임에 계산됩니다.

 int arr[ 5 ];

PrintFormat (" sizeof (array): %d, num_elem = %d\n", sizeof (arr), sizeof (arr) / sizeof ( int ));
PrintFormat (" ArraySize (): %d\n", ArraySize (arr));
ArrayResize (arr, 7 );
PrintFormat (" ArraySize (): %d\n", ArraySize (arr));
PrintFormat (" sizeof (array): %d, num_elem = %d\n", sizeof (arr), sizeof (arr) / sizeof ( int ));
ArrayResize (arr, 3 );
PrintFormat (" ArraySize (): %d\n", ArraySize (arr));
PrintFormat (" sizeof (array): %d, num_elem = %d\n", sizeof (arr), sizeof (arr) / sizeof ( int ));

2021.05 . 03 22 : 01 : 37.253 show_the_shitz EURJPY,H4: initialized
2021.05 . 03 22 : 01 : 37.253 show_the_shitz EURJPY,H4: sizeof (array): 20 , num_elem = 5
2021.05 . 03 22 : 01 : 37.253 show_the_shitz EURJPY,H4: ArraySize (): 3
2021.05 . 03 22 : 01 : 37.253 show_the_shitz EURJPY,H4: sizeof (array): 20 , num_elem = 5
2021.05 . 03 22 : 01 : 37.253 show_the_shitz EURJPY,H4: ArraySize (): 7
2021.05 . 03 22 : 01 : 37.252 show_the_shitz EURJPY,H4: ArraySize (): 5
2021.05 . 03 22 : 01 : 37.252 show_the_shitz EURJPY,H4: sizeof (array): 20 , num_elem = 5

따라서 다른 곳에서 대안적인 관점을 말하십시오.

------------------

그리고 나는 무엇을 십자가에 못 박고 있습니까? 그 사람은 보고 생각하기를 원하지 않습니다. 글쎄요. 작업이 달의 위상, 화성 중부 자오선을 따른 시간 및 왼쪽 뒷꿈치의 가려움에 따라 달라지는 코드를 생성하게 하십시오. 많은 사람들, 특히 초보자들이 주저하지 않고 자신의 프로젝트에 복사하여 붙여넣고 무엇이 잘못되었는지 의아해하는 것은 부끄러운 일입니다.

 
Tio Nisla :

ArraySize(), 배열이 동적이 아니고 클래스 유형이 아닌 경우 배열 자체를 선언할 때 이미 상수입니다. 그러나 ArraySize (배열)와 sizeof(배열)는 두 가지 큰 차이점이기 때문에 아무 의미가 없습니다. 첫 번째 것은 호출되지만 당신은 그것을 볼 수 없습니다, 두 번째 것은 컴파일 타임에 계산됩니다.

따라서 다른 곳에서 대안적인 관점을 말하십시오.

------------------

그리고 나는 무엇을 십자가에 못 박고 있습니까? 그 사람은 보고 생각하기를 원하지 않습니다. 글쎄요. 작업이 달의 위상, 화성 중부 자오선을 따른 시간 및 왼쪽 뒷꿈치의 가려움에 따라 달라지는 코드를 생성하게 하십시오. 많은 사람들, 특히 초보자들이 주저하지 않고 자신의 프로젝트에 복사하여 붙여넣고 무엇이 잘못되었는지 의아해하는 것은 부끄러운 일입니다.

살인적인 논쟁! 단어가 없습니다... ArraySize()를 동적이 아닌 배열에 적용하는 이유는 무엇입니까? 어떻게 이런 일이 가능했는지 상상조차 할 수 없습니다. 여기서 sizeof()는 어떻습니까? 괜찮으세요?

그리고 이것은 내 관점이 아니라 포럼 참가자들에 의해 오랫동안 확인되었습니다. 이 스레드를 찾지 않을 것입니다.

그러나 이것은 캐싱과 전혀 관련이 없다고 말할 수 있습니다.

 
Nikolay Mitrofanov :

그리고 나에게는 너무 좋은 사람이 그것을 알아 내려고 더 깊이 파고 든다..

그런 다음 인코더는 작은 것에 주의를 기울이지 않고 무작위로 코드를 작성하는 습관을 들이게 됩니다. 그런 다음 코드를 결합한다는 것은 이중 작업을 수행하는 것을 의미하며, 종종 작성자뿐만 아니라 코드로 작업할 만큼 운이 좋은 사람들을 위한 것입니다.

글을 제대로 쓰는 방법을 알 수 있고, 세세한 부분을 이해하면서 바로 잘 쓸 수 있다면, 왜 무작위로 글을 쓰는가?)

당신의 조언 .. 글쎄, 이것은 .. IMHO


당신의 조언은 머리를 빗을 수 있는 경험 많은 프로그래머(자신감이 강한)에게 좋은 것입니다.

페도세프가 맞습니다. 그것은 전혀 필요하지 않으며 우리가 원하는대로 코드를 즉시 빗질하지 않을 것입니다. 그리고 시간이 지남에 따라 한 번 수행한 것이 조금 다르게 작성하는 것이 더 낫다는 것을 이해하게 됩니다. 그리고 각각의 새로운 코드는 처음부터 빗질될 것입니다.

 

포럼의 흥미로운 현실. 누군가가 무언가를 요청할 때 아무도 코드를 작성하지 않습니다. 그리고 작성하자마자 그들은 즉시 와서 줄을 서서 덜덜 떨기 시작합니다. 오, 오, 오, 정말 잘못된 코드입니다. 흥미롭게도 이것은 일반적으로 3페니만큼 간단한 코드에 적용됩니다. 모든 간격이 면밀히 조사됩니다. 그리고 더 복잡하고 침묵하며 탱크처럼 귀머거리가 됩니다.