Processing is a
free graphical library and
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
(IDE) built for the electronic arts,
new media art
New media art includes artworks designed and produced by means of new media, electronic media technology, technologies, comprising virtual art, computer graphics, computer animation, digital art, interactive art, sound art, Internet art, video g ...
, and
visual design
Communication design is a mixed discipline between design and information-development which is concerned with how media communicate with people. A communication design approach is not only concerned with developing the message in addition to the ...
communities with the purpose of teaching non-programmers the fundamentals of
computer programming
Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as ana ...
in a visual context.
Processing uses the
Java language
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers ''write once, run any ...
, 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
Arduino () is an 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 unde ...
and
Wiring
Electrical wiring is an electrical installation of cabling and associated devices such as switches, distribution boards, sockets, and light fittings in a structure.
Wiring is subject to safety standards for design and installation. Allowable ...
.
History
The project was initiated in 2001 by
Casey Reas
Casey Edwin Barker Reas (born 1972), 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 ...
and
Ben Fry, both formerly of the Aesthetics and Computation Group at the
MIT Media Lab
The MIT Media Lab is a research laboratory at the Massachusetts Institute of Technology, growing out of MIT's Architecture Machine Group in the School of Architecture. Its research does not restrict to fixed academic disciplines, but draws from ...
. In 2012, they started the Processing Foundation along with
Daniel Shiffman, who joined as a third project lead.
Johanna Hedva
Johanna Hedva (born 1984) is a Korean Americans, Korean American contemporary artist, writer, and musician. They are the author of the 2018 novel ''On Hell'', and ''Minerva the Miscarriage of the Brain'', a collection of poetry, plays, and essays ...
joined the Foundation in 2014 as Director of Advocacy.
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. 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.
In 2012 the Processing Foundation was established and received 501(c)(3) nonprofit status, 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.
Features
Processing includes a ''sketchbook'', a minimal alternative to an
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
(IDE) for organizing projects.
Every Processing sketch is actually a subclass of the
PApplet
Java class
A Java class file is a file (with the filename extension) containing Java bytecode that can be executed on the Java Virtual Machine (JVM). A Java class file is usually produced by a Java compiler from Java programming language source files ( fi ...
(formerly a subclass of Java's built-in Applet) which implements most of the Processing language's features.
When programming in Processing, all additional classes defined will be treated as
inner class In object-oriented programming (OOP), an inner class or nested class is a class declared entirely within the body of another class or interface. It is distinguished from a subclass.
Overview
An instance of a normal or top-level class can exist on ...
es when the code is translated into pure Java before compiling.
This means that the use of
static variable
In computer programming, a static variable is a variable that has been allocated "statically", meaning that its lifetime (or "extent") is the entire run of the program. This is in contrast to shorter-lived automatic variables, whose storage is ...
s and
methods
Method ( grc, μέθοδος, methodos) literally means a pursuit of knowledge, investigation, mode of prosecuting such inquiry, or system. In recent centuries it more often means a prescribed process for completing a task. It may refer to:
*Scien ...
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
In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most progra ...
that can include any number of arguments and avoids the limitations of solely using standard data types such as:
int (integer),
char
Char may refer to:
People
*Char Fontane, American actress
*Char Margolis, American spiritualist
* René Char (1907–1988), French poet
*The Char family of Colombia:
** Fuad Char, Colombian senator
** Alejandro Char Chaljub, mayor of Barranquilla ...
(character),
float
Float may refer to:
Arts and entertainment Music Albums
* ''Float'' (Aesop Rock album), 2000
* ''Float'' (Flogging Molly album), 2008
* ''Float'' (Styles P album), 2013
Songs
* "Float" (Tim and the Glory Boys song), 2022
* "Float", by Bush ...
(real number), and color (RGB,
RGBA
RGBA stands for red green blue alpha. While it is sometimes described as a color space, it is actually a three-channel RGB color model supplemented with a fourth ''alpha channel''. Alpha indicates how opaque each pixel is and allows an image to ...
, 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
is a better example of the look and feel of the language.
// Hello mouse.
void setup()
void draw()
Awards
In 2005 Reas and Fry won the Golden Nica award from
Ars Electronica
Ars Electronica Linz GmbH is an Austrian cultural, educational and scientific institute active in the field of new media art, founded in Linz in 1979. It is based at the Ars Electronica Center (AEC), which houses the Museum of the Future, in the ...
in its Net Vision category for their work on Processing.
Ben Fry won the 2011 National Design Award given by the
Smithsonian Cooper-Hewitt National Design Museum
Cooper Hewitt, Smithsonian Design Museum is a design museum housed within the Andrew Carnegie Mansion in Manhattan, New York City, along the Upper East Side's Museum Mile. It is one of 19 museums that fall under the wing of the Smithsonian Ins ...
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."
License
Processing's core libraries, the code included in exported applications and applets, is licensed under the
GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
, allowing users to release their original code with a choice of license.
The IDE is licensed under the
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
.
Related projects
Processing is not a single language, but rather, an arts-oriented approach to learning, teaching, and making things with code. There are several variants and related projects:
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.
Processing.js
Processing.js is a discontinued
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
port of Processing, a framework designed to write visualisations, images, and interactive content. It allows web browsers to display animations, visual applications, games and other graphical rich content without the need for a
Java applet
Java applets were small applications written in the Java programming language, or another programming language that compiles to Java bytecode, and delivered to users in the form of Java bytecode. The user launched the Java applet from a ...
or
Flash plugin
Adobe Flash Player (known in Internet Explorer, Firefox, and Google Chrome as Shockwave Flash) is Software, computer software for viewing multimedia contents, executing rich Internet applications, and streaming media, streaming audio and vide ...
.
Processing.js was originally created to allow existing Processing developers and existing code to work unmodified on web. Processing.js used JavaScript to render 2D and 3D content on the HTML
canvas element
The canvas element is part of HTML5 and allows for dynamic, scriptable rendering of 2D shapes and bitmap images. It is a low level, procedural model that updates a bitmap. HTML5 Canvas also helps in making 2D games.
While the HTML5 canvas off ...
, and was supported by browsers that have implemented this element (the latest versions of Mozilla
Firefox
Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current and ...
,
Opera
Opera is a form of theatre in which music is a fundamental component and dramatic roles are taken by singers. Such a "work" (the literal translation of the Italian word "opera") is typically a collaboration between a composer and a librett ...
,
Internet Explorer
Internet Explorer (formerly Microsoft Internet Explorer and Windows Internet Explorer, commonly abbreviated IE or MSIE) is a series of graphical user interface, graphical web browsers developed by Microsoft which was used in the Microsoft Wind ...
,
Safari
A safari (; ) is an overland journey to observe wild animals, especially in eastern or southern Africa. The so-called "Big Five" game animals of Africa – lion, leopard, rhinoceros, elephant, and Cape buffalo – particularly form an importa ...
and
Google Chrome
Google Chrome is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macOS ...
).
The development of Processing.js was started by
John Resig
John Resig is an American software engineer and entrepreneur, best known as the creator and lead developer of the jQuery JavaScript library. , he works as the chief software architect at Khan Academy.
History
Resig graduated with an undergraduate ...
and then picked up by the CDOT group at
Seneca College
Seneca College of Applied Arts and Technology is a multiple-campus public college in the Greater Toronto Area, and Peterborough, Ontario, Canada regions. It offers full-time and part-time programs at the baccalaureate, diploma, certificate an ...
after its initial release in 2008. A team of students and professors finished the porting work to get Processing.js to parity with the Processing v1.0 API, fixing more than 900 bugs, shipping 12 releases, and creating a vibrant community in the process. The project was run through a partnership between the
Mozilla Foundation
The Mozilla Foundation (stylized as moz://a) is an American non-profit organization that exists to support and collectively lead the open source Mozilla project. Founded in July 2003, the organization sets the policies that govern development, ...
and
Seneca College
Seneca College of Applied Arts and Technology is a multiple-campus public college in the Greater Toronto Area, and Peterborough, Ontario, Canada regions. It offers full-time and part-time programs at the baccalaureate, diploma, certificate an ...
, led by David Humphrey, Al MacDonald, and Corban Brook.
Processing.js development was moved to
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous ...
in February 2010, receiving contributions from 58 individuals, and 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.
Processing.js is also used to advocate very basic programming to Students of all ages on
Khan Academy
Khan Academy is an American non-profit educational organization created in 2008 by Sal Khan. Its goal is creating a set of online tools that help educate students. The organization produces short lessons in the form of videos. Its website also in ...
by creating drawings and animations. Learners showcase their creations to other learners.
p5.js
In 2013,
Lauren McCarthy
Lauren McCarthy is a Chinese-American artist and computer programmer based in Los Angeles. McCarthy creates artworks that use a variety of media and techniques, including performance, artificial intelligence and programmed computer-based interact ...
created
p5.js
Processing is a free graphical 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 ...
, a native
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
alternative to Processing.js that has the official support of the Processing Foundation.
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.
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.
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.
Wiring, Arduino, and Fritzing
Processing has spawned another project,
Wiring
Electrical wiring is an electrical installation of cabling and associated devices such as switches, distribution boards, sockets, and light fittings in a structure.
Wiring is subject to safety standards for design and installation. Allowable ...
, which uses the Processing IDE with a collection of libraries written in the
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
language as a way to teach artists how to program
microcontroller
A microcontroller (MCU for ''microcontroller unit'', often also MC, UC, or μC) is a small computer on a single VLSI integrated circuit (IC) chip. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable i ...
s. There are now two separate hardware projects, Wiring and
Arduino
Arduino () is an 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 unde ...
, 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.
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.
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
Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cro ...
and enforces some of the same restrictions such as disallowing static methods, while also allowing more concise code, and supporting
functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declar ...
.
JRubyArt
JRubyArt (formerly named ''ruby-processing'') is a
wrapper for Processing in the
Ruby
A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
language, that runs on the Java platform using JRuby.
Quil
Quil is an interactive animation library for
Clojure
Clojure (, like ''closure'') is a dynamic and functional dialect of the Lisp programming language on the Java platform. Like other Lisp dialects, Clojure treats code as data and has a Lisp macro system. The current development process is comm ...
and ClojureScript based on Processing.
Media
The music video for "
House of Cards
A house of cards (also known as a card tower or card castle) is a structure created by stacking playing cards on top of each other, often in the shape of a pyramid. "House of cards" is also an expression that dates back to 1645 meaning a structu ...
" by
Radiohead
Radiohead are an English rock band formed in Abingdon, Oxfordshire, in 1985. The band consists of Thom Yorke (vocals, guitar, piano, keyboards); brothers Jonny Greenwood (lead guitar, keyboards, other instruments) and Colin Greenwood (bass) ...
was created using Processing combined with data from
lidar
Lidar (, also LIDAR, or LiDAR; sometimes LADAR) is a method for determining ranges (variable distance) by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. It can also be ...
technology, along with using
acrylic glass
Poly(methyl methacrylate) (PMMA) belongs to a group of materials called engineering plastics. It is a transparent thermoplastic. PMMA is also known as acrylic, acrylic glass, as well as by the trade names and brands Crylux, Plexiglas, Acrylite, ...
and
mirror
A mirror or looking glass is an object that Reflection (physics), reflects an image. Light that bounces off a mirror will show an image of whatever is in front of it, when focused through the lens of the eye or a camera. Mirrors reverse the ...
s to create scenes in which the image appears distorted, partially disappears, or disintegrate as if being carried by wind. Processing has also been used to create illustrations for publications such as ''
Nature
Nature, in the broadest sense, is the physics, physical world or universe. "Nature" can refer to the phenomenon, phenomena of the physical world, and also to life in general. The study of nature is a large, if not the only, part of science. ...
'' and ''
The New York Times
''The New York Times'' (''the Times'', ''NYT'', or the Gray Lady) is a daily newspaper based in New York City with a worldwide readership reported in 2020 to comprise a declining 840,000 paid print subscribers, and a growing 6 million paid ...
'', to output sculptures for gallery exhibitions, to control huge video walls and to knit sweaters.
See also
*
Cinder
Cinder is an alternate term for scoria.
Cinder or Cinders may also refer to:
In computing
*Cinder (programming library), a C++ programming library for visualization
*Cinder, OpenStack's block storage component
* Cyber Insider Threat, CINDER, a ...
(C++)
*
OpenFrameworks
openFrameworks is an open source toolkit designed for creative coding founded by Zachary Lieberman, Theo Watson and Arturo Castro. OpenFrameworks is written in C++ and built on top of OpenGL. It runs on Microsoft Windows, macOS, Linux, iOS, ...
(C++)
*
JavaFX
JavaFX is a software platform for creating and delivering desktop applications, as well as rich web applications that can run across a wide variety of devices. JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linu ...
*
Max (software)
Max, also known as Max/MSP/Jitter, is a visual programming language for music and multimedia developed and maintained by San Francisco-based software company Cycling '74. Over its more than thirty-year history, it has been used by composers, per ...
*
Codea
Codea.io is a code editor for iPad made by Two Lives Left. It is designed for prototyping visual ideas, primarily games and simulations. Finished projects can be exported directly from the app to Xcode. It is closely related to the Processing pro ...
Footnotes
References
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
External links
*
{{Authority control
Programming languages
Animation software
Computer graphics
Cross-platform software
Educational programming languages
Free computer libraries
Java platform
Java programming language family
JVM programming languages
Object-oriented programming languages
Physical computing
Software using the LGPL license
2001 software
Cross-platform free software
Programming languages created in 2001
Creative coding