<devyn>
apparently ec and cloudhead have the same conversations as always
<devyn>
lol
<ec>
devyn: really?
<ec>
I thought that was a first for us
<devyn>
oh, hold on
<devyn>
is cloudhead micah or someone else
<devyn>
I can never keep track of micah's usernames
<devyn>
hmm actually I seem to remember cloudhead is someone else
<devyn>
never mind then
<devyn>
ec: anyway how I look at it is that most dynamic languages have linters, and linters are getting better and better at recognizing obvious
<devyn>
static typing is basically just the logical step up from that: build correctness into the language, so that you have to do a little more work and the linter is no longer an optional thing, but it's able to detect more errors and your program won't even run until it's somewhat formally correct
<devyn>
in a dynamic language (ignoring linters for a moment) except for syntax errors you basically have to run your program over and over to debug
<devyn>
and even then if you don't encounter the bug in that run, it will still be there
<devyn>
linters can find some of those
<devyn>
static typing can find quite a lot of those
<devyn>
it's a tradeoff: instead of just writing stuff and making it work, you're basically involved in a conversation with the compiler
<devyn>
you just keep changing stuff until the compiler says OK
<devyn>
but often once it does say OK, it works, because it's able to catch many common bugs
<devyn>
you're still left with some runtime bugs and incorrect behavior, sure, but quite a bit less
<devyn>
I think in the end it's less work because you don't have to intentionally exercise every execution path
<devyn>
to find everything
<devyn>
most things will be found by the compiler
<devyn>
especially in more advanced static typing systems like Rust has
<devyn>
with explicit ownership / lifetime constraints which make race conditions impossible (in safe code)
<devyn>
the other thing I really like is when I'm writing a lot of code, sometimes forget what I still have to hook up
<devyn>
loose ends that still remain
<devyn>
but the compiler is pretty much always able to find all of that stuff
<devyn>
so when I'm not sure, I just run the compiler and it tells me what I still haven't done
<pikajude_>
devyn: yo
pikajude_ is now known as pikajude
pikajude has quit [Changing host]
pikajude has joined #elliottcable
<pikajude>
jesus christ
<devyn>
pikajude: yo
<pikajude>
hi
<devyn>
hi
<pikajude>
nothing worse than joining freenode with the wrong nick for whatever reason
<devyn>
lol
wraithgar has joined #elliottcable
wraithgar has quit [Quit: Leaving]
embri0n has joined #elliottcable
embri0n has quit [Quit: Leaving...]
Navarr has quit [Quit: Connection closed for inactivity]
Sgeo has joined #elliottcable
embri0n has joined #elliottcable
<cloudhead>
devyn: I'm not micah :>
<cloudhead>
whatever happened to that kid
<cloudhead>
may god be with him
<cloudhead>
erlang is the only dynamic language I've used that I would still consider relevant for serious work
<cloudhead>
but that's because it's /designed/ for runtime failure