Processing

Last updated
Processing
Processing 2021 logo.svg
Paradigm Object-oriented
Designed by Casey Reas, Ben Fry
First appeared2001;23 years ago (2001)
Stable release
4.3.1 / November 12, 2024;37 days ago (2024-11-12) [1]
License GPL, LGPL
Filename extensions .pde
Website processing.org

Processing is a free graphics library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming in a visual context.

Contents

Processing uses the Java language, with additional simplifications such as additional classes and aliased mathematical functions and operations. It also provides a graphical user interface for simplifying the compilation and execution stage.

The Processing language and IDE have been the precursor to other projects including Arduino and Wiring.

History

The project was initiated in 2001 by Casey Reas and Ben Fry, both formerly of the Aesthetics and Computation Group at the MIT Media Lab. In 2012, they started the Processing Foundation along with Daniel Shiffman, who joined as a third project lead. Johanna Hedva joined the Foundation in 2014 as Director of Advocacy. [2]

Originally, Processing had used the domain proce55ing.net, because the processing domain was taken; Reas and Fry eventually acquired the domain processing.org and moved the project to it in 2004. [3] While the original name had a combination of letters and numbers, it was always officially referred to as processing, but the abbreviated term p5 is still occasionally used (e.g. in "p5.js") in reference to the old domain name. [4]

In 2012 the Processing Foundation was established and received 501(c)(3) nonprofit status, [5] supporting the community around the tools and ideas that started with the Processing Project. The foundation encourages people around the world to meet annually in local events called Processing Community Day. [6]

Features

Processing IDE
Stable release
4.3 / July 26, 2023;16 months ago (2023-07-26)
Repository
Written in Java, GLSL, JavaScript
Operating system Cross-platform
Type Integrated development environment
Website processing.org

Processing includes a sketchbook, a minimal alternative to an integrated development environment (IDE) for organizing projects. [7]

Every Processing sketch is actually a subclass of the PApplet Java class (formerly a subclass of Java's built-in Applet) which implements most of the Processing language's features. [8]

When programming in Processing, all additional classes defined will be treated as inner classes when the code is translated into pure Java before compiling. [9] This means that the use of static variables and methods in classes is prohibited unless Processing is explicitly told to code in pure Java mode.

Processing also allows for users to create their own classes within the PApplet sketch. This allows for complex data types that can include any number of arguments and avoids the limitations of solely using standard data types such as: int (integer), char (character), float (real number), and color (RGB, RGBA, hex).

Examples

The simplest possible version of a "Hello World" program in Processing is:

// This prints "Hello World." to the IDE console.println("Hello World.");

However, due to the more visually-oriented nature of Processing, the following code [10] is a better example of the look and feel of the language.

// Hello mouse.voidsetup(){size(400,400);stroke(255);background(192,64,0);}voiddraw(){line(150,25,mouseX,mouseY);}

Awards

In 2005 Reas and Fry won the Golden Nica award from Ars Electronica in its Net Vision category for their work on Processing. [11]

Ben Fry won the 2011 National Design Award given by the Smithsonian Cooper-Hewitt National Design Museum in the category of Interaction Design. The award statement says:

"Drawing on a background in graphic design and computer science, Ben Fry pursues a long-held fascination with visualizing data. As Principal of Fathom Information Design in Boston, Fry develops software, printed works, installations, and books that depict and explain topics from the human genome to baseball salaries to the evolution of text documents. With Casey Reas, he founded the Processing Project, an open-source programming environment for teaching computational design and sketching interactive-media software. It provides artists and designers with accessible means of working with code while encouraging engineers and computer scientists to think about design concepts." [12]

License

Processing's core libraries, the code included in exported applications and applets, is licensed under the GNU Lesser General Public License, allowing users to release their original code with a choice of license.

The IDE is licensed under the GNU General Public License.

Design By Numbers

Processing was based on the original work done on Design By Numbers project at MIT. It shares many of the same ideas and is a direct child of that experiment.

p5.js

In 2013, Lauren McCarthy created p5.js, a native JavaScript alternative to Processing.js that has the official support of the Processing Foundation. p5.js gained over 1.5 million users. [13]

Since April 2022, p5.js has been led by Qianqian Ye, an Adjunct Associate Professor of Media Arts at USC. [14]

ml5.js

ml5.js is a p5.js library developed by NYU's ITP/IMA with funding and support provided by a Google Education grant.

Daniel Shiffman has made videos demonstrating ml5 and is a notable code contributor.

Processing.js

Processing.js is a discontinued JavaScript port that enabled existing Processing Java code to run on web.

It was initially released in 2008 by John Resig. The project was later run through a partnership between the Mozilla Foundation and Seneca College, led by David Humphrey, Al MacDonald, and Corban Brook. Processing.js was kept at parity with Processing up to its API version 2.1 release.

The project was discontinued in December 2018, two years after its active development had stopped.

P5Py

p5 is a Python library that provides high level drawing functionality to help you quickly create simulations and interactive art using Python. It combines the core ideas of Processing — learning to code in a visual context — with Python's readability to make programming more accessible to beginners, educators, and artists. [15]

Processing.py

Python Mode for Processing, or Processing.py is a Python interface to the underlying Java toolkit. It was chiefly developed by Jonathan Feinberg starting in 2010, with contributions from James Gilles and Ben Alkov. [16]

py5

py5 is a version of Processing for Python 3.8+. It makes the Java Processing jars available to the CPython interpreter using JPype. It can do just about everything Processing can do, except with Python instead of Java code. [17]

Wiring, Arduino, and Fritzing

Processing has spawned another project, Wiring, which uses the Processing IDE with a collection of libraries written in the C++ language as a way to teach artists how to program microcontrollers. [18] There are now two separate hardware projects, Wiring and Arduino, using the Wiring environment and language. Fritzing is another software environment of the same sort, which helps designers and artists to document their interactive prototypes and to take the step from physical prototyping to actual product.

Mobile Processing

Another spin-off project, now defunct, is Mobile Processing by Francis Li, which allowed software written using the Processing language and environment to run on Java powered mobile devices. Today some of the same functionality is provided by Processing itself. [19]

iProcessing

iProcessing was built to help people develop native iPhone applications using the Processing language. It is an integration of the Processing.js library and a Javascript application framework for iPhone. [20]

Spde

Spde (Scala Processing Development Environment) replaces Processing's reduced Java syntax and custom preprocessor with the off-the-shelf Scala programming language which also runs on the Java platform and enforces some of the same restrictions such as disallowing static methods, while also allowing more concise code, and supporting functional programming. [21] [22] [23]

JRubyArt

JRubyArt (formerly named ruby-processing) is a wrapper for Processing in the Ruby language, that runs on the Java platform using JRuby.

Quil

Quil is an interactive animation library for Clojure and ClojureScript based on Processing. [24] [25]

Media

The music video for "House of Cards" by Radiohead was created using Processing combined with data from lidar technology, along with using acrylic glass and mirrors to create scenes in which the image appears distorted, partially disappears, or disintegrate as if being carried by wind. [26] Processing has also been used to create illustrations for publications such as Nature and The New York Times , to output sculptures for gallery exhibitions, to control huge video walls and to knit sweaters. [27]

See also

Footnotes

  1. "Releases". GitHub . Retrieved 2024-12-19.
  2. "People". processingfoundation.org. Archived from the original on 2019-10-05. Retrieved 2017-04-24.
  3. "Processing 1.0 _ALPHA_ - processing.org". processing.org. Archived from the original on 2012-04-28. Retrieved 2017-12-24.
  4. "What means number 5 in name "p5"? · Issue #2443 · processing/p5.js". GitHub.
  5. Casey Reas; Ben Fry (May 29, 2018). "A Modern Prometheus". Medium.
  6. "PCD". Medium.
  7. Ira Greenberg (31 December 2007). Processing: Creative Coding and Computational Art. Apress. pp. 151–. ISBN   978-1-4302-0310-0.
  8. Jeanine Meyer (15 June 2018). Programming 101: The How and Why of Programming Revealed Using the Processing Programming Language. Apress. pp. 121–. ISBN   978-1-4842-3697-0.
  9. Ira Greenberg (25 March 2010). The Essential Guide to Processing for Flash Developers. Apress. pp. 412–. ISBN   978-1-4302-1980-4.
  10. Tayste. "Hello Mouse - OpenProcessing". OpenProcessing.org. Retrieved 3 March 2022.
  11. Meredith Hoy (3 January 2017). From Point to Pixel: A Genealogy of Digital Aesthetics. Dartmouth College Press. pp. 142–. ISBN   978-1-5126-0023-0.
  12. http://cdn.cooperhewitt.org/2011/05/26/Final%20-%20CHNDM%20NDA%202011%20Winner%20Release%205-26-11.pdf Archived 2011-08-12 at the Wayback Machine [ bare URL PDF ]
  13. "P5.js — Lauren Lee McCarthy".
  14. "Qianqian Ye".
  15. p5, p5py, 2021-09-29, retrieved 2021-10-12
  16. Allison Parrish; Ben Fry; Casey Reas (11 May 2016). Getting Started with Processing.py: Making Interactive Graphics with Processing's Python Mode. Maker Media, Incorporated. ISBN   978-1-4571-8679-0.
  17. py5 documentation, hx2a, 2021-09-13, retrieved 2022-05-10
  18. "Processing, Wiring, and Arduino (EE Tip 101) - Circuit Cellar". 18 September 2013.[ permanent dead link ]
  19. "Android - Processing". Archived from the original on 2014-08-19. Retrieved 2013-06-03.
  20. "iProcessing Puts Processing.js on iPhone - But What About Browsers? - CDM Create Digital Music". 11 February 2010. Archived from the original on 13 October 2019. Retrieved 23 July 2018.
  21. "Spde: Spde". Technically.us. Archived from the original on 2011-08-02. Retrieved 2013-08-20.
  22. "Coderspiel / Runaway processing". Technically.us. Archived from the original on 2016-11-10. Retrieved 2013-08-20.
  23. "Coderspiel / Flocking with Spde". Technically.us. Retrieved 2013-08-20.
  24. "Quil: animation in Clojure".
  25. "Quil Intro".
  26. Nye, Calley (2008-07-14). "Radiohead Partners With Google For Music Video Launch". The Washington Post . ISSN   0190-8286 . Retrieved 2021-03-16.
  27. Reas, Casey; Ben Fry (2015). Getting started with Processing (Second ed.). San Francisco. p. 183. ISBN   978-1-4571-8708-7. OCLC   905522686.{{cite book}}: CS1 maint: location missing publisher (link)

Related Research Articles

<span class="mw-page-title-main">Python (programming language)</span> General-purpose programming language

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.

AspectJ is an aspect-oriented programming (AOP) extension for the Java programming language, created at PARC. It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users. It uses Java-like syntax, and included IDE integrations for displaying crosscutting structure since its initial public release in 2001.

<span class="mw-page-title-main">Apache Ant</span> Java build tool

Apache Ant is a software tool for automating software build processes for Java applications which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java language and requires the Java platform. Unlike Make, which uses the Makefile format, Ant uses XML to describe the code build process and its dependencies.

<span class="mw-page-title-main">Visual programming language</span> Programming language written graphically by a user

In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of low-code development platforms.

In computer-based language recognition, ANTLR, or ANother Tool for Language Recognition, is a parser generator that uses a LL(*) algorithm for parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is Professor Terence Parr of the University of San Francisco.

<span class="mw-page-title-main">Arduino</span> Italian open-source hardware and software company

Arduino is an Italian open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed under a CC BY-SA license, while the software is licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL), permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially from the official website or through authorized distributors.

<span class="mw-page-title-main">Casey Reas</span> American artist

Casey Edwin Barker Reas, also known as C. E. B. Reas or Casey Reas, is an American artist whose conceptual, procedural and minimal artworks explore ideas through the contemporary lens of software. Reas is perhaps best known for having created, with Ben Fry, the Processing programming language.

<span class="mw-page-title-main">Google App Engine</span> Cloud-based web application hosting service

Google App Engine is a cloud computing platform used as a service for developing and hosting web applications. Applications are sandboxed and run across multiple Google-managed servers. GAE supports automatic scaling for web applications, allocating more resources to the web application as the amount of requests increases. It was released as a preview in April 2008 and launched officially in September 2011.

Benjamin Fry is an American designer who has expertise in data visualization.

The Wing Python IDE is a family of integrated development environments (IDEs) from Wingware created specifically for the Python programming language with support for editing, testing, debugging, inspecting/browsing, and error-checking Python code.

Wiring is an open-source electronics prototyping platform composed of a programming language, an integrated development environment (IDE), and a single-board microcontroller. It was developed starting in 2003 by Hernando Barragán.

<span class="mw-page-title-main">Cloud9 IDE</span> Online integrated development environment

Cloud9 IDE is an Online IDE, published as open source from version 2.0, until version 3.0. It supports multiple programming languages, including C, C++, PHP, Ruby, Perl, Python, JavaScript with Node.js, and Go.

<span class="mw-page-title-main">Plotly</span> Canadian computing company

Plotly is a technical computing company headquartered in Montreal, Quebec, that develops online data analytics and visualization tools. Plotly provides online graphing, analytics, and statistics tools for individuals and collaboration, as well as scientific graphing libraries for Python, R, MATLAB, Perl, Julia, Arduino, JavaScript and REST.

Google Kythe is a source code indexer and cross-referencer for code comprehension which describes itself as a "pluggable, (mostly) language-agnostic ecosystem for building tools that work with code".

Codeanywhere is a cross-platform cloud integrated development environment (IDE) created by Codeanywhere, Inc. Codeanywhere enables users to write, edit, collaborate, and run web development projects from a web browser or mobile device.

Daniel Shiffman is a computer programmer, a member of the Board of Directors of the Processing Foundation, and an Associate Arts Professor at the Interactive Telecommunications Program (ITP) at New York University Tisch School of the Arts. Shiffman received a BA in Mathematics and Philosophy from Yale University and a master's degree from the ITP.

Espruino is an open-source JavaScript interpreter for single-board microcontrollers. It is designed for devices with small amounts of RAM.

<span class="mw-page-title-main">RiTa</span> Software toolkit for processing English language

RiTa is an open-source software toolkit for generative writing and English natural language, originally developed using the Java language by Daniel C. Howe and collaborators, and later implemented in JavaScript as rita.js. Current versions of RiTa are implemented in both Java and JavaScript and integrate with p5.js, Processing, Node and Android.

Hernando Barragán is a Colombian interdisciplinary artist, designer, and academic known for creating the Wiring development platform as his 2003 Master’s thesis project at the Interaction Design Institute Ivrea (IDII) in Italy. The Arduino project is based on Wiring. He is currently an educator at the University of the Andes.

References