Alan Kay, pencipta OOP, tentang pembangunan, Lisp dan OOP

Alan Kay, pencipta OOP, tentang pembangunan, Lisp dan OOP

Jika anda tidak pernah mendengar tentang Alan Kay, anda sekurang-kurangnya pernah mendengar petikan terkenal beliau. Sebagai contoh, petikan ini dari 1971:

Cara terbaik untuk meramal masa depan ialah menciptanya.
Cara terbaik untuk meramal masa depan ialah menciptanya.

Alan mempunyai kerjaya yang sangat berwarna dalam sains komputer. Dia menerima Hadiah Kyoto ΠΈ Anugerah Turing untuk kerjanya mengenai paradigma pengaturcaraan berorientasikan objek. Beliau adalah salah seorang perintis dalam bidang komputer peribadi dan antara muka grafik, yang dibangunkannya Ceramah kecil adalah salah satu bahasa pengaturcaraan paling berpengaruh yang pertama sepanjang zaman.

Dalam kami Hexlete, terutamanya dalam berbual, soalan "apa itu OOP" dan "apa maksud sebenarnya Alan Kay" sentiasa dibangkitkan. Siaran ini mengandungi petikan menarik daripada Alan tentang keadaan pembangunan moden, OOP dan bahasa Lisp.

Mengenai pembangunan perisian

Alan Kay percaya bahawa revolusi komputer akan datang (Revolusi Komputer Sebenar Belum Berlaku Lagi), dan pembangunan perisian berkembang dalam perkadaran songsang dengan Undang-undang Moore: perkakasan bertambah baik setiap tahun, tetapi perisian menjadi kembung tidak perlu:

masalahnya lemah, idea dan alat yang tidak boleh skala, malas, kurang pengetahuan, dsb.

Menggambarkan keadaan ini dengan baik lawak pendek:

Apa yang Andy berikan, Bill ambil
Andy memberi, Bill mengambil

Andy Grove, Ketua Pegawai Eksekutif Intel, dan Bill Gates, kemudian Ketua Pegawai Eksekutif Microsoft.

Memperbaik keadaan semasa pembangunan adalah matlamat projek penyelidikan LANGKAH Ke Arah Penciptaan Semula Pengaturcaraan (pdf). Matlamatnya adalah untuk mencapai "Undang-undang Moore" dalam ekspresif dengan "mengurangkan jumlah kod yang diperlukan sebanyak 100, 1000, 10000 kali atau lebih."

Dalam laporannya yang membuka mata Pengaturcaraan dan Penskalaan (video) Topik ini dibincangkan dengan lebih terperinci. Menurut Alan, kejuruteraan perisian telah terhenti dan menjadi sains yang dilupakan yang tidak dapat bersaing dengan perkakasan dan sains dan disiplin kejuruteraan lain. Projek besar telah menjadi tempat pembuangan kod dan telah mencapai tahap di mana tiada siapa tidak dapat memahami 100 juta baris kod MS Vista atau MS Word. Tetapi pada hakikatnya, perlu ada susunan magnitud yang kurang kod dalam projek sedemikian.

Alan menganggap Internet, protokol TCP/IP, penterjemah LISP, Nil (DSL Matematik untuk Grafik Vektor) dan OMeta (OO PEG) (PDF) contoh perisian elegan dengan kod minimum.

Dia memanggil Internet (TCP/IP) sebagai salah satu daripada beberapa projek perisian berskala besar yang direka dengan betul, dan tahap kerumitannya adalah seimbang dengan tahap kerumitan (komplikasi vs. kerumitan). Dengan kurang daripada 20 baris kod, projek itu beroperasi sebagai sistem yang hidup dan dinamik yang mampu menyokong berbilion-bilion nod, dan tidak pernah pergi ke luar talian sejak pelancaran awalnya pada September 1969. Kami hanya berhenti menganggap Internet sebagai projek perisian biasa yang dibuat oleh orang:

Internet dibangunkan dengan begitu baik sehingga ramai orang menganggapnya sebagai sumber semula jadi, seperti Lautan Pasifik, dan bukannya hasil kerja manusia. Bilakah kali terakhir kita melihat teknologi yang stabil, jelas dan bebas ralat? Sebagai perbandingan, Web adalah karut. Web dicipta oleh amatur.

Mengenai pengaturcaraan berorientasikan objek

Perkara pertama yang menarik minat saya ialah dia asal Penglihatan OOP. Pengalamannya dalam mikrobiologi memainkan peranan penting:

Saya menganggap objek seperti sel biologi, dan/atau komputer individu pada rangkaian yang hanya boleh berkomunikasi melalui mesej.

dan pengalaman dalam matematik:

Pengalaman saya dalam matematik menyedarkan saya bahawa setiap objek boleh mempunyai beberapa algebra, ia boleh digabungkan menjadi keluarga, dan ini boleh menjadi sangat berguna.

Idea untuk pengikatan lewat dan ciri meta berkuasa LISPa:

Fasa kedua ialah memahami LISPa dan menggunakan pemahaman itu untuk mencipta struktur yang lebih mudah, lebih kecil, lebih berkuasa dan mengikat kemudian.

Dan tidak lama kemudian Alan mula menyokong idea bahawa bahasa dinamik adalah masa depan pembangunan perisian (pdf). Khususnya, kemudahan perubahan adalah penting baginya:

Pengikatan lewat membenarkan idea yang datang kemudian dalam proses pembangunan untuk dimasukkan ke dalam projek dengan usaha yang kurang (berbanding dengan sistem terikat sebelumnya seperti C, C++, Java, dll.)

Dan potensi untuk perubahan dengan cepat dan lelaran yang lebih pantas:

Salah satu idea utama ialah sistem harus terus berfungsi semasa ujian, terutamanya semasa perubahan sedang dibuat. Malah perubahan besar haruslah beransur-ansur dan mengambil masa tidak lebih daripada sepersekian saat.

yang hilang dalam bahasa yang ditaip secara statik:

Jika anda menggunakan bahasa yang mengikat awal, seperti kebanyakan orang, maka anda mengunci diri anda dengan apa yang telah anda tulis. Ia tidak mungkin lagi untuk merumuskannya dengan mudah.

Yang menghairankan, pemikirannya tentang OOP terhad kepada perkara ini:

OOP bagi saya ialah mesej, pegangan dan perlindungan setempat, nyatakan persembunyian dan pengikatan lewat segala-galanya. Ini boleh dilakukan dalam Smalltalk dan dalam LISP.

Dan tiada apa-apa tentang warisan. Ini bukan OOP yang kita tahu hari ini:

Saya harap saya telah lama menggunakan istilah "objek" untuk topik ini kerana ia menyebabkan ramai orang menumpukan pada idea yang kurang.

Idea besar yang kekurangan bahasa OO taip statik moden:

Idea besar ialah "mesej"

Dia percaya dalam memfokuskan pada mesej, gandingan longgar dan interaksi modul dan bukannya pada dalaman objek:

Kunci untuk mencipta sistem berskala yang baik ialah mengusahakan mekanisme komunikasi antara modul, dan tidak menggunakan sifat dan tingkah laku dalaman mereka.

Bahasa yang ditaip secara statik nampaknya rosak:

Saya tidak menentang jenis, tetapi saya tidak tahu mana-mana jenis sistem yang tidak menyebabkan kesakitan. Jadi saya masih suka menaip dinamik.

Beberapa bahasa popular hari ini menggunakan idea menghantar mesej Smalltalk, pengikatan lewat, dan tidak memahamike hadapanInvocation Π² Objektif-Ckaedah_tiada Π² Ruby ΠΈ noSuchMethod dalam Google Dart.

Musnahkan segala-galanya dan cipta sesuatu yang lebih baik

Alan mempunyai teori yang menarik tentang perkembangan sains komputer:

Nampaknya saya hanya ada satu jenis sains komputer, dan sains itu seperti membina jambatan. Seseorang membina jambatan, dan seseorang memusnahkannya dan mencipta teori baharu. Dan kita perlu terus membina jambatan.

Mengenai LISP

Alan Kay percaya Lisp

bahasa pengaturcaraan terbaik sepanjang masa

Dan setiap graduan sains komputer harus mempelajarinya:

Kebanyakan orang yang mengikuti ijazah dalam CS tidak memahami kepentingan Lisp. Lisp adalah idea yang paling penting dalam sains komputer.

Mengenai suasana dan konteks yang betul

Dia sering mengimbas kembali suasana unik di dalam TAMAN Xerox ΠΈ Harp, di mana "penglihatan lebih penting daripada matlamat" dan "membiayai orang, bukan projek."

Sudut pandangan bernilai 80 mata IQ.

Alan Kay berkata:

Kisah ARPA/PARC menunjukkan bagaimana gabungan visi, pembiayaan sederhana, konteks dan proses yang betul boleh melahirkan teknologi baharu secara ajaib yang bukan sahaja memberi kesan kepada tamadun tetapi juga mencipta nilai yang sangat besar untuk masyarakat.

Dan memang benar. Lihat senarai ciptaan PARC yang mengagumkan, kebanyakannya memainkan peranan yang sangat penting dalam pembangunan dunia kita. Sebagai contoh:

  • Pencetak laser
  • Pengaturcaraan Berorientasikan Objek / Smalltalk
  • Komputer peribadi
  • Ethernet / pengkomputeran teragih
  • GUI / tetikus komputer / WYSIWYG

Dan dalam Harp dicipta ARPANET, yang menjadi leluhur Internet.

PS Alan Kay menjawab soalan daripada komuniti Hacker News.

Sumber: www.habr.com

Tambah komen