I want to build my own technology stack currently considering the language has PHP JavaScript python C + + ruby go
Have a good recommendation also please explain, thank you.
Please look at the long-term analysis and explain why, thank you!
Reply content:
1, programming language is just a tool, first choose a proficient (Python, PHP, Java, etc.).
2, Web development, JavaScript must be, provided that any one of the 1 proficiency, JavaScript is not a matter, will soon be able to win.
3, Web development, have to go front-end and back-end routes. Unless you want to be an all-stack engineer.
4, the focus, if you go back end, not purely programming language things, you have to study more, distributed, high concurrency, database master-slave, read and write separation. Nosql, caching, API development, full-text indexing, operations, and more.
First choose a programming language proficiency, Go can focus, the current choice of Python deep learning is one of the better choices. Do not fall into the language of the struggle!
Every time someone asks me which language I study, I answer the same question:
You have Java around you, you go to learn Java,
You have PHP around you, you go to learn PHP,
The people around you, what you learn, don't ask him.
Did he ignore you?
Ask him to eat!
He will also tell you what you should learn next.
With people, not with technology.
What do you mean, there's no programming around?
You met me, didn't you?
Follow me, learn the front! For learning, doing projects, looking for work, recommended java! Using Python for a year, in addition to being familiar with calling various methods, libraries, frames, feel no progress. Turn to Java decisively.
How is python memory recycled?
The reference count.
And then what?
I don't know ...
is a python parameter pass a value pass or a reference pass?
What?
Can you talk about Python concurrency?
No, I only know there is Gil, others do not know ...
What is Java memory recycling?
First Java divides the memory into heap area, virtual machine stack area ...
Using accessibility analysis ... Safety point ... serial,parnew,parallel scavenge CMS ... Memory guarantee It's OK ...
Let's talk about concurrency.
Well, bias lock, lightweight lock, heavyweight lock ... the semantics of the volatile keyword ...
Can you talk about the overloading and rewriting of Java?
Overloading the underlying using static multi-Dispatch, depending on the method static parameter type at compile time determines which version of the method to use, overrides the use of dynamic but single allocation, according to the type of recipient to choose the relevant method ...
It's not a good idea to squirt python, because the language is not bad, only appropriate and appropriate. But think that should have a relatively strong static type language such as c/c++,java,c# and other basic, and then use Python and other scripting language to do more with less. Beginners Learn scripting language, feel very empty.
Because it is to do the web, it is recommended java. The benefits of learning Java are: A lot of companies use, and if you want to, can learn more why. and the scripting language, not the top God, can only tune the API. For the underlying mechanism, there is very little information available for you to learn in one step or the other. Don't tell me to read the source directly, we are all ordinary people. Not the great God.
These are personal humble opinion. English. Web Development, is a very complex and heavy work, and most of the cases are dealing with a variety of rules, like what HTTP protocol, database link string, css,html,javascript syntax, development of workflow aids configuration, what angular, jquery Framework ...
Fundamental learning is not complete, learning is also two years and what the original squeezed out, like Es6 squeezed out of jquery, like Typescript squeezed out coffeescript, like Nodejs, Php,elixir,f#,ruby, Julia, Python fights and melee in the same field.
As a person with a bit of experience, the advice you want to give is:
Replace the computer with a Linux system, use C to implement a static file server, and then use JavaScript to try not to reference the third-party library, do a login to review the dynamic update of the small site, and then buy a cloud server, a real deployment.
Try to use the most primitive way, try not to use what frame, when the process is completed, at least there will be a skeleton, with the skeleton can make it plump.
Why Linux is a system, it's more straightforward to tell you how the operating system works.
Why is the C language, it is more straightforward to tell you how things are done.
Why is JavaScript, its voluminous open source code and Nodejs simple philosophy, more realistic to show you, those rules and how to play those games. (First of all, please pay attention to the case, care for obsessive-compulsive disorder patients ...) )
Let's start with the languages you're thinking about:
PHP: Back-end Route elective, small Internet company applicable, the learning threshold is low, suitable for rapid development, but the performance is mediocre (PHP7 has significantly improved), as a special for the web-born language, in recent years, not much movement, as JS and Python development active, good market share, demand is larger, But also because of the low threshold, learning more and more people, competition has gradually increased. (In answering questions, I don't recommend learning PHP in depth.)
JavaScript: The front and back of the route required, this current potential, high heat, if it is to engage in the front-end, how to depth are not excessive, you can learn JavaScript is to enable you to achieve financial freedom ... But the drawback is that the knowledge system is more and more large, branches more, the framework is countless, want to learn almost no head. The back end of the words JS is to master, otherwise in the JS big line of today, you a back end do not understand JS, and front-end communication is very difficult. JS from a simple Web page scripting language has become a Web full-stack development language, now JS can do something too much, JS community and even like Facebook, Silicon Valley companies are keen to make a contribution to JS open source! And, for example, node. js, which is asynchronous, even crosses the react of native app development, every open source technology will be a web black technology, dare to ask which language can do? (recommend the most learning-intensive developers to learn more)
Python: The back-end and operation of elective, said to be elective, in fact, basically do not repair, today's startups are more inclined to python, from a certain aspect he and PHP is very similar, but Python can do too much, I like to compare Python to a Swiss army knife! PHP is far from being done. Efficiency in terms of two aspects, performance, language itself performance, but as the glue language, you understand, development, efficiency, which is also the important reason for the popularity. The web also has an operational direction, and Python is especially important to them ... Of course you don't want to do ops. Learning more about Python will make you more geek, will make your job more automatic, and good python will pay you a lot of money (it is also recommended that each engineer study in depth, but not necessarily focus on this one) (
2016.11.15 Increase: Python An excellent performance solution is pypy implementation, although need and official run-in, but interested in Python and its performance, and interested in understanding its underlying implementation of the PyPy)
C + +: The underlying engineer is required, and if a Web engineer wants to delve into C + +, I don't rule out his propensity to be self-abusing. My undergraduate EE hardware, C + + is for us, you have the pursuit of the underlying development, such as Web Server, you can delve into C + +, and C + + Server is basically the game field ... and C + + difficult Ah, you are in-depth study of a few years is also hard to study what the word, you engage in the broad sense of web development, there is this heart or well study other bar. (Not recommended)
Ruby: Personal developer, have you heard of Eagles's "Hotel California"? The song was so famous that Eagles's other excellent songs lost its luster. When it comes to Ruby, it's definitely the ROR framework, and ROR is so famous that it's hard to have other expectations for Ruby, but what else besides Ror,ruby? Yes, and the ruby-like grammar. It's fun to write Ruby, but I'm sorry, sometimes it's too free to be a team developer. Learn Ruby, yes, I define it as a personal developer elective, perhaps the language is more suitable for entrepreneurship ... Of course, you would say Ruby is very popular in Silicon Valley, but, here is china,you know. And, after all, Ruby was born in an island country, if you don't have two axes in Japanese, you want to integrate into their community? (Not recommended)
Golang: The bottom-level engineer, this is a web-base language, his correct classification and C + +, called "System programming Language", understand? After all, is born in the new era, born with excellent parallel programming ability, October 2016 Tiobe ranked, go showed a strong momentum, and learn go people are generally a little want to hold Google's thigh meaning it ... Go and the same momentum of Swift, need to wait and see, do not worry first. (Do not boot) (
2016.11.15: Now the go aspect of the mature web framework has gorilla and domestic beego, can be self-search to understand. )
Ya, looked for a time unexpectedly did not mention me big Java, network programming first language, this is one of the important ways to the pinnacle of life, you This is strategic neglect? Don't learn to speak.
To learn the framework, to learn the tools, the most important thing is to learn the principle. It's a matter of taste.
JS Python Ruby Go Status will Rise, PHP will drop, Java does not change.
You can learn anything. JS Simple is the United States learning endless! Multi-door technology multiple roads!