An idea I had for an early blog post is to summarize what languages and coding exercises I’ve done up to this point as well as my opinions on each one. I’ll be able to come back to this after more languages to compare my competency. For those starting to code it will also provide advice for which to learn for different goals.
Age: ~ 12
This is my earliest coding experience I can remember. Scratch is a drag and drop language, with focus on visual elements which make it very easy to make simple games. I started to make frogger , a maze game even a shoddy attempt at Mario (I got basic scrolling to work!). The main focus of scratch is to educate younger children in the basics of computer logic and to get them interested.
Good points: Beginners, simplicity, quick to see visual results
Weaknesses: Extremely limited, no coding learnt, no best practices.
Use for: Introduction to programming, teaching, immediate visuals.
First proper language I was exposed to. My Dad got a copy of visual studio from being a developer and I used an introduction to C# book to work through. It was here that I learnt the basics: I’d learnt some basic loops and if/else but this showed me how to do this properly. I think the best thing about this was I learnt the concept of objects very early. The book, despite being very informal, went into detail about class specific ideas: object instances, abstraction, polymorphism and interfaces. The GUI also helped; I had a ready made window that I could drag and drop pictures onto, before using C# to make them do things. This avoided some of the messier back end jobs.
I did a fair few projects on C#. I made the start of a space/planets resource management game, where you could harvest and trade resources from different planets. I also made a dungeon crawler engine which allowed me to experiment with tiles and collision detection
Good points: Visual studio IDE provides easy drag and drop on forms, easy to create quick applications with GUI, Object Orientated
Weaknesses: Limited cross compatability, specific language, not used extensively
Use for: Windows Applications
Setup: Microsoft Visual Studio
Age: ~ 16
Some friends of mine started learning programming at this point. This was late GCSEs early sixth form. They chose Java for its multi platform capabilities and the fact it was possible to get very good free IDEs. Not wanting to miss out, I moved my attention to Java. This was actually surprisingly easy as both are OO languages with fairly similar syntax. I think this is common in coding; your programming skills develop independent of what language you code in and the rest just comes down to syntax of the code itself. I guess the main difference was no more completely easy GUI, everything needed to be coded. However this was still fairly easy as there were an abundance of packages to support this.
I think the best thing about this time period was having friends doing the same thing. This meant it was possible to bounce ideas off each other and to discuss problems. I also remember having a week coding competition, where I actually learnt a huge amount just due to the competitiveness. I definitely recommend learning to program with friends just from a motivation stand point.
Like with most languages, I went through the mixed bag of doing whatever I wanted to learn the language. Again, this was mostly games. The first proper game I remember was off the back of the competition, which was a space invader type shooter, with enemies spawning at random points. This was the first time I remember having to manage and iterate array lists and I used some class stuff I learnt from C#. Other projects included the engine of yet another maze type game where I was able to implement scrolling tiles in all directions, as well as rendering a map from a floor plan. I also made (and actually finished!) a stock / fund management game where you bought and sold fruit, with events that effected the price of particular fruits. I have no idea what crazy complicated algorithm was the final one that ended up dictating the prices though. My most recent project in Java was when I returned to it and coded blackjack in a night at university when I was bored.
Good points: Common language with a bunch of free tutorials and development software. Works on many platforms
Weaknesses: Can be needlessly complicated at times (a lot of historic things making it hard to follow and pick up straight away)
Use for: General purpose coding, learning an OO language, games
Setup: Eclipse IDE
I was first introduced to it during a data manipulation course. It required it to model a random forest. It was also used in statistics modules during university, where it was required for maths coursework.
Whilst I think that it’s got a bit funky syntax in places it’s a really great statistical specific language. Statistical manipulation and results are a breeze and it’s nice and open source opening up a bunch of packages and documentation. I also used it at my time at Lloyds Banking Group for modelling purposes (mainly random forests) and experimenting with local outlier factors.
Good points: Makes statistical manipulation very easy, nice and open source/ free license, many packages and active community
Weaknesses: Limited capabilities to statistics and modelling, strange R specific syntax at times
Use for: Statistics and modelling
Setup used: RStudio
I’ll come out and say I think Python is great. I have been aware of Python for some time; since I was midway through learning Java. I’ve dipped in and out learning bits and pieces but never really fully made the effort to learn the ins and outs until fairly recently. There was a bit of Python in a data course I took analysing twitter feed data. I also downloaded general tutorials to my phone to get up to speed. I then recently took the decision to fully set my mind on learning it as part of my Binary Options project (see blog post). My Python wasn’t good enough to do this straight away so I’ve been finding mini projects to do e.g Hangman, guessing numbers. Naughts and crosses also completed, which sparked a blog post as to how to code up unbeatable AI.
In short, Python removes a lot of the clunky boring stuff from the older languages and let’s you just focus on the important stuff. This along with an active community, free open source packages and excellent IDEs makes me really like Python
Good points: Simplicity, elegance. Good language to start learning. Free resources. Good for prototypes, experiments and indie games.
Weaknesses: Slightly higher level. No assigning of data types beforehand.
Use for: General purpose coding, learning coding
I was introduced to MatLab as part of a maths computing course. Can’t say I was ever overly interested in the language. It seemed to have largely it’s own syntax with some things borrowed from here and there. The whole “matrix” computing thing was fine, I just knew that I wouldn’t be learning it as it’s not common place enough. I did however, like most languages, find it fairly easy to pick up, with standard computer logic but it’s own syntax. I didn’t really program enough in it to provide strengths and weaknesses.
SAS was my first proper data manipulation language, where the main goal is to make datasets and tables with large amounts of data for data mining or modelling purposes.
In my mind, SAS is like a sand pit with sand as the data. It is incredibly easy to shove data around, make sand castles and split them up here and there. It is also fairly easy to pick up the basics.
However, you’d need very specific tools and functions to do all of this. SAS works all in inbuilt functions. Most joining, merging, summarising and creating data has been thought about and so is very easy. But let’s say I wanted to make a sand bridge. Oh dear. My bucket and spade aren’t really flexible enough for me to do this and that’s one thing I don’t like about SAS. It puts all its complexity into its functions to make it “easy” and “frontend” for the user, but loses its flexibility.
It also seems to me like the people at SAS will just strap on extra functions to keep SAS up to date. Fairly recently random forest logic has been implemented, with another function. No chance of anyone managing to do this with functionality before this time. What you end up with is a super charged potato that becomes difficult to learn all the features and functions of and becomes needlessly complicated.The one redeemable feature is that it allows basic SAL code (see below).
I used SAS extensively throughout my time at Lloyds for analytics, manipulation, modelling and reporting using SAS Enterprise Guide.
Finally, I won’t say exactly what I think about SAS but um, let’s just say their software is usually not exactly free especially in corporate environments. There is however a convoluted way to get a free university installation, using a virtual machine and a Web browser which I used to learn SAS before placement and the occasional data stuff.
Good points: Easy data manipulation
Weaknesses: Little flexibility, steep learning curve for complex operations
Use for: Data manipulation
Set up: SAS University Edition
This is a data manipulation language, and so you’d look to do similar things to SAS with it, although you don’t really look to make datasets in the same way as SAS, more querying big tables for reporting purposes. I picked up on some SQL at Lloyds, where it was possible to switch into a basic form of SQL during coding SAS. We also had a data warehouse that required Teradata which was accessed with SQL (mySQL I think).
I then made the conscious decision to focus on it recently to complete the binary options project and also because some potential jobs after university would heavily use SQL. The beauty of SQL is it is logical and standard: it does the job. You are offered the building blocks for most manipulations required of relational algebra and it does it, all very efficiently too. There is also the flexibility of manipulations that SAS just doesn’t quite seem to get right.
Good points: Used extensively, easy syntax
Use for: Large scale database solutions, data manipulation
Setup: SQL server, Microsoft express edition