Hello, dude! I’m writing this for a bunch of reasons. The first thing I want to do is to apologize for my awful drawings on the pages. After, I believe you may expect this to be series of concise articles for begginers, such as Learn You a Haskell for Great Good or Learn You Some Erlang for Great Good. The main reason that guides me to this is that the amount of content about Smalltalk is small and it is very hard to find solutions for common problems on the Internet. These articles mean to provide helpful content for begginers and make it easy to somebody to learn pure object orientation and have a good domain on Smalltalk. For sure, this isn’t meant to be the supreme source source of wisdom over Smalltalk, because you can’t learn it all about a programming from a single resource (with some exceptions, for sure). I also hope to improve my knowledge about Smalltalk and object orientation in essence, because one of the best ways to learn is to teach.

Ok, but, for whom is this tutorial made? Well, this has been made for everybody who wants to learn programming or wants to learn the real object orientation concepts. You don’t need to have previous knowledge in programming to learn Smalltalk. It is trivial! When you see how simple it can be, you may be able to really learn other programming languages that bel ongs to the same paradigm, since Self up to Ruby, where there are a lot of stuff in common! Unfortunately, at this point, there is no much way where you can settle your doubts. Don’t hesitate to contact me if you are stuck. StackOverflow may also be a good data source.

### What in the world is Smalltalk?

Smalltalk is a purely object oriented programming language, dynamic typed and reflective. But, what in the world does all this mean? Keep calm, we’ll reach there. First, let’s go back to Smalltalk origins. Smalltalk was created in order to abstract the real world programming, with great part in educational uses. it arose in the Learning Research Group of Xerox, on 70s. The main responsible by the geral concept has been Alan Kay, whom created the definition of object orientation, which was misrepresented in the current days. The first release of Smalltalk was Smalltalk-80, and several modern languages were influenced by it, such as Objective-C, PHP, Dylan, Scala, Ruby, Python, Io and also indirectly Java!

Although the first general release was Smalltalk-80, the language is older. As the product of the research of Alan Kay, at Xerox, arose Smalltalk-71, and it was created surprisingly ina few mornings while trying to create a programming language based on the simple idea of message passing, inspired by Simula, and that could be implemented, in a generic way, in one single page of code. A later version, Smalltalk-72, was influenced by more advanced concepts, such as Actor model. The syntax has changed a lot since that, and modern Smalltalk is very different from the first version. As Smalltalk-76, happened significative revisions, keeping the grammar a bit more similar with what we have today, and with a great performance optimization. This version included a whole branch of tools, such as a code browser and editor. The most known version of Smalltalk, called Smalltalk-80, added support for metaclasses. You may be confused now, but later this all will make sense to you. With this, everything was kept as an object (unfortunately, except for private instance variables, dah!), and the object orientation paradigm started to grow, with base on association of properties and behaviors with a class-based system.

In Smalltalk, even primitives, such as integers, strings and booleans, are objects! It is a bit different from most of the modern programming languages. There are no common structures, such as if, while or for, neither operators per se. Everything happens by message passing! We’ll dive into this concept soon, calm down, dude!