1,822 karma · joined November 16, 2013
More tracking!
I can relate to, but not endorse, designing a CPU and dialect for an interesting language you've never properly used. This turned out to be very painful, and Yossi argues convincingly that it is essentially not practical to use Forth at all, debating Jeff Fox's position. However, there is some evidence[1] that Forth actually might be practical, and it certainly seemed to have a niche in the 80's.
Yossi made some errors I've seen among new Forth programmers. A lot of people, before writing real programs, think Forth is like lisp from another universe. They visualise Forth primarily as a sort-of functional, concatenative, highly refactor-focused language. They likewise tend to throw out all the normal Forth defining words and use Forth as 'lisp without parentheses'. They try and put all their data on the stack, 'point-free', rather than using variables. And often their projects eventually devolve into C envy, every line with stack comments and equivalent C code to help, as shown in the article.
But go look at real, working, classic Forth code, of which there is much, and you'll see that there is a prevailing style that's easy to read and not actually that 'smart', or 'academic'. No more than 1-2 stack items need to be mentally 'juggled' for 99% of code, lots of variables and buffers are used whenever it's easier. Yes the classic variables are 'global', but it doesn't matter if the relevant code isn't recursing or touched in interrupts, and is only used by a cluster of related words. Newer Forths do have local variables, in spite of Jeff Fox's disapproval!
The classic code I'm talking about matches what I think Jeff Fox is trying to coerce you towards. Ultimately I disagree with Yossi's views because I think if he had actually tried to implement what Jeff Fox proposes, and got some practice first on a more realistic project, he would have had a much better shot. It's impressive how well the project turned out in spite of the approach, and how Yossi wrote a backend for his architecture in a week: a testament to both his skills and LLVM's design; but it's worth reflecting as engineers how arrogant (yet relatable) it is to make a CPU and compiler for a language you've never properly used.
[1] https://www.hardware-x.com/article/S2468-0672(22)00025-6/ful...
I wonder if they were just copied from the book?
Or prefetch. Not enough people know about prefetch.
I've been saying this a lot recently, that CPU's are powerful 1-bit vector machines!
Mind you, I don't think the rats would enjoy it as much if they had to share the road with the kind of rats I share it with, and if the penalty for crashing (or being crashed into) was as high.
I still like Postel's law, but don't imagine for a second it's a 'law' with the kind of authority the article implies, and didn't enjoy the article's slime about people who like it!
I don't think it's a reason not to be interested in Forth, unless that was the draw.
Any serious Windows app needs to spawn many threads to work around this performance issue when batch operating on lots of files.
It's not really neutral though, it's specifically from the outset designed to depict something evil in the culture of the religion. The current more abstract logo could just as easily looks like traits of Satan as a random demon. And I don't believe this is an attack on Christianity or Christians, or designed to exclude Christians. I don't imagine it bothers most Christians.
But this is something certain Christians will be put off by, and find unwelcoming, for religious reasons. So hence this is at odds with the code of conduct in my opinion.
And really the whole thread has just confirmed this, I've been just short of accused of being an extremist, and had many complaints about my religion, just for pointing this out.
I think one solution is just not to have codes of conduct, it seems to breed this kind of discussion and vitriol. And apparently there's always favourite religions, ethnicities, etc.; different according to who you ask. And also maybe avoid using religious-themed art in your logo if you want to avoid potential for religious discussion. The people behind the logo probably considered and decided this doesn't matter a long time ago, and personally I respect their decision: but it does mean that it will exclude some people.
That itself is a question of ethics, that I don't think you need to agree with to be able to be tolerant. You can tolerate people without thinking it's "OK" for people to believe things you think are wrong to believe.