Materi 3 - Syntax, Semantic & Grammar

Bahasa pemrograman merupakan notasi formal dan mempunyai 2 komponen utama

Syntax dan Semantic

Syntax

kumpulan aturan formal yang menspesifikasikan komposisi suatu program yang terdiri dari huruf.,angka & karakter yang lain.

Design Bahasa Pemrogramann

  • Abstraction => kemampuan untuk mengkonstruksi suatu pola yang berulang-ulang. Misalnya: subprosedure.


  • Simplycity => berarti kesederhanaan. Semakin sedikit konsep untuk dapat dimengerti,berarti semakin baik.


  • Regularity =>keteraturan. Semakin sedikit melanggar aturan berarti semakin baik.


  • Konsistensi => ketetapan suatu alur atau bentuk bahasa


  • Translation => penerjemah yang cepat & menghasilkan kode tujuan yang efisien.


Criteria SYNTAX

Readability (mudah dibaca)

Writeability (mudah untuk ditulis)

Verifiability (verifikasi program (konsep kebenaran)).

Kemudahan Translasi atau Mudah bagi manusia, bagi bahasa yang sulit di translasi.

Pengurangan Ambiguitas atau memilki dua arti atau bahkan lebih.

Misalnya: A(i) (array atau pemanggilan fungsi).

Ciri Syntax

  • Kumpulan aturan yang mendefinisikan suatu bentuk bahasa
  • Syntax mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar
  • Kata dikonstruksikan dengan karakter-karakter alfabet
  • Contoh keyword (reserve word) dalam bahasa C while, do, if, else, dll
  • Syntax mengatur cara mengkombinasikan kata-kata tersebut ke dalamsuatu statement dengan bentuk yang benar sehingga dapat disusunsuatu program yang dapat berjalan dengan benar
  • Syntax tidak mengerti arti atau isi dari suatu kalimat, semantic yang bisamengartikannya
  • Syntax menyediakan bentuk-bentuk notasi untuk kominikasi antara programmer dan pemroses bahasa pemrograman, sehingga mempermudah pembuatan suatu program


2 Kumpulan Aturan Syntax

Lexical

menspesifikasikan kumpulan karakter yang terdapat dalam alphabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan diterima

Syntactic

elemen-elemen yang mengatur bentuk suatu statement-statement dalam bahasa pemrograman.

Semantic

  • Mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut
  • int nilai [10]
  • Semantic akan menentukan deklarasi diatas dan menyebabkan ruang sebanyak 10 elemen integer yang diberikan kepada variabel nilai
  • if (a>b) max = a else max = b;
  • Ekspresi a>b harus dievaluasi terlebih dahulu , tergantung dari nilai ini satu dari dua statement di belakangnya akan dieksekusi

Read more


Materi 2 - Evolusi Bahasa Pemrograman

Evolusi Bahasa Pemrograman diantaranya adalah sebagai berikut:

Plankalkul (1945)
• Bahasa Pemrograman yang pertama kali ditemukan
• tidak pernah diimplementasikan
• Struktur bahasa terdiri dari array dan records.

Pseudocode (1949)
Pada saat itu alasan mengapa digunakan bahasa ini adalah karena sulitnya pemrograman jika harus menggunakan bahasa mesin / machine code. Bahasa ini terdiri atas 2 tipe, yaitu:

a Shortcode (1949)
Ditemukan oleh Mauchly dan digunakan pada komputer BINAC. Ekspresi dikodekan dari kiri ke kanan
b Speedcoding (1954)
• Ditemukan Backus digunakan pada komputer IBM 701
• terdiri atas Pseudo operation untuk fungsi aritmatik dan matematika
• Percabangan kondisional dan tanpa kondisi.
• Autoincrement register untuk pengaksesan array

Laning dan Zierler System (1953)
• diimplementasikan pada komputer Whilwind – MIT
• Laning dan Zierler System bahasa yang menggunakan system compiler pertama di dunia
• Punya fasilitas translasi ekspresi dan pemanggilan fungsi.
• Kelemahan : tidak pernah diporting ke mesin lain.

FORTRAN I (1957)
• FORTRAN atau yang dikenal dengan FORTRAN 0 pada tahun 1954
• FORTRAN 0 tidak diimplementasikan
• FORmula TRANslation dibuat oleh John Backus dan dirancang untuk komputer IBM 704 memiliki Index Register dan hardware floating-point.
• FORTRAN => FORTRAN I merupakan bahasa tingkat tinggi pertama yang diterima secara luas

Implementasi FORTRAN I
1. Nama variable maksimal 6 karakter.
2. Input/Output dapat diformat (diatur).
3. User dapat membuat subrutin (subprogram) sendiri.
4. Three-way selection statement (arithmetic IF statement).
5. Tidak ada statement tipe data. (semua data dianggap sama)

FORTRAN II (1958)
• Perbaikan dari FORTRAN I
• Beda FORTRAN II & FORTRAN I adalah compilationnya
• FORTRAN I compilationnya tidak terpisah, FORTRAN II compilationnya terpisah

FORTRAN IV (1962)
• Menggunakan deklarasi tipe eksplisit serta logical selection statement (Logical IF)
• Subprogram dapat menjadi parameter
• Standar ANSI pada tahun 1968

FORTRAN 77 (1978)
• Salah satu perubahan dari FORTRAN sebelumnya adalah pada FORTRAN 77 ini dilengkapi dengan character-string handling
• Logical loop control statement
• Struktur IF dirubah menjadi IF-THEN-ELSE

FORTRAN 90 (1990)
• Menggunakan modul-modul dengan akses private maupun public
• Terdapat array dinamik. record dan pointer
• Bersifat rekursif
• Terdapat statement CASE, EXIT, dan CYCLE
• Pengecekan tipe parameter

LISP (1959)
• LISt Processing dibuat oleh John McCarthy
• Berdasarkan riset Artificial Intellegence membutuhkan bahasa yang memproses data menggunakan list (bukan array) dan bahasa yang paling cocok adalah LISP
• Mendukung komputasi simbolik (bukan numerik)
• Hanya menggunakan 2 tipe data, yaitu Atom dan List. Sintaksnya didasarkan pada Kalkulus Lambda (Lambda calculus)
• Pionir dari functional programming
• Tidak membutuhkan variable atau assignment
Kontrol dilakukan lewat rekursi dan ekspresi kondisional. Masih merupakan bahasa yang dominan dalam AI. COMMON LISP dan Scheme merupakan dialek dari LISP. Terdapat bahasa-bahasa lain yang berhubungan, yaitu ML, Miranda, Haskell

ALGOL 58 (1958)
• Merupakan singkatan dari ALGOrithmic Language.
• Alasan dikembangkannya ALGOL 58:

1. FORTRAN terbatas untuk mesin IBM 70x.
2. Bahasa-bahasa yang lain juga dikembangkan tetapi hanya untuk mesin tertentu.
3. Tidak terdapat bahasa yang portable, semuanya bergantung pada mesin
4. Tidak terdapat bahasa yang universal.

• Tujuan ALGOL adalah bahasa ini mendekati notasi matematika, baik untuk mendeskripsikan algoritma, dan harus dapat ditranslasikan ke kode mesin

• Fitur dari bahasa ALGOL:
1. Menggunakan konsep tipe data secara formal.
2. Nama variable tidak terbatas panjangnya.
3. Index array tidak terbatas.
4. Parameter dipisahkan oleh modenya (in dan out).
5. Index ditempatkan dalam bracket (tanda [ ]).
6. Mendukung compound statement (pernyataan majemuk) (begin…end).
7. Tanda semicolon (titik koma, ;) merupakan pemisah antar statement.
8. Menggunakan operator assignment :=
9. Statement IF mempunyai ELSE-IF (nested-IF)

ALGOL 60 (1960)
• Merupakan modifikasi dari ALGOL 58.
• Fitur baru pada ALGOL 6 adalah:

1. Block structure (local scope).
2. 2 model passing parameter (by name dan by value).
3. Rekursi subprogram.
4. Stack-dynamic array.

• ALGOL 60 penyempurnaan dari ALGOL 58
• Belum mempunyai I/O dan string handling
• Bahasa pertama yang syntaxnya didefinisikan secara formal. (Menggunakan BNF- Backus Naur Form/ Backus Normal Form)
• Bahasa ini tidak dipakai secara luas karena dominasi FORTRAN di Amerika dan syntaxnya formal

COBOL (1960)
• Singkatan dari COmmon Business Oriented Language.
• Tujuan desain COBOL adalah:

1. Harus seperti bahasa Inggris yang sederhana
2. Mudah untuk digunakan
3. Harus dapat dipergunakan secara luas.
4. Harus terbebas dari masalah implementasi compiler

• Kontribusi terhadap perkembangan bahasa pemrograman :

1. Fasilitas makro yang pertama dalam bahasa tingkat tinggi
2. Struktur data hirarki (record)
3. Statement kondisi bersarang (nested selection statements)
4. Nama variable dapat mencapai 30 karakter
5. Pembagian data

BASIC (1964)
Beginners All-purpose Symbolic Instruction Code dibuat oleh John Kemeny dan Thomas Kurtz. Walaupun struktur program ini jelek tetapi bahasa ini tergolong mudah untuk dipelajari. Dialek dari BASIC yang sekarang populer adalah QuickBASIC dan Visual BASIC.

Pascal (1971)
• Didesain oleh Niklaus Wirth, yang keluar dari tim ALGOL 68
• Bahasa yang dikembangkan dari ALGOL 68
• Didesain untuk pengajaran pemrograman terstruktur
• Kecil dan mudah, tidak terdapat hal yang benar-benar baru
• Menjadi bahasa pemrograman yang digunakan secara luas untuk mengajarkan pemrograman di universitas-universitas.

C (1972)
• Didesain untuk pemrograman system oleh Dennis Ritchie dari Bell Labs
• Dikembangkan dari bahasa B dan ALGOL 68
• Memiliki operator yang banyak, tetapi dari segi pengecekan tipe data (type checking) kurang baik
• Didistribusikan bersama system operasi UNIX

Smalltalk (1972-1980)
• Dikembangkan di Xerox Palo Alto Research Center (Xerox PARC), oleh Alan Kay, kemudian dilanjutkan oleh Adele Goldberg
• Bahasa yang pertama kali mengimplementasikan konsep object-oriented (data abstraction, inheritance, dan dynamic type binding)
• Merupakan pionir dari GUI (Graphical User Interface).

C++ (1985)
Dikembangkan oleh Bjarne Stroustrup di Bell Labs. Merupakan pengembangkan dari C dan SIMULA 67. Terdapat fasilitas OOP yang berasal dari SIMULA 67 dan ditambahkan ke C. Mempunyai exception handling. Merupakan bahasa yang besar dan kompleks karena mendukung procedural programming dan object-oriented programming. Popularitasnya cepat berkembang bersama dengan OOP. Menjadi standard ANSI pada tahun 1997.

Java (1995)
Dikembangkan oleh James Gosling, Sun Microsystems. Java didasarkan pada penyederhanakan C++. Kekurangan Java adalah bahasa ini hanya mendukung OOP. Java mempunyai reference, tetapi tidak pointer. Terdapat juga dukungan untuk applets (world wide web) dan concurrency (Java Threads).

Scripting Language untuk Web
a) JavaScript
Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document. Mempunyai syntax yang mirip dengan Java.

b) PHP (PHP Hypertext Preprocessor)
Digunakan pada Pemrograman Web (server-side). PHP menghasilkan code HTML sebagai outputnya. Mempunyai syntax yang mirip dengan C++ (support OOP).

c) VBScript
Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document. Didasarkan atas Visual Basic. Bahasa ini dikembangkan oleh Microsoft.

d) Jscript
Digunakan pada Pemrograman Web (client-side) untuk mengahasilkan dynamic HTML document. Memiliki syntac yang mirip dangan C++. Dikembangkan oleh Microsoft.

e) ASP (Active Server Page)
Digunakan pada Pemrograman Web (server-side) menghasilkan code HTML sebagai outputnya. Dikembangkan oleh Microsoft.

Read more


Materi 1 - Konsep Bahasa Pemrograman

Definisi komputer
Alat yang digunakan secara cepat, mengelola,menyimpan dan membacanya kembali

Algoritma
Urutan operasi yang akan dikerjakan berurutan sehingga mengeluarkan hasil yang diinginkan.

Program
Algoritma yang disusun menggunakan bahasa tertentu.

Bahasa pemrograman
Aturan - aturan untuk menyatukan algoritma.

how to learn
*horizontal = bahasa pemrograman yang dipilih dan dipelajari secara berurutan.
*Vertikal = membandingkan kelebihan dan kekurangan dari beberapa bahasa pemrograman.
*memilih bahasa pemrograman yang tidak diminati orang lain (bahasa pemrograman yang sulit)

jenis bahasa
+ bahasa mesin
*Low level language
*di eksekusi langsung oleh komputer
*proses eksekusi cepat
*memori yang dibutuhkan sedikit
*flexsible untuk membuat layer software yang baru
*tergantung pada mesin
*hanya terdiri dari 0 dan 1

+bahasa assembly
*menggunakan mnemonic
*menggunakan bahasa kode atau simbolik
*tergantung pada mesin
+bahasa tingkat tinggi
*melalui software
*melalui proses penerjemahan ke bahasa mesin
*proses pengekselusian lambat
*bahasanya lebih mudah di mengerti

Why we learn
+meningkatkan cara berpikir tentang konsep pemrograman
+dapat memilih bahasa yang tepat untuk permasalahan tertentu
+beradaptasi untuk bahasa pemrograman yang baru
+meningkatkan kemampuan untuk membuat bahasa pemrograman baru

programing domain
Sistem operasi
Aplikasi
Web
Game developer
etc

Read more

SWCU - black edition