Python C/C++ Java Perl Ruby

Total Page:16

File Type:pdf, Size:1020Kb

Python C/C++ Java Perl Ruby Discussion: Programming Languages Big Ideas for CS 251 Your experience: Theory of Programming Languages • What PLs have you used? Principles of Programming Languages • Which PLs/PL features do you like/dislike. Why? More generally: • What is a PL? • Why are new PLs created? CS251 Programming Languages – What are they used for? Spring 2017, Lyn Turbak – Why are there so many? Department of Computer Science • Why are certain PLs popular? Wellesley College • What goes into the design of a PL? 1-2 PL is my passion! General Purpose PLs • First PL project in 1982 as intern at Xerox PARC Java Perl • Created visual PL for 1986 MIT Python masters thesis • 1994 MIT PhD on PL feature Fortran (synchronized lazy aggregates) ML JavaScript • 1996 – 2006: worked on types Racket as member of Church project Haskell • 1988 – 2008: Design Concepts in Programming Languages C/C++ Ruby • 2011 – current: lead TinkerBlocks research team at Wellesley • 2012 – current: member of App Inventor development team CommonLisp 1-3 1-4 Domain Specific PLs Programming Languages: Mechanical View HTML A computer is a machine. Our aim is to make Excel CSS the machine perform some specifieD acEons. With some machines we might express our intenEons by Depressing keys, pushing OpenGL R buIons, rotaEng knobs, etc. For a computer, Matlab we construct a sequence of instrucEons (this LaTeX is a ``program'') anD present this sequence to IDL the machine. Swift PostScript! – Laurence Atkinson, Pascal Programming 1-5 1-6 Programming Languages: LinguisEc View Religious Views The use of COBOL cripples the minD; its teaching shoulD, therefore, be A computer language … is a novel formal regarDeD as a criminal offense. – Edsger Dijkstra It is pracEcally impossible to teach gooD programming to stuDents that meDium for expressing iDeas about have had a prior exposure to BASIC: as potenEal programmers they are methoDology, not just a way to get a computer mentally muElateD beyonD hope of regeneraEon. – Edsger Dijstra You're introDucing your stuDents to programming in C? You might as well to perform operaEons. Programs are wriIen for give them a frontal lobotomy! – A colleague of mine people to read, anD only inciDentally for A LISP programmer knows the value of everything, but the cost of nothing. - Alan Perlis machines to execute. I have never met a stuDent who cut their teeth in any of these languages – Harold Abelson and Gerald J. Sussman anD DiD not come away profounDly DamageD anD unable to cope. I mean this reads to me very similarly to teaching someone to be a carpenter by starEng them off with plasEc toy tools anD telling them to go sculpt sanD on the beach. - Alfred Thompson, on blocks languages A language that Doesn't affect the way you think about programming, is not worth knowing. - Alan Perlis 1-7 1-8 Programming Language EssenEals PL Parts Syntax: form of a PL • What a P in a given L look like as symbols? • Concrete syntax vs abstract syntax trees (ASTs) PrimiEves Semantics: meaning of a PL • Static Semantics: What can we tell about P before running it? Means of CombinaEon – Scope rules: to which declaration does a variable reference refer? – Type rules: which programs are well-typed (and therefore legal)? • Dynamic Semantics: What is the behavior of P? What actions does it Means of AbstracEon perform? What values does it produce? – Evaluation rules: what is the result or effect of evaluating each language fragment and how are these composed? Think of the languages you know. What means of abstracEon Do they have? Pragmatics: implementation of a PL (and PL environment) • How can we evaluate programs in the language on a computer? 1-9 • How can we optimize the performance of program execution? 1-10 Syntax (Form) vs. Semantics (Meaning) Concrete Syntax: Absolute Value FuncEon in Natural Language Logo: to abs :n ifelse :n < 0 [output (0 - :n)] [output :n] end Javascript: function abs (n) {if (n < 0) return -n; else return n;} Furiously sleep ideas green colorless. Java: public static int abs (int n) {if (n < 0) return -n; else return n;} Python: App Inventor: Colorless green ideas sleep furiously. def abs(n): if n < 0: Little white rabbits sleep soundly. return -n else: return n Scheme: (define abs (lambda (n) (if (< n 0) (- n) n))) PostScript: /abs {dup 0 lt {0 swap sub} if} def 1-11 1-12 Abstract Syntax Tree (AST): This AST abstracts over the concrete syntax for the Logo, Dynamic SemanEcs Example 1 Absolute Value FuncEon JavaScript, anD Python DefiniEons. The other DefiniEons What is the meaning of the following expression? funcEonDeclaraEon woulD have Different ASTs. body funcDonName params abs conDiEonalStatement (1 + 11) * 10 n test then relaEonalOperaEon return return value rand1 value lessThan varref intlit arithmeEcOperaEon varref name rand1 name n 0 n subtract intlit varref value name 0 n 1-13 1-14 Dynamic SemanEcs Example 2 Dynamic SemanEcs Example 3 Suppose a is an array (or list) containing the three integer values 10, 20, anD 30 What is printeD by the following program? in the following languages. What is the meaning of the following expressions/ statements in various languages (the syntax might Differ from what’s shown). a = 1; a[1] a[3] a[2] = "foo" a[3] = 17 b = a + 20; Java C print(b); Python a = 300 JavaScript print(b); Pascal count = 0; App Inventor fun inc() { count = count + 1; return count; } fun dbl(ignore, x) { return x + x; } print(dbl(inc(), inc()) 1-15 1-16 StaEc SemanEcs Example 1 Static Semantics Example 2: Detecting Loops Which of the following Java examples is well-typeD (i.e., passes the type checker)? Which of these following Python programs has inputs How Do you know? What assumpEons are you making? for which it loops forever? A 2 * (3 + 4) F public boolean f(int i, boolean b) { if (a) { G A def f(x): c = a + b; return b && (i > 0); B 2 < (3 + 4) } else { } return x+1 c = a * b; C 2 < True } H public int g(int i, boolean b) { B def g(x): return i * (b ? 1 : -1); C def g2(x): G def k(x): while True: return g2(x) while x != 1: D } if (a < b) { pass c = a + b; if (x % 2) == 0: return x } else { I public int p(int w) { x = x/2 c = a * b; if (w > 0) { return 2*w; } else: } } x = 3*x + 1 E def h(x): F def h2(x): return 1 J public int q(int x) { return x > 0; } while x > 0: if x <= 0: E if (a < b) { x = x+1 return x c = a + b; } else { K public int r(int y) { return g(y, y>0); } return x else: c = a > b; return h(x+1) public boolean s(int z) { return f(z); } } L 1-17 2-18 Static Semantics and Uncomputability The Church-Turing Thesis It is generally impossible to answer any interesEng quesEon about anD Turing-Completeness staEc program analysis! This is a consequence of Rice’s Theorem (see CS235). • Church-Turing Thesis: Computability is the common spirit emboDieD by this collecEon of formalisms. For example, will this program ever: • This thesis is a claim that is wiDely believeD about the intuiEve noEons of algorithm anD effecEve computaEon. It is not a theorem that can be • halt on certain inputs proved. • encounter an array index out of bounds error? • Because of their similarity to later computer harDware, Turing machines • throw a NullPointerException? (CS235) have become the golD stanDarD for effecEvely computable. • access a given object again? • Well see in CS251 that Church’s lambDa-calculus formalism is the • send sensitive information over the network? founDaEon of moDern programming languages. • divide by 0? • A consequence: programming languages all have the same • run out of memory, starting with a given amount available? computaEonal power in term of what they can express. All such • try to treat an integer as an array? languages are saiD to be Turing-complete. 2-19 2-20 Pragmatics: Raffle App In App Inventor Expressiveness anD Power hIp://ai2.appinventor.mit.eDu • About: Designer Window Blocks Editor – ease – elegance – clarity – moDularity – abstracEon – ... • Not about: computability To enter the raffle, text me now with • Different problems, Different languages an empty message: 339-225-0287 – Facebook or web browser in assembly language? How harD is this to Do in more tradiEonal Development environments for AnDroiD/ iOS? 2-21 22 Pragmatics: Metaprogramming Metaprogramming: InterpretaEon PLs are implementeD in terms of metaprogams = programs that manipulate other programs. This may sounD weirD, but programs are just trees (ASTs), so a metaprogram is just a program that manipulates trees (think a more complex version of CS230 binary tree programs). ImplementaEon strategies: • Interpreta(on: interpret a program P in a source language S in terms of an Program in implementaEon language I. Interpreter Machine M • Transla(on (compila(on): translate a program P in a source language S to a language L for language L program P’ in a target language T using a translator wriIen in implementaEon language I. on machine M • Embedding: express program P in source language S in terms of Data structures anD funcEons in implementaEon language I. 1-23 1-24 Metaprogramming: TranslaEon Metaprogramming: EmbedDing Program in Program in language A A to B translator language B Program in Interpreter Machine M language A for language B embedDed in on machine M language B Interpreter Machine M for language B on machine M 1-25 1-26 Metaprogramming: Bootstrapping Puzzles Metaprogramming: Programming Language Layers How can we write a Java-to-x86 compiler in Java? kernel primiEve values/Datatypes syntacEc sugar system libraries We’ll learn how to user libraries unDerstanD such puzzles! 1-27 1-28 PL Dimensions Programming Paradigms PLs Differ baseD on Decisions language Designers make in many Dimensions.
Recommended publications
  • Cygwin User's Guide
    Cygwin User’s Guide Cygwin User’s Guide ii Copyright © Cygwin authors Permission is granted to make and distribute verbatim copies of this documentation provided the copyright notice and this per- mission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this documentation under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this documentation into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. Cygwin User’s Guide iii Contents 1 Cygwin Overview 1 1.1 What is it? . .1 1.2 Quick Start Guide for those more experienced with Windows . .1 1.3 Quick Start Guide for those more experienced with UNIX . .1 1.4 Are the Cygwin tools free software? . .2 1.5 A brief history of the Cygwin project . .2 1.6 Highlights of Cygwin Functionality . .3 1.6.1 Introduction . .3 1.6.2 Permissions and Security . .3 1.6.3 File Access . .3 1.6.4 Text Mode vs. Binary Mode . .4 1.6.5 ANSI C Library . .4 1.6.6 Process Creation . .5 1.6.6.1 Problems with process creation . .5 1.6.7 Signals . .6 1.6.8 Sockets . .6 1.6.9 Select . .7 1.7 What’s new and what changed in Cygwin . .7 1.7.1 What’s new and what changed in 3.2 .
    [Show full text]
  • Automating Your Sync Testing
    APPLICATION NOTE By automating system verification and conformance testing to ITU-T synchronization standards, you’ll save on time and resources, and avoid potential test execution errors. This application note describes how you can use the Paragon-X’s Script Recorder to easily record Tcl, PERL and Python commands that can be integrated into your own test scripts for fast and efficient automated testing. AUTOMATING YOUR SYNC TESTING calnexsol.com Easily automate synchronization testing using the Paragon-X Fast and easy automation by Supports the key test languages Pre-prepared G.8262 Conformance recording GUI key presses Tcl, PERL and Python Scripts reduces test execution errors <Tcl> <PERL> <python> If you perform System Verification language you want to record i.e. Tcl, PERL SyncE CONFORMANCE TEST and Conformance Testing to ITU-T or Python, then select Start. synchronization standards on a regular Calnex provides Conformance Test Scripts basis, you’ll know that manual operation to ITU-T G.8262 for SyncE conformance of these tests can be time consuming, testing using the Paragon-X. These tedious and prone to operator error — as test scripts can also be easily tailored well as tying up much needed resources. and edited to meet your exact test Automation is the answer but very often requirements. This provides an easy means a lack of time and resource means it of getting your test automation up and remains on the ‘To do’ list. Now, with running and providing a repeatable means Calnex’s new Script Recorder feature, you of proving performance, primarily for ITU-T can get your automation up and running standards conformance.
    [Show full text]
  • Building Performance Measurement Tools for the MINIX 3 Operating System
    Building Performance Measurement Tools for the MINIX 3 Operating System Rogier Meurs August 2006 Contents 1 INTRODUCTION 1 1.1 Measuring Performance 1 1.2 MINIX 3 2 2 STATISTICAL PROFILING 3 2.1 Introduction 3 2.2 In Search of a Timer 3 2.2.1 i8259 Timers 3 2.2.2 CMOS Real-Time Clock 3 2.3 High-level Description 4 2.4 Work Done in User-Space 5 2.4.1 The SPROFILE System Call 5 2.5 Work Done in Kernel-Space 5 2.5.1 The SPROF Kernel Call 5 2.5.2 Profiling using the CMOS Timer Interrupt 6 2.6 Work Done at the Application Level 7 2.6.1 Control Tool: profile 7 2.6.2 Analyzing Tool: sprofalyze.pl 7 2.7 What Can and What Cannot be Profiled 8 2.8 Profiling Results 8 2.8.1 High Scoring IPC Functions 8 2.8.2 Interrupt Delay 9 2.8.3 Profiling Runs on Simulator and Other CPU Models 12 2.9 Side-effect of Using the CMOS Clock 12 3 CALL PROFILING 13 3.1 Introduction 13 3.1.1 Compiler-supported Call Profiling 13 3.1.2 Call Paths, Call and Cycle Attribution 13 3.2 High-level Description 14 3.3 Work Done in User-Space 15 3.3.1 The CPROFILE System Call 15 3.4 Work Done in Kernel-Space 16 3.4.1 The PROFBUF and CPROF Kernel Calls 16 3.5 Work Done in Libraries 17 3.5.1 Profiling Using Library Functions 17 3.5.2 The Procentry Library Function 17 3.5.3 The Procexit Library Function 20 3.5.4 The Call Path String 22 3.5.5 Testing Overhead Elimination 23 3.6 Profiling Kernel-Space/User-Space Processes 24 3.6.1 Differences in Announcing and Table Sizes 24 3.6.2 Kernel-Space Issue: Reentrancy 26 3.6.3 Kernel-Space Issue: The Call Path 26 3.7 Work Done at the Application
    [Show full text]
  • Teach Yourself Perl 5 in 21 Days
    Teach Yourself Perl 5 in 21 days David Till Table of Contents: Introduction ● Who Should Read This Book? ● Special Features of This Book ● Programming Examples ● End-of-Day Q& A and Workshop ● Conventions Used in This Book ● What You'll Learn in 21 Days Week 1 Week at a Glance ● Where You're Going Day 1 Getting Started ● What Is Perl? ● How Do I Find Perl? ❍ Where Do I Get Perl? ❍ Other Places to Get Perl ● A Sample Perl Program ● Running a Perl Program ❍ If Something Goes Wrong ● The First Line of Your Perl Program: How Comments Work ❍ Comments ● Line 2: Statements, Tokens, and <STDIN> ❍ Statements and Tokens ❍ Tokens and White Space ❍ What the Tokens Do: Reading from Standard Input ● Line 3: Writing to Standard Output ❍ Function Invocations and Arguments ● Error Messages ● Interpretive Languages Versus Compiled Languages ● Summary ● Q&A ● Workshop ❍ Quiz ❍ Exercises Day 2 Basic Operators and Control Flow ● Storing in Scalar Variables Assignment ❍ The Definition of a Scalar Variable ❍ Scalar Variable Syntax ❍ Assigning a Value to a Scalar Variable ● Performing Arithmetic ❍ Example of Miles-to-Kilometers Conversion ❍ The chop Library Function ● Expressions ❍ Assignments and Expressions ● Other Perl Operators ● Introduction to Conditional Statements ● The if Statement ❍ The Conditional Expression ❍ The Statement Block ❍ Testing for Equality Using == ❍ Other Comparison Operators ● Two-Way Branching Using if and else ● Multi-Way Branching Using elsif ● Writing Loops Using the while Statement ● Nesting Conditional Statements ● Looping Using
    [Show full text]
  • Difference Between Perl and Python Key Difference
    Difference Between Perl and Python www.differencebetween.com Key Difference - Perl vs Python A computer program provides instructions for a computer to perform tasks. A set of instructions is known as a computer program. A computer program is developed using a programming language. High-level languages are understandable by programmers but not understandable by the computer. Therefore, those programs are converted to machine-understandable format. Perl and Python are two high-level programming languages. Perl has features such as built-in regular expressions, file scanning and report generation. Python provides support for common programming methodologies such as data structures, algorithms etc. The key difference between Perl and Python is that Perl emphasizes support for common application-oriented tasks while Python emphasizes support for common programming methodologies. What is Perl? Perl is general purpose high-level programing language. It was designed by Larry Wall. Perl stands for Practical Extraction and Reporting Language. It is open source and is useful for text manipulation. Perl runs on various platforms such as Windows, Mac, Linux etc. It is a multi-paradigm language that supports mainly procedural programming and object-oriented programming. Procedure Programming helps to divide the program into functions. Object Oriented programming helps to model a software or a program using objects. Perl is an interpreted language. Therefore, each line is read one after the other by the interpreter. High-level language programs are understandable by the programmer, but they are not understandable by the machine. Therefore, the instructions should be converted into the machine-understandable format. Programming languages such as C and C++ converts the source code to machine language using a compiler.
    [Show full text]
  • PHP: Constructs and Variables Introduction This Document Describes: 1
    PHP: Constructs and Variables Introduction This document describes: 1. the syntax and types of variables, 2. PHP control structures (i.e., conditionals and loops), 3. mixed-mode processing, 4. how to use one script from within another, 5. how to define and use functions, 6. global variables in PHP, 7. special cases for variable types, 8. variable variables, 9. global variables unique to PHP, 10. constants in PHP, 11. arrays (indexed and associative), Brief overview of variables The syntax for PHP variables is similar to C and most other programming languages. There are three primary differences: 1. Variable names must be preceded by a dollar sign ($). 2. Variables do not need to be declared before being used. 3. Variables are dynamically typed, so you do not need to specify the type (e.g., int, float, etc.). Here are the fundamental variable types, which will be covered in more detail later in this document: • Numeric 31 o integer. Integers (±2 ); values outside this range are converted to floating-point. o float. Floating-point numbers. o boolean. true or false; PHP internally resolves these to 1 (one) and 0 (zero) respectively. Also as in C, 0 (zero) is false and anything else is true. • string. String of characters. • array. An array of values, possibly other arrays. Arrays can be indexed or associative (i.e., a hash map). • object. Similar to a class in C++ or Java. (NOTE: Object-oriented PHP programming will not be covered in this course.) • resource. A handle to something that is not PHP data (e.g., image data, database query result).
    [Show full text]
  • BSDLUA Slides (Application/Pdf
    BSDLUA (in three parts) Evolved Unix Scripting Ivan Voras <[email protected]> What is BSDLUA? ● An experimental idea ● Use Lua for projects, tools, etc. which do not require C and would be more easily implemented in a scripting language ● An “in between” language – low-level features of C with integration capabilities of shell scripts Why??? ● The $1M question: what in the world would make someone program in something which is not /bin/sh ??? ● /bin/sh is the best thing since the invention of the bicycle... from the time when Unix programmers had real beards... (More specifically) ● I personally miss a “higher level” scripting language in the base system ● In the beginning there was TCL (or so I heard... it was before my time) ● The there was Perl... ● Both were thrown out – For good reasons What is wrong with shell scripts? ● Nothing … and everything ● Good sides: integration with system tools via executing programs, sourcing other scripts ● Bad sides: … somewhat depend on personal tastes … for me it's the syntax and lack of modern features ● Talking about the /bin/sh POSIX shell – more modern shells have nicer languages Why not use /bin/sh? ● (for complex programs) ● Syntax from the 1970-ies ● No local variables ● No “proper” functions (with declared arguments) ● Need to escape strings more often than what would sanely be expected ● Relies on external tools for common operations (tr, grep, join, jot, awk...) ● Too much “magic” in operation Why use Lua? (1) ● As a language: ● Nicer, modern language with lexical scoping ● Namespaces
    [Show full text]
  • SCRIPTING LANGUAGES LAB (Professional Elective - III)
    R18 B.TECH CSE III YEAR CS623PE: SCRIPTING LANGUAGES LAB (Professional Elective - III) III Year B.Tech. CSE II-Sem L T P C 0 0 2 1 Prerequisites: Any High-level programming language (C, C++) Course Objectives: To Understand the concepts of scripting languages for developing web based projects To understand the applications the of Ruby, TCL, Perl scripting languages Course Outcomes: Ability to understand the differences between Scripting languages and programming languages Able to gain some fluency programming in Ruby, Perl, TCL List of Experiments 1. Write a Ruby script to create a new string which is n copies of a given string where n is a non- negative integer 2. Write a Ruby script which accept the radius of a circle from the user and compute the parameter and area. 3. Write a Ruby script which accept the user's first and last name and print them in reverse order with a space between them 4. Write a Ruby script to accept a filename from the user print the extension of that 5. Write a Ruby script to find the greatest of three numbers 6. Write a Ruby script to print odd numbers from 10 to 1 7. Write a Ruby scirpt to check two integers and return true if one of them is 20 otherwise return their sum 8. Write a Ruby script to check two temperatures and return true if one is less than 0 and the other is greater than 100 9. Write a Ruby script to print the elements of a given array 10.
    [Show full text]
  • Learning Perl Tk.Pdf
    Learning Perl/Tk Nancy Walsh Beijing • Cambridge • Farnham • Köln • Paris • Sebastopol • Taipei • Tokyo Learning Perl/Tk by Nancy Walsh Copyright (c) 1999 O'Reilly & Associates, Inc. All rights reserved. Printed in the United States of America. Published by O'Reilly & Associates, Inc., 101 Morris Street, Sebastopol, CA 95472. Editor:Linda Mui Editorial and Production Services: TIPS-Technical Publishing, Inc. Production Editor: Ellie Fountain Maden Printing History: January 1999: First Edition. March 1999: Minor corrections. Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo are registered trademarks of O'Reilly & Associates. The use of an emu image in association with Perl/ Tk is a trademark of O'Reilly & Associates, Inc. Permission may be granted for non- commercial use; please inquire by sending mail to [email protected]. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O'Reilly & Associates, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher assumes no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. This book is printed on acid-free paper with 85% recycled content, 15% post-consumer waste. O'Reilly & Associates is committed to using paper with the highest recycled content available consistent with high quality. ISBN: 1-56592-314-6:[5/99] Table of Contents Preface xi 1. Introduction to Perl/Tk 1 A Bit of History About Perl (and Tk) 1 Perl/Tk for Both Unix and Windows 95/NT 2 Why Use a Graphical Interface? 2 Why Use Perl/Tk? 3 Installing the Tk Module 5 Creating Widgets 6 Coding Style 8 Displaying a Widget 9 The Anatomy of an Event Loop 9 Hello World Example 10 Using exit Versus Using destroy 12 Naming Conventions for Widget Types 12 Using print for Diagnostic/Debugging Purposes 13 Designing Your Windows (A Short Lecture) 14 2.
    [Show full text]
  • The Evolution of Lua
    The Evolution of Lua Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes Department of Computer Science, IMPA–Instituto Nacional de Department of Computer Science, PUC-Rio, Rio de Janeiro, Brazil Matematica´ Pura e Aplicada, Brazil PUC-Rio, Rio de Janeiro, Brazil [email protected] [email protected] [email protected] Abstract ing languages offer associative arrays, in no other language We report on the birth and evolution of Lua and discuss how do associative arrays play such a central role. Lua tables it moved from a simple configuration language to a versatile, provide simple and efficient implementations for modules, widely used language that supports extensible semantics, prototype-based objects, class-based objects, records, arrays, anonymous functions, full lexical scoping, proper tail calls, sets, bags, lists, and many other data structures [28]. and coroutines. In this paper, we report on the birth and evolution of Lua. We discuss how Lua moved from a simple configuration Categories and Subject Descriptors K.2 [HISTORY OF language to a powerful (but still simple) language that sup- COMPUTING]: Software; D.3 [PROGRAMMING LAN- ports extensible semantics, anonymous functions, full lexical GUAGES] scoping, proper tail calls, and coroutines. In §2 we give an overview of the main concepts in Lua, which we use in the 1. Introduction other sections to discuss how Lua has evolved. In §3 we re- late the prehistory of Lua, that is, the setting that led to its Lua is a scripting language born in 1993 at PUC-Rio, the creation. In §4 we relate how Lua was born, what its original Pontifical Catholic University of Rio de Janeiro in Brazil.
    [Show full text]
  • Red Hat Enterprise Linux Developer's Getting Started Guide
    WHITE PAPER RED HAT ENTERPRISE LINUX DEVELOPER'S GETTING STARTED GUIDE EXECUTIVE SUMMARY Red Hat Enterprise Linux is an enterprise-class open-source operating system that is widely adopted world wide, scaling seamlessly from individual desktops to large servers in the datacenter. Certified by leading hardware and software vendors, Red Hat Enterprise Linux delivers high performance, reliability, and security along with flexibility, efficiency, and control. For developers, Red Hat provides an extensive set of resources, technologies, and tools that can be used to efficiently develop powerful applications for the Red Hat Enterprise Linux platform. These applications can be deployed with great flexibility, as Red Hat Enterprise Linux supports major hardware architectures, comprehensive virtualization solutions, and a range of cloud-computing options. This document is intended for software developers who are new to Red Hat Enterprise Linux and want to understand the key touch points for any phase of application development – from planning and building, through testing and deploying. The following sections describe the resources and tools that are available on Red Hat Enterprise Linux and provide links to additional information. www.redhat.com WHITE PAPER RED HAT ENTERPRISE LINUX DEVELOPER'S GETTING STARTED GUIDE TABLE OF CONTENTS Developing Software On Red Hat Enterprise Linux................................................................................................4 Overview..................................................................................................................................................................................
    [Show full text]
  • Perl for Introductory Programming Courses
    Perl for Introductory Programming Courses Jason Moore, Mitchell A. Thornton Ronald W. Skeith Southern Methodist University University of Arkansas Dallas, Texas Fayetteville, Arkansas Abstract: While Perl stands for The Practical Extraction and Report Language, even a cursory examination reveals that it is far more extensive and had much more capability than a reporting language. The Perl programming language, developed by Larry Wall, is a flexible and a dynamic scripting language. Perl is referred to as a dynamic language because it uses an interpreter instead of a complier. Perl programming language information is available at www.perl.com and www.activestate.com. Perl runs on most platforms including Windows XP, Mac OS X, Linux, and UNIX allowing students to gain development experience using all of the major platforms. Perl comes bundled with Linux distributions and the version of Perl and other details of the installation can be determined from the command line by invoking the $perl –v and $perl -V commands in a Linux or UNIX environment. An excellent way to use Perl on a XP platform is to install the cygwin emulator which can be downloaded from www.cygwin.com. cygwin comes bundled with the latest version of Perl. cygwin operates as if it were a platform in a DOS window while using the XP operating system. Perl is updated and maintained by a development team referred to as the Perl Porters. A vast number of users contribute to CPAN, a public depository of software applications, documentation, binary distributions, and FAQ’s. CPAN, the Comprehensive Perl Archive Network, maintains a website that houses and distributes free Perl materials.
    [Show full text]