3 ms·
Another way to get Go like speed is to use Go. Go has an excellent built in http web server, and unlike Python it comes standard with a bug reducing type system
by ilovecaching 8y ago
Another way to get Go like speed is to use Go. Go has an excellent built in http web server, and unlike Python it comes standard with a bug reducing type system and an easy and intuitive syntax. In fact, the entire specification of the language can be read in an hour by a novice programmer.
Not only that, but Go has best in class editing support in VSCode and Vim, has an official code formatting tool (sorry black), and makes writing concurrent code painless with a syncronous abstraction (sorry asyncio).
Also it may have good response times in a vacuum but there’s still the Python memory tax, startup times (which matter when you need to scale horizontally), and scaling of latency to think about.
- tiangolo 8y agoYeah, the advantage here over Go would be to have automatic data validation, serialization, and documentation, all based on standards: OpenAPI and JSON Schema. Including automatic web user interface for API documentation. And maybe the dependency injection system. And Python's ecosystem with lots of packages. And that Python is the best/main way to do Machine Learning/Deep Learning. I personally don't think new asyncio (Python 3.6) is more difficult, but that's more personal taste. Indeed, FastAPI inherited benefits from ideas in Go and other languages and frameworks.
- ilovecaching 8y ago> Yeah, the advantage here over Go would be to have automatic data validation, serialization, and documentation, all based on standards: OpenAPI and JSON Schema. Including automatic web user interface for API documentation. Golang has libraries for all of the things you mentioned, and web tools to generate APIs based on those schemas. There's no advantage here over Go. > And maybe the dependency injection system. Go has interfaces, which facilitates easy DI. No advantage there, and Go sells itself on not having a magic DI framework like the crap Angular 1 had. > And Python's ecosystem with lots of packages. Python's ecosystem may have more packages taken as a whole, but Go has a richer web and infrastructure community thanks to being a web first language and growing out of the DevOps community. > And that Python is the best/main way to do Machine Learning/Deep Learning. Which means nothing. You shouldn't be running ML in your web server. You use grpc or http to make requests to your ML backend, or generate a config for the web server to consume. > I personally don't think new asyncio (Python 3.6) is more difficult, but that's more personal taste. Even if it isn't more difficult, functions have to be colored async which leads to ecosystem fragmentation. It's a huge pita.
- lapnitnelav 8y agoDude, are you a Go bot written to promote Go? Have you considered that maybe not every one wants have anything to do with the 8th wonder of the world that is Go? Take it easy pal, let people enjoy things.
- ilovecaching 8y agoLanguages aren't flavors of ice cream. Considering the technical arguments of one technology over the other is part and parcel of our profession, and online forums are we go to have these discussions. The person who wrote this, or the people who might look to consume it might not know that better alternatives exist that can meet their requirements and offer them additional advantages.
- tiangolo 8y ago> Golang has libraries for all of the things you mentioned, and web tools to generate APIs based on those schemas. [...] Would you cite some? I would love to see the links, packages, etc. And how could you achieve the same in Go: Having a single type declaration, get web data validation, serialization, documentation with OpenAPI and automatic clear error responses. I would love to see it, because before building FastAPI I looked for it in Go-land a lot too, and didn't find it, not even closer to the tools that already existed in Python.
- dr_wolf 8y agoIt looks like some (extremely dedicated) trolling, don't take it seriously. There is certainly nothing wrong in expanding the ecosystem of your preferred language!
- ilovecaching 8y agoThe way I see it, you're offering no counterpoint and trying to discredit me with a character attack, which makes you the troll.
- haolez 8y ago
- tomchristie 8y agoPython is a hugely productive language. That's the benefit. We're building out an async ecosystem here that makes it way more performance-competitive with Node and Go. For a lot of folks it's going to hit a sweet spot of developer productivity plus ability to scale up hugely. That's a big deal. Doesn't mean you have to use it, but there's no need to neg on the great work folks are doing in this space just because Python's not your preferred language of choice.