#jogamp @ irc.freenode.net - 20160607 05:06:16 (UTC)


20160607 05:06:16 -jogamp- Previous @ http://jogamp.org/log/irc/jogamp_20160606050616.html
20160607 05:06:16 -jogamp- This channel is logged @ http://jogamp.org/log/irc/jogamp_20160607050616.html
20160607 06:31:40 * guillaum1 (~gl@anon) Quit (Ping timeout: 260 seconds)
20160607 07:15:22 * elect (~GBarbieri@anon) has joined #jogamp
20160607 07:17:11 <elect> morning
20160607 07:40:46 * monsieur_max (~maxime@anon) has joined #jogamp
20160607 07:43:50 * Eclesia (~husky@anon) has joined #jogamp
20160607 07:44:07 <Eclesia> hi
20160607 11:51:54 * monsieur_max (~maxime@anon) Quit (Quit: Leaving.)
20160607 13:39:57 <rmk0> Eclesia: https://www.youtube.com/watch?v=DM2hEBwEWPc
20160607 13:40:03 <rmk0> starting at 18 minutes
20160607 13:40:16 <rmk0> extremely good explanation of how critical algebraic data types are
20160607 13:41:15 <zubzub> I'm @ work so I can not watch it
20160607 13:41:17 <zubzub> can you explain?
20160607 13:41:38 * Eclesia working too
20160607 13:41:38 <rmk0> the phrase he uses is "make illegal states unrepresentable"
20160607 13:42:18 <rmk0> i don't think i can really explain without just repeating what the video says verbatim
20160607 13:42:31 <zubzub> ic
20160607 13:42:34 <rmk0> i've written a lot on the subject, but this video is probably the most terse and demonstrative example
20160607 13:42:38 <rmk0> worth saving for later
20160607 13:42:45 <zubzub> I would also like to add: make bad programmers unhirable
20160607 13:43:27 <rmk0> he takes a type representing a network connection, then breaks it up into separate types that each represent each possible connection state, with only the data relevant to each state
20160607 13:43:51 <rmk0> it means that, for example, the program is statically prevented from trying to do things like fetching the address of an open connection when the connection isn't yet... connected
20160607 13:44:05 <rmk0> and so on
20160607 13:44:35 <zubzub> ic... I think
20160607 13:45:53 <rmk0> i've used a lot of languages, written several... don't think there's any single language feature that allow you to eliminate so many classes of bugs, including logic errors, as algebraic data types do
20160607 13:46:24 <Eclesia> but they do not define a language
20160607 13:46:45 <rmk0> Eclesia: how d'you mean?
20160607 13:47:26 <zubzub> Eclesia: that's ok, math is the universal language *cliche*
20160607 13:47:29 <Eclesia> you still need a language over it
20160607 13:47:43 <rmk0> Eclesia: of course
20160607 13:49:34 <rmk0> they form the theoretical basis of the type systems in all of the typed functional languages. when you declare any type whatsoever in haskell, ocaml, etc, you're declaring an algebraic data type
20160607 13:50:03 <rmk0> they're actually supported in various forms in all of the statically typed jvm languages that have been implemented since java
20160607 13:51:02 <rmk0> the speaker in the video is from jane street... high frequency traders. they write code that absolutely must work correctly or they lose shitloads of money in seconds
20160607 13:51:37 <rmk0> algebraic data types are extremely good for writing concise, correct code that has to enforce lots of invariants statically
20160607 13:52:02 <rmk0> i don't think i really knew how to program before i learned about them and spent a couple of years working with them day-to-day
20160607 13:52:40 <rmk0> not sure i've written a java project in the last five years that doesn't contain some form of them (although they have to be implemented in library form from java itself, and have several shortcomings because of it)
20160607 13:53:16 <rmk0> still get most of the same static safety guarantees, but the syntax is a little irritating
20160607 13:54:30 <rmk0> Eclesia: the reason i'm droning on like this is because i'm looking at what it'd take to get decent jvm support, and i remember you mentioning not knowing what they were
20160607 13:59:10 <Eclesia> that's right, I never played with such languages/approachs. I only know Java,GLSL,Vb and played a little out of curiosity with php,js,c#,ruby,d
20160607 14:02:54 <rmk0> the statically typed languages you mentioned all have pretty much the same thing in terms of type systems, so it's not surprising that you've not come across these things
20160607 14:03:22 <rmk0> a lot of people haven't! the types themselves were first implemented in the early 80s and it's really taken until now for them to start percolating into mainstream developer awareness
20160607 14:09:27 <Eclesia> want to create a new language ? ^^
20160607 14:11:44 <rmk0> perhaps
20160607 14:11:52 <rmk0> i know someone that is intending to
20160607 14:52:46 * xranby (~xranby@anon) Quit (Ping timeout: 272 seconds)
20160607 15:08:56 * xranby (~xranby@anon) has joined #jogamp
20160607 15:21:09 <Eclesia> it must be someone incredible
20160607 15:30:54 <elect> who, rmk0 ?
20160607 15:31:00 <elect> do we know him=
20160607 15:31:01 <elect> ?
20160607 15:39:35 <rmk0> nope
20160607 15:39:40 <rmk0> old friend of mine
20160607 15:40:16 <rmk0> certainly the best programmer i've ever met
20160607 15:46:55 <Eclesia> sven ?
20160607 15:47:00 <Eclesia> ^^
20160607 15:50:16 * xranby (~xranby@anon) Quit (Ping timeout: 264 seconds)
20160607 16:01:55 * Eclesia (~husky@anon) has left #jogamp
20160607 16:05:21 * xranby (~xranby@anon) has joined #jogamp
20160607 16:09:07 * elect (~GBarbieri@anon) Quit (Ping timeout: 252 seconds)
20160607 16:09:58 * dwbrite (4474ac1d@anon) has joined #jogamp
20160607 16:15:37 * xranby (~xranby@anon) Quit (Read error: Connection reset by peer)
20160607 16:31:03 * xranby (~xranby@anon) has joined #jogamp
20160607 16:37:45 * xranby (~xranby@anon) Quit (Read error: Connection reset by peer)
20160607 16:54:27 * xranby (~xranby@anon) has joined #jogamp
20160607 17:21:59 <zubzub> 17:40 < rmk0> certainly the best programmer i've ever met
20160607 17:22:05 <zubzub> I don't think I ever met you :p
20160607 17:23:56 <rmk0> \o/
20160607 18:21:11 * Eclesia (~eclesia@anon) has joined #jogamp
20160607 20:47:47 * Eclesia (~eclesia@anon) Quit (Quit: Leaving.)
20160607 22:46:06 * monsieur_max (~maxime@anon) has joined #jogamp
20160607 22:59:47 * monsieur_max (~maxime@anon) Quit (Quit: Leaving.)
20160608 02:38:06 * dwbrite (4474ac1d@anon) Quit (Ping timeout: 250 seconds)
20160608 04:36:08 * guillaum1 (~gl@anon) has joined #jogamp
20160608 04:40:34 * guillaum1 (~gl@anon) Quit (Ping timeout: 258 seconds)
20160608 05:06:16 -jogamp- Continue @ http://jogamp.org/log/irc/jogamp_20160608050616.html