Apa yang mereka sebut Pemrograman Berorientasi Objek sebelum Alan Kay menciptakan istilah?


22

Alan Kay mengklaim bahwa "Saya mengarang istilah" berorientasi objek ", dan saya dapat memberitahu Anda bahwa saya tidak memiliki C ++ dalam pikiran." Apa yang ada dalam benaknya, tentu saja, adalah Smalltalk. Tapi dia tidak membuat pemrograman berorientasi objek itu sendiri; dia mendapat ide dasar dari Simula. Jadi jika istilah itu belum ditemukan, apa yang mereka sebut pemrograman berorientasi objek di Simula?

Jawaban:


39

Sebenarnya Alan Kay tidak memiliki Smalltalk dalam pikiran ketika ia datang dengan istilah "pemrograman berorientasi objek":

Di Utah beberapa saat setelah 66 November ketika, dipengaruhi oleh Sketchpad, Simula, desain untuk ARPAnet, Burroughs B5000, dan latar belakang saya di Biologi dan Matematika, saya memikirkan arsitektur untuk pemrograman. Itu mungkin pada tahun 1967 ketika seseorang bertanya kepada saya apa yang saya lakukan, dan saya berkata: "Ini pemrograman berorientasi objek".

Konsepsi orisinilnya memiliki bagian-bagian berikut.

  • Saya memikirkan objek yang seperti sel biologis dan / atau komputer individu di jaringan, hanya dapat berkomunikasi dengan pesan (jadi pesan datang di awal - butuh beberapa saat untuk melihat bagaimana melakukan olahpesan dalam bahasa pemrograman dengan cukup efisien untuk menjadi berguna).
  • Saya ingin menyingkirkan data. B5000 hampir melakukan ini melalui arsitektur HW yang hampir tidak dapat dipercaya. Saya menyadari bahwa metafora sel / seluruh komputer akan menghilangkan data, dan bahwa "<-" akan menjadi token pesan lain (butuh beberapa saat untuk memikirkan hal ini karena saya benar-benar menganggap semua simbol ini sebagai nama untuk fungsi dan prosedur.
  • Latar belakang matematika saya membuat saya menyadari bahwa setiap objek dapat memiliki beberapa aljabar yang terkait dengannya, dan mungkin ada keluarga ini, dan bahwa ini akan sangat berguna. Istilah "polimorfisme" diberlakukan jauh kemudian (saya pikir oleh Peter Wegner) dan itu tidak cukup valid, karena itu benar-benar berasal dari nomenklatur fungsi, dan saya ingin sedikit lebih dari fungsi. Saya membuat istilah "kedermawanan" untuk berurusan dengan perilaku generik dalam bentuk semi-aljabar.
  • Saya tidak suka cara Simula I atau Simula 67 mewarisi (meskipun saya pikir Nygaard dan Dahl hanya pemikir dan desainer yang luar biasa). Jadi saya memutuskan untuk meninggalkan warisan sebagai fitur bawaan sampai saya memahaminya dengan lebih baik.

Smalltalk adalah hasil dari konsepsi ini, meminjam dan memperluas konsep "objek" dan "kelas" dari Simula, yang pada gilirannya diwariskan oleh Simula dari ALGOL, seperti yang dijelaskan pada "Perkembangan bahasa Simula" oleh Kristen Nygaard dan Ole-Johan Dahl (1978, halaman 253):

Dalam ALGOL, blok (termasuk prosedur) dilihat secara eksternal sebagai operasi umum. Dengan memperkenalkan mekanisme pengurutan kuasi-paralel, ~ pada dasarnya konstruk yang sama dapat memainkan peran proses secara paralel, dan melalui mekanisme penamaan contoh blok dan mengakses isinya mereka dapat berfungsi sebagai objek data umum. Manfaat penting dari penggabungan data dan operasi dalam satu konstruksi sudah ada untuk dieksplorasi.

Salah satu hasil dari eksplorasi ini adalah penemuan bahwa "atribut prosedur" mungkin berguna. Contoh berikut dari kelas objek mobil "abstrak" dikutip dari dokumen Definisi Bahasa (Dahl dan Nygaard 1965), sekte. 5.3.

Inspirasi lebih lanjut, terutama untuk sub-kelas, adalah kelas rekaman CAR Hoare (halaman 258):

Gagasan subclass Hoare (68) adalah titik awal yang alami, tetapi ada dua kesulitan:

  1. Kami membutuhkan subkelas proses dengan tindakan sendiri dan tumpukan data lokal, tidak hanya catatan data murni.
  2. Kami juga perlu mengelompokkan bersama properti proses umum sedemikian rupa sehingga dapat diterapkan nanti, dalam berbagai situasi yang berbeda yang belum tentu diketahui sebelumnya.

Banyak waktu yang dihabiskan selama musim gugur 1966 dalam mencoba mengadaptasi konstruksi kelas rekaman Hoare untuk memenuhi persyaratan kami, tanpa hasil. Solusinya datang tiba-tiba, dengan ide "awalan", pada bulan Desember 1966. Kami berpikir dalam hal bilik atol di jembatan, dengan antrian mobil yang baik truk atau bus. (Contoh ini muncul kembali dalam (Dahl dan Nygaard 1968)).

Istilah "kelas" dan "objek" juga muncul di SIMULA 67 LANGKAH DASAR UMUM oleh Ole-Johan Dahl, Bjorm Myhrhaug, dan Kristen Nygaard (halaman 4-5):

Konsep blok sesuai dengan gagasan intuitif "sub-masalah" atau "sub-algoritma" yang merupakan unit dekomposisi yang berguna di area aplikasi ortodoks.

Blok adalah deskripsi formal, atau "pola" dari struktur data agregat dan dan algoritma serta tindakan terkait.

...

Konsep blok diperluas diperkenalkan melalui deklarasi "kelas" dan mekanisme interaksi yang terkait seperti "referensi objek" (pointer), akses remote "," "operasi paralel-paralel", dan blok "gabungan".

Kelas dibahas secara lebih rinci dalam bab 1.3.3 (halaman 5):

Konsep sentral baru dalam Simula 67 adalah "objek". Objek adalah program mandiri (blok contoh), yang memiliki data lokal dan tindakan yang didefinisikan oleh "deklarasi kelas". Deklarasi kelas mendefinisikan pola program (data dan tindakan), dan objek yang sesuai dengan pola tersebut dikatakan "milik kelas yang sama".

...

Jadi, meskipun istilah "berorientasi objek" belum ditemukan, baik "kelas" dan "objek" digunakan mirip dengan penggunaan modern mereka sebelum Alan Kay mulai mengembangkan Smalltalk pada tahun 1969.

Ivan Sutherland lebih jauh mengidentifikasi Simula sebagai bahasa pemrograman berorientasi objek pertama, di Sketchpad: Sistem komunikasi grafis manusia-mesin (halaman 4), juga mengenali CAR Hoare's, Douglas T. Ross ' , pengaruh ALGOL dan Sketchpad:

Namun demikian, upaya Sutherland untuk menghapus pembagian antara pengguna dan programmer bukan satu-satunya sistem yang, jika gagal melakukannya, memberikan lompatan imajinatif ke paradigma pemrograman baru. Nygaard dan Dahl's Simula [7] adalah bahasa pemrograman konvensional pertama yang menggabungkan prinsip-prinsip orientasi objek, tetapi implementasi Sketchpad tentang kelas dan pewarisan berbasis instance (meskipun tidak disebut objek) mendahului Simula beberapa tahun.

Tampaknya ada pengaruh yang sama melalui karya Douglas T. Ross, yang disebutkan dalam pengakuan disertasi ini dan juga dikutip dalam laporan teknis MIT Lincoln Laboratory berdasarkan itu. Ross duduk di komite Algol 68 dengan CAR Hoare pada pertengahan 1960-an, di mana pekerjaan sebelumnya pada struktur data seperti catatan (disebut plex) memengaruhi gagasan Hoare sendiri pada tipe data abstrak [3], yang kemudian dikreditkan oleh Nygaard dan Dahl sebagai asal mula mekanisme definisi kelas dalam Simula [7].

Proyek Dynabook seminal Alan Kay, yang mengarah ke Xerox Star dan ledakan minat dalam pemrograman berorientasi objek melalui bahasa Smalltalk, secara langsung dipengaruhi oleh Sketchpad. Kay telah menulis fakta bahwa asal-usul Smalltalk terletak pada penampilan yang kebetulan di atas mejanya, baik pita distribusi Simula maupun salinan tesis Sketchpad Sutherland [5]. Kay mengakui bahwa kedua sistem tersebut didasarkan pada konsep tipe yang mendasari yang sama (tampaknya diturunkan melalui dua rute berbeda dari plex Ross), dan bahwa ini dapat membentuk dasar dari sistem pemrograman yang dapat digunakan secara lebih luas. Dalam membandingkan dua rute pengaruh ini, Simula adalah proyek yang jauh lebih besar daripada Sketchpad, yang diakui sebagai bahasa pemrograman berorientasi objek pertama,

Namun, Alan Kay, menganggap Smalltalk sebagai bahasa berorientasi objek pertama :

Meskipun memang memiliki leluhur yang mulia, kontribusi Smalltalk adalah paradigma desain baru - yang saya sebut berorientasi objek - untuk menyerang masalah besar programmer profesional, dan membuat yang kecil menjadi mungkin bagi pengguna pemula. Desain berorientasi objek adalah upaya yang berhasil untuk secara kualitatif meningkatkan efisiensi pemodelan sistem dinamis yang semakin kompleks dan hubungan pengguna yang dimungkinkan oleh ledakan silikon.

dan setelah menciptakan istilah, saya pikir tidak ada banyak perdebatan di sana.

Untuk akhirnya menjawab pertanyaan Anda: Beberapa konsep inti dari orientasi objek memang ada pada Simula, dan pada bahasa-bahasa sebelumnya seperti Algol dan LISP, tetapi paradigma itu sendiri tidak, oleh karena itu sebenarnya tidak diperlukan nama.

Smalltalk dirancang dengan orientasi objek dalam pikiran, setidaknya apa yang dipikirkan Alan Kay sebagai orientasi objek :

OOP bagi saya hanya berarti pengiriman pesan, penyimpanan lokal dan perlindungan dan menyembunyikan proses negara, dan sangat mengikat semua hal. Ini dapat dilakukan di Smalltalk dan di LISP. Mungkin ada sistem lain di mana ini mungkin, tapi saya tidak menyadarinya.

Arsitektur mungkin tampak seperti penggabungan konsep-konsep sebelumnya, tetapi konsep sentralnya diperkenalkan oleh Smalltalk, sehingga menandai implementasi pertama dari paradigma.


2
+1 Seperti biasa, jawab Yannis dengan sangat baik! Saya belajar cukup banyak dari ini.
Jonathan Henson

6
Sebenarnya, ada banyak perdebatan, dan alasan bagus untuk itu. Meskipun Alan Kay mengklaim "paradigma baru" yang dikembangkan sendiri, hampir tidak ada cara untuk mendefinisikan "berorientasi objek" yang mencakup Smalltalk tetapi tidak termasuk Simula. Gagasan "semuanya adalah objek" ada di sana dalam beberapa implementasi (dan sebagian besar juga merupakan konsep di Smalltalk - sebagai pengoptimalan, objek integer kecil memiliki representasi yang tidak dapat dibedakan dari apa yang akan digunakan oleh sesuatu seperti C atau Pascal).
Jerry Coffin

1
@JerryCoffin Saya tidak setuju bahwa sebagian besar konsep dan prinsip ada di sana, tidak ada yang baru di bawah matahari, pada The Early History of Smalltalk Kay bahkan menyebut Plato sebagai inspirasi untuk orientasi objek, di antara banyak pengaruh lainnya. Secara pribadi saya akan terus berpikir Smalltalk sebagai telah memperkenalkan paradigma, karena itu implementasi pertama yang dirancang dengan paradigma dalam pikiran, sedangkan pada implementasi sebelumnya konsep terkait di mana fitur, inti atau minor, tetapi bukan filosofi mengemudi yang membawa sebagainya bahasa.
yannis

1
@ JerryCoffin (lanjutan ...) Namun itu adalah wilayah perang api, dan saya benar-benar tidak berpikir itu penting. Saya pikir kutipan Sutherland yang saya sertakan secara memadai menyajikan fakta bahwa tidak semua orang setuju bahwa Kay "menciptakan" paradigma, dan pendapat pribadi saya tentang masalah ini tidak lebih dari catatan kaki.
yannis

5
Sebenarnya, konsep sentralnya bukan "setiap entitas adalah objek" melainkan "setiap tindakan adalah pesan yang dikirim". Alan Kay bahkan mengatakan bahwa dia menyesal menyebutnya "berorientasi objek" dan bahwa sesuatu seperti "berorientasi pesan" akan menjadi istilah yang lebih baik.
Jörg W Mittag
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.