Beruflich Dokumente
Kultur Dokumente
Many beginners will come with this common question when they start to learn coding.
Many developers will ask this question after they have learned some languages.
In this post, you will get my answers for these questions. But the more important thing
I want to share with you is: How to master the skills of learning new language.
I will not just give you a fish, but teach you to fish.
Learning new programming language should be easy for a skilled programmer. It’s
normal for them to write code in new language after a weekend study, or several
hours. And good programmer will just pick up any language which task demand,
language is a tool.
Yes, it’s true, but you need to learn is “how to learn new programming languages”, but not
specific programming language. Master the skills of learning
“all languages”
does not need talent, it needs the core knowledge of PL and practices.
Let me explain this in details.
Let take car for example, there are many brands of car in the world. Some cars are
compact and powerful, some are slow and bulky, Different brand of car stands for
different kind of driving experiences.
If you know how to drive one car, you will know how to drive most other cars, even the
new car is a different brand.
Why? Because different brand of cars share many common things, they are
fundamentally build with engines and tires. They were designed for the same purpose:
driving you to the target.
1. The hardware and computer language theory are evolving, generally speaking,
programming languages are designed more easy to use and more expressive
powerful.
2. With computer used more widely, more problem domains need involving computers,
different programming language are invented for specific different domains.
Of course, you do not need to learn all kind of languages, but learn more programming
languages will help you choose appropriate language for any given task.
There are also many common features in programming languages. The true reason
why we can master all programming languages is: There are limited number of
languages concepts, let’s say less than 15 which commonly used.
Procedural
Recursive
Static type
Dynamic type
Type inference
Lambda function
Object oriented
Garbage collection
Pointer
Continuation
Meta-programming
Macro
Exception
#1 Downloaded Personalized News App Read Now
And language concepts tend to be constant, like design principles.
Programming languages designers borrows ideas or features from each other, but
with different implementation. So sometimes we may say PL_C is son of PL_A and
PL_B, and PL family tree would be like this:
Let’s take GC for example, the first question should be, what’s GC?
After some practice, you need to know how GC works, what algorithms used? There
are also many kinds of GC, and it is still evolving.
It’s a good opportunity for you to learn new language concepts when you learn new
language. For example, if Ruby is your first OO language, then you have a good chance
for you to study the good and bad of OO seriously.
Good understanding of OO will helps very much when you learn another OO language.
Implement a language do not need too much work, if your language’s syntax is not
complicated. Have a look at this project: Make a Lisp, any language can be used to
implement a Lisp. 8cc is a compiler for C programming language, if you want to write
a compiler, it’s a good reference.
#1 Downloaded Personalized News App Read Now
There are also some books for you:
For example, if you begin to learn Ruby, let’s find what’s special for Ruby?
Summarizing the main points you need to understand begin you start to learn it:
With a interpreter, so you have GC, also means performance maybe a problem for
some task.
Everything is an Object, Ok, a language with OOP, and even “pure OOP”.
Knowing the most important features of language, including it’s benefits and
drawbacks. This will help you much when you start coding in this new language, it’s
seems like a road-map for you.
If you are a starter, find the definitive books, like the book written by language creators,
or just search on Amazon with language names, find the books with good comments.
If you are a language guru, just find some simple guides for this language, or even
some sample code in this languages. Take a look at learnxinyminutes.com.
Remember you need to write code with your hand when you learn syntax, don’t just
copy code. Practice the new language with exercism.io, there are mentors to review
your code, give you suggestions for free, it’s wonderful.
Ok, you need to start a project with new language, with the knowledge of related
ecosystems, tools or libraries. You could start with a simple one, like a guessing
number games, like a simple book store or to-do apps. And you can find many similar
projects on Github.
This is not necessary for every languages. As I said in To Be a Programmer, aspiring
programmer will interested in the details and implementation of their languages. And
sometimes, bug even comes out because we don’t have good knowledge of language
implementation.
1: Do you have a mentor on specific language, or do you need learn specific language in class?
That’s simple, if your teach told you we need to learn C for exercises. OK, C is your first
programming language, because you have mentor(your teacher) and classmate, it’s
more easy to getting started with this help.
Emm, you should just follow the Job Description, learn it now.
Got it? Just pick the language mostly used in your chosen domain, don’t spend too
much time for choosing the first programming language. Get on the board quickly,
after you have more experiences, transfer to another one if you don’t like it or your
problem domain changes.
This also depends on your domain, every language has it’s own pros and cons. There
is no such a language
#1 Downloaded Personalizedsuitable
News App for every task. If it exists, we just need to learn Read
this Now
one,
right? Remember No Silver Bullet.
Someone said don’t consider yourself serious programmer until you have knowledge
of at least 5 programming languages. As I elaborated above, you should not focus on
learning more and more languages, you should try to learn more language concepts or
design principles.
If you are using a structural language in work, why not try to learn a functional
language, if you are using a language with dynamic types, why not try to learn a
language with static types.
Related News