In this age of 007-worthy hardware, it is easy to take software for granted. Yet it is computer logic that handles our PCs and PDAs, our Saturns and satellites, our cell phones and "sell" orders. Software comprises the instructions behind the interfaces, the functionality behind the Web forms. It is the force powering so much of what we see in the modern world, and yet it is rarely seen itself. It is only viewed by those who create it: software developers, database programmers, microchip designers, and all the other computer engineers and hobbyists who express their intentions in a programming language.
If you have never written any software yourself, but are interested in learning how, then read on. We will consider some of the pathways into the world of programming, and one recommended approach if you would like to pursue the same yourself. Of course, a brief introduction such as this can only scratch the surface of such a voluminous topic. The objective is to at least point you in the right direction, and present suggestions as to a language and some learning resources.
While computer science majors may know their future careers, not all people writing software have chosen it as a profession. Many hobbyists got started by merely seeking a way to get computer work accomplished more efficiently. For example, a fair number of Visual Basic programmers first became interested in the language by writing VBA macros to automate tasks in Microsoft Word or Excel.
Other people got involved via the Web, as a result of crafting their personal Websites. They initially created simple home pages using nothing more than HTML. But soon they discovered other Web technologies, including Perl, a flexible scripting language capable of presenting graphical user interfaces (GUIs), accessing databases, and running major commercial Websites (sometimes without the knowledge of the pointy-haired managers…). Perl has been characterized as the duct tape that holds the Internet together, working behind the scenes to process your online purchases, and later to inform you of exactly how little money is left in your checking account. To learn more about the language which has possibly received more praise and derision than any other, check out http://www.perl.com/.
If you have not yet been lured into the world of bits and bytes by one of the aforementioned sirens, you may be wondering how to best begin. You will of course need a computer. These days, given how PCs and Macs are as common as toaster ovens, you probably already have a computer… in every room… with a spouse or child using every single one of them, including "yours". On the other hand, if you have but one ancient beast that is practically on life support, struggling just to run a Web browser, you will definitely want to upgrade to a newer machine.
The next step is to select a computer language to learn. There is certainly no lack of choices. C and C#, Visual C++ and Visual Basic, Perl and Python — the list of major languages is growing every year, almost as fast as the size of their installation packages. A full discussion of all of these options is clearly beyond the scope of this article. However, we will focus on one language that should prove an excellent all-around choice.
In deciding upon your first computer language, you will want to select one that is in common usage, and will remain so for many years, even in "Internet time". It should be a popular language, and not one of the little-known dialects discussed only in obscure academic journals, ivory towers, and more-progressive Tibetan monasteries. In addition, opt for a broad language that can be used on both the front-end (such as creating GUIs) as well as the back-end (i.e., usable on application servers). But avoid any language that is prohibitively expensive to obtain, or requires such intensive hardware resources that you would need your own supercomputer just to write and compile your very first program, to display the message "Hello, world".
Given these criteria, you could easily choose Java as your first language. You would be in good company, because most universities are now using it as the primary "teaching language" in their computer science curricula. In that role, it has largely replaced Pascal and C, older languages that lack the object-oriented capabilities of more modern ones.
But neither of these two displaced languages have disappeared. Borland, a veteran software company, has morphed Pascal into Delphi, whose users readily extol the virtues of their favorite language. Known for its portability, C is now a language of choice for embedded systems, compilers, and operating systems, including Unix and Linux. It also served as the foundation for C++, which is an object-oriented superset of C used widely throughout the commercial world on some of the most complex projects. To find tutorials for any of these languages, simply use your favorite Internet search engine, and you will be impressed by the extensive and mostly free resources available.
Java has numerous attractions: a large feature set, widespread use, healthy life expectancy, support for most platforms, and object orientation. Sun Microsystems, the creator of Java, designed the language to be powerful, secure, architecture-neutral, and thus portable. The language supports inheritance, polymorphism, strong type checking, modularity, exception handling, automatic garbage collection, concurrency, threading, dynamic library loading, nested classes, persistence, reflection, and built-in data types such as strings, arrays, and various collections. Do not be alarmed if any of these terms are unfamiliar to you. With time, you can learn these concepts as you learn the language itself.
Possibly the most efficient way to get started in Java is to visit http://java.sun.com/, where you will find free tutorials, code samples, and links for downloading the Standard Development Kit (SDK). Select the Standard Edition version (J2SE), available for Windows, Linux, and Solaris. Mac users will want to check out http://developer.apple.com/java/, which has information on running and writing Java programs in Mac OS X and Classic Mac OS environments. The current SDK installation is almost 38 MB in size, so if you do not have broadband access to the Internet, you should enlist the help of someone who can utilize their faster connection to download it and burn it onto a CD for you.
After you have installed the SDK, you can read the online tutorials, and begin writing simple Java applications and applets. Examine the sample programs located in the "demo" subdirectory of the Java installation. There are innumerable Java programming books available — some on the Internet, such as Bruce Eckel's well-regarded Thinking in Java. Consider Java courses at a local university or community college. An academic program has the additional benefit of prodding you to show up for class — while home study alone can be easily derailed by domestic duties and other commitments. You may wish to join your local Java users group; most major cities have one. Explore the countless Websites and newsgroups devoted to the language. You can search for tips, post questions, and download tools and integrated development environments (IDEs). Having mastered Java, you may find yourself someday answering the questions of newcomers to the language.