스프레드 시트 "프로그래밍"은 일종의 데이터 흐름 프로그래밍입니다.
우리는 언어 문제가 있는데, 우리가 프로그래밍이라고 부르는 것보다 훨씬 적기 때문에 "프로그래밍"이라고 부르지 말아야합니다.
데이터 흐름 프로그래밍은 아키텍처 및 원칙으로서, 응용 프로그램이 독립 모듈의 네트워크 인 경우 서로 메시지 (데이터)를 보냅니다. 이 모델은 모든 문제에 적용 할 수있는 것은 아니며 처리 네트워크를 통해 소스 데이터 또는 스트림이 있거나 출력 데이터 / 스트림을 생성하는 소스 데이터 또는 스트림이있는 경우에만 해당됩니다. 아래 목록을 참조하십시오.
데이터 흐름 프로그래밍에는 몇 가지 유형이 있습니다.
- 스프레드 시트 : 입력 번호는 수식으로 처리 된 다음 결과 번호와 그래프로 처리됩니다. 특수 특성 : 실행 시간은 "원샷"이며, 입력 값 (구성 요소)이 변경되면 처리 그래프의 해당 부분이 다시 실행되어 출력을 생성합니다.
- 유닉스 파이프 : 쉘은 여러 프로그램을 시작하고 stdout-> stdin을 링크합니다. 특수 특성 : 파이프 스타일 연결 만 허용되며 그래프는 단일 대기열입니다.
- 동기화 된 실행 : 지정된 주파수에서 프레임 또는 샘플의 처리를 트리거하는 클럭이 있습니다. 모든 구성 요소는 클럭주기마다 한 번씩 실행됩니다. 예를 들어 비디오 및 오디오 처리 시스템은 지정된 프레임 / 샘플 속도로 작동합니다.
- 비동기 실행 : 외부 이벤트가 발생할 때까지 그래프가 유휴 상태입니다. 그런 다음 이벤트를 처리하고 출력을 생성하거나 유휴 상태로 전환합니다.
귀하의 질문으로 돌아 가기 : 데이터 흐름 응용 프로그램을 독립형 응용 프로그램으로 게시하는 것이 좋습니다. 나는 이미 그것을 만들었다. 두번 .
저와 제 친구는 홈 오토메이션을위한 프로토 타입 DF 시스템을 만들었습니다. 우리는 그래프 편집기가 없으므로 사용자가 응용 프로그램을 편집 할 수 없으며 일부 매개 변수는 구성 파일에 저장되지만 다른 것은 없습니다. DF 스크립트 언어는 C ++ 코드 (컴포넌트 생성 및 메시지 정의 목록)로 "컴파일되어"네이티브 실행 파일로 컴파일됩니다. 모듈은 C ++ 클래스 (다른 클래스, 우리 시스템에 대한 정보를 얻기 위해 Message, Dispathcer, Component (abstract), Port (abstract), ConsumerPort, ProducerPort)입니다.
또한 DF 시스템이 제공하는 이점에 놀랐 습니다. 2 분 이내에 직렬 스니퍼 앱을 만들거나 현장 에서 테스트 프로그램 을 만들었습니다. 램프가 하나씩 깜박입니다 (문서가 없습니다) 하드웨어 ID). 우리는 재미를 위해 MIDI와 조이패드 구성 요소를 만들었으며, 또한 가벼운 오르간을 만들었습니다 ( http://homeaut.com/under_construction/ 참조 ).
스프레드 시트의 경우 하나의 어려움 만 볼 수 있습니다. 모든 숫자와 수식 (잠재적으로 모든 셀)이 구성 요소이므로 그래프가 최종적이 아닙니다. 간단한 sum () 앱에 선을 추가하면 데이터 흐름 그래프가 변경되었음을 의미합니다. 따라서 그래프를 런타임에 "재 프로그래밍"하거나 "메타 프로그래밍"이라고합니다. Excel에서는 매크로가 작동하지만 데이터 흐름의 순도를 잃습니다.
나쁘지 않지만 완벽하지 않은 솔루션이 있습니다. PHP 백엔드가있는 AJAX 앱인 스프레드 시트를 만들었습니다. 세로 축은 시간 (일)이며 선은 구성 요소입니다. 입력 (사용자가 라인을 편집 할 수 있음), 수직 평균, 수평 평균 / 합 및 일부 도메인 별 통계 계산과 같은 구성 요소가 있습니다. 여기에는 단 하나의 문제가 있습니다 : 이것은 "일차원"입니다. 합계와 평균 및 그 밖의 것을 원하는 한 새로운 줄을 추가하고 구성 요소를 만들어서 물건을 계산할 수 있습니다. 그러나 열은 항상 일입니다 (매주 및 월 "보기"를 만들었습니다.이 데이터는 일별 데이터를 합계 / 평균으로 표시하지만 여전히 1 차원입니다). 나는 그것을 보여줄 수 없으며, 공동 작업이며 7/24를 실행하기 위해 PHP 백엔드 작업이 필요하며 호스트 공급자가 지원하지 않습니다.
따라서 내 모델 ( "수평 일"로 가장 잘 설명 될 수 있음)은 다른 종류의 문제를 처리 할 수 없습니다.
이 문제를 해결하는 방법을 알고 있습니다 : tabs .
Excel에 갇혀 다른 테이블을 만들어야하는 경우 동일한 탭에서 다른 영역을 사용하거나 다른 탭을 열 수 있습니다. 또한 탭 간의 참조는 불편하므로 첫 번째 방법을 선호합니다. 탭이 겹치지 않는 창과 같은 화면에 표시되어야한다고 생각합니다.
모든 테이블에는 수직, 수평 또는 고정 축이 증가해야합니다. 수직 성장 테이블에는 모든 열에 "동일한"수식이 있고 수평 구성 요소에 열 구성 요소가 있고 고정 크기 테이블은 스프레드 시트와 같은 선 구성 요소가 있습니다.
따라서 사용자가 새 줄 / 열을 추가 할 때 새 줄 / 열은 동일한 수식을 갖습니다.
또한 스프레드 시트에서 1000 줄이 있으면 매우 동일한 수식을 1000 번 복사해야한다는 것을 싫어합니다. 그것은 버그의 원천 (일부 라인에서 이전 버전의 수식 유지), 메모리 낭비 (동일한 수식 1000x 저장).
어쩌면 내가 틀렸고이 모델에 개념 버그가 있지만 그것이 좋은 생각을 불러 일으켰기를 바랍니다.