Dr. Dobb's Journal - February 2007 - (Page 6) Warning : session_start : The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in /mnt/data/www.nxtbook.com/fx/config_1.3/global.php on line 9 Warning : session_start : Cannot send session cache limiter - headers already sent output started at /mnt/data/www.nxtbook.com/fx/config_1.3/global.php:9 in /mnt/data/www.nxtbook.com/fx/config_1.3/global.php on line 9 Warning : Cannot modify header information - headers already sent by output started at /mnt/data/www.nxtbook.com/fx/config_1.3/global.php:9 in /mnt/data/www.nxtbook.com/fx/config_1.3/global.php on line 10 @eeee by Jonathan Erickson APLs and Oranges TO TELL THE TRUTH, I don’t know the first thing about APL. But as you’ve probably come to expect, that’s never stopped me before. What little I do know about APL is this: APL is short for “Array Programming Language” or maybe “A Programming Language” and it’s been around for 40 or maybe 50 years. That people are seriously using a programming language like APL after 40 or 50 years is noteworthy. Will Ruby, for instance, still be around four decades from now, or is the world of software development changing such that it doesn’t matter? Or, as with televisions, razors, and broken-down magazine editors, are we moving into an era of disposable programming languages? In any event, APL apparently started out perhaps 50 years ago when in 1957 Harvard professor Kenneth Iverson developed a mathematical notation consisting of symbols and syntax to describe the processing of data. Iverson subsequently joined IBM Research, where, in 1964, 1966, or 1967 depending on who you talk to , he turned it into a full-blown programming language. In between Harvard and IBM, he wrote a book entitled A Programming Language, to which some people attribute the acronym representing the language itself. APL has been described as one of the most concise, consistent, and powerful programming languages ever devised. It can also be pretty straightforward. For instance, a “Hello World” program is as simple as: ‘Hello World’ where any text within quotes outputs to the terminal variables and/or print statements aren’t necessary . Far more interesting and a shade more complicated is Michael Gertelman’s “Conway’s ‘Game of Life’” in one line of APL catpad.net/michael/apl : This leads to one of the oft-criticized aspects of APL—its special character set. Granted, the special characters have been incorporated into Unicode, but they must be entered via nonstandard means, such as special keyboards. IBM took a sledgehammer approach to addressing this problem by developing a Selectric typeball remember those? for writing linear representations of APL notation. In the 1990s, Iverson opted to address the problem via software by developing an APL derivative language called “J,” which uses a standard ASCII font see www.jsoftware.com . There are also a couple of other APL derivations— APL2 and APL2 Version2. APL2 is used in commercial data processing, system design and prototyping, and engineering and scientific computation, among other subjects. APL2 Version 2 supports sophisticated array processing, along with graphics, GUI, file access, and network communication tools—and interfaces to other programming languages and database systems. There are both commercially available APL tools, such as MicroAPL’s APLX www.microapl.co.uk/apl and IBM’s Workstation APL2 www-306.ibm.com/ software/awdtools/apl , and freely available ones, such as compilers and interpreters www.thefreecountry .com/compilers/apl.shtml . For his pioneering efforts with APL, Iverson received the Turing Award in 1979. Not bad for someone who taught himself calculus while attending a one-room schoolhouse in rural Alberta. One thing I like about APL is all of the comments and doggerel it’s generated over the years. In his classic The Devil’s DP Dictionary, Stan Kelly-Bootle says: There are three things a man must do Before his life is done; Write two lines in APL, And make the buggers run. Programming languages are our focus in March. Next Month: Not to be outdone, Edsger Dijkstra said: “APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: It creates a new generation of coding bums.” Coding bums! Well, I certainly have the “bum” part down. No wonder I relate to APL. Jonathan Erickson Editor-in-Chief jerickson@ddj.com . http://catpad.net/michael/apl http://www.jsoftware.com http://www.microapl.co.uk/apl http://www-306.ibm.com/software/awdtools/apl http://www-306.ibm.com/software/awdtools/apl http://www.thefreecountry.com/compilers/apl.shtml http://www.thefreecountry.com/compilers/apl.shtml http://www.ddj.com Table of Contents for the Digital Edition of Dr. Dobb's Journal - February 2007 Contents Hmmmm Alia Vox Developer Diaries Developer's Notebook Microsoft Loves Linux: What’s With That? AJAX Debugging with Firebug Insidious Tight Coupling Java ME and the Command Pattern Bulletproofing C++ Code Simplifying Web Service Integration Global Collaborative Development Nisley's Notebook The Agile Edge Swaine's Flames Dr. Dobb's Journal - February 2007 Dr. Dobb's Journal - February 2007 - (Page Cover1) Dr. Dobb's Journal - February 2007 - (Page Cover2) Dr. Dobb's Journal - February 2007 - (Page 1) Dr. Dobb's Journal - February 2007 - (Page 2) Dr. Dobb's Journal - February 2007 - (Page 3) Dr. Dobb's Journal - February 2007 - Contents (Page 4) Dr. Dobb's Journal - February 2007 - Contents (Page 5) Dr. Dobb's Journal - February 2007 - Hmmmm (Page 6) Dr. Dobb's Journal - February 2007 - Hmmmm (Page 7) Dr. Dobb's Journal - February 2007 - Hmmmm (Page 8) Dr. Dobb's Journal - February 2007 - Hmmmm (Page 9) Dr. Dobb's Journal - February 2007 - Alia Vox (Page 10) Dr. Dobb's Journal - February 2007 - Alia Vox (Page 11) Dr. Dobb's Journal - February 2007 - Developer Diaries (Page 12) Dr. Dobb's Journal - February 2007 - Developer Diaries (Page 13) Dr. Dobb's Journal - February 2007 - Developer's Notebook (Page 14) Dr. Dobb's Journal - February 2007 - Developer's Notebook (Page 15) Dr. Dobb's Journal - February 2007 - Microsoft Loves Linux: What’s With That? (Page 16) Dr. Dobb's Journal - February 2007 - Microsoft Loves Linux: What’s With That? (Page 17) Dr. Dobb's Journal - February 2007 - Microsoft Loves Linux: What’s With That? (Page 18) Dr. Dobb's Journal - February 2007 - Microsoft Loves Linux: What’s With That? (Page 19) Dr. Dobb's Journal - February 2007 - Microsoft Loves Linux: What’s With That? (Page 20) Dr. Dobb's Journal - February 2007 - Microsoft Loves Linux: What’s With That? (Page 21) Dr. Dobb's Journal - February 2007 - AJAX Debugging with Firebug (Page 22) Dr. Dobb's Journal - February 2007 - AJAX Debugging with Firebug (Page 23) Dr. Dobb's Journal - February 2007 - AJAX Debugging with Firebug (Page 24) Dr. Dobb's Journal - February 2007 - AJAX Debugging with Firebug (Page 25) Dr. Dobb's Journal - February 2007 - AJAX Debugging with Firebug (Page 26) Dr. Dobb's Journal - February 2007 - AJAX Debugging with Firebug (Page 27) Dr. Dobb's Journal - February 2007 - Insidious Tight Coupling (Page 28) Dr. Dobb's Journal - February 2007 - Insidious Tight Coupling (Page 29) Dr. Dobb's Journal - February 2007 - Insidious Tight Coupling (Page 30) Dr. Dobb's Journal - February 2007 - Insidious Tight Coupling (Page 31) Dr. Dobb's Journal - February 2007 - Java ME and the Command Pattern (Page 32) Dr. Dobb's Journal - February 2007 - Java ME and the Command Pattern (Page 33) Dr. Dobb's Journal - February 2007 - Java ME and the Command Pattern (Page 34) Dr. Dobb's Journal - February 2007 - Java ME and the Command Pattern (Page 35) Dr. Dobb's Journal - February 2007 - Java ME and the Command Pattern (Page 36) Dr. Dobb's Journal - February 2007 - Bulletproofing C++ Code (Page 37) Dr. Dobb's Journal - February 2007 - Bulletproofing C++ Code (Page 38) Dr. Dobb's Journal - February 2007 - Bulletproofing C++ Code (Page 39) Dr. Dobb's Journal - February 2007 - Bulletproofing C++ Code (Page 40) Dr. Dobb's Journal - February 2007 - Bulletproofing C++ Code (Page 41) Dr. Dobb's Journal - February 2007 - Bulletproofing C++ Code (Page 42) Dr. Dobb's Journal - February 2007 - Simplifying Web Service Integration (Page 43) Dr. Dobb's Journal - February 2007 - Simplifying Web Service Integration (Page 44) Dr. Dobb's Journal - February 2007 - Simplifying Web Service Integration (Page 45) Dr. Dobb's Journal - February 2007 - Simplifying Web Service Integration (Page 46) Dr. Dobb's Journal - February 2007 - Simplifying Web Service Integration (Page 47) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 48) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 49) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 50) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 51) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 52) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 53) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 54) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 55) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 56) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 57) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 58) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 59) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 60) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 61) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 62) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 63) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 64) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 65) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 66) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 67) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 68) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 69) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 70) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 71) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 72) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 73) Dr. Dobb's Journal - February 2007 - Global Collaborative Development (Page 74) Dr. Dobb's Journal - February 2007 - Nisley's Notebook (Page 75) Dr. Dobb's Journal - February 2007 - Nisley's Notebook (Page 76) Dr. Dobb's Journal - February 2007 - Nisley's Notebook (Page 77) Dr. Dobb's Journal - February 2007 - Nisley's Notebook (Page 78) Dr. Dobb's Journal - February 2007 - The Agile Edge (Page 79) Dr. Dobb's Journal - February 2007 - The Agile Edge (Page 80) Dr. Dobb's Journal - February 2007 - The Agile Edge (Page 81) Dr. Dobb's Journal - February 2007 - The Agile Edge (Page 82) Dr. Dobb's Journal - February 2007 - The Agile Edge (Page 83) Dr. Dobb's Journal - February 2007 - Swaine's Flames (Page 84) Dr. Dobb's Journal - February 2007 - Swaine's Flames (Page Cover3) Dr. Dobb's Journal - February 2007 - Swaine's Flames (Page Cover4) http://www.nxtbookMEDIA.com
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.