Zikka's remembrance

My Photo
Name:
Location: Port Laoise, Ireland, Ireland

Thursday, May 25, 2017

How to Learn a Programming Language

How to Learn a Programming Language


If you have an interest in creating computer programs, mobile apps, websites, games or any other piece of software, you'll need to learn how to program. Programs are created through the use of a programming language. This language allows the program to function with the machine it is running on, be it a computer, a mobile phone, or any other piece of hardware.

Choosing a Language

Determine your area of interest. You can start learning with any programming language (though some are definitely "easier" than others), so you'll want to start by asking yourself what it is you want to accomplish by learning a programming language. This will help you determine what type of programming you should pursue, and provide you a good starting point.
  • If you want to get into web development, you'll have a whole different set of languages that you'll need to learn as opposed to developing computer programs. Mobile app developing requires a different skillset than machine programming. All of these decisions will influence your direction.

  • Consider starting with a "simpler" language. Regardless of your decision, you may want to consider starting with one of the high-level, simpler languages. These languages are especially useful for beginners, as they teach basic concepts and thought processes that can apply to virtually any language.[1]
    • The two most popular languages in this category are Python and Ruby. These are both object-oriented web application languages that use a very readable syntax.
    • "Object-oriented" means that the language is built around the concepts of "objects", or collections of data, and their manipulation. This is a concept that is used in many advanced programming languages such as C++, Java, Objective-C, and PHP. 
    • Read through some basic tutorials for a variety of languages. If you're still not sure which language you should start learning, read through some tutorials for a few different languages. If one language makes a bit more sense than the others, try it out for a bit to see if it clicks. There are countless tutorials for every programming available online, including many on wikiHow:
      • Python - A great starter language that is also quite powerful when you get familiar with it. Used for many web applications and a number of games.
      • Java - Used in countless types of programs, from games to web applications to ATM software.
      • HTML - An essential starting place for any web developer. Having a handle on HTML is vital before moving on to any other sort of web development.
      • C - One of the older languages, C is still a powerful tool, and is the basis for the more modern C++, C#, and Objective-C. 
      • Starting Small 
      • Learn the core concepts of the language. While the parts of this step that apply will vary depending on the language you choose, all programming languages have fundamental concepts that are essential to building useful programs. Learning and mastering these concepts early will make it easier to solve problems and create powerful and efficient code. Below are just some of the core concepts found in many different languages:
        • Variables - A variable is a way to store and refer to changing pieces of data. Variables can be manipulated, and often have defined types such as "integers", "characters", and others, which determine the type of data that can be stored. When coding, variables typically have names that make them somewhat identifiable to a human reader. This makes it easier to understand how the variable interacts with the rest of the code.
        • Conditional Statements - A conditional statement is an action that is performed based on whether the statement is true or not. The most common form of a conditional statement is the "If-Then" statement. If the statement is true (e.g. x = 5) then one thing happens. If the statement is false (e.g. x != 5), then something else happens.
        • Functions or Subroutines - The actual name for this concept may be called something different depending on the language. It could also be "Procedure", a "Method", or a "Callable Unit". This is essentially a smaller program within a larger program. A function can be "called" by the program multiple times, allowing the programmer to efficiently create complex programs.
        • Data input - This is a broad concept that is used in nearly every language. it involves handling a user's input as well as storing that data. How that data is gathered depend on the type of program and the inputs available to the user (keyboard, file, etc.). This is closely linked to Output, which is how the result is returned to the user, be it displayed on the screen or delivered in a file. 
        •  Install any necessary software.
        •  Many programming languages require compilers, which are programs designed to translate the code into a language that the machine can understand. Other languages, such as Python, use an interpreter which can execute the programs instantly without compiling.
          • Some languages have IDEs (Integrated Development Environment) which usually contain a code editor, a compiler and/or interpreter, and a debugger. This allows the programmer to perform any necessary function in one place. IDEs may also contain visual representations of object hierarchies and directories.
          • There are a variety of code editors available online. These programs offer different ways of highlighting syntax and provide other developer-friendly tools. 


          •  Focus on one concept at a time. One of the first programs taught for any language is the "Hello World" program. This is a very simple program that displays the text "Hello, World" (or some variation), on the screen. This program teaches first-time programmers the syntax to create a basic, functioning program, as well as how to handle displaying output. By changing the text, you can learn how basic data is handled by the program. Below are some wikiHow guides on creating a "Hello World" program in various languages:

            •  Learn through deconstruction of online examples. There are thousands of code examples online for virtually every programming languages. Use these examples to examine how various aspects of the language work and how different parts interact. Take bits and pieces from various examples to create your own programs.
        • Examine the syntax. The syntax is the way the language is written so that the compiler or interpreter can understand it. Each language has a unique syntax, though some elements may be shared across multiple languages. Learning the syntax is essential for learning how to program in the language, and is often what people think of when they think about computer programming. In reality, it is simply the foundation upon which more advanced concepts are built.    
      • Experiment with changes. Make changes to your example programs and then test the result. By experimenting, you can learn what works and what doesn't much quicker than by reading a book or guide. Don't be afraid to break your program; learning to fix errors is a major part of any development process, and new things almost never work right the first time.
    • Start practicing debugging. When you're programming, you're invariably going to come across bugs. These are errors in the program, and can manifest virtually anywhere. Bugs can be harmless quirks in the program, or they can be major errors that keep the program from compiling or running. Hunting down and fixing these errors is a major process in the software development cycle, so get used to doing this early.
      • As you experiment with changing basic programs, you're going to come across things that don't work. Figuring out how to take a different approach is one of the most valuable skills you can have as a programmer.
    • Comment all of your code. Nearly all programming languages have a "comment" function that allows you to include text that is not processed by the interpreter or compiler. This allows you to leave short, but clear, human-language explanations of what the code does. This will not only help you remember what your code does in a large program, it is an essential practice in a collaborative environment, as it allows others to understand what your code is doing.
    Code daily. Mastering a programming language takes time above all else. Even a simpler language like Python, which may only take a day or two to understand the basic syntax, takes lots of time to become truly proficient at. Like any other skill, practice is the key to becoming more proficient. Try to spend at least some time each day coding, even if it's only for an hour between work and dinner.
Set goals for your programs. By setting attainable but challenging goals, you will be able to start solving problems and coming up with solutions. Try to think of a basic application, such as a calculator, and develop a way to make it. Use the syntax and concepts you've been learning and apply them to practical uses.

Talk with others and read other programs. There are lots of programming communities dedicated to specific languages or disciplines. Finding and participating in a community can do wonders for your learning. You will gain access to a variety of samples and tools that can aid you in your learning process. Reading other programmers' code can inspire you and help you grasp concepts that you haven't mastered yet.[3]
  • Check out programming forums and online communities for your language of choice. Make sure to participate and not just constantly ask questions. These communities are usually viewed as a place of collaboration and discussion and not simply Q&A. Feel free to ask for help, but be prepared to show your work and be open to trying different approaches.
  • Once you have some experience under your belt, consider attending a hack-a-thon or programming jam. these are events where individuals or teams compete against the clock to develop a functional program, usually based around a specific theme. These events can be a lot of fun and are a great way to meet other programmers.

Practicing Regularly

  1. Image titled Learn a Programming Language Step 12
    1
    Code daily. Mastering a programming language takes time above all else. Even a simpler language like Python, which may only take a day or two to understand the basic syntax, takes lots of time to become truly proficient at. Like any other skill, practice is the key to becoming more proficient. Try to spend at least some time each day coding, even if it's only for an hour between work and dinner.
  2. Image titled Learn a Programming Language Step 13
    2
    Set goals for your programs. By setting attainable but challenging goals, you will be able to start solving problems and coming up with solutions. Try to think of a basic application, such as a calculator, and develop a way to make it. Use the syntax and concepts you've been learning and apply them to practical uses.
  3. 3
    Talk with others and read other programs. There are lots of programming communities dedicated to specific languages or disciplines. Finding and participating in a community can do wonders for your learning. You will gain access to a variety of samples and tools that can aid you in your learning process. Reading other programmers' code can inspire you and help you grasp concepts that you haven't mastered yet.[3]
    • Check out programming forums and online communities for your language of choice. Make sure to participate and not just constantly ask questions. These communities are usually viewed as a place of collaboration and discussion and not simply Q&A. Feel free to ask for help, but be prepared to show your work and be open to trying different approaches.
    • Once you have some experience under your belt, consider attending a hack-a-thon or programming jam. these are events where individuals or teams compete against the clock to develop a functional program, usually based around a specific theme. These events can be a lot of fun and are a great way to meet other programmers.
    Challenge yourself to keep it fun. Try to do things that you don't know how to do yet. Research ways to accomplish the task (or a similar one), and then try to implement that in your own program. Try to avoid being content with a program that "basically" works; do everything you can to make sure every aspect works flawlessly.

Take a few training courses. Many universities, community colleges, and community centers offer programming classes and workshops that you can attend without having to enroll in the school. These can be great for new programmers, as you can get hands-on help from an experienced programmer, as well as network with other local programmers.

Buy or borrow a book. There are thousands of instructional books available for every conceivable programming language. While your knowledge should not come strictly from a book, they make great references and often contain a lot of good examples.

Study math and logic. Most programming involves basic arithmetic, but you may want to study more advanced concepts. This is especially important if you are developing complex simulations or other algorithm-heavy programs. For most day-to-day programming, you don't need much advanced math. Studying logic, especially computer logic, can help you understand how best to approach complex problem solving for more advanced programs.
Never stop programming. There is a popular theory that becoming an expert takes at least 10,000 hours of practice. While this is up for debate, the general principle remains true: mastery takes time and dedication. Don't expect to know everything overnight, but if you stay focused and continue to learn, you may very well end up an expert in your field.


Learn another programming language. While you can certainly get by with mastering one language, many programmers help their chances of success in the field by learning multiple languages. Their second or third languages are usually complementary to their first one, allowing them to develop more complex and interesting programs. Once you have a good grasp on your first program, it may be time to start learning a new one.
  • You will likely find that learning your second language goes much quicker than the first. Many core concepts of programming carry over across languages, especially if the languages are closely related.
Applying Your Skills
Enroll in a four year program. While not strictly necessary, a four year program at a college or university can expose you to a variety of different languages, as well as help you network with professionals and other students. This method certainly isn't for everyone, and plenty of successful programmers never attended a four-year institution.
Create a portfolio. As you create programs and expand your knowledge, make sure that all of your best work is saved in a portfolio. You can show this portfolio to recruiters and interviewers as an example of the work you do. Make sure to include any work done on your own time, and ensure that you are allowed to include any work done with another company.
Do some freelance work. There is a very large freelance market for programmers, especially mobile app developers. Take on a few small freelance jobs to get a feel for how commercial programming works. Oftentimes you can use the freelance jobs to help build your portfolio and point to published work.
Develop your own freeware or commercial programs. You don't have to work for a company to make money programming. If you have the skills, you can develop software yourself and release it for purchase, either through your own website or through another marketplace. be prepared to be able to provide support for any software you release for commercial sale, as customers will expect their purchase to work.
  • Freeware is a popular way to distribute small programs and utilities. The developer doesn't receive any money, but it's a great way to build name recognition and make yourself visible in the community.


This are the five simple coding languages for the first-time programmers

This are the five simple coding languages for the first-time programmers


Programming is one of the best career choices in today’s world as more and more services are shifting online. It pays good and it also offers a challenge to anyone who chooses coding as a career. However choosing it as a career or hobby raises many questions in a youngster’s mind and through this article we are trying to solve some of them.
The most popular question for any beginner who has just started learning to code is that which is the best programming language to learn for a beginner like me? To start with, it can be a little bit daunting for a first-timer considering that there are many different programming languages available to choose from. Not only that, it can sometimes also be difficult to choose which one to start with or which one would suit you.
We bring to you a list of coding language that are not only easy to learn for the first-time learners, but also considered as the most profitable programming languages to learn in 2016. So, those who are thinking of learning to code or make a career in coding; here are the best and the easiest coding languages to learn for the first-time learners:

1. Python

Certainly, the easiest coding language to learn for the first time learners is Python. Developed in the 80s, Python is open source and free to use, even for commercial applications. It is usually used and referred to as a scripting language, allowing programmers to roll out huge quantities of easily readable and functional code in short periods of time. Further, it’s also dynamic, and supports object-oriented, procedural, and functional programming styles, among others. Thanks to its flexibility, Python is one of the most widely used high-level programming languages today.
There are some great official tutorials which are easy to follow and there is less of an emphasis on syntax which would suit beginners. It is a good stepping stone for moving on and learning other object-oriented languages.
Python is used by companies such as Google, Yahoo! and NASA. Django is the web application framework written by Python, which powers very popular sites such as Instagram, Pinterest and The New York Times.

2. Ruby

Similar to Python, Ruby is simple, readable and for people who don’t have any kind of programming experience. Ruby is a dynamic, object-oriented scripting language that is used in the development of websites and mobile apps. It is the language that powers their framework, Ruby on Rails, which is behind websites such as Twitter, Groupon and GitHub. It is also mostly used for backend development, and popular sites such as Airbnb, Shopify, Bloomberg, Hulu, and Slideshare.
When learning Ruby, you don’t have to learn a billion new commands, like in some other coding languages. Its developer, Yukihiro Matsumoto, has designed it to be easy and practical.
It is easy to learn with a helpful 20 minute quick start guide on the official Ruby website. It is straightforward and easy to read with a large community behind it of programmers willing to answer questions. There are a lot of documentation available as well as great resources that will help you to understand Ruby from the very beginning.

3. JavaScript

Not to be confused with Java, JavaScript is a primarily client-side scripting language used for front-end development. Java is a programming language while JavaScript is a scripting language. JavaScript is the most commonly used programming language to create cool websites and games for the web. It is dynamic and is flexible to use on object-oriented programming. It derives much of its syntax from The C Language.
It runs on every single platform and is already in your browser for you to start learning, which means you need not install it. If you want to build anything for the web, then JavaScript must be on your list of programs to learn. However, JavaScript is also known to be a difficult language as it is untyped and thus is difficult to debug.
If learning JavaScript sounds fun to you, then JavaScript has some of the best online learning material and it lets you start learning straight away.

4. Java

Java is one of the most popular and general purpose programming language in the world. Released in 1995, Java 1.0 was based on the principle of ‘Write Once Run Anywhere’. It is a class-based, object-oriented language and designed to be portable, which means that you can find it on all platforms, operating systems and devices.
Java is usually used to build Android apps, desktop apps, and video games. It is also commonly used as a server-side language for enterprise-level backend development. In addition, it adds to the capabilities of the C++ language. So, if you already have knowledge of C++, it will help with learning Java, but is not necessary. Even though, Java is a slightly complex programming language for the beginners, programmers agree that it can be a very beneficial first programming language to learn. However, it has a fundamental set of core concepts that will help you as you move to other languages and technologies.
Java programming is a highly sought after skill, as having knowledge of it opens a lot of avenues in terms of employment. If you want to give it a try, go to Learn Java Online and start with the lessons today.

5. C/C++

C is often used to program system software and is the lingua franca of Operating Systems. C has influenced almost all programming languages, especially C++. So, if you know C well, you would probably have less difficulty picking up other popular languages. Since C takes more complex code to perform simple tasks, beginners may find it tough to keep themselves motivated if they choose it as their first language. However, knowledge of C will definitely help you as a programmer.
On the other hand, C++ is a powerful language based on C, which has added object-oriented features like classes to the language, along with virtual functions and templates. C++ is another of the world’s most popular programming languages and is designed for programming systems software. It is still widely used to build games/game engines, desktop apps, mobile apps, and web apps. C++ is powerful and fast, which has been used to build software such as Adobe Systems, Amazon, Paypal, Chrome, and more. Much like C, C++ is generally considered harder for beginners to learn on their own. So, if you decide to learn C++ as your first language, feel free to look for a mentor via Meetups or find a C++ Codementor.
We may have left some of your favourite languages however our stress was to bring you the comparatively easiest languages to choose from to start your coding career. We would love your comments about how you became a programmer.

Wednesday, May 24, 2017

What Programming Language Should a Beginner Learn in 2017

What Programming Language Should a Beginner Learn in 2017


An Overview of Programming Languages

Before we go into comparing programming languages, let’s first take a look at the languages we’re going to be covering.

Dynamic Languages

Dynamic languages are generally easier for total beginners to learn because they’re flexible and fun. You can quickly build an app from scratch with less lines of code, and there is no hard rule on how to write things to behave in the way you want them to. As dynamic languages are usually very high level languages, you'd spend less time trying to get the details right and more time learning programming concepts, which is another reason dynamically typed languages are popular with beginners who are motivated by being able to build things and see results quickly.

JavaScript

Not to be confused with Java, JavaScript is primarily a client-side scripting language used for front-end development. JavaScript is compatible across all browsers and is used to create interactive web apps, often through libraries such as jQuery and front-end frameworks such as AngularJS, Ember.js, React, and more.
JavaScript can also be used as a server-side language through the Node.js platform. Two years ago, Node.js was still quite young, but its community has grown a lot since then, and you can now find many resources here. You can also build hybrid mobile apps with JavaScript through using frameworks such as phonegap, while Facebook’s React Native allows you to build native mobile apps with JavaScript.
However, JavaScript is also known as a difficult language because it is untyped and, thus, difficult to debug. There are statically typed versions, such as Microsoft's TypeScript or the JSX, that React uses.

Ruby

Ruby was developed so developers can have fun and be productive at the same time. Ruby was made popular by the Ruby on Rails framework, a full-stack web framework optimized for programming happiness. As Ruby reads like English and Rails has tools that make common development tasks easier “out-of-the-box”, many would recommend learning Ruby as your first programming language.
Ruby is mostly used for back-end development, and popular sites such as Airbnb, Shopify, Bloomberg, Hulu, Slideshare, and more, were all built with Ruby on Rails.

Python

Python is another highly recommended language for beginners, and is the most popular introductory language at Top U.S. Universities.
Developers have used Python to build desktop apps and web apps alike, and it has great tools for data mining. In addition, Python is particularly popular in academic communities for scientific computing, data analysis, and bioinformatics.
Google, Dropbox, Pinterest, Instagram, Reddit, BitTorrent, Civilization IV, and more, were built with Python.

PHP

PHP is a server-side scripting language and is usually considered beginner-friendly. It’s easy to conceptualize what the PHP code will do, which makes it easy to pick up. Most websites have been built with PHP because the language is heavily specialized for the web.
Facebook, Wikipedia, Yahoo!, Tumblr, Wordpress, and more, were built with PHP.

Statically Typed Languages

Apps built with statically typed languages are known to be more scalable, stable, and maintainable. Static languages are usually more strict in catching errors through type checking, and it takes more code to build a prototype. Game engines, mobile apps, and enterprise-level back-ends are usually built with statically typed languages.

Java

As a general-purpose language, Java is used to build Android apps, desktop apps, and games. Java is also commonly used as a server-side language for enterprise-level back-end development - 90 percent of Fortune 500 companies use Java.
Furthermore, Hadoop is a popular Java-based framework used for storing and processing big data, and is implemented by enterprises such as Yahoo, Facebook, and Amazon Web Services.

C

C is often used to program system software and is the lingua franca of Operating Systems.
C has influenced almost every programming language we’ll be examining in this article, especially Objective-C and C++. So, if you know C well, it'd probably be easier for you to pick up other popular languages. Since C takes more complex code to perform simple tasks, beginners may find it tough to stay motivated if this is their first language. However, knowledge of C will definitely help you as a programmer in the long run.

Objective-C / Swift (for iOS development)

Objective-C is a layer built on top of the C language, which makes it static. With that said, it can also be used for dynamic typing. Apple’s Swift is a static language designed to be compatible with Objective-C, but its static-typing makes it more resilient to errors.
Inspired by Python, Swift is designed for coding newbies to pick it up easily and is aimed at fixing some of the issues of Objective-C.

C++

C++ is a powerful language based on C. It is designed for programming systems software, but has also been used to build games/game engines, desktop apps, mobile apps, and web apps. C++ is powerful and fast — even Facebook has developed several high performance and high reliability components with it.
Many softwares have been built with C++, including Adobe Systems, Amazon, Paypal, Chrome, and more. Much like C, C++ is generally considered harder for beginners to learn on their own. So, if you decide to learn C++ as your first programming language, feel free to look for a mentor via Meetups or find a C++ Codementor.

C

C# ("C Sharp") is developed to be used for Microsoft’s .NET framework, which runs primarily on Microsoft Windows.
C# is used for web development, game development, and general Microsoft development. Although Microsoft has not been known for being cross-platform compatible in the past, Xamarin has been working on an open-source project called Mono, which aims to port C# to other platforms and bring better development tools to Linux developers. Recently, you can also use C# to build native mobile apps for iOS and Android through Xamarin.

Other

SQL

SQL ("Sequel"), or Structured Query Language, is a query language used to communicate with databases. Although SQL cannot be used to build apps, it is used to manage the data in apps that use relational database manage systems (RDMS).
You Might Also Want to Read: Become a Developer with these 20+ Resources

Job Opportunities

So, now you know a bit about different programming languages and their perceived difficulty. With that said, not all languages have the same demand or salary. If your goal in learning how to program is to increase your job opportunities and you aren’t going to be dissuaded by how hard people say a language is going to be, here are some pointers to help you figure out what language you should learn.
Based on the salaries estimations from indeed.com’s analysis of job ads, we can pretty much divide programming languages into 9 tiers:
:
Based on this result, it appears that Ruby/Ruby on Rails will rake you in the most money, while Python, C++, iOS and JavaScript are also decent choices. In addition, if salary is your main concern, then maybe C, PHP, and SQL aren’t the most ideal choices... or are they?
Average salary can be affected by many things such as demand (how many job postings there are), supply (how many developers know the language) and experience (a junior developer would naturally earn less than a senior developer), so it’s a good idea to take a deeper look at these elements before jumping to any conclusions.
How likely are you to get a job based on the programming language you know? Here’s a quick look at job trends from indeed.com:
programming language job demand
We can see that C, SQL, Java, and JavaScript are often mentioned in job postings, while C#, C++, and Python are also handy languages to know.
However, if your goal is to work at a startup, then perhaps the job trends from indeed.com is not the best indicator. AngelList is pretty much the go-to place for startup job postings, so we’ll take a look at the demand for programming skills based on the software developer ads in AngelList.
Again, JavaScript turns out to be the most demanded skill, but startups seem to favor Python and Java (it was Ruby (on Rails) 2 years ago!) more than Ruby, PHP, C, or C#.

The Developer Supply Market

Let’s take a look at what mentors on Codementor are skilled at:
Of course, this is by no means an accurate depiction of the actual market, but it should give you a good idea of developer supplies. As you can see, even though the mobile app business has been booming for some time now, Objective-C experts are still mighty scarce. With a scarce supply of good Objective-C developers, their compensations would naturally be higher.
PHP, on the other hand, seems to have a healthy amount of supply in the workforce, which means employers would have more options, and thus, more bargaining power in terms of salary. With that said, PHP developers are not as highly demanded as Java, SQL, or JavaScript developers. Therefore, PHP developers generally earn less.
JavaScript is a pretty special case. Despite having the highest supply, JavaScript developers are not at the bottom of the salary tier — we’ll take a look at JavaScript later in this article.

Salary Range

Now that you have an idea of what the demand and supply for each language is, let’s take a look at the potential salary you could earn based on salary information from job ads. The data comes from gooroo.io, where salary is usually derived as the average value of the salary range offered by individual job ad.
Here, you can see that developers who know Ruby, C++, or Java appear to have higher starting salaries. Python and Ruby developers seem to have the highest potential salaries, which means good Ruby/Python developers are scarce and highly demanded. JavaScript seems to have experienced a large drop in potential salary, reaching its high at 188,168 USD in April 2015 — now it's at roughly $107k. Nonetheless, JavaScript remains a special case, and let's see why.

Special Case: JavaScript Frameworks

Merely comparing the JavaScript language against other programming languages is an inaccurate outlook on how much you can earn if you know JavaScript.
As mentioned in the overview of programming languages, JavaScript is a huge category. Many frameworks have been developed to facilitate front-end website development, so if you only know JavaScript and jQuery, you’d probably earn less than other JavaScript developers who know some sort of JavaScript framework.
Let’s take look at the average salary for different JavaScript framework developers in the US (note: arguably, React & Backbone are libraries, not frameworks, and Node.js is more of an environment):
Now the average salaries don't look that bad. Node.js, in particular, has a very nice future outlook. Since you’d have to know JavaScript to learn these technologies, JavaScript is a rather profitable skill.
Let’s also take a look at the demand for developers of these frameworks:
Node.js is usually used for back-end development, so if we're just looking at front-end frameworks, you can see that AngularJS appears to be a clear winner with rocketing demand. Thus, if you want to get into front-end JavaScript development, you might want to learn AngularJS.
React, on the other hand, is a fairly new technology, and has been gaining momentum at a speed that rivals AngularJS's early stages. It’s possibly still in the stage of gaining momentum and may potentially become more widely demanded, as it is in general more performant than AngularJS and thus will provide a better user experience.
Here's a helpful guide on how React.js and Angular JS compare.

Programming Resources

If you know a little bit about the developer world, you'd probably know how important and helpful it is to have support from other developers, especially if you plan to learn on your own.
Being a part of a supportive community will definitely make your development life easier.

StackOverflow

StackOverflow is, by far, the largest community used by developers around the world to help and get help from other programmers, so, we’ll be examining how large/popular a programming language community is as well as how helpful the communities for different languages are.

Language Popularity

Based on the tag followers on StackOverflow, we can see the overall popularity of a language:
We already know from examining job trends that Java and JavaScript developers are in highest demand, so it’s no surprise they also have the most tag followers. JavaScript is now the most used tag in StackOverflow, superseding Java. (Interesting how Stanford University recently decided to replace Java with JavaScript in its introductory programming course!)
SQL, Ruby, and Swift have the least followers, though this is likely because Ruby is almost strictly used for web development, while Swift is a relatively new language.

StackOverflow Answer Rate

StackOverflow has an unspoken rule where you have to phrase your question “correctly”, or people won’t bother answering you. With that in mind, let’s take a look at how likely your questions would be answered for each language:
Based on our information, although fewer StackOverflow users follow C, SQL, and C++, over 60% of their related questions get answered. Those in the know would probably argue that C and C++ are advanced languages, which means the users who are asking these questions are most likely more experienced programmers who know how to phrase their questions better. SQL, on the other hand, is not used to build things.
What’s noteworthy is how supportive Python and Ruby developers are on StackOverflow. Since Python and Ruby are the most recommended languages for beginners, there are significantly more questions about these two languages. As we hinted at earlier, beginners usually have trouble asking their questions correctly. One would assume that beginner questions would go largely unanswered — surprisingly, almost 60% of the questions about Python and Ruby get answered within 30 days.
On the other hand, PHP, while being quite a widely-followed language, has one of the lowest answer rates. This means a lot of people are asking about PHP, but not many are getting their questions answered.

GitHub

Once you get into the development stage, you’ll eventually learn that it’s best to use an existing solution for your own projects when possible. You’d typically get this from open-sourced projects, and GitHub is the way to go for these things. Users can star projects they like, and the more stars a project has, the more useful it is likely going to be.
Thus, from examining data from GitHub, we can also determine the relative ease in developing projects using different types of languages. We can also have an idea of how fast a language is innovating new technologies. Without further ado, here is a simple chart to visualize the distribution of popular GitHub projects:
Clearly, JavaScript has the most shiny new tools, even when we exclude all the style-guides, learning resources, and tutorials. JavaScript is known for being an extremely fast-moving language with a high churn rate for frameworks and new technologies — developers may sometimes find it difficult to keep up with the constant innovations. Additionally, other than the Node.js platform, JavaScript is mostly used for front-end development, so it’s not directly “competing” with other back-end languages such as Ruby, Python, Java, and PHP. With that in mind, it is not surprising that there is such a large gap between JavaScript and other programming languages.
Ruby and Objective-C, on the other hand, also have a lot of tools and resources for development. Now, we’ve seen in the StackOverflow comparison that both languages aren’t as popular as languages like Java. Contrary to StackOverflow, developers have generally found the open source projects in GitHub quite useful. This is especially true for Objective-C if you examine the total projects written in each language:
In addition, most open source projects written in C/C++ aren’t for C/C++ development itself — they’re just tools written to help development in general (for example, the most commonly used Python interpreter is CPython, which is written in C). As mentioned earlier in the introduction to programming languages, C/C++ are mostly used for developing systems applications, so it makes sense that the open source projects on GitHub are system tools. Nonetheless, you can learn a lot from these open source projects.
Finally, SQL and Swift are lagging behind in terms of resources available.

The Future of Each Programming Language

How relevant will a specific programming language be in the future? First of all, the future of a language will largely depend on the growth of its community, as fresh blood/adoption rate is what keeps a language popular and ensures that it will continue to have resources. Thus, let's take a look at what languages people are most interested in learning:
programming language popularity
Looks like Python, JavaScript, Java (C# came in third in 2014), and C++ have received the most growth in interest. Based on current known trends, we can draw the following conclusions:

JavaScript

JavaScript is, without a doubt, just going to become increasingly popular, especially because it can now be used for back-end development and can even potentially build native mobile apps (through React Native). JavaScript continues to get more tools and updates at a fairly fast pace, so you can expect it to remain extremely important in the future.

Ruby

Startups love Ruby on Rails. Many famous websites, such as Airbnb, Twitch, Hulu, etc., are built with Rails, which means they’re always looking for Ruby developers. Also, since developers usually have a lot fun with Rails and it's fairly easy to pick up, Rails will most likely continue to be popular among coding newbies.
That said, the rise of Node.js will definitely have an impact on the popularity of Ruby on Rails — Node.js has already overtaken Rails on Github. While this isn’t an absolute sign that Node.js will overtake Rails, we should note that a few years back, Rails overtook Python’s biggest web framework, Django, for back-end development, and Rails had more stars than Django.
Moreover, a new trend for "isomorphic" apps will likely affect Rails adoption, a practice that is said to improve web app performance. Since isomorphic apps pretty much need to run on the Node.js platform, which is in JavaScript (the same language used in front-end), Node.js will most likely only become more popular with time. The appeal of only having to be well-versed in one language (JavaScript) may also shift some potential new blood away from learning Ruby. Google's Go is another back-end alternative that has received some attention in the last two years.
However, since Rails continues to get frequent updates, it will still remain relevant for a while. Not to mention, it has a tremendously loyal community with tons of useful tools to help make development easier. Thus, despite a decline in popularity, Ruby will still be sticking around.
Want to Learn Ruby on Rails? Here are some great resources!

Python

Python is popular among academic researchers and data scientists, and as mentioned before, many schools choose to introduce beginners to coding through Python. This means Python will continue to grow steadily and remain relevant. While Python won’t be evolving as fast or seeing the same explosive growth in popularity and demand as JavaScript, it will continue strong, especially when there is such a high demand for data scientists.
Want to Learn Python? Get Python Training

PHP

The trends for backend development has been shifting away from PHP for some years now, but 80% of websites on the web are still built with PHP — it was a language designed for the web, after all.
Nonetheless, if you Google what programming language beginners should learn, you’d find that developers generally don’t recommend learning PHP. In fact, many developers apparently hate it.
The PHP community is trying to shake off its bad reputation with new guidelines on how to code PHP the Right Way and new tools, but in general, the future of PHP seems rather stagnant as of 2015 (at least in the U.S.). Though some had hoped that PHP7 would revitalize the community, it is still known to be quite fragmented.

Java

Android has been a big boost in keeping Java the most popular programming language, and most enterprises also love Java for its relative stability and scalability.
With the rise of Spark (which uses the Scala language) and Cassandra (which supports other languages), it’s hard to say how long Hadoop will continue to reign as the most popular big data framework. With that said, given how large enterprises behave when it comes to change, Hadoop won’t be going away. The same can be said about the Java programming language in general, as Java has excellent tools for back-end development and is much more established for enterprise development.
Thus, Java will continue strong as one of the most relevant programming languages in the next few years.

Objective-C/Swift

Since Apple released Swift, and Objective-C only works for Apple products, one cannot expect Objective-C to stick around too much longer in the future. Swift, on the other hand, will of course be relevant for the years to come, as long as people continue to use Apple products.
With that said, this doesn’t mean you shouldn’t learn Objective-C in 2017, since most open-source projects for iOS development are still written in Objective-C. Generally speaking, using something you don’t understand is not a good idea. Not to mention, it's not that difficult for you to learn Objective-C if you know Swift or vice versa.
Want to build iOS apps? Learn Swift with our favorite mentors!

C

C is quite low-level compared to other programming languages, but since it's the OS lingua franca and many development tools are written in C, including Linux, it will be sticking around.

SQL

SQL is almost universally understood by database administrators. For a while, SQL seemed to have lost its relevance with the rise of NoSQL services, such as MongoDB and Redis, and non-SQL-using Big Data computing platforms, such as Hadoop, Spark, and Cassandra. Many people were howling about how SQL was dying.
Apparently not any more. As a result, even NoSQL had to reposition itself as “Not Only SQL.
With the rise of big data and the difficulty of managing it, SQL is hotter than ever (as you already know from the job trends). Google has also recently updated its BigQuery service so it can now ingest up to 100,000 rows per second per table, and BigQuery uses SQL. Spark's also had the Spark SQL Module since version 1.3. For products like ClustrixDB, DeepSQL, MemSQL, and VoltDB, all you need to do is add commodity nodes instead of bulking up a database server.
All in all, SQL is relevant again because it’s needed to manage and analyze (not store) big data. The developer's community is even predicting some sort of unification of SQL and NoSQL. Either way, not only is SQL everywhere, but it’s also safe to say SQL will continue to be relevant.

C++

C++ is still considered the most powerful language in terms of performance and capabilities (even against Rust), C++ will most likely continue to be relevant in certain areas such as things that need high performance (e.g. game engines). Since ISOCPP (International Organization for Standardization) has completed its work on C++17, which is in its final ISO balloting process, it'll most likely start working on C++20 in July 2017. All that to say, it's still an evolving language.
In the future, Rust may potentially replace C++ in some areas of systems programming, as Rust aims to be able to produce less-vulnerable software than C++ does. Read more about how Rust compares to other languages here. Regardless of whether Rust will actually take over C++, now is a good time to learn Rust if you're an advanced developer.

C# 

Being limited to Microsoft platforms and being closed-sourced did not work in C#’s favor in the past, but thankfully Mono came to the rescue (though Mono had some performance issues in the past, its recent updates have improved them).
Developers who’ve worked with C# seem to love the C# programming language, and the passion continues to fuel the strong community. Not to mention, C# is the primary language for Unity 3D, a rather popular game engine that could also works on iOS, Linux, etc. The rise of Unity3D as the de facto indie game engine and VR apps has solidified C#'s future. Since VR is a big thing, and will continue to be a big thing, C# is sure to have a pretty bright future.
Besides, C# is also pretty popular for enterprise development in countries other than the U.S., such as the UK. Obviously, Microsoft will keep C# alive for a while and keep it relevant for the .NET platform. In fact, it has been aggressively open-sourcing its products and making it more accessible so developers can adopt it.

Conclusion

What language should a coding beginner learn? Clearly, if you wish to get into web development, you’d have to learn JavaScript, whether you like it or not. If you want to do back-end web development, you must learn some form of SQL.
Furthermore, if you want to mine websites for data or if you’re interested in being a data scientist, then Python is a good language to learn. If you want to work for an enterprise, then Java is the way to go. If you’re actually not that interested in building things and you’re more interested in job opportunities, then perhaps SQL is a nice place to start (especially if you like math).
Altogether, what programming language you should learn in 2017 will ultimately depend on what you want to do.