Reminds me of a codebase I used to work on which we had 899 variable limit and we couldn’t name them, only number them. These were limitations of the language.
Each variable had to be assigned a 3 digit number but 1-100 were taken by internal stuff so only 101- 999 was allowed. So let’s say you wanted to check if power was between 50 and 60 you would end up with like
Basically we made devices which were surgically implanted into your body to send specific electrical signals to your spine and brain for certain medical issues. The electronics were in a metal case so your icky blood and bodily fluids didn’t cause shorts. This system was to weld the metal case closed.
Sounds like someone wanted to avoid needing to recompile for the target, but was either hardware constrained on what they wanted to do or as they thought that implementing their own language was going to be easy, learned it’s very much so not, and then took some stupid shortcuts
It’s fanuc cnc… Incredibly useful and precise but OLD! They literally still support programs from bubble tape if you need. It was basically hardware constrained initially but fixing it would break backwards compatibility which is a super selling point for them to government and long term industries.
Their controllers are mad expensive (budget version is like 30k last I checked), their support is top notch(tech typically on site within 24 hours with every possible board which may be bad so they can get you running and charge you later), they are incredibly precise and can do things other systems legally can not(a trainer I knew said “if you can move in 5 dimensions at once you can do some interesting things with nuclear energy so those require special clearance to sell”). Basically if you need them you NEED them, if you don’t then you don’t.
Lol, yup. Actually it was 4 axis. And connected to a laser instead of a milling bit. The system was also in a controlled gas environment which added extra complications.
The hard set limit of #500-#999 is really frustrating when you also have to be careful not to overwrite certain kinds of “standard” program variables that your shop or company has decided on. I’m generally pretty OK with the limitations of these controllers and G-Code in general, but I would fucking kill to be able to use an array or to be able to declare a variable 😭.
It was mostly just the naming that caused my frustration. I tried to declare all variables at start, had that section printed out and hung on my cubicle wall.
Reminds me of a codebase I used to work on which we had 899 variable limit and we couldn’t name them, only number them. These were limitations of the language.
Each variable had to be assigned a 3 digit number but 1-100 were taken by internal stuff so only 101- 999 was allowed. So let’s say you wanted to check if power was between 50 and 60 you would end up with like
#301 = 50;
#302 = 60;
#303 = powerSignal;
If #303 < #301 || #303 > #302: Display error
Continue process
That’s… that’s so awful…
If I told you what the purpose of this system was you would be really horrified…
Please, indulge me
Basically we made devices which were surgically implanted into your body to send specific electrical signals to your spine and brain for certain medical issues. The electronics were in a metal case so your icky blood and bodily fluids didn’t cause shorts. This system was to weld the metal case closed.
Sounds like someone wanted to avoid needing to recompile for the target, but was either hardware constrained on what they wanted to do or as they thought that implementing their own language was going to be easy, learned it’s very much so not, and then took some stupid shortcuts
I totally haven’t done that myself, nope…
It’s fanuc cnc… Incredibly useful and precise but OLD! They literally still support programs from bubble tape if you need. It was basically hardware constrained initially but fixing it would break backwards compatibility which is a super selling point for them to government and long term industries.
Their controllers are mad expensive (budget version is like 30k last I checked), their support is top notch(tech typically on site within 24 hours with every possible board which may be bad so they can get you running and charge you later), they are incredibly precise and can do things other systems legally can not(a trainer I knew said “if you can move in 5 dimensions at once you can do some interesting things with nuclear energy so those require special clearance to sell”). Basically if you need them you NEED them, if you don’t then you don’t.
Custom machined fissible material!?
Nah just titanium
So a FANUC controller?
Did yours spin sideways or vertically?
Lol, yup. Actually it was 4 axis. And connected to a laser instead of a milling bit. The system was also in a controlled gas environment which added extra complications.
Ooh, sounds spicy.
The hard set limit of #500-#999 is really frustrating when you also have to be careful not to overwrite certain kinds of “standard” program variables that your shop or company has decided on. I’m generally pretty OK with the limitations of these controllers and G-Code in general, but I would fucking kill to be able to use an array or to be able to declare a variable 😭.
It was mostly just the naming that caused my frustration. I tried to declare all variables at start, had that section printed out and hung on my cubicle wall.
Did this cursed language have a name?
It was g-code which as another commentator correctly pointed out was used to control a fanuc cnc system.
Ok at this point I’m okay with magic numbers, they make the code more readable
It was a lot of magic numbers, why was that set that thing set to 3 minimum? It worked good enough at 3 to be acceptable