Hari2 ini, aku jadi sering harus main2 dengan SMS gateway, dan bikin aplikasi web mini dengan itu. Tentu dengan PHP dan MySQL lagi. Dan sebenernya aku ragu, apa scripting dengan PHP masih bisa kita anggap bagian dari programming, seperti zaman kita dulu masih boleh sering2 main2 dengan C++. Batasnya “etika”-nya apa sih? :) Aku selalu berpikir bahwa programming harus agak mengandung hacking, dengan meletakkan kreativitas personal ke dalam kode; yang membuat program ciptaan seorang programmer jadi suatu yang akan berbeda dengan program programmer lain. Atau mungkin aku — seperti biasa — salah menggunakan istilah lagi :).
Dengan bahasa C, aku pernah membandingkan deret untuk menghitung nilai e dan π. Tentu bilangan natural e melejit lebih cepat ke nilai asimptotiknya. Soalnya aku waktu itu cuma menghitung π sebagai arc tan 1 yang dideretkan sebagai 1 – 1/3 + 1/5 – 1/7 + 1/9 dst. Padahal mungkin programmer lain bisa lebih cepat dengan menggunakan π3/32 = 1 – 1/33 + 1/53 – 1/73 + 1/93 dst.
π3/32 diambil dari π3/(16*2!). Dan ini bisa dilanjutkan ke pangkat ganjil yang lain. Jadi:
π/4 = 1 – 1/3 + 1/5 – 1/7 + 1/9 …
π3/(42*2!) = 1 – 1/33 + 1/53 – 1/73 + 1/93 …
5*π5/(43*4!) = 1 – 1/35 + 1/55 – 1/75 + 1/95 …
61*π7/(44*6!) = 1 – 1/37 + 1/57 – 1/77 + 1/97 …
1385*π9/(45*8!) = 1 – 1/39 + 1/59 – 1/79 + 1/99 …
50521*π11/(46*10!) = 1 – 1/311 + 1/511 – 1/711 + 1/911 …
Deret angka 1, 1, 5, 61, 1385, 50521, 2702765, 199360981, 19391512145, dan seterusnya itu disebut dengan bilangan-bilangan Euler (Euler numbers). Dia berasal dari sesuatu yang disebut permutasi zigzag. Permutasi zigzag itu kemungkinan kita menderetkan n bilangan p yang berbeda, dengan p1 < p2 > p3 < p4 > dst sampai bilangan n. Dengan kata lain, pi < pi+1 jika i ganjil, dan pi > pi+1 jika i genap. Bolak balik. Zigzag. Untuk n=0, 1, dan 2, tentu hanya ada satu kemungkinan; untuk n=3 ada 2 kemungkinan; untuk n=4 ada 5 kemungkinan; lalu 16, 61, 272, 1385, dan seterusnya. Nah, kita ambil yang genap saja untuk bilangan Euler kita.
Tapi apa kaitannya permutasi ini, dengan Euler, dengan arc tan, dengan π? Nah, itulah asyiknya kalau weekend tidak harus dihabiskan untuk urusan kantor. Jadi ada yang bisa dimainin :)
Sementara itu,
π2/6 = 1 + 1/22 + 1/32 + 1/42 + 1/52 … dan kita bisa memasuki cerita lain …


Dan buku yang dipilih adalah Running Mac OS X Tiger. Nah lo, kok baru beli sekarang — 1 tahun kemudian? Tadinya sih sekalian menunggu peluncuran Mac OS X Leopard yang dijadwalkan pertengahan tahun ini. Tapi ianya tak kunjung melandas jua. Akhirnya aku beli juga buku ini. (Hm, khabarnya akhirnya Leopard akan diluncurkan bulan Oktober ini juga — tapi biar deh, updatenya dipelajari via e-documents sahaja).
Kritik2 atas C++ ditanggapi Stroustrup dengan mengiyakan bahwa memang C++ ditujukan untuk expert, tetapi dengan mengingatkan bahwa terdapat generalitas yang tertanam dalam bahasa itu. Dan performansi. Waktu si pewawancara mengingatkan bahwa Stroustrup pernah mengatakan bahwa salah satu motivator atas C++ adalah Kierkegaard :), ia membalas bahwa kecenderungan saat ini untuk mengintegrasikan manusia dalam corporate culture (tanpa melihat lagi keunikan dan talenta individual) itu kejam dan tak efektif. Kierkegaard adalah pendukung peran individu melawan “the crowd,” dan cukup serius membahas pentingnya estetika dan etika. Maka C++ jadi dicipta dengan mengandaikan setiap programmernya memiliki keleluasaan untuk mencipta dan mengatur yang terbaik bagi mereka sendiri.
Kalau versi aku (yang lebih banyak ketemu orang elektro), minggu2 awal bukannya diisi pembelajaran fungsi2 dari kepustakaan C, tetapi belajar memprogram kode-kode pengganti assembler dalam bahasa C. Wow, aku udah secanggih kakak2 angkatanku :). Baru fungsi2 C sendiri. Dan bikin editor sendiri (VIE dan kemudian TVE, hihi), sehingga nggak lama kemudian TC jarang dipakai lagi (selain untuk tracing). Kompilasi menggunakan TCC yang merupakan versi command line. File yang dihasilkan bukan cuma EXE, tetapi juga COM. Eh, COM yang ini beneran ekstensi loh, bukan seperti yang kata seorang pakar: ekstensi domain. Trus, tentu saja terimbas migrasi dari kompiler C ke kompiler C++. Biarpun, sebenernya, nulis programnya tetap dalam C. Dan baru kemudian pindah ke C++, tanpa heboh.