Enak kok kalau bisa bahasa C. Banyak bahasa lain yang diturunkan dari C, termasuk C++, Java, Perl, PHP, dan masih banyak lagi. Kita tinggal perlu belajar dikit tentang perbedaan sintaks yang minor itu, trus jadilah kita programmer di bahasa-bahasa itu. Gitu katanya. Naif yach?
Sintaks C memang sering diculik untuk menyusun bahasa baru, soalnya sifatnya yang manusiawi dan komputerwi sekaligus, dan soalnya bahasa ini merupakan bahasa yang paling banyak dipakai oleh developer profesional untuk menyusun program-program dan proses-proses di seluruh dunia (compared to keluarga Basic dan Pascal yang banyak dipakai end user untuk aplikasi personal). Jadi diharapkan learning curve untuk ke bahasa-bahasa baru itu nggak terlalu lebar, maunya. Tapi, tentu, bahasa-bahasa itu bukan sekedar C yang dipoles ulang. Ada perbedaan paradigma, yang menuansa atau menjurang, yang mengharuskan membentuk sebuah bahasa baru, dan gap ini kemudian berkembang ke arah-arah yang kadang tak teramalkan, dan membentuk jurang besar dengan para pendahulunya.
Seandainya pun bahasa-bahasa itu nggak terpisah, kita punya masalah lucu lain: para pencipta bahasa-bahasa baru punya selera yang berbeda dalam menamai fungsi-fungsi (atau pada oop: metode-metode). Nama fungsi memang bukan termasuk standar bahasa C, dan orang-orang tidak pernah merasa berdosa menamai fungsi-fungsi as delicious as their belly buttons (seenak udelnya sendiri).
Misalnya, dalam bahasa C, kita biasa mengubah semua huruf dalam sebuah teks menjadi huruf besar dengan fungsi strupr. Ini misalnya lho — aku sendiri punya fungsi lain yang aku definisikan sendiri. Trus kita bikin script PHP. Pakai tuh strupr, dan oops … kok jadi lain? Yup. Di PHP, fungsinya berubah nama jadi strtoupper. Dan ini nama fungsi-fungsi yang sama di bahasa yang konon keturunan C, atau sering dipakai bersama program keturunan C:
- C: strupr(text)
- awk: toupper(text)
- PHP: strtoupper(text)
- JavaScript: text.toUpperCase
- Perl: uc(text)
- STL: toupper(text)
- VCL (Borland, untuk char*): StrUpper(text)
- VCL (Borland, untuk ansi-string): UpperCase(text)
Yang bukan keturunan C, tapi sering dipakai bersama keturunan C:
- Ruby (bukan keturunan C): text.upcase
- PL/SQL: upper(text)
- MySQL: ucase(text)
Nggak heran, aku beneran harus koleksi pocket reference books #^@(!#^(*!@^#*(!@^#*(!@.