Dr. Dobb's Journal - December 2008 - (Page 6) d12edit_p4as 10/10/08 7:27 AM Page 6 FRIDAY NIGHT FISH FRY by Jonathan Erickson It’s a Bigger World Than Java and C++ IT’S NO SURPRISE that we haven’t heard much about the Tokeneer project. After all, Tokeneer was developed for the U.S. National Security Agency (NSA), an outfit known for keeping things secret. Which makes it even more surprising that not only did the NSA acknowledge Tokeneer’s existence, but they released it as open source software. In a nutshell, Tokeneer is a proof-of-concept of what’s called “high-assurance software engineering.” Secure software, in other words. Software you can trust. Software that must work correctly or else the consequences could be calamitous. And software that’s written in Ada—yes, Ada—and developed using Praxis High Integrity Systems (www.praxis-his.com) Correctness-by-Construction (CbyC) methodology, the SPARK Ada language (www.sparkada.com), and AdaCore’s GNAT Pro environment (www.adacore .com). The project demonstrates how to meet or exceed all those things that are necessary to achieve high assurance, such as Evaluation Assurance Level 5 in the Common Criteria (whatever that is). All in all, Tokeneer was created in just 260-person days, and implemented in about 10,000 lines of code. Originally a subset of the Ada language, SPARK Ada is designed in such a way that all SPARK programs are legal Ada programs. No less than Tony Hoare, Fellow of the Royal Society of Microsoft Research, says that “the Tokeneer project is a milestone in the transfer of program verification technology into industrial application. Publication of the full documents for the project has provided unprecedented experimental material for yet further development of the technology by pure academic research. It will serve as a touchstone to chart and measure progress of the basic science of programming, on which the technology is based.” Tokeneer is aimed at both the industrial and academic communities, forming an base for research in program verification and as a high-level teaching aid for educators. You can download the entire Tokeneer project, including requirements, security target, specifications, designs, source code, and proofs at www.adacore.com/home/ gnatpro/tokeneer/. About the same time, IntellaSys (www.intellasys .net) unveiled its 40-core processor designed for embedded wireless, portable, and distributed data processing applications. The 40C18 is an array of 40 fully functional CPUs operating asynchronously, each of the cores a complete computer, with its own ROM, RAM, and interprocessor communication. Together they can deliver up to 26 billion operations per second. So how do you program such a device? Easy. In FORTH. That’s right, FORTH. IntellaSys is releasing the processor along with VentureForth, a FORTHbased IDE that includes fully interactive programming, testing, and debugging facilities. VentureForth includes compilers for both Windows and Linux and a simulator for debugging, and contains low-level primitives as well as the high-level tools necessary to map programs across the array of cores in a processor. “The beauty of this single-chip 40 CPU processing solution is that it is completely programmable— meaning if a spec changes, it is a code issue, not a silicon turn,” says Chuck Moore, IntellaSys CTO and inventor of the FORTH programming language. “With 40 cores operating independently on the chip, designers can dedicate groups of them to handle specific tasks. For example, some could be assigned computeintensive Fast Fourier Transforms (FFT) while others handle wireless connectivity, standard I/O interfaces or drive external memory.” And then there’s Python (www.python.org), where the news is that Version 2.6 has been released. Of course, Python 2.6 is really about laying the groundwork for the upcoming Python 3.0, which will be a sweeping redesign of the language. In other words, Python creator Guido van Rossum tells us that “2.6 is the stepping stone from 2.5 (or older) to 3.0. If you want to port your Python 2.x code to 3.0, port it to 2.6 first. Then turn on the ‘-3’ option, which spits out warnings about things you need to change in order to work with 3.0. Clean those up, then run the 2-to-3 source-to-source transformation program, and you should be ready to start the final steps of porting to 3.0.” David Goodger of the Python Foundation adds that, “Python 3.0 goes back to the foundations of Python and fixes them. There are some major changes, for example, to the I/O system and to the text handling (it is Unicode throughout now), but most of the changes are not really revolutionary. Before Python 3.0 began being worked on, various people maintained lists of Python worts and Python mistakes. Guido himself had a list of things he wished he hadn’t done or things he wished he had done differently. Python 3.0 is actually taking the opportunity to go back and fix these things. This is something a lot of projects never do.” No, but it is probably something a lot of projects should do. Next Month: In January, we kick off the New Year by looking under the hood of operating systems. Jonathan Erickson Editor-in-Chief jerickson@ddj.com 6 Dr. Dobb’s Journal l www.ddj.com l December 2008 http://www.praxis-his.com http://www.sparkada.com http://www.adacore.com http://www.adacore.com http://www.python.org http://www.adacore.com/home/gnatpro/tokeneer/ http://www.adacore.com/home/gnatpro/tokeneer/ http://www.intellasys.net http://www.intellasys.net http://www.ddj.com
Table of Contents Feed for the Digital Edition of Dr. Dobb's Journal - December 2008 Dr. Dobb's Journal - December 2008 Contents Friday Night Fish Fry Alia Vox Developer Diaries Conversations The Man Who Sold the Sky Performance on Rails LINQ-to-SQL and T-SQL A Remote Java RMI Registry Beyond B-Trees File Descriptors and Multithreaded Programs Effective Concurrency The Agile Edge Swaine's Flames Dr. Dobb's Journal - December 2008 Dr. Dobb's Journal - December 2008 - Dr. Dobb's Journal - December 2008 (Page Cover1) Dr. Dobb's Journal - December 2008 - Dr. Dobb's Journal - December 2008 (Page Cover2) Dr. Dobb's Journal - December 2008 - Dr. Dobb's Journal - December 2008 (Page 1) Dr. Dobb's Journal - December 2008 - Dr. Dobb's Journal - December 2008 (Page 2) Dr. Dobb's Journal - December 2008 - Dr. Dobb's Journal - December 2008 (Page 3) Dr. Dobb's Journal - December 2008 - Contents (Page 4) Dr. Dobb's Journal - December 2008 - Contents (Page 5) Dr. Dobb's Journal - December 2008 - Friday Night Fish Fry (Page 6) Dr. Dobb's Journal - December 2008 - Friday Night Fish Fry (Page 7) Dr. Dobb's Journal - December 2008 - Friday Night Fish Fry (Page 8) Dr. Dobb's Journal - December 2008 - Friday Night Fish Fry (Page 9) Dr. Dobb's Journal - December 2008 - Alia Vox (Page 10) Dr. Dobb's Journal - December 2008 - Alia Vox (Page 11) Dr. Dobb's Journal - December 2008 - Developer Diaries (Page 12) Dr. Dobb's Journal - December 2008 - Developer Diaries (Page 13) Dr. Dobb's Journal - December 2008 - Conversations (Page 14) Dr. Dobb's Journal - December 2008 - Conversations (Page 15) Dr. Dobb's Journal - December 2008 - The Man Who Sold the Sky (Page 16) Dr. Dobb's Journal - December 2008 - The Man Who Sold the Sky (Page 17) Dr. Dobb's Journal - December 2008 - The Man Who Sold the Sky (Page 18) Dr. Dobb's Journal - December 2008 - The Man Who Sold the Sky (Page 19) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 20) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 21) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 22) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 23) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 24) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 25) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 26) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 27) Dr. Dobb's Journal - December 2008 - Performance on Rails (Page 28) Dr. Dobb's Journal - December 2008 - LINQ-to-SQL and T-SQL (Page 29) Dr. Dobb's Journal - December 2008 - LINQ-to-SQL and T-SQL (Page 30) Dr. Dobb's Journal - December 2008 - LINQ-to-SQL and T-SQL (Page 31) Dr. Dobb's Journal - December 2008 - LINQ-to-SQL and T-SQL (Page 32) Dr. Dobb's Journal - December 2008 - LINQ-to-SQL and T-SQL (Page 33) Dr. Dobb's Journal - December 2008 - LINQ-to-SQL and T-SQL (Page 34) Dr. Dobb's Journal - December 2008 - A Remote Java RMI Registry (Page 35) Dr. Dobb's Journal - December 2008 - A Remote Java RMI Registry (Page 36) Dr. Dobb's Journal - December 2008 - A Remote Java RMI Registry (Page 37) Dr. Dobb's Journal - December 2008 - A Remote Java RMI Registry (Page 38) Dr. Dobb's Journal - December 2008 - A Remote Java RMI Registry (Page 39) Dr. Dobb's Journal - December 2008 - Beyond B-Trees (Page 40) Dr. Dobb's Journal - December 2008 - Beyond B-Trees (Page 41) Dr. Dobb's Journal - December 2008 - File Descriptors and Multithreaded Programs (Page 42) Dr. Dobb's Journal - December 2008 - File Descriptors and Multithreaded Programs (Page 43) Dr. Dobb's Journal - December 2008 - File Descriptors and Multithreaded Programs (Page 44) Dr. Dobb's Journal - December 2008 - File Descriptors and Multithreaded Programs (Page 45) Dr. Dobb's Journal - December 2008 - Effective Concurrency (Page 46) Dr. Dobb's Journal - December 2008 - Effective Concurrency (Page 47) Dr. Dobb's Journal - December 2008 - Effective Concurrency (Page 48) Dr. Dobb's Journal - December 2008 - The Agile Edge (Page 49) Dr. Dobb's Journal - December 2008 - The Agile Edge (Page 50) Dr. Dobb's Journal - December 2008 - The Agile Edge (Page 51) Dr. Dobb's Journal - December 2008 - Swaine's Flames (Page 52) Dr. Dobb's Journal - December 2008 - Swaine's Flames (Page Cover3) Dr. Dobb's Journal - December 2008 - Swaine's Flames (Page Cover4)
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.