270 likes | 468 Views
Scripting Languages. Dolores Zage. What is a script ?. Can mean several things… in programming A program that is interpreted or carried out by another program rather than by a processor Popular scripting languages Perl Rexx JavaScript Tcl/Tk VBScript. What is a script?. In OS
E N D
Scripting Languages Dolores Zage
What is a script ? • Can mean several things… • in programming • A program that is interpreted or carried out by another program rather than by a processor • Popular scripting languages • Perl • Rexx • JavaScript • Tcl/Tk • VBScript
What is a script? • In OS • list of OS commands that are prestored in file and performed sequentially by an interpreter • In multimedia • sequence of instructions that you enter to indicate how presentation will be presented
Profile • Easier and faster to code • limited capability • tie programs together • script takes longer to run • web scripts normally handle forms of input and output
Pro and Cons of Scripting Languages - Users views • While I have nothing against specialized scripting languages, it seems • more parsimonious to define an appropriate C++ library and use the • same language for scripting as for development. Then scripts can be • invoked by other scripts in the same manner as servers. In fact, the • difference between scripts and servers is all convention and not • substance. (Whereas with a specialized scripting language scripts and • servers are different species that cannot mix.) This would seem to • enable the kind of open growth that is being seen now with World Wide • Web scripting languages. (Hot Java is a cleaned-up C++ that works with • the Web.)
Another users view of scripts • I come at this problem from three related viewpoints: I am the author of a widely-used program, I use many different tasks in my own research, and I help out other researchers using a variety of tasks and packages. This has led me to two related observations about general users : • 1) they want to be able to accomplish their research with the minimum of interaction with the software. • 2) they (we) do some really stupid things sometimes.
So, my plea is the following. By all means try to improve the interoperability of software and all those other good things. Just don't spend so much of the available resources on it that there is nothing left to put together high level scripts/tasks for specific astronomical uses. These scripts/tasks need to operate with the minimum of user input and they need to have enough encoded expertise that they catch cases when the user is probably being stupid. It will do the average user no good to be able to use a task from IRAF followed by one from AIPS++ followed by one from IDL if they don't know that these are the appropriate tasks to use or if they do know about the tasks but they end up using one of them in an invalid regime. • Keith Arnaud • Lab. for High Energy Astrophysics • NASA/GSFC
John Ousterhout View of Scripting Scripting: Higher Level Programming for the 21st Century John Ousterhout Sun Microsystems Laboratories As we near the end of the 20th century a fundamental change is occurring in the way people write computer programs. The change is a transition from system programming languages such as C or C++ to scripting languages such as Perl or Tcl. Although many people are participating in the change, few people realize that it is occurring and even fewer people know why it is happening. In this talk I will explain why scripting languages will handle many of the programming tasks of the next century better than system programming languages. Scripting languages represent a very different style of programming than system programming languages. They are designed for "gluing" applications, and use typeless approaches to achieve a higher level of programming and more rapid application development. Increases in computer speed and changes in the application mix are making scripting languages more and more important for applications of the future. After presenting the general issues associated with scripting I will discuss how scripting relates to agents, and where scripting does and doesn't make sense for intelligent and mobile agents.
January 2000, Good Source for Scripting • http://www.ddj.com/articles/2000/0001/0001toc.htm
AWK • AT&T • text processing • awk/sed • Perl has taken over
Perl • Practical Extraction and Reporting Language • or • Pathologically Eclectic Rubbish Lister • successor to awk • it combines shells, awk, sed, grep and C • Larry Wall -creator • GNU product • glue language
Perl • Originally designed to manipulate text in files, extract data from files, write reports • added: manipulate files, processes, and perform many networking tasks • most popular language for writing CGI scripts (to generate dynamic pages for processing forms0
What version? • $perl -v • This is perl, version 5.00 • (our Unix system)
Perl at the Command Line • Although usually done in scripts, can be executed at the command line for simple tasks such as testing a simple function, a print statement • the -e switch • allows Perl to execute Perl statements at the command line instead of a script
Command line examples • $perl -e ‘print “hello world\n”;’ • -n switch - implicitly loop through the file one line at a time • $perl -ne ‘print’ emp.dat - prints entire file • $perl -ne ‘print if/^IGOR/’ emp.dat • uses regular expression matching • $date | perl -ne ‘print “Today is $_”’ • the output of the Unix date command is piped to Perl and stored in the $_ variable
Command line examples • $perl -ne ‘print’ < emp.dat • input is taken from file emp.dat and output is sent to the screen • $perl -ne ‘print’ < emp.dat > emp.temp • input is taken from file emp.dat and output is sent to emp.temp
Script setup • List of Perl statements and declarations • statements are terminated by ; • variables are created anywhere in the script and if not initialized, automatically get the result 0 or null depending on their context • Perl executes each line only once, when working with files, must use an explicit loop to iterate over the entire file or use the -n ( unlike awk and sed).
Startup and the #! line • First line must be the #! Followed by the pathname of the directory where the version of Perl resides • #!/usr/local/bin/perl • I used the whereis perl Unix command to determine path • tells the kernel what program is interpreting the script • note: you must chmod your script to be executable!
First Perl • #!/usr/local/bin/perl • #my first perl • print “Hello world\n”; • $perl -c first.perl - check syntax • $chmod +x first.perl - add execute permission • $first.perl
Variables in Perl • #!/usr/local/bin/perl • $salary=50000; #scalar assignment • @months=(Mar,Apr,May); # array assign. • %states=( ‘CA’ => ‘California’, • ‘IN’ => ‘Indiana’ ); #hash assign. • print “$salary\n”; • print “@months\n”; • print “$months[0],$months[1], $months[2]\n”; • print “$states{‘CA’}, $states{‘IN’}\n”; • print $x + 3, “\n”;
Two Dimensional arrays • @matrix = ([3,4,5], • [2,5,7], • [3,4,5], ); • need a nested loop to print out • for ($i=0; $i<=2; $i++){ • for ($x=0; $x<=2; $x++){ • print “$matrix[$i][$x]”; • } • print “\n”; • }
Records • @record = (“Adam”,[3,4,5], • “Mark”, [2,5,7], • “John”, [3,4,5], ); • print “$record[0], $record[1]->[0]”; • print “$record[2], $record[3]->[0]”;
Other concepts • Message queues, semaphores and shared memory (IPC objects) • Networking features - protocol functions, socket function
Perl and CGi • #!/usr/local/bin/perl • print “content-type: text/html\n\n”: #MIME header • print “<HTML><HEAD><TITLE>CGI/Perl_first_try</TITLE></HEAD>/n”; • … other print commands with associated html commands .. • Print ‘date’; # execute unix date command • print “</….></HTML>/n”;
Tcl/Tk • Big around late 80s • with Tk can do easier GUIs • John Ousterhout • does not excel in anything
Python • Glue and general purpose • stronger OO flavor
Web pages on general scripting • Script_lang.htm • script2.htm