Pike (programming language)

Pike (programming language)
Pike
Pike logo
Paradigm(s) multi-paradigm: object-oriented, functional, procedural
Appeared in 1994
Designed by Fredrik Hübinette
Developer Pike development team supported by the Software and Systems division of the Department of Computer and Information Science (IDA) at Linköping University
Stable release 7.8.352 (September 23, 2009; 2 years ago (2009-09-23))
Typing discipline static, dynamic, manifest
Major implementations Pike
Influenced by LPC, C, C++
OS Any Unix-like, Windows
License GPL/LGPL/MPL
Website pike.ida.liu.se

Pike is an interpreted, general-purpose, high-level, cross-platform, dynamic programming language, with a syntax similar to that of C. Unlike many other dynamic languages, Pike is both statically and dynamically typed, and requires explicit type definitions. It features a flexible type system that allows the rapid development and flexible code of dynamically typed languages, while still providing some of the benefits of a statically typed language.

Pike features garbage collection, advanced data types, and first-class anonymous functions, with support for many programming paradigms, including object-oriented, functional and imperative programming. Pike is free software, released under the GPL, LGPL and MPL licenses.

Contents

History

Pike has its roots in LPC, which was a language developed for MUDs. Programmers at Lysator in Linköping, Sweden, most notably Fredrik Hübinette and Per Hedbor, separated the language and virtual machine from the rest of the MUD driver, and used it as a rapid prototyping language for various applications, calling it LPC4.

LPC's license did not allow use for commercial purposes, and so a new GPL implementation was written in 1994, called µLPC (micro LPC).

In 1996, µLPC was renamed to Pike in order to provide a more commercially viable name. Although the name of the company has changed over the years, the company now known as Roxen Internet Software employed many Pike developers, and provided resources for Pike's development. Roxen is also the name of a web server developed by the company in Pike. In 2002, the programming environment laboratory at Linköping University took over maintenance of Pike from Roxen. Several Pike programmers have found their way to the Linköping office of Opera Software, where the language plays a central role in the server/gateway parts of the Opera Mini application.[1]

Syntax highlights

Hello World

For an explanation of the tradition of programming "Hello World", see Hello world program.
int main() {
    write("Hello world!\n");
    return 0;
}

The syntax above requires some explanation. Those who are familiar with C or C++ should pick it up right away.

  • The first line contains the main function. This is the first function executed when a program starts. The "int" in front of it tells that a number of type Integer will be returned when the function ends.
  • The write function sends a string literal to the standard output buffer, which in most cases is a command line interface.
  • The third line returns a number to the caller of a function, in this case the command line interface where zero usually means the program executed without error.
  • The curly brackets enclose the function and the semicolon separates statements (meaning the function could have been written on a single line: int main(){write("Hello world!\n");return 0;})
  • The "\n" after "Hello world!" is a newline character.

Data types

The following list shows all the standard data types that Pike provides. Advanced data types such as sequences, queues, heaps, stacks, etc. are available in the ADT module which is included with Pike.

Basic data types:

  • int
  • float
  • string

Container types:

Other types:

  • program (the compiled representation of a class)
  • object (an instance of a class)
  • function

Pike requires explicit type definitions for all variables. It uses this information to report type errors at compile time. The following code will cause a compile error because the value of the variable "number" must be an integer but the code is attempting to assign floating point and string values to it.

int number;     // integer variable, it only accepts integers
number = 5.5;   // 5.5 is a floating point value, error
number = "5";   // "5" is a string, not the integer value 5, error

That kind of behavior is traditionally considered restrictive and limiting by proponents of dynamically typed languages. However unlike C, C++, and Java, Pike uses a more flexible type system—specifically, a system of tagged unions. The system allows programmers to declare variables that may contain values of multiple types, something impossible in most of the C-family languages without straying from the bounds of safe usage.

The following demonstrates a variable that can hold either an integer or a floating point number.

int|float number; // integer OR float variable
number = 5;       // this is legal
number = 5.5;     // this is legal also

Because a variable can be declared as holding many different data types, functions are provided to determine what type of data is currently stored. These functions are all of the form typenamep, as in intp, floatp, stringp, etc.

int|float number;
number = 5;
intp(number);      // returns true because number holds an int
floatp(number);    // returns false
number = 5.5;
floatp(number);    // returns true because number now holds a float

Additionally, there is a special "mixed" data type. That definition allows a variable to hold any kind of data type.

mixed anything;
anything = 5;    // anything is now the integer value 5
anything = 5.5;  // anything is now the float value 5.5
anything = "5";  // anything is now the string value "5"

In order to convert a value from one type to another, Pike can use an explicit cast:

mixed anything;
anything = (int)5.5;         // anything is now the integer value 5
anything = (string)anything; // anything is now the string value "5"

See also

  • LPMud family tree

References

  1. ^ Lextrait, Vincent (January 2010). "The Programming Languages Beacon, v10.0". http://www.lextrait.com/Vincent/implementations.html. Retrieved 14 March 2010. 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • LPC (programming language) — Infobox programming language name = LPC paradigm = prototype based year = designer = Lars Pensjö developer = Lars Pensjö and others latest release version = latest release date = typing = implementations = LPC dialects = Amylaar, MudOS, LDMud,… …   Wikipedia

  • Limbo (programming language) — Infobox programming language name = Limbo paradigm = Concurrent year = 1995 designer = Sean Dorward, Phil Winterbottom, Rob Pike developer = Bell Labs / Vita Nuova Holdings latest release version = latest release date = typing = Strong… …   Wikipedia

  • C (programming language) — C The C Programming Language[1] (aka K R ) is the seminal book on C …   Wikipedia

  • Alef (programming language) — The Alef programming language was designed by Phil Winterbottom of Bell Labs as part of the Plan 9 operating system.In a February 2000 slideshow, Rob Pike noted: …although Alef was a fruitful language, it proved too difficult to maintain a… …   Wikipedia

  • Hoc (programming language) — hoc, an acronym for High Order Calculator, is an interpreted programming language that was used in the 1984 book The Unix Programming Environment to demonstrate how to build interpreters using Yacc.Hoc was developed by Brian Kernighan and Rob… …   Wikipedia

  • Pike — may refer to:Fish*Pike (fish) or Esox *Blue pike or blue walleye, an extinct freshwater fish *Mackerel pike or Pacific saury, a fish popular in east Asian cuisine *Northern pike, known as the pike in BritainPlacesIn Britain: *Clougha Pike, a hill …   Wikipedia

  • Pike (langage) — Pour les articles homonymes, voir Pike. Pike Apparu en 1994 Auteur Fredrik Hübinette …   Wikipédia en Français

  • Ch (computer programming) — In computing, Ch (  /ˌsiːˈ …   Wikipedia

  • Comparison of programming languages (mapping) — Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”