-
Wawancara singkat dengan Dr. Brian Kernighan, pencipta AWK
-
Perkenalan Dr. Brian Kernighan
- Dr. Brian Kernighan adalah ilmuwan komputer asal Kanada yang berkontribusi pada pengembangan UNIX di Bell Labs
- Bersama Dennis Ritchie, ia ikut menulis "The C Programming Language", buku dasar tentang bahasa pemrograman C
- Sejak tahun 2000, ia membina generasi programmer berikutnya di Princeton University
- Ia terkenal sebagai sosok yang menulis program "Hello World!" pertama
-
Ide baru dalam AWK
- Ide utama AWK adalah associative arrays
- Pada saat itu ini merupakan konsep baru, tetapi sekarang digunakan di sebagian besar bahasa sebagai fungsi pustaka (hashmaps in Java or C++) atau sebagai bagian dari bahasa itu sendiri (dictionaries in Perl and Python)
- Associative arrays adalah struktur yang sangat kuat dan dapat digunakan untuk mensimulasikan berbagai struktur data
- Paradigma pattern-action juga belum banyak digunakan saat itu, tetapi merupakan cara yang efektif untuk mengatur perhitungan tertentu
-
Referensi yang digunakan saat membuat bahasa pemrograman
- Dr. Kernighan: "Tidak ada"
- Pada era 1970-an, ada banyak bahasa baru untuk tujuan khusus, dan hampir tidak ada referensi pendahulu yang layak dijadikan acuan
- Yacc adalah alat penting yang memungkinkan pembuatan dan eksperimen tata bahasa dengan mudah
- Lex memainkan peran yang sama di tingkat leksikal, menggantikan banyak kode membosankan dengan sekumpulan aturan
- Lex dan Yacc adalah contoh bahasa pattern-action, dan keduanya membentuk siklus positif satu sama lain
-
Saran untuk anak muda yang tertarik pada desain bahasa pemrograman
- Ia menyarankan untuk mencoba merancang dan mengimplementasikan bahasa kecil untuk tujuan khusus
- Ini sangat menyenangkan dan berguna, serta jauh lebih mudah daripada membuat bahasa alternatif untuk Rust atau C++
- Ia menganjurkan untuk mencari pekerjaan yang bisa diotomatisasi lalu membuat compiler dan runtime yang sederhana
- Artikel terkait yang ditulis Jon Bentley sejak lama masih tetap relevan
-
Sumber gambar
- Wikimedia Commons
-
Ringkasan GN⁺
- Dr. Brian Kernighan adalah tokoh penting yang berkontribusi pada pengembangan UNIX dan bahasa C, serta pencipta bahasa AWK yang memperkenalkan associative arrays dan paradigma pattern-action
- Associative arrays adalah struktur data kuat yang kini digunakan di sebagian besar bahasa pemrograman
- Bagi programmer muda, merancang dan mengimplementasikan bahasa kecil untuk tujuan khusus merupakan hal yang bermanfaat
- Yacc dan Lex adalah alat yang memudahkan analisis tata bahasa dan leksikal, serta menjadi contoh yang baik untuk bahasa pattern-action
1 komentar
Komentar Hacker News
Berbagai fakta kecil yang kurang dikenal tentang Brian Kernighan: ia bergabung dengan Departemen CS Princeton pada tahun 2000, tetapi sekitar 1993 saat masih di Bell Labs Research, ia sudah pernah mengajar setidaknya satu mata kuliah di Princeton
Seorang mahasiswa sering membawa laptop 386sx yang menjalankan Linux pra-1.0, dan ketika Brian tidak ingat detail perilaku awk, mahasiswa itu menjalankan perintah awk dan menunjukkan “implementasi jawaban yang benar”. Jadi Brian termasuk cukup awal bersentuhan dengan Linux
Ada juga tulisan dari musim gugur 1994 tentang menaikkan direktori nomor bebas pulsa AT&T ke internet: https://www.cs.princeton.edu/~bwk/800.html
Kalau tertarik, wawancara satu setengah jam Lex Fridman dengan BK cukup bagus: https://www.youtube.com/watch?v=O9upVbGSBFo
Kadang terasa seperti hak istimewa luar biasa bisa hidup di zaman ini. Mirip seperti seorang matematikawan bisa mewawancarai Euler, atau seorang fisikawan bisa mewawancarai Newton
Buku Masterminds of Programming memuat wawancara yang lebih komprehensif, termasuk Aho dan Weinberger. Sangat direkomendasikan
https://en.wikipedia.org/wiki/Brian_Kernighan
http://www.linuxjournal.com/article/7035
http://www-2.cs.cmu.edu/~mihaib/kernighan-interview/index.html
https://web.archive.org/web/20090428163341/https://www.princeton.edu/~mike/unixhistory
https://web.archive.org/web/20131126220450/http://princetonstartuptv.com/post/49379235060/the-legendary-brian-kernighan-on-teaching-writing
Minggu ini saya sedang membaca The Unix Programming Environment dari 1983, kira-kira terlambat 35 tahun. Di buku itu awk benar-benar menonjol, dan terlihat sebagai hal yang paling dekat dengan bahasa-bahasa yang kini populer seperti JavaScript, Lua, Python, Perl, dan Tcl
Apa yang awk sebut “array asosiatif”, JavaScript cukup menyebutnya “objek”. Sungguh mengejutkan bahwa source awk di Unix Edisi ke-7 tahun 1979 hanya 2680 baris menurut https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/awk, dan executable-nya 46KB sehingga berjalan di ruang alamat 64KB PDP-11. Sepertinya versi itu, juga awk yang muncul di buku empat tahun kemudian, belum punya fungsi buatan pengguna; V7 Bourne shell juga tampaknya begitu. Namun bc sudah punya
Executable 46KB itu juga sedikit lebih besar daripada Turbo Pascal 3.02: https://prog21.dadgum.com/116.html tentu saja Turbo Pascal memang tidak punya mesin regex
function,for e in a, sintaks tanpa titik koma, penanganan tipe yang berpusat pada string, dandelete x[e], cukup jelas bahwa awk adalah fondasi JavaScript, dan Brendan Eich juga mengatakan begitu: https://brendaneich.com/2010/07/a-brief-history-of-javascript/01983,01979bukanlah cara menulis tahun, dan sebenarnya juga aneh sebagai cara menulis angkaSaya ingat dulu seseorang menulis di
.sigUsenet, “Perl adalah margarin, awk adalah mentega”. Mungkin urutannya sebaliknyaPerl memang punya banyak kekurangan, tetapi setelah menemukan Perl, saya jadi jauh lebih jarang memakai awk
Saya punya buku K&R yang ditandatangani Dr. Kernighan di konferensi Unix Australia pada tahun 80-an. Itu salah satu barang yang paling saya sayangi
Buku itu, The Practice of Programming karya Kernighan/Pike, dan hal-hal seperti majalah Byte adalah “Stack Overflow” saya pada 1980-an
Menarik bahwa ia menyebut array asosiatif seolah-olah “relatif baru”. Padahal Lisp sudah memilikinya hampir 20 tahun sebelumnya
Bahkan ketika saya mulai memprogram pada 1990-an, cukup banyak orang di dunia C memandang struktur data asosiatif seperti tabel hash sebagai sesuatu yang agak eksotis, hanya dikeluarkan saat benar-benar tidak ada pilihan lain. Kita mengira dunia pemrograman bergerak cepat, tetapi sebenarnya tidak, apalagi pada masa itu. Sering kali butuh beberapa dekade sampai fitur yang muncul di suatu bahasa pada 1960–70-an diadopsi secara luas. Lisp juga saat itu performanya cukup buruk dibanding pilihan lain, jadi mungkin bukan contoh yang bagus untuk mempromosikan fitur-fiturnya
awk lahir di mesin yang lambat dan memori kecil, dan sifat array-nya juga merupakan hasil dari lingkungan itu. Contohnya adalah indeks dibatasi pada string dan, meski ada gula sintaksis, tetap dibatasi satu dimensi. Disebutkan bahwa implementasi yang lebih umum mungkin akan mengizinkan array multidimensi, atau setidaknya memasukkan array sebagai elemen array. Rilis stabil SNOBOL4 adalah 1967: https://en.wikipedia.org/wiki/SNOBOL
Jadi jika array asosiatif bawaan Lisp tidak mencakup alist atau property list, tampaknya kemunculannya hampir sezaman dengan lahirnya awk, atau sedikit setelahnya
Dalam bahasa apa pun, orang bisa membuat sesuatu yang mirip array asosiatif dengan pencarian linear dalam beberapa menit, tetapi itu sama sekali berbeda dari yang dibangun sebagai fitur bahasa seperti SNOBOL4, MUMPS, awk, Perl, Python, Tcl, Lua, dan JavaScript. Yang disediakan Lisp awal untuk penataan data adalah
cons,car,cdr, dan itu bukan hal yang sama. Bahkan di dalam Unix sebelum awk pun ada program-program yang memuat array asosiatif, seperti simbol linker, compiler C, assembler, kernel dalam bentuk direktori filesystem, dan variabel shell, tetapi itu tidak disediakan sebagai fitur bahasa pemrograman. Bourne shell paling mendekati karena bisa menirunya dengan menggabungkan nama variabel sepertieval myarray_$key=$val, dan pemrosesan variabel shell di V7 Bourne shell diimplementasikan dengan pencarian pohon binerAlur pengembangan dari regex ke lex, yacc, lalu awk sangat mengesankan. Terasa meyakinkan bahwa mereka membangun di atas pekerjaan sebelumnya untuk menghasilkan sesuatu yang lebih umum
Ini mungkin ucapan yang akan dihujat, tetapi saya rasa di GitHub ada sangat banyak programmer yang punya repositori dengan kode lebih baik daripada para legenda coding ini. Saat itu kumpulan talentanya jauh lebih kecil