472
COMEFROM (programming.dev)
all 36 comments
sorted by: hot top controversial new old
[-] pro3757@programming.dev 119 points 1 year ago

It's in Intercal, a joke language from '70s. Mark Rendle describes it here in his talk at NDC. This whole talk is ridiculous btw.

[-] frezik@midwest.social 168 points 1 year ago

This is the same language where you have to say PLEASE sometimes or it won't compile. But if you say PLEASE too much, the compiler will think you're pandering and also refuse to compile. The range between too polite and not polite enough is not specified and varies by implementation.

[-] Whelks_chance@lemmy.world 25 points 1 year ago

I love how arbitrary, cultural and opinionated that must be to work with. You'd learn something about the implimenter of the compiler by using it for a while.

[-] Sonotsugipaa@lemmy.dbzer0.com 74 points 1 year ago

Wh... what do you mean, "originally as a joke"?

[-] s12@sopuli.xyz 37 points 1 year ago

PLEASE COMEFROM 🏷

[-] mossy_@lemmy.world 37 points 1 year ago

Guy who worked at my place before me kept using these and GOTO statements all over the place.

His name? Cotton-eyed Joe

[-] hakunawazo@lemmy.world 8 points 1 year ago* (last edited 1 year ago)

Thanks for the catchy tune, now the song sticks in my mind again. Last time was long time ago. :)

[-] match@pawb.social 8 points 1 year ago

Reference to Cottoneyed Joe considered harmful

[-] mossy_@lemmy.world 3 points 1 year ago

I almost spat out my drink when I saw this

[-] lseif@sopuli.xyz 8 points 1 year ago

where did you COMEFROM where did you GO.....TO

[-] match@pawb.social 5 points 1 year ago* (last edited 1 year ago)

where did you COMEFROM, cottonEyedJoe2

[-] neo@lemy.lol 30 points 1 year ago

COMEFROM is my go to function;

[-] onlinepersona@programming.dev 26 points 1 year ago

I honestly thought C++ (aka dumping ground of programming concepts) would implement this for "completeness".

Anti Commercial-AI license

[-] NeatNit@discuss.tchncs.de 10 points 1 year ago

They should add it in C++26

[-] uis@lemm.ee 1 points 1 year ago
[-] MajinBlayze@lemmy.world 22 points 1 year ago
[-] polonius-rex@kbin.run 9 points 1 year ago* (last edited 1 year ago)

shut your mouth

[-] RiikkaTheIcePrincess@pawb.social 21 points 1 year ago

Aaahhh, this is horrifying! You've ruined my breakfast 🙀

[-] schnurrito@discuss.tchncs.de 13 points 1 year ago

TBH I fail to see the significant difference between this and a function declaration.

[-] sxan@midwest.social 30 points 1 year ago

Doesn't it steal control flow? More like a break point, except you define where execution continues.

I wonder if it's a compile error to have multiple conflicting COMEFROM statements, or if it's random, kind of like Go's select statement.

How awesome would it be to be able to steal the execution stack from arbitrary code; how much more awesome if it was indeterminate which of multiple conflicting COMEFROM frames received control! And if it included a state closure from the stolen frame?

Now I want this.

[-] davidgro@lemmy.world 10 points 1 year ago

I wonder if it's a compile error to have multiple conflicting COMEFROM statements

I think there's at least one INTERCAL implementation where that's how you start multi-threading

[-] magic_lobster_party@kbin.run 12 points 1 year ago
print(A)
print(B)
hello: print(C)
print(D)
print(E)
comefrom hello
print(F)

This will print A, B, C and then F. D and E will be skipped because of the comefrom.

[-] palordrolap@kbin.run 6 points 1 year ago

I'd say it's more like setting up a handler for a callback, signal, interrupt or something along those lines.

Function declarations by themselves don't usually do that. Something else has to tell the system to run that function whenever the correct state occurs.

That doesn't account for unconditional come-froms.¸but I expect there'd have to be a label at the end of some code somewhere that would give a hint about shenanigans yet to occur. Frankly that'd be worse than a goto, but then, we knew that already.

[-] polonius-rex@kbin.run 5 points 1 year ago

it's semantic

at the end of the day everything boils down to sequence and branchifs

[-] Cethin@lemmy.zip 5 points 1 year ago

A function will be called by code and go to that point in code. To implement functions, you store necessary things to memory and goto the function definition. To implement that with comefrom you'd have to have a list of all the places that need to call the function as comefroms before the function definition. It'd be a mess to read. We almost never care where we are coming from. We care where we're going to. We want to say "call function foo" not "foo takes control at line x."

[-] sudo@programming.dev 4 points 1 year ago

Its like if subroutine bar could say its going to execute at line N of routine foo. But if you were just reading foo then you'd have no clue that it would happen.

You can simulate this effect with bad inheritance patterns.

[-] Thcdenton@lemmy.world 6 points 1 year ago
[-] lseif@sopuli.xyz 6 points 1 year ago

more practical than goto

[-] starman@programming.dev 5 points 1 year ago

Looks like C# 12 interceptors:

[InterceptsLocation(@"C:\testapp\Program.cs", line: 4, column: 5)]

I know it looks awful, but it's not intended for direct use, but rather for source generators for native ahead of time compilation.

https://andrewlock.net/exploring-the-dotnet-8-preview-changing-method-calls-with-interceptors/

[-] MadMadBunny@lemmy.ca 3 points 1 year ago* (last edited 1 year ago)

You’re gonna love HCF then!

[-] jbk@discuss.tchncs.de 2 points 1 year ago
this post was submitted on 21 Jun 2024
472 points (98.6% liked)

Programmer Humor

24790 readers
681 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS