Apa itu generasi bahasa pemrograman ke 4 & 5? Apakah ada lebih banyak dari mereka? [Tutup]

36

Karena sering diklasifikasikan di tingkat sekolah / perguruan tinggi, bahasa pemrograman populer (C #, Java, C ++) adalah semua bahasa generasi ke-3 (dengan tingkat abstraksi yang lebih tinggi dari bagian fisik mesin). Selain itu, bahasa rakitan diklasifikasikan sebagai bahasa ke-2 dan bahasa mesin sebagai bahasa generasi pertama.

Awalnya saya berpikir SQL harus dianggap bahasa generasi ke-4 karena lebih abstrak dan jauh dari perulangan dan lebih deskriptif.

Baru saja saya tahu ada bahasa generasi ke-4 dan ke-5, tetapi apa dasar dari setiap bahasa pemrograman atau teknologi untuk dikategorikan sebagai bahasa generasi ke-4 atau ke-5?

Juga, apakah ada bahasa generasi 6 atau 7 juga?

Ali
sumber
12
Oh, andai saja orang bisa menyetujui apa yang membuat bahasa Gen ke-n itu ... Tidak ada kriteria yang bisa benar-benar diikat (kecuali dari menyatakan bahwa bahasa-bahasa gen yang lebih tinggi lebih jauh dihapus dari logam telanjang daripada tingkat yang lebih rendah - pada tingkat apa) tidak disetujui).
Oded
5
"Generasi" mana yang C? Bisakah Anda memberikan beberapa contoh bahasa generasi 4 & 5 & beri tahu kami apa yang membuat setiap generasi? Yaitu kriteria apa yang mendefinisikan bahasa sebagai generasi 'n'?
Mawg
3
Tbh saya tidak berpikir konsep bahasa generasi X benar-benar relevan.
Pieter B
5
Saya membuat bahasa generasi ke-14, dan itu akan menjadi sihir murni, karena itu adalah anak ketujuh dari anak ketujuh ....
David Conrad

Jawaban:

36

Gambaran umum generasi sederhana: sebuah bahasa adalah generasi ke sembilan ketika itu adalah blok bangunan

  1. bit
  2. instruksi
  3. Operasi abstrak
  4. Objek domain
  5. Tujuan Program

Karenanya, bahkan bahasa-bahasa baru seperti Google Go atau Apple Swift masih merupakan generasi ke-3. Regex adalah bahasa pencocokan teks, yang menjadikannya bahasa generasi ke-4 awal. Dengan definisi ini, generasi ke-4 sangat selaras dengan DSL. Namun, perhatikan bahwa bahasa seperti C ++ dapat memiliki jenis dunia nyata seperti Lengthdan Weightselain floatdan double, yang membuatnya menjadi hibrida generasi ke-3 / ke-4.

Bahasa generasi ke-5 tidak ada secara praktis, karena mereka umumnya membutuhkan tingkat AI yang tidak pernah terwujud. Fakta bahwa kita programmer masih dibutuhkan adalah tepat karena non-programmer tidak bisa memberi tahu komputer dengan presisi yang tepat apa yang mereka inginkan.

MSalters
sumber
1
NB tentang paragraf terakhir: Blog J.Pitrat memiliki hal-hal menarik terkait dengan AI & programmer
Basile Starynkevitch
5
Masalah DONALD problempada blog itu menyoroti seberapa jauh kita masih jauh dari sudo make me a sandwich, dan mengkhawatirkan berapa banyak kemajuan yang telah kita buat selama 50 tahun terakhir.
MSalters
1
@AndrewHoffmann Apa yang salah dengan itu? Jika Anda membangun jembatan, Anda lebih baik memiliki jenis bahan yang tepat untuk struktur Anda, dan paku keling lebih baik dengan ukuran yang tepat (dan berapa ukurannya?).
didierc
1
@AndrewHoffman: AI sebagian besar merupakan topik CS di dunia akademis, bukan topik rekayasa perangkat lunak. Dapat dikatakan bahwa rekayasa nyata akan bermanfaat. Mungkin ada alasan bagus mengapa mobil self-driving pertama tampaknya adalah milik Google.
MSalters
6
@AndrewHoffman - bicaralah sendiri. Saya seorang insinyur perangkat lunak dan saya menggunakan praktik rekayasa standar yang cukup setiap hari. Juga, saya seorang insinyur bersertifikat. Saya pikir seluruh komentar Anda adalah omong kosong berdasarkan pengalaman pribadi Anda dan bukan berdasarkan fakta.
Engineer Dollery
88

"Bahasa generasi ke-N" adalah kata kunci. Ini adalah istilah pemasaran. Tidak ada definisi yang diterima secara universal tentang apa yang secara tepat mendefinisikan "generasi ke-n" untuk n> 2. Beberapa orang mengkategorikan bahasa "scripting" seperti Perl atau Python sebagai 4GL karena mereka jauh lebih tinggi daripada C, sementara yang lain berpikir mendefinisikan karakteristik 4GL adalah bahwa mereka spesifik domain, misalnya SQL. Beberapa nitwits bahkan berpikir bahwa Java (bahasa pertengahan 90-an yang penuh dengan orientasi objek dan pengumpulan dan refleksi sampah) termasuk dalam kategori "3GL" yang sama dengan Fortran (dari 50-an) dan C (dari 70-an).

Kategorisasi yang sangat membingungkan seperti "bahasa generasi ke-4" tidak berguna. Anda dapat melihatnya di buku teks lama, atau mendengarnya dari orang-orang yang memulai pemrograman pada tahun 80-an, tetapi tag seperti "4GL" tidak berharga tanpa penjelasan yang menyertai apa yang sebenarnya dimaksud oleh penulis.

Karena tidak ada yang langsung mengerti apa yang Anda maksud dengan "4GL", Anda tidak boleh menggunakan kategorisasi tersebut. Alih-alih, gunakan istilah tertentu untuk mengomunikasikan dengan tepat apa yang Anda maksud. Misalnya semua NASM, LLVM IR, dan Jasmin adalah bahasa assembly, tetapi dua VM target terakhir, dan yang terakhir juga merupakan bahasa pemrograman berorientasi objek. Apakah semua 2GL itu? SQL adalah sebagian deklaratif, bahasa khusus domain untuk kueri basis data dari tahun 80-an. Dan TeX adalah bahasa khusus domain untuk pengaturan huruf dari tahun 70-an. Apakah keduanya 4GL karena keduanya kurang lebih spesifik domain?

amon
sumber
22
Saya sedang mengembangkan bahasa 8G. Ini akan sangat mengejutkan. ... itu bahkan akan Juliuli goreng. Saya akan menjual lisensi untuk tiga pembayaran mudah ...;)
BrianH
10
Saya pikir generasi bahasa pemrograman HARUS entah bagaimana sesuai dengan generasi jet tempur . Jumlah kedahsyatan ini tampaknya cukup untuk membenarkan RFC pada subjek.
toniedzwiedz
11
Ah, ini membawa kembali kenangan, kembali ketika bahasa generasi kelima akan segera begitu mudah digunakan sehingga sebagian besar programmer akan keluar dari pekerjaan.
Gort the Robot
5
@Izkata A 1GL adalah kode mesin biner (mis. Set instruksi amd64). 2GL adalah bahasa rakitan tekstual yang menyediakan mnemonik untuk kode mesin (mis. GAS). 3GL adalah sesuatu yang abstrak di atas instruksi mesin. Fortran adalah yang pertama melakukan ini dengan memungkinkan programmer untuk menggunakan ekspresi dan variabel seperti (I + 7) * 3. Namun, tidak ada konsensus tentang di mana kategori 3GL berakhir, dan apa arti 4GL dan 5GL secara khusus.
amon
5
"Beberapa nitwit bahkan berpikir bahwa Java ... termasuk dalam kategori" 3GL "yang sama dengan Fortran ..." - sedangkan nitwit lain percaya bahwa jika dua hal tampak sangat berbeda dengan mereka, maka tidak mungkin ada skema klasifikasi yang mengelompokkan mereka bersama-sama sesuai dengan kriteria apa pun yang relevan dengan skema itu? ;-p
Steve Jessop