Difference between revisions of "Multi-Paradigm Programming and Scripting"
Adelo Vieira (talk | contribs) |
Adelo Vieira (talk | contribs) (→Compilation vs Interpretation) |
||
Line 48: | Line 48: | ||
*I/O tasks and functions | *I/O tasks and functions | ||
|} | |} | ||
+ | |||
+ | |||
+ | <br /> | ||
+ | ==Languages evaluation Criteria== | ||
+ | https://www.cs.scranton.edu/~mccloske/courses/cmps344/sebesta_chap1.html | ||
+ | |||
+ | *'''Readability:''' This refers to the ease with which programs (in the language under consideration) can be understood. This is especially important for software maintenance. | ||
+ | :* Simplicity: | ||
+ | :* Orthogonality: | ||
+ | :* Data Types: | ||
+ | :* Syntax Design: | ||
+ | |||
+ | |||
+ | *'''Writability:''' This is a measure of how easily a language can be used to develop programs for a chosen problem domain. | ||
+ | :* Simplicity and Orthogonality: | ||
+ | :* Support for Abstraction: | ||
+ | :* Expressivity: | ||
+ | |||
+ | |||
+ | *'''Reliability:''' This is the property of performing to specifications under all conditions. | ||
+ | :* Type Checking: | ||
+ | :* Aliasing: | ||
+ | |||
+ | |||
+ | *'''Cost:''' The following contribute to the cost of using a particular language: | ||
+ | :* Training programmers: cost is a function of simplicity of language | ||
+ | :* Writing and maintaining programs: cost is a function of readability and writability. | ||
+ | :* Compiling programs: for very large systems, this can take a significant amount of time. | ||
+ | :* Executing programs: Having to do type checking and/or index-boundary checking at run-time is expensive. There is a tradeoff between this item and the previous one (compilation cost), because optimizing compilers take more time to work but yield programs that run more quickly. | ||
+ | :* Language Implementation System: e.g., Java is free, Ada not | ||
+ | :* Lack of reliability: software failure could be expensive (e.g., loss of business, liability issues) | ||
+ | |||
+ | |||
+ | *'''Other criteria:''' | ||
+ | :* Portability: the ease with which programs that work on one platform can be modified to work on another. This is strongly influenced by to what degree a language is standardized. | ||
+ | :* Generality: Applicability to a wide range of applications. | ||
+ | :* Well-definedness: Completeness and precision of the language's official definition. | ||
Line 60: | Line 97: | ||
<br /> | <br /> | ||
+ | |||
==Object-Oriented Paradigm== | ==Object-Oriented Paradigm== | ||
Revision as of 19:35, 2 November 2019
Why Multi-Paradigm Programming and Scripting? | |||
---|---|---|---|
| |||
Content of this course | |||
Programming Constructs:
|
Programming Paradigms & Languages:
|
Scripting:
|
Applications of Shell Scripting:
|
Contents
Languages evaluation Criteria
https://www.cs.scranton.edu/~mccloske/courses/cmps344/sebesta_chap1.html
- Readability: This refers to the ease with which programs (in the language under consideration) can be understood. This is especially important for software maintenance.
- Simplicity:
- Orthogonality:
- Data Types:
- Syntax Design:
- Writability: This is a measure of how easily a language can be used to develop programs for a chosen problem domain.
- Simplicity and Orthogonality:
- Support for Abstraction:
- Expressivity:
- Reliability: This is the property of performing to specifications under all conditions.
- Type Checking:
- Aliasing:
- Cost: The following contribute to the cost of using a particular language:
- Training programmers: cost is a function of simplicity of language
- Writing and maintaining programs: cost is a function of readability and writability.
- Compiling programs: for very large systems, this can take a significant amount of time.
- Executing programs: Having to do type checking and/or index-boundary checking at run-time is expensive. There is a tradeoff between this item and the previous one (compilation cost), because optimizing compilers take more time to work but yield programs that run more quickly.
- Language Implementation System: e.g., Java is free, Ada not
- Lack of reliability: software failure could be expensive (e.g., loss of business, liability issues)
- Other criteria:
- Portability: the ease with which programs that work on one platform can be modified to work on another. This is strongly influenced by to what degree a language is standardized.
- Generality: Applicability to a wide range of applications.
- Well-definedness: Completeness and precision of the language's official definition.
Compilation vs Interpretation
Object-Oriented Paradigm
C++ Inheritance
https://www.w3schools.com/cpp/cpp_inheritance.asp
https://www.tutorialspoint.com/cplusplus/cpp_interfaces.htm
Difference Between Static and Dynamic Binding
https://techdifferences.com/difference-between-static-and-dynamic-binding.html
Reflection
A programming language that supports reflection allows its programs to have runtime access to their types and structure and to be able to dynamically modify their behavior
- The types and structure of a program are called
metadata
- The process of a program examining its metadata is called
introspection
- Interceding in the execution of a program is called
intercession
Uses of reflection for software tools:
- Class browsers need to enumerate the classes of a program
- Visual IDEs use type information to assist the developer in building type correct code
- Debuggers need to examine private fields and methods of classes
- Test systems need to know all of the methods of a class
Downsides of Reflection:
- Performance costs
- Exposes private fields and methods
- Voids the advantages of early type checking
- Some reflection code may not run under a security manager, making code nonportable
Reflection in Java
- Limited support from
java.lang.Class
- Java runtime instantiates an instance of
Class
for each object in the program
- The
getClass
method ofClass
returns theClass
object of an object
float[] totals = new float[100];
Class fltlist = totals.getClass();
Class stg = "hello".getClass();
- If there is no object, use class field:
Class stg = String.class;
- Class has four useful methods:
getMethod
searches for a specific public method of a classgetMethods
returns an array of all public methods of a classgetDeclaredMethod
searches for a specific method of a classgetDeclaredMethods
returns an array of all methods of a class- The
Method
class defines the invoke method, which is used to execute the method found bygetMethod
Some tutorials
Examples from Introduction to Programming Using Python 3
http://www.cs.armstrong.edu/liang/py/ExampleByChapters.html
C++ tutorial
http://www.cplusplus.com/doc/tutorial/program_structure/