Bookpool.com has posted an excerpt from Knuth's long awaited The Art of Computer Programming: Volume 4. It is very short and discusses combinatorial searching.
Most software has far more features than most users will want. These extra features simply serve to increase the TCO of software deployments and headaches at the helpdesk. OFB Editor-in-Chief Timothy R. Butler argues that GNU/Linux developers would do well to follow the examples of Apple and Mozilla and move lesser used features out of the way.
The IBM Rational Application Developer for Linux trial download enables developers with diverse technical backgrounds, and even those unfamiliar with Java, to quickly build rich, data-driven applications.
C++ is the language that most of Microsoft's big-name products are developed in and one of the most widely-used languages in the world. Charles Torre and Scoble interview Herb Sutter, architect on the Visual C++ team, in two parts. First part is up today, second tomorrow, which includes a small tour of the team. In this segment Herb talks about some of the language and compiler changes that are coming in the next version of Visual C++ and where C++ fits into the managed code revolution.
Refactoring software by hand can be a real pain. So why not just automate the process? In this chapter, Joshua Kerievsky explains the whys and hows of refactoring, and why you shouldn't trust that automated refactoring program.
This chapter provides you with the opportunity to flex your C++ muscles by critiquing a piece of code. Can you find a better way to optimize this code for idiomatic usage? Find out in this challenge from Herb Sutter.
Pyrex is a language specially designed for writing Python extension modules. According to the Pyrex Web site, "It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python and the messy, low-level world of C." Almost any piece of Python code is also valid Pyrex code, but you can add optional static type declarations to Pyrex code, making the declared objects run at C speed.
Testing code isn't the easiest thing in the world, and it gets even more complicated when working with legacy code. This chapter explains the theory behind modular coding and how testing can be difficult in this environment.
Just knowing an object-oriented language isn't enough to create object systems. You also have to learn to "think in objects." This chapter explains why it's important to understand what it means to truly be "object-oriented" and how you can build your business by using object-orientation from top to bottom.
The Ruby community is abuzz about Rails, a web application framework that makes database-backed apps dead simple. What's the fuss? Is it worth the hype? Curt Hibbs shows off Rails, building a simple application that even non-Rubyists can follow.
In the early days of programming, non-reentrancy was not a threat to programmers; functions did not have concurrent access and there were no interrupts. In many older implementations of the C language, functions were expected to work in an environment of single-threaded processes. Now, however, concurrent programming is common practice, and you need to be aware of the pitfalls.
Has the Object-Oriented Programming been hyped too much, or do we suffer from the OO paradigms exposed in languages such as C++, Java, C#? How about languages that support features such as prototyping and/or multi-dispatch?
The old adage, "If it ain't broke, don't fix it," doesn't necessarily apply in the case of technology. Projects continually require alterations, updates, and enhancements. This chapter outlines the nature of code change, and suggests some of the challenges to be faced when making these changes.
Shared libraries use version numbers to allow for upgrades to the libraries used by applications while preserving compatibility for older applications. This article reviews what's really going on under the book jacket and why there are so many symbolic links in /usr/lib on a normal Linux system.
As 64-bit PowerPC processors become more widely available, it becomes desirable to make applications run in the 64-bit computation mode, providing access to larger address space and faster 64-bit arithmetic. This excerpt from a longer Technical Library article covers some of the issues faced when porting existing 32-bit code to the new computing model -- or when embarking on new 64-bit development.
Eugene Blanchard made his Introduction to Data Communications (also known as Introduction to Networking) available for free. The book covers a broad variety of topics such as RS-232, Ethernet, RF, TCP/IP and many other topics in its 63 chapters. This is a valuable reference and read for those just starting to understand networking and data communications as well as seasoned professionals in the field.
Kerneltrap has a discussion on the proposed patches to Linux kernel which enables Linux to use genetic algorithm for use in CPU and IO schedulers. Genetic algorthims are self optimising over time for particular kinds of workloads and this could be one way of smarter kinds of scheduling. An interesting idea though it yet remains to be seen what would turn up
With Gambas, you can quickly design your program GUI, access MySQL or PostgreSQL databases, pilot KDE applications with DCOP, translate your Basic program into many languages, create network applications easily, and so on...
Red Hat developer Christopher Blizzard, who maintains the Mozilla packages, has a rather extensive blog on the plans for Open Sourcing Netscape servers that Red Hat recently brought out from AOL. Another interesting Blog is on Evince, a new document viewer to replace GPDF and Gnome Ghostview by Redhat developer Bryan Clark.