Need advice about which tool to choose?Ask the StackShare community!
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.
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
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:
- 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
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.
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😊
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.
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.
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
I am willing to build a used car sales platform, which will have a lot of stock/photos and will rely a lot on the back end functions and data generating. Java seems to be a good choice, but what other options can I consider that can also be easily scalable as well as a little faster to write?
Hi, Kamal! I don't know if your question is still relevant. But I would like to introduce you to our solution, perhaps it will be useful for future projects. We have developed a web application constructor that can be used to create almost any website or application https://falconspace.site/. The entire development stack is reduced to SQL only. The platform is easy to configure and make subsequent changes if necessary.
Firstly, you must know that java and python are both amazing languages. But I recommend python mainly because of the variety of modules and packages available to do almost anything. If you are planning on adding graphs, you can use the matplotlib library and to add photos, use the pillow module. And just note that both of these aren't available by default, so you need to install them through pip.
I am an undergraduate in computer science. (3rd Year)
Then, later, for back-end programming languages, Rust seems like your best bet. Its pros: - it's satisfying to work with (after the learning curve) - it's got potential to grow big in the next year (also with better paying jobs) - it's super versatile (you can do high-perf system stuff, graphics, ffi, as well as your classic api server) It comes with a few cons though: - it's harder to learn (expect to put in years) - the freelancing options are virtually non-existent (and I would expect them to stay limited, as rust is better for long-term software than prototypes)
And if you want to go with python as a secondary tool then i suggest you to learn a python framework (Flask,Django).
Hi. Currently, I have a requirement where I have to create a new JSON file based on the input CSV file, validate the generated JSON file, and upload the JSON file into the application (which runs in AWS) using API. Kindly suggest the best language that can meet the above requirement. I feel Python will be better, but I am not sure with the justification of why python. Can you provide your views on this?
Python is very flexible and definitely up the job (although, in reality, any language will be able to cope with this task!). Python has some good libraries built in, and also some third party libraries that will help here. 1. Convert CSV -> JSON 2. Validate against a schema 3. Deploy to AWS
- The builtins include json and csv libraries, and, depending on the complexity of the csv file, it is fairly simple to convert:
import csv import json with open("your_input.csv", "r") as f: csv_as_dict = list(csv.DictReader(f)) with open("your_output.json", "w") as f: json.dump(csv_as_dict, f)
The validation part is handled nicely by this library: https://pypi.org/project/jsonschema/ It allows you to create a schema and check whether what you have created works for what you want to do. It is based on the json schema standard, allowing annotation and validation of any json
It as an AWS library to automate the upload - or in fact do pretty much anything with AWS - from within your codebase: https://aws.amazon.com/sdk-for-python/ This will handle authentication to AWS and uploading / deploying the file to wherever it needs to go.
A lot depends on the last two pieces, but the converting itself is really pretty neat.
This should be pretty doable in any language. Go with whatever you're most familiar with.
That being said, there's a case to be made for using Node.js since it's trivial to convert an object to JSON and vice versa.
I would use Go. Since CSV files are flat (no hierarchy), you could use the encoding/csv package to read each row, and write out the values as JSON. See https://medium.com/@ankurraina/reading-a-simple-csv-in-go-36d7a269cecd. You just have to figure out in advance what the key is for each row.
I am trying to make Roblox game which requires Lua. I quite don't want to go with Lua just because other tools just might let me do more projects later on. I heard that Python is most similar to Lua, but I am still not sure which tool to use. Java, I think it will help me with many stuff later on for websites, projects, and more!
Since you are trying to make a Roblox game, you have no other option than to use Lua, since Roblox only allows coding in Lua. Yes, you've heard right, Python is identical and as easy as Lua, although Lua is easier than Python. Beginning from Lua and then escalating to Python is recommended. Java is only helpful when you are creating a heavy, big-budget, enterprise-level product, otherwise, Python would suffice.
If you really hate lua check out roblox-ts, a tool that compiles typescript code into roblox lua. https://github.com/roblox-ts/roblox-ts
Hi everyone, I have just started to study web development, so I'm very new in this field. I would like to ask you which tools are most updated and good to use for getting a job in medium-big company. Front-end is basically not changing by time so much (as I understood by researching some info), so my question is about back-end tools. Which backend tools are most updated and requested by medium-big companies (I am searching for immediate job possibly)?
Thank you in advance Davit
Go with Python definetly. It's used everywhere by web developers for backend developments : API, website backend, workers... but also by data scientists (lot lot of resources, models and libraries in Python it's language #1). For the web parts, best web framework are in Python : https://stackshare.io/microframeworks (Flask #2 and Django #3). Java is good but trend is not great in terms of popularity amongs developers and tech leaders.
As per my experience java is most wanted for web development as of now. micro service is evolving . with frameworks like spring boot supports rapid development. Spring boot + Docker + kubernetes great combination.
I would recommend Python as the programming language and as you are a new developer, Flask to start with. It gives you a solid understanding on the web patterns such as REST and will get you up and running in no time. However, I suggest you to read and study on front-end technologies like (React or Vue) and databases (SQL and NoSQL) and probably some NodeJS as well. First grasp the concepts (which Python is ideal for) then it does not really matter the language as such.
I've been juggling with an app idea and am clueless about how to build it.
A little about the app:
- Social network type app ,
- Users can create different directories, in those directories post images and/or text that'll be shared on a public dashboard .
Directory creation is the main point of this app. Besides there'll be rooms(groups),chatting system, search operations similar to instagram,push notifications
I have two options:
- React Native, Python, AWS stack or
- Flutter, Go ( I don't know what stack or tools to use)
Hope that helps, and good luck with your project!
I'm typically agnostic when it comes to picking languages. Whatever gets the job done, but, in this case, to figure out what's involved with what you want to do, it's going to be much more than just picking programming languages for your client and backend interfaces.
So, I'm recommending you use Flutter+Firebase as a way to figure out what you need to get done. It supports both iOS and Android out of the box, introduces you to a bunch of components you will need to think about in the future (whether you stick with Firebase or not), and the key here, is that there are tons of articles, youtube videos, and other courses you can take to pick it up pretty quickly. You could even clone an Instagram knockoff from github. Guess what else, it's all free. You might not need to worry as much about the backend since there are client libraries for Flutter/Dart for Firebase.
Some might have different opinions, and like I said, I'm usually agnostic, but in this case, you have a lot to consider. Where are you going to store the data? Are people going to need to login? Will there but customized settings the will save even if I close the app? Yeah, that's just a few questions.
Those are just a few. Lots to consider, so if you want to get something in your hand as soon as possible, try a search for flutter + firebase + chat + Instagram or something like that and have a look.
If this is for learning about how to design the system, then pick the tools are you are confortable with.
Often times, I get stuck picking the tools (and trying to learn about them) vs actually trying to design the system itself.
If you are familiar with React (check out Expo) and Django then I would recommend going with that.
For deploying your backend, I would go with a provider like https://zeit.co/ that automates a whole bunch of deployment steps with their cli tools that you might have to do with AWS.
The above listed tools will do the job, you just need to figure out your architecture(e.g models). How they will all connect. Then you can use a tool you are comfortable with to implement them.
What you need to take a look at is Apache OpenMeetings. It already does what you want, it is open source and well documented and only requires that you design the UI and plumbing required to serve you application.
Let's select right tool you feel you are good at. And selecting tools are used by large community to solve your stuck if encounter
We are converting AWS Lambdas from Java due to excessive cold start times. Usage: These lambdas handle XML and JSON payloads, they use s3, API Gateway, RDS, DynamoDB, and external API's. Most of our developers are only experienced in java. These three languages (Go, Node.js, and Python) were discussed, but no consensus has been reached yet.
I've worked with all three of these languages and also with Java developers converting to these languages and far and away Go is the easier one to convert to. With the improved cold-start times and the ease of conversion for a Java developer, it is a no-brainer for me.
The hardest part of the conversion though is going to be the lack of traditional Classes so you have to be mindful of that, but Go Structs and interfaces tend to make up for what is lost there.
Full Disclosure: I'm a 95% Go convert (from Python) at this point in time.
Go would provide the easiest transition for Java programmers -- its IDE/tooling is second to none (just install Goland) and the deploy/distribution story is extremely clean and lends itself to work well in lambda: single, static binaries with quick startup. No need to set up a full environment or package dependencies on your lambda AMIs, just copy a file.
So I'd agree, on the strength of AWS Lambda support and the solid performance of Go, it seems like your best choice here for Lambdas (and I'm going to need to consider that myself going forward... pardon the pun).
I use TypeScript because:
- incredible developer tooling and community support
- actively developed and supported by Microsoft (yes, I like Microsoft) ;)
- easier to make sense of a TS codebase because the annotations provide so much more context than plain JS
- refactors become easier (VSCode has superb support for TS)
I've switched back and forth between TS and Flow and decided a year ago to abandon Flow completely in favor of TS. I don't want to bash Flow, however, my main grievances are very poor tooling (editor integration leaves much to be desired), a slower release cycle, and subpar docs and community support.
I use TypeScript because the tooling is more mature (the decision to discontinue TSLint in favor of moving all its checks to ESLint is a thoughtful and mature decision), there's a ton of examples and tutorials for it, and it just generally seems to be where the industry is headed. Flow (JS) is a fine tool, but it just hasn't seen the uptake that TS has, and as a result is lacking a lot of the nicer small things, like thorough Visual Studio Code integration, offered by TS.
We currently use TypeScript at work. Previously we used Flow (JS) but it was sometimes really difficult to make the types work the way you want. Especially non-trivial types were problematic. And the IDE support wasn't good, Flow took too much resources and sometimes remain stuck and do not show errors (I use Visual Studio Code). With TypeScript we almost do not have these problems. IDE support is superb, working with types is much easier and typing system seems more mature and powerful. There are some downsides (like partion inheritance etc.), but TS team is still pushing it forward. So for me TypeScript is clear winner.
Since we're migrating the codebase to TypeScript , we'll likely end up removing most usage of it and ultimately no longer needing it, but we've been very happy with the library.
I use TypeScript for Web Applications and for both frontend and backend because it has a lot of tooling around it and they really got the types and type safety right. Flow (JS) on the other hand lacks tooling and most of the times I scramble to find the right way of building my contracts in which TypeScript is very intuitive and natural. Additionally TypeScript is very similar to Java so your backend engineers and full stack engineers can work with it without much of context switch.
The only time I think Flow shines is (based on probably my outdated knowledge) Flow is/was the only option if you want/wanted to build a React Native application mainly because React Native transpiler at the time I was working with it would only work with flow.
I use TypeScript because it's adoption by many developers, it's supported by many companies, and it's growth. AngularJS, React, @ASP.NET Core. I started using it in .NET Core, then for a job. Later I added more Angular experience and wrote more React software. It makes your code easier to understand and read... which means it makes other people's code easier to understand and read.
I use TypeScript because I tried both on a Meteor project, and found the quantity of errors it enabled us to catch and the simplification of code it allowed was higher than Flow (JS).
I use TypeScript because of broad support, on tools, repos, community ... the only reason to consider flow is if you're a facebook employee
I use TypeScript because i love to program in Angular and used in node as well
I recommend TypeScript. When used correctly, TypeScript can enable your application to be scalable, easy to refactor, safe, and stable. One of the biggest draws of working with any typed language is that it forces you to think about your functions' inputs and outputs. This is invaluable as it can lead to more declarative, functional style code that ultimately can be easier to reason about.
TypeScript is however not a silver bullet. Just like anything new it takes time to fully understand the concepts of types, interfaces, abstract classes, and enums. In my experience engineers who excel when using TypeScript are those who have experience working with a statically typed language.
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.
There isn't much to be said here, but on most counts go beats both Python and Node.js on performance.
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.
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.
Both PHP and Python are free but when it comes to web development PHP wins for sure. There is no doubt that Python is a powerful language but it is not optimal for web. PHP has issues... of course; but so does any other language.
Another reason I chose PHP is for community - it has one of the most resourceful communities from the internet and for a good reason: it evolved with the language itself.
The fact that OOP evolved so much in PHP makes me keep it for good :)
In December we successfully flipped around half a billion monthly API requests from our Ruby on Rails application to some new Python 3 applications. Our Head of Engineering has written a great article as to why we decided to transition from Ruby on Rails to Python 3! Read more about it in the link below.
We decided to use python to write our ETLs and import them into metabase via a lambda. Before python we tried using Go, but overall go was way more verbose than Python when writing the ETLs. Go also had some issues managing memory when using the S3 upload manager library. This was a deal breaker for us that made us switch to Python.
In the end the solution was much cleaner and maintainable.
A number of years ago; I had done python for a long time prior to learning about Go. Most of what I wrote was system-like things and web-things in python, and I got tired of running into the lack-of-a-type-system problems that python gave me. I wanted to switch to a compiled, strongly-typed system that wasn't C/C++ (been there, done that, got the "shoot yourself in the foot" t-shirt). I looked into both Rust/Go, and for what I wanted to do (system/web) stuff ... at the time, Go was the strongest candidate, so I switched and never went back. Recently I started to re-look at Rust for system things, but for anything I do that I have to touch the web with, it will be Go from now on.
We needed to incorporate Big Data Framework for data stream analysis, specifically Apache Spark / Apache Storm. The three options of languages were most suitable for the job - Python, Java, Scala.
The winner was Python for the top of the class, high-performance data analysis libraries (NumPy, Pandas) written in C, quick learning curve, quick prototyping allowance, and a great connection with other future tools for machine learning as Tensorflow.
The whole code was shorter & more readable which made it easier to develop and maintain.
The decision behind choosing a server side technology is never an easy one. Every single language has it's pro's and con's around each.
For me, this decision came down to a couple simple points: 1. Node is a web tech first class citizen, designed around handling web events, in a web technology world 2. Asynchronous
The thing about Python and Java is that they TOO can handle these, and handle these very well. Java for instance powers most of Twitter and Netflix's architecture. Where Python is what's behind giants like Instagram and Patreon. Certainly, you can't go wrong. Heck, Ruby powered GitHub and GitLab, and those things see HUGE traffic.
But this project is a web technology first. And node feels right at home as it itself is a web technology. This decision was more about homogeneous synergy than most anything else. I need it to be screaming fast, asynchronous, and play extremely well with web standards.
Node fits the bill on every front.
PHP is easy to learn and you can get up and running in no time, available on almost all hosting providers and you can find developers easily. It has some great frameworks for building your backend like Symfony and Laravel. However, it can be challenging when running an enterprise and needs some adjustments, very recommended for starting a new project or startup.
Pros of Python
- Great libraries1.2K
- Readable code948
- Beautiful code835
- Rapid development780
- Large community682
- Open source426
- Great community278
- Object oriented268
- Dynamic typing214
- Great standard library75
- Very fast56
- Functional programming51
- Scientific computing43
- Easy to learn43
- Great documentation33
- Matlab alternative26
- Easy to read25
- Simple is better than complex21
- It's the way I think18
- Very programmer and non-programmer friendly15
- Machine learning support14
- Powerfull language14
- Fast and simple13
- Explicit is better than implicit9
- Clear and easy and powerfull8
- Ease of development8
- Unlimited power8
- Import antigravity7
- It's lean and fun to code6
- Print "life is short, use python"6
- Python has great libraries for data processing5
- Fast coding and good for competitions5
- There should be one-- and preferably only one --obvious5
- High Documented language5
- I love snakes5
- Although practicality beats purity5
- Flat is better than nested5
- Great for tooling5
- Readability counts4
- Rapid Prototyping4
- Web scraping3
- Multiple Inheritence3
- Complex is better than complicated3
- Beautiful is better than ugly3
- Now is better than never3
- Lists, tuples, dictionaries3
- Socially engaged community3
- Great for analytics3
- CG industry needs3
- Simple and easy to learn2
- Import this2
- No cruft2
- Easy to learn and use2
- List comprehensions2
- Pip install everything2
- Special cases aren't special enough to break the rules2
- If the implementation is hard to explain, it's a bad id2
- If the implementation is easy to explain, it may be a g2
- Easy to setup and run smooth2
- Many types of collections2
- Flexible and easy1
- Powerful language for AI1
- It is Very easy , simple and will you be love programmi1
- Batteries included1
- Can understand easily who are new to programming1
- Should START with this but not STICK with This1
- Only one way to do it1
- Because of Netflix1
- Better outcome1
- Good for hacking1
Pros of TypeScript
- Type safe103
- The best AltJS ever47
- Best AltJS for BackEnd27
- Powerful type system, including generics & JS features15
- Nice and seamless hybrid of static and dynamic typing11
- Aligned with ES development for compatibility10
- Compile time errors10
- Structural, rather than nominal, subtyping7
- Garbage collection1
Sign up to add or upvote prosMake informed product decisions
Cons of Python
- Still divided between python 2 and python 351
- Performance impact28
- Poor syntax for anonymous functions26
- Package management is a mess19
- Too imperative-oriented14
- Hard to understand12
- Dynamic typing12
- Very slow11
- Not everything is expression8
- Indentations matter a lot7
- Explicit self parameter in methods7
- Incredibly slow7
- Requires C functions for dynamic modules6
- Poor DSL capabilities6
- No anonymous functions6
- Official documentation is unclear.5
- The "lisp style" whitespaces5
- Fake object-oriented programming5
- Hard to obfuscate5
- Circular import4
- The benevolent-dictator-for-life quit4
- Lack of Syntax Sugar leads to "the pyramid of doom"4
- Not suitable for autocomplete4
- Meta classes2
- Training wheels (forced indentation)1
Cons of TypeScript
- Code may look heavy and confusing5
Sign up to add or upvote consMake informed product decisions
What is Python?
What is TypeScript?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
Red Hat, Inc.