매크로 프로그래밍

Macroprogramming

매크로 프로그래밍()은 컴퓨터 과학에서 에이전트 또는 컴퓨팅 [1]장치의 전체 시스템의 거시적이고 전역적인 행동을 표현하는 것을 목표로 하는 프로그래밍 패러다임입니다.매크로 프로그래밍에서 분산 시스템의 개별 구성 요소에 대한 로컬 프로그램은 일반적으로 시스템 수준의 관점 또는 의도된 글로벌 [1]목표의 관점에서 표현되는 매크로 프로그램에서 컴파일되거나 해석됩니다.매크로 프로그래밍 접근법의 목적은 컴퓨팅 장치 또는 에이전트의 전체 분산 시스템의 거시적 상호 작용을 단일 프로그램으로 표현하는 것을 지원하는 것입니다.프로그램 조각에 대한 대체 규칙을 표현하기 위해 프로그래밍 언어(C 또는 Scala 등)에서 종종 발견되는 메커니즘인 매크로와 혼동할 필요가 없습니다.

매크로 프로그래밍은 무선 센서 네트워크[2][3][4] 프로그래밍의 맥락에서 시작되었으며 사물 인터넷[5] 군집 [6][1]로봇 공학의 맥락에서 새로운 관심을 발견했습니다.

매크로 프로그래밍은 다중 계층 프로그래밍, 안무 프로그래밍집계 컴퓨팅과 유사한 목표(글로벌 관점에서 시스템을 프로그래밍하는 것과 관련됨)를 공유합니다.

맥락과 동기

분산 시스템, 다중 에이전트 시스템 및 소프트웨어 에이전트 집합(: 로봇 집단)을 프로그래밍하는 것은 통신, 동시성 및 장애와 같은 많은 문제를 적절하게 고려해야 하기 때문에 어렵습니다.특히, 일반적인 반복 문제는 관련된 개별 구성 요소 또는 에이전트의 행동을 정의하여 의도된 전역 행동을 유도하는 방법입니다. 문제는 다중 에이전트 강화 학습과 같은 학습 접근 방식을 통해 해결하거나 각 구성 요소를 구동하는 제어 프로그램을 수동으로 정의하여 해결할 수 있습니다.그러나 활동 및 상호 작용의 복잡한 네트워크(복잡한 시스템 및 출현)에서 발생하는 전반적인 행동을 일반적으로 예측하기 어렵기 때문에 완전한 개별(또는 (단일 노드) 관점으로 문제를 해결하는 것은 오류가 발생하기 쉽습니다.따라서 연구자들은 보다 글로벌한 관점에서 또는 집단적으로 달성해야 할 전반적인 목표 측면에서 분산 시스템의 프로그래밍을 촉진하면서 추상화 수준을 높이는 방법을 조사하기 시작했습니다.

스카파이

스카파이 집계 프로그래밍 언어 [1]의 다음 프로그램은 채널을 계산하는 데 필요한 루프 제어 로직을 정의합니다.true즉, 홉 바이 홉 경로를 통해 소스 장치를 인접 장치와 상호 작용하는 대규모 장치 집합에 걸쳐 대상 장치에 연결하는 것입니다.

학급 자급식 채널 확장된 집계 프로그램 와 함께 센서 정의 {   디프 is 장애물 = 감각[부울]("스캐너덜너덜)   디프 isSource = 감각[부울]("소스")   디프 is Destination = 감각[부울]("대상")      오버라이드 디프 주된(): 부울 =    분점(is 장애물){ 거짓의 }{ 채널.(isSource, is Destination, 5) }    디프 채널.(src: 부울, 증류: 부울, : 더블): 부울 =     팽창하는(거리로.(src) + 거리로.(증류) <= 사이의 거리(src,증류), )    유형 OB[T] = 빌트인.경계가 있는[T]   디프 G[V:OB](src: 부울, 들판: V, 어카운트: V=>V, 미터법의: =>더블): V =     대리인( (더블.최대값, 들판) ){ dv =>       뮤크(src) { (0.0, 들판) } {         minHoodPlus {            (d, v) = nbr { (dv._1, dv._2) }           (d + 미터법의, 어카운트(v))         } } }._2    디프 거리로.(원천: 부울): 더블 =     G[더블](원천, 0, _ + nbr 범위(), nbr 범위())    디프 방송을[V:OB](원천: 부울, 들판: V): V =     G[V](원천, 들판, x=>x, nbr 범위())    디프 사이의 거리(원천: 부울, 표적의: 부울): 더블 =     방송을(원천, 경사의(표적의))    디프 팽창하는(지역: 부울, : 더블): 부울 =     경사의(지역) <  } 

흥미로운 점은 다음과 같습니다.channel기능 및 이를 구현하는 데 사용되는 기능, 즉distanceTo,distanceBetween,dilate,broadcast등은 단순히 기기의 개별적인 동작 측면에서뿐만 아니라 거시적인 관점에서 해석될 수 있습니다.사실, 예를 들면,distanceTo(s)가장 가까운 장치로부터 최소 거리의 필드를 계산하는 데 사용됩니다.s수확량true이는 처리 및 이웃과의 통신을 통해 자체 조직화된 방식으로 유지되는 효과적인 분산 데이터 구조입니다.의미론적으로 이러한 함수는 매크로 수준(또는 집합적) 데이터 구조를 생성하는 매크로 수준(또는 집합적) 동작을 정의합니다.이러한 매크로 수준의 함수/동작은 함께 구성되어 보다 복잡한 또 다른 매크로 수준의 함수/동작을 얻을 수 있습니다.

연대

연대 언어로 된 다음 프로그램을 사용하여 전체 시스템이 인식하는 평균 온도를 계산할 수 있습니다.

함수 정의 도섬 :: 흘러가다 (흘러가다, 인트) -> (흘러가다, 인트); 도섬(온도, (, 세어보세요)) { (+온도, 세어보세요+1) }  기능 반응형 프로그램 로직 온도 영역 = rmap(재밌어요(노드){ 감각("온도", 노드) }, 세계); 신호합 = 접이식의(도섬, (0.0, 0), 온도 영역) 평균 신호 = 스매핑(재밌어요((,세어보세요)){  / 세어보세요 }, 신호합)  기초 <- 평균 신호 이러한 정보를 기지국으로 이동합니다. 

표티

여러 센서에서 계산한 평균 온도가 특정 임계값을 초과할 경우, 표T의 다음 프로그램을 사용하여 팬을 켤 수 있습니다.

온도 = 자원.물건들.여과기(제목="스캐너덜너덜) 결과. = [임시의.얻다() 위해서 임시의  온도] 평균의 = (결과.) / (결과.) TEMP_THRESHOLD = 24 한다면 평균의 > TEMP_THRESHOLD:     자원.물건들.얻다(제목="팬").놓다("온") 

타이니DB

TinyDB에서 [9]프로그래머가 단일 노드 작업 및 무선 센서 네트워크의 라우팅으로 전환되는 쿼리를 작성하는 데이터 지향 매크로 프로그래밍 접근 방식이 사용됩니다.

선택한다. nodeId , 온도 어디에 온도 > k 부터 센서 샘플 기간 5 회의록 

참고 항목

레퍼런스

  1. ^ a b c Casadei, Roberto (2023-01-11). "Macroprogramming: Concepts, State of the Art, and Opportunities of Macroscopic Behaviour Modelling". ACM Computing Surveys. Association for Computing Machinery (ACM). doi:10.1145/3579353. ISSN 0360-0300.
  2. ^ Newton, Ryan; Welsh, Matt (2004). Region streams. New York, New York, USA: ACM Press. doi:10.1145/1052199.1052213.
  3. ^ a b Newton, Ryan; Morrisett, Greg; Welsh, Matt (2007). The regiment macroprogramming system. New York, New York, USA: ACM Press. doi:10.1145/1236360.1236422.
  4. ^ Gummadi, Ramakrishna; Gnawali, Omprakash; Govindan, Ramesh (2005). "Macro-programming Wireless Sensor Networks Using Kairos". Distributed Computing in Sensor Systems. Berlin, Heidelberg: Springer Berlin Heidelberg. pp. 126–140. doi:10.1007/11502593_12. ISBN 978-3-540-26422-4. ISSN 0302-9743.
  5. ^ Júnior, Iwens G. S.; Santana, Thalia S. de; Bulcão-Neto, Renato de F.; Porter, Barry F. (2022-11-18). "The state of the art of macroprogramming in IoT: An update". Journal of Internet Services and Applications. Sociedade Brasileira de Computacao - SB. 13 (1): 54–65. doi:10.5753/jisa.2022.2372. ISSN 1869-0238.
  6. ^ Mottola, Luca; Picco, Gian Pietro (2011). "Programming wireless sensor networks". ACM Computing Surveys. Association for Computing Machinery (ACM). 43 (3): 1–51. doi:10.1145/1922649.1922656. ISSN 0360-0300.
  7. ^ Casadei, Roberto; Viroli, Mirko; Aguzzi, Gianluca; Pianini, Danilo (2022). "ScaFi: A Scala DSL and Toolkit for Aggregate Programming". SoftwareX. Elsevier BV. 20: 101248. doi:10.1016/j.softx.2022.101248. ISSN 2352-7110.
  8. ^ Azzara, Andrea; Alessandrelli, Daniele; Bocchino, Stefano; Petracca, Matteo; Pagano, Paolo (2014). PyoT, a macroprogramming framework for the Internet of Things. IEEE. doi:10.1109/sies.2014.6871193.
  9. ^ Madden, Samuel R.; Franklin, Michael J.; Hellerstein, Joseph M.; Hong, Wei (2005). "TinyDB: an acquisitional query processing system for sensor networks". ACM Transactions on Database Systems. Association for Computing Machinery (ACM). 30 (1): 122–173. doi:10.1145/1061318.1061322. ISSN 0362-5915.