Jumat, 31 Oktober 2014

Assigment #5


Review Questions
tugas Pak Tri Joko

11. What are the advantages and disadvantages of dynamic type binding?

Kelebihan dari dynamic type binding adalah lebih luwes dan mudah dalam menulis kode generik, sedangkan kekurangannya adalah perlu waktu run-time yang lama untuk mengecek tipe dan interpretasi.

12. Define static, stack-dynamic, explicit heap-dynamic, and implicit heap- dynamic variables. What are their advantages and disadvantages?


Static adalah alokasi memori sebelum eksekusi dimulai dan tetap terikat pada memori yang sama di seluruh eksekusi.

Kelebihan :
Run-time yang efisien.

Kekurangan :
Tidak ada rekursi.

  - Stack-dynamic adalah alokasi memori dari sistem tumpukan ketika deklarasi diuraikan.

Kelebihan: Ada rekursi dan hemat memory.

Kekurangan: Run-time tidak seefisien static.

  - Explicit heap-dynamic adalah alokasi dan dealokasi dengan petunjuk eksplisit, yang ditentukan oleh programmer, yang berlaku selama eksekusi.

Kelebihan : Manajemen penyimpanan yang fleksibel.

Kekurangan : Rawan kesalahan dalam membuat pernyataan baru/menghapus pernyataan.

  - Implicit heap-dynamic adalah alokasi dan dealokasi disebabkan oleh suatu pernyataan.

Kelebihan : Fleksibilitas yang sangat tinggi.

Kekurangan : Waktu run-time untuk menjaga semua attrs dinamis dan deteksi kesalahan kompilator berkurang.

13. Define lifetime, scope, static scope, and dynamic scope.

Lifetime adalah ketika memori dialokasikan untuk sebuah variabel (ketika itu eksis).
Scope adalah jangkauan pernyataan di mana variabel yang terlihat. Variabel terlihat dalam sebuah pernyataan jika dapat dirujuk dalam pernyataan itu.
Static scope adalah scope yang berdasarkan teks pada program dan menghubungkan referensi nama untuk sebuah variabel.
Dynamic scope adalah scope yang berdasarkan urutan panggilan run-time.

14. How is a reference to a nonlocal variable in a static-scoped program connected to its definition?
 
Sebuah referensi untuk variabel non-lokal dalam bahasa static-scoped dengan nested subprogram membutuhkan 2 langkah proses akses:

Cari rekor aktivasi yang benar.
Menentukan offset yang benar dalam rekor aktivasi.

15. What is the general problem with static scoping?
 
Biasanya terlalu banyak akses. Struktur scope hancur sebagai evolusi program.

Problem Set

11. Which of the following identifier forms is most readable? Support your decision.
sumOfSales
sum_of_sales
SUMOFSALES

 
Saya memilih sum_of_sales, karena lebih mudah untuk melihat ruang antara kata-kata dan lebih mudah dibaca.

12. Some programming languages are typeless. What are the obvious advantages and disadvantages of having no types in a language.

Kelebihan: Memungkinkan pengguna untuk menulis program cepat.
Kekurangan: Tidak dapat mengontrol data dan variabel, compiler tidak dapat mendeteksi kesalahan apapun.

13. Write a simple assignment statement with one arithmetic operator in some language you know. For each component of the statement, list the various bindings that are required to determine the semantics when the statement is executed. For each binding, indicate the binding time used for the language.

Bahasa C++

int count;
count = count + 5;

Tipe yang mungkin untuk dihitung: ditetapkan pada saat desain bahasa.
Tipe hitungan: Terikat pada waktu kompilasi.
Set nilai yang mungkin dari count: Terikat saat waktu desain kompiler.
Nilai hitungan: Terikat pada waktu eksekusi dengan pernyataan ini.
Set kemungkinan arti untuk simbol operator “”: *Terikat pada waktu definisi bahasa.
*Maksud dari simbol operator “” di dalam pernyataan ini: Terikat pada waktu kompilasi.
Representasi internal dari literal “5”: Terikat saat waktu desain kompiler.

14. Dynamic type binding is closely related to implicit heap-dynamic variables. Explain this relationship.
 
Keduanya terkait dengan tugas dan pernyataan.

Keduanya terkait dengan tugas dan pernyataan.

15. Describe a situation when a history-sensitive variable in a subprogram is useful.
 
Sejarah variabel sensitif mungkin berguna dalam subprogram manipulasi data, di mana beberapa operasi dilakukan pada variabel, dan fungsi keluar, maka fungsi ini dipanggil lagi. Dengan cara ini, fungsi tidak harus mengambil variabel sebagai parameter, tetapi hanya untuk mengembalikannya.

Senin, 27 Oktober 2014

Assigment #4

 
REVIEW QUESTION  
Tugas pak Tri Joko

11. Describe the parsing problem for a bottom-up parser.
 
bottom up parser only can identifies and processes the text's lowest-level details before processes middle level structures and leaving the highest level overall structure to last

12. Explain why compilers use parsing algorithms that work on only a subset of all grammars.
because compiler can use one parsing compiler that work on only subset of all grammars

13. Why are named constants used, rather than numbers, for token codes?
 
  for the sake of readability of lexical and syntax analyzers.

14. Describe how a recursive-descent parsing subprogram is written for a rule with a single RHS.

A recursive-descent subprogram for a rule with a single RHS is relatively simple. For each terminal symbol in the RHS, that terminal symbol is compared with nextToken. If they do not match, it is a syntax error. If they match, the lexical analyzer is called to get the next input token. For each non terminal, the parsing subprogram for that nonterminal is called.

15. Explain the two grammar characteristics that prohibit them from being used as the basis for a top-down parser.
 
Two grammar characteristics that prohibit top-down parsing:
Direct or indirect Left Recursion.

Jumat, 24 Oktober 2014

Assigment #3

Review Question
Tugas pak Tri Joko

11. How is the order of evaluation oaf attributes determined for the trees of a given attribute grammar?

Semantik statis adalah bahasa hanya secara tidak langsung terkait dengan makna program selama eksekusi; melainkan harus dilakukan dengan bentuk hukum dari program
(sintaks bukan semantik). Banyak aturan semantik statis bahasa menyatakan kendala jenisnya. Semantik statis dinamakan demikian karena analisis yang dibutuhkan untuk
memeriksa spesifikasi ini dapat dilakukan pada waktu kompilasi.
Semantik dinamis adalah makna ekspresi, pernyataan, dan unit program bahasa pemrograman.

12. What is the primary use of attribute grammars?


Atribut tata bahasa utama yang digunakan untuk memberikan deskripsi lengkap sintaks dan semantik statis bahasa pemrograman.

13. Explain the primary uses of a methodology and notation for describing the semantics of programming languages.
Jika pemutusan lingkaran dapat ditampilkan, deskripsi aksiomatik loop disebut total kebenaran. Jika kondisi lain dapat dipenuhi tetapi terminasi tidak
dijamin, hal itu disebut correctnes parsial.

14. Why can machine languages not be used to define statements in operational semantics?
Bahasa mesin tidak dapat digunakan untuk mendefinisikan pernyataan dalam semantik operasional karena beberapa masalah. Pertama, langkah-langkah individu dalam pelaksanaan mesin
bahasa dan perubahan yang dihasilkan pada keadaan mesin terlalu kecil dan terlalu banyak. Kedua, penyimpanan komputer yang nyata terlalu besar dan kompleks.

15. Describe the two levels of uses of operational semantics.
Pada tingkat tertinggi, yang menarik adalah di hasil akhir dari pelaksanaan program yang lengkap. Hal ini kadang-kadang disebut semantik operasional alami.
Pada tingkat terendah, semantik operasional dapat digunakan untuk menentukan makna yang tepat dari sebuah program melalui pemeriksaan urutan lengkap negara
perubahan yang terjadi ketika program dijalankan. Penggunaan ini kadang-kadang disebut semantik operasional struktural.

Problem Solve #3


11. Consider the following grammar:
<S> → <A> a <B> b
<A> → <A> b | b
<B> → a <B> | a
Which of the following sentences are in the language generated by this
grammar?
a. baab
b. bbbab
c. bbaaaaa
d. bbaab


S> → <A> <B> <C>
<A> → a <A> | a
<B> → b <B> | b
<C> → c <C> | c

12. Consider the following grammar:
<S> → a <S> c <B> | <A> | b
<A> → c <A> | c
<B> → d | <A>
Which of the following sentences are in the language generated by this
grammar?
a. abcd
b. acccbd
c. acccbcc
d. acd
e. accc


LHS non-terminal S didefinisikan sebagai non-terminal A, terminal, non-terminal B dan terminal b, di mana non-terminal A dapat nol atau lebih b atau satu b, dan di mana non-terminal B dapat menjadi salah satu atau lebih adalah satu atau a. Menghasilkan satu atau lebih b atau satu b, satu, satu atau lebih atau satu, dan satu b.
Jawaban a (Baab) dan d (bbaab) mematuhi produksi ini.

13. Write a grammar for the language consisting of strings that have and copies of the letter a followed by the same number of copies of the letter b, where n > 0. For example, the strings ab, aaaabbbb, and

<S> -> <A>
<A> -> a <A> b <B>
aaaaaaaabbbbbbbb are in the language but a, abb, ba, and aaabb are not.

14. Draw parse trees for the sentences aabb and aaaabbbb, as derived from the grammar of Problem 13.
<stmt> -> <A>
<A> -> A <A> b | ab

pohon untuk aabb
pohon untuk aaaabbbb

15. Convert the BNF of Example 3.1 to EBNF

<program> -> begin <stmt_list> end

<stmt_list> -> <stmt>

| <stmt> ; <stmt_list>

<stmt> -> <var> = <expression>

<var> -> A | B | C
<expression> -> <var> {(+|-) <var>}

Rabu, 15 Oktober 2014

Assignment #2


Due: 9 October 2014
Tugas Pak Tri Djoko Wahjono

Review Question

11. What control flow statements were added to Fortran IV to get Fortran 77?

-> Statement control flow yang ditambahakan adalah Logial Loop (pengulangan)

12. Which version of Fortran was the first to have any sort of dynamic variables?

-> Fortran 90

13. Which version of Fortran was the first to have character string handling?

-> Fortran 77

14. Why were linguists interested in artificial intelligence in the late 1950s?

-> Karna para ahli bahasa khawatir akan pemrosesan bahasa alami

15. Where was LISP developed? By whom?

-> LISP dikembangkan oleh John McCarthy di MIT

Problem Set

11. Was IBM’s assumption, on which it based its decision to develop PL/I, correct, given the history of computers and language developments since 1964?

-> Asumsinya benar karena pada tahun 1970-an, PL / I secara luas digunakan untuk aplikasi bisnis dan ilmiah walaupun banyak kegagalan pada tahun-tahun sebelumnya dan sesudahnya.

12. Describe, in your own words, the concept of orthogonality in programming language design

->orthogonality adalah penyederhanaan dari beragam
fitur bahasa pemrograman sehingga suatu bahasa pemrograman lebih mudah

13. What is the primary reason why PL/I became more widely used than ALGOL 68?

->PL / I mencakup ALGOL 60 yang terbagus (rekursi dan struktur blok), FORTRAN IV (kompilasi terpisah dengan komunikasi melalui data global), dan COBOL (struktur data, input / output, dan laporan fasilitas pembangkit), beberapa konstruksi baru

14. What are the arguments both for and against the idea of a typeless language?

-> Argumen “for” fleksibilitas dan mudah digunakan. Tanpa harus menentukan tipe data. programmer bebas untuk mengembangkan kode yang dihasilkan dengan cepat dan tanpa banyak berpikir. Belajar bahasa jauh lebih sederhana karena kita tidak harus menentukan ukuran atau bagaimana compiler akan menrjemhakan tipe nantinya

Argumen “Against” kekurang amanan data, seperti penugasan tipe karakter ‘A’ yang sebenarnya dapat “didefinisikan” sebagai nilai HEX oleh programmer. Compiler juga akan mengalami kesulitan mengartikan nilai-nilai floating point dibandingkan dengan bilangan bulat. Aritmatika yang dihasilkan juga akan menyebabkan masalah serius; seperti menambahkan 5 + “happy” dan bagaimana mereka diinterpretasikan berbeda dari yang dimaksud oleh programmer.

15. Are there any logic programming languages other than Prolog?

-> FORTRAN, LISP,  dan ALGOL 60

Rabu, 01 Oktober 2014

Assignment #1 Concepts of Programming Languages


Review question
Tugas Pak Tri Djoko Wahjono

11. What primitive control statement is used to build more complicate control statements in languages that lack them?

The selection statement plus GOTO is used to build more complicated control statements such as FOR loop.

12. What construct of a programming language provides process abstraction?
Subprograms

13. What does it mean for a program to be reliable?
A program is said to be reliable if it performs to its specifications under all conditions.

14. Why is type checking the parameter of a subprogram important?
It can lead to lots of hard to debug errors.

15. What is aliasing?
2 or more distinct names that can be used to access the same memory cell. 


Problem Set

11. Describe some design trade-offs between efficiency and safety in some language you know


C provides a good background in programming basics. It's been called a glorified Assembler. Java provides a great introduction to Object Oriented Programming. Languages are designed for a purpose, there's really no better or worse. It mostly depends on what you are aiming for.

12. In your opinion, what major features would a perfect programming language include?

In my opinion Syntax, documentation, and error message are the most important features in a perfect programming language.

13. Was the first high-level programming language you learned implemented with a pure interpreter, a hybrid implementation system, or a compiler? (You may have to research this.)

My first high-level programming language I learned is C++ which is implemented with visual C++ and it is a compiler.

14. Describe the advantages and disadvantages of some programming environment you have used.

Visual basic is a proprietary programming language,so programs written in Visual basic cannot, easily, be transferred to other operating systems.There are versions of Basic that run on several operating systems, but they aren't direct clones of VB so some work would have to be done. 

15. How do type declaration statements for simple variables affect the readability of a language, considering that some languages do not require them?

The use of type declaration statements for simple scalar variables may have very little effect on the readability of programs. If a language has no type declarations at all, it may be an aid to readability, because regardless of where a variable is seen in the program text, its type can be determined without looking elsewhere.