저는 아무것도 이해하지 못했지만 기사가 마음에 들었습니다.
"그렇기 때문에 템플릿으로 해결되는 주요 작업은 여전히 프로그래머가 키보드로 입력하는 코드의 양을 줄이는 것입니다."
복사-붙여넣기 없이도 할 수 있는데 왜 템플릿을 사용해야 할까요? 그리고 입력되는 코드의 양이 100줄이 아니라 300줄이 되니 전혀 문제가 되지 않을 텐데, 뭐가 문제일까요? 가장 중요한 것은 그것이 작동하고 디버깅이 과도하게 스트레스를주지 않는다는 것입니다.
그리고 템플릿 없이도 코드가 더 투명해집니다.
저는 아무것도 이해하지 못했지만 기사가 마음에 들었습니다.
"그렇기 때문에 템플릿으로 해결되는 주요 작업은 여전히 프로그래머가 키보드로 입력하는 코드의 양을 줄이는 것입니다."
복사-붙여넣기 없이도 할 수 있는데 왜 템플릿을 사용해야 할까요? 그리고 입력되는 코드의 양이 100줄이 아니라 300줄이 되니 전혀 문제가 되지 않을 텐데, 뭐가 문제일까요? 가장 중요한 것은 그것이 작동하고 디버깅이 과도하게 스트레스를받지 않는다는 것입니다.
그리고 템플릿 없이도 코드가 더 투명해질 것입니다.
300 :)
10~20만 개는 어때요(모듈로 분할하는 것을 고려한 것입니다)...? ?
300 :)
그리고 10-20만 달러는 어때요(모듈로 분류한 것을 고려한 것입니다).... ?
20,000개인가요? 맙소사, 어떻게 거기까지 파헤친 거야? 알고리즘이 아직 완성되지 않았나요? 이런 크기는 진작에 라이브러리에 넣었어야죠. 뭘 프로그래밍하는 거죠? 20,000줄이면 프로그래머 10명이 6개월 동안 작업할 수 있는 양이죠.
라이브러리에 관해서는 모듈성을 고려한다고 말씀드렸습니다.
20K는 더 많은 것을 보았습니다. 예를 들어 1C 7.7용 modzli는 5만 줄입니다(자체 코드가 아니라 다른 사람의 코드입니다).
작업의 본질을 이해하지 못한다면 용서해 주세요. C++에서는 소스 코드 레코드 저장이 있지만 여기서는 그렇지 않습니다. C++의 함수 템플릿은 실제로 비용을 절약할 수 있는 부분을 보여줍니다. "소스 코드 저장"이 핵심 아이디어입니다.
그리고 명백하게 과도한 양의 소스 코드를 생성하여 나중에 작업하기 어렵게 만드는 것은 안 됩니다.
다른 데이터 유형에 대해 동일한 함수가 필요하신가요? MQL5에는 메서드 오버로드가 있습니다. 여러분도 알고 계시리라 믿어 의심치 않습니다. 특히 입력 데이터 유형을 변경하려면 구현을 변경해야 하는 경우가 많기 때문입니다.
그리고 이것에 대해:
>>물론 디버깅을 위해서는 파일을 호출된 파일의 디렉토리 또는 Include 디렉토리로 이동해야 합니다. 이것이 바로 제가 위에서 의사 템플릿의 단점을 언급할 때 이야기했던 디버깅의 불편함입니다.
수동으로 아무것도 옮길 필요가 없습니다.
#property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| 전문가 초기화 기능| //+------------------------------------------------------------------+ void gena() { string filename="code.mqh"; int handle=FileOpen(filename,FILE_WRITE|FILE_UNICODE); //-- 임의 코드 생성 string st=TimeToString(TimeLocal(),TIME_DATE|TIME_MINUTES|TIME_SECONDS); string code="메시지 상자(\"Hello World! 지금: "+st+"\");\r\n"; //------------------------------ FileWriteString(handle,code); FileClose(handle); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() { //--- gena(); #include "../Files/code.mqh"; //생성된 코드 포함 //--- return(0); }
예제는 원시적입니다. 인클루드는 함수 안에 삽입할 수 있습니다. 그리고 포함된 파일의 모든 코드는 삽입 위치의 가시성 범위 내에서 작동합니다. 유일한 것은 컴파일러가 욕하는 것을 방지하기 위해 파일에 빈 code.mqh 파일을 만들어야 한다는 것입니다. 처음 실행할 때 코드가 생성되고 두 번째 실행 시에는 생성된 코드가 포함됩니다.
질문이 평가에 관한 것이 아니라 구문 분석에 관한 질문이라는 것을 이해합니다. 구문 분석은 매우 다재다능합니다.
다양한 규칙을 작성할 수 있습니다. 그것은 모두 당신이 얻고자하는 것에 달려 있습니다.
예를 들어, 이러한 예제에서 파서는 어떻게 작동해야 하나요?
"double a=1.5;" "double a =1.5;" "double a = 1.5;" "double a=1.5,b=2.5;" "double a =1.5,b =2.5;" "double a = 1.5,b = 2.5;" "double a = 1.5 , b = 2.5 ;"알다시피. 간단한 예제에서 문자열 함수 섹션의 기능을 공부하는 것만 추천할 수 있습니다. 메모리에서 함수를 작동 할 수 있다면 기능의 가능성에 따라 개발을 계획 할 수 있습니다. 할 수 있는 것과 할 수 없는 것에 대해 생각하지 않아도 됩니다. 기능의 가능성을 알면 작업을 해결하는 데 가장 적합한 알고리즘이 무엇인지 명확하게 알 수 있습니다.
그래서 질문이 평가에 관한 것이 아니라 구문 분석에 관한 질문이라는 것을 이해합니다. 구문 분석은 매우 다재다능합니다.
다른 규칙을 가질 수 있습니다. 그것은 모두 당신이 얻고 자하는 것에 달려 있습니다.
예를 들어 이러한 예제에서 파서가 어떻게 작동해야 하는지.
아시다시피. 간단한 예제에서 문자열 함수 섹션의 기능을 공부하는 것만 권장 할 수 있습니다. 메모리에서 함수를 작동 할 수 있다면 기능의 가능성에 따라 개발을 계획 할 수 있습니다. 할 수 있는 것과 할 수 없는 것에 대해 생각하지 않아도 됩니다. 기능의 기능을 알면 작업을 해결하는 데 가장 적합한 알고리즘이 무엇인지 명확하게 알 수 있습니다.
- www.mql5.com
새로운 기고글 C++ 템플릿의 대안으로 가짜 템플릿 사용 가 게재되었습니다:
이 글은 템플릿을 사용하지 않고 ihernet 프로그래밍 스타일을 유지하는 프로그래밍 방법을 설명합니다. 사용자 지정 방법을 사용하여 템플릿을 구현하는 방법에 대해 설명하고 지정된 템플릿을 기반으로 코드를 생성하기 위해 미리 만들어진 스크립트가 첨부되어 있습니다.
먼저 모든 필수 매개변수를 지정하는 스크립트를 시작하겠습니다. 표시되는 창에서 "예제 템플릿" 파일 이름을 지정합니다.
';' 분리 기호를 사용하여 사용자 정의 데이터 유형의 필드를 채우십시오.
"확인" 버튼을 누르자마자 템플릿 디렉토리가 생성됩니다. 사전 템플릿 파일 "Example templat.mqh"가 포함되어 있습니다.
이 이벤트는 다음 메시지와 함께 저널에 표시됩니다.
작성자: Nikolay Demko