Lisp Kutukan

oleh Rudolf Winestock

Esai ini adalah upaya lain untuk mendamaikan kekuatan bahasa pemrograman Lisp dengan ketidakmampuan masyarakat Lisp untuk mereproduksi mereka pra- AI Musim Dingin medali. Tanpa ragu, Lisp telah menjadi sumber berpengaruh ide bahkan selama waktu mundur. Fakta itu, ditambah kecemerlangan yang berbeda Lisp Machine arsitektur, dan kebangkitan Lisp saat ini setelah lebih dari satu dekade di padang gurun menunjukkan bahwa partisan Lisp harus memiliki beberapa pembenaran untuk puas diri mereka. Namun demikian, mereka belum mampu menerjemahkan kekuatan Lisp menjadi gerakan dengan momentum kuat.

Dalam esai ini, saya berpendapat bahwa kekuatan ekspresif Lisp adalah sebenarnya penyebab kurangnya momentum.

Kekuatan Lisp adalah musuh terburuk sendiri.

Berikut adalah eksperimen pikiran untuk membuktikannya: Ambil dua bahasa pemrograman, tak satu pun dari yang berorientasi objek. Misi Anda, jika Anda memilih untuk menerimanya, adalah untuk membuat mereka berorientasi obyek, menjaga mereka mundur-kompatibel dengan bahasa aslinya, modulo beberapa kasus tepi. Memasukkan sepasang salah satu bahasa pemrograman dalam eksperimen pikiran ini akan menunjukkan bahwa ini lebih mudah dengan beberapa bahasa dibandingkan dengan orang lain. Itulah titik eksperimen pikiran. Berikut adalah contoh sepele: Intercal dan Pascal.

Sekarang membuat pikiran ini bereksperimen menarik: Bayangkan menambahkan orientasi objek ke bahasa pemrograman C dan Scheme. Membuat Skema berorientasi objek adalah tugas sophomore pekerjaan rumah. Di sisi lain, menambahkan orientasi objek ke C membutuhkan daging pemrograman Bjarne Stroustrup.

Konsekuensi dari perbedaan ini dalam bakat dibutuhkan dan usaha penyebab yang Lisp Kutukan :

Cadel begitu kuat sehingga masalah yang masalah teknis di bahasa pemrograman lain adalah isu-isu sosial di cadel.


Pertimbangkan kasus Skema, lagi. Sejak membuat Skema berorientasi objek sangat mudah, banyak hacker Skema telah melakukannya. Lebih tepatnya, banyak individu hacker Skema telah melakukannya. Pada 1990-an, hal ini menyebabkan sebuah gudang daftar inventaris yang sesungguhnya dari paket berorientasi objek untuk bahasa. The Paradox of Choice , saja, dijamin bahwa tidak satupun dari mereka akan menjadi standar. Sekarang beberapa implementasi Skema memiliki fasilitas orientasi objek mereka sendiri, itu tidak begitu buruk. Namun demikian, fakta bahwa banyak dari paket ini merupakan hasil karya individu tunggal menyebabkan masalah yang Olin Shivers menulis tentang dalam mendokumentasikan Skema Shell, scsh.

Program yang ditulis oleh hacker individu cenderung mengikuti model awal-an-gatal. Program-program ini akan memecahkan masalah bahwa hacker, dirinya, adalah memiliki tanpa harus menangani bagian terkait masalah yang akan membuat program lebih berguna untuk orang lain. Selanjutnya, program ini yakin untuk bekerja pada setup yang tunggal hacker sendiri, tetapi mungkin tidak portabel untuk implementasi Skema lain atau untuk pelaksanaan Skema yang sama pada platform lainnya. Dokumentasi mungkin kurang. Menjadi dasarnya proyek dilakukan dalam waktu luang hacker berlebihan, program ini adalah tanggung jawab menderita harus tanggung jawab kehidupan nyata mengganggu hacker. Sebagai Olin Shivers dicatat, ini berarti bahwa proyek one-man-band ini cenderung untuk memecahkan delapan puluh persen dari masalah.

Esai Dr Mark Tarver ini, The Bipolar Lisp Programmer , memiliki deskripsi yang tepat dari fenomena ini. Dia menulis ini lone-wolf hacker Lisp dan mereka

... ketidakmampuan untuk menyelesaikan hal-hal dengan benar. Ungkapan 'membuang-jauhnya desain' yang benar-benar dibuat untuk BBM dan itu berasal dari masyarakat Lisp. Cadel memungkinkan Anda untuk hanya membuang hal-hal begitu mudah, dan sangat mudah untuk mengambil ini untuk diberikan. Saya melihat ini 10 tahun yang lalu ketika mencari GUI untuk Lisp saya. Tidak masalah, ada 9 korban yang berbeda. Masalahnya adalah bahwa tak satu pun dari 9 yang didokumentasikan dan tidak ada yang bug gratis. Pada dasarnya setiap orang telah menerapkan solusi sendiri dan bekerja untuk dia sehingga baik-baik saja. Ini adalah BBM sikap; bekerja untuk saya dan saya memahaminya. Itu juga merupakan produk tidak membutuhkan atau ingin bantuan orang lain untuk melakukan sesuatu.


Sekali lagi, pertimbangkan bahasa pemrograman C dalam pemikiran eksperimen. Karena sulitnya membuat C berorientasi objek, hanya dua upaya serius pada masalah telah membuat setiap traksi: C ++ dan Objective-C. Objective-C adalah yang paling populer di Macintosh, sementara C ++ aturan di tempat lain. Itu berarti bahwa, untuk platform tertentu, pertanyaan yang ekstensi berorientasi objek dari C untuk menggunakan telah dijawab secara definitif. Itu berarti bahwa fasilitas objek-berorientasi untuk bahasa mereka telah didokumentasikan, bahwa lingkungan pengembangan terintegrasi sadar mereka, bahwa perpustakaan kode yang kompatibel dengan mereka, dan sebagainya.

esai Dr Mark Tarver pada Lispers bipolar membuat titik:

Sekarang sebaliknya, pendekatan C / C ++ sangat berbeda. Ini sangat sialan sulit untuk melakukan apa saja dengan pinset dan lem bahwa apa pun yang signifikan Anda lakukan akan menjadi prestasi nyata. Anda ingin dokumen itu. Juga Anda bertanggung jawab untuk memerlukan bantuan dalam proyek C dari ukuran yang signifikan; sehingga Anda bertanggung jawab untuk menjadi sosial dan bekerja dengan orang lain. Anda perlu, hanya untuk mendapatkan suatu tempat.

Dan semua itu, dari sudut pandang majikan, menarik. Sepuluh orang yang berkomunikasi, hal dokumen dengan benar dan bekerja sama lebih baik dari pada satu BBM peretasan Lisp yang hanya dapat digantikan oleh yang lain BBM (jika Anda dapat menemukan satu) dalam hal tidak mungkin bahwa ia akan, pada beberapa waktu, turun tanpa rebootable.

Oleh karena itu, orang-orang yang sudah tahu C tidak bertanya "Apa sistem objek yang harus saya pelajari?" Sebaliknya, mereka menggunakan C ++ atau Objective-C, tergantung pada apa yang rekan-rekan mereka gunakan, kemudian beralih ke "Bagaimana cara menggunakan object-oriented fitur X ?" Jawaban: "Goog dan kamu akan menemukan."


Hacker nyata, tentu saja, telah lama mengetahui bahwa pemrograman berorientasi obyek bukanlah obat mujarab yang partisan yang telah diklaim. Hacker nyata telah pindah ke konsep yang lebih canggih seperti struktur berubah data, jenis Inferencing, malas evaluasi, monad, panah, pencocokan pola, pemrograman berbasis kendala, dan sebagainya. Hacker Real juga telah dikenal, untuk sementara, bahwa C dan C ++ yang tidak sesuai untuk sebagian besar program yang tidak perlu melakukan sewenang-wenang bit-mengutak-atik. Namun demikian, Lisp Kutukan masih memegang.

Beberapa Lisp pecinta puas telah disurvei tanaman saat bahasa akademik (Haskell, Ocaml, dan lain-lain) dan menemukan mereka ingin, mengatakan bahwa fitur dari mereka adalah baik yang sudah hadir di Lisp atau dapat dengan mudah diimplementasikan - dan diperbaiki - dengan Lisp macro. Mereka mungkin benar.

Kasihan para hacker Lisp.


Dr Mark Tarver - dua kali dikutip, di atas - menulis dialek Lisp yang disebut Qi . Hal ini kurang dari sepuluh ribu baris macro berjalan di atas CLISP. Menerapkan sebagian besar fitur unik dari Haskell dan OCaml. Dalam beberapa hal, Qi melebihi mereka. Misalnya, jenis mesin inferensia Qi adalah Turing lengkap . Dalam dunia di mana tim dari akademisi berbakat yang diperlukan untuk menulis Haskell, satu orang, Dr. Tarver menulis Qi semua oleh kesepian nya.

Membaca bahwa ayat, lagi, dan ekstrapolasi.


Latihan bagi pembaca : Bayangkan bahwa persaingan yang kuat berkembang antara Haskell dan Common Lisp. Apa yang terjadi selanjutnya?

Jawaban : The Lisp Kutukan tendangan Setiap hacker Lisp serius kedua atau ketiga akan menggelar pelaksanaan sendiri evaluasi malas, kemurnian fungsional, panah, pencocokan pola, jenis inferencing, dan sisanya.. Sebagian besar proyek-proyek ini akan operasi tunggal-serigala. Dengan demikian, mereka akan memiliki delapan puluh persen dari fitur yang kebanyakan orang perlu (a delapan puluh persen berbeda dalam setiap kasus). Mereka akan kurang didokumentasikan. Mereka tidak akan portabel di sistem Lisp. Beberapa akan menunjukkan janji besar sebelum ditinggalkan sementara maintainer proyek pergi untuk membayar tagihan. Beberapa akan mengalahkan Haskell bersama ini atau dimensi yang (sekali lagi, yang berbeda dalam setiap kasus), tapi penerimaan mereka akan terhambat oleh api peperangan di grup Usenet comp.lang.lisp.

Endgame : koleksi A random tua-waktu Lisp hacker macro akan menambahkan hingga tak tercatat, unportable, pelaksanaan bug-sarat 80% dari Haskell karena Lisp lebih kuat dari Haskell.


Moral dari cerita ini adalah bahwa efek sekunder dan tersier peduli . Teknologi tidak hanya mempengaruhi apa yang dapat kita lakukan sehubungan dengan masalah teknologi, juga mempengaruhi perilaku sosial kita. Perilaku sosial ini dapat loop kembali dan mempengaruhi isu-isu teknologi asli sedang dipertimbangkan.

Cadel adalah contoh menyakitkan fasih pelajaran ini. Cadel begitu kuat, yang mendorong kemandirian individu ke titik berdarah-pikiran. kemerdekaan ini telah menghasilkan inovasi memukau baik seperti pada mesin hari Lisp. kemerdekaan yang sama ini juga menghambat upaya-upaya untuk menghidupkan kembali "Lisp semua jalan ke bawah" sistem lama; tidak ada "Lisp OS" proyek telah mengumpulkan massa kritis sejak runtuhnya Symbolics dan LMI.

Salah satu hasil dari efek sekunder dan tersier adalah bahwa, bahkan jika Lisp adalah bahasa yang paling ekspresif yang pernah, sehingga secara teori tidak mungkin untuk membuat bahasa yang lebih ekspresif, Lispers masih akan memiliki hal-hal untuk belajar dari bahasa pemrograman lain . The Smalltalk orang diajarkan semua orang - termasuk hacker Lisp - satu atau dua hal tentang pemrograman berorientasi objek. The Clean bahasa pemrograman dan Mozart / Oz combo mungkin memiliki beberapa kejutan dari mereka sendiri.


Lisp Kutukan tidak bertentangan dengan pepatah dari Stanislav Datskovskiy : Pengusaha lebih memilih bahwa para pekerja menjadi sepadan, bukan maksimal produktif. Terlalu benar. Dengan susah payah tidak ada orang diduga, makan sogok dari kelas manajerial. Namun, baris terakhir dari esainya yang bermasalah. Yakni:

Adapun dunia "perangkat lunak bebas", penuh semangat menentang dogma industri dalam retorika tapi sama sekali tidak dalam praktek. Tidak ada konsep dijauhi oleh neraka kubus pertanian yang pernah memperoleh traksi nyata antara massa amatir.

Dalam catatan kaki, ia menawarkan Linux sebagai contoh dari keengganan ini untuk mengejar ide-ide yang berbeda. Yang pasti, ia memiliki titik ketika datang ke sistem operasi (komentar paling atas, khususnya, adalah infuriatingly tumpul). Dia tidak memiliki titik ketika datang ke bahasa pemrograman. Python dan Ruby dipengaruhi oleh Lisp. Banyak dari fans mereka mengungkapkan rasa hormat untuk Lisp dan beberapa minat mereka telah ditambah dengan Lisp renaissance. Dengan beberapa keadilan, JavaScript telah digambarkan sebagai "Skema pakaian C" meskipun berasal mereka neraka kubus pertanian .

Namun demikian, terlepas dari pengaruh ini, baik di perusahaan dan dunia open source, Lisp masih memiliki hanya sebagian kecil dari pangsa pengembang pikiran yang tanaman saat bahasa scripting maju telah menarik. Ditutup-pikiran yang dari MBA tidak bisa menjadi satu-satunya penjelasan untuk ini. Lisp Kutukan memiliki kekuatan lebih jelas.


Lingkungan pengembangan gratis yang tersedia untuk Lisp lanjut memberikan contoh Lisp Kutukan.

Ini memalukan untuk menunjukkan ini, tetapi harus dilakukan. Lupakan tentang Lisp Machine; kami bahkan tidak memiliki sistem pengembangan yang sesuai dengan apa yang rata-rata Smalltalk hacker mengambil untuk diberikan ( "Saya selalu merasa Lisp adalah bahasa superior dan Smalltalk adalah lingkungan yang unggul." - Ramon Leon ). Kecuali mereka membayar ribuan dolar, hacker Lisp masih terjebak dengan Emacs.

James Gosling, penulis Emacs pertama yang berlari di Unix, telah tepat menunjukkan bahwa Emacs belum berubah secara mendasar di lebih dari dua puluh tahun. Hal ini karena pengelola Emacs masih layering kode di atas sebuah desain yang menetap kembali ketika Emacs adalah proyek grad-mahasiswa di MIT AI Lab, yaitu, ketika pengembangan Emacs masih sedang tidak langsung dibiayai oleh utang nasional. Sebuah Slashdotter mungkin objek yang Emacs sudah cukup mampu dan bisa melakukan apa saja bahwa setiap lingkungan pengembangan lain dapat lakukan, hanya lebih baik. Mereka yang telah menggunakan Lisp Mesin mengatakan sebaliknya.

Jadi mengapa tidak hacker Lisp menempatkan orang Smalltalk di tempat yang tepat? Mengapa mereka tidak membuat sistem pengembangan gratis yang panggilan ke pikiran beberapa kemuliaan yang hilang dari LispM, bahkan jika mereka tidak dapat mereproduksi LispM lain?

Alasan mengapa hal ini tidak terjadi adalah karena Lisp Kutukan. Sejumlah besar Lisp hacker harus saling bekerja sama. Melihat lebih dekat: Sejumlah besar dari jenis orang yang menjadi hacker Lisp harus saling bekerja sama. Dan mereka harus bekerjasama satu sama lain pada desain yang belum diberikan dari awal. Dan tidak akan ada disiplin eksternal, seperti kapitalis ventura atau induk perusahaan lainnya, untuk menjaga mereka di jalur.

Setiap proyek memiliki gesekan antara anggota, perbedaan pendapat, konflik atas gaya dan filosofi. Masalah-masalah sosial yang kontra-bertindak oleh fakta bahwa tidak ada proyek besar dapat dicapai sebaliknya. "Kita semua harus bersatu, atau kita semua akan menggantung secara terpisah." Tapi ekspresi dari Lisp membuat kekuatan pengimbang ini jauh lebih lemah; satu selalu dapat memulai proyek sendiri. Dengan demikian, hacker individu memutuskan bahwa masalah tidak layak. Jadi mereka baik berhenti proyek, atau tidak bergabung dengan proyek untuk mulai dengan. Ini adalah Lisp Kutukan.

Bahkan bisa hack Emacs untuk mendapatkan sesuatu yang cukup baik . Dengan demikian, Lisp Kutukan adalah sekutu dari buruk yang lebih baik.


Kekuatan ekspresif Lisp memiliki kelemahan. Tidak ada hal seperti makan siang gratis.