Specs and Docs
> Bento Home > Overview > Why Bento is a good bet


The Difficulty of Success

Many computer languages have been invented over the years, yet a mere handful account for almost all programs in use. It is evidently very difficult for a new computer language to take root. The reasons why are clear.

For a language to succeed, just being a good language is not enough. Languages are hard and timeconsuming to learn, especially new languages, bereft of a body experience and well-tested code. Few programmers will take the trouble and face the risk, unless the language offers a significant advantage over the ones they already know.

Simply having more features than another language is not in and of itself an advantage. Computer science shows us that it only takes a small number of features (memory, simple logic and basic input-output) to be able to perform any possible function. Once these core requirements are met, new features can only improve on the way tasks are handled — reduce the cost or increase the benefit (by supporting more platforms, more data formats, bigger capacity, etc.). Again, only a small number of features are needed to optimize the most common tasks scoped broadly enough for most users. So before long the law of diminishing returns sets in: the cost of each additional feature (extra effort required to learn the language or implement it) tends to stay constant or rise, while the benefit tends to accrue to an ever smaller proportion of tasks and users.

Natural Fit

More important than the number of features of a language (its "power" as commonly understood) is the configuration of features: how closeley does a language's particular feature set correspond to the kinds of tasks its users aim to accomplish? If the language is more of a "natural fit" than the alternatives it stands a very good chance of being put to use.

Not surprisingly, the most widely used languages are the ones that are a natural fit for the most widely faced tasks. And the task faced most widely by programmers is programming itself. Every language embodies a paradigm of programming, evident in the shape of programs rather than their effect: How are programs organized? What are the building blocks, and what are the rules for putting them together? No wonder that the history of programming languages, at the broadest level, is a history of paradigm shifts.

The Paradigm Parade

In 1954 FORTRAN introduced the paradigm of high level languages, which freed programs from their dependence on a specific piece of hardware under specific circumstances. Software could now be shared, stored, run on different machines, and understood by someone other than the author.

Ten years later, BASIC introduced the concept of an interpreted language, and with it the ability to program interactively, in real time. This greatly lowered the cost of making mistakes, which opened up programming to hobbyists and students, a market BASIC and its offshoots have dominated ever since.

Edsger Dijkstra's 1968 paper Go To Statement Considered Harmful heralded the beginning of the next paradigm shift, to structured programming. The C programming language, born in 1973, was not the first based on the new paradigm, but it was the first to go break out of the academic world and into wide commercial use. It did this by combining a very simple set of features and a concise but expressive syntax with an organizational model which closely paralleled the architecture of computers. This made it a convenient language for interfacing with hardware and writing low-level logic without detracting from its usefulness as a higher level language. It soon became the favorite language of systems programmers.

Over the next several years, C spread from operating systems to applications of every kind, becoming the predominant language in commercial software development. Then, in 1985, Bjarne Stroustup's The C++ Programming Language was published. The object-oriented paradigm proved irresistable to programmers, and by the mid-90's most C programmers had become C++ programmers.

The shift from C to C++ makes a convincing case for the power of paradigm, since there is little else that differentiates the two languages. You can write object-oriented software in C, but that's not the natural way to program in that language. C++ is C with object-oriented features added, making object-oriented programming the natural way to program in that language. Just a handful of new features, yet it was enough to allow C++ to supplant C as the workhorse language of the software industry.

Meanwhile, in the Presentation Layer

The programming languages described above are general purpose procedural languages. They are designed to implement specify the logic of an application. Another class of languages are those that specify presentation. Here again, language shifts follow paradigm shifts. HTML bacame the most successful presentation language of all time by combining a document paradigm, markup, and an interaction paradigm, hypertext, into one very simple and particularly easy-to-use language.

In the last few years, page definition languages such as PHP and JSP have extended the markup paradigm to accomodate dynamic content, by providing ways to embed logic in markup. This approach is effective but also expensive. The markup and the logic may share the same file but they follow distinct paradigms, the result of separate authoring approaches, and, more often than not, separate authors.

Enter Bento

Bento achieves a new synthesis of markup and logic in a very simple way: by adopting the object-oriented paradigm for markup. This does more than just bestow onto the markup the benefits of doing things an object-oriented way, substantial though they may be. Sharing the same paradigm also makes it possible to share the same organization, resulting in seamless and unified page definitions. The knowledge required to create and maintain page definitions is actually reduced, and the chance greatly increases that the necessary skills might be found in a single person.

By offering web developers a new yet proven paradigm, Bento offers a compelling reason to invest in learning the language. It helps as well that Bento shares the simplicity, conciseness and expressiveness of a language like C. To top it off, Bento is an innovative language with several new and unique features (multiple bracket types, descending construction and Bento's dynamic array syntax, to name a few).

On to Bento in a Nutshell.
Back to Overview.


Copyright © 2002 by All rights reserved.