>I don’t see Go as something that is going to serve as a “better C”, so I’m waiting for something new.
This surprised me a bit. I think most people who tried Go would agree that it is, in fact, a better version of the C programming language. It follows many of the same UNIX-y principles and it's a pleasure to work with, mostly because the syntax just gets out of the way. I'd like to know more about his point of view if he's reading here :)
And while I'm at it, I want to thank Salvatore for giving us redis, which is also a pleasure to work with.
The C programmers whom I know don't like Go because it doesn't have pointer arithmetic, and the runtime does some "magic" stuff like the goroutines. A lot of C programmers don't really like encapsulation as much as people who are used to object-oriented languages.
C++ and Java programmers see Go as an intentionally crippled language without inheritance or generics, which they can't quite wrap their heads around. Java programmers have a very hard time accepting the lack of dependency versioning, and the Go team's insistence that it is not important is mind-boggling to anyone who has been using Maven for years.
Ruby and Python programmers see Go as a step back in usability and syntax, and those who have not used a statically-typed language see a lot of boilerplate.
On top of all of that, any of the aforementioned ecosystems have a large set of libraries that are widely known and standard in the industry.
I like Go, and I think most programmers would like it if they gave it a chance, but I think it challenges too many peoples' preconceptions. Compare that to Scala, which you can sell as "better Java" and get people on board immediately.
> I don’t see Go as something that is going to serve as a “better C”, so I’m waiting for something new.
Go probably would not be a good candidate for something like Redis, as performance and memory use could become worse. As pointed out elsewhere, Go has become a better replacement for scripting languages is some circumstances, more than it has been used to replace C.
> I’m not a big fan of new things in IT when they have the smell of being mostly fashion-driven, without actually bringing something new to the table.
Assuming this still refers to Go, I can't think of a new yet less "fashionable" language [1], which is in part why I like it.
I think the Go compiler, runtime, and GC would need to mature a lot before it could be used to create something competitive with Redis. But it is moving in that direction. A pauseless GC[1], a numa-aware scheduler with lower overheads[2], more efficient atomic operations[3], all these are/have been discussed by the Go team and are actual goals AFAIK.
I'm building a database in Go, keeping the data off-heap (which solves the GC problem for now.) The performance will lag C currently, but I do think it will eventually get close.
My impression (and I wish I could find the article I'm thinking of that talks about why this is) is that Go has largely failed at being a better C, but has convinced some people that it's a better Python.
As a Python developer, I don't think many Python people consider it a "better Python". It's much less expressive than Python. Python developers are sacrificing a lot of things, but they're keeping simplicity and extreme readability, and gaining massive performance gains.
A "Python-y modern C" would be a better description.
"I was asked a few weeks ago, "What was the biggest surprise you encountered rolling out Go?" I knew the answer instantly: Although we expected C++ programmers to see Go as an alternative, instead most Go programmers come from languages like Python and Ruby. Very few come from C++."
The syntax of go feels a little "expert", while the syntax of C seems more friendly and easy to grasp. I doubt anything will replace C if it's not as easy and simple.
System languages need to be stupidly simple and lack complexity.
One thing that could improve on C, might be very simple things like (immutable?) string as a native type, hashmaps, lambdas, etc. I would love to see some pythonic stuff into C.
Languages NEED to be simple if you want students to be able to learn them. That's what makes the success of C and makes it irreplaceable.
Although I would gladly something like Rust become relevant, if it's backward compatible with C ABIs, why not. But since ecosystems are already divided, I would like to see language dividing things even more.
> The syntax of go feels a little "expert", while the syntax of C seems more friendly and easy to grasp. I doubt anything will replace C if it's not as easy and simple.
I think C is a lot harder to grasp. e.g. manual memory management, dangling pointers, unchecked casts, etc.
> One thing that could improve on C, might be very simple things like (immutable?) string as a native type, hashmaps, lambdas, etc. I would love to see some pythonic stuff into C.
This is totally out of my domain so forgive me if I'm completely wrong here, but my guess is that for such performance-critical, heavily-optimized things as Redis the garbage collector and runtime overhead of Go are too large.
This surprised me a bit. I think most people who tried Go would agree that it is, in fact, a better version of the C programming language. It follows many of the same UNIX-y principles and it's a pleasure to work with, mostly because the syntax just gets out of the way. I'd like to know more about his point of view if he's reading here :)
And while I'm at it, I want to thank Salvatore for giving us redis, which is also a pleasure to work with.