Apa itu pemrograman berbasis data?


93

Saya telah ditugaskan di tempat kerja untuk menulis rencana teknik terperinci untuk aplikasi logistik yang kami kodekan untuk diusulkan kepada pelanggan. Saya telah diberitahu bahwa ini adalah aplikasi berbasis data. Apa yang dimaksud dengan aplikasi menjadi "data-driven"? Apa kebalikannya? Saya tidak bisa mendapatkan jawaban yang sangat jelas untuk ini meskipun saat mencari web saya dapat melihat banyak orang memposting contoh mereka sendiri. Bantuan apa pun akan sangat dihargai.


2
Hampir semua pemrograman dunia nyata digerakkan oleh data.
Martin Spamer

16
Seni Pemrograman Unix klasik memiliki diskusi yang bagus tentang topik ini: homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html . Kutipan kunci: "Dalam pemrograman berbasis data, data bukan hanya keadaan beberapa objek, tetapi sebenarnya menentukan aliran kontrol program . Di mana perhatian utama dalam OO adalah enkapsulasi, perhatian utama dalam pemrograman berbasis data adalah menulis sesedikit mungkin kode tetap . "
FMc

2
Jawaban FMc bagi saya adalah penjelasan yang paling meyakinkan, dan seharusnya merupakan jawaban, tetapi diuraikan.
Mads Skjern

Jawaban:


96

Pemrograman yang didorong data adalah model pemrograman di mana data itu sendiri mengontrol aliran program dan bukan logika program. Ini adalah model di mana Anda mengontrol aliran dengan menawarkan kumpulan data yang berbeda ke program di mana logika program adalah beberapa bentuk aliran umum atau perubahan status.

Misalnya jika Anda memiliki program yang memiliki empat status: ATAS - BAWAH - BERHENTI - MULAI

Anda dapat mengontrol program ini dengan menawarkan input (data) yang mewakili status:

  • set1: BAWAH - BERHENTI - MULAI - BERHENTI - ATAS - BERHENTI
  • set2: ATAS - BAWAH - ATAS - BAWAH

Kode program tetap sama tetapi kumpulan data (yang bukan dari tipe input dinamis tetapi secara statis diberikan ke komputer) mengontrol aliran.


3
Bagian pemrograman menulis / mendefinisikan "bentuk umum dari aliran atau perubahan keadaan", benar kan? Tapi saya bisa menulis "mesin" seperti itu dalam bahasa apa pun, dan tidak ada yang aneh tentang itu, jadi saya tidak benar-benar mengerti apa-apa dari jawaban Anda. Mungkin pemrograman berbasis data adalah ketika bahasa itu sendiri atau perpustakaan, mendorong atau membuatnya sangat mudah untuk menulis mesin semacam itu. Atau mungkin definisinya adalah bahwa bahasa / pustaka mari kita mendefinisikan mesin dengan cara deklaratif, yaitu tidak prosedural.
Mads Skjern

2
Di en.wikipedia.org/wiki/Data-driven_programming , mereka menggunakan AWK sebagai contoh. Dalam AWK ada dua hal yang diberikan, ekspresi yang mendefinisikan apa yang harus dilakukan dengan data, dan data itu sendiri. Apa ekspresi yang mendefinisikan apa yang akan terjadi dianggap: 1) pemrograman, atau 2) data. Jika dianggap data, maka pemogramannya adalah mesin AWK itu sendiri, yang tentunya pada contoh AWK bersifat statis. Tetapi dalam konteks lain, misalnya jika menulis mesin itu sendiri dengan cara prosedural tradisional, itu saja adalah bagian pemrograman.
Mads Skjern

Jadi ... dengan asumsi contoh pemrograman data drive yang lebih kuat telah selesai, bukankah ini hanya menjadi pernyataan penyertaan dalam mesin dengan beberapa asumsi dan alat yang dibuat sebelumnya?
ZirconCode

55

Meskipun ada lebih dari beberapa ide tentang apa itu pemrograman berbasis data, izinkan saya untuk memberikan contoh menggunakan struktur data dan fungsi.

Contoh non data driven:

data_lloyd = {'name': 'Lloyd', 'lives': 'Alcoy }
data_jason = {'name': 'Jason', 'lives': 'London' }
go = function(x) 
    if x.name == 'Lloyd' 
    then 
        print("Alcoy, Spain") 
    else 
        print("London, UK") 
end

Contoh berdasarkan data:

data_lloyd = {'name': 'Lloyd', 'lives': function(){ print("Alcoy, Spain") }
data_jason = {'name': 'Jason', 'lives': function(){ print("London, UK") }
go = function(x)
    x.lives()
end

Dalam contoh pertama, keputusan untuk menunjukkan satu hasil atau hasil lainnya ada dalam logika kode. Dalam contoh terakhir, output ditentukan oleh data yang diteruskan ke fungsi dan karena alasan itu kami mengatakan output 'digerakkan' oleh data.


3
Saya tahu ini adalah contoh sederhana, tetapi contoh non-data-driven hanya terlihat seperti contoh pengkodean yang ceroboh. Apakah berbasis data berarti praktik pengkodean yang baik? Jika demikian, mengapa ada orang yang ingin menggunakan pendekatan non-data-driven?
Jin

4
Saya minta maaf, tetapi contoh pertama terlihat seperti pemrograman fungsional (di mana data dan perilaku dipisahkan), dan contoh kedua terlihat seperti berorientasi objek (di mana data dan perilaku digabungkan).
Vakey

47

"Saya telah diberitahu bahwa ini adalah aplikasi berbasis data" - Anda perlu bertanya kepada siapa pun yang memberi tahu Anda hal itu.

Anda tidak ingin membaca beberapa jawaban yang masuk akal di sini dan kemudian mengetahui bahwa itu sama sekali bukan maksud orang yang bertanggung jawab atas proyek Anda. Frasa tersebut terlalu kabur untuk memiliki arti yang tidak ambigu yang pasti akan diterapkan pada proyek Anda.


8
Saya mengerti apa yang Anda maksud Richie, dan itu poin yang bagus. Namun, saya bertanya-tanya apakah "pemrograman berbasis data" adalah semacam istilah yang secara konkret diakui oleh industri pengembangan perangkat lunak. Saya tidak akan mengambil jawaban apa pun dari sini hanya dengan nilai nominal di sini tanpa memeriksa kembali dengan bos saya. -Terima kasih :)
jtbradle

5
Tentu - Anda benar bertanya di sini. Tetapi saya pikir jawabannya adalah tidak ada definisi yang diterima secara universal.
RichieHindle

Apa sebutannya saat Anda menghasilkan UX dari meta-data? Disebut apakah saat alur kerja Anda dikontrol oleh konfigurasi eksternal? Apakah itu Arsitektur Berbasis Data dan Arsitektur Berbasis Peristiwa? Apakah Pemrograman Berbasis Data lebih mirip dengan WSDL dan GraphQL di mana model Anda dibuat tetapi Anda masih mengkodekannya sesuka Anda?
Corey Alix

15

Pengembangan yang didorong oleh data adalah sesuatu yang dapat membuat perubahan pada logika program dengan mengedit bukan kodenya, tetapi struktur datanya.

Anda dapat menemukan informasi lebih lanjut tentang pemrograman berbasis data di http://www.faqs.org/docs/artu/ch09s01.html

Pemrograman Prosedural

var data = { 
            {do:'add',arg:{1,2}},
            {do:'subtract',arg:{3,2}},
            {do:'multiply',arg:{5,7}},
            };

foreach(var item in data){  
    switch(item.do){
        case 'add':
            console.log(item.arg[0] + item.arg[1]);
        break;
        case 'subtract':
            console.log(item.arg[0] - item.arg[1]);
        break;
        case 'multiply':
            console.log(item.arg[0] * item.arg[1]);
        break;
    }
}

Pemrograman Berbasis Data

var data = { 
            {do:'+',arg:{1,2}},
            {do:'-',arg:{3,2}},
            {do:'*',arg:{5,7}},
            };

foreach(var item in data){      
    console.log(eval (item.arg[0] + item.do + item.arg[1]);
}

8

Aplikasi berbasis data adalah:

(1) sekumpulan aturan yang menerima kumpulan data yang berbeda untuk membuat keputusan yang telah ditentukan sebelumnya untuk setiap kumpulan data tertentu dan memberikan hasil sebagai hasilnya

(2) beberapa proses yang telah ditentukan sebelumnya yang dipicu berdasarkan hasil.

Contoh sempurna adalah ifttt.com

Aplikasi ini tidak memiliki apa-apa selain aturan. Yang membuatnya berguna adalah data yang akan mengalir melaluinya.



1

Tidak ada seorang pun di tempat kerja yang dapat membantu Anda dengan pertanyaan ini? Sangat sulit untuk memvisualisasikan apa yang Anda kerjakan tanpa contoh yang lebih baik. Tapi dari apa yang saya kumpulkan, itu akan menjadi program di mana mereka terutama memasukkan informasi. Itu akan dapat mengambil dan mengedit informasi yang perlu dikelola pelanggan.

Semoga berhasil!!


1

Saya pikir saran yang diberikan tidak buruk, tetapi saya selalu memikirkan Desain Berdasarkan Data berkisar menggunakan struktur data yang ada atau diberikan sebagai dasar untuk objek domain Anda.

Misalnya, program manajemen penjual klasik mungkin memiliki tipe struktur tabel berikut:

  • Pramuniaga
  • Wilayah
  • Pelanggan
  • Produk

Jadi, aplikasi Anda akan berpusat pada pengelolaan struktur data ini, alih-alih menggunakan API langsung yang melakukan hal-hal seperti - "membuat penjualan" dll ...

Hanya pendapat saya seperti yang disarankan oleh jawaban lain;)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.