Artful Computing

The are possibly thousands of computer languages, many devised for very particular applications and not very widely known or used. However, there are a small number of families deriving from the very early history of computing where the modern members show clear relationships, and to some extent if you learn one language from a family line you have a good start in learning other languages from the same line. Processing comes from the "C" line.

 

Processing in its original form is closely related to the Java language. That is to say, much of its syntax is the same as parts of Java. Java, however, is a more complex language with features not available in Processing. In order to execute a Processing program it is first translated into Java (which is a simple task since any Processing statement is a valid Java statement). The Processing language, of course, contains many new primitive operations (e.g. to draw a line) which are not in Java but are easily added via Java's "library" mechanism.

Hence, if you have learned Processing, you have learned how to write basic programs in Java. (You would want to learn more about Java to do real-World programming jobs, however.)

Java is itself a descendant of the "C" family of languages. C was invented by Bell Telephone Laboratories to build the Unix family of computer operating systems (from which Linux derives) and many other operating systems (including Windows) depend on C because it is allows the programmer to get down to the computer hardware. Most of the control structures in Java (and hence Processing) are recognisably derived from C, so you have also gone a long way to learning the basics of C programming.

More recently, "modes" of Processing have appeared in which you write the programs in Javascript or Python. Javascript is widely supported by web-browsers, so it is possible to embed Processing programs in web pages, dynamically generating images as the page is loaded. Python, on the other hand, is now widely regarded as an excellent languages for learning the basic ideas of computer programming, because it has a simple, clean, easily learned syntax. It is also increasingly familiar to many people with a mathematical/science/engineering background as a "scripting" languages that is very well adapted for supporting the automated data handling that is increasingly required by students and practitioners in these disciplines. 

Anyone who does a lot of programming soon appreciates that certain patterns keep reappearing, in ways of storing and accessing information, for example. That being so, it makes sense to build those patterns into programming languages, so that programmers are able to write complex algorithms with fewer lines of instructions (and are hence less likely to make mistakes). By the mid-1970s language designers were developing the ideas of object-oriented programming with languages such as Simula and Smalltalk. These were clever, elegant languages in which it was easier to write error-free programs, but quite different in style to "C" (for very good reasons!). "OO" programming, however, only became mainstream when C++ appeared as a super-set of the C language. (This means that any C program is in principle a valid C++ program - more or less.)

Some people consider this regrettable. C++ is now very widely used for building complex systems because it was an easier sell in programming shops that already knew how to do C. In my opinion, however, the language is now so complicated that it is really safe only in the hands of well trained professionals. For others it is all too easy to produce software that seems to work at first, and then becomes a maintenance nightmare. (I speak from professional experience.) Most of the security vulnerability in your computers arise because the programmers did not fully understand what they were doing. They let it get too complicated. I suspect that we would all be better off had the world adopted one of the more elegantly designed language solutions.

Java was designed to have many of the more useful features of C++, but without some of the complexities and pitfalls for the unwary (though by no means entirely free - it still carries baggage from it inheritance). It is certainly easier to learn. Java did more than that: it was designed to run on any type of computer, so-called "write-once, run anywhere". Most programs written in, say, C or C++, are not easy to move from, say, a Windows computer to a Linux computer. At the very least you have to "re-compile" (rebuild the software executables from their source code). Even then, unless designed with considerable care and expertise, they did not work without extensive modifications. Migrating Java programs is not always as easy as was once claimed, but they do go a long way to solving the problem. Processing programs, which run on top of Java, should therefore be able to run in the same way on Windows machines, Macs or Linux computers, and this is largely true. It is a big advantage.

So, if you want to learn to program, Processing is not a bad choice of language to start with. 

In a broader sense, Processing (and the whole C-line of languages) belong to the class of "imperative" programming languages. (Other examples are Python, Fortran, Perl - and many, many others). "Imperative" means that they are essentially a series of commands carried out one after the other. To a considerable extent, if you learn one imperative language you learn many thinking skills that are easily transferable if you wish to learn another imperative language. You will certainly have to learn new rules of grammar (which takes a few days of practice) but the underlying principles for constructing programs are largely the same. Professional software developers often need to learn many computer languages, each good for a different type of problem, and most find they can quickly attain a high level of skill in a new language, once they have mastered the common principles of programming

There are different types of computer language that embody different concepts, such as LISP and Prolog which are widely used in artificial intelligence work, or the "Standard Query Language" (SQL) used in database searching, where you would have a whole load of new ways of thinking to master. We are not in that game - but many professional programmers find that learning different languages - especially from different lines of descent - gives them different ways of thinking about problems. Just as there a things that are easier to say in French than in English (and vice versa) there are solutions that are easy to describe in one computer language than in another. 

Breadcrumbs