Okay. Semester Ganjil akan dimulai lagi dan drama “Algoritma Pemrograman” akan dimulai. Jadi artikel ini adalah khusus untuk kamu yang masih takut dengan “coding”. Aku ingin menendang jauh rasa takut itu dari dirimu.

#pragma compile alay on
// Hanya 18+ yang boleh baca artikel ini

Hampir semua orang pada umumnya mampet dalam mencerna “apa sih coding itu”, “buat apa sih coding itu”, “ini code maksudnya apa” hingga “aku gak tau apa yang aku tulis”. Semua orang stuck pada level-level nya sendiri jadi itulah mengapa mungkin hanya sekian dari seluruh mahasiswa yang bisa mengikuti kelas pemprograman. Jangan salah dosennya juga sih.

Nggak usah basa-basi, mari kita mulai.

Apa itu Coding?

7 tahun yang lalu, pemrograman menurutku adalah permainan otak yang sangat membantu kegabutanku dimasa puber, dan semakin lama aku semakin gila coding selevel orang-orang pada nge-bucin atau nge-wibu. Namun berbeda dengan nge-bucin, gila coding itu ternyata bermanfaat besar sekali, dan aku ingin kegabutan anda lebih berfaedah dengan gila coding (jika kamu mau sih).

Aku tidak pernah tau mengapa orang sangat sulit membaca code. Padahal mereka tau kalo 1 + 1 = 2. “Apa mereka berlagak bodoh atau pura-pura bodoh?” ingin ku menghujat meski nggak jadi. Tapi aku percaya mereka hanya pura-pura buta coding meski beberapa juga sampai nekat ngulang “Alpro”, Gentleman sekali.

Aku ingin memberitahumu, bahwa coding itu sejatinya adalah permainan lego untuk orang dewasa. Tidak percaya? Liat code ini:

print("hello, bucin!")

"hello, bucin!" adalah lego nya: Kata “hello, bucin!”. Kata ini kamu apain? Ada perintah print, print adalah perintah yang paling dasar. Itu perintah pertama anda dimanapun anda belajar coding. Perintah ini tidak lebih tidak kurang hanya mengucapkan kata selanjutnya, "hello, bucin!". Sekarang mungkin kau bertanya, mengapa namanya print? mengapa harus pakai kurung? mengapa pakai tanda petik? mengapa nggak cukup cuman print hello bucin?

Lego

Inilah fakta menyedihkannya. Komputer itu goblok. Serius. Lebih goblok dari anda, karena ciptaan tuhan itu sempurna. Komputer tidak akan paham perintah yang kamu ketik bahkan hanya satu tanda petik yang kurang. Jadi, bersikap lembutlah pada komputer, dan setiap kali mereka bilang Syntax Error, ingat bahwa komputer itu goblok, dan itu adalah tugasmu untuk membenarkan ejaan perintah anda anda ketik.

Btw, meski komputer itu goblok, ketauhilah mereka penurut. Sangat penurut. Kamu adalah bos dari otakmu, Kamu adalah bos dari komputermu. Kamu suruh mereka untuk bootloop mereka nurut, kamu suruh mereka ngepet juga nurut kalo bisa. Inilah mengapa aku suka coding, karena aku suka jadi bos meski komputer hanyalah benda mati yang bisa ngeprint Hello Bucin 3000 kali:

print("hello, bucin! " * 3000)

Apa lagi yang komputer bisa lakukan selain print hello, bucin!?

Buat Apa sih Coding itu?

Aku sudah bilang, andaikan coding itu lego, buat apa anak kecil suka main lego?

Aku nggak tahu kamu, tapi aku dulu suka main lego karena, yaa… asik. Gitu aja. Aku suka bangun menara setinggi 3000 tahi lalat meski sore hari aku bongkar lagi karena ibukku nyuruh. Dan pemrograman itu nggak jauh beda, kamu bikin program untuk melupakannya. aku pun sama, pernah bikin program sampek nggak mandi 7 hari 7 malam hanya untuk dilupakan ketika udah jadi. Dan entah mengapa aku tidak merasa kesal, suka aja.

Jika demikian, mengapa coding sangat profitable? Ingat bahwa Sampah seseorang adalah harta karun bagi orang lain, beberapa sampah hasil programku memang masih dipakai orang lain, dan it’s profitable, aku pasang harga untuk setiap kopi dan mereka masih menyukainya. Aku pikir, yeah itulah Life of programming, dibayar untuk print("hello, bucin! " * 3000), gimana gak enak jadi programmer, kan?

Jika dalam “konteks serius” kamu ingin wirausaha dengan coding, sangatlah bisa kawan. Hal pertama yang harus kamu catat ialah, kamu ingin spesialis dalam hal apa? Ingat pemrograman bidangnya hampir seluas kedokteran. Kedokteran bisa jadi Dokter hewan, Dokter kulit, Dokter gigi, dsb. Begitu juga Pemgrograman yang bisa menjadi spesialis Desktop/Mobile, Web Frontend/Backend, Data/AI, Security/hacker, dan banyak lainnya. So, jika kamu serius maka Bagaimanapun caranya, kamu harus fokus salah satu bidang saja jika kamu mau dibilang spesialis dan bisa profit dari pemrograman.

But, tetapi, untuk pemula macam saya dulu, tentu aku belum tau aku mau jadi spesialis apa, jadi aku dulu itu Hobbyist alias belajar semuanya yang bisa dilahap yang penting hepi, dan sekarang karena aku bisa profit dalam grafis dan web, aku ingin fokus ke dua hal itu saja, Graphics and Web Front-End Developer, itu title yang aku pajang di bio-ku. Keren kan?

Wkwkkwww, shut-up. Aku gak ingin kalian kepikiran jauh sampek menjual hobi daripada hepi. Sekarang lo and gue statusnya masih mahasiswa missqueen, so stay with me, dengan pikiran “pemrograman sebagai hobi”: belajar semuanya yang bisa dilahap yang penting hepi

Ini Code Maksudnya Apa?

Namun realita tidak sesuai dengan ekspetasi. Jangankan wirausaha, menjelaskan coding didepan dosen killer aja kita merinding. Wkwkww fenomenal, tapi itulah kenyataan. Aku bahkan mikir daripada diomelin terus ntar nasibnya ga jelas ngulang taun depan, kenapa kalian yang suka pura-pura buta-coding gak sekalian ngamen di perempatan yang nasibnya lebih jelas dan profitable? Wkwww aneh.

Tapi bagi kalian yang gak pura-pura, ini nih aku kasih tau kuncinya: Setiap baris dalam coding itu satu perintah.

Kalo kamu gak ngerti baris itu ngapain, berarti kamu gak tau perintah yang itu dibuat untuk apa. Contoh simpel:

for x in "bucin":
    print(x)

Buat kamu yang gak pura-pura, aku kasih tau hasil print dari code itu:

b
u
c
i
n

So? Mengapa bisa demikian? for x in "bucin", liat lego "bucin", "bucin" ini kita pisah jadi satu-satu oleh perintah for x in ... menjadi lego 'b', lego 'u', lego 'c', lego 'i', lego 'n'; 5 lego itu diumpakan jadi lego x dan x ini kita masukin ke print dari print(x) maka hasilnya jadi print('b'), trus print('u'), dan begitu sampai 'n'. Nah karena print ini terpisah makanya printnya dijadikan baris terpisah, b baris berikutnya u lalu baris c dan begitu sampai n.

Simpel kan? Poin disini adalah kalo kamu tidak tahu perintah itu ngapain, kamu perlu buka google. Mbah gugel knows everything, selama kamu ngerti inggris wkwkwkw.

Ada contoh lebih rumit lagi? Boleh:

from datetime import datetime
if (datetime.today().weekday() > 4):
	print("rebahan")
else:
	print("mageran")

Apa maksudnya? Baris pertama aku gak ingin terlalu detail tapi yang jelas itu ngasih satu set lego datetime biar bisa dipakek didalam bangunan lego kita, lalu baris kedua, datetime.today().weekday() dibaca dari set lego datetime aku ingin lego weekday dari lego today yang artinya kita ingin hitungan hari dari hari ini (kalo anda gagal paham, datetime.today().weekday() bakal menjadi 0 kalo hari ini hari senin, 1 kalo selasa, dsb.), trus datetime.today().weekday() dibandingin (perintah if), kalo lego tersebut (hari dari hari ini) > 4 (4 itu jum’at, berarti > 4 itu lebih dari jum’at, atau sabtu dan minggu), maka print("rebahan") (ngomong “rebahan”) atau kalo sebaliknya (perintah else), maka print("mageran") (ngomong “mageran”).

Sekali lagi ya, kalo kamu tidak tahu perintah itu ngapain, kamu perlu buka google, sesimpel itu.

Nah, apa otak sudah panas atau masih dingin? Lanjut dong ke dilema paling hot kita….

Aku Gak Tau Apa yang Aku Tulis :(

Yaps, momok paling menakutkan saat live coding. I know your feeling.

Ingat tujuan anak kecil bikin menara dari lego? Misalkan mereka mau bikin miniatur rumah mereka sendiri dari lego, bagaimana caranya? Kebanyakan gini…. Mereka bikin ruang tamu dulu, trus ruang tengah, dapur, dsb. sampai semuanya selesai, baru naik ke lantai berikutnya, dsb. dsb. sampai atap.

Yep, sesimpel itu kan? Nah ada yang lebih menarik, kalo mereka anak sultan, mereka bakal nambah detail² seperti jendela, pintu, kursi, meja, kasur, tv, gamebot, dsb. Apa itu berarti? Liat bagaimana kreatifnya anak kecil, atau paling nggak, flashback masa kecil mu sendiri, seberapa kreatif anda saat itu? Aku pernah bikin menara setinggi 3000 tahi lalat jadi aku bisa ngukur² kalo ngoding.

Oke oke. The point is: Perjelas apa yang kamu inginkan, lalu Bikin dari gambaran buremnya sampai ke bagian paling detilnya. Mau contoh?

Karena sebentar lagi Agustusan, mari kita menggambar Bendera Indonesia dari Python:

______________________________
|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|                            |
|                            |
|  __________________________|
| |
| |
| |
| |
| |
^^^

Ouch! Trus bagaimana caranya? Ingat, Bikin dari gambaran buremnya sampai ke bagian paling detilnya.

Apa code paling burem buat bikin bendera?

print("""
______________________________
|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|                            |
|                            |
|  __________________________|
| |
| |
| |
| |
| |
^^^
""")

Udah sesimpel itu, tinggal copy & paste ke satu lego dan diprint satu itu juga.

Dan itu adalah code yang paling burem. Kalo dosen yang memberi soal, biasanya akan dinilai setengah atau nol, karena code seperti itu terkesan cheating. “Dimana Gregetnya?”. Oleh karena itu coba kita pisah lego itu menjadi beberapa baris lego:

print("______________________________")
print("|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|")
print("|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|")
print("|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|")
print("|                            |")
print("|                            |")
print("|  __________________________|")
print("| |")
print("| |")
print("| |")
print("| |")
print("| |")
print("^^^")

Dari kode itu kita bisa tahu beberapa perintah yang duplikat jadi mari kita ringkas jadi satu pakai perintah for:

print("______________________________")
for i in range(3):
	print("|XXXXXXXXXXXXXXXXXXXXXXXXXXXX|")
for i in range(2):
	print("|                            |")
print("|  __________________________|")
for i in range(5):
	print("| |")
print("^^^")

Ingat bahwa kita bisa meringkas beberapa karakter dengan perkalian kata? So….

print("_" * 30)
for i in range(3):
	print("|" + "X" * 28 + "|")
for i in range(2):
	print("|" + " " * 28 + "|")
print("|  " + "_" * 26 + "|")
for i in range(5):
	print("| |")
print("^^^")

Oke. Dari sini code kita mulai greget. Bisa dipendekin lagi?

Bisa. Di python, kita bisa nulis \n sebagai karakter baris baru, dan print punya tambahan end yang tambahan bagian terakhir print (yang by default diisi dengan \n). Dengan mengeluarkan baris baru \n ke lego teks and set atribut end menjadi kosong (end=''), maka kita bisa mengganti for loop dengan perkalian teks:

print("_"*30)
print(("|" + "X" * 28 + "|\n") * 3, end='')
print(("|" + " " * 28 + "|\n") * 2, end='')
print("|  " + "_" * 26 + "|\n", end='')
print("| |\n" * 5, end='')
print("^^^")

Ya masih bisa dipendekin lagi???

Bisa, jika kamu paham perintah spread operator, kamu bisa liat bahwa baris 2-6 mempunyai pola diawali oleh print("| dan diakhiri oleh |\n", end='') jadi kita bisa menyambungkannya menjadi satu loop kembali dengan spread operator:

print("_"*30)
for s in [*(["X" * 28] * 3),
          *([" " * 28] * 2),
            "  " + "_" * 26,
               *([" "] * 5)]:
    print(("|" + s + "|\n"), end='')
print("^^^")

Jika kamu tahu for bisa dijadikan menjadi satu baris, dan perintah join, kamu bisa menggabungkan tiga print tersebut menjadi satu:

print("_"*30+"\n"+''.join("|"+s+"|\n"for(s)in[*(["X"*28]*3),*([" "*28]*2),"  "+"_"*26,*([" "]*5)])+"^^^")

Weuh, panjang dan rivet, tapi itu adalah state-of-the-art dari programming. Tergantung sampai mana otak anda nyampek sih.

Mungkin kamu mau programmu lebih pintar dengan menyertakan input, biar bisa mengatur panjang karakter bendera, misalnya. Bagaimana caranya? Ingat perkalian kata kan? kita bisa mengaturnya kok:

w = input("Berapa panjang bendera? (Biasanya 30): ") # w adalah lego untuk 'panjang bendera'
print("_"*w+"\n"+''.join("|"+s+"|\n"for(s)in[*(["X"*(w-2)]*3),*([" "*(w-2)]*2),"  "+"_"*(w-4),*([" "]*5)])+"^^^")
# perubahan panjang bendera dibuat logis aja, kalo 30 jadi w, maka 28 jadi (w-2), dan 26 jadi (w-4)

Bagaimana dengan tinggi bendera? Itu PR kamu!

Kesimpulan

Dari semua teks ini, aku cuma beri kamu 2 konsep: lego dan perintah. lego yang aku maksud kalo kamu merhatiin dikelas programming, itu variabel: Variabel a, variabel b, dsb. Variabel itu penyimpanan data. Tapi kamu gak tau data itu apa jadi aku umpakan lego saja. Trus ada perintah, kalo kamu merhatiin dikelas programming, itu namanya fungsi: Fungsi print, fungsi input, dsb. Adalagi fungsi-fungsi lain yang syntaxnya beda seperti if, for, while. Fungsi itu tidak lain tidak bukan hanyalah penyingkat dari Mau kamu apakan variabel itu?.

So tutorial singkat ini adalah kickstart untuk memahami pemprograman, khususnya yang mau belajar pakai python.

#pragma compile alay off

Kesimpulannya? Everything is about you, dan jika kamu mau serius di ranah koding, ya inilah coding. Jika menurutmu coding itu susah, jangan salahkan otakmu yang susah mencerna, salahkan kenapa kamu sendiri mengganggap koding itu susah. Koding itu mudah, dan aku sudah memantik kamu untuk buang jauh-jauh mindset lama. So, jadilah pemuda yang kreatif mulai dari sekarang.

Keypoints:

  • Programming adalah permainan yang cocok buat pengisi kegabutan
  • Komitmen programming untuk hobi bukan *profit
  • Fokus salah satu bidang programming jika kamu sudah mulai pro
  • Setiap baris dalam coding itu satu perintah
  • Kalo kamu tidak tahu perintah/variabel itu ngapain, kamu perlu buka Google
  • Kalo mau ngoding, bikin dari gambaran buremnya sampai ke bagian paling detilnya