Mempelajari Setiap Jenis Bahasa Pemrograman

24

Saya telah mendengar beberapa kali bahwa setiap programmer harus mempelajari satu dari setiap jenis bahasa. Sekarang, ini tidak selalu benar, tetapi saya percaya itu adalah ide yang bagus.

Saya telah belajar Bahasa Prosedural (Perl), tapi apa yang jenis lain?

Apa perbedaan di antara mereka dan apa beberapa contoh dari masing-masing?

Dinamis
sumber
8
Anda harus menyadari bahwa ada banyak cara yang tumpang tindih untuk mengkategorikan bahasa. Yang paling umum adalah dengan paradigma pemrograman, tetapi bahkan kemudian ada perbedaan besar dan kecil, banyak poros yang sepenuhnya terpisah, dan banyak bahasa jatuh ke dalam beberapa paradigma.
1
Saya akan lupa tentang kategorinya - jika Anda benar-benar tertarik belajar dari suatu bahasa, saya sarankan Lisp dan Scala, jika Anda dapat menangani keduanya, Anda sudah membahas banyak hal.
Bill K
3
Saran Peter Norvig : Pelajari setidaknya setengah lusin bahasa pemrograman. Sertakan satu bahasa yang mendukung abstraksi kelas (seperti Java atau C ++), bahasa yang mendukung abstraksi fungsional (seperti Lisp atau ML), bahasa yang mendukung abstraksi sintaksis (seperti Lisp), bahasa yang mendukung spesifikasi deklaratif (seperti templat Prolog atau C ++), satu yang mendukung coroutine (seperti Icon atau Skema), dan yang mendukung paralelisme (seperti Sisal).
legends2k

Jawaban:

34

Meskipun terminologi masih jauh dari standar, cara yang umum untuk mengkategorikan paradigma pemrograman utama menjadi

  • Prosedural
  • Fungsional
  • Logis
  • Berorientasi pada objek
  • Umum

Anda sepertinya sudah tahu seperti apa pemrograman prosedural itu.

Dalam fungsional bahasa fungsi diperlakukan sebagai objek kelas. Dengan kata lain, Anda bisa meneruskan fungsi sebagai argumen ke fungsi lain, atau suatu fungsi dapat mengembalikan fungsi lainnya. Paradigma fungsional didasarkan pada kalkulus lambda, dan contoh bahasa fungsional adalah LISP, Skema, dan Haskel. Menariknya, JavaScript juga mendukung pemrograman fungsional.

Dalam pemrograman logis, Anda menentukan predikat yang menggambarkan hubungan antar entitas, seperti president(Obama, USA)atau president(Medvedev, Russia). Predikat ini bisa sangat rumit dan melibatkan variabel, bukan hanya nilai literal. Setelah Anda menentukan semua predikat Anda, Anda dapat mengajukan pertanyaan pada sistem Anda, dan mendapatkan jawaban yang konsisten secara logis.

Gagasan besar dalam pemrograman logis adalah bahwa alih-alih memberi tahu komputer bagaimana menghitung sesuatu, Anda mengatakannya apa saja. Contoh: PROLOG.

Berorientasi pada objekParadigma dalam beberapa hal merupakan perluasan dari pemrograman prosedural. Dalam pemrograman prosedural, Anda memiliki data, yang bisa berupa tipe primitif, seperti bilangan bulat dan float, tipe majemuk, seperti array atau daftar, dan tipe yang ditentukan pengguna, seperti struktur. Anda juga memiliki prosedur Anda, yang beroperasi pada data. Sebaliknya, dalam OO Anda memiliki objek, yang mencakup data dan prosedur. Ini memungkinkan Anda memiliki hal-hal baik seperti enkapsulasi, pewarisan, dan polimorfisme. Contoh: Smalltalk, C ++, Java, C #.

Pemrograman generik pertama kali diperkenalkan di Ada pada tahun 1983, dan menjadi luas setelah pengenalan template di C ++. Ini adalah gagasan bahwa Anda dapat menulis kode tanpa menentukan tipe data aktual yang dioperasikannya, dan minta kompilator mengetahuinya. Misalnya alih-alih menulis

void swap(int, int);
void swap(float, float);
....

kamu akan menulis

void swap(T, T);

sekali, dan minta kompilator membuat kode spesifik untuk apa pun yang Tmungkin, ketika swap()sebenarnya digunakan dalam kode.

Pemrograman umum didukung ke berbagai tingkatan oleh C ++, Java, dan C #.

Penting untuk dicatat bahwa banyak bahasa, seperti C ++, mendukung banyak paradigma. Juga benar bahwa bahkan ketika suatu bahasa dikatakan mendukung paradigma tertentu, ia mungkin tidak mendukung semua fitur paradigma itu. Belum lagi bahwa ada banyak ketidaksepakatan mengenai fitur yang diperlukan untuk paradigma tertentu.

Dima
sumber
2
Kategori mana yang akan dimasukkan ke dalam SQL?
Kirk Kuykendall
@KirkKuykendall SQL akan menjadi spesialis, atau "sedikit", bahasa.
Kevin Lacquement
17
SQL adalah bahasa Deklaratif. Anda mengatakan apa yang Anda inginkan, mencari cara mendapatkannya. ("Logical" bahasa seperti Prolog adalah bagian yang berbeda dari bahasa Deklaratif)
Izkata
3
Bisakah kita memiliki deskripsi prosedural, agar jawabannya lebih lengkap?
deworde
3
@Dima Ringkasan yang bagus. Namun, nitpick yang relatif kecil: "pemrograman generik" tidak muncul dari penggunaan templat di C ++, dan juga sangat sering digunakan dalam bahasa fungsional seperti Haskell.
Andres F.
11

Bahasa pemrograman memiliki sejumlah fitur yang sebagian besar ortogonal; yang paling menonjol terletak pada paradigma atau paradigma yang mereka dukung. The artikel wikipedia mencakup paradigma mendalam; paradigma yang paling penting mungkin adalah ini:

  • Prosedural / terstruktur
  • Fungsional
  • Berorientasi pada objek
  • Didorong oleh Acara dan Berorientasi Aspek
  • Umum
  • Logika

Tetapi bahasa juga berbeda dalam beberapa hal:

  • Sistem pengetikan (pengetikan dinamis vs statis, dan tipe kuat vs lemah)
  • Membangun proses dan lingkungan runtime (ditafsirkan, bytecode-dikompilasi, dikompilasi sepenuhnya)
  • Manajemen memori (manual seperti C / C ++, pengumpulan sampah otomatis wajib seperti Java, GC opsional seperti D, ...)
  • Disiplin evaluasi (bersemangat vs malas; kebanyakan bahasa ingin sekali secara default, tetapi banyak yang menyediakan konstruksi malas)
  • Aturan pelingkupan (bandingkan cara lingkup bekerja di PHP, Javascript dan C, tiga bahasa yang sebaliknya sangat mirip dalam hal sintaksis)
tammmer
sumber
2

Ada beberapa paradigma pemrograman yang berbeda yang saat ini sedang populer:

  • Berorientasi Objek - VB.NET, C #, Java termasuk dalam kategori ini. Kode diatur di sekitar objek yang memiliki perilaku dan data terkait dan yang berkomunikasi satu sama lain dengan mengirimkan pesan.
  • Fungsional - Haskel, Skema, Lisp dan F # termasuk dalam kategori ini. Fungsi murni yang tidak memiliki efek samping. Pikirkan fungsi seperti dalam matematika. Seringkali seseorang dapat memperluas bahasa itu sendiri melalui konstruknya.
Oded
sumber
Apakah ini satu-satunya jenis lainnya?
Dinamis
@ perl.j - Tidak, tetapi ini adalah yang utama yang melihat penyebaran luas digunakan hari ini. Lihat wikipedia - paradigma pemrograman .
Oded
@ perl.j ada juga yang berbasis Stack: seperti Forth dan Postscript. Logika: seperti Prolog.
Jetti
2
Dan tipe nol adalah C;)
yati sagade
Pertanyaan sebenarnya adalah berapa banyak dev ini perlu kode efektif sebagian besar masalah pemrograman.
JeffO
0

Prolog adalah bahasa pemrograman logika dan relatif mudah untuk memulai. Ini membutuhkan pemikiran yang sama sekali berbeda dari pemrograman prosedural karena itu baik untuk mengeksplorasi ketika Anda mencoba untuk meregangkan otak Anda.

Jika Anda kuliah, Anda harus mengambil kursus Bahasa Pemrograman karena ditujukan untuk memperkenalkan berbagai jenis bahasa pemrograman dan apa yang paling baik digunakan untuk mereka.

c_maker
sumber
0

Sebagian besar bahasa arus utama mencampur aspek pemrograman imperatif, fungsional, dan deklaratif. Bahasa ceruk cenderung lebih eksotis atau memperkenalkan ide-ide baru yang menarik, karena satu dan lain alasan, tidak cocok untuk pemrograman tujuan umum. Beberapa, tidak berarti lengkap, contoh:

  • Bahasa Spreadsheet (Excel, Formulir Google): Dirancang untuk menangani data tabel.
  • Bahasa Array (APL, J): Dirancang untuk memproses array multi-dimensi dengan cepat. Di J,(+/ % #)&.:*: hitung RMS suatu array. Terkenal karena ringkas, terkenal karena tidak dapat dibaca.
  • Bahasa Otomatisasi (AutoHotkey, Bash): Dirancang untuk merampingkan tugas-tugas umum, seperti mengisi formulir, mengunggah file, dll.
Hovercouch
sumber