Wednesday, February 28, 2007

Why this blog?

The idea for this blog started when I had problems understanding the concept of closure. I came across closure in Chapter 6.1 of Programming in Lua. Lua is the scripting language for the animation program Anime Studio (see my other blogs: Anime Studio Lua Scripting and I want to draw animation).

Anyway, I couldn't understand the concept, and because it came from functional programming, I thought, why not learn that as well? One thing lead to the other, and I found an excellent tutorial on functional programming in How to Design Programs, which uses the programming environment DrScheme. DrScheme is a sandboxed version of Scheme, which has several skill levels, exposing only those features of the language you are supposed to be able to digest at that moment; other features are simply invalid and throw an error message.

I also came across the Wikipedia article on Programming Language, which states:

Although there have been attempts to design one "universal" computer language that serves all purposes, all of them have failed to be accepted in this role. The need for diverse computer languages arises from the diversity of contexts in which languages are used:

  • Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of programmers.
  • Programmers range in expertise from novices who need simplicity above all else, to experts who may be comfortable with considerable complexity.
  • Programs must balance speed, size, and simplicity on systems ranging from microcontrollers to supercomputers.
  • Programs may be written once and not change for generations, or they may undergo nearly constant modification.
  • Finally, programmers may simply differ in their tastes: they may be accustomed to discussing problems and expressing them in a particular language.

One common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction. The earliest programming languages were tied very closely to the underlying hardware of the computer. As new programming languages have developed, features have been added that let programmers express ideas that are more removed from simple translation into underlying hardware instructions. Because programmers are less tied to the needs of the computer, their programs can do more computing with less effort from the programmer. This lets them write more programs in the same amount of time.

In my humble opinion this means that to write good programs, you need to use the appropriate language for the situation, and possibly a mix of computer languages. Because trying to learn several programming languages isn't done in a week, I thought keeping a blog would keep me motivated enough to succeed in this mission.

"What mission," you say?
I want to write programs,
computer language programs.

No comments: