download

Matakuliah : Konsep Bahasa Pemrograman
Tahun
: 2010
PENDAHULUAN DAN OVERVIEW BAHASA
PEMROGRAMAN
Pertemuan 1
Outline Materi
•
•
•
•
•
•
•
•
•
Bahasa Pemrograman?
Banyak Bahasa Pemrograman
Alasan mempelajari Bahasa Pemrograman
Kriteria Evaluasi Bahasa
Pengaruh pada Desain Bahasa
Kategori Bahasa
Metode Implementasi
Lingkungan Pemrograman
Overview Bahasa Pemrograman
Bina Nusantara University
3
Bahasa Pemrograman
• A programming language is an artificial language
designed to express computations that can be performed
by a machine, particularly a computer
Programming Language
Bahasa Pemrograman?
• What is a programming language?
– Abstraction of virtual machine
– The art of telling another human being what one wants the
computer to do
int sum(int[] x) {
int sum = 0;
n = 0;
while (n < x.length) {
sum += x[n];
}
return sum;
}
00101010101010
10101011111010
11101010101110
00101010101010
...
Banyak Bahasa Pemrograman
• Berapa banyak bahasa pemrograman yang kamu
ketahui?
• Ribuan bahasa pemrograman berbeda telah
dikembangkan kebanyakan di bidang komputer.
Sebagian dari mereka dapat dilihat di URL berikut:
– http://dmoz.org/Computers/Programming/Languages/
• Mengapa begitu banyak bahasa pemrograman?
– Evolusi
– Tujuan khusus
– Preferensi pribadi
Bina Nusantara University
6
Alasan mempelajari Bahasa Pemrogramann
• Meningkatkan kemampuan menyatakan ide
• Memperbaiki metode untuk memilih bahasa
yang tepat
• Meningkatkan kemampuan untuk mempelajari
bahasa baru
• Pemahaman yang lebih baik tentang
implementasi
• Secara keseluruhan meningkatkan pengetahuan
tentang komputasi
Bina Nusantara University
7
Kriteria Evaluasi Bahasa
• Readability: kemudahan bahasa untuk dibaca
dan dipahami
• Writability: kemudahan bahasa untuk digunakan
meng-create program
• Reliability: kinerja bahasa terhadap
spesifikasinya
• Cost: total cost
Bina Nusantara University
8
Readability
•
Sederhana
– Koleksi fitur dan konstruksi yang managable
– Sedikit fitur multiplikasi
– Sedikit operator overloading
•
Ortogonalitas
– Hanya sedikit fitur dan konstruksi yang dapat dikombinasikan
– Setiap kombinsi adalah legal
•
Pernyataan kendali
– Keberadaan struktur kontrol yang well-known(e.g., while statement)
•
Tipe data dan structures
– Tersedia fasilitas yang cukup untuk mendefinisikan struktur data
•
Sintaks
– Bentuk identifier : komposisi luwes
– Kata khusus da metode untuk membentuk pernyataan majemuk
– Bentuk dan arti: konstruksi self-descriptives, meaningful keywords
Bina Nusantara University
9
Writeability
• Sederhana dan ortogonalitas
– Sedikit konstruksi, sedikit primitif dan sedikit aturan
untuk mengkombinasikannya
• Mendukung abstraksi yaitu kemampuan untuk
mendifinisikan struktur dan operasi kompleks
yang memungkinkan detail disembunyikan
• Ekspresivitas
– Tersedianya sekelompok cara untuk menspesifikasi
operasi
– Contoh : tersedianya pernyataan for statement di
banyak bahasa pemrograman
Bina Nusantara University
10
Reliability
• Program disebut reliable jika dapat melakukan
spesifikasinya dalam semua kondisi
• Pencekan tipe
– Menguji tipe eror
• Exception handling
– Menangani run-time errors dan melalukan koreksi
• Aliasing
– Keberadaan dua atau lebih metode berbeda untuk merujuk
lokasi memori yang sama
– Anggota union dan pointer yang menunjuk variabel yang sama
– int& r = n;
// r alias dari n; mereka mempunyai nilai dan
alamat yang sama
• Readability dan writability
– Bahasa yang tidak mendukung cara “natural” untuk menyajikan
algoritma akan menggunakan pendekatan “unnatural” , dan
Bina Nusantara University
karenanya mengurangi reliabilitasnya.
11
Cost
• Melatih pemrogram untuk menggunakan
bahasa
• Menulis program
• Mengkompail program
• Mengeksekusi program
• Sistem implementasi bahasa: ketersediaan free
compilers
• Reliability: reliabilitas jelek akan tinggi biayanya
• Memelihara program
Bina Nusantara University
12
Desain Bahasa dipengaruhi oleh
• Arsitektur komputer
– Bahasa dikembangkan didasarkan pada arsitektur
komputer , dikenal sebagai arsitektur von Neumann
• Metodologi pemrograman
– Pengembangan metodologi baru (e.g.,
pengembangan OO) menghasilkan paradigma baru
dan bahasa pemrograman baru
Bina Nusantara University
13
Pengaruh Arsitektur Komputer
• Well-known arsitektur komputer : Von Neumann
• Bahasa imperatif paling dominan
–
–
–
–
Data dan program disimpan d memori
Memori terpisah dari CPU
Instruksi dan data dipindahkan dari memori to CPU
Basis bahasa imperatif
• Variabel memodelkan sel memori
• Pernyataan assignment memodelkan piping
• Iterasi sangat efisien
Bina Nusantara University
14
Pengaruh Metodologi Pemrograman
• 1950-an dan awal 1960-an: aplikasi sederhana
dan efisiensi mesin
• Akhir 1960-an: efisiensi manusia makin penting;
readability, struktur kontrol yang lebih baik
– Pemrograman terstruktur
– Desain top-down dan
• Akhir 1970-an: orientasi proses (subprogram)
ke orientasi data (ADT)
• Pertengahan 1980-an: OOP
– ADT + inheritance + (true) polymorphism
Bina Nusantara University
15
Kategori Bahasa
• Imperatif
– Fitur utama adalah variables, pernyataan statements, dan iterasi
– Contoh: C, Pascal
• Fungsional
– Aplikasi fungsi ke parameter
– Contoh: LISP, Scheme
• Logikal
– Rule-based
– Contoh: Prolog
• Orientasi object
– ADT, inheritance, late binding (i.e. true polymorphism)
– Contoh: Java, C++
• Markup
– Baru; bukan programming per se, tetapi digunakan untuk
menspesifikasi tata letak informasi di dokumen Web
– Contoh: XHTML, XML
Bina Nusantara University
16
Metode Implementasi
• Kompilasi
– Program diterjemahkan ke bahasa mesin
• Interpretasi murni
– Program di interpretasikan oleh program lain dikenal
dengan nama interpreter
• Sistem implementation hibrid
• Kompromi antara kompiler and interpreter
Bina Nusantara University
17
Kompilasi
• Terjemahkan high-level program (source
language) ke machine code (machine
language)
• Translasi lambat, eksekusi cepat
• Fase-fase proses kompilasi :
– lexical analysis: ubah karakter di program sumber ke
unit leksikal
– syntax analysis: transformasi unit leksikal ke parse
trees yang menyajikan struktur sintatik program
– Semantics analysis: generasi intermediate code
– Code generation: kode mesin di generasi
Bina Nusantara University
18
Von Neumann Bottleneck
• Kecepatan koneksi antara memori komputer dan
prosesor menentukan kecepatan komputer
• Instruksi program dieksekusi jauh lebih cepat
daripada kecepatan koneksi; hasilnya kecepatan
koneksi ada dalam bottleneck
• Dikenal dengan nama von Neumann bottleneck;
ia merupakan faktor pembatas utama dalam
kecepatan komputer
Bina Nusantara University
19
Pure Interpretation
• Tidak ada translasi
• Implementasi program lebih mudah (run-time
errors langsung ditayangkan)
• Eksekusi lambat (10 to 100 kali lebih lambat
daripada kompilasi)
• Membutuhkan ruang yang lebih banyak
• Jarang digunakan high-level languages
• Comeback signifikan lewat web scripting
languages (e.g., JavaScript)
Bina Nusantara University
20
Sistem Implementasi Hibrid
• Kompromi antara kompilator and interpreter
murni
• Program high-level diterjemahkan ke
intermediate language yang mudah di
interpretasikan
• Lebih cepat daripada pure interpretation
• Contoh
– Program Perl sebagian di kompilasi untuk mendeteksi
eror sebelum interpretasi
– Implementasi awal Java adalah hibrid; intermediate
form, byte code, menyediakan portabilitas ke
sembarang mesin yang mempunyai byte code
21
interpreter dan run-time system (disebut Java Virtual
Bina Nusantara University
Sistem Implementasi Just-in-Time
• Awalnya terjemahkan program ke intermediate
language
• Kemudian kompail intermediate language ke
machine code
• Versi machine code digunakan untuk call
berikutnya
• Sistem JIT digunakan oleh program Java
• Bahasa .NET di implementasikan dengan sistem
JIT
Bina Nusantara University
22
Lingkungan Pemrograman
• Koleksi tools yang digunakan untuk pengembangan
software
• UNIX
– Sistem operasi dan koleksi tool
– Sekarang kerap digunakan melalui GUI (e.g., CDE, KDE, or
GNOME) yang berjalan di atas UNIX
• Borland JBuilder
– Lingkungan pengembangan terintegrasi untuk Java
• Microsoft Visual Studio.NET
– Lingkungan visual besar dan kompleks
– Digunakan untuk pemrograman di C#, Visual BASIC.NET,
Jscript, J#, or C++
Bina Nusantara University
23
Overview Bahasa Pemrograman
• Genealogy bahasabahasa utama
• Sains: Fortran
• Bisnis: COBOL
• Pemrograman sistem:
C
• Sejarah obyek:
Simula dan Smalltalk
• Obyek dan efisiensi
eksekusi: C++
Bina Nusantara University
• Portabilitas dan
Safety: Java
• Fungsi, Rekursi dan
list: LISP
• Rule base: Prolog
• Bahasa script:
JavaScript, PHP, Perl
• Bahasa markup:
XSLT, JSP
24
Genealogi Bahasa Pemrograman
Bina Nusantara University
25
IBM 704 dan Fortran
• Komputasi floating point
• Fortran 0: 1954 – tidak diimplementasikan
• Fortran I:1957
– Didesain untuk IBM 704, dengan index registers dan floating point
hardware
– Lingkungan pengembangan
• Komputer kecil dan tidak reliabel
• Aplikasi sains
• Tak ada metodologi pemrograman atau tools
• Efisiensi mesin paling penting
– Pengaruh lingkungan pada desain Fortran I
• Tak butuh dynamic storage
• Butuh akses array dan counting loops yang lebih baik
• Tak ada string handling, decimal arithmetic, atau powerful
Bina Nusantara University input/output (untuk aplkasi komersial)
26
Fortran I
• Fortran pertama yang diimplementasikan
– Nama sampai enam karakter
– Post-test counting loop (DO)
– Formatted I/O
– Subprogram user-defined
– Pernyataan seleksi tiga-arah (aritmatika IF)
– Tak ada pernyataan deklarasi tipe data
• Evaluasi FORTRAN versi pertama
– Tak ada kompilasi terpisah
– Kompiler dirilis April 1957, sesudah 18 tahun usaha
– Programslebih besar dari 400 baris jarang dikompail secara benar
karena jeleknya reliabilitas 704
– Kode sangat cepat dan cepat digunakan secara luas
Bina Nusantara University
27
Fortran II, III dan IV
• Fortran II
– Didistribusikan tahun 1958
– Kompilasi terpisah
– Fixed the bugs
• Fortran III tidak diimplementasikan
• Fortran IV
–
–
–
–
–
Evolusi selama 1960-1962
Tipe deklarasi secara eksplisit
Pernyataan seleksi logikal
Subprogram name could be parameters
ANSI standard tahun 1966
Bina Nusantara University
28
Fortran 77, 90, 95, 03, dan 08
• Fortran 77 menjadi standar baru tahun 1978
– Penanganan strimg karakter
– Pernyataan kendali perulangan logikal , IF-THEN-ELSE
• Fortran 90
– Modul, pointer, array dinamik, rekursi, pernyataan CASE, cek tipe
parameter
• Fortran 95
– Parameterisasi tipe intrinsik, derived type, array notation, user generic
and interface
• Fortran 2003
– Parameterisasi tipe derive, fitur OO, C interoperatibility, IEEC interface,
ISO characters
• Fortran 2008
– Co-array, pemrograman paralel, sub-module fasilitas makro
Bina Nusantara University
29
Evaluasi Fortran
• Highly optimizing compilers (semua versi
sebelum 90)
– Tipe dan storage untuk semua variables adalah tetap
sebelum run time
• Berubah secara dramatis dari tahun ke tahun
selama komputer digunakan
• Dikarakteristik sebagai lingua franca of the
computing world
Bina Nusantara University
30
COBOL
• Komputerisasi bisnis untuk menghasilan laporan menggunakan
bilangan desimal dan karakter
• Lingkungan pengembangan
– UNIVAC awalnya menggunakan FLOW-MATIC
– USAF menggunakan AIMACO
– IBM mengmbangkan COMTRAN
• Basis COBOL adalah FLOW-MATIC
• Fitur FLOW-MATIC
–
–
–
–
Nama sampai 12 karakter , dengan embedded hyphens
English names untuk operator hitung
Data dan kode terpisah
Kata kerja adalah kata pertama disetiap pernyataan
Bina Nusantara University
31
Proses Desain COBOL
• Pertemuan pertama di Pentagon - Mei 1959
• Tujuan desain
–
–
–
–
Harus mirip dengan simple English
Harus mudah digunakan meskipun kurang powerful
Harus memperluas pengguna komputer
Harus tidak bias dengan masalah kompiler
• Anggota komite adalah dari semua persusahaan
komputer dan DoD
• Masalah: ekspresi aritmatika? subscripts? Persaingan
diantara perusahaan komputer
Bina Nusantara University
32
Evaluasi COBOL
• Kontribusi
– Fasilitas makro pertama di high-level language
– Struktur data hirarki (records)
– Pernyataan nested selection
– Nama panjang (sampai 30 karakter), dengan hyphens
– Divisi data terpisah
– Bahasa pertama yang diinginkan oleh DoD dan akan
gagal tanpa dukungan DoD
– Tetap merupakan bahasa aplikasi bisnis yang paling
banyak digunakan
Bina Nusantara University
33
LISP
• Pioner pemrograman fungsional
– Tak perlu variables atau assignment
– Manipulasi simbol, bukan numerik
– Kontrol melalui rekursi dan ekspresi konditional
• LISt Processing language
– Dirancang di MIT oleh McCarthy
• AI riset butuh bahasa untuk
– Memproses data dalam lists (bukan arrays)
– Komputasi simbolik (bukan numerik)
•
•
•
•
Bahasa paling dominan untuk AI
Hanya dua tipe data : atoms dan lists
Sintaks berdasarkan pada lambda calculus
COMMON LISP dan Scheme adalah dialek dari LISP sedangkan
Bina Nusantara
University
ML,
Miranda, dan Haskell adalah related languages
34
Scheme dan Common LISP
• Scheme
–
–
–
–
–
Dikembangkan di MIT pertengahan 1970s
Kecil
Ekstensif menggunakan static scoping
Fungsi adalah first-class entities
Sintaks sederhana (dan ukuran kecil) membuatnya ideal untuk
aplikasi pendidikan
• COMMON Lisp
– Besar dan kompleks
– Sebuah usaha untuk mengkombinaiskan semua fitur beberapa
dialek Lisp dalam satu bahasa
Bina Nusantara University
35
C
• Dirancang untuk pemrograman sistem di Bell
Labs oleh Dennis Richie tahun 1972
• Utamanya berkembang dari BCLP, B, tetapi juga
ALGOL 68
• System Programming
– Operating system
– Intermediate language by implementation of other
languages
• Himpunan operator yang powerful, tetapi jelek
type checking
Bina Nusantara University
36
C
• Awalnya menyebar melalui UNIX
• Banyak bidang aplikasi
• C99
–
–
–
–
–
In line function
One line comment
Variable length array
New data type such as long long int
Variadic macros
• C1X: project begin in 2007
Bina Nusantara University
37
Prolog
• Dikembangkan oleh Comerauer dan Roussel (University
of Aix-Marseille), dengan bantuan Kowalski ( University
of Edinburgh)
• Didasarkan pada formal logic
• Non-procedural
• Dapat diringkas sebagai sistem basis data intelegen
yangmenggunakan proses inferensi untuk membuktikan
kebenaran suatu queries
• Sangat tidak efisien, bidang aplikasi sedikit
Bina Nusantara University
38
Ada
• Usaha perancangan yang besar sepanjang sejarah, melibatkan
ratusan orang, banyak biaya selama delapan tahun
• Nama Ada berasal dari Augusta Ada Byron, dikenal sebagai
pemrogram pertama
• Kontribusi
–
–
–
–
Packages – mendukung abstraksi data
Exception handling
Unit program generik
Concurrency melalui task
• Komentar
– Desain kompetitif
– Meliputi banyak aspek yang sekarang dikenal dengan sebagai
software engineering and language design
– Kompiler pertama sangat sukar, muncul setelah lima tahun desain
Bina Nusantara University
bahasa diselesaikan
39
Ada 95
• Ada 95 (mulai desain tahun 1988)
–
–
–
–
Mendukung OOP melalui tipe derivasi
Mekanisme kontrol yang lebih baik untuk shared data
Fitur concurrency baru
Kepustakaan lebih luwes
• Popularitas menurun karena DoD tidak lagi
mendukungnya dan juga karena populernya
C++
Bina Nusantara University
40
C++
•
•
•
•
•
•
•
•
Dikembangkandi Bell Labs oleh Stroustrup tahun 1980
Evolusi dari C dan SIMULA 67
Fasilitas untuk OOP sebagian diambil dari SIMULA 67
Bahasa yang besar dan kompleks , sebagian karena
mendukung bahasa prosedural (imperatif) and OO P
Popularitas cepat berkembang bersama dengan OOP
Standar ANSI disetujui tahun November 1997 dan
kemudian diperbarui tahun 2003; dikenal dengan nama
C++98 dan C++03
Versi Microsoft (rilis bersama .NET tahun 2002):
Managed C++
C++0x sedang dikembangkan sebagai standard baru
Bina Nusantara University
41
Java
• Dikembangkan di Sun awal tahun 1990-an
– C dan C++ tidak memuaskan jika dicangkokkan di
alat-alat elektronik
• Berbasiskan C++
– Jauh lebih sederhana (tidak mencakup struct,
union, enum, aritmatika pointer dan separuh dari
assignment coercions di C++)
– Hanya mendukung OOP
– Punya references, tetapi tidak pointers
– Mendukung applets and concurrency
Bina Nusantara University
42
Evaluasi Java
•
•
•
•
•
•
Eliminasi fitur tak aman dari C++
Fitur concurrency
Kepustakaan untuk applets, GUI, akses database
Portable: konsep Java Virtual Machine, kompiler JIT
Banyak digunakan untuk halaman WWW
Penggunaan di bidang lain naik lebih cepat daripada
bahasa lain
• Versi terakhir 5.0 dirilis tahun 2004
Bina Nusantara University
43
Bahasa Scripting untuk Web
• Bahasa scripting (file) memuat instruksi yang akan dieksekusi
• JavaScript
– Kerjasama antara Netscape dan Sun Microsystems
– Digunakan di pemrograman Web (sisi client) untuk meng-create
dokumen HTML dinamik
– Relasi ke Java hanya melalui sintaks
• PHP
– PHP: Hypertext Preprocessor
– Digunakan untuk aplikasi Web (sisi server) dan menghasilkan kode
HTML sebagai keluaran
• Perl
–
–
–
–
Dikembangkan oleh Larry Wall
Variables Perl adalah statically typed dan implicitly declared
Powerful tetapi somewhat dangerous
Banyak digunakan sebagai general purpose language
Bina Nusantara University
44
C#
• Bagian dari pengembangan platfom .NET
• Basis pada C, C++ , Java, dan Delphi
• Menyediakan bahasa untuk component-based
software development
• Semua bahasa .NET (C#, Visual BASIC.NET,
Managed C++, J#.NET, dan Jscript.NET)
menggunakan Common Type System (CTS),
yang menyediakan common class library
• Sepertinya akan menjadi bahasa yang banyak
digunakan di milenium baru
Bina Nusantara University
45
Markup/Programming Hybrid Languages
• XSLT
– eXtensible Markup Language (XML): a metamarkup language
– eXtensible Stylesheet Language Transformation (XSTL)
mengubah dokumen XML untuk ditampilkan
– Konstruksi pemrograman misalnya looping.
• JSP
– Java Server Pages: koleksi teknologi untuk mendukung
dokumen Web dinamik.
– servlet: program Java yang menetap di server
– Keluaran servlet ditampilkan oleh browser
Bina Nusantara University
46
LATIHAN
A. SOAL PILIHAN
1. Opsi berikut yang digunakan untuk melakukan scripting file PDF adalah
a. Perl
b. JavaScript
c. Adobe Acrobat d. Mozzila
2. Opsi berikut ini yang menyebabkan terjadinya aliasing di C++ adalah
a. variant record
b. union
c. reference type d.
EQUIVALENCE
3. Spaghetti code adalah julukan untuk
a. modular programming
c. structured programming
Bina Nusantara University
b. procedural programming
d. unstructured programming
47
LATIHAN
4. Dua alasan utama mengapa Java lebih aman daripada C++ adalah
a. no index type checking dan narrowing type coercions
b. no index type checking dan widening type coercions
c. index type checking dan narrowing type coercions
d. index type checking dan widening type coercions
5. Bahasa yang dijuluki sebagai lingua franca of computing language oleh
Alan Perlis, salah satu desainer Algol, adalah
a. FORTRAN
b. COBOL
c. C
d.
Java
Bina Nusantara University
48
LATIHAN
B. SOAL URAIAN
1. Sebagian besar bahasa pemrograman khususnya bahasa imperatif
dirancang untuk
diimplementasikan di von Nueman architecture.
a. Uraikan apa yang kamu ketahui tentang von Nueman computer
architecture.
b. Apa yang kamu ketahui tentang von Neuman bottleneck?
c. Apa pula yang kamu ketahui tentang bottleneck of a pure interpreter?
2. Definsikan apa yang disebut scripting language. Saat ini ada banyak tipe
scripting language. Dua diantaranya yang paling popular adalah JavaScript
dan PHP. Jelaskan apa beda diantara keduanya.
Bina Nusantara University
49
Ringkasan
• Alasan mempelajari bahasa pemrograman:
– Meningkatkan kemampuan untuk menggunakan konstruksi
berbeda
– Memperluas wawasan dalam memilih bahasa baru
– Mempelajari bahasa baru dengan lebih mudah
• Kriteria utama untuk mengevaluasi bahasa : readability, writability,
reliability dan cost
• Faktor utama yang mempengaruhi desain bahasa: arsitektur
komputer dan metodologi pengembangan software
• Metode untuk mengimplementasikan bahasa: kompilasi, pure
interpretasi dan sistem hibrid
• Pengembangan, lingkungan pengembangan dan evaluasi sejumlah
bahasa utama
• Perspektif isu saat ini di rancangan bahasa
Bina Nusantara University
50