I don't get why people defend the usage of GOTOs with claws and teeth.
In modern languages, and that includes C, the question if to use or not to use a GOTO never was an issue!
The phrase 'GOTO considered harmful' comes from times where the predominate language was FORTRAN!!!
In FORTRAN you easily see a 1000 lines program with 1 or 2 dozens of GOTOs, where the same program written in proper C or Pascal (and any other modern language) has zero.
Furthermore, the example of 'good use of goto' given in the linked article is bollocks. I would fire (or educate) a programmer giving me code like that.
Stack frame allocation costs exactly: nothing. So why do you care?
You fear an endless loop and running out of stack space?
Well, most compilers convert most recursions into loops anyway: it is called tail recursion optimization.
I don't remember when I saw recursion the last time in production code, likely decades ago, and you care about the raw cases where a manually written loop is "better" than recursion... wow.
If you have old hardware, running an old OS and running old software and never change anything: it is supposed to run indefinitely. Unless something similar like the Y2K problem catches you.
Neither WhatsApp nor Skype (nor iMessanger on iOS 6) follow(ed) that rule. Like food they suddenly rotted and stopped working. You should try to read the articles and posts you are responding to more carefully.
The stunt was: WhatsApp (the app on my phone) suddenly warned me "it will stop working" after January 1st of 2017. There was no upgrade or incompatibility involved. Just like this Skype stunt. They simply "stop working" in a few days, because the server stops routing through calls for old versions. In the WhatsApp case, they said: download and install the new version. But the new version required a newer iOS. Switching to the web based WhatsApp or Desktop version did not work either: because the "linking" of the desktop version to your account requires to use the phone WhatsApp to take a photo from a Q-Code. However, the "old" phone version is to old to work with Q-Codes. Hence all my old conversations on WhatsApp are lost: because the old WhatsApp now starts in a screen telling me: "I don't work anymore, you have to upgrade..." GOTO 10
WhatsApp pulled that same stunt on older iOS versions just a few days ago. I convince most of my friends to switch to Telegram and Threema. For business and games we mostly switched to Discord.
CISC... all w/ the goal of minimizing memory consumption That s incorrect. The goal of CISC is to minimize memory bandwidth, not memory consumption.
Look at the strcpy function, mainframes have CISC instructions where one instruction moves as much data as you want: that means you access memory exactly ones for an opcode and then multiple times for the data. A bit more complex example is an strcpy implementation in 68k code, just two instructions one to move the data and one to decide and perform a branch back: now you have 2 opcodes to read from memory for every byte moved. Ofc, not a perfect example as a 86k counts as CISC processor, even when it has already a streamlined orthogonal opcode set. Of course the opcodes in further loops come now from the cash, so still we only access memory for the data to move and not the opcodes anymore.
HyperCard and Stacks have absolutely nothing to do with web sites etc. The analogy is completely flawed.
I can not download a website, install it on my computer and modify the "stack" with a few mouseclicks to my liking.
Where do you think hypertext links came from? First of all: it does not matter. And secondly: not from HyperCard, that is a myth;D
Because I have, and the web is better in every way, For the reasons given above: it is not. It is not even the same game, you can't compare them.
and HyperTalk was buggy crap compared to JavaScript. Buggy? Can't remember that. But having a more general purpose language like JavaScrip is ofc. better. My HyperCard clone is using Groovy, however.
In case you want to compare HyperCard with a very special web programming environment, then perhaps this is something for you: https://www.lively-kernel.org/
I made about 30 stacks meanwhile with it, it is not as "perfect" as the original, scripting is a bit quirky IMHO, but the look and feel is very similar.
It is just technology and competition at the market. And the market shifted in certain directions because of Windows, not because of any particular benefit or lack there of of CISC or RISC.
There is no one on the planet who made a buying decision based on RISC or CISC, they buy because of price versus performance and OS!. E.g. Oracle only runs on certain OSes... same for SAP.
If there was a battle then clearly RISC won, btw. SunOS and Solaris moved from 68k to SPARC, basically all Unix vendors went for RISC, the predominant embedded systems that need more power than a 8bit MC/CPU run on ARM, basically all Android devices run on ARMs, so does iOS.
Regarding PowerPC is btw. considered RISC, too. Except for DSPs I guess only the x86 is left as a kind of CISC processor, and as you and others pointed out: it translates internal to RISC.
So how anyone can claim: a) there was a battle b) CISC won is beyond me;D
Apple only went from PowerPC to Intel because IBM told them to naff off when they wanted more control. That is bollocks.
Intel could not and did not want to provide the mobile PowerPCs in quantities Apple demanded and did not really put R&D into mobile PowerPCs.
IBM didn't need tthem as they were producing chips for the Wii, Xbox and PS at the time. Apple was a tiny fish pretending it was a shark. No skin off IBM's nose. This are all desktop/workstation PowerPCs...
Now Apple are moving hardware vendors again to gain more control Sorry, bollocks again. Apple is doing noting and never did anything that gave them some "particular control"... you are just spreading FUD.
I don't know.
I never needed to write such code.
I doubt it exists :D
And that was not the point anyway.
Neither Djikstra no any one else is arguing against "proper use" of GOTOs but against ABUSE, perhaps you want to reread my post you answered to.
Hu? Any examples for that?
And if it had happened, what is the relation to the WhatsApp and Skype problems?
I don't get why people defend the usage of GOTOs with claws and teeth.
In modern languages, and that includes C, the question if to use or not to use a GOTO never was an issue!
The phrase 'GOTO considered harmful' comes from times where the predominate language was FORTRAN!!!
In FORTRAN you easily see a 1000 lines program with 1 or 2 dozens of GOTOs, where the same program written in proper C or Pascal (and any other modern language) has zero.
Furthermore, the example of 'good use of goto' given in the linked article is bollocks. I would fire (or educate) a programmer giving me code like that.
There are much more errors, like fopen(f) :)
Wow, how insightful.
How else should a compiler generate machine or byte code?
So you consider it easier to change perfectly running code (for what reason?) instead of fixing the compiler settings?
That is wrong.
Every recursion can be expressed as a loop or nested loops.
Embedded people use C/C++ and mostly GCC wich means: it has tail recursion optimization just like any other modern language/compiler.
No idea why people always spread myths about embedded programming. It is not different to other programming for most people involved.
And if you're always doing a tail call, the recursion can be replaced by an iteration without too much trouble. ... but why would anyone do that?
Yeah
Stack frame allocation costs exactly: nothing.
So why do you care?
You fear an endless loop and running out of stack space?
Well, most compilers convert most recursions into loops anyway: it is called tail recursion optimization.
I don't remember when I saw recursion the last time in production code, likely decades ago, and you care about the raw cases where a manually written loop is "better" than recursion ... wow.
Like most tother chat apps ...
If you have old hardware, running an old OS and running old software and never change anything: it is supposed to run indefinitely. Unless something similar like the Y2K problem catches you.
Neither WhatsApp nor Skype (nor iMessanger on iOS 6) follow(ed) that rule. Like food they suddenly rotted and stopped working. You should try to read the articles and posts you are responding to more carefully.
The stunt was: WhatsApp (the app on my phone) suddenly warned me "it will stop working" after January 1st of 2017. ..."
There was no upgrade or incompatibility involved. Just like this Skype stunt. They simply "stop working" in a few days, because the server stops routing through calls for old versions.
In the WhatsApp case, they said: download and install the new version. But the new version required a newer iOS.
Switching to the web based WhatsApp or Desktop version did not work either: because the "linking" of the desktop version to your account requires to use the phone WhatsApp to take a photo from a Q-Code.
However, the "old" phone version is to old to work with Q-Codes. Hence all my old conversations on WhatsApp are lost: because the old WhatsApp now starts in a screen telling me: "I don't work anymore, you have to upgrade
GOTO 10
WhatsApp pulled that same stunt on older iOS versions just a few days ago. I convince most of my friends to switch to Telegram and Threema.
For business and games we mostly switched to Discord.
https://threema.ch/
https://telegram.org/
https://discordapp.com/ -- replacement for Skype and TeamSpeak
Pissing of their user base ... I really wonder how long companies continue to think they can continue to do that.
CISC ... all w/ the goal of minimizing memory consumption
That s incorrect.
The goal of CISC is to minimize memory bandwidth, not memory consumption.
Look at the strcpy function, mainframes have CISC instructions where one instruction moves as much data as you want: that means you access memory exactly ones for an opcode and then multiple times for the data.
A bit more complex example is an strcpy implementation in 68k code, just two instructions one to move the data and one to decide and perform a branch back: now you have 2 opcodes to read from memory for every byte moved. Ofc, not a perfect example as a 86k counts as CISC processor, even when it has already a streamlined orthogonal opcode set. Of course the opcodes in further loops come now from the cash, so still we only access memory for the data to move and not the opcodes anymore.
HyperCard and Stacks have absolutely nothing to do with web sites etc.
The analogy is completely flawed.
I can not download a website, install it on my computer and modify the "stack" with a few mouseclicks to my liking.
Where do you think hypertext links came from? ;D
First of all: it does not matter. And secondly: not from HyperCard, that is a myth
Because I have, and the web is better in every way,
For the reasons given above: it is not. It is not even the same game, you can't compare them.
and HyperTalk was buggy crap compared to JavaScript.
Buggy? Can't remember that. But having a more general purpose language like JavaScrip is ofc. better. My HyperCard clone is using Groovy, however.
In case you want to compare HyperCard with a very special web programming environment, then perhaps this is something for you: https://www.lively-kernel.org/
There is a HyperCard like thing for iOS called NovoCard.
It is from http://plectrum.com/novocard/N... available for iPads and the scripting language used is a tweaked JavaScript.
I made about 30 stacks meanwhile with it, it is not as "perfect" as the original, scripting is a bit quirky IMHO, but the look and feel is very similar.
Perhaps you should read the summary before writing bullshit like this.
Oh, I typed Intel when I wanted to type IBM ... no idea what you wanted to say with your rant, though :D
This is nevertheless not a battle.
It is just technology and competition at the market. And the market shifted in certain directions because of Windows, not because of any particular benefit or lack there of of CISC or RISC.
There is no one on the planet who made a buying decision based on RISC or CISC, they buy because of price versus performance and OS!. E.g. Oracle only runs on certain OSes ... same for SAP.
If there was a battle then clearly RISC won, btw.
SunOS and Solaris moved from 68k to SPARC, basically all Unix vendors went for RISC, the predominant embedded systems that need more power than a 8bit MC/CPU run on ARM, basically all Android devices run on ARMs, so does iOS.
Regarding PowerPC is btw. considered RISC, too. Except for DSPs I guess only the x86 is left as a kind of CISC processor, and as you and others pointed out: it translates internal to RISC.
So how anyone can claim: ;D
a) there was a battle
b) CISC won
is beyond me
Oh, the complaint was about speed? No idea, I usually don't upgrade to new iOS versions, they are simply to ugly.
Erm ... new IOS versions happily run on old devices.
My iPhone 4S is minimum 5 years old, btw.
People upgrade because they find the new phone more shiny. There is rarely a "software compatibility" reason.
You are both wrong.
There never was a battle.
Like there never was a battle between gasoline and diesel engines or fuel.
It is just two different approaches for designing CPU instructions sets and hence designing the CPU.
Why people now try to call research and development "a battle between" is beyond me.
Apple only went from PowerPC to Intel because IBM told them to naff off when they wanted more control.
That is bollocks.
Intel could not and did not want to provide the mobile PowerPCs in quantities Apple demanded and did not really put R&D into mobile PowerPCs.
IBM didn't need tthem as they were producing chips for the Wii, Xbox and PS at the time. Apple was a tiny fish pretending it was a shark. No skin off IBM's nose. This are all desktop/workstation PowerPCs ...
Now Apple are moving hardware vendors again to gain more control ... you are just spreading FUD.
Sorry, bollocks again. Apple is doing noting and never did anything that gave them some "particular control"
Of course, you safe the hassle to support a Hackintosh.
Or how do you want to run OS X / macOS?
If you want to run Windows your question was kinda silly ...