4 ms·
I add that Python is excellent at data representation and transformation. You can easily write some test data and just include it in python, then transform it a
by skriticos2 12y ago
I add that Python is excellent at data representation and transformation. You can easily write some test data and just include it in python, then transform it any way you feel you like to get intelligence out of it. With the standard library you can easily load a CSV file you exported form a data-set and then aggregate and evaluate it with only a few lines of code without much language overhead. Schema-less mixed containers, array operations, dictionaries and sets are incredibly powerful and you can nest them anyway you like. Additionally you can also forget about type limits. Work with numbers as big as you like. That's useful for a lot of things.
Go is good at concurrency and speed. It has some very neat features but it's targeted at a different audience. Data transformations in Go are trickier. You have to do a lot of explicit transformation and that's just not as slick as Python. It really shines with concurrent programming, so I you are writing a server backend for your application and have to decide between C++ or Go, you might very well be compelled to go with Go. (C++ also has it's strength and is healthy as ever with the new standards, just more heavyweight).
- sergiosgc 12y agoI don't get why is Go defined as a competitor to Python. Go documentation itself places Go in the systems programming language class. The same class as C or Rust. The language advantages are defined by comparison to C. Heck, it starts by stating it compiles quickly. I know Go is the language of the moment. Fashionable. I assume I take a cautious stance approaching fads, so I may tend to dismiss new stuff rather than all-in adopt every new tool. Having said that, my quick survey of the language features a couple of years ago produced nothing eye catching. The concept of channels is nice, it lends itself easily to data pipelines and to SIMD parallel programming. It is not a breakthrough, though. SIMD is easily done in many many languages. Other than that, it's pretty down to earth. There's a myriad nice things (first class functions, closures, garbage collection, strong(ish) typing), but nothing ground breaking. There are also some choices that smell, namely the lack of inheritance due to the flat type hierarchy (and the obvious need for a fix), or the inability to overload methods and operators. All in all, there's not enough in Go to warrant the level of attention the language gets. It's a nice language, it's not groundbreaking. On the same class, Rust is looking rather nice. The memory management model alone is enough for me to keep an eye on how its ecosystem develops.
- stormbrew 12y ago> I don't get why is Go defined as a competitor to Python. To me the area where Go excels the most, and where I feel most strongly compelled to use it, is in tooling apps that you expect your users to install on their machines and run from a command line. This has been an area where python and ruby have been pretty common, but they're both a complete pain in the ass to use that way (setting up virtualenv, setting up rvm, pip problems, gem/bundler problems, etc). For eg. we use vagrant and fabric at my work for server management (vagrant+fabric for dev environments, fabric alone for production servers). One's written in ruby and the other is written in python, and we have to spend a non-trivial amount of time managing their dependencies so they continue to install correctly. If they were go apps we'd just build and install binaries. This is the area where I think Go is taking up python users, personally.
- oshepherd 12y agoThe people who call Go a systems programming language are fundamentally misguided. It is an applications programming language under any reasonable definition.
- sergiosgc 12y agoYou know that "the people who call Go a systems programming language" are its authors, do you not?
- coldtea 12y agoYou know that they retracted that line from the Go introduction text on the webpage, don't you? And of course, them being Go's authors and them being wrong on characterizing it, is in no way contradictory.
- sergiosgc 12y agohttp://golang.org/doc/faq#What_is_the_purpose_of_the_project http://golang.org/doc/faq#What_is_the_purpose_of_the_project « No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. (...) We believe it's worth trying again with a new language, a concurrent, garbage-collected language with fast compilation. Regarding the points above [cut on edit]: * It is possible to compile a large Go program in a few seconds on a single computer. * Go provides a model for software construction that makes dependency analysis easy and avoids much of the overhead of C-style include files and libraries. * Go's type system has no hierarchy, so no time is spent defining the relationships between types. Also, although Go has static types the language attempts to make types feel lighter weight than in typical OO languages. * Go is fully garbage-collected and provides fundamental support for concurrent execution and communication. * By its design, Go proposes an approach for the construction of system software on multicore machines. » It is still at the forefront of the language presentation.
- 0xdeadbeefbabe 12y agoGo has pretty neat semantics for channels and goroutines, but it presumes you want threads and blocking IO. Or in other words, "hey kid here's some rope" Your approach to concurrency matters even more than the tool you use, and python is a great tool for network services. It's my preferred tool actually. Maybe it's time to start porting twisted to go.
- Shorel 12y agoI think D will grow in that server space.
- yid 12y ago> I add that Python is excellent at data representation and transformation Indeed! It's a very practical extraction and reporting language.