purr changed the topic of #elliottcable to: a
embri0n has quit [Quit: Leaving...]
inimino has quit [Ping timeout: 276 seconds]
embri0n has joined #elliottcable
pikajude_ has joined #elliottcable
pikajude has quit [Quit: Quit]
embri0n has quit [Quit: Leaving...]
thealphanerd has quit [Quit: farewell for now]
thealphanerd has joined #elliottcable
brr has quit [Ping timeout: 250 seconds]
brr has joined #elliottcable
brr has quit [Ping timeout: 258 seconds]
brr has joined #elliottcable
Sgeo has quit [Ping timeout: 260 seconds]
brr has quit [Ping timeout: 250 seconds]
brr has joined #elliottcable
Navarr has joined #elliottcable
<devyn> hah, I scrolled up a bit
<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
embri0n has quit [Quit: Leaving...]
alexgordon has joined #elliottcable