00:00:00 --- log: started forth/21.04.24 00:00:53 I have to admit, it's getting easier for me to look at (Lisp like stuff) than it was a few days ago. 00:01:07 I've by no means "got it" yet, but definite progress. 00:02:03 That book does look pretty good too, proteus-guy. 00:03:40 Writing a review of it now... :-) 00:04:04 Cool. 00:04:45 A review from a Forth guy perspective sounds interesting. 00:09:20 I'm coming to more fully appreciate the... "kindred relationship" of the two languages. 00:12:50 Lisp has the extra input information provided by the ( ... ) scopes. That allows a set of greater capabilities. The more or less total equivalence of code and data is definitely intersting. 00:14:19 There's a lot of material in chapter 1 of SICP on numerical algorithms, and the ability to treat procedures like first class data items is definitely eye-opening. I've done a lot of numerical coding over the year, but saw some tricks in that section that I'd just never thought about before. 00:14:46 --- quit: hwj (Quit: Leaving) 00:17:37 Lisp/Scheme basically try to hide the real machine from you whereas Forth insists that you be fully responsible for how your code gets executed and the resources it consumes. Otherwise they overlap in a lot of ways. 00:17:46 Review posted: https://www.goodreads.com/review/show/3962950392 00:19:16 If you imagined taking some Lisp code and "flipping it around" (from prefix to postfix, and then removed the ( ... ), you could "do" in Forth anything you could do in List - IF you could just just "automagically" decide to treat some of the code words as "data tokens" instead of code words. In Forth there's no easy way to do that, but it would get you close to the capabilities of Lisp. 00:19:31 I'm scared to say it would get you all the way - I may be overlooking something at this early stage. 00:20:02 You can easily implement a true List/Scheme in Forth. You can't go the other direction. 00:20:22 Yes, that seems right to me. 00:20:38 After all, you can do more or less anything in Forth. 00:21:14 I'm just trying to put into words my notion so far of what the parentheses bring you in Lisp. 00:21:21 Yeah but I mean do anything in a manner that Forth supports well and was designed for. Not just that I can hack it. Forth is really an ideal platform for building a List/Scheme. 00:21:41 No, I agree with you. 00:21:51 I wasn't quibbling it. 00:24:27 Maybe another thing to note is that in Lisp which tokens are operators and which are operands is forced by their position in the input; in Forth that's totally up to the individual words. The distinnction arises in a completely different way in the two approaches. 00:24:52 yeah I was just backing up my point so it wasn't misinterpreted. :-) 00:25:02 Cool. :-) 00:25:43 I've historically had no use/interest in Lisp, but... I guess I'm turning out not to be TOO old to learn a new trick. I'm seeing there's something here worth knowing. 00:25:55 Quite a bit, probably. 00:26:07 yes - what you say is exactly right and a capability of forth that I'm using extensively in ActorForth. Using contexts to determine how the compiler/interpreter work and making all that completely replaceable in a manner that isn't completely confusing is a core aspect of ActorForth. 00:26:37 Skip Lisp. Just play with Scheme. That's my advice if you don't want to go insane from incompatible environments. 00:27:48 Yes, I've already seen that. So many little differences. I was muddling around for a few days trying to get a "target system" to work with, and just this evening kind of gravitated to Scheme. 00:28:55 Specifically scm on Ubuntu - as far as you know is that a good choice? 00:31:06 --- join: hosewiejacke joined #forth 00:40:26 I would refer all Scheme environment questions to siraben ! :-) He's the local expert. I rarely touch the stuff in an actual computer. 02:02:41 proteusguy: Cool, Software Design for Flexibility is on my reading list 02:04:08 I think emphasis for correctness and flexible design can go hand in hand, having rock solid primitives and ways to compose them matter a lot in making extensible yet correct software 02:04:32 KipIngram: I don't know scm, but common choices are: chez, guile, chicken 02:06:05 KipIngram: I like the numerical algorithms examples. Some people object to it, but it makes perfect sense for college first-years learning intro calculus to see higher order functions that way 02:06:36 The mind blowing part for me was when they implemented a symbolic differentiator with pattern matching, that was neat 03:39:01 --- quit: andrei-n (Quit: Leaving) 04:27:57 --- join: tech_exorcist joined #forth 04:40:27 --- join: koisoke joined #forth 05:26:01 --- join: f-a joined #forth 06:00:29 racket is pretty convenient for learning a scheme 06:01:01 decent ide, works well with both sicp and the book the racket gang approves of, how to design programs 06:03:32 i use it whenever i want to build something with regular desktop gui and use picolisp for pretty much everything that resembles scripting or hacking in a posix environment 06:04:48 i haven't used plt scheme in aeons but i don't recall any particulary good gui bindings. has this changed? 06:07:20 not sure what it's based on but it's exposed as object trees and message passing, https://docs.racket-lang.org/gui/ 06:08:01 thanks 06:09:40 for me it hits a sweet spot where i can quickly wrap some code or calls to the shell in buttons and windows as well as plop out a standalone binary with a couple of clicks 06:37:41 koisoke: the Racket GUI library is awesome 06:37:58 I've only have had pleasant experiences with it 06:40:32 --- part: f-a left #forth 07:03:35 --- join: andrei-n joined #forth 07:03:38 --- quit: andrei-n (Remote host closed the connection) 07:19:27 siraben, which one is the one described by the "Mit/Gnu Scheme Reference Manual"? 07:21:39 proteusguy: that would be mit-scheme 07:22:03 But I think mit-scheme is barely used in real projects, not that've heard of anyway 07:22:44 Even Cisco had a use for Chez Scheme and were the maintainers of it for a while 07:38:29 KipIngram: IIRC the first few chapters of SICP are relatively easy, there are some real head scratchers though 08:00:50 --- quit: dave0 (Quit: dave's not here) 08:23:04 I'm probably not to the hard ones yet - it's been fairly easy to follow, just with a "perusal." 08:23:22 A lot of numeric algorithms, and as I said I've done a lot of that. 08:24:09 Look like at the beginning he spends a lot of time on the basica idea of "what do you get when you can abstract programs and data?" 08:25:57 The data side of that was pretty familiar to me, but there were some new ideas brought in with "first class procedures." 08:26:14 New to me, I mean. 08:26:47 I guess a lot of languages provide data abstraction tools, but very few do the same for code. 08:28:12 we were talking about Lisp in Forth last night - now that I slept and woke up, it seems like just having definitions of ( and ) and putting spaces around them would be almost enough to get you to a "postfix Lisp." 08:28:55 You'd make everything else constants that left values on the stack, thenn the (...) history would tell you when to treat a word as an operator. 08:29:05 And how far down the stack to dig for its operands. 08:29:49 So ( 1 2 3 4 5 + ) would very nicely give you 15. 08:30:59 Seems like all the smarts would be in ) 08:31:39 Literally everything else could just be constants. 08:32:36 That actually seems more sensible than prefix to me - no worrying about stuff that hasn't arrived yet. 08:32:52 When you need to act, EVERYTHING you need will be on the stack. 08:33:09 You just scan down through it for a ( to figure out how much of it to take. 08:33:33 So postfix Lisp would be "simpler" than prefix Lisp. 08:35:25 siraben: I like those numerical examples too - it carried me through familiar roads with the new vehicle, which made focusing on the vehicle easier. 08:36:44 Damn covid shot. I'm STILL waking up every morning with chest congestion that I have to cough out. Very minor, low-grade "got a cold" symptoms that seem to come around early evening. A couple of Tylenol take those out, though. 08:36:54 I've heard it can last up to a week and not be "unusual." 08:40:10 functions and macros are code abstractions, no? 08:40:49 Well, sure. But there's the ability to pass procedures as parameters, and return them as values, that also comes with "first class" sttus. 08:40:51 status 08:41:10 there are some lisp-ish interpreters implemented in forth that you might want to look at, e.g. https://github.com/schani/forthlisp 08:41:12 So yeah, most languages provide SOME code abstraction. 08:41:32 This is just the first time I've seen it taken "all the way." 08:42:17 And it's immediately evident to me that it adds a layer or two or three of capability. 08:42:48 yeah, sure, first class functions/procedures, currying and so on is sometimes lacking 08:43:26 In a couple of those numerical examples, they were doing conventional presentation of the algorithms in Lisp, and then they'd come to one and I'd look at it and think, "That looks like a pseudo-code description I might write down." Except here it's ACTUAL CODE. 08:43:45 It can do stuff you can't quite do in say C. 08:43:55 for sure 08:44:07 I don't think I grasp it well enough yet to define it precisely, but I... "see" it. 08:44:13 at least not without implementing something like a lisp interpreter first 08:44:20 Sure, right. 08:45:46 Oh, and proper indentation just makes it a LOT easier to look at. 08:45:50 Lisp, that is. 08:48:48 yeah, it's very readable compared to c-style languages, the list is similar to how written left-to-right natural languages tend to be interpreted 08:49:36 same goes for forth but it's reversed due to the stack being lifo which trips some people up until they get used to it 08:53:23 That's what I like about well-written, sufficiently factored Forth. 08:53:37 It reads left-to right, and each line has its own meaning. 08:53:45 So clean to look at. 08:53:56 Of course, you can write Forth like C too, if you want to, but... yuck. 08:54:19 I've become borderline obsessed with the whole factoring thing. 08:54:23 --- quit: wineroots (Read error: Connection reset by peer) 08:54:38 Lately I'm averaging 35-40 chars per definition. 08:55:50 I believe the "wisdom" that a short definition can be totally contained in your "short term memory" is spot on, lock stock and barrel. 08:56:00 It does make it easier to keep up with what's going on. 08:58:16 Plus I've started using conditional returns a lot, and some of them return multiple levels. So I'm actually using that "third dimension" as part of how I build control structures. 08:58:42 Of course, that ties definitions together in a way they wouldn't otherwise be tied. 08:58:54 But I'm 100% convinced it's overall shortening my code. 08:59:24 By a good bit. 09:01:46 depends a lot on context what's a good fit 09:01:53 Just think of it for a minute - a conditional return is a fantastic way to implement IF ... THEN. Just put the ... in a new definition with a conditional return at the very start. 09:02:02 That's just an elementary way of using them. 09:02:23 Suddenly you don't NEED IF / THEN, and you wind up with more factored words to boot. 09:02:36 IF THEN just gives you a way of making a definition longer that you ought to factor. 09:02:50 Sure - it pays off more strongly in some places than others. 09:03:10 I think the best payoff I've seen so far is in my dictionary search; my FIND implementation. 09:04:03 For looping I also have "conditional jump to start of word." 09:04:14 And that replaces pretty much all of the looping constructs. 09:04:41 Finally, you can have a word that's an infinite loop with a conditional return out of it somewhere in the body. 09:05:04 And with multi-level conditional returns, that last conditional return I mentioned can be in a lower level word. 09:05:15 But it's purpose is still to push you back up out of an infinite loop word. 09:05:36 That allows factoring of the end of loop code. 09:05:57 I usually name such words with a ; at the end, to indicate they may cause a return. 09:06:22 I haven't found enough value in multi-level return greater than two to define the words yet. 09:22:08 --- join: wineroots joined #forth 09:34:50 --- join: f-a joined #forth 10:28:36 KipIngram: wow that's quite the reaction, I've never gotten such reaction from a flu vaccination but I guess it's not really comparable 10:29:34 KipIngram: yeah the nice thing about numerical algorithms in functional languages is that it basically is executable pseudocode 10:29:37 Yeah - more than I've ever had too. It's not "bad" - it's not like I've felt miserably ill at any point. It's low grade, but persistent. 10:30:14 I read somewhere that the inert viral load is much higher in covid vaccines than necessary 10:30:22 perhaps they weren't taking chances, but I don't want to speculate 10:30:24 I don't think my words really conveyed the bit that impressed me, though - there were a couple of examples that just screamed "you can't do this in most languages" to me. 10:30:37 Haha, show don't tell! 10:30:52 the first lecture of SICP sold me in watching the rest 10:30:59 Ok; I'll go back and try to find the one that gave me that reaction. 10:31:05 In a little while. 10:31:12 Misouri it, eh? Show me? 10:31:35 Oh, there are videos? 10:31:38 Most intro CS lectures show trivial programs, but here we are on the first lecture, writing a numerical algorithm to compute the square root! 10:31:41 Shoot - I want to watch those too. 10:31:49 Oh you must see them—they're magical. 10:32:05 Got a handy link, or do I just search it down? 10:32:06 looks like they recently (2019) re-encoded them from the VHS tapes https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CABEA24090 10:32:10 I assume this is ... 10:32:11 Thanks. 10:32:15 Yep. 10:32:34 the students are HP employees, that's why they are that old 10:32:46 but it was also taught to first-years at MIT at the time, IIRC 10:33:00 Groovy keen. I can count all that as required continuing education for work. 10:33:16 Though I'm already way over this year. 10:33:37 That winter storm that came through TX a couple of months ago had my lab equipment offline for nearly two weeks. 10:33:42 Couldn't work. 10:33:57 The nut of the problem was our IT guy just happened to resign just before the storm. 10:34:15 He'd done all kinds of funky things to build his experience, but he didn't leave behind anyone who knew how to deal with it. 10:34:23 So I spent that time on CE. 10:34:35 Rather than just sitting on my hands. 10:35:18 But yeah - the IT guy was really clever about it - his new gig is as director of IT for some outfit. He played it all really smart. 10:35:52 Also got hitched with one of the better looking women from our office and made off with her too. 10:40:40 Hah 10:49:52 Wow - 1.5 minutes in and I'm already liking this guy. 11:17:59 He seems a little nervous in front of an audience. I sympathize - I'm not really a "natural" up on stage either. 11:25:55 Ok, siraben - he's touching on one of these cases right here in lecture 1. It's the transition from thinking of the fixed point box as something that takes in a number and gives you that numbers square root, to instead regarding it as something that takes in a particular PROCEDURE and gives you another PROCEDURE that is the procedure for finding the fixed point of that input procedure. 11:26:10 It's easy enough to think of it that way, but in Lisp you actually can do that. 11:26:55 It's a subtle thing. But I just found myself realizing it's really powerful. 11:30:26 KipIngram: which time stamp is that? 11:30:28 bbl, sleep 11:34:09 can do stuff like currying also in ml-style languages 11:35:26 personally i'm too fond of the data code equivalence to really get into haskell or whatever though, and the repl experience in them tends to be primitive at best 11:37:17 Oh, I'm already well past it, but it's in there around 13-20 minutes in. 11:37:36 cess11: You know, I never heard the term "currying" until just a few days ago. 11:38:49 I've realized something in the last few days about my... "path." I'm a hardware guy by training, and as I learned more about software over the years it was almost always in the context of controlling hardware. Embedded design. Ok, that's great, and I think I'm quite good at it. But it does really only touch on some of the possibilities of software. 11:39:29 Basically the side effects have ALWAYS been what I've been interested in - what is this code going to DO? I was never led to think about these more esoteric concepts, and I find myself looking very forward to broadening myself in the near future. 11:40:24 Functional programming has always sort of baffled me - it just looks like math, and I've failed to see how you actually accomplish anything. But... I think I'm going to figure it out soon. :-) 11:40:36 Fingers crossed. 11:40:58 once you're somewhat fluent in a scheme, take a look at sbcl or some other decent common lisp implementation, there you can compile, recompile and debug assembly of functions in a running system, similar to but a bit more convenient than forth 11:58:25 --- quit: kiedtl (Ping timeout: 260 seconds) 12:03:59 --- join: kiedtl joined #forth 12:31:34 --- quit: kiedtl (Changing host) 12:31:34 --- join: kiedtl joined #forth 12:48:25 --- join: kiedtl_ joined #forth 12:48:51 --- quit: kiedtl_ (Client Quit) 13:01:02 --- quit: gravicappa (Ping timeout: 252 seconds) 13:22:40 how functional programming is /supposed/ to work is that you are supposed to write beautiful, elegant mathematical structures representing what you want to accomplish, and then a supergenious compiler or macro system comes a long and turns that into functional, highly efficient machine code 13:25:26 like some chain of monads or arrows or whatever is the thing these days 13:26:15 --- quit: f-a (Read error: Connection reset by peer) 13:30:25 --- join: f-a joined #forth 14:00:42 See, that's hard for me - I want to know how the work is going to be done. I want to write down how I want the computer to do the work. :-) 14:16:31 --- quit: Gromboli (*.net *.split) 14:16:31 --- quit: Vedran (*.net *.split) 14:16:31 --- quit: pareidolia (*.net *.split) 14:16:31 --- quit: proteusguy (*.net *.split) 14:16:31 --- quit: dys (*.net *.split) 14:16:32 --- quit: jimt[m] (*.net *.split) 14:16:32 --- quit: krjt (*.net *.split) 14:16:32 --- quit: _whitelogger (*.net *.split) 14:16:32 --- quit: dnm (*.net *.split) 14:16:32 --- quit: _0x1d3 (*.net *.split) 14:16:32 --- quit: a3f (*.net *.split) 14:16:32 --- quit: KipIngram (*.net *.split) 14:16:32 --- quit: koisoke (*.net *.split) 14:16:32 --- quit: MrMobius (*.net *.split) 14:16:32 --- quit: jyf1 (*.net *.split) 14:16:32 --- quit: rixard (*.net *.split) 14:16:32 --- quit: wineroots (*.net *.split) 14:16:32 --- quit: hosewiejacke (*.net *.split) 14:16:32 --- quit: mjl (*.net *.split) 14:16:32 --- quit: jess (*.net *.split) 14:16:32 --- quit: ovf (*.net *.split) 14:16:33 --- quit: lonjil (*.net *.split) 14:16:33 --- quit: mstevens (*.net *.split) 14:16:33 --- quit: jn__ (*.net *.split) 14:16:33 --- quit: fiddlerwoaroof (*.net *.split) 14:16:33 --- quit: kiedtl (*.net *.split) 14:16:33 --- quit: proteus-guy (*.net *.split) 14:16:33 --- quit: klys (*.net *.split) 14:16:33 --- quit: swineflu (*.net *.split) 14:16:33 --- quit: sts-q (*.net *.split) 14:16:33 --- quit: boru (*.net *.split) 14:16:33 --- quit: nihilazo (*.net *.split) 14:16:33 --- quit: dzho (*.net *.split) 14:16:33 --- quit: Kumool (*.net *.split) 14:16:33 --- quit: cmtptr (*.net *.split) 14:16:33 --- quit: rpcope (*.net *.split) 14:16:33 --- quit: f-a (*.net *.split) 14:16:33 --- quit: tech_exorcist (*.net *.split) 14:16:33 --- quit: mtsd (*.net *.split) 14:16:33 --- quit: phadthai (*.net *.split) 14:16:33 --- quit: tabemann (*.net *.split) 14:16:33 --- quit: kiedtl|ltbx (*.net *.split) 14:16:33 --- quit: xybre (*.net *.split) 14:16:33 --- quit: X-Scale (*.net *.split) 14:16:34 --- quit: spoofer_ (*.net *.split) 14:16:34 --- quit: remexre (*.net *.split) 14:16:34 --- quit: joe9 (*.net *.split) 14:16:34 --- quit: WilhelmV1nWeiner (*.net *.split) 14:16:34 --- quit: tolja (*.net *.split) 14:16:34 --- quit: ornxka (*.net *.split) 14:16:34 --- quit: cantstanya (*.net *.split) 14:16:34 --- quit: jevinskie[m] (*.net *.split) 14:16:35 --- quit: ecraven (*.net *.split) 14:16:35 --- quit: crc (*.net *.split) 14:16:35 --- quit: rann (*.net *.split) 14:16:35 --- quit: crest_ (*.net *.split) 14:16:35 --- quit: guan (*.net *.split) 14:16:35 --- quit: mark4_ (*.net *.split) 14:16:35 --- quit: lispmacs[work] (*.net *.split) 14:16:35 --- quit: Lord_Nightmare (*.net *.split) 14:16:35 --- quit: nitrix (*.net *.split) 14:16:35 --- quit: cess11 (*.net *.split) 14:16:35 --- quit: APic (*.net *.split) 14:16:36 --- quit: jedb (*.net *.split) 14:16:36 --- quit: DKordic (*.net *.split) 14:16:36 --- quit: rprimus (*.net *.split) 14:16:36 --- quit: siraben (*.net *.split) 14:16:36 --- quit: TangentDelta (*.net *.split) 14:16:36 --- quit: lispmacs (*.net *.split) 14:16:36 --- quit: Keshl (*.net *.split) 14:16:36 --- quit: xek (*.net *.split) 14:16:36 --- quit: cp- (*.net *.split) 14:16:36 --- quit: dsmcfarl (*.net *.split) 14:16:36 --- quit: veltas (*.net *.split) 14:16:36 --- quit: bluekelp (*.net *.split) 14:19:27 --- join: lispmacs joined #forth 14:19:27 --- join: Keshl joined #forth 14:19:27 --- join: xek joined #forth 14:19:27 --- join: dsmcfarl joined #forth 14:19:27 --- join: veltas joined #forth 14:19:27 --- join: bluekelp joined #forth 14:19:33 --- join: jevinskie[m] joined #forth 14:19:33 --- join: ecraven joined #forth 14:19:43 --- join: TangentDelta joined #forth 14:19:43 --- join: siraben joined #forth 14:19:43 --- join: cp- joined #forth 14:19:43 --- join: tolja joined #forth 14:19:43 --- join: ornxka joined #forth 14:19:43 --- join: remexre joined #forth 14:19:43 --- join: spoofer_ joined #forth 14:19:43 --- join: kiedtl|ltbx joined #forth 14:19:43 --- join: xybre joined #forth 14:19:43 --- join: WilhelmV1nWeiner joined #forth 14:19:43 --- join: joe9 joined #forth 14:19:43 --- join: X-Scale joined #forth 14:19:43 --- join: tabemann joined #forth 14:19:43 --- join: phadthai joined #forth 14:19:43 --- join: mtsd joined #forth 14:19:43 --- join: tech_exorcist joined #forth 14:19:43 --- join: f-a joined #forth 14:19:43 --- join: jedb joined #forth 14:19:43 --- join: DKordic joined #forth 14:19:43 --- join: rprimus joined #forth 14:19:43 --- join: kiedtl joined #forth 14:19:43 --- join: wineroots joined #forth 14:19:43 --- join: koisoke joined #forth 14:19:43 --- join: hosewiejacke joined #forth 14:19:43 --- join: sts-q joined #forth 14:19:43 --- join: jess joined #forth 14:19:43 --- join: boru joined #forth 14:19:43 --- join: mjl joined #forth 14:19:43 --- join: nihilazo joined #forth 14:19:43 --- join: Gromboli joined #forth 14:19:43 --- join: proteus-guy joined #forth 14:19:43 --- join: Vedran joined #forth 14:19:43 --- join: dzho joined #forth 14:19:43 --- join: ovf joined #forth 14:19:43 --- join: MrMobius joined #forth 14:19:43 --- join: jyf1 joined #forth 14:19:43 --- join: Kumool joined #forth 14:19:43 --- join: pareidolia joined #forth 14:19:43 --- join: cmtptr joined #forth 14:19:43 --- join: rixard joined #forth 14:19:43 --- join: rpcope joined #forth 14:19:43 --- join: proteusguy joined #forth 14:19:43 --- join: _0x1d3 joined #forth 14:19:43 --- join: _whitelogger joined #forth 14:19:43 --- join: jimt[m] joined #forth 14:19:43 --- join: dys joined #forth 14:19:43 --- mode: barjavel.freenode.net set +v proteusguy 14:19:43 --- join: krjt joined #forth 14:19:43 --- join: KipIngram joined #forth 14:19:43 --- join: a3f joined #forth 14:19:43 --- join: dnm joined #forth 14:19:43 --- join: fiddlerwoaroof joined #forth 14:19:43 --- join: jn__ joined #forth 14:19:43 --- join: mstevens joined #forth 14:19:43 --- join: lonjil joined #forth 14:19:43 --- join: klys joined #forth 14:19:43 --- join: swineflu joined #forth 14:19:43 --- mode: barjavel.freenode.net set +v KipIngram 14:19:44 --- join: lispmacs[work] joined #forth 14:19:44 --- join: cess11 joined #forth 14:19:44 --- join: nitrix joined #forth 14:19:44 --- join: APic joined #forth 14:19:46 --- quit: siraben (Max SendQ exceeded) 14:19:48 --- quit: ovf (Ping timeout: 250 seconds) 14:19:51 --- quit: X-Scale (Ping timeout: 246 seconds) 14:20:07 --- quit: lispmacs (Ping timeout: 266 seconds) 14:20:16 --- quit: jimt[m] (Ping timeout: 258 seconds) 14:20:43 --- join: crc joined #forth 14:20:43 --- join: crest_ joined #forth 14:20:43 --- join: guan joined #forth 14:20:43 --- mode: barjavel.freenode.net set +ov crc crc 14:20:44 --- quit: jevinskie[m] (Ping timeout: 276 seconds) 14:21:24 --- join: X-Scale joined #forth 14:22:40 --- join: ovf joined #forth 14:23:33 --- join: rann joined #forth 14:33:23 --- quit: f-a (Quit: leaving) 14:48:07 --- join: jimt[m] joined #forth 14:57:25 --- join: jevinskie[m] joined #forth 14:57:26 --- join: siraben joined #forth 15:11:47 --- quit: rpcope (Ping timeout: 268 seconds) 15:29:24 --- nick: rann -> Guest45273 15:29:24 --- nick: X-Scale -> Guest60158 15:29:33 --- join: Lord_Nightmare joined #forth 15:34:53 --- join: cantstanya joined #forth 15:48:21 --- quit: tech_exorcist (Quit: tech_exorcist) 16:23:48 --- join: Zarutian_HTC joined #forth 16:26:51 --- join: rpcope joined #forth 17:37:45 KipIngram: I should note that SICP doesn't talk too much about efficiency, but in practice, with the right data structures and algorithms, functional programs are usually just as fast as their imperative counterparts for high-level applications 17:38:17 No one is ever going to beat hand written C or assembly, but for instance Haskell performance is comparable to Java 17:38:52 IME performance problems most commonly arise from people abusing linked lists when other data structures would be better replacements 17:39:16 The bible for this is "Purely Functional Data Structures" by Chris Okasaki 17:40:30 KipIngram: I think lecture 1B talks immediately about a semi-formal model about how a machine executes Scheme code 17:54:42 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 17:54:45 --- join: Zarutian_HTC1 joined #forth 17:58:35 Yes, that sounds right. I watched the first few minutes of it before taking a break. 17:59:01 Doing some reading now. Re-reading a favorite series; The Dresden Files by Jim Butcher. 18:03:17 --- join: boru` joined #forth 18:03:20 --- quit: boru (Disconnected by services) 18:03:22 --- nick: boru` -> boru 18:21:08 --- nick: Guest60158 -> X-Scale 19:02:01 This emphasis on the "wizardry metaphor" in these lectures is amusing. :-) 19:05:50 These early lectures are painfully slow... 19:13:35 --- join: Zarutian_HTC joined #forth 19:13:36 --- quit: Zarutian_HTC1 (Read error: Connection reset by peer) 19:40:52 --- join: dave0 joined #forth 19:44:12 maw 19:44:58 --- quit: sts-q (Ping timeout: 268 seconds) 19:49:55 KipIngram: heh, 2x speed FTW 19:54:12 --- join: sts-q joined #forth 20:49:36 --- quit: siraben (Changing host) 20:49:36 --- join: siraben joined #forth 20:49:36 --- quit: siraben (Changing host) 20:49:36 --- join: siraben joined #forth 21:24:48 --- join: gravicappa joined #forth 21:31:34 --- join: lispmacs joined #forth 22:21:35 :-) No kidding. 22:23:34 This is funny; near the end of lecture 4, a student asks a question about how (cons 17 24) and (cons 4 3) (for example) can remember that they have different numbers. He's been trying to present all this in such an abstract way - right there it seems like the easiest way in the world to understand it is as it really is - they're two different bits of RAM and one of them has 17 and 24 and the othre has 4 and 22:23:36 3. But he seemed unwilling to just slice it open like that - I guess that's too "non-abstract." 22:24:37 He's going out of his way to avoid mentioning any real physical implementation aspects. 22:39:07 KipIngram: they will get to real implementation aspects later 22:39:25 I think the ability to hold these things abstractly is important, especially for beginning programmers 22:39:49 of course I think these employees are experienced in other languages of the time, ALGOL, FORTRAN and whatnot 23:59:59 --- log: ended forth/21.04.24