Programming Languages Presentation
510 likes | 653 Views
Explore the foundational programming languages Perl, Simula, and Smalltalk. Perl, developed by Larry Wall in 1987, is a high-level, dynamic, interpreted language known for its powerful text processing capabilities and flexibility, often used as a scripting language. Simula, created in the 1960s, is recognized as the first object-oriented programming language, influencing many modern languages. This presentation covers key features, design principles, and practical applications of each language, highlighting their roles in software development and their unique characteristics.
Programming Languages Presentation
E N D
Presentation Transcript
Programming Languages Presentation Perl, Simula and Smalltalk
Perl – An Overview • Developed in 1987 by Larry Wall • High Level, general purpose, interpreted, dynamic language • Latest major stable version is 5.18 Perl 5 • Perl 5 and Perl 6 – two different languages developed independently • Derived broadly from C, SH and AWK
Perl – “Hello World” • In Perl, one would write the Hello World program as: print "Hello World!\n"; • Good Perl practices require more complex programs to add the use strict and use warnings pragmas, leading into something like: use strict; use warnings; print "Hello World!\n";
Perl-Design & Features • Names • Letters, numbers and underscores characters • Variables are prefixes with a special sign • $ for scalars • @ for arrays • % for hashes • Variables are case sensitive • Bindings • Dynamic typed in terms of binding • Can simulate static typing by using “strict” • Scoping • ‘my’ provides static scoping, else generally dynamic
Perl-Design & Features • Objects • Reference to a data type, which knows its class • Stores as reference in a scalar variable • Class • A package that contains the methods required to create and manipulate objects • Method • A sub-routine defined within a package
Perl-Design & Features • Data Types • Three built in data types • Scalars • Arrays of Scalars • Associative Arrays of Scalars known as “Hashes” • A scalar is a single string, number or reference • Arrays are ordered lists of scalars indexed from 0. • Arrays are versatile and dynamic • Hashes are unordered collection of scalar values indexed by their associated string key
Perl-Design & Features • Expressions and Assignment Statements • Simplest form – ‘matching expressions’ • Special operator ‘=~’ • Use module ‘overload.pm’ to perform operator overloading • Stetement Level Control Structures • while, for, foreach and if statements are most commonly used control structures • until and unless - variations of while and if respectively • control block – another form of while, useful to test conditions
Perl-Design & Features • Sub-programs • Are global in scope, and can be invoked anywhere by name or by reference • Cannot be private, however the subroutine variables can be private • Exception Handling and Event Handling • Built in exception handling mechanism- eval{} block • $@ variable to check for exceptions • Error.pm module handles OO exception handling • Event handling procedures offered through a subclass
Perl-Design & Features • Implementation • Hybrid Implementation where the program is compiled for errors and then interpreted using the perl interpreter • Garbage Collection • Perl employs reference garbage collector. • Cannot handle circular references leading to memory leaks
Perl – Object oriented Features • Inheritance • Easily defined using special variable “@ISA”, that governs the inheritance • Encapsulation constructs • Known as packages • Use the constructors and destructors subroutines to handle incorporation in packages • Abstractions • Psedo-hashes: like hashes, but scoped. • Objects have automatically called methods
Perl – Object oriented Features • Polymorphism (Method Override) • Implicitly polymorphic, because of weak typing, we can override and redefine methods in subclasses
Perl - Evaluation Readability • Reputation of being ugly and hard to maintain • Poor Readability in general • Variables because of special symbols are easy to read • Syntax is non trivial Orthogonality • Not orthogonal but has many shortcut features
Perl - Evaluation Writability • Good writability because of many new features • Simple data types and data type abstraction, special symbols increases writability Reliability • Increased stability with continuous evolution since 1987 • Security problems due to improperly validated user input • Increased complexity decreases reliability
Perl - Evaluation Cost • Open source software, no cost of ownership • Similarly compilation costs, execution costs are free. • Cost of maintenance is a question of time vs money
Perl - Applications • Widespread popularity as a CGI scripting language • Powerful text processing facilities without the data length limitations • Used in graphics programming, system administration, network programming and biometrics • Called the “glue language” or the “duct tape that holds internet together” • Favored for database applications
Simula – An Overview • Initially designed for doing Simulations • Later recognized as a general purpose programming language • Developed in 1960s by Ole-Johan Dahl and Kristen Nygard. • First object oriented programming language • Two versions – Simula 1 and Simula 67 • Influenced later generations of programming languages notably C++, Smalltalk • Extension of Algol 60
Simula: “Hello World” • An example of a Hello world program in Simula: Begin OutText ("Hello World!"); Outimage; End;
Simula- Design & features • Class • A procedure which returns a pointer to its activation record • Similar to Java, uses “begin ….. end” like braces in Java • Comments begin with “!” and end with “;” • Prefix Class (superclass) – defines a superclass and provides inheritance • Object • Activation record produced by call to a class • Ref(Class) – form of the type of a object variable (Simula term for pointers)
Simula- Design & features • Data types • Integer, Short Integer, Real, Long Real, Character, Boolean • Text – a class instance • Case sensitive • Assignments • Uses “:=“ for standard value assignments • And “:-” for reference assignments • Parameters • Transmitted by value • Only for Ref type, parameters are transmitted by reference
Simula- Design & features • Procedures • Method/function implemented using keyword procedure in all cases • Procedures can be declared anywhere in a program • No return statements • Allows procedures to have procedure parameters (“Formal procedures”) • Virtual Mechanism • Procedures can be declared virtual or not • Can also be abstract as no implementation is given in class
Simula- Design & features • Co-routines and quasi parallel execution • A multi stack language • Each objects executes in quasi parallel, gets its own call stack by calling procedures • “Detach” statement transfers the execution control back to main program • “Resume” continues the execution from the point of detachment • Subclasses can only be declared at the same block level as the superclass.
Simula- Design & features • Type checking • Later versions, type check during compilation was added • List processing • Class “Simset” adds list processing capabilities • Simulation • Class “Simulation” allows for discrete event simulation • Modularization • Separate compilation of classes and procedures • Strong Typing extends to separately compiled modules
Simula- Design & features • Memory Management • Objects are garbage collected automatically • User destructors considered undesirable • No issues with life span of objects • Portability • Highly standard definition • Programs are highly portable • Implementation • Compiler implementation, uses Simula compiler to implement
Simula – Object Oriented Features • Dynamic Lookup • Operations on an object are selected from the activation record of that object • Inheritance (“Class prefixing”) • Form of class prefixing, including the ability to redefine parts of a class in a subclass • Subtyping • Arising from the way types are associated with classes • Abstraction – introduced in later versions
Simula – Object Oriented Features Unique Object oriented features of Simula • Inner • Indicates that the method of a subclass be called in combination with execution of superclass code • Inspect/Qua • Provide ability to test the type of an object at run time and to execute appropriate code accordingly Encapsulation • Initially no distinction • Later versions incorporated “protected” and “hidden”
Simula: Evaluation • Readability • Too complicated • Missing data types (records, sets) as such orthogonality very poor • Writability • Limited file access facilities (typed files)
Simula: Evaluation • Reliability • No multiple inheritance • No interfaces • Long executable files for short programs • No advanced parallelism and real time support • No GUI support • No proper security mechanism • Cost • Expensive, never became a widespread language • Does not have a modern IDE • Very portable
Simula - Applications • Designed for doing Simulation during the 1960s • Also used in wide range of applications such as simulating VLSI designs, process modeling, protocols, typesetting, computer graphics and education
Smalltalk – An Overview • An object-oriented, dynamically typed, reflective programming language • Developed at Xerox PARC • Smalltalk-76, Smalltalk-80 important versions • Created by Alan Kay, Dan Ingalls, Adele Goldberg, Ted Kaehler, Scott Wallace in the 1970s • Major language that popularized objects • Motivating application – Dynabook by Alan Kay
Smalltalk - Overview • Main advances of Smalltalk over Simula: • The Object metaphor was extended and refined • Everything is an object including class • All operations are messages to objects • Objects and classes can be used to build entire system • Abstraction was added using private instance variables, public methods
Smalltalk – “Hello World” • Message "show:" is sent to the object "Transcript“ • Invocation of the "show:" method displays the string Transcript show: 'Hello, World!'. • To see results, need transcript window
Smalltalk – Design & Features • Object • A combination of private data and functions • Each object is an instance of some class • Have local memory, inherent processing capability • Ability to communicate with other objects • Can be passed as parameters and returned as objects • Messages and Methods • Message is a request to object to perform operation (function call) • Methods: (function) implementation of an operation
Smalltalk – Design & Features • Classes • A template defining the implementation of a set of objects • A special editor • Class variable-shared by all objects in class • Subclass defined by inheriting from its superclass • Selector • The name of a message (function name)
Smalltalk – Design & Features • Message • A selector together with actual parameter values • Contains the names and parameters of methods • Method • The code in a class for responding to a message • Functions to manipulate objects • Instance Variable • Data stored in an individual object (instance of a class) • Repeated for each object
Smalltalk – Design & Features • Expressions • Computation achieved by evaluating expressions, which always return an object • Types –Literals, Variable names, Message Expressions, Blocks of Code • Variables • All variables are pointers to objects and inherently typeless • Case sensitive (public –start with upperclass, private lowerclass)
Smalltalk – Design & Features • Message Expressions • Involves • Receiver • Arguments • Message selector • Message Answer • Message Syntax Types • Unary (no parameters) • Binary : 2+3 • Keyword : myArray at: 42 put: 5
Smalltalk – Design & Features • Self references • “self” is used to the object itself • Assignment • Uses “:=‘ for assignment • Blocks • Control structures formed by passing block objects as parameters • Expressions evaluated when block receives the message “value” [index := index+1. Sum:=sum+index.] value • Blocks can be assigned to variables
Smalltalk - Design & Features • Implementation • Just in time compilation • Smalltalk programs are usually compiled to byte code, which is then interpreted by a virtual machine into machine-native code. • Portability • All smalltalk systems follow the same virtual machine specification making it very portable • Incremental Compilation • Compilation done at method level, compilation is faster and instantaneous
Smalltalk - Design & Features • Garbage Collection • Automatic garbage collection • Objects are allocated in a heap and the heap is collected for garbage automatically • “Nil” is an object used to check the “NULL” condition • Error Handling • On error in objects type, a message “doesnotunderstand” pops up, and a debugger can be invoked to deal with it.
Smalltalk - Design & Features • Reflection • Each object can be examined and if required modified at run time • Operating System • Was originally developed as a complete operating system • Includes code for activities typically performed at OS level
Smalltalk - Object Oriented Features • Abstraction • Provided through protected instance variables • All methods are public, instance variables accessed only by methods of the class and subclasses • Subtyping • Does not have compile time type system • Arises implicitly, based on set of messages understood by an object
Smalltalk - Object Oriented Features • Inheritance • Subclasses inherit all instance variables and methods of superclasses • Methods of a superclass may be redefined in a subclass or deleted • Is a strict tree structure: a subclass can have only one and only one parent class • Subclasses can add new variables or methods, also can hide inherited functionality
Smalltalk - Object Oriented Features • Polymorphism • Supports by allowing methods defined in class to be over ridden with methods of the same name • Encapsulation • Encapsulates all objects, which can be interact with other objects through messages to the objects interface
Smalltalk - Evaluation • Readability • Developed for non programming users • Simple and constructible • Very few special words • Orthogonality • As all constructs are object specific, every possible combination is possible between the constructs leading to high orthogonality • Writability • Readable and Orthogonal • Good support for abstraction
Smalltalk - Evaluation • Reliability • No inherent type checking • But type checking carried out implicitly at run time for object types • Exception handling performed at run time, with debugging capabilities • Aliasing possible decreasing reliability • Cost • When released relatively expensive and uncommon • Was not widely adopted resulting in shortage of trained people and matured models
Smalltalk - Evaluation • Whole “OS” approach, was a barrier when there were more widely used OS like Unix • Hasn’t kept up in the application area • However very portable because of same virtual machine specification
Smalltalk - Applications • Prototyping –a program can be prototyped quickly in smalltalk and later deployed in other languages. This is possible due to incremental compilation • Operating System – not widespread