This project is based on the premise that just as natural
languages anchor human thought, programming languages anchor
our understanding of the world of computing. So if you want
to understand the potential and the limitations of the smart
systems of the future, you must first come to terms with the
basic vocabulary of such systems. Although there are many
levels of abstraction in this vocabulary, at its base it is
rooted in the nouns, the verbs, and the other qualifiers of
the programming languages.
So back around 1997 I set out to create a trilogy on programming with objects. The first two volumes, Programming with Objects and Scripting with Objects, have been out for some time and are currently being used in several educational programs around the world. By comparing the programming idioms in closely related languages, and, at the same time, by teaching how to program in each language, these two books present a multi-dimensional perspective on object-oriented programming and scripting. I firmly believe that, for those readers who are of a serious bent of mind, a comparative presentation of similar yet different programming languages is far more conducive to developing deep insights into the programming syntax than the more traditional one-language-at-a-time style of learning. Additionally, we now live in a world of multi-language computing. Even the simplest of applications may require programming to be carried out in two or more languages. So we might as well get used to learning multiple languages simultaneously. The writing for the third book of the trilogy, Designing with Objects, was finished in December 2013 and the book was released by Wiley on January 20, 2015. Different from any you'd have seen in software engineering, this book is an offbeat attempt at explaining the design patterns with the help of short-story snippets drawn from Harry Potter. The code that is used to explain the patterns emulates the interactions between the various characters in the stories. I believe that this is a more interesting approach to explaining the patterns, particularly so the more complex patterns, than the sterile approaches out there that give meaningless names to classes and their roles, or the approaches in which the names and the roles assigned to classes are based on some engineering application that the reader may have zero interest in. If you have any questions about the trilogy, please send them to me at kak@purdue.edu with "objects trilogy project" in the subject line to get past my otherwise tight spam filter. Avi Kak |