Tuesday, January 28, 2014

Software Engineering and My Experience with Ruby

     It seems to me that when trying to get a degree in Computer Science there has never been a class or even a lecture that clearly outlines exactly what it is you can do with this degree.  Professors always seem to make a distinction between programming and Computer Science.   It seems that coding is always used as a tool for students to understand the concept they are trying to cover.  All this made me wonder what exactly is Software Engineering and how does it differ from Computer Science.  I started searching Google for articles that outlined Software Engineering but none of them captured my interest enough for me to complete the entire article so I turned to Youtube for some assistance.  I stumbled upon with this video made by a 5th year Software Engineering student who currently works at Apple.
     I really enjoyed this video not only because it was made fairly recently but because he clearly stated exactly what the difference was between Software Engineering and Computer Science.  SE being the application in real world situations and Computer Science is really getting into the nitty gritty of how it all goes down.  It's kind of a relief that creating software isn't all coding (not that I don't like it) and that it's a team effort that takes good communication with your team members to create a great finished product.

     Since I've used CodeAcademy in a previous course of Sam Joseph I won't cover how much I enjoyed it or didn't enjoy it.  Any free resource that could potentially help me learn something is worth a try.  Instead I'll get right down to Ruby and how it compares with other programming languages I've encountered since starting this degree.
     Last semester I took Game Programming and Design where I was exposed to my first scripting language, JavaScript.  I really enjoyed how easy it was to use and how explicit everything was.  I think Ruby is even easier to use than JavaScript because it really does read like English.  Yukihiro Matsumoto really had the programming in mind when her created this language.  When using loops 10.times do puts "Something" prints Something 10 times.  When compared to compiled languages like Java it is no contest.  Who wants to execute a for loop or create a condition for a while when they can directly say do this 10 times?  Another great thing about Ruby is how it takes input from the user.  In this way JavaScript and Ruby are pretty similar.  Ruby uses gets and JavaScript uses prompt but if I were to use Java I would have to create a Scanner instance and a separate variable to hold the proper input and if it is incorrect it would throw an exception.  What a headache!  Both Ruby and JavaScript allow you to change variables from integers to Strings without worry.  In Java every variable has a specific type, in JavaScript everything is a var, but in Ruby there are not any primitives!
     I also Googled a bit about Ruby and found a video interview of the creator of Ruby,Yukihiro "Matz" Matsumoto, and a strange online book that introduced to Ruby. Check them out if you get the chance!