--- Log opened Fri Apr 28 00:00:45 2017 |
00:09 | | Kindamoody|autojoin [Kindamoody@Nightstar-0lgkcs.tbcn.telia.com] has joined #code |
00:09 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
00:09 | | Kindamoody|autojoin is now known as Kindamoody |
00:19 | | Kindamoody is now known as Kindamoody[zZz] |
00:27 | | Turaiel[Offline] is now known as Turaiel |
00:39 | < Jessikat> | I now have a method of analysing C++/Rust/D which proves to me that they're the wrong approach |
00:39 | < Jessikat> | Hm |
00:39 | < Jessikat> | Haskell also, amusingly |
00:44 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
00:51 | < himi-cat> | Wrong approach for what? |
00:53 | < Jessikat> | for providing high level languages on top of von neuman machines - they introduce far too much complexity in one go, especially C++ |
00:54 | < Jessikat> | unless you properly subset them in a disciplined manner, you lose |
00:56 | < Jessikat> | Basically, there's far too much of the workings of the machine constantly available to all programmers in all circumstances, and it can be both overwhelming and distracting, and you don't often gain much from it |
00:56 | < Jessikat> | having said that, I still feel that the STL is inspired |
00:58 | | Jessikat [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving] |
01:00 | | Jessikat [Jessikat@Nightstar-r37.bmi.132.82.IP] has joined #code |
01:00 | | Jessikat [Jessikat@Nightstar-r37.bmi.132.82.IP] has quit [The TLS connection was non-properly terminated.] |
01:04 | | Jessikat [Jessikat@Nightstar-r37.bmi.132.82.IP] has joined #code |
01:06 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [[NS] Quit: Leaving] |
01:06 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
01:18 | | Derakon[AFK] is now known as Derakon |
01:29 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [Connection closed] |
01:34 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
02:17 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [[NS] Quit: Leaving] |
02:22 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
02:49 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [Connection closed] |
02:49 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
03:11 | | Jessikat` [Jessikat@Nightstar-up8rgv.dab.02.net] has joined #code |
03:15 | | Jessikat [Jessikat@Nightstar-r37.bmi.132.82.IP] has quit [Ping timeout: 121 seconds] |
03:24 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [Ping timeout: 121 seconds] |
03:38 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
03:47 | | macdjord|slep [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
03:50 | | macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code |
03:50 | | mode/#code [+o macdjord] by ChanServ |
03:55 | | macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
04:46 | | Derakon is now known as Derakon[AFK] |
04:47 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [[NS] Quit: Leaving] |
04:48 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
05:23 | | Turaiel is now known as Turaiel[Offline] |
05:24 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has quit [[NS] Quit: Leaving] |
05:28 | | RchrdB [RchrdB@Nightstar-qe9.aug.187.81.IP] has joined #code |
06:14 | <&McMartin> | blorg |
06:14 | <&McMartin> | I can't asm straight tonight |
06:15 | <&McMartin> | Jessikat`: It occurs to me that of all the languages I can think of offhand, it is actually PROLOG that violates your criterion the most drastically |
06:22 | < RchrdB> | McMartin, No. |
06:22 | < RchrdB> | (it doesn't matter what the question was; it doesn't matter if you didn't even ask a question; No.) |
06:26 | | crystalclaw [crystalclaw@Nightstar-12q9ui.xyz] has quit [Ping timeout: 121 seconds] |
06:30 | < Jessikat`> | McMartin: interesting |
06:37 | | crystalclaw [crystalclaw@Nightstar-12q9ui.xyz] has joined #code |
06:37 | | mode/#code [+o crystalclaw] by ChanServ |
06:41 | < RchrdB> | Jessikat`, what are the criterion you're after, please? I keep missing stuff in this channel today in particular because I've been rebooting constantly to chase down different issues. |
06:41 | < RchrdB> | I'd be grateful for a copy-past dump in a PM or something |
06:41 | < Jessikat`> | I think the criterion he's referring to was having a large amount of constantly available basic functionality |
06:42 | < Jessikat`> | C++/Rust/D all suffer from this |
06:42 | < Jessikat`> | They are toolboxes that never let you put the screwdriver down |
06:42 | < Jessikat`> | Unless you're very disciplined |
06:43 | <&McMartin> | Right. PROLOG is interesting in that it is basically impossible to do anything of significance with it without designing your code to its query resolution algorithm, and you need to keep it front and center in your mind at all times. |
06:43 | <&McMartin> | Subset it into a deductive database and this goes away, but that subset is called "Datalog" and is a different thing >_> |
06:43 | <&McMartin> | Datalog is also super-great |
06:44 | < RchrdB> | I have heard one (1) review of Datalog from someone who tried using it in production and it was not complimentary |
06:45 | < Jessikat`> | There's a wonderful paper I found that spends a while showing expressions as lambda calculus application and switching between them, it's kind of inspired |
06:45 | < RchrdB> | though serious pinch of salt, the author of that review is kind of a tremendous douche so IDK. |
06:46 | < Jessikat`> | XD |
06:46 | < Jessikat`> | It's more that the more focused a tool set is, the better job humans tend to do with it |
06:46 | < RchrdB> | Jessikat`, can you elaborate on "never let you put the screwdriver down"? |
06:46 | <~Vornicus> | Jessikat`: How do you feel about sql |
06:46 | < Jessikat`> | You always have to deal with the machine even at a high level of abstraction |
06:47 | < RchrdB> | do you mean having redundant ways to do the same thing so you're always tempted to fiddle with stuff that's already working? |
06:47 | < Jessikat`> | Sometime can always come in an take your address, fiddle with the representation, cast away and mutate things |
06:48 | < Jessikat`> | It relies on programmer discipline to choose the correct subset |
06:48 | < Jessikat`> | Nothing exemplifies this more succinctly than the char type |
06:50 | < Jessikat`> | Which simultaneously means 'the smallest addressable increment', 'a character in a string', 'a small integer' and 'a boolean value' amoung other things |
06:50 | < Jessikat`> | And also 'an lvalue' so it is a place and a value depending on context |
06:50 | < Jessikat`> | And encompasses a machine dependent range |
06:51 | < Jessikat`> | It's also simultaneously a non-addressable rvalue type in many circumstances, like when you write character literals |
06:52 | < Jessikat`> | You could argue that the char type itself is not implicitly all of those things all the time - but the context subtly changing the meaning a lot of the time doesn't help with the complexity |
06:53 | < Jessikat`> | Also, C and descendants in particular conflate the idea of a function with a hardware routine (indeed, you could argue that's their main purpose) |
06:53 | < Jessikat`> | Which makes it very hard to write a pure instance of either |
06:53 | < Jessikat`> | Again, without discipline you're unlikely to |
06:56 | < Jessikat`> | I think clojure does a good job of handling this, now I think about it |
06:57 | < Jessikat`> | You can type hint on representation, but you don't have to unless you know it's faster |
06:57 | < Jessikat`> | Hm |
06:57 | < Jessikat`> | I like types as a symbol matching exercise, honestly |
06:57 | < Jessikat`> | That makes static guarantees |
07:00 | < Jessikat`> | To a degree, programming is all about the logistics of organising routines, of choosing data schemes and of ordering the instructions to a machine. Haskell makes that last one incredibly difficult, because the whole language rejects the idea of sequencing except in a derived fashion. Which is fine and all but the programmers in the ecosystem are asses about explaining how to make use of it |
07:00 | < Jessikat`> | IO in Haskell is an abstraction of the machine, now I think about it |
07:01 | < Jessikat`> | The monad part of IO monad is an abstraction of sequencing that is an implicit part of C's nature |
07:04 | | Jessikat` is now known as Jessikat |
07:05 | < Jessikat> | LISPs' hardon for honiconicity only makes sense once you realise that there's an implicit machine involved that you're feeding the data to. That machine is eval |
07:06 | < Jessikat> | You could argue there's a wider machine in LISPs, the REPL |
07:06 | < Jessikat> | But even LISPs gave an implicit sequencing mechanism |
07:07 | < Jessikat> | Have * |
07:07 | < Jessikat> | Now I think about it, Haskell does too - function application is necessarily sequenced if you want to evaluate anything |
07:07 | < Jessikat> | That sequencing is the application of the lambda calculus |
07:08 | < Jessikat> | Until you do that, all bets are off in Haskell though |
07:08 | < Jessikat> | Hrm. |
07:08 | < Jessikat> | You were right when you said I ought to look at other languages a couple years back, McMartin :p |
07:09 | <&McMartin> | :D |
07:10 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection reset by peer] |
07:11 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
07:11 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
07:12 | < Jessikat> | Physics of transistors -> analogue electronics -> digital electronics -> von neumann hardware architecture -> assembly language -> C |
07:13 | < Jessikat> | All of these provide abstractions that you often times cannot break out of, and each layer doesn't require you to explicitly consider the previous one, aside from implicit assumptions |
07:14 | < Jessikat> | C++ adds a tonne of symbolic abstraction without letting you avoid the machine basics of C |
07:15 | < Jessikat> | The power of LISP is that it lets you use only the facets of the machine that you want in an given circumstance |
07:15 | < Jessikat> | Haskell suffers a lot from not being sequential in nature - this would be an advantage if the social situation around the language was better |
07:16 | < Jessikat> | It is also in danger of being the equivalent of C++ when it comes to being a grab bag of type application |
07:16 | | * Jessikat considers |
07:16 | < Jessikat> | At least in Haskell a function is a function |
07:22 | < Jessikat> | In C a function is a routine |
07:23 | < Jessikat> | In C++ a function could be a function, it could be a routine, it could be a type (though those are expressed a bit differently) |
07:23 | < Jessikat> | Often times a function is also some assembly instruction |
07:24 | < Jessikat> | C has that issue as well |
07:24 | <&McMartin> | EIEIO |
07:24 | < Jessikat> | \o/ |
07:24 | <&McMartin> | Though my current favorite assembly instruction is currently SWINE |
07:24 | < Jessikat> | Coding is one of the few things that isn't boring yet |
07:25 | < Jessikat> | Is it a pig to use? |
07:25 | <&McMartin> | It's a bit oldschool. |
07:25 | <&McMartin> | SWI (SoftWare Interrupt) is the old name for the ARM mnemonic now called SVC (SuperVisor Call) - the equivalent to INT on x86 |
07:26 | <&McMartin> | And everything in ARM is conditionally executed, so SWINE is Software Interrupt if Not Equal |
07:27 | < Jessikat> | Actually now I think about it, C++ has a keyword for function |
07:27 | <&McMartin> | that can be unfortunate if your SWI intends to pull data after the point of the call by reading and modifying the return address. |
07:27 | < Jessikat> | It's constexpr |
07:27 | <&McMartin> | Hrm. I thought constexprs had to be evaluated completely at compiletime. |
07:27 | < Jessikat> | McMartin: neat |
07:27 | < Jessikat> | They do not |
07:28 | < Jessikat> | In some contexts that is enforced |
07:28 | <&McMartin> | Huh |
07:28 | < Jessikat> | One of the major benefits of constexpr is that you can write compile time code that you can later run and attach a debugger to |
07:28 | < Jessikat> | (over old school TMP) |
07:30 | < Jessikat> | C++ guarantees that when you set a constexpr value, it's evaluated at runtime, but if your input or output are runtime evaluated expressions, it's fully at liberty to emit code that runs then |
07:30 | < Jessikat> | So things like min/max are constexpr |
07:32 | < Jessikat> | And the default constructors of shared and weak_ptr |
07:34 | < Jessikat> | std::vector doesn't have constexpr construction, because it always does allocation |
07:34 | < Jessikat> | Blerk |
07:35 | < Jessikat> | I think there's a lot of the STL that I want to refine |
07:48 | < Jessikat> | The basic separation is really neat though |
07:48 | < Jessikat> | I want a seq implementation on top of it |
07:49 | < Jessikat> | I should play around with constexpr |
08:22 | <&McMartin> | Florg. |
08:22 | <&McMartin> | Found some old code I wrote back in like 2002 that does more or less what I need |
08:23 | <&McMartin> | It looks awful, so I go to tune it with the various tricks I've picked up |
08:23 | | Jessikat [Jessikat@Nightstar-up8rgv.dab.02.net] has quit [The TLS connection was non-properly terminated.] |
08:23 | <&McMartin> | Every single one of them makes the code slower, bigger, or both. |
08:23 | | Jessikat [Jessikat@Nightstar-up8rgv.dab.02.net] has joined #code |
08:23 | <&McMartin> | So I guess it wasn't as awful as I thought. |
08:26 | <&McMartin> | It's always kind of great when making code self-modifying actually *increases* its size because of instruction encoding variation |
08:32 | | * Vornicus needs multiplyeral and a plan. |
08:32 | | * Vornicus also needs sleep. |
08:33 | <&McMartin> | What about exponentiatoral? |
08:33 | <~Vornicus> | I don't think it's quite that bad. |
08:33 | <~Vornicus> | conwaysuparroweral would be right out |
08:39 | | Kindamoody[zZz] is now known as Kindamoody |
08:40 | | macdjord [macdjord@Nightstar-a1fj2k.mc.videotron.ca] has joined #code |
08:40 | | mode/#code [+o macdjord] by ChanServ |
08:41 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Operation timed out] |
09:04 | | Kindamoody is now known as Kindamoody|out |
09:41 | | Jessikat` [Jessikat@Nightstar-jglfab.dab.02.net] has joined #code |
09:45 | | Jessikat [Jessikat@Nightstar-up8rgv.dab.02.net] has quit [Ping timeout: 121 seconds] |
11:48 | | Jessikat` is now known as Jessikat |
12:21 | < Jessikat> | Fun fact - compiling your resources on 0 threads results in remarkably long built times |
12:30 | | celticminstrel is now known as celmin|nap |
12:57 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has quit [Operation timed out] |
13:01 | | Alek [Alek@Nightstar-7or629.il.comcast.net] has joined #code |
13:01 | | mode/#code [+o Alek] by ChanServ |
13:56 | <&ToxicFrog> | You don't say~ |
14:30 | < Jessikat> | :D |
14:31 | < Jessikat> | Oh dear, I appear to grok the term dependant type intuitively |
14:31 | < Jessikat> | I'm doomed |
14:42 | | * gnolam arghls at leaky abstractions. |
14:46 | < Jessikat> | All of them? |
15:56 | | macdjord is now known as macdjord|fude |
15:56 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
15:56 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
16:11 | | Jessikat` [Jessikat@Nightstar-qv8roj.dab.02.net] has joined #code |
16:13 | | Jessikat [Jessikat@Nightstar-jglfab.dab.02.net] has quit [Ping timeout: 121 seconds] |
16:52 | <@gnolam> | Jessikat: in this case, triggering mechanisms that behave in totally different ways, even between models from the same manufacturer. Compounded by the fact that each model has its own protocol or API. |
16:55 | <@gnolam> | Oh, and each with its own calibration peculiarities. Those are Dwarf Fortress levels of Fun. |
17:07 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [[NS] Quit: .] |
17:08 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
17:08 | | mode/#code [+o Syloq] by ChanServ |
17:08 | < Jessikat`> | How exciting |
17:08 | | Jessikat` is now known as Jessikat |
17:53 | <&jeroud> | Jessikat: I'd be interested in your opinions of OCaml in the context of the earlier conversation. |
17:56 | < Jessikat> | I'll develop some, then :) |
17:57 | <&jeroud> | It fits somewhere between Haskell and LISP, I think. |
17:59 | <&jeroud> | I should probably finish the thing I was doing in Rust so I can have opinions that feel legitimate to me. |
18:01 | <&jeroud> | So far I've written my game's rendering code 6 times and written my own engine layer underneath it three times. |
18:02 | <&jeroud> | I don't much like Rust, but I'll take it over C++ and Go any day. |
18:11 | | macdjord|fude is now known as macdjord |
19:10 | | celmin|nap is now known as celticminstrel |
19:34 | | Kindamoody|out is now known as Kindamoody |
19:58 | <&McMartin> | I don't feel like Go is competing in the same space. |
20:03 | <&McMartin> | I have had the occasional terrible impulse to port Ophis from Python to C, to see how far gone it would have to be to become self-hosting. |
20:04 | <&McMartin> | Well, not self-hosting so much as "not a cross-assembler" |
20:06 | <&McMartin> | It seems like it would be a more appropriate use of my time to make Ophis syntax coexist more cleanly with Emacs's default assembler-mode, though. |
20:12 | <&[R]> | http://thedailywtf.com/articles/crash-diet <-- Stovepipe? |
20:16 | <~Vornicus> | "isolated vertical" - replicate the whole stack, delete what you don't need |
22:26 | | * Vornicus discovers an implementation of the casear cipher that... uses an infinite iterator that it searches for the starting letter, then steps through for the appropriate number of steps to find the encoding, for each letter in the string. |
22:27 | <&ToxicFrog> | It's technically O(n) |
22:28 | <~Vornicus> | That... that is true. |
22:41 | | Jessikat` [Jessikat@Nightstar-ip83lr.dab.02.net] has joined #code |
22:44 | | Jessikat [Jessikat@Nightstar-qv8roj.dab.02.net] has quit [Ping timeout: 121 seconds] |
22:57 | | Kindamoody is now known as Kindamoody[zZz] |
23:08 | | Jessikat [Jessica@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
--- Log closed Sat Apr 29 00:00:46 2017 |