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
© Copyright 2025 Paperzz