Tuesday, September 27, 2016

Programming Languages to Learn

Programming Languages to Learn

My first programming language was assembly for the Motorola 6800.  I remember most of the commands with the different addressing modes (Immediate, Direct, Index, Extended, Inherent) and the different registers.



I understand bit’s and byte’s.  I also know several programming languages and wonder if I should learn another language or increase my expertise with the ones that I know.  What are the best programming languages to know?

IT-Skills-Watch gives me an idea of what I should learn and because it is updated monthly I can keep track over time what I should evaluate and learn.  The Top 20 Development Skills shows programming languages, and the Top 40 IT skills shows the applications to watch. 


Beginners and experts know that there are many factors that should be taken into account while deciding what to learn.  Different Fields will require different technologies and with the rate technology evolves, by the time you become an expert it can already be considered obsolete.  There are ways to learn faster, and according to Josh Kaufman, you can learn anything in 20 hours.

Languages vary in terms of functionality and complexity. Each programming language strengths will help you with different types of tasks you want to perform.  Each grouping of task can be thought of as programming “tracks” or “developer paths”.   

C
C#
C++
Objective C
Java
PHP
SQL
Ruby
Python
Javascript
Game Programmer
x
x
x

x





Mobile App Developer



x
x





Web Developer

x


x
x
x
x
x
x
Software Developer
x

x

x

x

x


In addition to programming Tracks, the Genealogy of Language can also guide your path as each language is influenced by other languages.  If you know Perl, then Learning Python, Ruby and PHP become easier. Perl’s creation is influenced by C, AWK, csh and the next generation of Perl, Perl-5 was influenced by C++.  C, Perl and Python are close enough that if you know one, then learning the others will be easier. And of course, you will want to have a book to read, so Free Programming Ebooks.

The top languages to learn was influence by IT-Skills-Watch.

1. Java was developed by James Gosling, in 1990 at Sun Microsystems. Java is an object oriented programming language. A Java core principle is WORA (Write Once Run Anywhere). Java is designed to be portable. You compile Java Source code and then on any machine where JVM (Java Virtual Machine) is installed, you can run that code no matter what OS or Hardware it is on.

Java should be learned by every programmer. Learn Java at UdemyLearn java online. Learn Java on Youtube (do not forget to use Filters = Long (> 20 minutes) ).

2. Python is extensible and has a small core language.  Guido van Rossum, being a fan Monty Python named the language Python. In the ‘Zen of Python’ there are 20 software principles the influence the design of python. For example;
·         Beautiful is better than ugly
·         Explicit is better than implicit
·         Simple is better than complex
·         Complex is better than complicated
·         Readability counts
Python may owe its surge in popularity to Google’s investment in the language in the last 10 years.  Some web sites that currently operate using python include pinterest.com, instagram.com, and rdio.com.  Python and PHP have associated web frameworks to make it more convenient to develop web based applications. Learn Python on Udemy. Learn Python on Codecademy. Learn Python the Hard Way.

3. C is a good programming language to learn (learn C at Udemy), specifically for the beginners who are intending for a programming career in the long run.  This language was created in 1972 by Dennis Ritchie at Bell labs. C is used to develop low level applications and program embedded systems.  C is fast because it doesn’t have support for garbage collection, dynamic typing and other facilities which make it easier for the programmer to write programs but the additional processing overhead degrades performance.  There are many resources you can use to Learn C which can be found with google.

3. C++ is widely used and in high demand in the job market. The C language performs extremely well but it lacks object orientation (OO). In 1983 C was extended to include object orientation. This extension is C++. “Most packaged software is written in C++. That means games, office applications, graphics and video editors, and operating systems. In fact, if you think of the software you use every day that isn't online, chances are it is written in C++ (or C or objective-C). It's not written in Java, Python, Ruby, Perl, etc”((ref))

There are many resources you can use to Learn C++ which can be found with google. Learn C++ at UdemyLearn C++ for free.

3. C# (pronounced "C sharp") was developed in 2000 by Microsoft as part of its family of programming languages and is part of the .net framework.   C# is very similar to Java in terms of capabilities. C# is a pure Objective-Oriented language that combines the power and flexibility of C++ with the advanced features of Java.  If you know C#, you should be able to switch to Java and vice versa.

C# can be used to develop almost all types of software applications.  “If you don't already have C#, you can acquire a version of Visual Studio that includes C# for free from the Visual Studio site.” ((ref)) “The best GUI frameworks for Windows applications is Winforms and WPF together with .NET Framework. The best programming language to work with the .NET Framework and it's APIs is C#. Java is not an alternative for this. And C++ is an older language without automatic memory management.” ((ref))

The job market for C# programmers is good (see IT-Skills-Watch Top 20 Development Skills ). Start learning C# at Udemy.

3. Objective C was initially conceived of by Brad Cox and Tom Love, in 1983. Influenced by Smalltalk and intrigued by problems of re-usability in software design and programming they wanted a language that was backwards compatible with C.  In 1988  NeXT licensed Objective-C  and it has been used as a development platform for Apple based software applications.  


4. Perl was created by Lary Wall in 1987 and is in continual evolution.  Perl 5.000 was released in 1994. The interpreter was rewritten to add many new features including “objects, references, lexical (my) variables, and modules. Importantly, modules provided a mechanism for extending the language without modifying the interpreter. This allowed the core interpreter to stabilize, even as it enabled ordinary Perl programmers to add new language features.” ((ref))
Perl comes standard on my Unix Releases, and is freely available for download

Perl comes with a very active community, and large number of resources for learning Perl including tutorials from novice to advanced. Start learning Perl at Udemy.

5. JavaScript was created in 10 days in May 1995 by Brendan Eich.  JavaScript is a client side language and is one of the three core technologies of the World Wide Web alongside HTML and CSS.  JavaScript runs inside a client browser and process commands on client computer.  This decreased load on the Server and Increases Application Speed. JavaScript was designed by Netscape and many websites make use of JavaScript.


6. Ruby was created by Yukihiro Matsumoto in 1995 and was influenced by Perl, Smalltalk, Eiffel, Ada and Lisp.  Ruby was created to be an Object Oriented language.  It is also a dynamic, general-purpose and reflective language that supports imperative and functional programing paradigms along with being Object Oriented.  Similar to Python it is readable and has been used to create websites including Github, Scribd, Yammer, Shopify, and Groupon via Ruby on Rails.  Ruby is flexible to the point you can redefine the + instruction as “plus”.


7. PHP originally stood for “Personal Home Page, but now is a recursive acronym “PHP : Hypertext Preprocessor”.  PHP’s first incarnation was as a set of CGI (Common Gateway Interface) binaries but after in 1997 the was developed into a new independent programming language.  PHP is a server-side scripting language processed on the server and the end result is sent to the user of the website in the form of plain HTML.  PHP has a mature interface for APIs, protocols, and multiple databases and is also extensible which attracts developers who create and submit modules extending PHP itself. With thousands of already built in modules you can usually find the desired functionality or use one of the hundreds of PHP platforms such a WordPress, Drupal, Joomla for website development.  PHP is also an integral part of the famous LAMP (Linux Apache MySQL and PHP) platform and is one of the languages that every programmer should learn especially if they are looking for a Web Developer’s Career.

Start learning PHP at Udemy, w3schools, or at anyone of 50 websites.

8. Bash or Bourne Again Shell, is a Unix shell first released in 1989 and is the default shell for most major Linux distributions.  Bash is a command line interpreter that parses tokens into simple compound commands and performs various shell expansions, breaking the expanded tokens into lists or filenames and commands and arguments.  Bash can perform any necessary redirection and execution of commands.  Anyone who works with Unix will want to know bash.

Start learning bash at Udemy, with a free guide, TutorialsPoint.  There are literally thousands of options for learning bash and hundreds of online books to learn from.

9. SQL SQL (Structured Query Language) was created in the 1970’s for managing data held in a relational database management system.  SQL provides a standardized way to interact with a database and is extremely simple to learn.  Like JavaScript, knowing SQL is not beneficial by itself, but having a command of it will allow you to create applications that access and manipulate backend databases.  The most common SQL for many is MySQL that is part of the LAMP LAMP (Linux Apache MySQL and PHP/Python/Perl) open-source web application software stack.


 SQL Language Reference(pdf. 1634p Oracle).  SQL Reference(pdf. 1597p IBM).