02 evolution

61
Perkembangan Pemrograman Arif Rahman, ST MT 1

Upload: arif-rahman

Post on 12-Apr-2017

124 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: 02 evolution

Perkembangan Pemrograman

Arif Rahman, ST MT

1

Page 2: 02 evolution

Pengertian Baru Era Kom

puter

2

Page 3: 02 evolution

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

Page 4: 02 evolution

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

Page 5: 02 evolution

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

Page 6: 02 evolution

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

Page 7: 02 evolution

Genealogy of Com

mon Languages

7

Page 8: 02 evolution

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

Page 9: 02 evolution

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

Page 10: 02 evolution

Metode Im

plementasi

CompilationProgram diterjemahkan ke

bahasa mesinPure Interpretation

Program diinterpretasikan program lain

Hybrid Implementation SystemsPenggabungan compilers dan

interpreters

10

Page 11: 02 evolution

Metode Im

plementasi

11

Page 12: 02 evolution

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

Page 13: 02 evolution

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)

Page 14: 02 evolution

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

Page 15: 02 evolution

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

Page 16: 02 evolution

Pure Interpretation Process

16

Sourceprogram

Interpreter

Results

Input data

Page 17: 02 evolution

Hybrid Im

plementation

Systems

Kompromisasi compilers dan interpreters

High-level language program diterjemahkan dalam intermediate language yang memudahkan interpretation

Faster than pure interpretation

17

Page 18: 02 evolution

Hybrid Im

plementation

Process

18

Sourceprogram

Lexicalanalyzer

Syntaxanalyzer

Intermediatecode generator(and semantic

analyzer)

Lexical unit

Parse trees

Intermediate code

Interpreter

Results

Input data

Page 19: 02 evolution

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

Page 20: 02 evolution

Need a break. . . . . . . . . . . . .

20

Page 21: 02 evolution

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

Page 22: 02 evolution

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

Page 23: 02 evolution

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

Page 24: 02 evolution

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

Page 25: 02 evolution

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

Page 26: 02 evolution

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

Page 27: 02 evolution

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

Page 28: 02 evolution

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

Page 29: 02 evolution

ParserTujuan parser, dengan input

program:Mencari semua syntax errors;

memberikan pesan diagnosa, dan recover secara cepat

Menghasilkan parse tree, atau penelusuran parse tree

29

Page 30: 02 evolution

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

Page 31: 02 evolution

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

Page 32: 02 evolution

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

Page 33: 02 evolution

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

Page 34: 02 evolution

Where is

Everybody . . . . . . . . . .

34

Page 35: 02 evolution

Semantics

Tak ada notasi atau formalisasi tunggal untuk menggambarkan semantic

35

Page 36: 02 evolution

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

Page 37: 02 evolution

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

Page 38: 02 evolution

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

Page 39: 02 evolution

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

Page 40: 02 evolution

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

Page 41: 02 evolution

Denotational Sem

anticsBerbasiskan pada recursive

function theoryMetode deskripsi semantic paling

abstrak

41

Page 42: 02 evolution

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

Page 43: 02 evolution

Denotation vs Operational Sem

anticsPada operational semantics,

perubahan state didefinisikan dengan coded algorithms

Pada denotational semantics, perubahan state changes didefinisikan dengan mathematical functions

43

Page 44: 02 evolution

Can we continue . . . . . . . . . .

44

Page 45: 02 evolution

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

Page 46: 02 evolution

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

Page 47: 02 evolution

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

Page 48: 02 evolution

Variables Types: Integer

Menunjukkan bilangan bulatTerkadang terdeklarasi dalam

type: byte, short, integer, long

48

Page 49: 02 evolution

Variables Types: Floating Point

Menunjukkan bilangan real, tetapi dalam approximation

Terkadang terdeklarasi dalam type: floating, real, single, double, decimal, percent, currency

49

Page 50: 02 evolution

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

Page 51: 02 evolution

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

Page 52: 02 evolution

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

Page 53: 02 evolution

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

Page 54: 02 evolution

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

Page 55: 02 evolution

Variables Array Indexing

Indexing (subscripting) merupakan pemetaan yang mengindikasikan elemen

Index Syntax

55

Page 56: 02 evolution

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

Page 57: 02 evolution

ExpressionExpression adalah pengertian

fundamental spesifikasi komputasi dalam programming language

Expression terdiri dari operator, operand, parenthes, dan function calls

57

Page 58: 02 evolution

Statement

Assignment Statements..... = .....

Control StatementsIf Then Goto .....

Selection StatementsIf Then ..... Else .....Case .....

Iterative StatementsFor .....Repeat ..... Until .....While.....

58

Page 59: 02 evolution

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

Page 60: 02 evolution

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

Page 61: 02 evolution

Akhir Perkuliahan . . .

. . . Ada yang ditanyakan. . . Ada yang ditanyakan61