드래그 앤 드롭 프로그래밍-날 것입니까? [닫은]


12

내가 아는 모든 프로그래밍 언어는 작성됩니다. 그러나 전체 프로그램을 드래그 앤 드롭 할 수있는 프로그래밍 언어가 있는지 궁금합니다. 루프를 얻으려면 여기에서이 상자를 선택하고 "code"의 해당 섹션으로 드래그하십시오. 그리고 이와 같은 것이 없다면 발명 된 것이라면 날 것입니까?

개인적으로 나는 그것이 좋은 아이디어라고 생각하지 않지만, 당신의 생각을 듣고 싶습니다.


절대로 말하지 마십시오 (당신은 "나는 그것이 좋은 아이디어라고 생각하지 않습니다"라고 말하지 마십시오)-가장 이상한 아이디어가 잘 수행 될 수있는 이상한 상황이있을 수 있습니다.
ern0

6
"비행할까요?" 솔직히, 내가 가고있는 비행기의 비행 제어 시스템이 Drag-n-drop 프로그래밍을하는 누군가에 의해 프로그래밍되었다고 생각한다면, 나는 그 비행기에 타지 않을 수도 있습니다. ; D
glenatron

이 질문과 정말 같지만 일부 답변이 길고 깊기를 바랍니다.
Nicole

1
Ironman은 그것을 사용하고 날 것입니다! 그러나 그는 현실 세계에는 존재하지 않습니다!
Manoj R

@glenatron-기차로 여행하십시오. 비행 제어 시스템은 그래픽으로 빌드되는 한 부분 유한 상태 오토 마톤과 기본 블록으로 빌드되고 GUI 인터페이스로 조립되는 다른 부분 제어 엔지니어링 시스템을위한 것입니다. 나머지는 UML입니다.
mouviciel

답변:


23

많은 의상들이 드래그 앤 드롭 프로그래밍 시스템을 수행했습니다.

내쇼날 인스트루먼트 "Labview"는 아마도 가장 유명하고 최고 일 것입니다.

그들이 직면하는 근본적인 문제는 플라잉 코드 원숭이를 전문 프로그래머 및 엔지니어로 변환하는 알려진 방법이 없다는 것입니다. 하나의 예로서, O (N ^ 2) 또는 O (N ^ 3) 프로세스와 O (N log N) 프로세스간에 플라잉 코드 원숭이와의 차이는 없습니다. 즉, 통조림 루틴을 제공해야합니다. O (N log N) 알고리즘으로, 이들이 구축 할 퀵 그래픽 그래픽에 맞춤화 할 수 있습니다.

두 번째 문제점은 첫 번째 문제점에 필요한 특수 목적 블록을 제공 할 때 블록간에 데이터를 이동하여 부과되는 오버 헤드가 비싸기 시작한다는 것입니다. 나는 Rippen이라는 매우 멋진 시스템 중 하나와 함께 일했습니다. 필자가 프로파일을 수행 할 때 고성능! 필요한 성능 센서 처리 응용 프로그램에서 어디에 문제가 발생했는지 확인하기 위해 CPU 시간의 약 20 %가 데이터 이동으로 전환되는 것을보고 다소 혼란 스러웠습니다. (내가 LADAR 이미지 처리를 수행하면서 입력 이미지의 모든 픽셀에 대해 부동 소수점 처리를 공정하게 수행했기 때문에 CPU의 20 %가 많은 데이터 이동 오버 헤드였습니다.)

컴파일러 기반 시스템으로 이동하여 아마도 2 부를 얻을 수 있습니다. 사진에 피드를 제공하고 최적화 된 실행 프로그램으로 컴파일하지만 실제로 문제를 해결할지 확실하지 않으며 아플 수 있습니다. 도구의 대화 형 특성.


이론적으로 디버그 및 릴리스 (최적화) 모드를 가질 수 있습니다.
Job

15

간단한 대답은 '아니요'입니다.

프로그래밍과 관련하여 텍스트 입력은 시각적 정보보다 지정된 정보 측면에서 훨씬 뛰어납니다.


더 높은 수준으로 갈수록 문제를 그래픽으로 표현할 수있는 기회가 점점 더 많아지고 있습니다. 데이터 흐름 프로그래밍은 이와 같은 접근 방식입니다 (이 질문에 대한 내 대답 참조).
ern0

12

LabVIEW 는 매우 그래픽 적입니다.

로부터 의 LabVIEW 웹 사이트 :

LabVIEW


허, 깔끔해 보인다. 그것으로 얼마를 할 수 있습니까? 물리학처럼 한 종류의 "프로그래밍"에 특화되어 있습니까, 아니면 무엇이든 사용할 수 있습니까?
gablin

2
예, LabVIEW 전문가가 있습니다 : lavag.org . 토론 포럼 : forums.ni.com . 얼랭 비교 : bit.ly/2yC0Tn . 컴파일러 설명 : bit.ly/c6quPK . 일반 프로그래밍 예 : bit.ly/cSnt5D . LHC : bit.ly/9Yp4oo 에서 사용하십시오 . 이 곳은 ni.com/solutions 에서 사용되는 틈새 언어 입니다. 지옥처럼 비싸고, 추상화를 왼쪽과 오른쪽으로 누출하며, 설명 할 수없는 톤의 서비스를 설치하고, 엄청난 양의 절단으로 고통받습니다. 크로스 플랫폼이며 병렬화가 간단하며 다른 언어와 마찬가지로 쉽고 어렵습니다.
Joe Z

2
레고 로봇을 작동시킵니다. ni.com/academic/mindstorms
rwong

1
@Zeke : VI (LabVIEW 프로그램 또는 함수와 동일)가 여러 방향으로 스크롤해야하는 경우 올바르게 작성되지 않은 것입니다.
oosterwal

1
@oosterwal : 당신 말이 맞아요. 또한, 언어는 배우기 쉬운 것으로 과학자와 엔지니어에게 의도적으로 판매됩니다. 작은 프로그램에도 적용됩니다. 프로그램이 더 정교 해져야하므로 코드는 제어 할 수없는 수준으로 들어갑니다. (편집 : 언어로 인한 것이 아니라, 의도가 좋은 사용자들에 의한 것입니다. 전체 공개 : 저는 며칠 동안 과학자입니다 :)
Joe Z

6

야후! 파이프 는 아마도 여러분이 묘사하고있는 유형의 그래픽 언어의 완벽한 예일 것입니다. 시스템을 통해 정보 흐름을 생성하기 위해 기본 요소 (작업중인 데이터 소스에서 루프 및 조건부로의 모든 항목)를 끌어서 놓기합니다.

도메인에 따라 다르지만 대부분 요점입니다. 파이프는 데이터 중심이므로 표현이 아닌 시각화가 가장 중요합니다. 마찬가지로 Scratch 또는 Sprog 와 같은 자습서 환경 ! 학습 보조 도구로 작업중인 내용의 시각화를 강조하십시오. 데이터 입력 효율성은 해당 도메인의 우선 순위가 훨씬 낮습니다.


더 많은 아마추어 웹 앱 개발자가 파이프에 대해 알고 있다면 세상이 더 좋은 곳일 것입니다. +1
Sparr

3

때때로 누군가는 "우리가 알고있는대로 프로그래밍을 끝내고"그것을 사용하는 모든 사람을 프로그래머로 만드는 드래그 앤 드롭 프로그래밍 언어 또는 디자인 도구를 생각해냅니다.

그들 중 누구도 아직 실제로 작업을 수행하지 않고 우리 모두를 일에서 끝내지 못한 이유는 실제로 생성하는 드래그 앤 드롭 기능의 양과 사용자 친화적 인 방법에 관계없이 프로그래밍 이 간단하다는 것입니다. 어렵다.

프로그래밍의 실제 원칙은 문제 해결 방법을 알고 프로세스를 모델링하고 사용 가능한 데이터를 구성하는 방법을 이해하는 것입니다. 컴퓨터로 가능한 일을 이해하는 것조차도.

논란의 여지가있는 일부 사람들이 이런 식으로 생각하도록 가르쳐 줄 수 없다는 증거가 있습니다 . 우선, 이런 식으로 생각할 수 없다면 주위에 많은 프로그래머가 있으므로 아이디어를 구현하고 돈을 지불 할 가치가 있다고 생각되면 아이디어를 구현하기 위해 항상 누군가를 고용 할 수 있습니다. 프로그래밍 로직으로 충분히 작업 할 수 있다면 비교적 간단한 드래그 앤 드롭 환경을 어지럽히 지 않고 실제 언어를 배울 수도 있습니다.

나는 일반적인 프로그래밍을 생각하고 있습니다. 끌어서 놓기가 IT 전문가가 아닌 해당 도메인 내 전문가 인 매우 유용한 프로세스 사용자 일 수있는보다 제한된 DSL 유형 시나리오에서도 마찬가지입니다.


프로그래밍은 복잡하고 어렵고 긴 프로세스이므로 많은 엔지니어의 작업이 필요합니다. 그렇기 때문에 업계에서 프로그래머가 아닌 사용자도 앱 개발을 이용할 수 있도록 노력하고 있습니다. 개발 비용 절감, 인적 자원 사용 최적화. 또한 프로그래머는 프로그래머가 아닌 사람이 수행해야 할 작업이 많지만 해당 작업을위한 도구가 없으므로 프로그래머가 수행해야하는 작업이 많지 않다고 말할 수 있습니다. 그런 종류의 작업 2. 비싸다 3. 그런 일을하는 가장 좋은 사람은 아니다. 따라서 시각적 프로그래밍과 같은 방식으로 지적하는 아이디어를 따뜻하게 환영합니다.
ern0

1
업계에서 왜 노력하고 있는지 알고 있습니다. 그러나 내 요점은 프로그래밍 할 수 있다면 프로그래머 이고 프로그래밍 할 수없는 사람들은 코드를 작성해야했던 것과 동일한 작업을 수행하는 시각적 도구가 있기 때문에 더 잘 할 수 없다는 것입니다 에 대한. 도구는 문제가 아닙니다. 도구와 관련이있는 것은 문제입니다.
glenatron

프로그래밍이 더 자유 롭다는 것을 의미합니다. 또한 waching 기계에 5 분 동안 세척을 실행하고 10 분 동안 건조하도록 프로그래밍 할 때 프로그래밍 중입니다. 다른 프로그래밍 "계층"에 대해 다른 이름을 지정해야합니다. 데이터 흐름 프로그래밍 프로그래밍입니까? 매크로없이 스프레드 시트를 작성합니까? 예, 그들은 소위 프로그래머와는 다른 종류입니다. 어쨌든, 프로그래머가하는 일에 날카로운 차이점이 있습니다. 즉 플러그인 VS 어셈블리 코딩을 사용하는 SuperIDE12 ++의 드래그 앤 드롭 모듈입니다. 또한 플랫폼에 GC가 있다면 큰 차이가 있습니다. 또는 : 스크립트 VS 컴파일러. "프로그래밍"은 너무 일반적인 용어입니다.
ern0

3

내가 본 최고의 드래그 앤 드롭 프로그래밍 시스템은 Lego Mindstorms NXT 로봇입니다.

이를 통해 매우 복잡한 기능을 제어하면서 매우 놀라운 작업을 수행 할 수 있습니다.

그러나 어떤 시점에서는 고장이 나므로 다른 시스템으로 되돌려 야합니다.
이 기사를 참조하십시오 : http://www.wired.com/geekdad/2007/11/the-best-progra/

그러나 이것이 개선되고 다른 시나리오가 필요한 경우 이에 대한 필요성이 점점 줄어들 것입니다.


마인드 스톰 (Lego Dacta에서 진화 한 로고, 리스프와 유사한 언어)은 15 년 전에 학교에서 공부했습니다. 프로그래머가 자녀를 가질 수있는 훌륭한 선물입니다.
Orbling

1
NXT는 실제로 LabVIEW입니다. 글쎄, LV는 조금 손질되었습니다 : ni.com/academic/mindstorms
Joe Z

난 그걸 몰랐어요, 고마워요! 나는 그것에 깊은 인상을 받았습니다.
Bravax

2

데이터 흐름 프로그래밍 (일명 흐름 기반 프로그래밍)은 일 종일 수 있습니다. 전체적으로 데이터 흐름 프로그래밍은 Turing-complete가 아닙니다.

데이터 흐름 프로그래밍은 장면에 구성 요소 인스턴스를 배치하고 포트를 연결하여 메시지 처리 네트워크를 형성 할 때 응용 프로그램을 만드는 방법입니다. 구성 요소는 라이브러리에서 선택할 수 있으며 소비자 (입력) 및 생산자 (출력) 포트가있어 다른 구성 요소의 포트와 연결할 수 있습니다.

마우스로 신디사이저 앱을 만들지 않고 맨손으로 큐브를 만드는 좋은 예가 있습니다 : http://www.youtube.com/watch?v=0h-RhyopUmc

Wikipedia 기사는 좋은 시작점입니다. http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming

사운드 생성은 일반적인 데이터 흐름 프로그래밍 영역입니다. 오픈 소스 신디사이저 시스템이 있습니다 : http://www.synthedit.com/ http://alsamodular.sourceforge.net/

Mac을 사용하는 경우, 공장에 Quartz Composer가 사전 설치되어있을 수 있습니다. http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

나는 또한 내 친구와 함께 DF 시스템을 만들었지 만 아직 비주얼 편집기는 없으며 스크립트 비주얼 라이저 만 있습니다.


3
데이터 흐름 프로그래밍이 Turing complete가 아닌 것으로 생각하는 이유는 무엇입니까?
oosterwal

박스 연결로 주위를 둘러 보는 것은 튜링 완료가 아닙니다. 구성 요소 작성은 Turing-complete입니다 (일반적으로 다른 구성 요소와 통신하는 데 사용해야하는 DF 프레임 워크에만 제한이 없음).
ern0

1
모든 CPU의 기본 하드웨어는 기본적으로 데이터 흐름입니다. 이 비 Turing 완성 구조는 어떻게 Turing 완성 시스템으로 이어질 수 있습니까?
mouviciel

@mouviciel 나의 첫 번째 반응은 "아니오, CPU는 데이터 흐름이 아니다"였다. 어쨌든 이것은 데이터 흐름 시스템에 대한 나쁜 예입니다. 나쁜 디자인. 하나의 소스 구성 요소 (외부 / 내부 클록) 만 있으며 CPU 구성 요소를 트리거하여 다음 명령을 처리합니다. 오디오, 비디오 카드, DMA 시스템 등과 같은 다른 부품을 구성 요소로 간주하더라도 구성이 너무 나쁩니다. 구성 요소가 너무 크고 전문화되어 있습니다. 그러나 아이디어는 좋을 것입니다. 성능 / 다목적 성을 높이고 더 작은 단위의 컴퓨터를 구축하고 데이터 흐름 구성 요소와 같은 부품을 연결하는 방법일까요? 특허 냄새 :)
ern0

2

MIT의 스크래치 프로그래밍 시스템은 거의 완전히 드래그 앤 드롭입니다.

Google의 App Inventor 는 비슷한 것으로 보입니다 (그리고 크레딧 Scratch).

나는 어느 쪽이든 큰 것을 코딩하고 싶지는 않지만 "프로그래머 사고"를 가르치기 위해 스크래치는 훌륭하다. 그것은 실제 프로그래밍이지만, 즉각적인 시각적 만족과 스냅-투-커더 블록 은 새로운 이민자를 미치게하는 "구문 오류"좌절의 많은 부분을 피합니다 ( 이 기사 에서 에코 참조 ). 파이썬 명령 줄로 어린 아이들을 열광 시키려고한다고해서 요즘은 그것을 자르지 않습니다.


1

이것은 아마도 당신이 생각하는 형태가 아닐지라도 이미 존재합니다. 두 가지 예는 Simulink와 Alice입니다.

Simulink는 동적 시스템 시뮬레이션을 구성하는 그래픽 수단입니다. 대부분의 구성은 일반적으로 프로그래밍으로 생각하는 것보다 복잡하지만 for 및 if 문과 같은 것은 여전히 ​​그래픽으로 구성 할 수 있습니다. Simulink는 정부와 많은 대기업이 Simulink에서 초기 설계를 수행 한 후 일부 유형의 정리 증명을 Simulink "코드"에 적용함에 따라 항공 우주 분야에서 큰 문제가되었습니다.

Alice는 아이들을위한 드래그 앤 드롭 프로그래밍 교육 도구입니다. 아이들이 일종의 프로그래밍 스토리 보드에서 액션과 객체를 끌어다 놓음으로써 재미있는 스토리를 만들 수 있습니다.


1

Prograph 는 드래그 앤 드롭 방식의 멋진 언어였습니다. 또한 Wikipedia에는 ​​적절한 크기의 시각적 언어 목록이있는 기사가 있습니다 .


이러한 각 리소스에 대해 조금 더 설명해 주시겠습니까? 그리고 질문에 대답하는 데 왜 이러한 리소스를 추천하십니까? "링크 전용 답변" 은 Stack Exchange에서 환영받지 못합니다
gnat

0

시각적 프로그래밍 언어는 상당히 많습니다. 대규모 콜 센터에서 관리하는 전화 시스템은 끌어서 놓기 모듈을 사용하여 프로그래밍했습니다. 삼촌은 완전히 드래그 앤 드롭되고 20 년 전인 제조 라인을 설계하기위한 Just-In-Time 시스템을 개발했습니다.

드래그 앤 드롭 프로그래밍 언어를 사용하는 PS1에서 로봇 전투 게임을했습니다.


Carnage Heart는 대단한 게임이었습니다.
Ape-inago

저것은 이름을 기억할 수 없었습니다. 나는 그 게임을 좋아했다. 매우 영리한 디자인.

-1

텍스트 프로그래밍은 50 년 동안 훌륭했지만, 소프트웨어 엔지니어링은 그래픽 영역으로 이동하여 다음 단계의 복잡성을 처리해야합니다. 예를 들어, 많은 코어 프로세서의 등장과 병렬 프로그래밍의 과제로 인해 스레딩 모델이 한계에 도달했습니다. 솔직히 말해서, 소프트웨어 커뮤니티는 다른 모든 도메인과 같이 시각화에 적합하지 않은 프로그래밍에 근본적으로 다르고 특별한 무언가가 있다고 오만하게 생각합니다. 전화 사업자 및 다른 많은 직업과 마찬가지로 올바른 자동화 기술을 통해 도메인 전문가는 지식 기반 시스템의 풍부한 시뮬레이션 공간에서 곧 협업 할 수 있습니다. 소프트웨어 산업은 패러다임 전환으로 인해 기한이 지났습니다.


2
나는 많은 실제 프로그램의 복잡성이 그래픽으로 완전히 표현 되기에는 너무 높다는 것을 강력히 동의하지 않는다. 내가 (1) 프로그래밍 방법을 알고 (2) 더 큰 프로젝트에 LabView를 사용한 사람을 아는 모든 사람들은 그래픽 표현이 본질적으로 너무 큰 프로젝트에서 생산적으로 작업하기에는 너무 무겁다는 것을 알게되었습니다. 물론, LabView는 프로그램이 단일 화면에 적합 할 때 매우 편리합니다. 그러나 프로그램이 단일 화면의 한계를 넘어 서기 시작하면 LabView를 효율적으로 사용하기가 어렵습니다 (간단한 텍스트 검색, 블록 재정렬 등).
Eric O Lebigot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.