1 / 20

Scripting Languages LECTURE 1 INTRODUCTION

Scripting Languages LECTURE 1 INTRODUCTION. Georges Khazen. by John K. Ousterhout. Introduction. Scripting languages are designed for different tasks than are system programming languages like C, C++ or Java

tdawn
Download Presentation

Scripting Languages LECTURE 1 INTRODUCTION

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Scripting LanguagesLECTURE 1INTRODUCTION • Georges Khazen

  2. by John K. Ousterhout

  3. Introduction • Scripting languages are designed for different tasks than are system programming languages like C, C++ or Java • System programming languages were designed for building data structures and algorithms from scratch. • Scripting languages were designed for gluing • They use existing powerful components and connect them together.

  4. Introduction • - Scripting languages and system programming languages are complimentary. • - Most major computer platforms since the 1960s include both kinds of languages • - Several recent trends, such as faster machines, graphical user interfaces (GUI) and the growth of the Internet, have greatly expanded the applicability of scripting languages.

  5. System programming Languages • They were introduced as an alternative to assembly languages (low level programming, register allocation and procedure-calling sequence) • By the late 1950s, higer-level languages such as List, Fortran and Algol began to appear. • No more need for machine instructions • Compilers are needed to translate each statement in the source program into a sequence of binary instructions • Over the time, other system programming languages evolved including PL/1, Pascal, C, C++ and Java • Quicker than assembly languages for developing applications but less efficient

  6. System programming LanguagesHigher Level • System programming languages differ from assembly languages in two ways: they are higher level and they are strongly typed. • • Register allocation is handled by the compiler • • Procedure calling sequences are generated automatically; • • Programmers can use simple keywords such as while and if for control structures; the compiler generates all the detailed instructions to implement the control structures. • On average, each line of code in a system programming language translates to about five machine instructions.

  7. Typing • Typing refers to the degree to which the meaning of information is specified in advance of its use. • In a strongly typed language, the programmer declares how each piece of information will be used, and the language prevents the information from being used in any other way. • In a weakly typed language, there are no a priori restrictions on how information can be used; the meaning of information is determined solely by the way it is used, not by any initial promises.

  8. Typing • Today’s system programming languages are strongly typed. For example: • • Each variable in a system programming language must be declared with a particular type such as integer or pointer to string, and it must be used in ways that are appropriate for the type. • • Data and code are segregated; it is difficult if not impossible to create new code on the fly. • • Variables can be collected into structures or objects with well-defined substructure and procedures or methods to manipulate them. • An object of one type cannot be used where an object • of a different type is expected.

  9. TYPING • Typing has several advantages • It makes large programs more manageable by clarifying how things are used and differentiating among things that must be treated differently. • Compilers use type information to detect kinds of errors, such as an attempt to use a floating-point value as a pointer. • Typing improves performance by allowing compilers to generate specialized code. For example, if a compiler knows that a variable always holds an integer value, then it can generate integer instructions to manipulate the variable; • if the compiler does not know the type of a variable, then it must generate additional instructions to check the variable’s type at runtime.

  10. Degree of Typing • - System programming are strongly typed to help manage complexity • - Scripting languages are typed less to simplify connections among components and provide rapid application development.

  11. Scripting Languages • Generalizations about Scripting Languages • Interpreted (some compiled internally) • Rapid Development — no compilation required • Portability — cross platform (since not compiling — no machine code) • Slower than compiled languages • Frequently no “main” • Good for controlling and connecting other applications • Flexibility • Easy to extend • Vast libraries and extensions available

  12. Introduction • Popular Applications of Scripting Languages • System Administration • System Automation • Text Manipulation • Web Development • Client-side • Server-side • Graphical User Interfaces • System Prototyping • Hacking & Cracking • Merging • Interfacing Incompatible Programs • Connecting Programs

  13. Other Observations • Used for gluing together existing components • Higher level than other languages • Abstract operations are built-in — regular expressions, string operations are part of language level constructs • Tcl 1-liner example in paper same work as 25 lines using Microsoft Foundation Classes • More work per line of code • Weaker typing means variables can hold whatever, need not explicitly declare them of a given type • Interpreted — run inside another application (the interpreter) • Trade-off between slower execution for faster development

  14. Different Tools for Different Tasks • Both types of languages have their strengths and weaknesses. Each type tends to lend itself better for some tasks. • You should consider choosing a scripting programming language when: • The application's main task is to connect preexisting components • The application will manipulate a variety of different things • The application requires a GUI • The application will do a lot of string manipulation • The functions of the application evolve rapidly over time • The application needs to be easily extensible • You should consider choosing a system programming language when: • The application implements complex algorithms or data structures • The speed of the application is absolutely critical • The functions of the application are well defined and change slowly

  15. Object Oriented Programming • Object Oriented Programming (OOP) is commonly held as a significant step in the evolution of programming languages. • OOP features such as strong typing and inheritance are often claimed to produce dramatic reductions in development time. • Strong typing encourages narrowly defined interfaces, which do not lend themselves for reuse • Inheritance poses a number of challenges — ties implementation of inherited classes together, adds complexity, and then there is multiple inheritance • OOP does provide some good features: • Data Encapsulation — combine data and code in a manner that hides implementation • Interface Inheritance — same API, multiple implementations (i.e. Java Interface) • These same OOP benefits have been applied to scripting languages: • Perl (historically procedural) adopted OOP along side its standard procedural style • Python is a semi-object oriented scripting language • Ruby treats everything as an object (including literals and so called “primitives”)

  16. Scripting Languages vs. Systems Languages • Scripting LanguagesSystems Languages • Higher Level Lower Level • Gluing Components Building Components • Loosely Typed Strongly Typed • Interpreted Compiled • Runs Slower Runs Faster • Faster Development Slower Development • Dynamic Code Static Code • Smaller Code Size Larger Code Size

  17. Examples (FiBONACCI) • C C++ • Java

  18. Examples (FiBONACCI) • Perl Python Ruby

  19. Text EDitors • Problems with Normal Text Editors • - They include formatting and layout information in addition to the text • - This might corrupt your files by filling them with un-manipulating text data and or scripts. • Some Recommended Text Editors • - Emacs, vi, vm for Linux • - Emacs, TextWrangler BBEdit, TextMate for MAC • - Emacs, TextWrangler, Notepad++ for Windows

  20. Scripting Languages Covered • Shell Scripting • Python • Perl • Ruby • PHP and Javascript (not in depth)

More Related