Saturday, January 22, 2005

Simplicity Revisited

In my last post I explained that classic BASIC was implemented as an exploratory programming environment. It occurred to me that my earlier post about simplicity touches on an extremely important aspect of BASIC's exploratory qualities.

List most software today, programming tools do 101+ things. This reminds me of a Nova documentary I saw about jet fighter planes. The cockpit of a modern jet fighter has more dials than a clock store and more buttons than a sewing shop. The documentary explained was that these were all there so that the pilot would be able to do lots of useful things. As it turns out, not many of the things in the cockpit are useful for flying an airplane in combat.

As an exploratory programming language, early BASIC was simple to learn. There was no GUI. Windows, icons and other graphical features do not always improve software (although they can). There were only a few commands and ideas that you needed to learn. Was this enough? Maybe not, but its simplicity is one of the essential concepts that made it successful.

"Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away." --- Antoine de St. Exupery, Wind, Sand, and Stars, 1939

2 comments:

Carl Gundel said...

I'll comment on my own post by saying that I'm not suggesting that we abandon a graphical IDE and go back to simple command line tools (but these are also good to have). I am just trying to make a point about the value of simplicity.

Rogue said...

Ahmen! i am scared to death by C++, and VB is annoyly complex. I love liberty/just basic. and i do two things mostly in basic, make games and make DB/business programs.i was wondering, even in basic, alot of the commands have options i don't use or require me to use round about ways to do simple things. makeing me put 12 lines of code that would normally be just 1 or 2 lines if it was customized to the Type of project i'm doing. well, it would be nice if i could take the same flavor of basic, liberty for example, and when i want to make a new project it give me an option to load up "dialects". these dialects would alter the configurations on the commands so that it would be more tailored to my project. like a game wouldn't need as much math functions as it would need graphics. or a sciencetific program wouldn't need internet abilities as much as it would need mathmatics. each would have its own "slang" so to speak of each kind. and you might be able to create secoundary dialects that build upon the main dialects. Sub-dialects, like a chemistry sub-dialect based on the mathmatical main dialect, or a chat dialect based on the internet dialect, even a platform sub based on the game dialect, make application would be come simpler without lossing much of what is needed. although it could be said that functions or sub-routines do just that, yet, haveing to write my own sub-routines take even more time. but would be nice. that my own idea.