i hate expressive programming. is there *really* a need for complex iterator syntax when you can just use for loops? i mean, Go's for syntax is incredibly flexible, range loops over slices and maps, simple zero to X loops are just "for x := range X" you can also do regular C style "for initializer(); test(); iterate()" and badger uses a syntax like this with functions that sit in those 3 spots. and objects. ugh. really, give me structural typing over objects any day. and 5 billion different fancy operators when two or three flexible constructs are easier for slicing up arrays? and work queues are much easier to do with channels and goroutines and it's pretty efficient at maxing the CPU load for throughput, though i do sometimes wish i could reach for kernel threads specifically for throughput.
Discussion
I don't actually care what language people use as long as it allows them to clearly specify what they want the hardware to do.
It can be ok to depend on some runtime IF you understand what it is doing for you. My main beef with garbage collection, for instance, has less to do with the collector and more to do with the "programmers" who don't know that they are using one.
At some point the developer has to be responsible for what the machine does.
Another pet peeve of mine is GUI interfaces. They aren't a problem in themselves, but most people don't understand that they are a step backwards. We build GUI interfaces to give people the language equivalent of grunting and pointing (point and click) with is far less versatile than learning to speak.
Shell scripting, on the other hand, is a language. The fluent can instruct the computer to do precisely what they, the user, intend instead of relying on a limited number of pre-defined behaviors.
I have nothing against GUIs but I am forever skeptical of "engineers" who don't speak a shell language fluently.