$theTitle=wp_title(" - ", false); if($theTitle != "") { ?>
One Stop Computer Science
12 Oct // php the_time('Y') ?>
1. Names
Jika terlalu pendek, nama tidak dapat memiliki arti.
Contoh bahasa:
Karakter spesial:
Case sensitive
Nama di C merupakan case sensitive. Kerugiannya adalah readability (nama yang serupa tapi tidak sama, contoh: a dengan A berbeda).
Special words
Bantuan untuk readability; digunakan untuk membatasi pernyataan klausa.
Reserved word adalah special word yang tidak digunakan sebagai nama. Potensi masalah menggunakan reserved word adalah jika terlalu banyak, banyak terjadi bentrokan (contoh: COBOL memiliki 300 reserved words).
Variabel
Variabel adalah abstraksi dari sel memori. Variabel terdiri dari enam atribut, yaitu:
2. Bindings
Binding adalah sebuah gabungan antara entitas dan atribut, seperti antara sebuah variabel dan tipe atau nilainya, atau antara operasi dan sebuah simbol.
Possible binding times:
Dynamic Type Binding
Digunakan pada JavaScript, Phyton, Ruby, PHP, dan C#.
Keuntungan: Flexibility
Kerugian: Type error sulit dideteksi oleh compiler dan memakan banyak memori.
Kategori variabel berdasarkan lifetime:
3. Scope
Scope dari sebuah variabel adalah jangkauan dari pernyataan yang kelihatan. Local variables dari sebuah program adalah semua yang dideklarasikan dalam unit tersebut, sedangkan nonlocal variables dari sebuah program adalah semua yang kelihatan dalam unit tersebut namun tidak dideklarasikan. Global variables adalah kategori spesial dari nonlocal variables. The scope rules dari sebuah bahasa menentukan bagaimana acuan nama terkait dengan variabel.
Static Scope
Berdasarkan program text. Untuk menghubungkan naam dengan acuan kepada sebuah variabel, compiler harus menemukan deklarasi terlebih dahulu.
Search process: mencari deklarasi, awalnya lokal, kemudian menyebar ke lampiran yang lebih luas hingga akhirnya ditemukan untuk sebuah nama.
Enclosing static scopes disebut static ancestors; static ancestor yang terdekat disebut static parent.
Global Scope
C, C++, PHP, dan Phyton mendukung sebuah struktur program yang terdiri dari sebuah urutan fungsi yang didefinisikan dalam file. C dan C++ memiliki deklarasi dan definisi.
Static Scoping
Bekerja dengan baik di banyak situasi. Masalahnya: dalam kebanyakan kasus, terlalu banyak akses yang mungkin terjadi dan sebagai program yang berkembang, struktur awal dihancurkan dan local variables terkadang menjadi global; subprogram juga tertarik menjadi global dibandingkan nested.
Dynamic Scope
Didasarkan oleh panggilan urutan dari sebuah unit program, bukan textual layout. Mengacu kepada variabel yang terhubung dengan deklarasi untuk pencarian panggilan ikatan subprogram yang terpaksa dieksekusi pada bagian ini.
Contoh:
function big() {
function sub1()
var x = 7;
function sub2() {
var y = x;
}
var x = 3;
}
–Static scoping
–Dynamic scoping
28 Sep // php the_time('Y') ?>
Definisi
Syntax adalah bentuk atau struktur dari ekspresi, pernyataan, dan unit program.
Semantics adalah terjemahan dari ekspresi, pernyataan, dan unit program.
Permasalahan dalam Mendeskripsikan Syntax:
Terminologi:
Definisi formal
Sebuah alat recognition membaca input string dari sebuah bahasa dan memutuskan apakah input sting merupakan sebuah bahasa.
Sebuah alat yang dapat menghasilkan kalimat dari sebuah bahasa. Alat ini dapat menentukan apakah kalimat tersebut benar menurut syntax dengan membandingkannya ke sebuah struktur generator.
BNF Fundamentals
Dalam BNF, abstraksi digunakan untuk merepresentasi kelas dari syntactic structure (nonterminal symbols atau terminals).
Terminal adalah lexemes atau tokens.
Peraturannya adalah memiliki lengan kiri (LHS) yang merupakan nonterminal dan lengan kanan (RHS) yang merupakan string terminals dan/atau nonterminals.
Nonterminals biasanya diapit oleh angle brackets (<>) seperti <ident_list> -> identifier | identifier.
BNF Rule
Sebuah abstraksi ( atau nonterminal symbol) boleh memiliki lebih dari satu RHS.
<stmt> -> <single_stmt>
| begin <stmt_list> end
Derivasi
Sebuah derivasi adalah aplikasi yang diulang oleh aturan tertentu, dimulai dari simbol start dan diakhiri dengan sebuah kalimat (all terminal symbols).
Setiap string dari simbol dalam derivasi merupakan sentential form.
Sebuah kalimat adalah sentential form yang hanya memiliki simbol terminal.
Sebuah derivasi yang paling kiri dimana yang paling kiri merupakan nonterminal dalam setiap sentential form adalah yang diperluas.
Sebuah derivasi mungkin tidak paling kiri atau paling kanan.
Ambiguitas dalam Grammar
Sebuah grammar adalah ambigu jika dan hanya jika sebuah grammar menghasilkan sentential form yang memiliki dua atau lebih distinct parse trees.
Static Semanctics
Context-free grammars (CFG) tidak dapat mendeskripsikan semua syntax dari programming language.
Kategori konstruksi yang menjadi masalah:
Attribute Grammars (AG)
AG adalah context-free grammar dengan beberapa tambahan sebagai berikut:
AG memiliki tambahan CFG untuk membawa semantic info ke parse tree nodes.
Nilai utama dari AG:
Contoh AG:
<assign> -> <var> = <expr>
<expr> -> <var> + <var> | <var>
Operational Semantics
Mendeskripsikan arti sebuah program dengan mengeksekusi pernyataan dalam mesin, baik simulasi maupun nyata. Perubahan lokasi dalam mesin menandakan arti dari pernyataan. Untuk mengoperasikan semantik, dibutuhkan high-level language dan sebuah virtual machine.
Operational semantics digunakan untuk: bahasa manual dan textbook serta untuk mengajarkan bahasa pemrograman.
Denotational Semantics
Sebuah proses membangun denotational specification untuk sebuah bahasa:
Axiomatic Semantics
Contoh:
Denotation Semantics vs Operational Semantics
27 Sep // php the_time('Y') ?>
Mengapa kita perlu mempelajari konsep dari Programming Language?
Kita dapat dengan mudah mempelajari bahasa pemrogaman dengan lebih mudah.
Pada dasarnya, semua bahasa pemrograman adalah serupa. Jika kita sudah memahami konsep yang ada, maka kita dapat dengan mudah memahami semua bahasa pemrograman. Kita juga dapat menggunakan bahasa pemrograman dengan lebih baik jika kita memahami konsep bahasa pemrograman.
Kriteria bahasa pemrograman yang baik
1. Readability: mudah dibaca dan dimengerti oleh banyak orang
2. Writeability: mudah digunakan untuk membuat program
3. Reliability: mudah untuk mencapai ekspektasi programmer
4. Cost: memiliki biaya yang terjangkau.
Penyebaran dalam Desain Bahasa Pemrograman
1. Computer Architecture
Bahasa yang dikembangkan oleh seorang arsitektur komputer terkenal yaitu Von Neumann.
Bahasa ini sangat terkenal karena komputer Von Neumann:
Metode Penyebaran Programming
Metode Implementasi
I. Compilation
II. Pure Interpretation
III. Sistem Implementasi Hybrid
Recent Comments