Program drag-n-drop - akankah itu terbang? [Tutup]

12

Semua bahasa pemrograman yang saya tahu ditulis - yaitu diketik sebagai panjang teks dengan satu atau lain cara. Tapi saya bertanya-tanya apakah ada bahasa pemrograman di mana Anda bisa drag-n-drop seluruh program; untuk mendapatkan loop, Anda pilih kotak ini di sini dan seret ke bagian "kode" di sana, dan seterusnya. Dan jika tidak ada yang seperti ini, apakah itu akan terbang jika ditemukan?

Secara pribadi saya tidak percaya itu akan menjadi ide yang bagus, tetapi saya ingin mendengar pendapat Anda.

Gablin
sumber
Jangan pernah berkata tidak pernah (Anda berkata: "Saya tidak percaya itu akan menjadi ide yang bagus") - mungkin ada situasi yang aneh, di mana ide paling aneh dapat bekerja dengan baik.
ern0
6
"Apakah itu akan terbang?" Sejujurnya, jika saya pikir sistem kontrol penerbangan di pesawat yang saya tuju diprogram oleh seseorang yang melakukan pemrograman Drag-n-drop, saya mungkin tidak naik ke pesawat itu. ; D
glenatron
Sangat suka pertanyaan ini, meskipun saya berharap beberapa jawaban lebih panjang dan lebih dalam.
Nicole
1
Ironman akan menggunakannya, dan terbang! Tapi dia tidak ada di dunia nyata!
Manoj R
@glenatron - Jadi bepergian dengan kereta ... Sistem kontrol penerbangan adalah untuk satu bagian otomat keadaan terbatas yang dibangun secara grafis dan untuk bagian lain sistem rekayasa kontrol yang dibangun dari blok dasar dan dirakit dalam antarmuka GUI. Sisanya adalah UML.
mouviciel

Jawaban:

23

Banyak pakaian telah melakukan sistem pemrograman drag-and-drop.

Instrumen Nasional "Labview" mungkin yang paling terkenal, dan yang terbaik.

Masalah mendasar yang mereka temui adalah bahwa tidak ada cara yang diketahui untuk mengubah Flying Code Monkey menjadi programmer ahli dan insinyur. Sebagai SATU contoh, tidak ada perbedaan untuk Monyet Kode Terbang antara proses O (N ^ 2) atau O (N ^ 3) dan proses O (N log N), yang berarti bahwa mereka harus diberikan dengan rutinitas kalengan untuk Algoritma O (N log N), yang dapat dikustomisasi ke dalam quickie kludges grafis yang akan mereka buat.

Masalah kedua yang mereka temui adalah bahwa, ketika Anda memasok blok tujuan khusus yang diperlukan oleh masalah pertama, overhead yang dikenakan dengan memindahkan data di antara blok mulai menjadi mahal. Saya bekerja dengan satu sistem yang sangat bagus bernama Rippen. Ketika saya memprofil, untuk melihat di mana kita menyakiti aplikasi pemrosesan sensor kinerja-TINGGI! -Required, saya agak terganggu untuk melihat bahwa sekitar 20% dari waktu CPU saya akan memindahkan data. (Karena saya melakukan pemrosesan gambar LADAR, melakukan sejumlah pemrosesan floating-point pada setiap piksel dari gambar input, 20% CPU adalah BANYAK overhead data yang bergerak.)

Anda mungkin dapat menyiasati bagian 2 dengan masuk ke sistem berbasis kompiler: Anda memberi makan gambar Anda, dan mengkompilasi ke program yang dapat dieksekusi yang sangat dioptimalkan, tapi saya tidak yakin yang benar-benar akan memperbaiki masalah, dan mungkin menyakitkan sifat interaktif alat ini.

John R. Strohm
sumber
Secara teori Anda dapat memiliki mode Debug dan Rilis (dioptimalkan).
Ayub
15

Jawaban sederhananya adalah tidak.

Ketika datang ke pemrograman, input teks jauh melebihi dalam hal informasi yang ditentukan daripada bagian penghitung visualnya.

Malam gelap
sumber
Ketika Anda melangkah semakin tinggi dan semakin tinggi, semakin banyak peluang untuk mengartikulasikan masalah secara grafis. Pemrograman dataflow adalah pendekatan semacam itu (lihat jawaban saya untuk pertanyaan ini): komponen diberikan, mereka adalah kotak hitam, tugas "programmer" (istilah yang lebih baik: perancang aplikasi) adalah hanya mengaturnya menjadi jaring.
ern0
12

LabVIEW cukup grafis.

Dari situs web LabVIEW :

LabVIEW

Zeke
sumber
Huh, itu terlihat rapi. Berapa banyak yang dapat Anda lakukan dengan itu? Apakah ini khusus untuk satu jenis "pemrograman", seperti fisika, atau dapatkah Anda menggunakannya untuk apa saja?
gablin
2
Ya, ada profesional LabVIEW: lavag.org . Forum diskusi: forums.ni.com . Perbandingan Erlang: bit.ly/2yC0Tn . Deskripsi kompiler: bit.ly/c6quPK . Contoh pemrograman umum: bit.ly/cSnt5D . Gunakan di LHC: bit.ly/9Yp4oo . Ini adalah bahasa khusus yang digunakan di semua tempat: ni.com/solutions . Ini mahal sekali, kebocoran abstraksi kiri dan kanan, menginstal satu ton layanan yang tidak dapat dijelaskan, dan menderita banyak amatuer. Ini lintas platform, mudah diparalelkan, dan semudah / sekeras bahasa lain di luar sana.
Joe Z
2
Ini menjalankan robot LEGO. ni.com/academic/mindstorms
rwong
1
@Zeke: Jika VI (setara LabVIEW dari suatu program atau fungsi) mengharuskan Anda untuk menggulir lebih dari satu arah, maka itu belum ditulis dengan benar.
oosterwal
1
@ Oosterwal: Anda benar, itu biasa. Selain itu, bahasa ini sengaja dipasarkan untuk ilmuwan dan insinyur karena mudah dipelajari. Terus untuk program kecil, ini benar. Karena program membutuhkan lebih banyak kecanggihan, kode cenderung merayap agak di luar kendali. (Sunting: Bukan karena bahasanya, tetapi karena pengguna yang bermaksud baik. Pengungkapan penuh: Saya seorang ilmuwan beberapa hari :)
Joe Z
6

Yahoo! Pipes mungkin adalah contoh sempurna dari bahasa grafis dari tipe yang Anda gambarkan; Anda seret-dan-jatuhkan primitif (mulai dari sumber data yang Anda tindak lanjuti, hingga loop dan kondisional) untuk menghasilkan aliran informasi melalui sistem.

Ini sangat spesifik untuk domain, tetapi itulah intinya; Pipa adalah data-sentris, membuat visualisasi (bukan ekspresi) sangat penting. Demikian pula, lingkungan tutorial seperti Scratch atau Sprog! tekankan visualisasi apa yang sedang Anda kerjakan sebagai alat bantu belajar; efisiensi entri data adalah prioritas yang jauh lebih rendah di domain itu.

esm
sumber
Jika lebih banyak pengembang aplikasi web amatir tahu tentang Pipes, dunia akan menjadi tempat yang lebih baik. +1
Sparr
3

Sesekali seseorang datang dengan bahasa pemrograman drag and drop atau alat desain yang akan "mengakhiri pemrograman seperti yang kita tahu" dan membuat semua orang yang menggunakannya menjadi seorang programmer.

Alasan mengapa tidak ada dari mereka yang benar-benar melakukan pekerjaan itu dan membuat kita semua tidak bekerja adalah karena sebenarnya, tidak peduli berapa banyak fungsi drag and drop yang Anda buat dan tidak peduli seberapa ramah pengguna Anda membuatnya, faktanya adalah bahwa pemrograman sulit.

Disiplin nyata pemrograman adalah tentang mengetahui cara menyelesaikan masalah, memahami cara memodelkan proses dan mengatur data agar dapat digunakan. Bahkan memahami apa yang mungkin dilakukan dengan komputer sama sekali.

Ada bukti (jika kontroversial) yang menunjukkan bahwa beberapa orang tidak dapat diajari berpikir seperti ini yang membawa saya ke beberapa pemikiran yang menarik dan relevan. Untuk mulai dengan, jika Anda tidak bisa berpikir seperti ini maka ada banyak programmer di sekitar, sehingga Anda selalu dapat mempekerjakan seseorang untuk mengimplementasikan ide jika Anda memiliki ide dan Anda pikir itu layak untuk dibayar. Jika Anda dapat bekerja dengan logika pemrograman cukup baik maka Anda mungkin juga belajar bahasa nyata daripada main-main dengan lingkungan drag and drop yang relatif sederhana.

Saya sedang memikirkan pemrograman umum di sini. Hal yang sama tidak selalu berlaku dalam skenario tipe DSL yang lebih terbatas di mana drag-and-drop mungkin merupakan proses yang sangat berguna bagi pengguna yang merupakan spesialis dalam domain itu daripada spesialis TI.

glenatron
sumber
Pemrograman adalah proses yang kompleks, sulit dan panjang, membutuhkan banyak pekerjaan insinyur. Itu sebabnya industri ini berusaha membuat pengembangan aplikasi tersedia untuk non-programmer: mengurangi biaya pengembangan, mengoptimalkan penggunaan sumber daya manusia. Juga, sebagai seorang programmer, saya dapat mengatakan, bahwa ada banyak tugas, yang harus dilakukan oleh non-programmer, tetapi mereka tidak memiliki alat untuk tugas itu, jadi itu harus dilakukan oleh programmer, yang 1. tidak suka melakukan tugas semacam itu 2. mahal 3. bukan orang terbaik untuk melakukan itu. Jadi, saya dengan hangat menyambut ide yang mengarah ke sana, misalnya pemrograman visual.
ern0
1
Saya tahu mengapa industri mencoba melakukannya. Tetapi poin saya adalah bahwa jika Anda dapat memprogram, Anda adalah seorang programmer dan orang-orang yang tidak dapat memprogram tidak akan dapat melakukannya dengan lebih baik karena ada alat visual untuk melakukan pekerjaan yang sama yang kalau tidak mereka harus menulis kode untuk. Alat bukanlah masalahnya, hal yang harus Anda lakukan dengan mereka adalah masalahnya.
glenatron
Maksud saya pemrograman lebih liberal. Ini juga pemrograman, ketika Anda memberi tahu mesin waching Anda untuk menjalankan pencucian selama 5 menit, keringkan selama 10 menit. Seseorang harus memberi nama berbeda untuk "lapisan" pemrograman yang berbeda. Apakah pemrograman pemrograman dataflow? Apakah pembuatan spreadsheet (tanpa makro)? Ya, mereka, tetapi juga jenis yang berbeda yang disebut programmer. Lagi pula, ada perbedaan tajam apa yang dilakukan programmer, maksud saya, drag-and-drop module di SuperIDE12 ++ dengan plugins VS assembly coding. Juga, itu hanya perbedaan besar, jika platform Anda memiliki GC. Atau: kompiler skrip VS. "Pemrograman" adalah istilah yang terlalu umum.
ern0
3

Sistem pemrograman drag and drop terbaik yang pernah saya lihat adalah untuk robot Lego Mindstorms NXT.

Ini memungkinkan Anda untuk melakukan beberapa hal yang luar biasa, mengendalikan beberapa fungsi yang cukup rumit.

Namun pada beberapa titik itu rusak, dan Anda perlu kembali ke sistem lain.
Lihat artikel ini: http://www.wired.com/geekdad/2007/11/the-best-progra/

Mungkin saja, bahwa jika ini diperbaiki, dan skenario yang berbeda di mana dipenuhi, kebutuhan untuk ini akan menjadi semakin berkurang.

Bravax
sumber
Do love Mindstorms (yang berevolusi dari Lego Dacta, yang memiliki pengkodean lebih tradisional [bahasa yang mirip dengan Logo / Lisp]), mempelajarinya di sekolah 15 tahun yang lalu. Hadiah yang sangat baik bagi seorang programmer untuk mendapatkan anak-anak mereka, jika mereka memilikinya.
Orbling
1
NXT sebenarnya adalah LabVIEW. Ya, LV yang sudah dipangkas sedikit: ni.com/academic/mindstorms
Joe Z
Saya tidak pernah tahu itu, terima kasih! Saya sangat terkesan dengan itu.
Bravax
2

Pemrograman dataflow (alias pemrograman berbasis aliran) bisa menjadi semacam. Meskipun demikian, pemrograman dataflow tidak lengkap-Turing.

Pemrograman dataflow adalah metode membuat aplikasi, ketika Anda menempatkan instance komponen pada adegan dan menghubungkan port-port mereka, sehingga mereka membentuk jaringan pemrosesan pesan. Komponen dapat dipilih dari perpustakaan, mereka memiliki port konsumen (input) dan produsen (output), yang siap untuk terhubung dengan port komponen lain.

Berikut adalah contoh yang bagus, di mana bahkan mouse tidak digunakan untuk membangun aplikasi synth, tetapi tangan kosong dan batu kecil: http://www.youtube.com/watch?v=0h-RhyopUmc

Artikel Wikipedia adalah titik awal yang baik: http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming

Pembuatan suara adalah area tipikal pemrograman aliran data. Ada beberapa sistem synth open source: http://www.synthedit.com/ http://alsamodular.sourceforge.net/

Jika Anda memiliki Mac, Anda mungkin memiliki Komposer Kuarsa yang diinstal sebelumnya dari pabrik: http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

Saya juga sudah membuat sistem DF dengan seorang teman saya, tapi kami tidak memiliki editor visual belum , hanya naskah visualisator.

ern0
sumber
3
Mengapa Anda menganggap pemrograman aliran data tidak lengkap Turing?
oosterwal
Bermain-main dengan koneksi kotak tidak selesai sepenuhnya. Komponen tulisan adalah Turing-complete (biasanya tidak ada batasan, hanya kerangka DF, yang harus digunakan untuk berkomunikasi dengan komponen lain).
ern0
1
Perangkat keras yang mendasari setiap CPU pada dasarnya adalah aliran data. Bagaimana konstruksi lengkap non-Turing ini dapat mengarah pada sistem lengkap Turing?
mouviciel
@mouviciel Reaksi pertama saya adalah "tidak, CPU bukan dataflow", tetapi ya. Bagaimanapun, ini adalah contoh buruk untuk sistem aliran data; desain yang buruk. Hanya ada satu komponen sumber (jam eksternal / internal), yang memicu komponen CPU untuk memproses instruksi berikutnya. Bahkan jika kita menghitung bagian lain, misalnya audio, kartu video, sistem DMA, dll. Sebagai komponen, desainnya masih buruk: komponennya terlalu besar dan terlalu khusus. Tapi idenya bagus, mungkin itu cara untuk meningkatkan kinerja / fleksibilitas, untuk membangun komputer dengan unit yang lebih kecil dan menghubungkan bagian-bagian seperti komponen aliran data? Baunya seperti paten :)
ern0
2

Sistem pemrograman Scratch dari MIT hampir seluruhnya berupa drag-and-drop.

Penemu Aplikasi Google tampaknya serupa (dan memuji Awal).

Saya tidak ingin kode apa pun yang besar dalam diri saya sendiri, tetapi untuk mengajar "pemikiran programmer", Scratch luar biasa. Ini Pemrograman Nyata, tetapi dengan kepuasan visual instan dan blok snap-together menghindari banyak frustrasi "kesalahan sintaksis" yang menunda pendatang baru (pandangan yang saya lihat bergema dalam artikel ini ). Mencoba untuk membangkitkan semangat anak-anak muda dengan perintah python tidak memotongnya hari ini.

timday
sumber
1

Ini sudah ada, meskipun mungkin tidak dalam bentuk yang Anda pikirkan. Dua contoh adalah Simulink dan Alice.

Simulink adalah sarana grafis untuk merakit simulasi sistem dinamis. Sementara sebagian besar konstruk lebih kompleks daripada apa yang biasanya Anda anggap pemrograman, hal-hal seperti untuk dan jika pernyataan masih dapat dibangun secara grafis. Simulink adalah masalah besar dalam aplikasi Aerospace karena pemerintah dan banyak perusahaan besar melakukan desain awal mereka di Simulink dan kemudian menerapkan beberapa jenis teorema pembalas ke "kode" Simulink.

Alice, adalah alat pelatihan pemrograman pemrograman drag and drop untuk anak-anak. Ini memungkinkan anak-anak untuk bersenang-senang membangun cerita dengan menyeret dan menjatuhkan tindakan dan objek pada semacam papan cerita pemrograman.

John Berryman
sumber
1

Prograph adalah bahasa yang asyik yang semuanya drag and drop. Selain itu, Wikipedia memiliki artikel dengan daftar bahasa visual berukuran baik .

Manusia Timah
sumber
maukah Anda memperluas sedikit tentang apa yang masing-masing sumber daya miliki dan mengapa Anda merekomendasikan ini sebagai menjawab pertanyaan yang diajukan? "Jawaban khusus tautan" tidak diterima di Stack Exchange
agas
0

Ada beberapa bahasa pemrograman visual. Sistem telepon yang saya kelola untuk pusat panggilan besar diprogram menggunakan modul seret dan lepas. Paman saya mengembangkan sistem Just-In-Time untuk mendesain jalur produksi yang sepenuhnya drag and drop dan itu 20 tahun yang lalu.

Saya bahkan pernah memainkan game pertempuran robot di PS1 yang menggunakan bahasa pemrograman drag and drop.


sumber
Carnage Heart, adalah game yang luar biasa.
Kera-inago
Itu dia, saya tidak ingat namanya. Saya menyukai game itu. Desain yang sangat pintar.
-1

Pemrograman tekstual telah berjalan baik selama 50 tahun, tetapi rekayasa perangkat lunak harus pindah ke ranah grafis untuk menghadapi tingkat kerumitan berikutnya. Sebagai contoh, kemunculan banyak prosesor inti dan tantangan pemrograman paralel mendorong model threading ke batasnya. Terus terang, saya pikir komunitas perangkat lunak hanya berpikir arogan bahwa ada sesuatu yang secara fundamental berbeda dan istimewa tentang pemrograman sehingga tidak akan menerima visualisasi seperti setiap domain lainnya. Seperti operator telepon dan banyak profesi lainnya, teknologi otomasi yang tepat akan memungkinkan para pakar domain untuk segera berkolaborasi dalam ruang simulasi kaya sistem berbasis pengetahuan. Industri perangkat lunak sudah lama tertunda karena perubahan paradigma.

pengguna9196
sumber
2
Saya akan sangat tidak setuju, di sini: kompleksitas banyak program kehidupan nyata terlalu tinggi untuk sepenuhnya diwakili secara grafis. Semua orang yang saya tahu yang (1) tahu cara memprogram dan (2) menggunakan LabView untuk proyek yang lebih besar telah menemukan bahwa representasi grafis terlalu berat untuk bekerja secara produktif pada proyek yang lebih besar. Tentu, LabView sangat nyaman ketika program Anda cocok pada satu layar; tetapi ketika program Anda mulai tumbuh melampaui batas satu layar, LabView sulit digunakan secara efisien (tidak ada pencarian teks sederhana, mengatur ulang blok itu menyakitkan, ...).
Eric O Lebigot