code logs -> 2017 -> Fri, 28 Apr 2017< code.20170427.log - code.20170429.log >
--- 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
code logs -> 2017 -> Fri, 28 Apr 2017< code.20170427.log - code.20170429.log >

[ Latest log file ]