LispSporks has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
LispSporks has joined #forth
LispSporks has quit [Ping timeout: 245 seconds]
dave0 has joined #forth
gravicappa has joined #forth
andrei-n has joined #forth
LispSporks has joined #forth
LispSporks has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
spoofer has quit [Ping timeout: 240 seconds]
spoofer has joined #forth
mtsd has joined #forth
gravicappa has quit [Ping timeout: 240 seconds]
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #forth
gravicappa has joined #forth
mtsd has quit [Quit: Leaving]
mtsd has joined #forth
<proteus-guy>
Interesting article. I've used NFAs for string search in a security app before but was not aware of the scalability issues of Perl and other popular FSMs.
andrei-n has quit [Read error: Connection reset by peer]
andrei-n has joined #forth
proteus-guy has quit [Ping timeout: 240 seconds]
proteus-guy has joined #forth
spoofer has quit [Ping timeout: 252 seconds]
spoofer has joined #forth
f-a has joined #forth
andrei-n has quit [Quit: Leaving]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
tech_exorcist has joined #forth
f-a has quit [Quit: leaving]
f-a has joined #forth
<KipIngram>
Yeah, I thought it was pretty good. It links to parts 2 and 3, and they were good too.
<KipIngram>
I liked the very detailed info on a VM for computing the things.
f-a has left #forth [#forth]
lispmacs has quit [Ping timeout: 268 seconds]
dave0 has quit [Quit: dave's not here]
<KipIngram>
Speaking of regexes, this looks like a fun little playground:
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #forth
<proteusguy>
There are some people who, faced with a search problem, say "I'll solve that with a regular expression!". Those people now have two problems. :-)
<cmtptr>
no the saying is: there are some people who, faced with a problem, say "I'll solve that with multithreading!" Now thtwoey prohavblee ms.
<proteusguy>
hahahaha
<KipIngram>
:-)
<KipIngram>
Nice...
<cmtptr>
i have to give credit to the #lua op for that one
proteus-guy has quit [Ping timeout: 260 seconds]
proteus-guy has joined #forth
Zarutian_HTC has joined #forth
<KipIngram>
My compliments to him.
<KipIngram>
You know, I'm understanding better what's been happening to my coding since I started using these conditional returns.
<KipIngram>
My definitions have definitely, clearly gotten shorter.
<KipIngram>
Ok, yay. It's Forth, we're taught to like that.
<KipIngram>
But the stack of definitions I write for a particular task has grown "taller" - it's not really taking (much) less code.
<KipIngram>
It's just arranged differently.
<KipIngram>
The defs are getting short and very terse, but the "interconnections" that run vertically up and down the call chain are becoming more involved and sophisticated.
<KipIngram>
So I don't REALLY know if my code would be easier, harder, or about the same in terms of a stranger's ability to understand it.
<KipIngram>
They'd almost certainly have to get accustomed to my style before they got fluent with it.
<KipIngram>
Since I use double returns as well as single returns (both conditional and unconditional), you can jump two lines up in the call stack sometimes.
<KipIngram>
I try to use the double ones in a way that promotes still regarding the return as being "logically" associated with the higher of the two levels.
<KipIngram>
Like it's foo triggering the return, but it has to happen from bar, which foo calls, so it's a double instead of a single.
<KipIngram>
Anyway, I think I like it. I may just be infatuated with myself or something, though.
<KipIngram>
The other thing I can point out about it is that I no longer really "jump." At all. I *implement* some things with jumps, but they're really recursions.
<KipIngram>
And tail recursion has really become the only kind of looping that I do.
<KipIngram>
So no forward jumps, anywhere, ever.
<KipIngram>
And only backward jumps to the start of the current def, as associated with a tail recursion call.
<KipIngram>
This is just where the words led me, though - I did have all the usual control constructs in my last Forth. But I had the return-oriented tools as well, and I found myself gravitating to them, and not using the traditional things even when they were there.
<KipIngram>
So I just left them out this time.
lispmacs[work] has quit [Quit: needs to reboot]
lispmacs[work] has joined #forth
<cmtptr>
if you can come up with names for all of your words, i don't think getting taller is necessarily a problem
<cmtptr>
i like that forth allows you to code in two dimensions
<cmtptr>
my problem has always been that naming small one-purpose functions well is one of the most difficult aspects of programming for me, and forth amplifies that
<lispmacs[work]>
i guess the big issue I've been wondering about since day one was module support and in particular public name conflicts. I've run across some simple systems for have private vs public words but none dealing with conflicts
<lispmacs[work]>
for private vs public you adjust the dictionary pointers afterwards, I think
<lispmacs[work]>
I mean, the pointers in the linked list
<cmtptr>
since you can reuse names, the conflict typically isn't an issue
<cmtptr>
e.g., you may push vocab foo onto your context stack, and foo may contain a word called bar, and as long as you don't need bar (maybe it's a word used internally by the foo module) then you can define your own bar and nothing will break
<lispmacs[work]>
cmtptr: that is true, though I think you would have to face the issue eventually with a project of large size. Like, say the byte-out word means different things to your storage and your network libs
<lispmacs[work]>
C.M. said that prefix- namespaces are evil so I've tried to avoid those
wineroots has joined #forth
<lispmacs[work]>
anyway, FlashForth only allows something like 13 characters in a word name
<lispmacs[work]>
FlashForth also does not allow word redefinitions, but I guess that would be non-standard
<lispmacs[work]>
admittedly, word naming conflicts are not likely to be much of a concern on a microcontroller project
<lispmacs[work]>
so I haven't worried about it
<cmtptr>
i think "project of large size" is counter to moore's vision of forth
<lispmacs[work]>
cmtptr: well, he said we don't even need operating systems, so I'm still waiting for that Forth system to replace my Gnu/Linux OS
<lispmacs[work]>
just getting x86-64 to boot is a large project
<cmtptr>
so the takeaway should probably be don't worship everything moore says like it's the word of god
<cmtptr>
his use-case is probably not representative of yours
<lispmacs[work]>
well, let's just try to reconcile the philosophy of forth with the practicality of it. he said the ideal is to have a great, simple name for each and every word. He also said that you should be able to run your entire computer off Forth libraries. ("Operating Systems are the greatest scam ever").
<cmtptr>
when did he say those things and what was the context?
<cmtptr>
if you don't know, then those quotes are worthless, regardless of how brilliant the source may be
<lispmacs[work]>
cmtptr: need about 30 second to get you the reference from my social feed
<MrMobius>
sounds about right. probably said that during one of his presentations he gave using a windows pc
<lispmacs[work]>
it is loading slow, might take about 2 or 3 minutes
<nihilazo>
lol MrMobius
<nihilazo>
the classic move of philosophy, do as I say, not as I do
<lispmacs[work]>
cmtptr: interview specifically regarding the subject (and a few other things):
<nihilazo>
is collapseOS too much of an OS for chuck moore if he's against OSs
<nihilazo>
even though it's also forth
<lispmacs[work]>
2009
<MrMobius>
he calls them a con game instead of a scam but close enough
<MrMobius>
how absurd
<nihilazo>
thinking forth has instruction against using multi-word (as in, spoken word) names for forth words
<nihilazo>
I think that's bunk
<nihilazo>
because that's clearer than picking a single english word that kinda sorta makes sense when you think about it
<nihilazo>
everybody will see draw-tab-bar and know what that means, or whatever your naming convention is for names with multiple words
<lispmacs[work]>
nihilazo: I'm downloading that collapseOS. Seems like I learn about a new Forth everytime I chat here
<nihilazo>
collapse OS is a project that will never see use in the environment it was built for
<nihilazo>
because that environment will probably never exist (I'm 100% predicting the collapse of society, but we're not going to bootstrap computers from old z80 machines)
<nihilazo>
but it's still an awesome project
<lispmacs[work]>
i think personally that if funding could be found for just one person to develop Forth "OS" for x86-64 and do nothing else, that you could get a nice desktop in fairly short order (year?). But it seems like you would need to have some kind of module system to distinguish between, e.g., a network pipe and a buffer pipe
<lispmacs[work]>
I started programming AHCI support for forth - it seemed quite doable, but you need more than 15 minutes a week
<lispmacs[work]>
I was interacting with the PCI express bus on my laptop
<cmtptr>
but why would you?
<lispmacs[work]>
a computer where everything was running on top off forth sounds more fun than everything running off of C
<lispmacs[work]>
well, I guess we could put that 10,000 lines of code towards finally writing a decent gforth gui library. One that does FFI to c libraries, of course
<lispmacs[work]>
or something really useful, like PHP code for a gambling website
<cmtptr>
now you're talking
zolk3ri has quit [Ping timeout: 240 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
<MrMobius>
could be fun to make that computer but it would not be fun use
<MrMobius>
or as fun as what we have
<MrMobius>
but then again thats forth in practice :D
<lispmacs[work]>
I'm wondering... once you had a full-featured forth system kernel, if it wouldn't be terribly hard to reimplement libc, and a few other compatibility libraries
<lispmacs[work]>
to run all the C programs
<lispmacs[work]>
or, a lot of them
<lispmacs[work]>
userspace C programs, I mean
<lispmacs[work]>
i guess you would have to address the issue of whether or not you wanted a POSIX style environment or now
<lispmacs[work]>
* or not
<lispmacs[work]>
or, maybe not
<lispmacs[work]>
there is your C standard libraries, and then your POSIX OS interfaces, not the same thing
mtsd has quit [Ping timeout: 240 seconds]
tech_exorcist has quit [Ping timeout: 268 seconds]