Processing (γλώσσα προγραμματισμού)

Το Processing είναι γλώσσα προγραμματισμού ανοικτού κώδικα και παράλληλα προγραμματιστικό περιβάλλον για ανθρώπους που θέλουν να προγραμματίσουν εικόνες, animation και ήχο. Ξεκίνησε ως εκπαιδευτικό εργαλείο και πολύ σύντομα εξελίχθηκε σε επαγγελματικό προγραμματιστικό περιβάλλον. Δημιουργήθηκε την άνοιξη του 2001 όταν δύο απόφοιτοι του πανεπιστημίου MIT Media Lab, Benjamin Fry και Casey Reas ξεκίνησαν την ανάπτυξη της γλώσσας Processing πάνω σε Java. Παρόλο που η γλώσσα αναπτύχθηκε στη Java, το συντακτικό της είναι απλουστευμένο και το προγραμματιστικό της μοντέλο βασίζεται στα γραφικά. Απώτερος σκοπός των δύο δημιουργών είναι η εκμάθηση προγραμματισμού από αρχάριους χρήστες μέσω ενός οπτικού πλαισίου καθώς και η παροχή ενός επαγγελματικού εργαλείου παραγωγής εφαρμογών multimedia. Διαθέτει τη δυνατότητα ενσωμάτωσης κώδικα OpenGL για την επιτάχυνση της απόδοσης τρισδιάστατων γραφικών. Είναι συμβατή με τα λειτουργικά συστήματα GNU/Linux, Mac OS X, και Windows. Έχει εμπλουτιστεί με περισσότερες από 100 βιβλιοθήκες. Σήμερα, η Processing υποστηρίζεται από μια κοινότητα εθελοντών προγραμματιστών.

Σύγκριση με Java

Το περιβάλλον του Processing είναι γραμμένο σε Java. Προγράμματα που έχουν γραφτεί σε Processing είναι επίσης μεταφρασμένα σε Java και έπειτα τρέχουν σαν Java προγράμματα. Προγράμματα που είναι γραμμένα σε Java και Processing, συνήθως τρέχουν γρηγορότερα από προγράμματα που βασίζονται σε scripting γλώσσες όπως ActionScript και Lingo, κάτι το οποίο είναι πολύ σημαντικό για εφαρμογές με γραφικά.
Μεγάλες διακρίσεις μεταξύ του Processing και της Java είναι οι βιβλιοθήκες γραφικών του Processing και το απλοποιημένο στυλ προγραμματισμού που δεν προϋποθέτει οι χρήστες να καταλαβαίνουν πιο προηγμένες έννοιες όπως κλάσεις, αντικείμενα, ή animation (ενώ εξακολουθούν να είναι διαθέσιμες για προχωρημένους χρήστες). Τέτοιες τεχνικές λεπτομέρειες πρέπει να είναι ειδικά προγραμματισμένες σε Java, αλλά ολοκληρωμένες σε Processing, κάνοντας τα προγράμματα μικρότερα και ευκολότερα να διαβαστούν.

Tutorials

Σε αυτό το τμήμα παραθέτονται μερικά tutorials για συγκεκριμένα θέματα.Επίσης εξαιρετικά tutorials υπάρχουν στο τμήμα εκμάθησης στην σελίδα του Processing.

Από τον Jose Sanchez

Σε μία προσπάθεια να εμπλουτίσουμε την κοινότητα του Processing και επίσης ναι βοηθήσουμε τους μαθητές να κατανοήσουν κάποια θέματα τα οποία δεν τους είναι τελείως ξεκάθαρα,δημιούργησα μερικά  video tutorials,παρακαλώ στείλτε σχόλια και προτάσεις για να συνεχιστεί η βελτίωση στο παρακάτω e-mail : jomasan@gmail.com
Λίστα με video tutorials

Από το Fun Processing

Αυτή η σειρά από tutorials ξεκινούν από την απόλυτη αρχη ,για παράδειγμα,τι ειναι ενα pixel.Απο εκεί σιγά σιγά προσπαθεί να εξηγήσει  τον προγραμματισμό χρησιμοποιώντας πολύ λίγες γραμμές κώδικα, που θα δημιουργούν σταθερά ή κινούμενα γραφικά. Κάθε επεισόδιο βασίζεται σε προηγούμενα και δεν εστιάζει στη θεωρία, αλλά στα εργαλεία που θα σας επιτρέψουν να παίξετε με τον κώδικα. Αν κανείς ενδιαφέρεται για τον προγραμματισμό, επειδή είναι διασκεδαστικό, υπάρχει πάντα χρόνος αργότερα να μάθει πολύπλοκους αλγορίθμους και δομές δεδομένων. Ακόμα και κάποιος ο οποίος δεν θέλει να πάει πιο βαθιά, είναι πολύ σημαντικό σε έναν κόσμο όπου το λογισμικό είναι παντού γύρω μας, απλά να έχει μια ιδέα για το πώς δημιουργείται το λογισμικό.
Το project αυτό ξεκίνησε στις 1 Αυγούστου 2011 και νέα βίντεο προστίθενται κάθε εβδομάδα.

Slide Show με ένα PImage

Ας υποθέσουμε ότι έχετε πολλές εικόνες και θέλετε να τις εμφανίσετε σαν slide show,η πρώτη μας σκέψη είναι ότι θα φορτώσουμε όλες τις εικόνες στην setup() και μετά θα τις εμφανίσουμε μέσω της draw(). Όμως αν έχουμε μεγάλου μεγέθους εικόνες αυτό σημαίνει ότι θα χρησιμοποιηθεί πολλή μνήμη ram, καθώς κάθε εικόνα για να εμφανισθεί πρέπει πρώτα να αποσυμπιεστεί.
Ο μόνος τρόπος για να το αποφύγουμε,είναι να φορτώνουμε κάθε εικόνα που θα εμφανιστεί μετά.Μπορούμε να το κάνουμε επειδή αν δεν χρησιμοποιήσουμε την background() η προηγούμενη εικόνα που θα έχει εμφανιστεί  θα συνεχίσει να φαίνεται.Με αυτό το τρόπο χρησιμοποιούμε όσο το δυνατόν λιγότερη μνήμη.
Θα υπάρχει βέβαια μια μικρή καθυστέρηση στο applet μας μέχρι να φορτωθεί η επόμενη εικόνα. Αυτό δεν μας πειράζει γιατί όσο φορτώνει η άλλη εικόνα η προηγούμενη θα φαίνεται.
Πηγαίος κώδικας παράδειγμα :
/**
@author John Gilbertson
Correction: for Processing 114 Beta. by ramin
*/
 
 
PImage img;
String[] files;
int timer;
int nextimg;

void setup() {
  size(400,400);
  files=new String[3]; //some example images.
  files[0]="medium.jpg";
  files[1]="small.jpg";
  files[2]="big.jpg";
 
  nextimg=(nextimg+1)%files.length;
  img=loadImage(files[nextimg]);
  timer=0;
}

int nextimg=0;
String[] files;
PImage img;
int timer;

void draw() {
  if(timer==0)
  {
    background(0);
    image(img,0,0,width,height);
  }
  else if(timer==1)
  {
    img=loadImage(files[nextimg]);
    nextimg=(nextimg+1)%files.length;
    delay(1000); //this decides how long an image should be displayed
  }
  timer=(timer+1)%2;
}

Δημιουργία Κυλίνδρου

Αυτή ειναι μια συνάρτηση για εναν απλό κύλινδρο. Χρησιμοποιεί το πλάτος και τον αριθμό των πλευρών για να υπολογίσει τα σημεία του κύκλου. 
/**
cylinder taken from http://wiki.processing.org/index.php/Cylinder
@author matt ditton
*/
void cylinder(float w, float h, int sides)
{
  float angle;
  float[] x = new float[sides+1];
  float[] z = new float[sides+1];

  //get the x and z position on a circle for all the sides
  for(int i=0; i < x.length; i++){
    angle = TWO_PI / (sides) * i;
    x[i] = sin(angle) * w;
    z[i] = cos(angle) * w;
  }

  //draw the top of the cylinder
  beginShape(TRIANGLE_FAN);

  vertex(0,   -h/2,    0);

  for(int i=0; i < x.length; i++){
    vertex(x[i], -h/2, z[i]);
  }

  endShape();
  //draw the center of the cylinder
  beginShape(QUAD_STRIP); 

  for(int i=0; i < x.length; i++){
    vertex(x[i], -h/2, z[i]);
    vertex(x[i], h/2, z[i]);
  }
  endShape();
  //draw the bottom of the cylinder
  beginShape(TRIANGLE_FAN); 

  vertex(0,   h/2,    0);

  for(int i=0; i < x.length; i++){
    vertex(x[i], h/2, z[i]);
  }

  endShape();
}

Βραβεία και διακρίσεις

Το 2005 απονεμήθηκε στους  Reas και Fry  το αναγνωρισμένου κύρους βραβείο, Golden Nica από την Ars Electronica στην κατηγορία Net Vision, για τη δουλειά τους στο Processing.
O Ben Fry κέρδισε το Εθνικό Βραβείο Σχεδίασης 2011 (National Design Award 2011), που του δόθηκε από το Εθνικό Μουσείο Σχεδίασης  Smithsonian  Cooper-Hewitt στην κατηγορία Διαδραστική σχεδίαση.

Όνομα

Αρχικά, το processing είχε τη URL διεύθυνση proce55ing.com γιατί το όνομα τομέα “processing” ήταν κατειλημμένο. Τελικά όμως, οι Reas και Fry κατοχύρωσαν τον τομέα. Ενώ το όνομα περιείχε συνδυασμό γραμμάτων και αριθμών, διαβαζόταν κανονικά “processing”. Αλλά, παρόλη την αλλαγή, το processing ακόμα χρησιμοποιεί τον όρο “p5” μερικές φορές, ως συντόμευση. Παραδόξως, χρησιμοποιείται συγκεκριμένα το “p5” και όχι το “p55”.