Mengkompilasi bahasa tingkat yang lebih tinggi ke yang lebih rendah adalah kue. Ada banyak contoh yang sedang dilakukan. Tanpa menyinggung banyak singgung, kita dapat menunjuk ke kompiler C ++ awal yang dikompilasi ke C.
Namun, ketika Anda mulai melemparkan "bersih" dan "dapat dibaca" ke dalam campuran, segalanya menjadi sangat sulit. Kode yang bersih dan mudah dibaca mengungkapkan arti dan maksud dari apa yang Anda tulis. Komputer terkenal buruk dalam menafsirkan & menciptakan makna. Anda lebih mungkin berakhir dengan variabel yang diberi nama int_147
daripada input_buffer_length
. Tentu, jika Anda benar - benar ingin membuat proyek ini berhasil, Anda dapat terlibat dalam proyek AI besar-besaran untuk menangani pengubahan Lisp Anda menjadi semacam C ++ yang dapat dibaca dengan baik, tetapi, jujur saja, kompilator Lisp umum sangat bagus dalam apa yang mereka lakukan. .
Lebih penting daripada kesulitan menghasilkan C ++ dari Lisp adalah kegunaannya. Apa gunanya agar C ++ yang dihasilkan dapat dibaca? Jika Lisp adalah kode sumber Anda, representasi perantara seharusnya tidak relevan. Jika Anda ingin bisa menyerahkan C ++ ke programmer yang tidak mengerti Lisp asli Anda, Anda sekarang punya masalah lain . Apa yang terjadi ketika mereka ingin memodifikasi C ++ yang Anda hasilkan? Apa yang terjadi jika mereka menulis hal-hal dalam C ++ yang tidak diterjemahkan dengan rapi ke Lisp Anda?
Katakanlah kita telah menyelesaikannya. Ini satu dekade kemudian dan, setelah membakar ratusan juta dolar dari uang hibah DoD, kami telah membangun mesin terjemahan bahasa yang masif, kompleks (tapi tanpa cacat) ini yang dapat mengubah Lisp menjadi C ++ yang idiomatis dan sebaliknya. Apa yang benar-benar kita peroleh yang tidak akan lebih baik dicapai dengan mengajar orang lain bahasa pemrograman baru atau hanya mengembangkan kompiler baru yang memungkinkan kita menghubungkan kedua bahasa?
Oh benar Bos Anda ingin Anda menulis C ++ dan Anda lebih suka tidak melakukannya. Perbarui resume Anda & cari pekerjaan baru.