Surviving Second Year · Learn a new language

Submitted by co60ca on Wed, 06/29/2016 - 14:41

Some of the people in our department will disagree with some of my decisions here but I'm choosing these based on platform independence, wide spread use, and potential. The idea of this section is to get you into self learning in computer science. Self learning is probably one of the fundamental concepts in industry. With the competition among top performers in industry if you do not learn to self learn but still get good grades you will probably do well, but if you really want to be the best of the best you need to self learn.

Java - "Hey wait! Weren't you going to talk about other programming languages?" Well, yes, but maybe we should sneak some Java tips in too. There are many popular frameworks that let you write applications in Java that are current for industry. The most important frameworks you can learn are Spring which is a Model View Controller (MVC) framework for Java and J2EE which is more of a spec for enterprise applications written in Java. J2EE is often used for web development as well. Finally, start using external libraries in Java, The Apache foundations Apache commons libraries will perform most non business logic code you need. Some of note are their Math libraries and Net (networking) utilities.

Javascript - Potentially my least favourite language, interestingly enough it is probably the most commonly used language of all time today. A huge reason it has become more popular in the last few years is that server side javascript has become a staple to the internet. Before the invention of node.js javascript was only client side, and we used javascript only to do client side interactions with browser apis and manipulating the appearance of the DOM (aka site itself). Now it is possible to write server side, database interaction capable, applications completely in javascript. This has advantages in that web application development can be written completely in javascript or even full desktop applications.

The best place to get information on javascript is the dozens of tutorials online, there are also defacto standard books like "JavaScript: The Good Parts" by Douglas Crockford.

C++ and C - Some of the most daunting programming languages that you can use. Additionally C++ was used in COSC 4F00 to demonstrate that you could learn a new language on your own. This section reflects my experiences. C++ and C are both system languages, meaning they interact with they often are used for the parts of a operating system that interact with hardware. C++ is more like Java in that has Object Oriented facilities but unlike Java C++ and C requires manual memory management. They also compile to binary files, meaning we do not need to install a runtime on our computer to run the application unlike Java, C and Python. A lot of staple software used on computers in modern life are written in C++, Google Chrome, Firefox and Internet Explorer. Most programs written for Windows and GNU/Linux are either C++ or C. All performance web servers are written in C++ or C.

There are many books on C++ and C but I would recommend "C++ Primer Plus" for C++ and "The C Programming Language" by K&R. I choose C++ Primer Plus over "The C++ Programming Language" only due to personal experience with the book. "The C++ Programming Language" by Bjarne Stroustrup, the inventor of C++, may not be the best for learning the language, but as a follow up. "The C Programming Language" by Brian W. Kernighan and Dennis Ritchie is the defacto standard for C because and you will often hear it be called "K&R C". Dennis Ritchie is the creator of C and therefor it is logical that you would want to read the book written in part by him.

Python - Python is a programming language for hackers, it is a interpreted, dynamic typed language for general-purposes. It has many of the language features of Java such as the extensive standard library and is intended to be used to write highly expressive code, meaning useful code in less lines. Python is generally the language of utilities, I've personally built bots that interact with Twitter in less than 80 lines in Python by using its massive community backing which release open source libraries for all to enjoy. I would suggest reading the python beginners guide: https://wiki.python.org/moin/BeginnersGuide

However be forewarned there are two dialects of Python that conflict. Python 2.x is an older version of Python that retains a large portion of external libraries for Python. Many important libraries use Python 2.7 and do not utilize the newer Python 3.x. This is, in my opinion, a huge problem with Python as the language is not growing due to this divide between the two versions of Python used in industry.

The Go Programming Language - A fairly new language by Google which takes some of the best parts of some of the languages listed here and pushes them together with their own twist. Go focuses on concurrency, type safety and automatic memory management to name a few. Go doesn't have objects per say, but has a type system that lets you apply methods to types and interfaces to allow for writing of polymorphic code. The biggest public project written in Go is likely docker. Go is also compiled, but embeds its very small runtime in the binary created allowing for automatically memory management and the Go routines that the language uses for concurrency (lightweight threads.)

If you wanna learn Go, go to https://golang.org/ and run through the interactive "A Tour of Go" and "Effective Go" then continue from there. Go was created in 2009, so it is a little bit too early to assert there is anything defacto standard about it, but there is a concept of idiomatic Go code.