11 ms·
Phrase origin: Why do we "call" functions?
- dleeftink 1y agoAlso interesting to contrast this to invocation or application (e.g. to invoke or apply). I'm sure there are fair few 'functional dialects' out there!
- ranger_danger 1y agoI seem to remember people used to say "call it up" when asking an operator to perform a function on a computer when the result was displayed in front of the user.
- userbinator 1y agoSomewhat less frequently, I also hear "invoke" or "execute", which is more verbose but also more generic. Incidentally, I find strange misuses of "call" ("calling a command", "calling a button") one of the more grating phrases used by ESL CS students.
- pansa2 1y ago> strange misuses of "call" My favourite (least favourite?) is using “call” with “return”. On more than one occasion I’ve heard: “When we call the return keyword, the function ends.”
- jamesfinlayson 1y agoI remember someone in university talking about the if function (which ostensibly takes one boolean argument).
- Findecanor 1y agoThere are languages in which `if` is a function. In in Tcl, `if` is called a "command".
- spacechild1 1y agoAlso in Smalltalk and sclang (Supercollider language)
- kitd 1y agoOr anything Lispy
- jamesfinlayson 1y agoYes I stand corrected - we were using C so definitely not a function there.
- weinzierl 1y agoSounds like something Prof. John Ousterhout would say:-; The place where this was literally accurate would be Tcl. I don't know enough Smalltalk to be sure but I think to remember it has a similar approach of everything is an object and I wouldn't be surprised if they'd coerced control flow somehow into this framework. Also Forth comes to mind, but that would probably be a stretch.
- kevindamm 1y agoI would include the cond function from lisp, or the generalization from lambda calculus λexpr1.λexpr2.λc.((c expr1) expr2)
- zahlman 1y ago> I don't know enough Smalltalk to be sure but I think to remember it has a similar approach of everything is an object and I wouldn't be surprised if they'd coerced control flow somehow into this framework. It does. It's been discussed on HN before, even: https://news.ycombinator.com/item?id=13857174 https://news.ycombinator.com/item?id=13857174
- igouy 1y agoExcept https://news.ycombinator.com/item?id=44513639 https://news.ycombinator.com/item?id=44513639
- antonvs 1y agoTry implementing that in most languages and you'll run into problems. In an imperative programming language with eager evaluation, i.e. where arguments are evaluated before applying the function, implementing `if` as a function will evaluate both the "then" and "else" alternatives, which will have undesirable behavior if the alternatives can have side effects. In a pure but still eager functional language this can work better, if it's not possible for the alternatives to have side effects. But it's still inefficient, because you're evaluating expressions whose result will be discarded, which is just wasted computation. In a lazy functional language, you can have a viable `if` function, because it will only evaluate the argument that's needed. But even in the lazy functional language Haskell, `if` is implemented as built-in syntax, for usability reasons - if the compiler understands what `if` means as opposed to treating it as an ordinary function, it can optimize better, produce better messages, etc. In a language with the right kind of macros, you can define `if` as a macro. Typically in that case, its arguments might be wrapped in lambdas, by the macro, to allow them to be evaluated only as needed. But Scheme and Lisp, which have the right kind of macros, don't define `if` as a macro for similar reasons to Haskell. One language in which `if` is a function is the pure lambda calculus, but no-one writes real code in that. The only "major" language I can think of in which `if` is actually a function (well, a couple of methods) is Smalltalk, and in that case it works because the arguments to it are code blocks, i.e. essentially lambdas. tl;dr: `if` as a function isn't practical in most languages.
- immibis 1y agoI don't think Haskell needs 'if' to be a construct for compiler optimization reasons; it could be implemented easily enough with pattern matching: if' :: Bool -> a -> a -> a if' True x _ = x if' False _ y = y The compiler could substitute this if it knew the first argument was a constant. Maybe it was needed in early versions. Or maybe they just didn't know they wouldn't need it yet. The early versions of Haskell had pretty terrible I/O, too.
- fn-mote 1y agoA short search lead to this SE post [1], which doesn't answer the "why" but says "if" is just syntactic sugar that turns into `ifThenElse`... [1]: https://softwareengineering.stackexchange.com/questions/195708/why-does-haskell-have-built-in-if-then-else-instead-of-defining-it-as-a-simple https://softwareengineering.stackexchange.com/questions/1957... The post claims that this is done in such a basic way that if you have managed to rebind `ifThenElse`, your rebound function gets called. I didn't confirm this, but I believed it.
- Delphiza 1y agoIn Excel formulas everything is a function. IF, AND, OR, NOT are all functions. It is awkward and goes against what software devs are familiar with, but there are probably more people familiar with the Excel IF function than any other forms. Here is an example taken from the docs... =IF(AND(A3>B2,A3<C2),TRUE,FALSE)
- EForEndeavour 1y agoExcel cell formulas are the most widely used functional programming language in the world.
- jamesfinlayson 1y agoYes I stand corrected - we were using C so definitely not a function there.
- Zambyte 1y agoIf takes two or three arguments, but never one. The condition is the one made syntactically obvious in most languages, the consequent is another required argument, and the alternative is optional.
- dylan604 1y agoHuh? if (true) {} takes precisely one argument.
- mjburgess 1y agoThat's an application of `if` with one of the arguments empty. The semantics of `if` requrie at least, `if(cond, clause)`, though more generally, `if(cond, clause, else-clause)`
- devnullbrain 1y agoYou and Zambyte are both doing the same thing the top level comment is complaining about. e.g. in C: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf (6.8.5.1) selection-statement: if ( expression ) secondary-block if ( expression ) secondary-block else secondary-block in C++: https://eel.is/c++draft/gram.stmt https://eel.is/c++draft/gram.stmt selection-statement: if constexpropt ( init-statementopt condition ) statement if constexpropt ( init-statementopt condition ) statement else statement if !opt consteval compound-statement if !opt consteval compound-statement else statement where condition: expression attribute-specifier-seqopt decl-specifier-seq declarator brace-or-equal-initializer structured-binding-declaration initializer More examples: https://docs.python.org/3/reference/grammar.html https://docs.python.org/3/reference/grammar.html https://doc.rust-lang.org/reference/expressions/if-expr.html#grammar-IfExpression https://doc.rust-lang.org/reference/expressions/if-expr.html... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... expression != argument
- 1y ago
- ahartmetz 1y agoI frequently see people treating if as if it was "taking a comparison", so: if (variable == true) ...
- lmm 1y agoif should be a function, though sadly many languages aren't good enough to express it and have to make it a builtin.
- userbinator 1y agoI've heard that too --- the voice in my head automatically read it in the customary thick Indian accent.
- pwdisswordfishz 1y agoEh, "return" is just a very restricted continuation with special syntax… it's a stretch to say you "call" it, but not unjustified.
- layer8 1y agoSome people use parentheses for the return value, to make it look like a function call: return(value);
- treyd 1y agoI actually see the converse often with novices often, referring to statements (or even entire function decls) as "commands".
- kragen 1y ago"Command" is a better term for what we call "statements" in imperative programming languages. "Statement" in this context is an unfortunate historical term; except in Prolog, these "statements" don't have a truth-value, just an effect. (And in Prolog we call them "clauses" instead.)
- adrian_b 1y agoTrue. In many early computer programming documents the term "order" was used instead of "statement", where "order" was meant as a synonym for "command" and not as referring to the ordering of a sequence.
- kragen 1y agoOccasionally, but much more often (as in Mauchly's cited paper) an "order" was a machine instruction, not a high-level language "statement".
- adrian_b 1y agoYes, but that is mostly because in the first few years (including by the time of Mauchly), there were no "high-level" programming languages, so the "orders" composing the text of a program corresponded to instructions directly executable by the machine. I believe that the term "statement" has been imposed by the IBM publications about FORTRAN, starting in 1956. Before the first public documents about IBM FORTRAN, the first internal document about FORTRAN, from 1954, had used the terms "formula" for anything that later would be called "executable statement", i.e. for many things that would not have been called formulas either before or after that, like IF-formulas, DO-formulas, GOTO-formulas and so on, and the document had used "sentence" for what later would be called "non-executable statements" (i.e. definitions or declarations). Before FORTRAN (1951 to 1953), for his high-level programming language Heinz Rutishauser had used the term "Befehl", which means "command". (For what we name today "program", he had used the term "Rechenplan", which means "computation plan".)
- Dwedit 1y agoC# seems to like to use "Invoke" for things like delegates or reflected methods. Then it proceeds to use "Call Stack" in the debugger view.
- Zambyte 1y agoMicrosoft devs get paid by the character, I'm not sure that counts.
- deleted 1y ago[deleted]
- spudlyo 1y agoInvoke comes from Latin invocō, invocāre, meaning “to call upon”. I wouldn’t view it as a misuse, but rather a shortening.
- thaumasiotes 1y ago> Invoke comes from Latin invocō, invocāre, meaning “to call upon”. (In the way you'd call upon a skill, not in the way you'd call upon a neighbor.)
- exe34 1y agoWhich fits nicely for calling a function - you use its skill, you don't call for a chat.
- coldtea 1y agoBut vocare (the voco in invoco) is how you'd call a neighbor
- marcosdumay 1y agoIt's calling a person like by saying their name loudly.
- kgwxd 1y agoNow that it's commonly "tap or click the button" I might be down with the next gen using "call". Anything, as long as they don't go with "broh, the button".
- 1718627440 1y agoOn an old Nokia you follow links by pressing the call button.
- zahlman 1y ago>Incidentally, I find strange misuses of "call" ("calling a command", "calling a button") one of the more grating phrases used by ESL CS students. From my own experience, native speakers (who are beginners at programming) also do this. They also describe all kinds of things as "commands" that aren't.
- skaushik92 1y ago> ... but those of any complexity presumably ought to be in a library — that is, a set of magnetic tapes in which previously coded problems of permanent value are stored. Oddly, I never thought of the term library as originating from a physical labelled and organized shelf of tapes, until now.
- zabzonk 1y agoI've never heard of a library being called anything else - look at the common file extension .lib, for example.
- eythian 1y agoI don't see .lib being all that common, but it might just be what I'm used to. `.so` or `.dll` or such sure (though to be fair, the latter does include the word library.)
- spacechild1 1y ago.lib is the traditional extension for static libraries and import libraries on Windows. Every .dll has an accompanying .lib. (Msys2 uses their own extensions, namely .a for static libraries and .dll.a for import libraries.)
- empath75 1y agoIt's not _that_ they are called libraries, but _why_ they are called libraries. I had assumed, like many others that it was purely by analogy (ie, a desktop), and not that the term originated with a physical library of tapes.
- leoc 1y agoAt https://youtu.be/DjhRRj6WYcs?t=338 https://youtu.be/DjhRRj6WYcs?t=338 you can see EDSAC's original linker, Margaret Hartrey, taking a library subroutine from the drawer of paper tapes. (But you should really watch the whole thing, of course!)
- ks2048 1y agoThere is also the phrase in music, "call and response" - even referencing a return value.
- seabass 1y agoI love this sort of cs history. I’m also curious—why do we “throw” an error or “raise” an exception? Why did the for loop use “for” instead of, say, “loop”?
- antod 1y agoI'm guessing "throw" came about after someone decided to "catch" errors. As for "raise", maybe exceptions should've been called objections.
- zahlman 1y agoRuntimeObjection: autopsy report changed contents during cross-examination
- maxbond 1y ago"Exception" comes from hardware/state machines, and the name reflects that they may not be error cases. For instance, if an embedded device is waiting for a button press, then pressing that button will put the MCU into an exceptional/special state (eg interrupting execution or waking up from sleep). But surely those days are in the past. We should call them objections, because they're always used for errors and never for control flow. [1] After all, that would be an unconditional jump, and we've already settled that those are harmful. [1] https://docs.python.org/3/library/exceptions.html#StopIteration https://docs.python.org/3/library/exceptions.html#StopIterat...
- titanomachy 1y agoThat's a great question. The first language I learned was python, and "for i in range(10)" makes a lot of sense to me. But "for (int i = 0; i < 10; i++)" must have come first, and in that case "for" is a less obvious choice.
- masklinn 1y agoFOR comes from ALGOL in which as far as I know is was spelled: for p := x step d until n do
- kragen 1y agoIt's interesting to think of "calling" as "summoning" functions. We could also reasonably say "instantiating", "evaluating", "computing", "running", "performing" (as in COBOL), or simply "doing". In Mauchly's "Preparation of Problems for EDVAC-Type Machines", quoted in part in the blog post, he writes: > The total number of operations for which instructions must be provided will usually be exceedingly large, so that the instruction sequence would be far in excess of the internal memory capacity. However, such an instruction sequence is never a random sequence, and can usually be synthesized from subsequences which frequently recur. > By providing the necessary subsequences, which may be utilized as often as desired, together with a master sequence directing the use of these subsequences, compact and easily set up instructions for very complex problems can be achieved. The verbs he uses here for subroutine calls are "utilize" and "direct". Later in the paper he uses the term "subroutine" rather than "subsequence", and does say "called for" but not in reference to the subroutine invocation operation in the machine: > For these, magnetic tapes containing the series of orders required for the operation can be prepared once and be made available for use when called for in a particular problem. In order that such subroutines, as they can well be called, be truly general, the machine must be endowed with the ability to modify instructions, such as placing specific quantities into general subroutines. Thus is created a new set of operations which might be said to form a calculus of instructions. Of course nowadays we do not pass arguments to subroutines by modifying their code, but index registers had not yet been invented, so every memory address referenced had to be contained in the instructions that referenced it. (This was considered one of the great benefits of keeping the program in the data memory!) A little lower down he says "initiate subroutines" and "transferring control to a subroutine", and talks about linking in subroutines from a "library", as quoted in the post. He never calls subroutines "functions"; I'm not sure where that usage comes from, but certainly by BASIC and LISP there were "functions" that were at least implemented by subroutines. He does talk about mathematical functions being computed by subroutines, including things like matrix multiplication: > If the subroutine is merely to calculate a function for a single argument, (...)
- weinzierl 1y ago"He never calls subroutines "functions"; I'm not sure where that usage comes from, but certainly by BASIC and LISP there were "functions" that were at least implemented by subroutines." I think the early BASIC's used the subroutine nomenclature for GOSUB, where there was no parameter passing or anything, just a jump that automatically remembered the place to return. Functions in BASIC, as I remember it, were something quite different. I think they were merely named abbreviations for arithmetic expressions and simple one line artithmetic expressions only. They were more similar to very primitive and heavily restricted macros than to subroutines or functions.
- walthamstow 1y agoOff topic somewhat but where the hell did the verb 'jump' come from for video calls? I'm always being asked to jump on a call
- kragen 1y agoMaybe it's a hint that the operation is irreversible! :-)
- klodolph 1y agoI always thought it was just a metaphor for suddenly leaving whatever you were doing at the time. You’re doing something else, and then you jump on a call. You don’t mosey on over and show up on the call fifteen minutes later.
- lgas 1y agoThis was a result of Zoom's acquisition of the band House of Pain.
- mook 1y agoI assume it's because you're doing something you'd rather not do to benefit somebody else, much like you'd jump on a grenade :p
- Bluestein 1y agoI'll henceforth take this as the canonical explanation :)
- 1y ago
- lubosm 1y agoI'd like to point at CALL, a CPU instruction, and its origins. I'm not familiar with this, but it could reveal more than programming languages. The instruction is present at least since first intel microprocessors and microcontrollers were designed.
- kragen 1y agoThe first Intel microcontrollers were the 8008 and the 4004, designed in 01971. This is 13 years after this post documents the "CALL X" statement of FORTRAN II in 01958, shortly after which (he documents) the terminology became ubiquitous. (FORTRAN I didn't have subroutines.) In the Algol 58 report https://www.softwarepreservation.org/projects/ALGOL/report/Algol58_preliminary_report_CACM.pdf/ https://www.softwarepreservation.org/projects/ALGOL/report/A... we have "procedures" and "functions" as types of subroutines. About invoking procedures, it says: > 9. Procedure statements > A procedure statement serves to initiate (call for) the execution of a procedure, which is a closed and self-contained process with a fixed ordered set of input and output parameters, permanently defined by a procedure declaration. (cf. procedure declaration.) Note that this does go to extra pains to include the term "call for", but does not use the phraseology "call a procedure". Rather, it calls for not the procedure itself, but the execution of the procedure. However, it also uses the term "procedure call" to describe either the initiation or the execution of the procedure: > The procedure declaration defining the called procedure contains, in its heading, a string of symbols identical in form to the procedure statement, and the formal parameters occupying input and output parameter positions there give complete information concerning the admissibility of parameters used in any procedure call, (...) Algol 58 has a different structure for defining functions rather than procedures, but those too are invoked by a "function call"—but not by "calling the function". I'm not sure when the first assembly language with a "call" instruction appeared, but it might even be earlier than 01958. The Burroughs 5000 seems like it would be a promising thing to look at. But certainly many assembly languages from the time didn't; even MIX used a STJ instruction to set the return address in the return instruction in the called subroutine and then just jumped to its entry point, and the PDP-10 used PUSHJ IIRC. The 360 used BALR, branch and link register, much like RISC-V's JALR today.
- 1y ago
- monkpit 1y agoYou “call upon” the function to perform a task, or return a value as the case may be. Just as you may call upon a servant or whatever.
- thaumasiotes 1y agoThe answer is in the article. You "call" functions because they are stored in libraries, like books, and like books in libraries, when you want them, you identify which one you want by specifying its "call number".
- kgwgk 1y agoAnother answer also in the article is that you call them like you call a doctor to your home, so they do something for you, or how people are “on call”. The “call number” in that story comes after the “call”. Not the other way around.
- artemonster 1y agoAlso exists: „activate“ from activation record
- Swiffy0 1y agoI'm Finnish and in in Finnish we translate "call" in function context as "kutsua", which when translated back into English becomes "invite" or "summon". So at least in Finnish the word "call" is considered to mean what it means in a context like "a mother called her children back inside from the yard" instead of "call" as in "Joe made a call to his friend" or "what do you call this color?". Just felt like sharing.
- olegp 1y agoUnrelated, but if you happen to be in Helsinki, you should join the local Hacker News meetup: https://bit.ly/helsinkihn https://bit.ly/helsinkihn
- ivanjermakov 1y agoIn russian it's kind of similar, back translation is "call by phone", "summon", "invite".
- morningsam 1y agoIn German, we use "aufrufen", which means "to call up" if you translate it fragment-by-fragment, and in pre-computer times would (as far as I know) only be understood as "to call somebody up by their name or nummer" (like a teacher asking a student to speak or get up) when used with a direct object (as it is for functions). It's also separate from the verb for making a phone call, which would be "anrufen".
- kqr 1y agoInteresting! Across the lake in Sweden we do use "anropa" for calling subprograms. I've never heard anyone in that context use "uppropa" which would be the direct translation of aufrufen.
- EdSchouten 1y agoSame in Dutch. “Oproepen” means “to summon”. We would use “aanroepen”.
- 1y ago
- burnt-resistor 1y agoBecause, obviously, we stand out in a field of the code segment and shout the address we which to jump to or push onto the stack. ;)
- Ferret7446 1y agoNot a scientific theory, but an observation. New words propagate when they "click". They are often short, and for one reason or another enable people to form mental connections and remember what they mean. They spread rapidly between people like a virus. Sometimes they need to be explained, sometimes people get it from context, but afterward people tend to remember them and use them with others, further propagating the word. A fairly recent example, "salty". It's short, and kinda feels like it describes what it means (salty -> tears -> upset). It sounds like "call" is similar. It's short, so easy to say for an often used technical term, and there are a couple of ways it can "feel right": calling up, calling in, summoning, invoking (as a magic spell). People hear it, it fits, and the term spreads. I doubt there were be many competing terms, because terms like "jump" would have been in use to refer to existing concepts. Also keep in mind that telephones were hot, magical technology that would have become widespread around this same time period. The idea of being able to call up someone would be at the forefront of people's brains, so contemporary programmers would likely have easily formed a mental connection/analogy between calling people and calling subroutines.
- gjm11 1y agoSide-note: for me, at least, "salty" isn't anything to do with tears; in my idiolect when someone's "salty" it doesn't mean they're sad, it means they're angry or offended or something along those lines. The metaphor is more about how salt (in large quantities) tastes strong and sharp. (Which maybe illustrates that a metaphor can succeed even when everyone doesn't agree about just what it's referring to, as you're suggesting "call" may have done.)
- frosted-flakes 1y ago'Salty' in that context means 'bitter', ironically.
- layer8 1y agoI would say “resentful”, “disgruntled”, “aggrieved”. “Bitter” feels like a more longer-lasting, somewhat less emotional condition to me. And I agree that it has nothing to do with tears. The actual etymology stems from sailors: https://www.planoly.com/glossary/salty https://www.planoly.com/glossary/salty
- pixelpoet 1y agoAnother interesting one is in games when an effect is said to "proc", which I guess is from a procedure getting called.
- jamesemmott 1y agoThis original sense of 'call' (deriving from the 'call number' used to organize books and other materials in physical libraries) was also responsible for the coinage of 'compiler', according to Grace Hopper: 'The reason it got called a compiler [around 1952] was that each subroutine was given a "call word", because the subroutines were in a library, and when you pull stuff out of a library you compile things. It's as simple as that.'
- liotier 1y agoI just connected the dots... The identifier digits in the Dewey Decimal classification are called "call numbers" !
- dmd 1y agoYes, that's in the second paragraph of the article.
- debo_ 1y agoI took this to be a pun on "decimal" and "connecting the dots" but perhaps I'm just wired to see puns where they weren't necessarily intended.
- dotancohen 1y ago> I'm just wired to see puns where they weren't necessarily intended. I guess it keeps you grounded. Shocking how that works.
- OldfieldFund 1y agoI invoke them :]
- tshaddox 1y agoSynonyms of "invoke" include "call forth" and "conjure up."
- fanf2 1y ago[Wilkes, Wheeler, Gill](https://archive.org/details/programsforelect00wilk https://archive.org/details/programsforelect00wilk) [1951] uses the phrase “call in” to invoke a subroutine. Page 31 has: > … if, as a result of some error on the part of the programmer, the order Z F does not get overwritten, the machine will stop at once. This could happen if the subroutine were not called in correctly. > It will be noted that a closed subroutine can be called in from any part of the program, without restriction. In particular, one subroutine can call in another subroutine. See also the program on page 33. The Internet Archive has the 1957 edition of the book, so I wasn’t sure if this wording had changed since the 1951 edition. I couldn’t find a paper about EDSAC from 1950ish that’s easily available to read, but [here’s a presentation with many pictures of artefacts from EDSAC’s early years](https://chiphack.org/talks/edsac-part-2.pdf https://chiphack.org/talks/edsac-part-2.pdf). It has a couple of pages from the 1950 “report on the preparation of programmes for the EDSAC and the use of the library of subroutines” which shows a subroutine listing with a comment saying “call in auxiliary sub-routine”.
- quuxplusone 1y ago(Blog author here.) Nice find! I'll try to incorporate that into the post at some point. The 1951 first edition is also on archive.org (borrowable with a free login account): https://archive.org/details/preparationofpro0000maur/page/32/mode/2up?q=called https://archive.org/details/preparationofpro0000maur/page/32... I agree, it looks like this 1951 source is using "call in" to mean "invoke" — the actual transfer of control — as opposed to "load" or "link in." Which means this 1951 source agrees with Sarbacher (1959), and is causing me right now to second-guess my interpretation of the MANIAC II (1956) and Fortran II (1958) sources — could it be that they were also using "call in" to mean "invoke" rather than "indicate a dependency on"? Did I exoticize the past too much, by assuming the preposition in "call in" must be doing some work, meaning-wise?
- seanc 1y agoI think Library Science has contributed much more to modern computing than we ever realize. For example, I often bring up images of card catalogs when explaining database indexing. As soon as people see the index card, and then see that there is a wooden case for looking up by Author, a separate case for looking up by Dewey Decimal et. cet. the light goes on. https://en.wikipedia.org/wiki/Library_catalog https://en.wikipedia.org/wiki/Library_catalog
- AdhemarVandamme 1y agoI’m old enough to have used (book) dictionaries and wooden case card catalogues in the local library. So when I learned about hashmaps/IDictonary a quarter century ago, that’s indeed the image that helped me grok the concept. However, the metaphor isn’t that educationally helpful anymore. On more than one occasion I found myself explaining how card catalogues or even (book) dictionaries work, only to be met with the reply: “oh, so they’re basically analogue hashmaps”.
- taeric 1y agoAbsolutely! I confess I assumed this was explicitly part of how things were taught. With the "projected" attributes in the index being what you would fit on a card. I'm surprised that so many seem to not have any mental model for how this stuff works.
- charcircuit 1y agoEven if it did contribute more, it still contributed an absolutely miniscule amount to modern computing.
- evv 1y agoA few months ago I was asking myself, why is the "standard" width of a terminal 80 characters? I assumed it had to do with the screen size of some early PCs. But nope, its because a punch card was 80 characters wide. And the first punch cards were basically just index cards. Another hat tip to the librarians. I guess this is the computing equivalent of a car being the width of two horse's asses...
- 1y ago
- hkon 1y agohttps://youtu.be/xrIjfIjssLE?t=205 https://youtu.be/xrIjfIjssLE?t=205 A good time to link this classic
- amelius 1y agoHuh, I gosub my functions ...
- gorgoiler 1y agoAnother use of call is in barn / folk / country dancing where a caller will call out the moves. “Swing your partner!”, “Dosey do!”, “Up and down the middle!” etc. Each of these calls describes a different algorithmic step. However, it’s unlikely this etymology has anything to do with function calling: each call modifies the global state of the dancers with no values returned to the caller.
- vincent-manis 1y agoGLENDOWER: I can call spirits from the vasty deep. HOTSPUR: Why, so can I, or so can any man; But will they come when you do call for them? -- Henry the Fourth, Part 1
- leoc 1y agoIf the librarian's 'call for' meaning was indeed the one originally intended, then even in Mauchly's 1947 article you can already see slippage towards the more object-oriented or actor-oriented 'call to' meaning.
- kgwgk 1y agoThat’s a big “if” when the only support for that theory seems to appear a decade later than the “call in” meaning.
- leoc 1y agoTo be honest I'm not sure what you're saying here, or what you think I'm saying.
- kgwgk 1y agoYou wrote "If the librarian's 'call for' meaning was indeed the one originally intended" I doubt that "the librarian's 'call for' meaning was indeed the one originally intended" (not that you say it!). Or maybe there is no difference between what you mean by "call for" and what the first quote meant by "call in". The subroutine is called / retrieved - and control is transferred to that subroutine. (I wouldn't say that when doctors are called to see a patient, for example, they are called in the librarian's meaning.)
- smartaz42 1y agoI've always thought it odd that the one thing the caller and callee need to agree on are called arguments.
- kgwgk 1y agoWhy did the wild “called” that dog in Jack London’s novel?
- dboreham 1y agoBecause they're subroutines. And you call those. Often with a call instruction.
- briantakita 1y ago> Calling a function is like calling for a servant — a summoning to perform a task. So we renamed our git branches from master to main...because of colonialism. So what's the correct non-colonial word? ask, request, plea? Some people here seem to like the word "summon". tsk, tsk, tsk
- bravesoul2 1y agoThat's easy. The hard part is what do we call functions.
- _kst_ 1y agoAlgol 60 also uses the word "call" for parameters as well as functions. It introduced (?) the terms "call by value" and "call by name". For example, in 4.7.5.3: "In addition if the formal parameter is called by value the local array created during the call will have the same. subscript bounds as the actual array." In modern terminology, we call procedures/functions/subroutines and pass arguments/parameters, so "pass by (value|name|reference)" is clearer than "call by (value|name|reference)". But the old terms "call by value" et al have survived in some contexts, though the idea of "calling" an argument or parameter has not.
- zoomablemind 1y ago> ... Why do we "call" functions? I always thought that the functions did not need a call keyword, as they normally would return a value, so that functions would appear in an assignment. So one just uses the function. What needed a CALL was a subroutine, which effectively was a named address/label. Indeed it would be just as possible to GOTO the address/label and then GOTO back. CALL keyword made the whole transaction more comprehensive. So in a sense it was similar to calling up someplace using the address number. Often times this would change some shared state so that the caller would then proceed after the call. Think of it as if a 'boss' first calls Sam to calculate the figures, then calls Bill to nicely print the TPS report. Eventually everything became a function and subroutines were associated with spaghetti... Now, why is that it's called routine (aka program) and subroutine?
- zoomablemind 1y ago> ...why is that it's called "routine” Well, apparently [0], in a 1947 document "Planning and Coding Problems for an Electronic Computing Instrument, Part 1" by H. Goldstine and J. von Neumann it is stated: "We call the coded sequence of a problem a routine" [0]: https://retrocomputing.stackexchange.com/q/20335 https://retrocomputing.stackexchange.com/q/20335
- anxious-penguin 1y agoreminder that the author is a convicted rapist. for more details skip to the relevant section of the following article: https://izzys.casa/2024/11/on-safe-cxx/ https://izzys.casa/2024/11/on-safe-cxx/