02 evolution
TRANSCRIPT
Perkembangan Pemrograman
Arif Rahman, ST MT
1
Pengertian Baru Era Kom
puter
2
Domain
Pemrogram
anAplikasi ilmiah
Komputasi perhitungan banyak bilangan real atau floating
FortranAplikasi Bisnis
Menghasilkan laporan dengan angka desimal dan karakter
COBOLKecerdasan buatan (artificial intelligence)
Lebih banyak manipulasi simbol daripada angka LISP
Pemrograman sistem Membutuhkan efisiensi untuk penggunaan
berkelanjutan C
Web Software markup (e.g., XHTML), scripting (e.g., PHP),
general-purpose (e.g., Java), database (e.g., MySQL)
3
Evolusi Bahasa Pem
rograman
Zuse’s PlankalkulMinimal Hardware
Programming: PseudocodesThe IBM 704 and FortranFunctional Programming: LISPThe First Step Toward
Sophistication: ALGOL 60Computerizing Business
Records: COBOLThe Beginnings of
Timesharing: BASIC
4
Evolusi Bahasa Pem
rograman
Everything for Everybody: PL/ITwo Early Dynamic Languages: APL and SNOBOL
The Beginnings of Data Abstraction: SIMULA 67
Orthogonal Design: ALGOL 68Some Early Descendants of the ALGOLs
Programming Based on Logic: Prolog
History's Largest Design Effort: Ada
Teaching Programming : Pascal5
Evolusi Bahasa Pem
rograman
Object-Oriented Programming: Smalltalk
Combining Imperative ad Object-Oriented Features: C++
An Imperative-Based Object-Oriented Language: Java
Scripting Languages: JavaScript, PHP, and Python
A C-Based Language for the New Millennium: C#
Markup/Programming Hybrid Languages
6
Genealogy of Com
mon Languages
7
Metodologi
Pemrogram
an1950 dan awal 1960: aplikasi sederhana;
memperhatikan efisiensi mesinAkhir 1960: efisiensi orang menjadi
perhatian; kemudahan dibaca, struktur kontrol lebih baik structured (sequential) programming top-down design and step-wise refinement
Akhir 1970: Process-oriented ke data-oriented data abstraction
Pertengahan 1980: Object-oriented programming Data abstraction + inheritance + polymorphism
Akhir 1980: Visual programming Data abstraction + visual object Event-driven programming
8
Kategori Bahasa Pem
rograman
ImperativeCentral features are variables, assignment
statements, and iteration. Examples: C, Pascal
FunctionalMain means of making computations is by
applying functions to given parameters. Examples: LISP, Scheme
LogicRule-based (rules are specified in no
particular order). Example: PrologObject-oriented
Data abstraction, inheritance, late binding. Examples: Java, C++
Markup New; not a programming per se, but used
to specify the layout of information in Web documents. Examples: XHTML, XML
9
Metode Im
plementasi
CompilationProgram diterjemahkan ke
bahasa mesinPure Interpretation
Program diinterpretasikan program lain
Hybrid Implementation SystemsPenggabungan compilers dan
interpreters
10
Metode Im
plementasi
11
Compilation
Menerjemahkan high-level program (source language) menjadi machine code (machine language)
Slow translation, fast executionProses compilation mempunyai beberapa tahap:
lexical analysis: mengkonversi characters dalam source program menjadi lexical units
syntax analysis: mentransformasi lexical units menjadi parse trees yang merepresentasikan syntactic structure dari program
Semantics analysis: membangkitkan intermediate code
code generation: membangkitkan machine code
12
Proses Compilation
13
Sourceprogram
Lexicalanalyzer
Syntaxanalyzer
Intermediatecode generator(and semantic
analyzer)
Symboltable Optimization
Lexical unit
Parse trees
Intermediate code
Codegenerator
Computer
Machine language
Results
Input data
(optional)
Additional Compilation
Terminologies
Load module (executable image): kode user dan sistem bersama
Linking and loading: mengumpulkan kode sistem terlebih dahulu dan menghubungkannya dengan kode user
14
Pure InterpretationTanpa penerjemahanImplementasi program yang lebih
mudah (run-time errors dapat ditampilkan dengan mudah dan segera)
Slower execution (10 hingga 100 kali lebih lambat dibandingkan compiled programs)
Seringkali membutuhkan lebih banyak space
Jarang digunakan di high-level languages
Mulai digunakan pada Web scripting languages (e.g., JavaScript)
15
Pure Interpretation Process
16
Sourceprogram
Interpreter
Results
Input data
Hybrid Im
plementation
Systems
Kompromisasi compilers dan interpreters
High-level language program diterjemahkan dalam intermediate language yang memudahkan interpretation
Faster than pure interpretation
17
Hybrid Im
plementation
Process
18
Sourceprogram
Lexicalanalyzer
Syntaxanalyzer
Intermediatecode generator(and semantic
analyzer)
Lexical unit
Parse trees
Intermediate code
Interpreter
Results
Input data
Implem
entasi Just-in-Tim
ePertama menerjemahkan
program menjadi intermediate language
Kemudian meng-compile intermediate language menjadi machine code
Machine code tersimpan untuk subsequent calls
JIT system digunakan Java programs dan .NET languages
19
Need a break. . . . . . . . . . . . .
20
Syntax dan Sem
anticsSyntax: bentuk (format) atau
struktur dari expression, statement, dan unit program
Semantic: pengartian dari expression, statement, dan unit program
Syntax and semantic memberikan language’s definition
21
Terminologi
sentence : string atau rangkaian karakter yang tersusun dari alphabet, angka atau simbol
language : sekumpulan sentencelexeme : level terendah syntactic
unit dari language (e.g., *, sum, begin)
token : Kategori dari lexemes (e.g., identifier)
22
Perangkat Penerjem
ahan Bahasa
RecognizersPerangkat yang membaca input
string dari language dan menentukan apakah input strings dikenali oleh language
GeneratorsPerangkat yang membangkitkan
sentence dari languageMenentukan apakah syntax dari
sentence tersusun benar dengan membandingkan pada struktur generator
23
Metode
Mendeskripsikan
Syntax
Backus-Naur Form and Context-Free GrammarsMetode yang banyak digunakan
untuk menggambarkan syntax dari programming language
Extended BNFMeningkatkan readability dan
writability BNFGrammars and Recognizers
24
Syntax AnalysisSyntax analysis terdiri dari:
low-level part yang disebut lexical analyzer (mathematically, a finite automaton based on a regular grammar)
high-level part yang disebut syntax analyzer atau parser (mathematically, a push-down automaton based on a context-free grammar, or BNF)
25
Lexical AnalyzerLexical analyzer merupakan
pattern matcher dari character strings
Lexical analyzer menjadi “front-end” dari parser
Mengidentifikasikan substring dari source program - lexemesLexemes sesuai dengan pola
karakter yang berkaitan dengan lexical category yang disebut token
26
Lexical AnalyzerLexical analyzer berupa function yang
dipanggil parser saat membutuhkan token berikutnya
Tiga pendekatan untuk membangun lexical analyzer:Menulis deskripsi formal token dan
menggunakan software tool yang membangun table-driven lexical analyzers
Merancang state diagram yang menggambarkan token dan menulis program yang menerapkan state diagram
Merancang state diagram yang menggambarkan token dan membangun table-driven implementation dari state diagram
27
Lexical AnalyzerTransisi dapat dikombinasikan untuk
menyederhanakanstate diagramSaat mengenali identifier, semua huruf
kapital ataupun kecil adalah equivalentSaat mengenali integer literal, semua digit
adalah equivalentReserved word dan identifier dapat
dikenali bersamaan (tanpa perlu diagram untuk setiap reserved word)Menggunakan table lookup untuk
menentukan identifier yang mungkin menjadi reserved word
Lebih baik menggunakan subprogram
28
ParserTujuan parser, dengan input
program:Mencari semua syntax errors;
memberikan pesan diagnosa, dan recover secara cepat
Menghasilkan parse tree, atau penelusuran parse tree
29
ParserDua kategori parser
Top down - Menghasilkan parse tree, mulai dari root
Bottom up - Menghasilkan parse tree, mulai dari leaves
Parser hanya melihat satu token berikutnya dari input
30
ParserTop-down Parser
Berdasarkan sentential form, xA , parser memilih A-rule yang tepat untuk mengambil sentential form berikutnya di leftmost derivation, hanya menggunakan token pertama yang dihasilkan A
Algoritma top-down parsing :Recursive descent - a coded
implementationLL parsers - table driven
implementation
31
ParserBottom-up parsers
Berdasarkan sentential form, , menentukan substring dari sebagai right-hand side dari rule pada grammar yang direduksi untuk menghasilkan sentential form sebelumnya di right derivation
Algoritma bottom-up parsing algorithms :LR family
32
ParserKompleksitas Parsing
Parser yang bekerja pada beberapa unambiguous grammar menjadi kompleks dan tidak efisien ( O(n3), di mana n merupakan panjang input )
Compiler menggunakan parser yang hanya bekerja untuk sebagian unambiguous grammar, tetapi melakukannya dalam waktu linier (O(n), di mana n merupakan panjang input )
33
Where is
Everybody . . . . . . . . . .
34
Semantics
Tak ada notasi atau formalisasi tunggal untuk menggambarkan semantic
35
Operational Sem
anticsOperational Semantics
Menggambarkan pengertian program dengan mengeksekusi statement pada mesin, baik simulasi atau aktual. Perubahan state dari mesin (memory, registers, etc.) menjelaskan pengertian statement
36
Operational Sem
anticsUntuk menggunakan operational
semantics pada high-level language, sebuah virtual machine diperlukan
Perangkat keras dari pure interpreter akan sangat mahal
Perangkat lunak pure interpreter juga mempunyai permasalahan Karakteristik detail particular computer akan
memberikan tindakan yang sulit dipahami Semantic definition akan tergantung pada mesin
37
Operational Sem
anticsAlternatif yang lebih baik:
Simulasi komputer lengkapProses:
Membangun translator (menerjemahkan source code menjadi machine code pada komputer ideal)
Membangun simulator untuk komputer ideal
Evaluasi operational semantic:Baik jika digunakan secara informal
(language manuals, etc.)Extrem kompleks jika digunakan secara
formal (e.g., VDL), digunakan untuk menggambarkan semantic PL/I.
38
Axiomatic Sem
anticsBerbasis pada formal logic
(predicate calculus)Tujuan awal: formal program
verificationAxioms / inference rules
didefinisikan untuk setiap statement type dalam language (untuk memungkinkan transformasi expression menjadi expression lainnya)
Expression disebut assertions
39
Axiomatic Sem
anticsAssertion sebelum statement (a
precondition) menunjukkan hubungan dan kendala pada variable yang benar pada saat eksekusi
Assertion mengikuti statement merupakan postcondition
Weakest precondition adalah least restrictive precondition yang menjamin postcondition
40
Denotational Sem
anticsBerbasiskan pada recursive
function theoryMetode deskripsi semantic paling
abstrak
41
Denotational Sem
anticsProses membangun spesifikasi
denotational dari languagemendefinisikan mathematical object
untuk setiap language entitymendefinisikan function yang
memetakan instance dari language entity pada instance dari mathematical objects yang terkait
Pengertian language didefinisikan dengan nilai dari variable
42
Denotation vs Operational Sem
anticsPada operational semantics,
perubahan state didefinisikan dengan coded algorithms
Pada denotational semantics, perubahan state changes didefinisikan dengan mathematical functions
43
Can we continue . . . . . . . . . .
44
VariablesVariable merupakan abstraction dari
memory cellVariable terkarakterisasi atribut
Ukuran memoriInisialisasiLingkup dan lama pemakaianType checkingType compatibility
Pemberian nama variable:Panjang maksimum?Karakter yang diperkenankan?Nama menunjukkan konten?Berbenturan dengan kode sistem?
45
Variables AttributesNameAddress –menunjukkan alamat
memoryVariable dapat menempati address
berbeda di waktu berbeda saat eksekusiVariable dapat menempati address
berbeda di tempat berbeda dalam programDua nama variable dapat menggunakan
lokasi memory yang sama, biasanya disebut alias
Alias dibuat melalui pointers, reference variables
Aliases berresiko pada readability (pengguna program perlu mengingat semuanya)
46
Variables AttributesType – menentukan rentang nilai
variables dan sekumpulan operation terkait; misalnya floating point type juga menentukan tingkat presisi
Value - nilai variableAbstract memory cell - physical
cell atau sekumpulan cell yang berhubungan dengan variable
47
Variables Types: Integer
Menunjukkan bilangan bulatTerkadang terdeklarasi dalam
type: byte, short, integer, long
48
Variables Types: Floating Point
Menunjukkan bilangan real, tetapi dalam approximation
Terkadang terdeklarasi dalam type: floating, real, single, double, decimal, percent, currency
49
Variables Types: Boolean
Hanya bernilai dua elemen pilihan“true” or “false”“yes” or “no”“on” or “off”“accept” or “reject”1 or 0
Terkadang terdeklarasi dalam type: boolean
Dapat berukuran bit, tetapi seringkali berukuran byte
50
Variables Types: Character
Menyimpan numeric codingMetode coding:
ASCII16-bit coding: Unicode
Termasuk karakter bahasa natural atau alfabet dan angka
Terkadang terdeklarasi dalam type: char
51
Variables Types : String
Menunjukkan rangkaian characterTerkadang terdeklarasi dalam
type: string, text, memoDesign issues:
Is it a primitive type or just a special kind of array?
Should the length of strings be static or dynamic?
52
Variables Type Checking
Generalisasi konsep deklarasi/assignment, penulisan formula/format, penggunaan operand/operator, dan subprogram
Type checking merupakan aktivitas memastikan penggunaan operand/operator secara compatible type
Compatible type adalah penggunaan operator secara legal atau mematuhi aturan language untuk dikonversikan dengan compiler- generated code menjadi legal type This automatic conversion is called a coercion.
Type error adalah diagnosa penggunaan operand/operator secara inappropriate type
53
Variables Array TypesArray merupakan sekumpulan atau
larik elemen data homogen di mana elemen individual teridentifikasi berdasarkan posisinya dalam aggregat secara relatif pada elemen pertama.
Design issues : What types are legal for subscripts? Are subscripting expressions in element references
range checked? When are subscript ranges bound? When does allocation take place? What is the maximum number of subscripts? Can array objects be initialized? Are any kind of slices allowed?
54
Variables Array Indexing
Indexing (subscripting) merupakan pemetaan yang mengindikasikan elemen
Index Syntax
55
Variables Record Types
record merupakan sekumpulan elemen data heterogen di mana elemen individual teridentifikasi oleh name atau field
Design issues:What is the syntactic form of
references to the field? Are elliptical references allowed
56
ExpressionExpression adalah pengertian
fundamental spesifikasi komputasi dalam programming language
Expression terdiri dari operator, operand, parenthes, dan function calls
57
Statement
Assignment Statements..... = .....
Control StatementsIf Then Goto .....
Selection StatementsIf Then ..... Else .....Case .....
Iterative StatementsFor .....Repeat ..... Until .....While.....
58
SubprogramSubprogram definition
mendeskripsikan interface dan action dari subprogram abstraction
Subprogram call merupakan permintaan eksplisit agar subprogram dieksekusi
Subprogram header bagian pertama pada definition, termasuk name, jenis subprogram, dan deklarasi parameterSubprogram, subroutine, procedureFunction
59
Subprograms
Fundamental
Setiap subprogram memiliki entry point tunggal
Caller atau program yang melakukan calling akan terhenti selama eksekusi called subprogram
Control biasanya kembali ke caller saat eksekusi called subprogram berhenti atau terminate/exit
60
Akhir Perkuliahan . . .
. . . Ada yang ditanyakan. . . Ada yang ditanyakan61