Do Programing Languages Need the Concept of Call Stack?

By Xah Lee. Date: .

Big spontaneous rant follows.

Let me also say my gripe. Call stack, is another computer engineering side effect. It is irrelevant to programing. It is compiler writer's concern. If, a language, needs to talk about call stack in order to explain or benefit its programers, the lang is not a well designed one. In my opinion. This is part of the reason, i despise C, C++, etc. And despise those hacker types talking about call stack. The opposite view point, is viewing a lang as API, or, math oriented lang, or, application oriented languages. Lang that qualify this way are: bash, powershell, Wolfram Lang, APL, julia, matlab. And, this point of view, is completely foreign to the typical hacker types. Never occurred in their brain. This is also why, i despise them. C, Rust, etc types. Industrial coders.

U no get the point. Like, ya brain is stuck by tech geeking. U know what i mean?. I can explain in detail. Alternatively, u can try to read what i wrote, like, spend 10 min in it, thinking. Let the idea sip into ur brain. If u do that, let me know if u understood. Like, explain, in ur own words, what i mean.

Here, if the question we r debating is: whether to implement a functional lang requires the use of stack. Then, i have 1 answer that i think am 100% correct, thus, your statement is incorrect. But Two, there's the term 'function programing lang' which is not well defined. However, i don't think we even need a precise definition of functional lang. Let me give my reason for one, why am correct:. You can implement a functional lang sans stack. You simply use global vars for context. Agree?.

Receipe is a programing lang for algorithms right?.

In a lang for quantum computing, you think the programer need to know call stack?. In a lang for dna computing, u think the coder needs to know call stack?.

The pont s very simple. Call stack, is a implementation issue. Is not a programing lang isue. You r mixing them. I said this a thousand times in my thread with reaper. . Call stack, is like float int double long crap, and pointer crap, and list array distiction crap, these r loved tech geeking C nerds. They are side effect of computer engineering. Meaning, these concepts, r not essential, but due to engineering of comp and programing lang tech, they surface up.

No. Lol. I actually have a hard time how you guys don't get the point. If i may press and heighten myself, i think because u guys don't have math training. U see a implementation issue, which is ubiquitous and everywhere because it's a computer engineering side effect. A Requirement for practicality. And you mix it with programing language issue. A programing language, do not need the implementation issue of call stack. No need to even know it exist. And as i debated with sqrt, u can actually implement any lang sans call stack. And he said, yeah but inefficient or rigister machine or blab. Indeed. That's why it's a practical issue. A sideeffect of engineering. Let me put it in another way:. Ever seen a algorithm book, that when it discuss a function, it says u need to know the function's call stack?. When u see sort algorithm discussed with code, ever seen it mention oh btw the function is implemented by call stack so that if u wanna debug u need to fire up debugger or ide to lookup call stack? In a algorithm book?. WHAT extreme idiotism am dealing with in my 20 years of fighting with the hacker idiots gang. You are currently witnessing, why people calls me a troll. Because, i am correct! And far beyond what they know.

I really don't get it. How is it possible, for a programer, who do not see, that a programing language issue is not and separate from implementation of the langue issues. Now, the concept of call stack itself, is a very important concept, for every good programer, even if the programer is not in compiler or related field and never will be. Because, stack itself, is a fundamental comp sci concept. Call stack, is important for programers to know too. Because, it's a unescapable concept that arose as part of computer engineering. Like, when u talk about computer keyboard, u can't avoid rubber dome or cherry MX switch or keycode or scancode or diode or usb. But, they are computer engineering side effect concepts having nothing to do with the functionality and operation of a keyboard. Is that last explanation clear?.

Now, the most annoying thin that ticks me off when debating with the typical industrial hacker types is that, if we each have diff opinions and we just normally debate or exchange views, then all's fine. But when it comes to these hacker types, C, unix, emacs, vim, these idiotic hacker types, when they see my unusual opinions, they present their opinion as if i'm absolutely crazy and wrong, and insist this way for hours or days or years. Thinking i am just a nutjob and crazy and troll. These idiots, in their tone of debate, present their (very normal and common view) as the gospel. Insist, any view diff from them is wrong. So, is the call stack used in implementation of function in programing languages, a concept that is necessary to a programer of a programing language?. Is it?. It is right? Like a screw is a essential idea a car driver needs to know, right?. ( @sqrt and @Georrg actually, am having a bad day RL. :slight_smile: forgive me for my random rant. Don't mean to attack you guys. ).

(All good, I'm just trying to understand what you're saying. So you mean the design of a programming language should not be influenced at all by implementation details such as call stack?).

Yes. But i do understand, to certain degree, it is not avoidable. The question is to what degree. As i mentioned, bash, powershell, wolfram lang, julia, matlab, apl, these r langs that distance themselfs from comp engineering side effects such as C's pointer ref int float double long etc. And haskell, also distance from such comp engineering side effect concepts, but in a different approach. While, in langs like C, rust, C++, C# basically low level lang, u tend to see much more of these comp engineering side effects. In js, python, perl, it's like more like in the middle. But am even saying, that even in lowest level lang, call stack should and can be a completely separate, irrelevant, concept, in the programing lang. Because, how something is implemented really have nothing to do with the thing itself. Assembly lang, do not have or need call stacks in implementation, because it doesn't even have functions. In lowest level, machine lang, just a sequence of 1 and 0, don't have even var or anything. And in lambda calculus, u no need concept of call stack. In lower level the combinator, no call stack. No function, no var, no value. Full computation. And, turing machine, as i mentioned in the beginning of this thread. That's my main point. Call stack, is a concept in implementation of a function of a comp lang. This concept is not needed, in the programing language, its use. For some low level lang such as C, sure, you might want it. The proper name would be historical record of function call and their order. Or, call it call stack, if u want. Since it's a popular concept already widely understood. But, call stack, is not necessary the same as a historical record of function call and their context and order, for the purposes of debugging. And as i mentioned, u no need call stack to implement a function. It just so happened, by history, how things came to be, that we do "call stack". But it can just be global vars etc. Depending on what hardware we r using.

Yeah. Hacker type. :grin:. (now in bed. No keyboard). I usually use that term in a derogetary sense. Hacker types. But not necessarily. That's just how typical elite industry coder are like, their collective thinking pattern. 1st 7 years of my coding experience is with the lang wolfram lang, and have 0 knowledge of comp sci student had in even first year college. So, i guess, that made a strong influence of what i think is a programing lang. Very diff from typical industrial langs. My opinion about the call stack in this thread, is VERY representative of wolfram lang design philosophy. In fact, i'd say, if u grew up first 5 years coding bash, power shell, apl , matlab, and not knowing anything about C C++ etc. You'd also have similar experience. You'd never know what is a call stack, or heard of it.

In my programing career, since 1992, i do not know what is a call stack, until, around maybe 2010, for 20 years, n i'd claim am a master of at least perl, wolfram lang, emacs lisp, js. In fact, to this day, i never, ever, looked up call stack while writing software, except seeing them in i recall python error messages, n elisp. I do not even know how to look up a call stack, in any langs i know of. Except mathematica, that Stack[] function reaper posted. I never actually used it though, except maybe trying it when reading about it in 90s. I've never, ever, used a debugger, in my life. The thought that a programer need to know what is a call stack, or need to use it, is the most idiotic idea, popular only among in hackers. A very narrow, head buried in sand, point of view. The above is calmly typed out, on a touchscreen keyboard. It represent my honest point of view. And it is also fairly typical, of my heated debate with hacker types of industrial coders, in my 20 years of verbally fighting with them. They call me a troll.

(print for debug). That's what i do. Works fine. And i still insist, one do not need a debugger. Unless, you work with a lowish lang like C C++ Java etc. Debugger, is kinda a foreign thing to programing. It arose with the way and history and culture of computers. A real debugger, has nothing to do with commonly understood debugger of C and IDE etc. Those r a hack, tied to compiler and hardware architecture. A real debugger, is a math and algorithm and programing language based one. Captured by the phrase i contrasted to 'call stack', namely: function call history record info. Btw, in a similar vein, of historically developed baggage, is line based programing langs: C C++ java ruby and especially python, even lisp. All hack crap syntax. It came from punch cards, 80 holes row. But the industry programer idiots, their brain cannot fathom how that has to do with the normal style idiom of cutting ur lines at 70 chars. And the most idiotic python, even pushed it into syntactical grammar of the lang, thinking it solves the formatting problem. Like, if u have a problem with your legs, u cut it off. Problem solved!.

I wanted to post relevant articles. But basically, arguing with hacker idiots for 20 years, each time the same argument pattern occur. So i thought, why not write them down as essay once for all, so i can point. Well, that's actually of little help. Because in argument, if u post, nobody gonna read it anyway. People wanna just argue, with their idiotic thoughts as they imbibed and imbued in their brain. But, the thought change does occur, basically, very slowly, every 10 years. For example, the line based fuck idea is starting to see light of change, due to, golang's gofmt and deno and clang now. After 20 years Mathematica had it. For example, the the no repl, to repl as god thing, to notebook is the god idea, happened also slowly. In 90s, the hacker idiots fight repl of scheme as is idiotic. Then till python started to have repl, then the hacker idiots thinking it's best thing since sliced bread. Till, python + jupitor copied the notebook of Mathematica of 1986. Then, the hacker idiots begin to see, oh, org mode, oh, notebook, is a good thing. The, mothefucking idiotic FUCK, of the hacker types industrial coding FUCK!. And now driveling about call stack!!!!!. Why does that happen?.

The reason is: the hacker types of coders, r not mathematicians, never studied math. Hackers is in a specific community with specific culture and views and knowledge. So, their view of programing, is limited to the view of growth and evolution of computers of the time. They dunno better. Culture. In short.

(Mathematica also missing things from industrial langs). No. Not really. What you are seeing what it is missing, is not that it is missing. Rather, it is because the nature and philosophy and goal of Wolfram Lang. Very diff from industrial langs. In a sense, could say, it's a diff between low and high level langs.

On the call stack thing, you know? Sometimes i really have problem understanding these hackers. How is it possible, to not understand the common sense, that bash coders basically never used a debugger or call stack?. R these hackers deaf?. I have said about bash, powershell, many times. Like 3 or 4 times, literally, in this thread. So do these hackers fucks, think that when coding bash, you fire up debugger to see call stack, as often as C coders?. So, at least they knew, in heart, that when coding in bash, powershell, u no fire up debugger and no call stack, right?. Then, why cannot they, think a bit more, and see what am getting at?. Why these idiot brainless fuckers, do not think, but come back to their brain home and insist and persist call stack this or that and debugger this and that???. You r seeing this seething rant, because, it is very characteristics of my fight with hackers for the past 20 years, happens weekly, for 20 years. And the pattern and content of argument today, is very much the same. Where, i look at programing langs and coding from certain math perspective, while the hacker types, dunno what am talking about but insist their low level compiler fuck. Int float long double pointer ref array vs list fuck and call stack fuck. For the first 10 years arguing with them, i have little knowledge of what's going on of compilers or machine lang or assembly or how cpu works. But, i still think i have valid argument, but was frustrated in argument, because it is precisely compiler stuff these hacker types wanna insist, and soon would call out my ignorance of it. But now with 30 years of studying programing lang. I know the compiler fucks these hackers was saying. But they idiots, still no get what am saying. FUCKING IDIOTS Clang. And yes, i have like maybe 30 articles on these. (gotta go RL. Bb in 2 hours. Then start livestream 1pm).