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.
programming-languages
Gablin
sumber
sumber
Jawaban:
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.
sumber
Jawaban sederhananya adalah tidak.
Ketika datang ke pemrograman, input teks jauh melebihi dalam hal informasi yang ditentukan daripada bagian penghitung visualnya.
sumber
LabVIEW cukup grafis.
Dari situs web LabVIEW :
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
Prograph adalah bahasa yang asyik yang semuanya drag and drop. Selain itu, Wikipedia memiliki artikel dengan daftar bahasa visual berukuran baik .
sumber
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
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.
sumber