The original use of "stack" as a metaphor in programming should trace to assembly language, but I do not see any mention of that here. I would guess the people who have transformed the term into a "buzzword" are not well-versed in assembler.
That's not really what they mean by 'stack' in this context, though. That's a 'stack' as a form of memory management, which is just a LIFO queue. In this sense they mean a "software stack" which is just a bunch of nested software systems (eg. OS <--> Web server <--> Web application).
Let's say you have an Ubuntu OS in Virtualbox, and an application is running "on top" of Ubuntu. Now try swapping out the Ubuntu OS for Windows without affecting the application. It's nonsense, because an application only works when there's an OS to provide an abstraction layer for talking to hardware.
Of course, there are applications that run on bare metal without that abstraction layer, but the point I'm making is that in stacks with an OS, an application "on top" of that OS is not independent of the OS even with virtualization.
The OSI model is stack with a top and a bottom, but each layer can be replaced, in theory.
The processor stack and a software stack really are distinct things, because the "software stack" has the notion of interfaces at the top and the bottom of each layer.
The fact that at the implementation level, the call stack sometimes mirrors the software stack is not really relevant. It's sort of accidental: each layer could be a process, connected with other layers by a pipe for instance.
That's literally the entire point of the abstraction. Each layer is independent and can do its thing without considering what other layers are doing.
Of course, like all abstractions, it's leaky, which leads to things like Nagle's algorithm causing lag in MMORPGs when devs don't turn it off (no offense, Animats! :D )
not prior ? I've read that stack were brought to solve recursive functions, I'm not sure it was tied to assembly or brought in a more theoretical manner
It's the best way to understand cleanly separated hierarchical systems, sure. So it's great for computers (which are designed this way by humans to keep their complexity manageable), but it's a poor way to understand biological systems (for example) which are a mush of innumerable interconnected feedback loops beyond the capacity of any human mind to fully understand.
It's not necessarily the best way to understand things designed by humans. A strict view of "the stack" leads one to ignore the direct (side-) effects of different layers on each other and to invent the imaginary sin of the "layering violation".
It's the best way to understand things designed by humans to fit in with that way of understanding. Some humans can design things which operate without hierarchies (see The Story of Mel) but normal humans will struggle to understand them.
Interesting take, but it misses the fundamental point of the stack metaphor: each layer has to depend on the existence of the previous layer. An operating system can't exist without hardware to run on; an application can't exist outside the context of an operating system. The author seems to think that any system with multiple components can be called a "stack" - at that point, you truly have reduced the term to a buzzword.
Stack: a pile of objects, typically one that is neatly arranged.
Fundamentally, a stack is not about technology. Sure, it is used to represent a data structure in software, but the same can be said for queues, heaps, pipelines... And yes, it can also be used when the graphical representation of something looks like a pile of boxes sitting on top of each other, which is common in tech (ex: the TCP/IP model).
It may be true that tech popularized the word "stack" but it is just as easy (in fact easier) to imagine a stack of books rather than anything software related. Using that as an argument that "software is eating the world" is circular reasoning.
I was at a hospital recently and saw this. In the first waiting area there was a vertical queue for patients charts. I watched nurses pop off the top and then manually move every chart up to refill the top of the queue.
Then in another waiting room I saw the same thing, except it was basically a ring buffer. They used a little magnet to denote the top and I watched them keep filling below my chart and then back to the top above the other charts. No need to move every chart every time.
I highly doubt these nurses are thinking tech or programming. They're just being naturally clever.
That's like saying differential equations aren't mainstream just because not everyone takes university-level math. Stacks are a mainstream technical concept in a mainstream technical profession. The relevant domain for determining prevalence is "Programmers." Non-technical people don't count.
I'd actually say the relevant group is "people trying to understand the domain" (given the question in the headline).
Which, generally, boils down to a group that is largely programmers, and even those that aren't programmers DO (AFAICT) have familiarity with the "stack" concept (non-technical Eng Managers, non-technical PMs, etc)
I'm not saying you're wrong in any way, just pointing out that it can be said in a way that doesn't sound like "programmers are all that matter" (which I don't think was your intent anyway).
Heh maybe you’re too young? LAMP stack is probably at this point so old nobody cares. But having worked with decisionmakers in corporations with large IT needs most were quite aware of LAMP-I mean it was in many ways the killer app of Linux.
Also this notion that stack was invented in tech is ridiculous. Stack ups have been referred to in manufacturing and medicine for years prior.
You nailed the lack of understanding. This awfulness stuck out for me:
> “Stack,” in technological terms, can mean a few different things, but the most relevant usage grew from the start-up world: A stack is a collection of different pieces of software that are being used together to accomplish a task.
>Stack logic is only just finding its footing in the corporate world, and it hasn’t spilled into mainstream conversation just yet.
When it comes to mainstream conversation, Discord appears to be picking up the slack.
EDIT: Welp, this is what I get for only glancing at the headline and not reading the article before commenting. I'll leave my mistake here rather than delete it for posterity's sake.
I read this someplace.. thought it is fun to share.. we went from spaghetti (mainframe) code to lasagna (stacks / tiered architecture) to ravioli (micro-services) :)
It's more about form than flavour. Two different raviolis can have totally different stuffings, but no reasonable person will confuse a lasagna for a ravioli... although I suppose you could put a ravioli layer inside a lasagna...
It would take an intrepid determined cook to produce the culinary metaphor of what a modern microservice landscape looks like: a bucket of ravioli that are connected to each other by a web of spaghetti. (Does that sound like more pasta than filling? Yes, it does.)
At my old company, one spiky-haired genius explained it to the simple minded as "monolithic architecture is like a wedding cake. Microservices are like cupcakes." This was after he compared it to Ben and Jerry's versus FroYo.
I sure hope the refrigeration doesn't go out, they'll have a real mess on their hands then.
* Monolithic: expensive but very carefully crafted. Beautiful. Self-contained and self-supporting. There's enough for everyone, and you'll keep it around for years (ok you'll keep a piece in the freezer, the metaphor only goes so far...)
* Microservices: cheaper, easier, and more popular on social media. Leaves you feeling a bit unsatisfied, and with a tendency to drop crumbs all over the place as you try to access the contents. Stale and discarded after a day.
(I'm assuming the spiky-haired genius was speaking in favor of microservices and I wanted to have fun with the metaphor :)
Once upon a time, Edsger Dijkstra, the inventor of the stack (data structure) attended a lecture by a prospective faculty member at UT Austin, who discussed topics related to a (network protocol) stack. Hilarity ensued.
I hereby officially coin the next buzzword for 2020: Deep-Stack-Chain
Combining the AGI capabilities of Deep Learning with hyperdimensional system architectures to create decentralized Cloud infrastructure like never before!
52 comments
[ 3.4 ms ] story [ 116 ms ] threadCan you replace the application while leaving the OS in tact? Of course. Now try replacing the OS without impacting the other two.
Of course, there are applications that run on bare metal without that abstraction layer, but the point I'm making is that in stacks with an OS, an application "on top" of that OS is not independent of the OS even with virtualization.
The processor stack and a software stack really are distinct things, because the "software stack" has the notion of interfaces at the top and the bottom of each layer.
The fact that at the implementation level, the call stack sometimes mirrors the software stack is not really relevant. It's sort of accidental: each layer could be a process, connected with other layers by a pipe for instance.
That's literally the entire point of the abstraction. Each layer is independent and can do its thing without considering what other layers are doing.
Of course, like all abstractions, it's leaky, which leads to things like Nagle's algorithm causing lag in MMORPGs when devs don't turn it off (no offense, Animats! :D )
I think that probably predates assembly language programming!
There's also a "stack", a layered architecture.
Don't confuse the two. They're unrelated.
Fundamentally, a stack is not about technology. Sure, it is used to represent a data structure in software, but the same can be said for queues, heaps, pipelines... And yes, it can also be used when the graphical representation of something looks like a pile of boxes sitting on top of each other, which is common in tech (ex: the TCP/IP model).
It may be true that tech popularized the word "stack" but it is just as easy (in fact easier) to imagine a stack of books rather than anything software related. Using that as an argument that "software is eating the world" is circular reasoning.
Then in another waiting room I saw the same thing, except it was basically a ring buffer. They used a little magnet to denote the top and I watched them keep filling below my chart and then back to the top above the other charts. No need to move every chart every time.
I highly doubt these nurses are thinking tech or programming. They're just being naturally clever.
The article was generally cringey but this sentence stood out:
Stack logic is only just finding its footing in the corporate world, and it hasn’t spilled into mainstream conversation just yet.
Which, generally, boils down to a group that is largely programmers, and even those that aren't programmers DO (AFAICT) have familiarity with the "stack" concept (non-technical Eng Managers, non-technical PMs, etc)
I'm not saying you're wrong in any way, just pointing out that it can be said in a way that doesn't sound like "programmers are all that matter" (which I don't think was your intent anyway).
Also this notion that stack was invented in tech is ridiculous. Stack ups have been referred to in manufacturing and medicine for years prior.
> “Stack,” in technological terms, can mean a few different things, but the most relevant usage grew from the start-up world: A stack is a collection of different pieces of software that are being used together to accomplish a task.
When it comes to mainstream conversation, Discord appears to be picking up the slack.
EDIT: Welp, this is what I get for only glancing at the headline and not reading the article before commenting. I'll leave my mistake here rather than delete it for posterity's sake.
No. Next question.
I sure hope the refrigeration doesn't go out, they'll have a real mess on their hands then.
* Monolithic: expensive but very carefully crafted. Beautiful. Self-contained and self-supporting. There's enough for everyone, and you'll keep it around for years (ok you'll keep a piece in the freezer, the metaphor only goes so far...)
* Microservices: cheaper, easier, and more popular on social media. Leaves you feeling a bit unsatisfied, and with a tendency to drop crumbs all over the place as you try to access the contents. Stale and discarded after a day.
(I'm assuming the spiky-haired genius was speaking in favor of microservices and I wanted to have fun with the metaphor :)
Yeah, that's got nothing to do with the article.
1) A stack 10) a queue
Combining the AGI capabilities of Deep Learning with hyperdimensional system architectures to create decentralized Cloud infrastructure like never before!