Difference between revisions of "Multi-Paradigm Programming and Scripting"
Adelo Vieira (talk | contribs) |
Adelo Vieira (talk | contribs) |
||
Line 1: | Line 1: | ||
− | *Improved background for choosing appropriate languages | + | Why Multi-Paradigm Programming and Scripting?: |
+ | *Universal programming constructs (invariant of language), their functions, uses and how different paradigms/languages employ them. | ||
+ | *Improved background for choosing appropriate languages: | ||
+ | :*Analyse and evaluate the strengths and weaknesses of various programming languages for use in solving particular problems. | ||
+ | '''Content:''' | ||
+ | |||
+ | |||
+ | '''Programming Constructs:''' | ||
+ | *The compilation process | ||
+ | *Data types (strongly-typed, weakly-typed) | ||
+ | *Pointers | ||
+ | *Variables and Invariants | ||
+ | *Conditionals (Selection) | ||
+ | *Sequence | ||
+ | *Repetition | ||
+ | *Routines | ||
+ | *Concurrency | ||
+ | |||
+ | |||
+ | '''Programming Paradigms & Languages:''' | ||
+ | *Abstraction (machine to very-high-level) | ||
+ | *Mark-up | ||
+ | *Imperative & Declarative | ||
+ | *Procedural | ||
+ | *Parallel & Concurrent | ||
+ | *Functional | ||
+ | *Event-Driven | ||
+ | *Multi-Paradigm Languages | ||
+ | *Interpreted Languages | ||
+ | *Comparison of all to Object Oriented Paradigm | ||
+ | |||
+ | '''Scripting:''' | ||
+ | *Interpreters and system commands | ||
+ | *Shell Scripting (Linux/UNIX) | ||
+ | *PowerShell Scripting (Windows) | ||
+ | *System Programming & Scripting | ||
+ | |||
+ | '''Applications of Shell Scripting:''' | ||
+ | *Job Control | ||
+ | *Glue Code / Wrappers | ||
+ | *Automating Tasks | ||
+ | *Data Processing / Transformation | ||
+ | *System uses | ||
+ | *I/O tasks and functions | ||
<br /> | <br /> | ||
==Examples from Introduction to Programming Using Python 3== | ==Examples from Introduction to Programming Using Python 3== |
Revision as of 18:33, 2 November 2019
Why Multi-Paradigm Programming and Scripting?:
- Universal programming constructs (invariant of language), their functions, uses and how different paradigms/languages employ them.
- Improved background for choosing appropriate languages:
- Analyse and evaluate the strengths and weaknesses of various programming languages for use in solving particular problems.
Content:
Programming Constructs:
- The compilation process
- Data types (strongly-typed, weakly-typed)
- Pointers
- Variables and Invariants
- Conditionals (Selection)
- Sequence
- Repetition
- Routines
- Concurrency
Programming Paradigms & Languages:
- Abstraction (machine to very-high-level)
- Mark-up
- Imperative & Declarative
- Procedural
- Parallel & Concurrent
- Functional
- Event-Driven
- Multi-Paradigm Languages
- Interpreted Languages
- Comparison of all to Object Oriented Paradigm
Scripting:
- Interpreters and system commands
- Shell Scripting (Linux/UNIX)
- PowerShell Scripting (Windows)
- System Programming & Scripting
Applications of Shell Scripting:
- Job Control
- Glue Code / Wrappers
- Automating Tasks
- Data Processing / Transformation
- System uses
- I/O tasks and functions
Contents
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/
Compilation vs Interpretation
Phases of Compilation
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