Need advice about which tool to choose?Ask the StackShare community!
Python vs Spring: What are the differences?
Key Differences between Python and Spring
Python and Spring are both popular frameworks used in software development, but they have significant differences. Here are the key differences between Python and Spring:
Language Type: Python is a dynamically-typed programming language, whereas Spring is a Java-based framework. Python allows flexibility with its dynamic typing, allowing developers to change variable types easily. Spring, on the other hand, follows static typing principles with Java, which ensures type safety and prevents unexpected runtime errors.
Development Paradigm: Python is a general-purpose language and supports multiple paradigms like procedural, object-oriented, and functional programming. Spring, on the other hand, is primarily focused on the object-oriented programming paradigm. Spring encourages developers to follow the Inversion of Control (IoC) and Dependency Injection (DI) principles for building loosely-coupled and modular applications.
Ease of Use: Python is known for its simplicity and easy-to-read syntax, making it an ideal choice for beginners. Python's concise coding style allows developers to write code quickly. In contrast, Spring, being a robust framework, has a steeper learning curve and requires knowledge of Java and the Spring ecosystem. Spring provides powerful features and extensive libraries that cater to enterprise-level applications.
Community Support: Python has a vast community of developers, which results in abundant resources, libraries, and frameworks available to aid development. The Python community actively contributes to open-source projects, making it easier for developers to find solutions to their problems. Spring also has a strong community, especially within the Java ecosystem, providing comprehensive documentation, forums, and support for developers.
Application Domain: Python is widely used in various domains, including web development, data analysis, machine learning, and scripting. Its versatility enables developers to build a wide range of applications. Spring, on the other hand, is primarily used in Java Enterprise Edition (JEE) projects, focusing on building scalable and robust enterprise-level applications. Spring integrates well with other Java technologies and frameworks, making it a preferred choice for large-scale enterprise applications.
Performance: Python, being an interpreted language, may not offer the same level of performance as compiled languages like Java. While Python is highly productive and performs well in most scenarios, it may not be the best choice for computationally intensive tasks. Spring, being based on Java, benefits from the performance optimizations provided by the Java Virtual Machine (JVM), making it suitable for high-performance applications.
In summary, Python is a versatile and easy-to-use language suitable for a wide range of applications, while Spring is a robust framework primarily used for building enterprise-level Java applications, providing powerful features and extensive community support.
I am technical support. I work daily with Windows Server / Exchange, Active directory. I would like to learn scripting and automation to make my life easier. I just started learning PowerShell but not really sure about the correct study path from where I can start. I am taking some courses on Udemy and YouTube. Is it enough?
My first foray into programming was with powershell and it continues to be an enormous help for me in my career (caveat being that I have primarily worked on windows boxes). That being said, PowerShell is a weird language that has some unique syntax and operators that don't translate well to other languages. Python is weird too, but for other reasons (spacing!). I suspect you'll get more immediate benefit spending some time on Powershell since your working in an environment that fully supports the ps toolset.
As for learning, I read "PowerShell Toolmaking in a Month of Lunches" and found that helpful. However, I think your course of study is sufficient. Think the most return for the effort was just messing around in the powershell IDE on my local computer and working the Microsoft documentation.
Taking courses on Udemy and YouTube will be helpful I'm sure, but don't neglect the power of practice. If you work largely with Windows right now, pick powershell. Take opportunities to convert the knowledge you already have (example: unlocking an account in Active Directory or adding an email alias in Exchange) from a manual process to a powershell method. Sometimes that's a single cmdlet (Unlock-AdAccount) and sometimes it's a script.
Once you have a good understanding of variables, the pipeline, and foreach loops, you'll be in a position to accelerate your learning. Looking up Microsoft docs is part of the process :)
I would consider reading "Powershell for sysadmins" from No Starch Press. Start small with the ActiveDirectory and AzureAd modules. Start with read only operations like pulling AD Group Members into a variable and then pipe that variable into a .csv file with Export-CSV cmdlet. Once you feel more comfortable with the syntax, specific cmdlets, and piping data start looking at specific techniques like using hashtables (dictionaries) and globbing. From there you can begin to construct your own functions and modules. Just start small and don't let yourself get overwhelmed.
I am a beginner, and I am totally confused, which of these 3 languages to learn first. Go, Rust, or Python. As my studies are going which of them will be easy to learn with studies that is, I can learn and do my studies also. Which one of them will be easily handled with my studies, and will be much much useful in future?
Python is a great language to learn as a beginner. However, Go is really easy to learn as well and has a much more powerful standard library that will allow you to build very complex and powerful applications in the future. Go is becoming a standard in Cloud computing and concurrency. Both of which are very advanced but important.
I'd definitely start with Go. I know Python, Go and quite a few other languages.
Rust is not easy to learn as a beginner.
Python has way too many features to be called "easy" to learn. While it is very forgiving to beginner mistakes it feels like playing in a puddle of mud. It does not teach you clean programming at all. Unless of course you like messy.
Go on the other hand is very easy to learn. As a professional you can learn the entire language in under 2 hours. I have already given the tour of Go (https://tour.golang.org/) to complete beginners and they went through it very thoroughly and thereby knew the entire Go language in less than 5 days. While it is very easy to learn and very easy to read, it is quite strict on other things, guiding you to write clean code. For one it is a typed language and it is good to learn very early about types.
Knowing the entire language is of course not all there is to know. There is the standard library and a lot of other libraries to get to know in every language. Also one has to learn patterns in every language, get experience on how to structure code, dig deeper into the language itself to understand its inner workings, etc. That takes years in every language.
That being said, it depends very much on what you want to do with a language. If you want to go into ML and science you definitely need Python. If you want to go into cloud computing, distributed servers (which in my opinion any server should be nowadays), use Go. If you want to do systems level programming, e.g in hardware programming, use Rust.
I have experience in all three languages, and you should learn python first. These are three different languages (read: tools) to solve different problems you may have. Python is a high level language you can use for writing cross-platform scripts, web servers, AI, websites (e.g. Django) and the list goes on. Python can be used for most programming tasks while being the easiest to learn of the three and probably the most productive as well.
A lot of tech companies start out with Python for their web services, but due to Pythons slow speed and the pain that comes with dynamically typed languages when the code base grows, switch to Go later on when they need to scale. Go is a systems language that thrives when used for high performance cloud/web or networking services. Go is used in performance critical networking situations such as Twitch's streaming services and Uber's geofence services. It's also very clean and simple syntax that makes it very easy to quickly understand what code does.
Python is an interpreted language and Go is a garbage collected language, but Rust is a highly performant and reliable compiled programming language without the extra baggage of runtime memory management. Rust forces you to follow coding patterns that assure memory safety. This makes Rust a perfect fit for high performance algorithms, game engines or safety-critical systems, but would be overkill for web servers or scripts on modern hardware.
If all you want is a gentle intro and have access to tools and libs that can help with your tasks, Python is the way to go. It's ecosystem is huge and the language is easy to pick up. However, if you are aiming to get into software industry, I'd highly recommend you also pick up another classic language like C++/C#/Java. It really helps you cement some CS & programming fundamentals and get more familiar with the concept of software design and software architecture. Not saying you cannot achieve good architecture in Python or Go, but traditionally you have more materials covering these classic OOP languages. And once you learn them, you can apply your knowledge to other languages and it helps you understand other languages faster.
Rust is probably a bad choice for starting out. It is a low level language where garbage collection is not done automatically, and has to get you thinking about all the technical aspects. It is statically typed and compiled, so it's very strict with how you code. I do love Rust though, it's a nice language. Golang is also compiled and statically typed, but it aims to be for quick development, which makes it a better choice for starting out.
Python though can be great for starting out and getting a hold on how to program. You don't need to worry about things such as types, garbage collection, or an overwhelming amount of data types. Since I'm a JavaScript fanboy I can't help but say another great popular choice to start is JavaScript 😁
If you start learning programming I'd suggest Python language. I have no experience with Go and Rust so I cannot give you advice for them.
Python has the broadest reach as it's been around the longest; rust is much more difficult for a beginner to learn; I work with Go every day and it's probably the most productive general use language.
Go and Python are going to be much easier to learn than Rust. The memory management for Rust is pretty hard to wrap your head around when you are first learning how to do basic things with the language. Get familiar with programming first, then learn Rust.
I'd choose python because with a good knowledge of python and it's libraries, you could do literally anything. Also it has a relatively simple structure, so it won't be tough for a beginner.
Later on if you wish to learn Rust and Go, please do by all means.
I agree with most of the other answers here. Python is the best choice because it is super user-friendly, has an easy syntax, and can do many complex things in relatively fewer lines.
While Rust is a more recent and a great language nonetheless, it is slightly more complicated as it involves compiling and the syntax isn't so great.
And Go is the not a great choice either. While it has a decent syntax, keep in mind that Go won't be of much use unless you plan on working in Google. Even if you want to learn it, you can do so later.
I hope this helped you in making your decision, and welcome to the world of programming! I hope you enjoy.
Python is a great language to start programming with, there is an awesome python course on coursera by Dr. Charles Severance called Programming for everybody, check it out :)
Python, because its the easiest to learn as a beginer. Its often called "English without grammar" because its terms and writing style is quite similar to English. Python also has a diverse range of applications like Web App, Desktop App, Data Science etc
Learn/start with C; don't rush after buzz words. Python is easy to learn but you would not get the underpinnings of memory and pointers, an important aspect of programming.
Python is the easiest of the languages to learn, and while the slowest in production, it will teach many of the basic fundamental concepts of programming, especially if you're not going to be doing anything low level or at a system level.
Study, machine learning = Python | High performance computing, safety-oriented programming = Rust | Backend, feel productive with less runtime performance drawback = Go
Python is the best programming language for starting out as it is quite easy to learn, but it also is very powerful and you can do plenty with it. It will be useful for a long time. Python is my recommendation.
Is learning Spring and Spring Boot for web apps back-end development is still relevant in 2021? Feel free to share your views with comparison to Django/Node.js/ ExpressJS or other frameworks.
Please share some good beginner resources to start learning about spring/spring boot framework to build the web apps.
Java in general, in my opinion, is somewhat outdated in 2021. C# is a better language, and therefore, I think ASP.NET (Core/.NET 5) should be used over it. Node.js isn't bad if you are getting started, or if you need to prototype an app. I use Node in production because of TypeScript, but .NET is a really good framework that has excellent performance.
I am provided with the opportunity to learn one of these technologies during my training. I have prior experience with Spring and found it tough and still haven't figured out when to use what annotations among the thousands of annotations provided. On the other hand, I am very proficient in Java data structures and algorithms (custom comparators, etc.)
I have used Node.js and found it interesting, but I am wondering If I am taking the risk of choosing a framework that has a comparatively lesser scope in the future. One advantage I see with the node.js is the number of tutorials available and the ease with which I can code.
Please recommend which path to take. Is Spring learnable, or should I spend my energy on learning Node.js instead?
I do not know Spring or your company/specialty. Of course it must be learnable and I won't tell you to give up on anything. Java is and will remain valuable.
Regardless, I don't think "lesser scope" is a valid strike against Node.js here. Node.js fulfills JavaScript's original vision of an everywhere language and can run anywhere that Java can. It serves webpages, communicates with hardware, powers command line tools, and builds desktop applications. A huge complexity-saver for teams running many environments (my biggest regret is that it cannot run a microcontroller).
Node.js' biggest practical weakness is that JavaScript is less structured than Java. Luckily, the large influx of Java developers has been helping with this: gaps like constants and private properties are gradually filling in, and TypeScript firms up the types to the point where JavaScript looks a lot like Java.
Probably more potential competition from the larger pool of JS developers, but the compensation is allegedly similar so I guess there is a similar supply/demand situation.
hi this depends where you want to advance . If you want to work for an big aged company with a lot of legacy go the spring way (banks, insurances netflix etc ) if you want to go the new agile fast cloud way learn node js it is much more suited for cloud and micro service even spring cloud can do that as well but it is much more heavier
Hi all, I have been working on the development and automation of construction software using C# and Python. Recently I have started working on Django python web framework and basic frontend for web development. I am really confused to choose between C# and Python to move forward in my career. Seeking your advice on these technologies and their future market value from a career perspective. Thanks,
In my opinion, a modern developer should have deep knowledge about Object Oriented (OOP) and Functional Programming (FP). The programming language is something that must come later. Any good programmer should be able to switch from one programming language to another easily, if they follow OOP and FP. There are languages, though, that must absolutely be in the portfolio of a modern developer: Java, C#, Python and JavaScript. But be prepared to know also Scala, Kotlin, Swift, Go, Ruby, Rust and TypeScript.
It depends on your preferred career path, if you want to work in start-up/scale-up environments, you probably want to go with a language like Django for the rapid development (fast to production). On the other hand, C# or Java would be better for building long term and large scaled applications, although, Django could certainly achieve this as well. I also want to second that it won't hurt to know both languages, pick your technologies wisely according to the use case, don't stick to a single technology stack. :)
C# and Python are both great languages. With great communities, libraries, frameworks, opportunities. I think it will be the same in a near future.
It’s matter of your likes, and your next jobs.
Dot net core is a little faster on performance. Python more popular with dynamic types. Probably the most lovable language.
Hi, I'm just starting to learn code, and I stumbled upon this website. I think I should learn JavaScript, Python, and C++ to begin with. I'm a quick learner so I am only worried about what would be more useful. Suppose my goal is to build an online clothing store or something. Then what languages would be best? I need advice. Please help me out. I'm 13 and just beginning and it's hard to understand when people use technical terms so please keep it simple. Thanks a lot.
Go with Python. It's syntax is really simple and less verbose compare to others. You can use Python for basically anything like web dev, task automation, data science, data engineering, cybersecurity etc. At initial level, it's more important to get an understanding of programming fundamentals. Once you get conformable with coding in general, then you can explore other languages.
I would worry less about languages when you're first starting out. If you want to build an online store, then javascript is a great language that is used all over the web! Get comfortable with your first language, learn some computer science concepts and how to build things the right way, and then just work towards a goal and learn as you go!
https://www.w3schools.com/ is a great resource and it's completely free, everything you need to know to build a website is on that page if you have the drive to learn it. Best of luck to you!
Here's a neat roadmap too, in case you find yourself lost on what to learn next https://roadmap.sh/frontend
I recommend JavaScript to build your first website, for both FrontEnd and BackEnd , even tho I am a BIG fan of C++ it is not well suited yet to create websites, and Python would be just as good for the BackEnd as JavaScript but having everything written in only one language will make your learning curve way easier, so it is easy to recommend JavaScript.
Python is an easy and beginner-friendly language. As you've mentioned about Online Clothing store, you'll need to deal with the website part and you'll need Javascript to make the site accessible and functional. Javascript will be more easy to learn if you learn Python first, so you can just start with Python.
Hello Rachel, as a fellow programmer, I am glad that you are planning on expanding your coding knowledge and skills.
I recommend learning python first as it has a very simple syntax (syntax is how your code looks and how simple it is to type) and is also very user-friendly. Once you get to know how to code in python, you can use this thing called Flask.
Flask is what you call a "web application framework" or a WAF, it basically is a tool used to develop websites and other similar things. You don't have to worry much about it's difficulty because it is based on python. You will still have to learn how to use Flask though as it could be a bit complicating in first glance.If you are looking for simpler ways for making website without having to learn a lot of programming, you can learn HTML and CSS. These 2 will help you in making a basic and functional website. The catch is, from a career perspective, HTML won't get you far, as literally every programmer knows it. So it is best to use programming languages.
I hope this gave you a clear understanding of the ways in which you can build websites. Wishing you the best of luck!
I have worked with all these a ton. I make ecommerce and enterprise apps now. The only one of these you need is JavaScript. You can use JS on the backend as Node.js in AWS Lambda. You will need HTML and CSS skills, as well as a database. I recommend MongoDB. Please forget about C++ until you built your first company. Python fits the same purpose as Node.js but is currently popular in the Data Science community so skip it until you have a LOT of customers.
Since you're new, I'd recommend Javascript and Python. With Javascript, just learn React and Node. And with Python, learn Django. With JavaScript, Node, React, Python, and Django; you can accomplish quite a lot for both frontend and backend.
Hi, When saying that "Suppose my goal is to build an online clothing store or something", I would go for a ready to use platform like Wordpress. it will give you a fast jump into the online world. By using WP you'll have to catch on with PHP\JQuery Goodluck.. Ping me when store is ready, I might buy something....
I am new to programming and am a university student. While Computer Science is not my area of study, I am majoring in a subject that branches off computer science and health informatics, which deals with databases. I am currently in a programming fundamentals course at my university. My instructor mentioned that he develops in Java, but I have heard many good things about Python and JavaScript before taking his course; while we are only doing the fundamentals, I believe he is teaching us some in Java.
Since I am new to this, I'm not sure what I like more. I have also been self-teaching before this course but have not gotten deep into a particular language's fundamentals. I want to decide on a language and stick to it before I move to a new one after the first language is learned, but it is difficult deciding which language to start with. I want to develop medical software and medical mobile apps.
There's a reason many universities start with Java- it has strict rules and lays out code in a straightforward (if excessively-boiler-plate-heavy) way. For a beginner, Java is an excellent way to learn the fundamentals of programming before taking off the training wheels and continuing in more flexible, less-syntactically-rigorous direction like Python or JavaScript.
Sticking to a language before moving on is a common goal. However, in reality you are going to transition as you find languages that better suit you or your organization's requirements. Start with Java, not because it is optimal for your end goals, but because it will teach you what you like and dislike about programming and because your instructor is more familiar with it. That will give you a valuable perspective and allow you to make a more informed decision later.
There are many ways to solve problems in different languages, but the "best" language pragmatically is the one that you feel most comfortable using. In that respect, programming is like woodworking- you want to let the tool do the work. If there is another language that is "better" objectively but more difficult or confusing to you, you will counteract the anticipated benefits by having to struggle to write code.
The only way to solve this problem while avoiding opinions and tastes is to objectively look at what you are trying to build.
Thus the most efficient part of your question is your last sentence: you want to build medical software and medical mobile apps.
In that case, the answer is definitely Java, as is for all "real" software projects.
Python is good for data science, in other words for statistics. Its other competitive advantage is that it is easy to learn for beginners, but that would be a bad reason to use it for a "real" software project.
JavaScript is a mess you don't want to get into. The major reason why it's popular is that many people learn it first, because its very basic features are easy to learn, although they don't get you far, and because it used to have exclusivity on the web. But in reality it will make your life a lot harder after a few weeks, without any benefit. I know I'll get criticisms for that, but I stand fully by this position.
try with python because easy ... its good for u when u are learning basic's and they have many library that help's u with mobile app and desktop application but it is not the best ... when u are learn programming will with python then start with js basic's and then (react native) or flutter and also u can use java for mobile development bur i recommend first choices ..and for Desktop application java is have an amazing library (java fx ) for this type of application's and C# is one of most powerful language's for software development . good luck
Since you're already taking a CS course which involves Java, I would recommend you to keep learning it. Java's statically typed & OO nature forces you to learn a lot of important yet common programming fundamentles. C++, C# and Java type languages also force you write code more carefully (you have to think about the data types on your own and even allocate/de-allocate memories [C++ pointers]). That's why colleges prefer it as go to language for teaching CS concepts.
On the other hand, JS, Python and other such languages are dynamic in nature and hence, easy to learn. But you can't learn certain concepts (polymorphism, abstract classes, diamond problem etc) using these languages. So it makes sense to stick with Java in your case.
Since your instructor is using Java, i'd start with Java. If you want to get into mobile development, I'd check out flutter / dart. Good luck!
My advice to anyone learning to program is to not obsess on the language.. You SHOULD learn all languages.. Same as learning human spoken languages - the more you learn, the more ways your mind can interpret a new problem set. Learning them at the same time isn't a big deal (just like growing up in a bilingual home). Your language and your software stack are guaranteed to change 3 times in your career. Don't assume you're going to choose the "right one". And you wont waste any time learning one you never wind up using.
As a person who works on linux and OSX desktops, I have a personal bias against working for companies and software stacks that require C# or Visual Studio. But this is not due to their technical merits, but instead the OS as a platform condusive to efficient CLI toolchains and container management. But aside from that, I can use vi/IntelliJ-suite to write most languages, so language isn't a real concern. If you're windows bound, pretty much everything is available to you (through VMs and docker).
Ideally you do at least SOME full stack development learning. This means you'll need javascript, and thus nodejs would be a good stack to learn. If you ultimately like gaming or 3D, you might need C# and certainly python.
Any AI (which is a hot employment topic for the forseeable future) would like python skillz.
I personally love Java (and Android's Kotlin varient) for it's very very well designed multi-threaded libraries. go and rust are newer and thus do a slightly better job at this, but due to the open-source nature of java and editors that auto-reveal function call source code, it's very easy to learn how vendors implemented MT code and various other algorithms. Python should be equally "open" to 3rd party library review (and thus again how they solve complex problems), though a lot of times, I see python resorting to compiled C-libraries (and thus the cost to crack open the code and or trace through the code becomes too burdensome to bother).
While I've seen many people recommend Java (and I agree with them), I think you can learn both. But it depends on how much time you got. I recommend you first learn Java. Then python will be easy to learn, and focus mainly on modules for graphs. The reason why I recommend to learn both is because python is much better and easier to code about statistical analysis. But again do this only if you have time to just learn them.
If your project doesn't have anything to do with statistics and data analysis (I'm pretty sure you do though), learn only java. Also if you are wondering why I never mentioned JavaScript (JS), it's because i really don't recommend it. JS is much harder to learn and requires a lot of lines of code to do simple things.
Although java seems to be a good fit for you. It is a cumbersome language to get started out. It will be far easier for you to learn Python and stick with it long term. This is due to the fact you will be easily able to google things for python and you will spend less time learning the language, and more time using it to do what you want.
Making mobile apps is easier with Java due to the fact that google does not directly support app building with python. If this is your biggest priority stick with Java.
Javascript: This language is the best language to learn if you are making a website. However, for easy of use you can do all the database access stuff with python. And send back the data to your website. Javascript is also another cumbersome language in my opinion.
Each language has its use. If I were In your situation, I would choose the language that's easy to start with.
There is always trade off between them. If you want to make mobile app JavaScript is better. I suggest start the one you feel more close and learn all of them :) You are quite young you have enough time for them.
It would be great if you first go with Java. It could give you complete understanding of programming concepts. Such as data types. Later you can move to Python , which is great for data processing and Machin learning stuff.
I currently work helpdesk and have been for about 6 years. I am looking to become more valuable, and I can't decide what route to take? Python is of interest, and so is PowerShell. What are some recommendations? Maybe something that would benefit a helpdesk position or even get into a network administrator.
I think that if you plan on sticking around enterprise systems and Microsoft, you should definitely get into some PowerShell. Basically anything you do via Active Directory, you should try mirroring it in PowerShell. It’s an easy one to learn, and it’s easy to follow that into Azure CLI. I was in the same boat as you — Did Helpdesk/System Administration for 10 years. PowerShell got me out.
I would also recommend PowerShell! Since I started learning PowerShell, a lot of possibilities opened up for me, I even became a PowerShell MVP. Since PowerShell Core/6/7 it has gotten a lot of interest in the Linux community and I love it for it's flexibility and possibilities only limited by your imagination ;) Check out the community dashboard to see the current usage https://aka.ms/PSGitHubBI, check out the PowerShell docs at https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7, especially the "Learning PowerShell" section and feel free to contact me for further questions!
PS: Just to be complete on this, I also use Python, but in a very different scope. Python in my opinion is the best for data analytics related tasks or even whole production (web) applications (e.g. with Django). PowerShell is great for automation, orchestration and all the little tasks that makes your everyday life easier.
Definitely PowerShell. While you can do network related stuff with python, powershell gives you an in-depth understanding of various parts of the internet. This is because you manually execute each and every step, while in high end languages, you just use 1 or 2 commands. While powershell might take a bit more time, it will be really useful to understand networking and will give you a considerably high boost in terms of your career too.
I would recommend learning to use both python & power shell (plus Linux/WSL) by using them to do aspects of your current work better/faster/easier. You will definitely benefit from reading https://docs.microsoft.com/en-us/windows/python/scripting.
I would suggest taking a look at https://automatetheboringstuff.com/ - with a little thought I am sure that there are aspects of your current role that you can simplify or enhance by following the suggestions & doing so will give you valuable experience and may result in offers of more interesting roles growing from your current one.
Hello, how are you, my friend, I needed help learning Python. If you can help me, I will be very grateful to you.
Hi, I have a project on my mind, and I need some help. First of all, I know it is all about personal preference, but I am a beginner in the back-end part. So, I am trying to figure out which language is better, for example, for user authentication and interaction between the users. Also, I don't know which framework is better for this work. My first thought was to use PHP, but after some research on the internet, I'm leaning towards Laravel. I will be grateful if you have some advice for me.
#newbie
First thoughts: * As a beginner you need to understand concepts first, all languages out there are great, each has it's own philosophy, each is better suited for a specific situation. Learn concepts first, do something, then you will understand the differences between them and why one should be chose over another for a task * As a project manager you want your project to come to an end. You will get lost in all the different solutions out there (and it's good), but don't get lost too far. Very often I see people getting lost in those debates and never achieving things, like someone writing a book that would still be choosing the font 6 months after (we've all done that it's ok, but we have to realise it)
Chances are your project can be equally good on any different stacks. I heard an interview of someone from Uber who said something like they started with python, went to node, went back to python and went to go, and with micro-services now they can have all of them all-together.
Last remark: from what I know Laravel is a framework for PHP, so it IS PHP. Just like Symphony for PHP, Express for Node.js, Koa for Node.js, Flask for Python ...
Now to answer your question :
- PHP has a big community, it is great and easy to start with, and you will definitely will learn real object oriented structure
- Node.js has a big community too, don't worry finding help will be as easy. It is less easy to start with but in my point of view it is a lot easier to keep on going with it on a long run. Why ? Because it's very easy to run a new project, and it executes javascript. How is it good ? Because chances are that your front will also be using javascript (React.js / View.js are crazy good). Thanks to that you will be able to master the language better because you will use it all day (and at first mastering one language is more valuable than barely knowing two) and you won't have to switch languages in your head when you code. And communication between front and back will be in json ... Which is crazy close to javascript.
Alexander is right, if you go with PHP take your time first to do things by yourself like building your own MVC, the benefit is huge and the risk is to never really be able to understand what's happening on a deeper level. (at some point you can switch to a framework though). He's also right on choosing a strongly typed language, problem is javascript is not. This is why, if you choose node, when you start being confident, add typesccript.
Hope it helps, good luck
Short answer, if it's a web project (and I guess it is) go with PHP and you can integrate NodeJs services later.
@adzaria (Ezra Fayet) gave a great answer and I'd like to emphasize the first part: As a beginner you need to understand concepts first
. For me that means to understand the web, how servers and requests work, APIs and few others.
Now, I'd like to add few things so, this is the long answer:
Why PHP?
- Everyone knows about the community - PHP is way older so you will find lots of resources and I am not only talking about learning - also lots of helpful tools and packages
- PHP is great for OOP - not perfect, but with PHP7 got great - and if you are a beginner you want to know good OOP for your future. Let's say JavaScript's OOP is a bit strange; I will not get into details but, let's say "it's not by the book". You can still learn JavaScript for your front-end
Why not Python? Python got popular because of AI - don't use PHP for AI and don't use Python for web applications. I can elaborate a lot here but I guess you get the point.
Why not NodeJs?
- NodeJs got popular because of sockets - and it works great, but as a service
- Try to find a good and affordable hosting for NodeJs. How about for Python?
- I would not ignore the security issues that it had and could appear. PHP is older and, therefore, wiser :)
Now, about a framework... is this a learning project or something that you need to do fast? My advice is to start a small project and not use any framework. However, you can use packages and inspire from a framework's architecture - Laravel is a good role model.
Why not start a big project? You will get distracted, get into details and product design stuff and get scared or border and abandon it. For your project you need an MVP - list of minimum required features that you put on paper - that you will complete. After that you can improve.
Good luck!
you can choose Node.js Here are my points
Node.js is build over chrome’s v8 and its works on non blocking io. Node.js have huge community and great packages (npm) to help you out in most cases and makes development faster Node.js has been adopted by many multi dollar company Hope this helps😊
I have used Laravel, but with Django you can develop faster, as authentication and admin panel are configured out of the box. It users SQLite by default and you won't have to worry about the database in the begginning
You cannot choose between Python | PHP | NodeJS Since they are entirely for Different purpose.
In Bird view
Python - Large Scale Projects and if you want a job in big IT company.
Node.JS - Huge computing projects and if you want job in Silicon valley startup.
PHP - Cost Effective and If you want start a business in near future.
Python, PHP and Node.js all are capable of being used to create good complex software. There are many examples of similar applications built on all of them. If I have to pick one, I would say consider Python and Django. It is fairly easy to develop web applications on top of this stack. Scaling and maintaining the application should also not be a problem given a lot of resources are available online.
The reason why i chose PHP is the amount of content you can find on the internet easily. As you quoted being a beginner, i think a more mature language would be better. And that's also another reason for following with PHP.
Python is simple and "mature", but it can be a bit hard to understand if you are a beginner. Python relies on heavy abstraction, and that's the reason behind it's simplicity. Python is an "easy to play, hard to master" language, i never recommend it to beginners. Also, one [maybe personal] reason why i don't like to use Python as back-end is: Python is very data-focused. So if your app has focus on business logic, Python wouldn't fit very well. And with that becomes an advantage, if your app has statistical focus, being data-focused or something like that, Python has huge advantage among all other languages due to many great tools the community has built.
About Node, it's like PHP, but less mature. It's as easy as PHP to find tools that can help you, for example, to abstract the database-connection's logic. But to find architectural-focused content, more advanced concepts, it's a lot harder. While that, Laravel's community, for example, has a lot of materials that involves those concepts.
Still, if you are really a beginner, i don't recommend using Laravel with PHP. Do things on plain PHP first, understand the reason behind using frameworks and Laravel's motivation.
Also, consider a strong-typed language first, those are considered more didatic, but less flexible.
I am a graduate student working as a software engineer in a company. For my personal development, I want to learn web development. I have some experience in Springboot while I was in university. So I want to continue with spring-boot, but I heard about Django. I'm reaching out to the experts here to help me choose a future proof framework. Django or Spring Boot?
Thanks in Advance
Kamrul Hasan, Don't choose dying technologies with small communities. How many startups do you think use Spring and Django? Use Google Trends to compare technologies. Study the StackOverflow developer survey and job websites to see what technologies are wanted. Few teams can afford to train you to get up to their level so be a life-long learner. Embrace the dawn of a new industry and become an expert.
I recommend you stick to Java Spring as you already have experience with the technology, i suggest you master this technology and then if Django seam to be very interesting to you, django is a framework you can easily pickup as python is also easy, you have to probably be able to manage the context switching between a static typed language like Java to dynamic language like python
Hi Kamrul,
It really depends on the kind of project and whether you feel more comfortable with Java or Python. Both are excellent frameworks, with a huge community and learning material. I've been working with Spring Boot since I started coding almost and I can assure you it's the perfect combination for Java. The learning curve may be harder that Django, but once you know the basics you're good to go. I can't tell you much about Django but you must now by now that it has a great reputation with Python users. In any case I don't think you can go wrong with any of these two. My advice is, if you are already familiar with the Spring framework, give Spring Boot a try, because you're going to find out that it just makes the whole Spring experience so much easier. Let us know what you chose!
It depends on what you want. Spring is Java-based whereas Django is Python-based. The question rather is Java vs Python. I personally recommend Python as it's shorter and easy to learn. But Java has advantages in really big systems.
Both are in active development and had huge community support. It really depends on you what you are comfortable with. Both are married to their respective languages. I choose Python over Java because of its simplicity and readability. To develop in java you need to write a lot of code. That's how java is. The best part I love with Django is its synchronization with Databases.
I am working in the domain of big data and machine learning. I am helping companies with bringing their machine learning models to the production. In many projects there is a tendency to port Python, PySpark code to Scala and Scala Spark.
This yields to longer time to market and a lot of mistakes due to necessity to understand and re-write the code. Also many libraries/apis that data scientists/machine learning practitioners use are not available in jvm ecosystem.
Simply, refactoring (if necessary) and organising the code of the data scientists by following best practices of software development is less error prone and faster comparing to re-write in Scala.
Pipeline orchestration tools such as Luigi/Airflow is python native and fits well to this picture.
I have heard some arguments against Python such as, it is slow, or it is hard to maintain due to its dynamically typed language. However cost/benefit of time consumed porting python code to java/scala alone would be enough as a counter-argument. ML pipelines rarerly contains a lot of code (if that is not the case, such as complex domain and significant amount of code, then scala would be a better fit).
In terms of performance, I did not see any issues with Python. It is not the fastest runtime around but ML applications are rarely time-critical (majority of them is batch based).
I still prefer Scala for developing APIs and for applications where the domain contains complex logic.
Context: Writing an open source CLI tool.
Go and Rust over Python: Simple distribution.
With Go and Rust, just build statically compiled binaries and hand them out.
With Python, have people install with "pip install --user" and not finding the binaries :(.
Go and Rust over Python: Startup and runtime performance
Go and Rust over Python: No need to worry about which Python interpreter version is installed on the users' machines.
Go over Rust: Simplicity; Rust's memory management comes at a development / maintenance cost.
Go over Rust: Easier cross compiles from macOS to Linux.
I use Powershell for everyday scripting, text manipulation, simple REST api testing and other tasks. My choice to use Powershell was primarily based on availability. At the time (2010), every company machine I was using or going to use was Windows and guaranteed to have Powershell. Python was an option but not guaranteed to be installed on every machine. The choice was not based on ease of use, flexibility or support.
We’re a new startup so we need to be able to deliver quick changes as we find our product market fit. We’ve also got to ensure that we’re moving money safely, and keeping perfect records. The technologies we’ve chosen mix mature but well maintained frameworks like Django, with modern web-first and api-first front ends like GraphQL, NextJS, and Chakra. We use a little Golang sparingly in our backend to ensure that when we interact with financial services, we do so with statically compiled, strongly typed, and strictly limited and reviewed code.
You can read all about it in our linked blog post.
We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.
As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:
Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.
PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.
We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.
Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.
Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.
With Python + Django it was so much faster to create a typical website like this. Using Go would take to long to launch the initial version. For example, Python could handle complex data type with less line of code. Django also has many built-in libraries and a huge ecosystem of libraries that can be easily used to build a feature.
We changed to Python instead of Java to have the back-end processing in the same language as our data analysis module. In addition, Python has a lot of libraries for data-processing. We intend to use Flask for our back-end web development. Flask is a simple, straight-forward framework for our purposes. Flask also has a large community which is beneficial to the development process.
Backend:
Python is a great industry standard language that can easily handle both machine learning and web development tasks. Our dev team is very familiar with the language and has used it in various web and Machine learning projects. Python has many versatile ML specific libraries that include TensorFlow, Pytorch, Pycaret, and Keras. It also has packages for data manipulations and visualization like Numpy, Pandas, and Matplotlib. Since our software requires machine learning algorithms, big data processing and a backend server, Python seemed like the way to go.
Our team decided to go distributed databases (NoSQL) over a relational database (SQL) because of the NoSQL dynamic schemas for unstructured data. We are using MongoDB as our NoSQL database due to its simplicity, schema less documentation, deep/fast querying ability, user data management, big data, JSON style documents, and great scaling out. We also chose MongoDB due to its horizontal scaling as a NoSQL database.
Since we are using python as our backend programming language, we decided to use Flask as our web framework. Flask is a micro and lightweight web framework that provides the required functionality to efficiently develop our web server. Flask has a great community with many online resources and provides more flexibility in terms of customization when compared to other frameworks like Django. While Django is great for large scale applications, it does not work well with NoSQL databases.
Frontend:
For our front end framework, we decided to go with React due to its component based structures, flexibility, scalability, and high performance. React has a strong community and is trusted by top companies such as Facebook, Netflix, and Paypal. We can also easily transition our react app to a react native or electron app. We will also be using material-ui framework alongside react for that crisp google material design!
Node.js will be used for development purposes for the front end only. Once we deploy for production, the react frontend will be served from the flask web server and will not require Node.js. This separates the frontend and backend during development, making it easier to work with.
Javascript is one of the most widely used languages for front end development and we will be using it alongside React to develop our user interface. Our dev team is familiar with it through previous web projects. Given how popular it is, its community is very active for any problems that come up and is easy to hire for in the future.
1. Type safety and inferred types
Go is type safe by default, which allows you to right more reliable code and have better developer tooling, plus with the :=
operator, you can initialize a variable without having to define its type because it automatically gets its type from the initial value.
2. Performance
There isn't much to be said here, but on most counts go beats both Python and Node.js on performance.
3. Documentation
I'm not talking about the Go language itself, although it does have good docs. I'm talking about Go's auto generated documentation tool, which allows people to document their packages easily and works amazingly with Go's type system.
4. Compiles to binary
If you are making a local program for somebody and they don't want to download the Go compiler, you can make Go into a native binary.
5. Built for the web
Go has built in Http libraries to rival Express.js and has a HTML/Text templating system.
6. Great Concurrency
Go utilizes Goroutines to help developers utilize multiple threads easily.
Conclusion
Go is an excellent choice for any system code, especially http networking and web backends.
Node continues to be dominant force in the world of web apps, with it's signature async first non-blocking IO, and frankly mind bending speeds. PHP and Python are formable tools, I chose Node for the simplicity of Express as a good and performant server side API gateway platform, that works well with Angular.
Pros of Python
- Great libraries1.2K
- Readable code962
- Beautiful code847
- Rapid development788
- Large community690
- Open source438
- Elegant393
- Great community282
- Object oriented272
- Dynamic typing220
- Great standard library77
- Very fast60
- Functional programming55
- Easy to learn49
- Scientific computing45
- Great documentation35
- Productivity29
- Easy to read28
- Matlab alternative28
- Simple is better than complex24
- It's the way I think20
- Imperative19
- Free18
- Very programmer and non-programmer friendly18
- Powerfull language17
- Machine learning support17
- Fast and simple16
- Scripting14
- Explicit is better than implicit12
- Ease of development11
- Clear and easy and powerfull10
- Unlimited power9
- It's lean and fun to code8
- Import antigravity8
- Print "life is short, use python"7
- Python has great libraries for data processing7
- Although practicality beats purity6
- Now is better than never6
- Great for tooling6
- Readability counts6
- Rapid Prototyping6
- I love snakes6
- Flat is better than nested6
- Fast coding and good for competitions6
- There should be one-- and preferably only one --obvious6
- High Documented language6
- Great for analytics5
- Lists, tuples, dictionaries5
- Easy to learn and use4
- Simple and easy to learn4
- Easy to setup and run smooth4
- Web scraping4
- CG industry needs4
- Socially engaged community4
- Complex is better than complicated4
- Multiple Inheritence4
- Beautiful is better than ugly4
- Plotting4
- Many types of collections3
- Flexible and easy3
- It is Very easy , simple and will you be love programmi3
- If the implementation is hard to explain, it's a bad id3
- Special cases aren't special enough to break the rules3
- Pip install everything3
- List comprehensions3
- No cruft3
- Generators3
- Import this3
- If the implementation is easy to explain, it may be a g3
- Can understand easily who are new to programming2
- Batteries included2
- Securit2
- Good for hacking2
- Better outcome2
- Only one way to do it2
- Because of Netflix2
- A-to-Z2
- Should START with this but not STICK with This2
- Powerful language for AI2
- Automation friendly1
- Sexy af1
- Slow1
- Procedural programming1
- Ni0
- Powerful0
- Keep it simple0
Pros of Spring
- Java230
- Open source157
- Great community136
- Very powerful123
- Enterprise114
- Lot of great subprojects64
- Easy setup60
- Convention , configuration, done44
- Standard40
- Love the logic31
- Good documentation13
- Dependency injection11
- Stability11
- MVC9
- Easy6
- Makes the hard stuff fun & the easy stuff automatic3
- Strong typing3
- Code maintenance2
- Best practices2
- Maven2
- Great Desgin2
- Easy Integration with Spring Security2
- Integrations with most other Java frameworks2
- Java has more support and more libraries1
- Supports vast databases1
- Large ecosystem with seamless integration1
- OracleDb integration1
- Live project1
Sign up to add or upvote prosMake informed product decisions
Cons of Python
- Still divided between python 2 and python 353
- Performance impact28
- Poor syntax for anonymous functions26
- GIL22
- Package management is a mess19
- Too imperative-oriented14
- Hard to understand12
- Dynamic typing12
- Very slow12
- Indentations matter a lot8
- Not everything is expression8
- Incredibly slow7
- Explicit self parameter in methods7
- Requires C functions for dynamic modules6
- Poor DSL capabilities6
- No anonymous functions6
- Fake object-oriented programming5
- Threading5
- The "lisp style" whitespaces5
- Official documentation is unclear.5
- Hard to obfuscate5
- Circular import5
- Lack of Syntax Sugar leads to "the pyramid of doom"4
- The benevolent-dictator-for-life quit4
- Not suitable for autocomplete4
- Meta classes2
- Training wheels (forced indentation)1
Cons of Spring
- Draws you into its own ecosystem and bloat15
- Verbose configuration3
- Poor documentation3
- Java3
- Java is more verbose language in compare to python2