Tuesday, March 26, 2013

Concepts of Programming Languages 10th Edition : Chapter 3



Created By : Robert W. Sebesta
Lecturer : Mr. Tri Djoko Wahjono, Ir. M.Sc
Answered by : Shirley Halim Ng
NIM : 1601233805
Class : 02PCT


Review Questions

1. Define syntax and semantic.
=> The syntax of a programming language is the form of its expressions, statements, and program units. Semantics is the meaning of those expressions, statements, and program units.

5. What is the difference between a sentence and a sentential form?
=> Sentence is the strings of a language and a sentential form is the start symbol S of a grammar or any string in (V union T)* that can be derived from S. 

7. What three extensions are common to most EBNFs?
=> The three extensions are common to most EBNFs are brackets, braces, and multiple-choice options.

8. Distinguish between static and dynamic semantics.
=> The static semantics of a language is only indirectly related to the meaning of programs (syntax rather than semantics) and the dynamic semantics of a language is the meaning of the expression, statements, and program units of a programming language.

10. What is the difference between a synthesized and an inherited attribute?
=> Synthesizes attributes are used to pass semantic information up a parse tree, while inherited attributes pass semantic information down and across a tree.

15. Describe the two levels of uses of operational semantics.
=> The two levels of uses of operational semantics are natural operational semantics which is the highest level that interest in the final result of the execution of a complete program and the lowest level is structural operational semantics which operational semantics can be used to determine the precise meaning of a program through an examination of the complete sequence of state changes that occur when the program is executed.

17. What is stored in the state of a program for denotational semantics?
=> The state of a program for denotational semantics is the value of all its current variable.

18. Which semantics approach is most widely known?
=> The Denotational semantics is the most widely known semantics approach.

22. Give an example of an ambiguous grammar.
=> <assign>   -><id>< expr >
< id > -> A|B|C
< expr >-> < expr >+< expr>
|< expr >*< expr >
| (< expr >)
< id >

28. What is the use of the wp function? Why it is called a predicate transformer?
=> wp function is used to treat the process of producing a weakest precondition. It is called a predicate transformer because it takes a predicate, or assertion, as a parameter and returns another predicate.

Problem Set

1. Syntax error and semantics error are two types of compilation error. Explain the difference between the two in a program with examples.
=> Syntax Error: error due to missing colon, semicolon, parenthesis, etc. Syntax is the way in which we construct sentences by following principles and rules. 

Example: In C++, it would be a syntax error to say 

int x = "five";

This will not compile because it does not follow the syntax of the language and does not make any sense to the compiler. 


Semantic Error: it is a logical error. it is due to wrong logical statements. Semantics is the interpretations of and meanings derived from the sentence transmission and understanding of the message. Semantics errors are Logical, while Syntax errors are code errors. 

Example: A semantic error would compile, but be incorrect logically:

const int pi = 12345;

3.   Rewrite the BNF of Example 3.4 to represent operator -  and operator / instead of operator + and operator *.
=> <assign>   -><id>< expr >
< id > -> A|B|C

< expr >-> < expr >- < term >
 |< term >
< term > -> < term > / < factor >
                  |< factor >
< term > -> (< expr >)
 | < id >


4. Rewrite the BNF of Example 3.4 to add the += and *= operators of Java.
=><assign>   -><id>< expr >
< id > -> A|B|C

< expr >-> < expr >+=< term >
 |< term >
< term > -> < term > *= < factor >
                  |< factor >
< term > -> (< expr >)
 | < id >



 6. Using the grammar in Example 3.2, show a parse tree for each of the following statements:
a. A = A * (B * (C + A))
b. B = C * (A + C * B)
c. A = A + (B * (C))


7. Using the grammar in Example 3.4, show a parse tree for each of the following statements:
a. A = ( A * B ) + C
b. A = B * C + A
c. A = A + (B * C)
d. A = B * (C + (A *







10. Describe, in English, the language defined by the following grammar:
<S>-> <X> <Y>
<X>-> x < X >  | x
<Y>->y < Y > | y

=> <S>-> <X> <Y>   = S includes X and Y

<X>-> x < X >  | x                  = x is the element of X
<Y>->y < Y > | y                    = y is the element of Y

Monday, March 11, 2013

Concepts of Programming Languages 10th Edition : Chapter 2



Created By : Robert W. Sebesta
Lecturer : Mr. Tri Djoko Wahjono, Ir. M.Sc
Answered by : Shirley Halim Ng
NIM : 1601233805
Class : 02PCT

Review questions

3. What does Plankalkül mean?
=> Plankalkül means program calculus.

18. What two professional organizations together designed ALGOL 60?
=> The two professional organizations are European ALGOL Bulletin and Communications of the ACM.
22. On what language was COBOL based?
=> COBOL based on ALGOL 60 language.
23. In what year did the COBOL design process begin?
=> It began in 1959.
28.  PL/I was designed to replace what two languages?
=> PL/I was designed to replace FORTRAN and COBOL languages.
33. What language introduced the case statement?
=> A Language that introduced the case statement is ALGOL-W.
36. Why is Prolog called a nonprocedural language?
=> As we know, the name Prolog is from programming logic. Programming in logic programming languages is nonprocedural. Programs in such languages do not state exactly how a result is to be computed but rather describe the necessary form and/or characteristics of the result.
46. What is primary application for Objective-C?
=> The primary application for Objective-C is Objective-C 2.0.
47. What language designer worked on both C and Go?
=> The language designer that worked on both C and Go is Ken Thompson.
49. What was the first application for Java?
=> The first application for Java was Sun Microsystems.
53. What two languages was the original version of Perl meant to replace?
=> Perl language was originally a combination of sh and awk.
54. For what application area is JavaScript most widely used?
=> It’s most widely used in Web browser.
57. What data types does Java support?
=> Java supports int, float, string, double, char, etc.
64. What is primary platform on which C# is used?
=> The primary platform on which C# is used is .NET.
65. What is the input to an XSLT processor?
=> The input to an XSLT processor is an XML data document and an XSLT document.
66. What is the output to an XSLT processor?
=> The output to an XSLT processor is the transformation information.
69. Where is .jsp files executed?
=> It is executed on a Web server system.
Problem Set
    
4. As a research project, compare the features of C with those of the BASIC.
=> The syntax and operation is very similar, but visual basic isn't as powerful. Think of it as a watered down, easier version of c. With C, you can create anything from a simple calculator application to a full blown operating system. Visual basic can't make anything as extensive as an operating system, but it is much faster to code in visual basic when you want to make form based programs, or applications.

Features in C :

Low Level Features :
1.      C Programming provides low level features that are generally provided by the Lower level languages. C is Closely Related to Lower level Language such as “Assembly Language“.
2.      It is easier to write assembly language codes in C programming.
Portability :
1.      C Programs are portable i.e they can be run on any Compiler with Little or no Modification
2.      Compiler and Preprocessor make it Possible for C Program to run it on Different PC 
Powerfull :
1.      Provides Wide verity of ‘Data Types‘
2.      Provides Wide verity of ‘Functions’
3.      Provides useful Control & Loop Control Statements
Bit Manipulation :
1.      C Programs can be manipulated using bits. We can perform different operations at bit level. We can manage memry representation at bit level. [Eg. We can use Structure to manage Memory at Bit Level]
2.      It provides wide verity of bit manipulation Operators. We have bitwise operators to manage Data at bit level.
High Level Features :
1.      It is more User friendly as compare to Previous languages. Previous languages such as BCPL,Pascal and other programming languages never provide such great features to manage data.
2.      Previous languages have there pros and cons but C Programming collected all useful features of previous languages thus C become more effective language.
Modular Programming :
1.      Modular programming is a software design technique that increases the extent to which software is composed of separate parts, calledmodules
2.      C Program Consist of Different Modules that are integrated together to form complete program
Efficient Use of Pointers :
1.      Pointers has direct access to memory.
2.      C Supports efficient use of pointer .
More Efficient

Features in BASIC :

Arrays
Discusses making your code more compact and powerful by declaring and using arrays, which hold multiple related values.
Collection Initializers
Describes collection initializers, which enable you to create a collection and populate it with an initial set of values.
Constants and Enumerations
Discusses storing unchanging values for repeated use, including sets of related constant values.
Control Flow
Shows how to regulate the flow of your program's execution.
Data Types
Describes what kinds of data a programming element can hold and how that data is stored.
Declared Elements
Covers programming elements you can declare, their names and characteristics, and how the compiler resolves references to them.
Delegates
Provides an introduction to delegates and how they are used in Visual Basic.
Early and Late Binding (Visual Basic)
Describes binding, which is performed by the compiler when an object is assigned to an object variable, and the differences between early-bound and late-bound objects.
Error Types (Visual Basic)
Provides an overview of syntax errors, run-time errors, and logic errors.
Events
Shows how to declare and use events.
Interfaces
Describes what interfaces are and how you can use them in your applications.
LINQ
Provides links to topics that introduce Language-Integrated Query (LINQ) features and programming.
Objects and Classes
Provides an overview of objects and classes, how they are used, their relationships to each other, and the properties, methods, and events they expose.
Operators and Expressions
Describes the code elements that manipulate value-holding elements, how to use them efficiently, and how to combine them to yield new values.
Procedures
Describes Sub, Function, Property, and Operator procedures, as well as advanced topics such as recursive and overloaded procedures.
Statements
Describes declaration and executable statements.
Strings
Provides links to topics that describe the basic concepts about using strings in Visual Basic.
Variables
Introduces variables and describes how to use them in Visual Basic.
XML
Provides links to topics that describe how to use XML in Visual Basic.

6. Make an educated guess as to the most common syntax error in C programs.
=> The most common syntax error in C programs are missing the (;) semicolon at the end of statement, missing “&” when using scanf, send the wrong paramater when using function, missing specific library when using specific function, missing () or missing {}, etc.

10. Outline the major developments in ALGOL 60.
=>  - The concept of block structure was introduced. This allowed the programmer to localize parts of programs by introducing new data environments, or scopes.
  - Two different means of passing parameters to subprograms were allowed: pass by value and pass by name.
      - Procedures were allowed to be recursive. The ALGOL 58 description was unclear on this issue. Note that although this recursion was new for the imperative languages, LISP had already provided recursive functions in 1959.
      - Stack-dynamic arrays were allowed. A stack-dynamic array is one for which the subscript range or ranges are specified by variables, so that the size of the array is set at the time storage is allocated to the array, which happens when the declaration is reached during execution.

13. What is the primary reason why C became more widely used than Fortran?
  => The reasons why C became more widely use than Fortran:
      - Efficient compilers are universally available for all the main architechtures in use, and a good public compiler also exists (gcc). C compilers often come free with machines, while Fortran 90 compilers must be purchased, and often expensive.
      - C is very broad in scope, and is more powerful of Fortran 90 in some areas, such as pointers, and manipulations of strings of characters.
      - Acquired coding experience can be directly used outside the scientific world : C is very common in commercial world.

15. Are there any nonprocedural programming language other than prolog?
=> Yes, there are Fortran, C++, COBOL, Algol.

16. What is your opinion of the argument that languages that are too complex are too dangerous to use, and we should therefore keep all languages small and simple?
=> Languages are too complex are too dangerous to use because of its meaning itself. Ambiguous languages can cause trouble and misunderstanding among people.    So, we must keep it small and simple to avoid ambiguation and misunderstanding.

24. Why, in your opinion, do new scripting languages appear more frequently than new compiled languages?
=>New appear languages appear more frequently than new compiled languages because they are often smaller and simpler and focused on more narrow applications, which means their library need not to be nearly as large.

25. Give a brief general description of the Java servlet!
=> A servlet is a Java programming language class used to extend the capabilities of a server. Although servlets can respond to any types of requests, they are commonly used to extend the applications hosted by web servers, so they can be thought of as Java Applets that run on servers instead of in web browsers. These kinds of servlets are the Java counterpart to non-Java dynamic Web content technologies such as PHP and ASP.NET.

Sunday, March 3, 2013

Concepts of Programming Languages 10th Edition : Chapter 1

Created By : Robert W. Sebesta
Lecturer : Mr. Tri Djoko Wahjono, Ir. M.Sc
Answered by : Shirley Halim Ng
NIM : 1601233805
Class : 02PCT 

Review Questions
6. In What languages is most of UNIX written?
=> UNIX is an operating system that written almost entirely in C that made it relatively easy to port and move from one device to another device.
7. What is the disadvantages of having too many features in a languages?
=> The disadvantages of having too many features in a languages is reducing the limitation in software development.
9. What is one example of a lack of orthogonality in the design of C?
=> As examples of the lack of orthogonality in a high-level language, consider the following rules and exceptions in C. Although C has two kinds of structured data types, arrays and records (structs), records can be returned from functions but arrays cannot. A member of a structure can be any data type except void or a structure of the same type. An array element can be any data type except void or a function. Parameters are passed by value, unless they are arrays, in which case they are, in effect, passed by reference (because the
appearance of an array name without a subscript in a C program is interpreted to be the address of the array’s first element).
13. What does it means for a program to be reliable?
=> A program said to be reliable if it perform the specifications under all condition.
15. What is aliasing?
=> Aliasing is having two or more distinct names that can be used to access the same cell of memory.
16. What is exception handling?
=> The ability of a program to intercept run-time errors (as well as other unusual conditions detectable by the program), take corrective measures, and then continue is an obvious aid to reliability.
17. Why is readability important to writability?
=> Because in the process of writing the program is needed to be reread the part of program again.
26. Which produces faster program execution, a compiler or a pure interpreter?
=> Compiler.
29. What is a hybrid implementation system?
=> Compilers and pure interpreters translate high-level language programs to an intermediate language designed to allow easy interpretation. This implementations are called Hybrid Implementation Systems.
30. What are the advantages of using Borland JBuilder? 
=> Borland JBuilder is a programming environment that provides an integrated compiler, editor, debugger, and file system for Java development, where all four are accessed through a graphical interface. JBuilder is a complex and powerful system for creating Java software.

Problem Set
2. Who is said to be the first programmer in human history?
=> Ada Lovelace is said to be the first programmer in human history. She was an English mathematician and a writer. Her notes on the engine include what is recognized as the first algorithm intended to be the process of machine. So she is considered to be the first programmer in the world.
3. What are the disadvantages of multiple programming languages?
=> The programmer needs to know a lot of syntax that usually different one another, it may cause the programmer get confused of this situation.
6. Which characteristic of programming languages do you think are the most important and why?
=> I think the most important of the characteristic of programming languages is SIMPLICITY because it includes all the criteria of the programming languages (READABILITY, WRITABILITY, and RELIABILITY).
7. Java uses a semicolon to mark the end of all statements. What are the advantages for and against this design?
=> Semicolon is used in Java programming languages to tell that it is one statement that computer have to execute one by one statement the program until it meets the semicolon.
10. Make a comparative study of the cost of software and hardware!
=> In earlier time, hardware cost is much higher than the software cost, but nowadays, there are many expensive cost hardware and actually nowadays, software cost is higher than the software cost.
15. Name some languages which use preprocessor directive and some which don’t. What are the advantage and disadvantages of preprocessor directive?
=>C and C++ programming languages use preprocessor directive while Java is not using preprocessor directive.
# Advantages: reduce compiling time, reduce program length and save time in calling a lot of function
# Disadvantages:  The disadvantage of the macro is the size of the program. The reason is, the pre-processor will replace all the macros in the program by its real definition prior to the compilation process of the program.