Logika Tidak Cukup Untuk Belajar Pemrograman

Bernaridho 16 Februari 2017

Logika Tidak Cukup Untuk Belajar Pemrograman

Logika tidak cukup untuk belajar pemrograman

Pengantar Tulisan know-how ini dibuat untuk melengkapi kolom opini saya. Kita sering mendengar banyak pengajar TI di perguruan tinggi (dan mungkin juga tokoh-tokoh TI) akan mengatakan belajar pemrograman itu yang penting belajar logikanya. Belajar tools dan programming tidak perlu karena terus berubah, yang penting logika. Hal ini juga disinggung satu atau lebih commenter artikel 'Knowledge is NOT Power'. Tapi benarkah argumen di atas? Saya pikir TIDAK BENAR. Sebagian bukti saya sertakan pada opini. Sebagian bukti lain akan saya sertakan di tulisan ini.

C++ Mari kita lihat source-code sederhana berikut, yang saya compile, link, dan run dengan memakai Microsoft Visual C++ 2008. Tidak ada compile-error, link-error, dan runtime-error.

#include <stdio.h>
#include <string.h>

void main()
{
	int a = 1, b = 2;
	char c[6] = "Halo";
	char d[6] = "Halo";
	if (a == b)
		printf ("a == b\n");
	else
	printf ("a != b\n");
	if (c == d)
		printf ("c == d\n");
	else
	printf ("c != d\n");
}
Kesalahan hasil yang tidak bisa dijelaskan dengan 'logika'

Kita lihat ada 4 objek, bernama a, b, c, dan d. Nilai objek a dan b berbeda, sehingga hasilnya pastilah a != b yang ada pada output. Dengan memakai logika yang biasa, tentulah output akan menampilkan c == d karena nilai objek c sama dengan nilai objek d. Kenyataaanya program tampilkan c != d.

Java versus PL/SQL Berikut adalah salah satu contoh program.

public class Main
{
	public static void main (String[] args)
	{
		boolean a = false, b = true;
		boolean c = null;
	}
}

Dengan memakai logika sederhana, kita akan katakan bahwa program java di atas tidak akan bisa di-run karena nilai null tidak terdefinisi untuk tipe boolean. Anda benar.

Tanda merah pada source-code Java
Pesan kesalahan pada NetBeans

Sekarang mari buat operasi main pada Oracle PL/SQL. Dengan memakai logika saja, kita akan katakan bahwa pemrosesan operasi ini akan error juga.

CREATE PROCEDURE Main AS
	a boolean := false;
	b boolean := true;
	c boolean;
BEGIN
	c := null;
END;
/

Nyatanya tidak ada error. Bagaimana menjelaskannya? Logika apa yang kita pakai?

Nilai NULL terdefinisi untuk tipe boolean?

Komputasi numerik Rincian komputasi numerik tidak saya sertakan di sini. Tapi jelas bahwa impresisi hasil pemrosesan nilai-nilai bilangan integral pada Microsoft Office, OpenOffice tidak bisa dijelaskan hanya dengan 'logika'. Demikian pula impresisi hasil pemrosesan nilai-nilai floating-point.

Wizard Wizards (code-generator) juga berperan untuk mengurangi kadar logis dalam praktek. Wizard dari TOAD, Oracle, SQL Server menghasilkan source-code SQL yang sangat boros. Wizard ini tidak menghasilkan SQL source-code yang sesuai dengan standar internasional.

Standar internasional SQL sendiri buruk dalam beberapa hal (terutama pemakaian tipe boolean, yang lama sekali baru muncul). Tapi dengan penerimaan produsen-produsen akan SQL, seharusnya cukup tinggi derajat kesamaan dari SQL source-code yang dihasilkan wizard dari berbagai produk. Nyatanya ini tidak terjadi. Postgre, MySQL, Oracle, Microsoft; semuanya menghasilkan source-code yang berbeda.

Bahkan produk yang berbeda dari produsen yang sama bisa menghasilkan source-code yang berbeda. Wizard dari Microsoft Access menghasilkan SQL source-code yang berbeda dari wizard Microsoft SQL Server.

Bisakah logika membantu Anda? Rasanya tidak. Yang bisa membantu adalah pengetahuan dan pemahaman Anda akan SQL standar. Itupun tidak sangat membantu.

Solusi Saya sengaja tidak memberi solusi dan penjelasan rinci atas masalah-masalah di atas. Dengan tulisan ini justru saya ingin memancing keingintahuan pembaca dalam memberi penjelasan yang baik terhadap fenomena-fenomena / contoh-contoh yang dipaparkan.

Kesimpulan Menyatakan bahwa belajar pemrograman cukup belajar dengan logika adalah bad excuse. Belajar pemrograman tidak cukup dengan belajar logika. Bahkan tidak jelas apa yang dimaksud sebagai ‘logika’ dalam belajar pemrograman. Aljabar logika? If-then-else? Algoritma? Algoritma tidak bisa menjelaskan fenomena-fenomena yang dipaparkan pada tulisan ini. ‘Mengajarkan pemrograman cukup dengan mengajarkan logikanya’ sekali lagi adalah a very unclear sentence and a very bad excuse.

Pustaka H. M. Deitel, P. J. Deitel; C: How To Program; Pearson; 2006 D. Goldberg; What every computer scientists should know about floating-point arithmetic, ACM Computing Surveys; Mar 1991. Bernaridho I. Hutabarat; Pemrograman Oracle PL/SQL; 2005; Andi