Processing
{{Short description|Free graphics library}}
{{About|the graphics library|the general term about a sequence of activities|Process}}
{{Infobox programming language
| name = Processing
| logo = Processing 2021 logo.svg
| logo size = 150px
| paradigm = Object-oriented
| latest release version = 4.3.1
| latest release date = {{Start date and age|2024|11|12}}{{Cite web|url=https://github.com/processing/processing4/releases/|title=Releases|website=GitHub|access-date=2024-12-19}}
| latest preview version =
| latest preview date =
| website = {{url|https://processing.org/|processing.org}}
| logo alt = On a light grey background, a stylized letter "P" made out of two rectangles and a semicircular arc in different shades of blue. The simple shapes evoke the way designs are created by the Processing library.
| year = {{Start date and age|2001}}
| designers = Casey Reas, Ben Fry
| file ext = .pde
}}
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.
Processing uses the Java programming 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.{{Cite web|url=https://processingfoundation.org/people|title=People|website=processingfoundation.org|access-date=2017-04-24|archive-url=https://web.archive.org/web/20191005182318/https://processingfoundation.org/people/|archive-date=2019-10-05|url-status=dead}}
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.{{cite web|url=https://processing.org/discourse/alpha/board_Collaboration_action_display_num_1074297082.html|title=Processing 1.0 _ALPHA_ - processing.org|website=processing.org|access-date=2017-12-24|archive-url=https://web.archive.org/web/20120428175217/http://www.processing.org/discourse/alpha/board_Collaboration_action_display_num_1074297082.html|archive-date=2012-04-28|url-status=dead}} 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.{{cite web|url=https://github.com/processing/p5.js/issues/2443|title=What means number 5 in name "p5"? · Issue #2443 · processing/p5.js|website=GitHub}}
In 2012 the Processing Foundation was established and received 501(c)(3) nonprofit status,{{cite web |author=Casey Reas |author2=Ben Fry |title=A Modern Prometheus |date=May 29, 2018 |url=https://medium.com/processing-foundation/a-modern-prometheus-59aed94abe85 |website=Medium}} 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.{{cite web |title=PCD |url=https://medium.com/processing-foundation/pcd/home |website=Medium}}
Features
{{Infobox software
| name = Processing IDE
| logo = Processing 4.0b1 Icon.png
| logo caption =
| screenshot = Processing 4.0b1 Screenshot.png
| caption = Screenshot of Processing's integrated development environment.
| collapsible =
| author =
| developer =
| released =
| discontinued =
| latest release version = 4.3
| latest release date = {{Start date and age|2023|07|26}}
| latest preview version =
| latest preview date =
| status =
| programming language = Java, GLSL, JavaScript
| operating system = Cross-platform
| platform =
| language =
| genre = Integrated development environment
| license =
| website = {{URL|//processing.org}}
| frequently updated =
}}
Processing includes a sketchbook, a minimal alternative to an integrated development environment (IDE) for organizing projects.{{cite book|author=Ira Greenberg|title=Processing: Creative Coding and Computational Art|url=https://books.google.com/books?id=TKgfVpWPb0sC&pg=PA151|date=31 December 2007|publisher=Apress|isbn=978-1-4302-0310-0|pages=151–}}
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.{{cite book|author=Jeanine Meyer|title=Programming 101: The How and Why of Programming Revealed Using the Processing Programming Language|url=https://books.google.com/books?id=yypgDwAAQBAJ&pg=PA121|date=15 June 2018|publisher=Apress|isbn=978-1-4842-3697-0|pages=121–}}
When programming in Processing, all additional classes defined will be treated as inner classes when the code is translated into pure Java before compiling.{{cite book|author=Ira Greenberg|title=The Essential Guide to Processing for Flash Developers|url=https://books.google.com/books?id=7pVhzd6h20IC&pg=PA412|date=25 March 2010|publisher=Apress|isbn=978-1-4302-1980-4|pages=412–}} 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{{cite web |last1=Tayste |title=Hello Mouse - OpenProcessing |url=https://openprocessing.org/sketch/1503488 |website=OpenProcessing.org |access-date=3 March 2022}} is a better example of the look and feel of the language.
// Hello mouse.
void setup() {
size(400, 400);
stroke(255);
background(192, 64, 0);
}
void draw() {
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.{{cite book|author=Meredith Hoy|title=From Point to Pixel: A Genealogy of Digital Aesthetics|url=https://books.google.com/books?id=r0NwDQAAQBAJ&pg=PA142|date=3 January 2017|publisher=Dartmouth College Press|isbn=978-1-5126-0023-0|pages=142–}}
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."{{Cite web | url=http://cdn.cooperhewitt.org/2011/05/26/Final%20-%20CHNDM%20NDA%202011%20Winner%20Release%205-26-11.pdf | title=Cooper-Hewitt, National Design Museum Announces Winners and Finalists of the 12th Annual National Design Awards | archive-url=https://web.archive.org/web/20110812201259/http://cdn.cooperhewitt.org/2011/05/26/Final%20-%20CHNDM%20NDA%202011%20Winner%20Release%205-26-11.pdf | archive-date=2011-08-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.
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.
=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.{{cite web | url=https://lauren-mccarthy.com/p5-js | title=P5.js — Lauren Lee McCarthy }}
Since April 2022, p5.js has been led by Qianqian Ye, an Adjunct Associate Professor of Media Arts at USC.{{cite web | url=https://qianqian-ye.com/about.html | title=Qianqian Ye }}
=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 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.{{Citation|title=p5|date=2021-09-29|url=https://github.com/p5py/p5|publisher=p5py|access-date=2021-10-12}}
=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.{{cite book|author1=Allison Parrish|author2=Ben Fry|author3=Casey Reas|title=Getting Started with Processing.py: Making Interactive Graphics with Processing's Python Mode|url=https://books.google.com/books?id=ddYlDAAAQBAJ|date=11 May 2016|publisher=Maker Media, Incorporated|isbn=978-1-4571-8679-0}}
=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.{{Citation|title=py5 documentation|date=2021-09-13|url=https://py5coding.org/|publisher=hx2a|access-date=2022-05-10}}
=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.{{cite web|url=http://circuitcellar.com/ee-tips/processing-wiring-and-arduino-ee-tip-101/|title=Processing, Wiring, and Arduino (EE Tip 101) - Circuit Cellar|date=18 September 2013}}{{Dead link|date=May 2020 |bot=InternetArchiveBot |fix-attempted=yes }} 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.{{cite web
| title = Android - Processing
| access-date = 2013-06-03
| url = http://wiki.processing.org/w/Android
| archive-url = https://web.archive.org/web/20140819181954/http://wiki.processing.org/w/Android
| archive-date = 2014-08-19
| url-status = dead
}}
=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.{{cite web|url=http://cdm.link/2010/02/iprocessing-puts-processing-js-on-iphone-but-what-about-browsers/|title=iProcessing Puts Processing.js on iPhone - But What About Browsers? - CDM Create Digital Music|date=11 February 2010|access-date=23 July 2018|archive-url=https://web.archive.org/web/20191013080132/https://cdm.link/2010/02/iprocessing-puts-processing-js-on-iphone-but-what-about-browsers/|archive-date=13 October 2019|url-status=dead}}
=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.{{cite web|url=http://technically.us/spde/About|title=Spde: Spde|publisher=Technically.us|access-date=2013-08-20|archive-url=https://web.archive.org/web/20110802044558/http://technically.us/spde/About|archive-date=2011-08-02|url-status=dead}}{{cite web|url=http://technically.us/code/x/runaway-processing/|title=Coderspiel / Runaway processing|publisher=Technically.us|access-date=2013-08-20|archive-url=https://web.archive.org/web/20161110090357/http://technically.us/code/x/runaway-processing/|archive-date=2016-11-10|url-status=dead}}{{cite web|url=http://technically.us/code/x/flocking-with-spde/|title=Coderspiel / Flocking with Spde|publisher=Technically.us|access-date=2013-08-20}}
=JRubyArt=
=Quil=
Quil is an interactive animation library for Clojure and ClojureScript based on Processing.{{Cite web|url=http://www.quil.info/|title=Quil: animation in Clojure}}{{Cite web | url=http://nbeloglazov.com/2014/05/29/quil-intro.html |title = Quil Intro}}
=Sketch=
Sketch is a Common Lisp library highly inspired by Processing.{{Cite web|url=https://github.com/vydd/sketch/tree/master|title=Sketch|publisher=Github.com|access-date=2025-04-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.{{Cite news|last=Nye|first=Calley|date=2008-07-14|title=Radiohead Partners With Google For Music Video Launch|newspaper=The Washington Post|language=en-US|url=http://www.washingtonpost.com/wp-dyn/content/article/2008/07/14/AR2008071402460.html|access-date=2021-03-16|issn=0190-8286}} 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.{{Cite book |last=Reas |first=Casey |title=Getting started with Processing |date=2015 |author2=Ben Fry |isbn=978-1-4571-8708-7 |edition=Second |location=San Francisco |page=183 |oclc=905522686}}
See also
{{Portal|Free and open-source software|Computer programming}}
- Cinder (C++)
- OpenFrameworks (C++)
- JavaFX
- Max (software)
- Codea
Footnotes
{{Reflist}}
References
{{Refbegin}}
- {{citation
| first1 = Hartmut
| last1 = Bohnacker
| first2 = Benedikt
| last2 = Gross
| first3 = Julia
| last3 = Laub
| first4 = Claudius
| last4 = Lazzeroni
| title = Generative Design: Visualize, Program, and Create with Processing
| date = August 22, 2012
| edition = 1st
| publisher = Princeton Architectural Press
| page = 472
| isbn = 978-1616890773
}}
- {{citation
|first1 = Andrew
|last1 = Glassner
|title = Processing for Visual Artists: How to Create Expressive Images and Interactive Art
|date = August 9, 2010
|edition = 1st
|publisher = A K Peters/CRC Press
|page = 955
|isbn = 978-1-56881-716-3
|url = http://www.crcpress.com/ecommerce_product/product_detail.jsf?isbn=9781568817163
|url-status = dead
|archive-url = https://web.archive.org/web/20110421204824/http://www.crcpress.com/ecommerce_product/product_detail.jsf?isbn=9781568817163
|archive-date = April 21, 2011
}}
- {{citation
| first1 = Casey
| last1 = Reas
| first2 = Ben
| last2 = Fry
| title = Getting Started with Processing
| date = June 17, 2010
| edition = 1st
| publisher = Make
| page = 208
| isbn = 978-1-4493-7980-3
}}
- {{citation
| first = Joshua
| last = Noble
| title = Programming Interactivity: A Designer's Guide to Processing, Arduino, and Openframeworks
| date = July 21, 2009
| edition = 1st
| publisher = O'Reilly Media
| page = 736
| isbn = 978-0-596-15414-1
| url = http://oreilly.com/catalog/9780596154141/
}}
- {{citation
| first = Kostas
| last = Terzidis
| title = Algorithms for Visual Design Using the Processing Language
| date = May 11, 2009
| edition = 1st
| publisher = Wiley
| page = 384
| isbn = 978-0-470-37548-8
| url = http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470375485.html
}}
- {{citation
|first1 = Casey
|last1 = Reas
|first2 = Ben
|last2 = Fry
|first3 = John
|last3 = Maeda
|title = Processing: A Programming Handbook for Visual Designers and Artists
|date = September 30, 2007
|edition = 1st
|publisher = The MIT Press
|page = 736
|isbn = 978-0-262-18262-1
|url = http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=11251
|url-status = dead
|archive-url = https://web.archive.org/web/20110417063708/http://mitpress.mit.edu/catalog/item/default.asp?tid=11251&ttype=2
|archive-date = April 17, 2011
}}
- {{citation
| first = Ben
| last = Fry
| title = Visualizing Data
| date = January 11, 2008
| edition = 1st
| publisher = O'Reilly Media
| page = 382
| isbn = 978-0-596-51455-6
| url = http://oreilly.com/catalog/9780596514556/
}}
- {{citation
|first = Ira
|last = Greenberg
|title = Processing: Creative Coding and Computational Art (Foundation)
|date = May 28, 2007
|edition = 1st
|publisher = friends of ED
|page = 840
|isbn = 978-1-59059-617-3
|url = http://friendsofed.com/book.html?isbn=159059617X
|url-status = dead
|archive-url = https://web.archive.org/web/20110127204040/http://www.friendsofed.com/book.html?isbn=159059617X
|archive-date = January 27, 2011
}}
- {{citation
| first = Daniel
| last = Shiffman
| title = Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction
| date = August 19, 2008
| edition = 1st
| publisher = Morgan Kaufmann
| page = 450
| isbn = 978-0-12-373602-4
| url = http://www.learningprocessing.com/
}}
- {{citation
|first = Robert
|last = Faludi
|date = January 4, 2011
|title = Building Wireless Sensor Networks: with ZigBee, XBee, Arduino, and Processing
|edition = 1st
|publisher = O'Reilly Media
|page = 320
|isbn = 978-0-596-80774-0
|url = http://faludi.com/bwsn
|access-date = May 18, 2011
|archive-url = https://web.archive.org/web/20190612215600/https://www.faludi.com/bwsn/
|archive-date = June 12, 2019
|url-status = dead
}}
- {{citation
| first = Jan
| last = Vantomme
| title = Processing 2, Creative Programming Cookbook
| date = September 20, 2012
| edition = 1st
| publisher = Packt Publishing
| page = 291
| isbn = 9781849517942
| url = http://www.packtpub.com/processing-2-creative-programming-cookbook/book
| access-date = February 25, 2013
| archive-url = https://web.archive.org/web/20140702050306/http://www.packtpub.com/processing-2-creative-programming-cookbook/book
| archive-date = July 2, 2014
| url-status = dead
}}
- {{citation
| first = Matt
| last = Pearson
| title = Generative Art, A practical guide using Processing
| date = June 1, 2011
| edition = 1st
| publisher = Manning
| page = 240
| isbn = 9781935182627
| url = http://zenbullets.com/book.php
| access-date = February 25, 2013
| archive-url = https://web.archive.org/web/20190624064208/http://zenbullets.com/book.php
| archive-date = June 24, 2019
| url-status = dead
}}
- {{citation
|first = Vantomme
|last = Jan
|title = Processing 2: Creative Programming Cookbook
|date = September 20, 2012
|edition = 1st
|publisher = Packt Publishing
|page = 306
|isbn = 978-1849517942
|url = http://www.packtpub.com/processing-2-creative-programming-cookbook/book
|access-date = February 25, 2013
|archive-url = https://web.archive.org/web/20140702050306/http://www.packtpub.com/processing-2-creative-programming-cookbook/book
|archive-date = July 2, 2014
|url-status = dead
}}
- {{citation
|first = Daniel
|last = Sauter
|title = Rapid Android Development: Build Rich, Sensor-Based Applications with Processing
|date = May 2, 2013
|edition = 1st
|publisher = Pragmatic Bookshelf
|page = 300
|isbn = 978-1937785062
|url = http://pragprog.com/book/dsproc/rapid-android-development
|access-date = July 18, 2013
|archive-url = https://web.archive.org/web/20191013080133/https://pragprog.com/book/dsproc/rapid-android-development
|archive-date = October 13, 2019
|url-status = dead
}}
- {{citation
|first = Nikolaus
|last = Gradwohl
|title = Processing 2: Creative Coding Hotshot
|date = May 20, 2013
|edition = 1st
|publisher = Packt Publishing
|page = 266
|isbn = 978-1782166726
|url = http://www.packtpub.com/processing-2-creative-coding-hotshot/book
|access-date = July 18, 2013
|archive-url = https://web.archive.org/web/20140702041655/http://www.packtpub.com/processing-2-creative-coding-hotshot/book
|archive-date = July 2, 2014
|url-status = dead
}}
{{Refend}}
External links
{{Commons category|Processing (programming language)|Processing}}
- {{Official website}}
{{Java (Sun)}}
{{Authority control}}
Category:Programming languages
Category:Cross-platform software
Category:Educational programming languages
Category:Free computer libraries
Category:Java programming language family
Category:JVM programming languages
Category:Object-oriented programming languages
Category:Software using the GNU Lesser General Public License
Category:Cross-platform free software