Visual Basic

What I have learnt

Variables

Visual Basic is both softly and hard typed. The type of variable can change throughout the code if the type of variable is declared as such. This is similar to Objective-C (horrible language, don't even google it), in which you can define a variable as type "id". This basically means that it's type is declared at run-time, so can be quite useful. You can use the "Dim ... As <type>" to declare the type. These variables can have access modifiers, which enable encapsulation.

Classes

Visual Basic supports OOP! As it appears, you can define classes, inherit, encapsulate in these classes and has polymorphism. All four features of an OOP language! This will make it much easier, as this is a useful mindset to be in when moving on to harder languages, as I'm sure at least most of the class will eventually do. There is interfaces (abstract classes in Java), which you can inherit from, but not instantiate, and overwrite it's members/methods (OOP terms here). Instantiation seems to be done automatically when you define a variable as the type of the class you created. Also, no constructor (or deconstructor if you're familiar with C++), but could easily be done with an init method in the class definition.

Arrays

Visual Basic seems to have a more sensible version of arrays, something that may be more useful than it is hassle. Also, Visual Basic seems to have support for multi-dimensional arrays. This, again, enables much more complex programs, and alongside OOP, will make this language more interesting than Small Basic.

Functions

Visual Basic has something that actually resembles a function, rather than a parameter-less "Sub". Also, as Visual Basic is mostly hard typed, return type is defined. Also, it has an implements value (override) which is part of the inheritance system in Visual Basic. And, the return statement is back (in Python). None of that peculiar business with "Stack.push" and "Stack.pop" in Small Basic.

Overveiw

Overall, Visual Basic appears to be the much needed step-up from Small Basic. This will teach the class applicable practices, including OOP, etc. This, I think, will enable the class to move onto different languages in their own time after learning Visual Basic, such as Java, or others. A useful stepping-stone, although I don't know how applicable the actual language knowledge will be, the generic programming knowledge will be very useful indeed.