eductionism is an ongoing attempt to explain complex ideas in terms of a relatively few simple or primitive ones. As such, reductionism is the heart of programming. Over the past few years, there's been a huge increase in the amount of reusable code conveniently available to developers, primarily because both Java and .NET package large blocks of functionality into their respective platforms. In other words, both platforms reduce the amount of code that a programmer must write to accomplish a task.
Characters, Strings, and Words
Take something as simple as a string. A string is nothing but an array of characters.
Of course to a computer, these "characters" are just numbers. Without going into the complexities involved in translating a particular number to a particular character, it's been relatively easy to teach the computer the concept
of character. That is, "characterness," to a computer, is nothing more than a particular interpretation of the "meaning" of a number.
But the computer's connection to human language stops at this primitive character level. When told to treat the byte sequence above as a string, the computer easily translates it to a series of characters; however, to humans, the string is also a sequence of "words." Unfortunately, it's much more difficult to teach a computer the concept of "word" than of "character," because words don't fit neatly into bits and bytes. Sure, you can teach a computer that a word is a string of characters delimited by white space or punctuation, but the computer has no concept of words as discretely important by themselves. People though, insist on seeing strings as collections of words.
|Java and .NET are strikingly similar in many ways, which may mean that reductionism in programming inevitably tends to produce similar results.|
Over the years, countless thousands of programmers have written code countless thousands of times to take a string and split it into individual words, or to search within a string for a word, or insert a word, remove a word, check the spelling of a word, reverse a word, capitalize it, lower-case it, compress it, squeeze it, translate it, randomize it, turn it into a number, a date, a time, a symbol, a path, or a filenameand each and every one of those programmers had to learn how to deal with the string as...words.
Although it's long overdue, the gods of platform design have finally realized that by including concepts such as "words" as fundamental capabilities of the platforms themselves, they could make programming a good deal easier for everyone. And that's what we're seeing today. Reductionism. Taking common tasks such as "split a string into words" and putting functionality to accomplish them directly into the platform. It's not a new concept, but the fact that it's becoming ubiquitously available in the most common platforms is new.
Java and .NET now handle such things natively. As the level of capability between languages (or platforms) grows toward equivalency, the platforms themselves tend to become more and more alike. Java and .NET are strikingly similar in many ways, which may mean that reductionism in programming inevitably tends to produce similar results. Whether that's true or not, it brings up this question: Does the fact that the two platforms are so similar indicate that we're reaching the pinnacle of the reductionist process? I thinkno, I fervently hopethat it's simply a plateau at which language designers have gathered in preparation for the next surge of reductionism.