<<

Introduction to Scripting

FA16 – ICS 215 Ed Meyer What is a scripting language?

2 What is the difference between a scripting language and a system ?

3 System Programming Languages

• From scratch – build data structures – algorithms • Strongly typed to manage complexity

4 Scripting Languages

• Designed for gluing • Automate the execute of tasks • Typeless to simplify connections among components

5 System Programming: Beginning

• An alternative to assembly – Very low- – Each statement is a single machine instruction ;; To output a CR, LF crlf push ax push dx mov ah, 2 mov dl, 0dh int 21h mov dl, 0ah int 21h pop dx pop ax endm 6 System Programming: Beginning

• An alternative to assembly – Very low-level – Each statement is a single machine instruction • Use a to translate higher-level languages to binary instructions

7 System Programming vs Higher-Level Languages

• Means many details are handled automatically – Can write less code to get the same job done • Such details are – Register allocation, handled by the compiler – Procedure calling sequences – Simple keywords such as while and if for control structures • 1 system program line ≈ 5 instructions

9 Procedure Calling Sequences

10 if-else statement

Suppose we want to do something like: if (ax < bx) { X = -1; } else { X = 1; } it would look like this: mov ax, 5 ; put the value 5 in register ax mov bx, 7 ; put the value 7 in register bx cmp ax, bx jl axLess ; go to 'axLess' if ax < bx mov word [X], 1 ; This is the 'else part jmp Both ; skip the 'then' part axLess: mov word [X], -1 ; This is the 'then' part Both:

11 Read in and Compare 2 Numbers (in C)

~18 Lines of code

12 Read in and Compare 2 Numbers (Assembly)

13 ~54 Lines of code

14 Comparison

18 lines in C : 54 lines in Assembly 1 line in C : 3 lines in Assembly

To run C programs, just install C Assembly is restricted to machines hardware Much easier to install software than hardware.

15 Typing (System Prog.)

• Need to declare how each piece of information will be used String output = new String(); • Each variable must be used in ways that are appropriate for that

16 String output = "Hello World!" / 5;

17 Typing (System Prog.)

• Need to declare how each piece of information will be used String output = new String(); • Each variable must be used in ways that are appropriate for that type • Data and code are segregated • Objects have well-defined structure – With procedures or methods to manipulate them – An object of one type cannot be used in place of another

18 Advantages of Typing

• Large programs manageable – Clarifies how things are used and treated • Catch errors before runtime – Using a string value as a pointer – Compile error vs Runtime error • Improves performance – Mainly via the compiler

19 Scripting Languages Some Examples

21 Typing (Scripting)

• Actually, are fundamentally typeless – Memory can hold an integer, floating-point, a pointer, or instruction • Meaning of information is determined by the way it is used • No declaration of variable type – Declare a variable and use it! • Easy to glue components together

22 Typing Example (Scripting)

• In Java String output = new String(); • In PHP $output = "Hello World!"; $output = 5 + 3;

23 Typing Example (Scripting)

• Creating a button in Tcl button .b -text Hello! -font {Times 16} - {puts hello}

24 Typing Example (Scripting)

• Creating a button in C++ CFont *fontPtr = new CFont(); fontPtr->CreateFont(16, 0, 0, 0, 700, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, "Times New Roman"); buttonPtr->SetFont(fontPtr);

25 Scripts are Interpreted

• Not compiled • Rapid turnaround • Increases productivity • Generate code on the fly • Less efficient resource wise – Not really an issue

26 A comparison of various programming languages based on their level (higher-level languages execute more machine instructions for each language statement) and their degree of typing. 27 When should you use…???

28 A Scripting Language…

• Is the application’s main task to connect preexisting components? • Will the application manipulate a variety of different things? • Does the application include a GUI? • Does the application do a lot of string manipulation? • Will the application’s functions evolve rapidly over ? • Does the application need to be extensible?

29 A System Prog. Language…

• Does the application implement complex algorithms or data structures? • Does the application manipulate large datasets, for example, all the pixels in an image, such that speed is critical? • Are the application’s functions well defined and slow to change?

30 In Comparison…

Scripting System Programming • Interpreted • Best suited for complex • Higher productivity systems • Weakly typed • Code is compiled • Higher level than system • Strong typing programming • Reuse is high • Machine instructions per statement is high

31 Trend

• Faster machines • Better scripting languages • Growth of Internet

• Expand the applicability of scripting languages

32 Additional Readings

• On Laulima – "Scripting: Higher Level Programming for the 21st Century" by John K. Ousterhout, IEEE Computer, 31(3) 1998, pp. 23-30, – "Are Scripting Languages Any Good? A Validation of , Python, , and Tcl against C, C++, and Java" by Lutz Prechelt, Advances in , 57 (Ed.: M. Zelkowitz), Academic Press, 2003, pp. 205-270.

33 More Recently…

• ACM Blog July 7, 2014 – Python is Now the Most Popular Introductory Teaching Language Top U.S. Universities

34