최근에 ecto 라는 프레임 워크를 찾았습니다 .
이 프레임 워크 에서 ecto Directed Acyclic Graph 인 "plasm " 이라는 기본 구성 요소 ecto에서는 ecto 스케줄러를 통해 플라스마를 작동 할 수 있습니다.
이 메커니즘의 이점이 무엇인지 궁금하고 다른 상황에서 DAG의 개념을 활용할 수 있습니까?
최근에 ecto 라는 프레임 워크를 찾았습니다 .
이 프레임 워크 에서 ecto Directed Acyclic Graph 인 "plasm " 이라는 기본 구성 요소 ecto에서는 ecto 스케줄러를 통해 플라스마를 작동 할 수 있습니다.
이 메커니즘의 이점이 무엇인지 궁금하고 다른 상황에서 DAG의 개념을 활용할 수 있습니까?
답변:
좋은 질문.
편집하다 :
좋은 자료 :
답은 프로그래밍과 관련이 거의 없다는 것입니다. 문제 해결과 관련이 있습니다.
연결된 목록이 특정 클래스의 문제에 사용되는 데이터 구조 인 것처럼 그래프는 특정 관계를 나타내는 데 유용합니다. 연결된 목록, 트리, 그래프 및 기타 추상 구조는 코드로 구현할 수 있다는 점에서 프로그래밍과 연결되어 있습니다. 그것들은 더 높은 추상화 수준으로 존재합니다. 프로그래밍이 아니라 문제 해결에 데이터 구조를 적용하는 것입니다.
그래도 프로그래밍과의 관계를 원한다면 다음 사항을 고려하십시오.
다른 사람들은 DAG를 데이터에 적용했지만 적어도 코드에 적용 가능하다고 생각합니다. Mahbubur R Aaman은 이것을 언급하므로 실제로 이것은 완전한 답변보다 그의 답변에 대한 부록입니다.
무한 루프가없는 명령형 컴퓨터 프로그램 (@AndresF 덕분에)은 DAG (Directed Acyclic Graph)입니다. 코드의 가능한 실행 경로가 지시되고 (먼저, 그 다음에), 비순환 (무한 루프를 형성하지 않음)을 의미합니다. 중요한 코드를 통과하는 경로가 목록이나 트리만큼 단순하지 않기 때문에 그래프입니다.
XSLT에서 4 년 정도 일했습니다. 왜 이것이 범용 프로그래밍 언어가 아닌지 설명하려고 끔찍한 시간을 보냈지 만 DAG가 그 이유입니다. 특히 XSLT는 데이터 중심 언어입니다. 함수를 프로그래밍 (함수 프로그래밍 방식으로) 정의하지만 코드에서 이러한 함수를 호출 할 필요는 없습니다. 오히려 XSLT는 입력 XML 문서의 노드를 선택하고 반복하는 조합을 설정합니다. 이를 통해 입력 데이터의 구조에 따라 호출되는 함수와 순서가 결정됩니다.
이것은 오전 2시 30 분에 테스트하지 않은 데이터 조건이 발생하여 깨우고 수정해야 할 때까지 매우 흥미롭고 시원했습니다. 데이터가 DAG를 정의하게하면 DAG의 정의는 가능한 모든 입력 조건이됩니다. 사소한 비즈니스 응용 프로그램의 경우 계산할 수없는 수준입니다. 그들은 상상할 수 없다.
처음에는 함수형 프로그래밍이 DAG가 아닐 수도 있다고 생각했습니다. 실행 순서가 때로는 명확하지 않거나 프로그래머가 생각하기 때문입니다. 그러나 기능적 프로그램은 종속성을 정의합니다. 실제로 함수형 프로그래밍의 선언적 특성은 실행 순서를 지정하지 않고 종속성 (a ^ 2 = b ^ 2 + c ^ 2) 만 정의하는 것으로 생각할 수 있습니다 ( 'b'또는 'c'가 먼저 제곱인지 여부는 중요하지 않습니다) 을 더하기 전에 모두 제곱 된 한).
그러나 기능적 프로그래밍은 세부적인 수준에서 작업 순서에 대해 의도적으로 모호 할 수 있지만 종속성에 대해서는 절묘하게 명확합니다. 이것들은 동시성에 매우 적합한 기능입니다. 어쨌든 여전히 코드를 통한 경로 그래프가 있으며 그 그래프는 여전히 지시됩니다 (종속성은 종속 작업 전에 평가해야 함). 따라서 DAG도 적용됩니다.
좋은 질문입니다-게시 해 주셔서 감사합니다!
while (true) { print("hi"); }
입니까? 종료하지 않는 프로그램을 제외하고 싶습니까?
현재 DAG는 프로그래밍에서 과소 평가되었습니다. 역사적으로 나무와 계층 구조로 개발과 관련된 많은 것들이 만들어졌습니다. 상자 안에서 무언가를 옮기는 것이 뇌가 복잡한 것을보다 쉽게 관리 할 수있게하기 때문입니다. 그러나 이벤트와 이벤트가 다른 이벤트 및 상태에 의존하는 방식을 살펴보면 우리 삶과 프로그램의 어떤 것이 과거의 것이 아니라 미래의 것에 의존 할 수 있기 때문에 DAG를 얻게 될 것입니다. DAG 개념에 적용 할 수있는 관계. 개발에서 명시 적으로 사용되지는 않지만이를 염두에두면 더 잘 이해하는 데 도움이됩니다.
Ecto에서 Plasm의 장점이 무엇인지 궁금합니다.
DAG는 특정 작업이 다른 작업보다 먼저 수행되어야한다는 제약 조건으로 작업 모음을 순서대로 모델링하는 데 사용할 수 있습니다. Ecto 는 처리 프레임 워크이며 DAG를 사용하여 처리 그래프를 모델링하여 그래프가 동기식 실행 순서를 갖도록합니다. 원형질 의 체외은 DAG에 있으며 스케줄러는 그것을 작동합니다.
다른 상황에서 DAG의 개념을 활용할 수 있습니까?
make
DAG를 사용 하여 빌드에 대한 종속성을 찾는 것과 같은 시스템을 빌드하기위한 참조를 보지 않은 다른 답변을 추가하십시오 .
자세한 내용은 여기
make