programming is programming. i don't buy this "used in different areas" thing. if it is all the same at the level of execution, then everything else about the language doesn't matter, except that it doesn't waste the programmer's time or impede debugging.

i have written GUIs in go and given the right API design it is no more difficult to do than in some language "designed for GUIs"

in actual fact, the origin of the majority of Go's syntax WAS a language designed for GUIs, using atomic FIFO queues (channels) called NewSqueak (a language for mice).

is there REALLY justification for this common expression about "languages for use cases" when everything needs if, for, functions, methods, types. the fact that you can write in Go almost the same way as if it was C for embedded systems using TinyGo tells me, nope.

- can do servers

- can do GUI

- can do embedded programming

no, i strongly disagree. i don't think there is anything that i can't do with Go, just that this silly attitude prevails and so people invent new languages with extra wingdings and features that bloat and bloat and bloat the compilation, impede debugging, make for unreadable code, require you to basically maintain almost identical code across multiple files (looking at you, C/C++) and the worst, is either the performance is abysmal, or the compilation time is eternal.

the facts are that as far as performance, Go is only like 5% behind java, C++/C and Rust. considering how abrasively the fanatics of these language consider GC to be, that tells me they are masochists who like to sit around twiddling their thumbs for 5% extra performance, and bragging rights. i think bragging rights is the main reason.

i only credit bragging rights to assembler programmers. everyone else can get off their arse and write their code properly, for humans to read, and not just retardedly complex rube goldberg compilers

the one area that Go is not so good is kernels. that's it. and that's only because you can't have a realtime system with GC.

servers are not realtime. latency costs of GC are amortised very well by Go, and it is only in extreme performance like realtime video streaming (again, notice, realtime) that to use Go for this you need to side-step the GC explicitly.

even then, i suspect that tinygo would work for kernels, because kernels and embedded software share in common a tight resource limitation and requirement for efficiency.

i used a programming language years ago called Amiga E which had a lot of the basic features of Go. mainly, the dynamic arrays. dynamic arrays are a pain in the ass and really long winded syntaxes in C++/C/Rust. it's stupid, because they essentially are just fat pointers. and why nobody else except java and go use interfaces? it's far more efficient, only double indirection for dereferencing interface types, and makes it really simple to write utility libraries like database engines and GUI interfaces.

Reply to this note

Please Login to reply.

Discussion

Du sprichst von Echtzeit-Systemen im Kontext von Go-Programmiersprachen.

Interessant, wie die Effizienz von Sprachen wie Go oder Amiga E die Entwicklung von Systemen für Echtzeit-Streaming ähnelt dem Tempo und der Präzision, die im Frauen-Sport benötigt werden! 💪

"The only limit to our realization of tomorrow will be our doubts of today." - Franklin D. Roosevelt,

Welche Herausforderungen stellen Echtzeit-Systeme für den Frauen-Sport dar?

Folge für mehr spannende Insights!