From mboxrd@z Thu Jan 1 00:00:00 1970
Return-Path: I should have added th=
is: I am aware of a full TCP stack implementation implemented in Verilog. (=
In fact, my son built it, and it is in production use on Wall St.).
On Sunday, March 12, =
2023 2:51pm, "David P. Reed" <dpreed@deepplum.com> said:
<=
/p>=0A
Regarding unbounded queues
=0AOn Sunday, March 12, 2023 12:00pm, Dave Taht <dave.tah= t@gmail.com> said:
=0A> Also it increasingly bothers me to se=
e unbounded queues in so many new
> language libraries.
=
I disagree somewhat. Unb= ounded queueing is perfectly fine in a programming language like Haskell, w= here there are no inherent semantics about timing - a queue is an ordered l= ist with append, and it's a GREAT way to formulate many algorithms that pro= cess items in order.
=0A&nbs= p;
=0AWhere the problem with= queues arises is in finite (bounded) real-time programming systems. Which = include network protocol execution machines.
=0A=0A
It's weird to me that people seem to think that languages intended for da= ta-transformation algorithms, parsers, ... are appropriate for programming = network switches, TCP/IP stacks, etc. It always has seemed weird beyond bel= ief. I mean, yeah, Go has queues and goroutines, but those aren't real-time= appropriate components.
=0A=
=0AWhat may be the be= tter thing to say is that it increasingly bothers you that NO ONE seems to = be willing to create a high-level programming abstraction for highly concur= rent interacting distributed machines.
=0A=0A
Ther= e actually are three commercial programming languages (which are about= at the level of C++ in abstraction, with the last maybe being at the level= of Haskell).
=0A1. Verilog<= /p>=0A
2. VHDL
=0A3. BlueSpec
=0A=0A
For each one, there is a large community of programmers proficient in the= m. You might also consider Erlang as a candidate, but I think its "queues" = are not what you want to see.
=0A=0A
Why doesn't I= ETF bother to try to delegate a team to create such an expressive programmi= ng language or whatever? I'd suggest that starting with Verilog might be a = good idea.
=0A=0A<= p style=3D"margin:0;padding:0;margin: 0; padding: 0; font-family: arial; fo= nt-size: 10pt; overflow-wrap: break-word;">A caveat about my point: I write= Verilog moderately well, and find it quite expressive for modeling network= ing systems in my mind. I also write Haskell quite well, and since BlueSpec= draws on Haskell's model of computation I find it easy to read, but I've n= ot written much Haskell.=0A
=
=0ATo me, those who w= rite networking code in C or C++ are stuck in the past when protocols were = documented by bit-layouts of packets and hand-waving English "standards" wi= thout any way to verify correctness. We need to stop worshipping those arch= aic RFCs as golden tablets handed down from gods.
=0A=0A
Who am I to criticize the academic networking gods, though?
=0A= div>=0A