내가 아는 모든 프로그래밍 언어는 작성됩니다. 그러나 전체 프로그램을 드래그 앤 드롭 할 수있는 프로그래밍 언어가 있는지 궁금합니다. 루프를 얻으려면 여기에서이 상자를 선택하고 "code"의 해당 섹션으로 드래그하십시오. 그리고 이와 같은 것이 없다면 발명 된 것이라면 날 것입니까?
개인적으로 나는 그것이 좋은 아이디어라고 생각하지 않지만, 당신의 생각을 듣고 싶습니다.
내가 아는 모든 프로그래밍 언어는 작성됩니다. 그러나 전체 프로그램을 드래그 앤 드롭 할 수있는 프로그래밍 언어가 있는지 궁금합니다. 루프를 얻으려면 여기에서이 상자를 선택하고 "code"의 해당 섹션으로 드래그하십시오. 그리고 이와 같은 것이 없다면 발명 된 것이라면 날 것입니까?
개인적으로 나는 그것이 좋은 아이디어라고 생각하지 않지만, 당신의 생각을 듣고 싶습니다.
답변:
많은 의상들이 드래그 앤 드롭 프로그래밍 시스템을 수행했습니다.
내쇼날 인스트루먼트 "Labview"는 아마도 가장 유명하고 최고 일 것입니다.
그들이 직면하는 근본적인 문제는 플라잉 코드 원숭이를 전문 프로그래머 및 엔지니어로 변환하는 알려진 방법이 없다는 것입니다. 하나의 예로서, O (N ^ 2) 또는 O (N ^ 3) 프로세스와 O (N log N) 프로세스간에 플라잉 코드 원숭이와의 차이는 없습니다. 즉, 통조림 루틴을 제공해야합니다. O (N log N) 알고리즘으로, 이들이 구축 할 퀵 그래픽 그래픽에 맞춤화 할 수 있습니다.
두 번째 문제점은 첫 번째 문제점에 필요한 특수 목적 블록을 제공 할 때 블록간에 데이터를 이동하여 부과되는 오버 헤드가 비싸기 시작한다는 것입니다. 나는 Rippen이라는 매우 멋진 시스템 중 하나와 함께 일했습니다. 필자가 프로파일을 수행 할 때 고성능! 필요한 성능 센서 처리 응용 프로그램에서 어디에 문제가 발생했는지 확인하기 위해 CPU 시간의 약 20 %가 데이터 이동으로 전환되는 것을보고 다소 혼란 스러웠습니다. (내가 LADAR 이미지 처리를 수행하면서 입력 이미지의 모든 픽셀에 대해 부동 소수점 처리를 공정하게 수행했기 때문에 CPU의 20 %가 많은 데이터 이동 오버 헤드였습니다.)
컴파일러 기반 시스템으로 이동하여 아마도 2 부를 얻을 수 있습니다. 사진에 피드를 제공하고 최적화 된 실행 프로그램으로 컴파일하지만 실제로 문제를 해결할지 확실하지 않으며 아플 수 있습니다. 도구의 대화 형 특성.
야후! 파이프 는 아마도 여러분이 묘사하고있는 유형의 그래픽 언어의 완벽한 예일 것입니다. 시스템을 통해 정보 흐름을 생성하기 위해 기본 요소 (작업중인 데이터 소스에서 루프 및 조건부로의 모든 항목)를 끌어서 놓기합니다.
도메인에 따라 다르지만 대부분 요점입니다. 파이프는 데이터 중심이므로 표현이 아닌 시각화가 가장 중요합니다. 마찬가지로 Scratch 또는 Sprog 와 같은 자습서 환경 ! 학습 보조 도구로 작업중인 내용의 시각화를 강조하십시오. 데이터 입력 효율성은 해당 도메인의 우선 순위가 훨씬 낮습니다.
때때로 누군가는 "우리가 알고있는대로 프로그래밍을 끝내고"그것을 사용하는 모든 사람을 프로그래머로 만드는 드래그 앤 드롭 프로그래밍 언어 또는 디자인 도구를 생각해냅니다.
그들 중 누구도 아직 실제로 작업을 수행하지 않고 우리 모두를 일에서 끝내지 못한 이유는 실제로 생성하는 드래그 앤 드롭 기능의 양과 사용자 친화적 인 방법에 관계없이 프로그래밍 이 간단하다는 것입니다. 어렵다.
프로그래밍의 실제 원칙은 문제 해결 방법을 알고 프로세스를 모델링하고 사용 가능한 데이터를 구성하는 방법을 이해하는 것입니다. 컴퓨터로 가능한 일을 이해하는 것조차도.
논란의 여지가있는 일부 사람들이 이런 식으로 생각하도록 가르쳐 줄 수 없다는 증거가 있습니다 . 우선, 이런 식으로 생각할 수 없다면 주위에 많은 프로그래머가 있으므로 아이디어를 구현하고 돈을 지불 할 가치가 있다고 생각되면 아이디어를 구현하기 위해 항상 누군가를 고용 할 수 있습니다. 프로그래밍 로직으로 충분히 작업 할 수 있다면 비교적 간단한 드래그 앤 드롭 환경을 어지럽히 지 않고 실제 언어를 배울 수도 있습니다.
나는 일반적인 프로그래밍을 생각하고 있습니다. 끌어서 놓기가 IT 전문가가 아닌 해당 도메인 내 전문가 인 매우 유용한 프로세스 사용자 일 수있는보다 제한된 DSL 유형 시나리오에서도 마찬가지입니다.
내가 본 최고의 드래그 앤 드롭 프로그래밍 시스템은 Lego Mindstorms NXT 로봇입니다.
이를 통해 매우 복잡한 기능을 제어하면서 매우 놀라운 작업을 수행 할 수 있습니다.
그러나 어떤 시점에서는 고장이 나므로 다른 시스템으로 되돌려 야합니다.
이 기사를 참조하십시오 : http://www.wired.com/geekdad/2007/11/the-best-progra/
그러나 이것이 개선되고 다른 시나리오가 필요한 경우 이에 대한 필요성이 점점 줄어들 것입니다.
데이터 흐름 프로그래밍 (일명 흐름 기반 프로그래밍)은 일 종일 수 있습니다. 전체적으로 데이터 흐름 프로그래밍은 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 시스템을 만들었지 만 아직 비주얼 편집기는 없으며 스크립트 비주얼 라이저 만 있습니다.
MIT의 스크래치 프로그래밍 시스템은 거의 완전히 드래그 앤 드롭입니다.
Google의 App Inventor 는 비슷한 것으로 보입니다 (그리고 크레딧 Scratch).
나는 어느 쪽이든 큰 것을 코딩하고 싶지는 않지만 "프로그래머 사고"를 가르치기 위해 스크래치는 훌륭하다. 그것은 실제 프로그래밍이지만, 즉각적인 시각적 만족과 스냅-투-커더 블록 은 새로운 이민자를 미치게하는 "구문 오류"좌절의 많은 부분을 피합니다 ( 이 기사 에서 에코 참조 ). 파이썬 명령 줄로 어린 아이들을 열광 시키려고한다고해서 요즘은 그것을 자르지 않습니다.
이것은 아마도 당신이 생각하는 형태가 아닐지라도 이미 존재합니다. 두 가지 예는 Simulink와 Alice입니다.
Simulink는 동적 시스템 시뮬레이션을 구성하는 그래픽 수단입니다. 대부분의 구성은 일반적으로 프로그래밍으로 생각하는 것보다 복잡하지만 for 및 if 문과 같은 것은 여전히 그래픽으로 구성 할 수 있습니다. Simulink는 정부와 많은 대기업이 Simulink에서 초기 설계를 수행 한 후 일부 유형의 정리 증명을 Simulink "코드"에 적용함에 따라 항공 우주 분야에서 큰 문제가되었습니다.
Alice는 아이들을위한 드래그 앤 드롭 프로그래밍 교육 도구입니다. 아이들이 일종의 프로그래밍 스토리 보드에서 액션과 객체를 끌어다 놓음으로써 재미있는 스토리를 만들 수 있습니다.
시각적 프로그래밍 언어는 상당히 많습니다. 대규모 콜 센터에서 관리하는 전화 시스템은 끌어서 놓기 모듈을 사용하여 프로그래밍했습니다. 삼촌은 완전히 드래그 앤 드롭되고 20 년 전인 제조 라인을 설계하기위한 Just-In-Time 시스템을 개발했습니다.
드래그 앤 드롭 프로그래밍 언어를 사용하는 PS1에서 로봇 전투 게임을했습니다.
텍스트 프로그래밍은 50 년 동안 훌륭했지만, 소프트웨어 엔지니어링은 그래픽 영역으로 이동하여 다음 단계의 복잡성을 처리해야합니다. 예를 들어, 많은 코어 프로세서의 등장과 병렬 프로그래밍의 과제로 인해 스레딩 모델이 한계에 도달했습니다. 솔직히 말해서, 소프트웨어 커뮤니티는 다른 모든 도메인과 같이 시각화에 적합하지 않은 프로그래밍에 근본적으로 다르고 특별한 무언가가 있다고 오만하게 생각합니다. 전화 사업자 및 다른 많은 직업과 마찬가지로 올바른 자동화 기술을 통해 도메인 전문가는 지식 기반 시스템의 풍부한 시뮬레이션 공간에서 곧 협업 할 수 있습니다. 소프트웨어 산업은 패러다임 전환으로 인해 기한이 지났습니다.