Download Scripting Languages Intro

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Compiler wikipedia , lookup

Reactive programming wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Functional programming wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Go (programming language) wikipedia , lookup

Control flow wikipedia , lookup

Object-oriented programming wikipedia , lookup

Interpreter (computing) wikipedia , lookup

Structured programming wikipedia , lookup

AppleScript wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Programming language wikipedia , lookup

Domain-specific language wikipedia , lookup

Transcript
Scripting Languages Intro
Jan Stelovsky, ICS 215
Wikipedia
• A scripting language, script language or extension
language is a programming language that allows
control of one or more software applications.
• "Scripts" are distinct from the core code of the
application, as they are usually written in a different
language and are often created or at least modified by
the end-user.
• Scripts are often interpreted from source code or
bytecode, whereas the applications they control are
traditionally compiled to native machine code.
• Scripting languages are nearly always embedded in the
applications they control.
Comment
• from stackoverflow:
– You will notice the use of "usually", "often",
"traditionally" and "nearly always" - these all tell
you that there is no set of distinct attributes that
make a specific language a "scripting language".
Scripting vs. “Programming”
Languages
• Scripting languages are Programming languages (PL)
• interpreted vs. compiled
– slow vs. fast
• but: Java – a PL is hybrid
– compiled to bytecode
• bytecode is common to all hardware platforms
• bytecode is then interpreted
– JIT even compiles to “native” code dynamically
• but: LISP – a PL - is interpreted
• but: scripting languages became hybrid/compiled
– all JavaScript scripts are nowadays compiled
Hybrid Processing
program
script
bytecode
native
Windows
Intel
native
Mac
Intel/Motorola
native
Linux
Intel
Scripting vs. “Programming”
Languages cont.
• scripting languages often operate other programs,
or the operating system (OS), e.g. Windows, or
other applications, e.g. the browser
– batch “shells” on Unix
– Applescript operating other applications
• but often programs in PL can execute or at least
create scripts for scripting languages
• but does JavaScript “operate another program”
– the browser?
Other Aspects
• verbose vs. terse
– PL are typically terse, vs. Applescript
• but
– but most languages adopted C syntax: C, C++, Java,
JavaScript, even Ruby
Other Uses of Scripting Languages
• CoffeeScript is a better JavaScript
– classes: inheritance
• consistency
• alleviates JavaScript quirks
– == and ===
– is variable defined?
– what’s variable’s type
• needs to be translated to JavaScript
PL Charts
• How did PLs develop
– typical chart
– http://upload.wikimedia.org/wikipedia/commons/a/a7/TaxonomyofProgrammingLanguages.png
• mostly C as “grandfather”
• Java = C++--
– consider trends (innovation, density)
• book publishers, e.g. O’Reilly
– http://oreilly.com/news/graphics/prog_lang_poster.pdf
Traditional PL Chart (top)
Traditional PL Chart (bottom)
O’Reilly PLs & Books
O’Reilly PLs
Most Recent O’Reilly PL Books
• 8 out of 13 newer PLs (=60%)
• Note: JavaScript ~= ECMA Script ~= ActionScript
215, ICS and PLs Popularity
ICS 215
• 5 out of 11 most
popular PLs
(mpPLs)
• 24% of mpPLs
ICS
• 7 out of 11 mpPLs
• 55% of mpPLs
Conclusion
• The differences between Scripting Languages and
Programming Languages are getting more and more
blurred
• languages are becoming compiled or at least hybrid
• languages often operate OS or other applications
– e.g. access to file system
• our distinction is mainly historical
– Java (Pascal) and C++ are taught in intro courses
– we need to expose students to other languages
• ICS exposes you to most of the trending PLs
– already in undergraduate curricullum
– in particular in ICS 215 (and ICS 315)
Our Definition
• now
– JavaScript
– Ruby
– PHP
– Python
– Perl
• in future
– other new programming languages as they
become important