yeah, performance optimization is the big cost with funcitonal languages, be it tail recursion or unfolding recursive stuff... recursion is very popular with functional languages but it has its own particular problems, i feel like the Go Authors have declined to add tail recursion to the language because the same logic is more efficiently expressed with for and switch and using concurrent channels and coroutines

Reply to this note

Please Login to reply.

Discussion

wait what? go doesn't have tail call recursion, does it?

sorry, I read declined as decided, lol

yeah they declined it, it's something you can dig out of the golangnuts mailing list from at least 5 years ago, they just don't see the point of adding this feature to the compiler because of the dramatic computation cost

didn't know but it's type of smart decisions they tend to do.

unlike the whole module shit. that was ... hard

haha yeah... i refused to use modules for a whole year, they were buggy af lol

now, idk how we'd survive without it but i'm not sure they did it quite perfect, i still keep a GOPATH as a convenient way to organise all my repos

but it works!

there's some glitches here and there with dependencies sometimes though... the btcd and lnd repos notably are a shitfight of dependencies literally back to different versions of the same fucking repo, it's madness

I too can't imagine working without modules.

but it was hard for us early adopters

it probably boils down to compiler. tail call recursion is hard to do (right).

expensive compilation, same problem as OOP, which doesn't exist with imperative style structural typed, interface and simplified template generics

my compilation is done in under 3 seconds almost every time, idk how anyone can experience go compilation and wonder at why they put up with thees other languages compile times

i've seen C++ compilations blow right over top of my memory several times in the past, memory use, sheer time...

i mean, building our esteemed nostr:nprofile1qy88wumn8ghj7mn0wvhxcmmv9uqjqamnwvaz7tmwdaehgu3wv45kuatwv3a8wctw0f5kwtnnwpskxef0qyfhwumn8ghj7mmxve3ksctfdch8qatz9uq3yamnwvaz7tmwdaehgun4v5hxxmmd9uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcqyrhprfwl7sxpnf247s07g26g7q8xrry3yftz9t3hkmptkeahd38yj4jvnvj 's gossip client takes at least 5 minutes, i know it's a fairly sophisticated app but that is still over the top in my book

I am a build master in our company and it takes 50 minutes to compile our 35 milions lines of java code from scratch 😂

(without cashes and stuff)

well, yeah, java has some crappy build systems too... that is worse than i'd expect from Rust, but cargo basically rips off Go's build cache system