I want to build my own technology stack. The languages I am currently considering include PHP, JavaScript, python, c++, ruby go. If you have any good recommendations, please tell me. Thank you.
Please analyze it from a long-term perspective and explain the reasons, thank you very much!
Reply content:
1. Programming languages are just tools. First choose one to become proficient in (Python, PHP, Java, etc.).
2. For web development, JavaScript is a must. The premise is that you are proficient in any one of 1. JavaScript is not a problem and you can master it quickly.
3. Web development, both front-end and back-end. Unless you want to be a full stack engineer.
4. Here’s the key point. If you go back-end, it’s not a matter of pure programming languages. You have to study a lot more, such as distribution, high concurrency, database master-slave, and separation of reading and writing. Nosql, caching, API development, full-text retrieval, operation and maintenance, etc.
First choose a programming language and become proficient in it. You can pay attention to Go. Currently, choosing Python for in-depth learning is one of the better choices.
Don’t get caught up in a language war!
Whenever someone asks me which language to learn, I always answer like this:
If there is someone around you who knows JAVA, you go learn JAVA,
If there is someone around you who knows PHP, you go learn PHP,
Learn what the people around you know. If they don’t know, just ask them.
He ignores you?
Invite him to dinner!
He will also tell you what you should learn next.
Follow people, not technology.
What should you do if you don’t have anyone around you who can program?
Didn’t you meet me?
Follow me and learn front-end!
For those who are looking for studies, projects, or jobs, I recommend Java! After using Python for a year, apart from being familiar with calling various methods, libraries, and frameworks, I feel that I have not made much progress. Decisively switch to Java.
How is Python memory recycled?
Reference counting.
Then what?
I don’t know...
Is Python parameter passing by value or by reference?
What?
Can you talk about concurrency in Python?
No, I only know that there is GIL, but I don’t know anything else...
How does Java recycle memory?
First of all, Java divides the memory into heap area, virtual machine stack area...
Use reachability analysis... Be safe... serial, parNew, parallel scavenge CMS... Memory guarantee...
Let's talk about concurrency
Well, Offset lock, lightweight lock, heavyweight lock... The semantics of the volatile keyword...
Can you talk about overloading and rewriting in Java?
The bottom layer of overloading uses static multi-dispatch. According to the static parameter type of the method, which version of the method is decided at compile time. The overriding uses dynamic but single allocation, and the relevant method is selected according to the type of the receiver...
It is not necessary It is not good to learn Python because there is no good or bad language, only suitable and more suitable. Instead, I think you should have a relatively strong foundation in statically typed languages such as c/c++, java, c#, etc., and then use scripting languages such as Python to get twice the result with half the effort. Learning a scripting language for the first time feels very futile.
Since we are doing Web, we recommend Java. The advantage of learning Java is that it is used by many companies, and if you want, you can learn more. The scripting language is not a top expert and can only adjust the API. For the underlying mechanism, there is very little relevant information for you to learn step by step. Don't tell me to look directly at the source code, we are all ordinary people. Not a great god.
The above is just my humble opinion.
English.
Web development is a very complex and arduous task, and in most cases it involves dealing with various rules, such as HTTP protocol, database link string, CSS, HTML, JavaScript syntax, and development workflow assistance. Tool configuration, Angular, jQuery framework...
I can't finish learning it. It only took two years to learn it, and something else has squeezed out the original one, like es6 has squeezed out jQuery, typescript has squeezed out coffeescript, and nodeJS. ,PHP,elixir,f#,Ruby,julia,Python fighting and melee in the same field.
As a person with some experience, the advice I would like to give is:
Change the computer to a Linux system, use C language to implement a static file server, and then use JavaScript to make one that can be done without citing third-party libraries as much as possible. Log in to a small website where comments are dynamically updated, then buy a cloud server and deploy it once.
Try to use the most original method and try not to use any framework. When this process is completed, there will be at least a skeleton. With the skeleton, it can be full.
Why is it a Linux system? It tells you more straightforwardly how the operating system works.
Why is it c language? It tells you more straightforwardly how things are done.
Why JavaScript, its vast open source code and the simple philosophy of nodeJS can more truly show you the rules and how to play those games.
(First of all, please pay attention to capitalization and care for patients with obsessive-compulsive disorder...)
Let’s start with the languages you are considering:
PHP
: back-end route elective, suitable for small Internet companies, learn The threshold is low and suitable for rapid development, but the performance is mediocre (PHP7 has been significantly improved). As a language designed for the Web, there has not been much movement in recent years. It is not as active as JS and Python. Fortunately, it has a high market share. The demand is relatively large, but also because the threshold is low, more and more people are learning, and competition is gradually increasing.(When answering the question, I do not recommend learning PHP in depth)
JavaScript: The front-end and back-end routes are compulsory. This currently has huge potential and is very popular. If you are engaged in front-end, you can’t go too deep. You can learn JavaScript well. Let you achieve financial freedom... But the disadvantage is that the knowledge system is getting larger and larger, with more branches and countless frameworks. It is almost impossible to learn well. JS also needs to be mastered on the backend. Otherwise, in today's world where JS is so popular, if you don't understand JS on the backend, it will be difficult to communicate with the frontend. JS has transformed from a simple web scripting language into a full-stack Web development language. Nowadays, there are so many things that JS can do. The JS community and even Silicon Valley companies like Facebook are keen to make open source contributions to JS! Moreover, such as Node.js, which was born for asynchronous, and even React, which has entered the field of Native App development, every open source technology will be a kind of black technology of the Web. I dare to ask which language can do it? (Recommended for developers with the most learning spirit to study in depth)
Python: Back-end and operation and maintenance electives. Although they are said to be electives, in fact they are basically impossible without taking them. Today’s startups are more inclined to Python. In a certain way It is very similar to PHP, but Python can do so many things. I like to compare Python to a Swiss Army knife! PHP is nowhere near that. Efficiency comes from two aspects. In terms of performance, the language itself has average performance, but as a glue language, you know it; in terms of development, it is highly efficient, which is also an important reason for its popularity. For WEB, there is also an operation and maintenance direction, and Python is particularly important to them... Of course, you probably don't want to do operation and maintenance. Learning Python in depth will make you more Geek and your work more Automatic. Excellent Python jobs will also pay you a lot of salary (it is also recommended that every engineer learn in depth, but they do not necessarily only focus on this one) ) (2016.11.15 Added: An excellent performance solution for Python is PyPy implementation. Although it needs to be adjusted with the official version, if you are interested in Python and its performance, if you want to understand its underlying implementation, study PyPy carefully)
C++ : A compulsory course for low-level engineers. If a web engineer wants to study C++ in depth, I don’t rule out that he has a tendency to abuse himself. My undergraduate degree in EE is about hardware, and C++ is for us to use. If you are pursuing low-level development, such as Web Server, you can study C++ in depth, and C++ for server is basically the field of games... and C++ is difficult. Even if you study in depth for a few years, you won't be able to figure out anything. If you are engaged in web development in a broad sense, if you have the heart, you should study other things. (Not recommended)
Ruby: Elective for individual developers. Have you heard of "Hotel California" by the Eagles? The song was so famous that it made the Eagles' other great songs lose their luster. When it comes to Ruby, it must be the RoR framework. RoR is so famous that it is difficult for people to have other expectations for Ruby. But besides RoR, what else does Ruby have? Yes, and that ruby-like grammar. Writing Ruby is quite enjoyable, and you can do whatever you want, but sorry, sometimes too much freedom is not what the team needs for development. You can learn Ruby. I define it as an elective course for individual developers. Maybe this language is more suitable for entrepreneurship... Of course, you will say that Ruby is very popular in Silicon Valley, but this is CHINA, you know. Another point is that Ruby was born in an island country after all. If you don’t have a good command of Japanese, do you still want to integrate into their community? (Not recommended)
Golang: Elective for low-level engineers. This is still a language for the bottom layer of the Web. Its correct classification is the same as C/C++, called "system programming language". Do you understand? After all, he was born in the new era and was born with excellent parallel programming capabilities. In the TIOBE ranking in October 2016, Go showed strong momentum, and people who learn Go generally want to embrace Google's lap...Go Like Swift, which is also gaining momentum, you need to wait and see, don’t be anxious yet. (No guidance) (2016.11.15 Added: At present, the mature web frameworks in Go include gorilla and domestic beego, you can search and learn about it by yourself.)
丫, after searching it, I didn’t mention Java, network programming First language, this is one of the important ways to reach the peak of life. Are you strategically ignoring it?
Don't learn the language.
Learn frameworks, tools, and most importantly, principles.
This thing is just a matter of taste.
The status of js Python ruby go will rise, php will fall, and java will remain unchanged.
You can learn anything.
JS simplicity is beautiful
There is no end to learning! Multiple technologies and multiple paths!