Dicari: Good Theory for Programming

Bernaridho 30 Maret 2017

Dicari: Good Theory for Programming

Pengantar

Selama hampir satu dekade (sejak saya masuk kuliah di Informatika ITB) saya gelisah tentang dasar teori pemrograman. Setelah 10 tahun saya mulai bangun teori dasar tentang pemrograman, yang saya namakan VOTO atau TONO. VOTO adalah singkatan dalam bahasa Inggris: Value Operation Type Object. TONO adalah singkatan dalam bahasa Indonesia: Tipe Operasi Nilai Objek. Saat ini saya lebih suka mengacu teori saya sebagai VOpTOq: Value Operation punctuator Type Object qualifier, diucapkan seperti foto.

Is it a big deal?

Sebentar, what's the big deal membuat programming theory? Pertama, ternyata susah. Tak perlu pegang perkataan saya tentang hal tersebut. Gambar di bawah ini adalah suatu indikasi.

Image

Saya kutip request-nya "explain the theory behind programming". Request ini tidak bisa dipenuhi oleh ribuan pemakai softwareengineering.stackexchange.com. Tidak hanya ribuan pembaca tersebut yang gagal penuhi request tersebut, melainkan juga sekian banyak pengarang textbooks. Kalau ada satu saja pengarang yang bukunya dibaca requestor dan memenuhi keinginannya, request tersebut tidak pernah muncul.

Hm, wajar untuk nyatakan bahwa big deal bisa membuat programming theory.

Untuk apa?

Untuk apa programming theory? Requestor bernama user403 menyebut (to optimize resources so) "it will only take a few weeks to pick up new languages and implement some simple software". Ok, to optimize resources memang saya tambahkan. Jadi, programming theory berguna untuk optimasi sumberdaya sehingga programmer bisa hanya dalam beberapa minggu 'menguasai bahasa pemrograman baru' untuk dapat membuat simple software. Sumberdaya ini bisa berupa tenaga, pikiran, waktu, uang, dan lain-lain.

Perbedaan klaim, dan pengalaman

Implisit sang requestor menyatakan bahwa sulit pelajari berbagai bahasa pemrograman tanpa teori pemrograman YANG BAGUS. Saya harus tekankan yang bagus. Akan selalu ada yang klaim sudah ada banyak teori pemrograman saat ini. Tapi sekali lagi, kalau dari berbagai teori pemrograman terkenal itu sudah ada yang bagus, tak ada request seperti di atas. Bila ada yang bagus, belum terkenal.

Dari pengalaman saya, pernyataan implisit dari requestor adalah benar. Saya sendiri dulu merasa amat sulit belajar bahasa pemrograman baru. Sekarang sebagai recruiter, saya juga alami bahwa calon programmer minta penggantian bahasa pemrograman yang diuji. Saat saya tawarkan waktu 1-2 minggu untuk belajar bahasa pemrograman yang diuji, tak ada yang pernah sanggupi. Jadi, saya sama sekali tak percaya siapapun yang nyatakan klaim seperti ini 'mudah belajar bahasa pemrograman, yang penting logikanya'. Itu tak sesuai kenyataan. Yang mengklaim hal seperti itu perlu diuji dengan memberi dia waktu 2 minggu belajar bahasa pemrograman yang sulit, dan diuji pemahamannya.

Practice the theory? May be there's no such thing

Di berbagai kesempatan saya sering sampaikan moto ini "Theorize the practice", bukan practice the theory. Mengapa? Karena kalau practice the theory, tidak jelas teorinya seperti apa.

Java

class x
{
  private char y;
  public void z()
  {
  }
}

Oracle PL/SQL

Package x is
  Procedure z;
End;

Package body x is

  y char;

  procedure z is
  begin
    null;
  end;

end;

Delphi

Unit x;

Interface

Procedure z;

Implementation

var y: char;

procedure z;
begin
end;

end.

Sebagai contoh, lihat ketiga source-code di atas. Questions yang tidak dapat dijawab dengan baik oleh praktisi dan akademisi:

  1. Secara teori, identitas x di atas mewakili identitas apa?
  2. Mengapa demikian?

Ketidakmampuan menjawab kedua pertanyaan di atas ekuivalen dengan ketidakjelasan teori. Misal: Anda sebelumnya hanya tahu Java, dan harus pahami Oracle PL/SQL; Anda tak bisa practice the theory saat berusaha memahami PL/SQL. Demikian pula sebaliknya. Bila Anda alami kasus ini, yang terjadi adalah Anda akan secara 'brute force' belajar untuk bisa memprogram. Dengan 'berdarah-darah'.

Theorize the practice

Yang saya lakukan selama bertahun-tahun adalah theorize the practice, bukan practice the theory. Theorize the practice memaksa saya invent teori sendiri. VOpTOq adalah singkatan dari 6 konsep utama (lihat kepanjangannya di awal tulisan ini). Di atas 6 konsep utama ini, ratusan konsep turunan dapat dijelaskan dengan baik. VOpTOq mampukan saya jelaskan source-code dari 3 bahasa pemrograman di atas dengan cara yang sama. Curious untuk jawaban terhadap kedua pertanyaan saya di bawah source-code? Ah, janganlah saya mencuri misteri dari Anda. Silahkan beri challenge tersebut ke perumus soal Olimpiade Informatika, Professor Anda, rekan Anda di luar negeri, siswa doktoral. Bila Anda pikir jawaban mereka benar dan menarik, silahkan kontak saya via komentar ke artikel ini.

Oh ya, jawaban untuk pertanyaan pertama hanya satu kata. Kata/istilah tersebut cukup menteorikan apa itu class, package, dan unit.