How to become a programmer who understands a variety of programming languages

Source: Internet
Author: User

Learning a new language is an adventure. I'm always passionate about experimenting with new things-learning new grammar, understanding different patterns, and radically changing the way you think. Unfortunately, many developers disagree with this, and may even be disgusted with it – learning a new language means getting out of the comfort zone and taking the time to learn new ideas and methods.

In these days, I use about 5 different languages to write different projects every day!

What language should I study first?

There are countless discussions on this. Many beginners who have just entered the programming community will ask this question, which is simply wave upon wave. Some people suggest that it's hard to learn first, such as Python and Ruby, and some people think that it's better to learn something like C, C + +, and go. I would like to say that before we choose a new language, we should pay attention to the following points.

type System

From my experience and previous learning paths, this is one of the most important concepts. I'm glad I started with C, and then I tried C + +, and after a while, I went into the embrace of Java. And then Scala, and now I'm starting to play Ruby. At the same time, I have been involved in objective-c, Python, and even OCaml. Oh, by the way, I've been working on Swift and Coffeescript lately.

If I started with JavaScript, Python, or Ruby, it would be very difficult to understand what types and variables are in the back. Understanding the differences between static and dynamic and weakly typed and strongly typed systems is essential to understand how language works. I can't imagine how big a thing it would be if I couldn't control the type at first, and the difference between the statements and definitions, and the compilation and interpretation that followed.

However, there are a lot of developers who want to have an immediate effect: they want to see the results quickly, and don't want to know the details too much. They like to connect with new apps. It is best not to use the language of the brain, they are most happy to meet this. Because in their eyes, mastering integer, String, and Boolean is a great obstacle to learning programming. It is best to write code directly without distinguishing between classes, objects, and methods:

Scala> println ("Hello world!") HelloWorld"Hello world! " HelloWorld! 2.2. 1 :001"Hello world! " " HelloWorld!

There is no denying that this approach can give people confidence and make people feel that they have learned something new.

First, make sure which type you belong to and put yourself in the right place. Do you want to explore the hidden workings of the work, like in-depth study of local execution? Are you willing to understand the language structure? Or maybe you only care about quick results, don't want to know about virtual machines and compilation work, and the language internals are not important to you at all?

consider from the perspective of their own interests

What data do you need to process? Are you going to write a complex business system or a relatively simple crud start-up company? Identify areas of work based on content that might be of interest to you.

So, if you're sure you want to work in a business, then you can try Java or. NET. If you are prone to hackers and are highly focused on security issues, then you might want to learn C + + or bash. If you dream of becoming a web developer, start by mastering PHP, JavaScript, or Ruby. If you want to write some machine, robot, car or other electronic program--Also, learn C + + or Python first. Do you like to tinker with mobile devices? Then Java, Swift, or C # should be your first choice. If you like math and algorithms, then Lua, Erlang, or R are good for you. Wait, wait, there's a plethora. In short--it all depends on your purpose and your hobbies.

View larger image

internal mechanisms of language

Do you have a structured stack of memory? Do you use reference types or only value types when passing variables in your program? Do you use pointers and destructors to control the life cycle of an object? Do you clean the memory yourself or use the relevant garbage collector? Do you calculate and track reference types and subclasses?

These are the problems that we don't usually care about. But sometimes, they are some of the concepts you have to deal with, so it's important to understand the internal mechanisms. Although now you will feel that these concepts are complex, it is difficult to understand, because one day, you will be grateful for your choice now, saying goes, book to time to hate less, not to use when the regret.

What languages should I study?

View larger image

Community--stackoverflow, Reddit

Here are some of the reddit above for general programming:

    • Http://www.reddit.com/r/programmers
    • http://www.reddit.com/r/cscareerquestions/
    • http://www.reddit.com/r/learnprogramming/
    • Http://www.reddit.com/r/programming

You can also click Http://stackoverflow.com/tags or Http://t.cn/zQ6JvmN to ask for help in a specific language community. A lot of helpful people are waiting for you there.

function Library

The library is important because it allows you to leverage existing resources effectively without having to "reinvent the wheel". We often need to solve specific problems, implement business rules, handle important processes, find the elements we need from arrays, take advantage of a given string, filter a specific collection, and so on. The best language itself or a third-party library can provide some utilities, assistive tools, and data structures that can speed up the development process.

Here are some of the Community function library code warehouses in different languages:

  • ios:https://cocoapods.org/
  • android:https://android-arsenal.com/
  • Java, Scala, groovy:https://search.maven.org/
  • haskell:https://hackage.haskell.org/packages/
  • go:http://golang.org/pkg/
  • ruby:https://rubygems.org/
  • Python:https://pypi.python.org/pypi
  • . Net:https://www.nuget.org/packages
  • javascript:https://www.npmjs.com/

Maintain a review of third-party support for scalability, openness, and ease of integration.

get documentation and support from creators/maintenance personnel

Do you read the documentation? Is the document not easy to understand, comprehensive and up-to-date? How often do you update? How many maintenance personnel are there in the community? How much information can you extract from the document? Can you easily navigate the different parts?

This is a very effective observation report. As long as there is a creator to help learn and understand the language of the document, the other actually does not matter. For example, Ruby has a number of Web sites that provide documentation, such as: https://www.omniref.com/,http://ruby-doc.org/. Scala also has a pretty good API specification http://www.scala-lang.org/api/current/.

The attitude of the creator of the language towards the community is also important. Can he accept and listen to feedback like Ruby founder Matz? Does he have a purely business approach like the father of Scala, Martin Odersky? Or will he encourage community development like Clojure's inventor?

Resources and examples-blogs, github code repositories

Here are a few good examples of how to start a guide:

    • http://docs.scala-lang.org/overviews/
    • https://www.ruby-lang.org/en/documentation/
    • Https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html
    • http://arcturo.github.io/library/coffeescript/,http://autotelicum.github.io/Smooth-CoffeeScript/

As for the online tutorials, here are some great portals, such as:

    • https://www.codeschool.com/
    • http://www.codecademy.com/
    • http://www.pluralsight.com/
    • http://teamtreehouse.com/
    • http://tutsplus.com/
    • http://www.lynda.com/
    • https://www.udemy.com/

You might as well take a look.

Funding

Yes, we talked about ideas, passions, and some abstract concepts, but in the end it all boils down to money, which is money. It's a good idea to figure out which pay/demand is relatively high before choosing a language. Of course, you can choose it purely for fun. New things always appear and develop, although this can broaden our horizons, but it is very important to learn something useful. In this case you have the following two solutions:

    • Learn the most popular/demanding languages/technologies/frameworks on the market today. This ensures that you will not only be able to find a job, but also get a good reward.
    • Study according to your own point of view. It may be a little hard to imagine. Because no one can pack a ticket and say that the next popular must be this programming language. Imagine, 10 years ago, if you said Ruby would be the darling of the current society, who would believe it. And Scala and go, no one knows, for example, what happens to them after 5 years. If you choose them now-then either you will become a high-paying expert, because it will become very popular, or you can only master a useless, obsolete language.

View larger image

View larger image

Click here to view Market Analysis: Https://gooroo.io/analytics.

do I need to learn more than one programming language at a time?

Just start--don't do that. In the long run--yes, you should learn a variety of programming languages.

When you first embark on a programming journey, you should focus only on one language. You need to master all the concepts and concentrate on learning a particular area.

When you are already a programmer with some experience , the situation is different. Since you already know how internal mechanisms and procedures work, all you need to do is learn new grammar and new paradigms, because many concepts are interlinked in different languages.

Everything starts hard, and once you get it right, it's going to roll like a snowball.

Summary

So why do we have to learn a new language? Because none of the tools are available for all goals. And we have different projects, different problems, different architectures. Perhaps the first thing we should consider before enabling a new application and choosing a technology stack is to solve the actual business problem before we can choose the best and most realistic tool.

Don't start with tools and hobbies. Start with the problem and find out the solution. Only by understanding these can you choose the right language to help you achieve your business rules in the most efficient way possible.

Of course, if you're familiar with a variety of programming languages, you're sure to be faster and more efficient. Because you can always pick out the perfect tool, solve the problem in the most economical way, and provide the most powerful implementation.

Books

Here are some of the books that I think are very helpful for you to learn the basic concepts.

Tools

The following tools can be used to compare programming languages-not only the grammar, but also the degree of social popularity and social support.

    • http://learnXinYminutes.com/
    • http://HyperPolyglot.org/
    • Http://RosettaCode.org/wiki/Rosetta_Code
    • Http://t.cn/zQ6JvmN

How to become a programmer who understands a variety of programming languages

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.