Bahasa Formal adalah bahasa yang harus mengikuti aturan ketat seperti bahasa pemrograman dan bahasa matematis (aljabar, logika proposisi). Berbeda dengan bahasa natural (sehari-hari) yang fleksibel, bahasa formal bersifat kaku dan presisi.
Seperti jalan raya bebas:
Seperti rel kereta api:
| Fitur | Bahasa Natural | Bahasa Formal |
|---|---|---|
| Aturan | Fleksibel, bisa dilanggar | Kaku, kalau salah = gagal |
| Ambiguitas | Wajar & sering | Dilarang keras |
| Tujuan | Komunikasi manusia | Instruksi mesin |
| Contoh | Novel, chat, puisi | Python, rumus logika, kode IBAN |
Finite Automata untuk mengenali bilangan biner genap (berakhir dengan 0):
Proses translasi dari kode sumber ke kode mesin:
Simulasi interaktif terkait mesin Turing dan Enigma:
Klik link di atas untuk membuka simulasi di tab baru.
Bahasa formal didefinisikan sebagai himpunan string yang dibentuk dari alfabet tertentu menurut aturan (grammar) yang ketat.
CFG = (T, N, P, S) dimana:
| Bahasa | Alfabet | Aturan | Contoh String Valid |
|---|---|---|---|
| Biner Genap | {0, 1} | Berakhir dengan 0 | 1010, 1100, 0 |
| Palindrome | {a, b} | Dibaca sama depan-belakang | aba, bb, abba |
| Ekspresi Matematika | {0-9, +, -, *, /, (, )} | Kurung seimbang | (3+4)*5, 10/(2+3) |
| Level | Nama | Contoh | Dekat Manusia | Dekat Mesin |
|---|---|---|---|---|
| High-Level | Bahasa Tingkat Tinggi | Python, Java, JavaScript | ✅ Super dekat | ❌ Jauh |
| Middle-Level | Assembly | NASM, ARM asm | ⚖️ Sedikit | ⚖️ Sedikit |
| Low-Level | Machine Code | Binary (0-1) | ❌ Tidak sama sekali | ✅ Langsung CPU |
Catatan: Komputer hanya mengerti 0 dan 1, tetapi compiler/interpreter menerjemahkan kode high-level ke low-level secara otomatis.
FA = (Q, Σ, δ, q₀, F) dimana:
| Ciri | DFA (Deterministic) | NFA (Non-Deterministic) |
|---|---|---|
| δ(q,input) | 1 hasil saja | Bisa 0, 1, atau banyak |
| ε-move | Tidak ada | Boleh tanpa baca input |
| Implementasi | Langsung di kode | Ditransform ke DFA dulu |
Simulasikan DFA untuk string yang mengandung substring "abb":
| Tipe | Nama | Aturan Produksi | Mesin yang Cukup | Contoh Bahasa |
|---|---|---|---|---|
| 3 | Regular | A → aB atau A → a | Finite Automata | a*b+ (regex) |
| 2 | Context-Free | A → α (α string apa saja) | Push-Down Automata (stack) | Palindrome aⁿbⁿ |
| 1 | Context-Sensitive | α→β dengan |α| ≤ |β| | Linear-Bounded Automata | aⁿbⁿcⁿ |
| 0 | Unrestricted | α→β (bebas) | Mesin Turing | Semua yang bisa dihitung |
Sepeda motor
(jalan lurus, cepat)
Truk dengan dongkrak
(bawa stack)
Truk + GPS terbatas
(lebih fleksibel)
Kapal luar angkasa
(mana pun bisa)
Jawaban: Python sintaks mayoritas Tipe-2 (CFG), tapi semantic analysis memerlukan Tipe-1 (hybrid).
Berikut adalah 10 soal pilihan ganda berdasarkan materi. Pilih jawaban yang benar!
Jawaban yang benar: 1-A, 2-D, 3-E, 4-B, 5-C, 6-B, 7-C, 8-D, 9-E, 10-D