Bahasa Pemrograman (IKP213.v.2) Pertemuan 2: Pendahuluan bagian ke-2, 17 September 2012
Bahasa Pemrograman (IKP213.v.2)
Pertemuan 2: Pendahuluan bagian ke-2, 17 September 2012
Bahasa Pemrograman
• Menyalakan tombol switch on dan off
• Hasil komputasi?
– Tape
– Printer
• Bahasa Mesin (Machine Language)
• Assembly Language (Bahasa Rakitan)
– Mnemonic dari bahasa mesin
– ADD, SUB, MULT, DIV, BRANCH, JUMP
Bahasa Pemrograman – IKP213 2
Bahasa Pemrograman
• Bahasa pemrograman generasi 1 – Fortran
– COBOL
• Bahasa pemrograman lain – ADA, B, C, C++, BASIC, Pascal
– Visual Basic, Delphi, Qt, Tcl/Tk, Python, Ruby
– PHP
– Android
– Prolog, Haskell, LISP
Bahasa Pemrograman – IKP213 3
Bahasa Pemrograman
• Kebutuhan untuk
– Bahasa yang lebih mudah
– Lebih bebas dari kesalahan
– Mendukung multitasking
– Berorientasi objek
– Dapat berjalan dalam lingkungan terdistribusi / web
– Dapat berjalan dalam lingkungan terbatas (mobile devices)
Bahasa Pemrograman – IKP213 4
Kompilasi dan Interpretasi
• Program dan Proses
– Untuk bisa dieksekusi di CPU
– Program dimuat ke memori utama
– Program mendeskripsikan proses dinamis yang dijalankan CPU
• Bahasa sumber
– Ditulis dalam bahasa tingkat tinggi (Java, C, dkk)
– Syntax
Bahasa Pemrograman – IKP213 5
Kompilasi dan Interpretasi
• Bahasa mesin
– Diterjemahkan dari bahasa sumber
– Rangkaian aksi yang dijalankan CPU
• Problem: Perbedaan arsitektur dan set instruksi
• Penerjemahan ke bahasa mesin
– Kompilasi atau Interpretasi
– Syntax analysis
– Syntax tree
– Object generation
Bahasa Pemrograman – IKP213 6
Kompilasi dan Interpretasi
– Target machine language (tergantung arsitektur)
• Kompilasi
– Sebelum dieksekusi
– Tidak tergantung kepada kompilator
• Interpretasi
– Penerjemahan dan Eksekusi dilakukan bersamaan
– Selalu tergantung kepada interpreter
Bahasa Pemrograman – IKP213 7
Kompilasi dan Interpretasi
• Tahapan
– Analisis leksikal
– Analisis sintaks
• Backus-Naur Form (John Backus)
– Analisis semantik
– Pembangkitan kode antara
– Optimasi kode
– Pembangkitan kode target
Bahasa Pemrograman – IKP213 8
Kompilasi dan Interpretasi
• Write once, Run eveywhere
• Bytecode
• Virtual machines
– JVM
– Python interpreter
Bahasa Pemrograman – IKP213 9
Komputabilitas
• Computer
– to Compute
• Apa bedanya dengan Calculator?
– to Calculate
• Compute F to C
• Compute reverse of "Hello"
• Compute gene transcription
Bahasa Pemrograman – IKP213 10
Komputabilitas
• Definite Procedure
– Precise set of steps
– Finite
• Turing Machine
– Tape, infinitely long to the left and right
– Head, read from or write to the tape
– States
– Transitions
Bahasa Pemrograman – IKP213 11
Turing Machine
• Determine whether there is an odd or even number of 1s in "011..11110"
– Write a single 0 on the tape if even,
– write a single 1 otherwise
• States: {start, even, odd}
• Transitions:
– If in start state, and read 0, Change to Even state, replace 0 with blank, move right
Bahasa Pemrograman – IKP213 12
Komputabilitas
• Input Process Output
• Tabel basis data SQL Hasil kueri
• Dokumen Google Dokumen relevan hasil kueri
• Bilangan bulat Konversi Suhu Bilangan dalam satuan Celsius
• Komputasi: Langkah-langkah mendapatkan hasil fungsi dari input yang diberikan
Bahasa Pemrograman – IKP213 13
Komputabilitas
• Komputasi; Program; Algoritma
• Contoh 1
– f: x x^2 + 2x
– Nilai masukan x diterapkan langkah-langkah
– t1 = x * x
– t2 = 2 * x
– t3 = t1 + t2
– f(x) = t3
Bahasa Pemrograman – IKP213 14
Komputabilitas
• Contoh 2
– g: (x, y) i = 0; for j=0; j<y; j++: i = i+x; g(x,y) = i
– Menghitung perkalian x dan y
Bahasa Pemrograman – IKP213 15
Komputabilitas
• Himpunan
– Kumpulan objek
– Objek matematika: A = {1, 2, 3}; B = {a, b, c}
• Relasi
– Pemetaan antara objek-objek dalam himpunan berbeda
– f: A B = { (1, b), (2, a), (3, c) }
– f(1) = ?
Bahasa Pemrograman – IKP213 16
Komputabilitas
• Fungsi
– Bentuk khusus dari relasi
– Aturan (rule) yang memetakan elemen unik y di himpunan B dengan setiap elemen x di himpunan A
– f:A B
– f(x) = y
– Domain: Himpunan A
– Range (Codomain): Himpunan B
Bahasa Pemrograman – IKP213 17
Komputabilitas
• f(x) = x^2 + 2x + 3
• f(x) = if x = 0 then 0 else x + f(x-2)
• Partial Functions – Tidak selalu terdefinisi untuk semua input
• Sebuah fungsi bisa dikomputasikan (computable) jika ada sebuah program yang mengkomputasikannya – Fungsi f:A B computable jika ada algoritma untuk
menghitungnya
– Diberikan x, algoritma tsb berhenti dengan hasil y
Bahasa Pemrograman – IKP213 18
Komputabilitas
• Noncomputable Functions
– Ada fungsi yang tidak bisa dibuat algoritmanya
– Tidak ada output yang mungkin dihasilkan
– Running forever
Bahasa Pemrograman – IKP213 19
Halting Problem
– Sebuah program P yang menerima masukan sebuah string x
– Luaran dari program P ditulis sebagai P(x)
– Tentukan apakah program P berhenti untuk masukan x
– Fungsi fHalt(P, x) = "stop" jika P berhenti; fHalt(P, x) = "tidak stop" jika P tidak berhenti
Bahasa Pemrograman – IKP213 20
Universal Turing Machine
• Universal Turing Machine (U)
• Turing Machine dengan input mesin Turing yang lain (M)
• Mensimulasikan cara kerja mesin Turing yang menjadi input
– U(M)
Bahasa Pemrograman – IKP213 21
Komputabilitas
• Fungsi fHalt tidak computable
• Definisikan sebuah fungsi U(M, x)
– U(M, x) = "stop" jika M(x) = "stop"
– U(M, x) = "tidak stop" jika M(x) = "tidak stop"
Bahasa Pemrograman – IKP213 22
Komputabilitas
• Definisikan sebuah fungsi D(P)
– D(P) = "run forever" jika Q(P, P) = "stop"
– D(P) = "stop" jika Q(P, P) = "tidak stop"
– D(P) = "run forever" jika P(P) = "stop"
– D(P) = "stop" jika P(P) = "tidak stop"
Bahasa Pemrograman – IKP213 23
Komputabilitas
• Contoh program akan dikompilasi i = 0;
while (i != f(i))
i = g(i);
print(i);
• Bagaimana menentukan bahwa program ini berfungsi sebagaimana yang diinginkan?
Bahasa Pemrograman – IKP213 24
Pustaka
• John Mitchell, "Concepts in Programming Languages"
• http://tjerdastangkas.blogspot.com/search/label/ikp213
Bahasa Pemrograman – IKP213 25
Akhir Pertemuan 2
Senin, 17 September 2012