I agree for Goto: there are a few situations where the no-goto equivilent of a function ends up with needlessly disgusting nested If blocks and/or repeated code.
I disagree for Gosub: although I'm intimately familiar with Gosubbing (BASIC was my first language) I have yet to find a situation where it yields even arguably cleaner code than regular functions and calls. It's my belief that Gosub has been deprecated long ago and it's only available in Blitz Basic to complete support for the original BASIC command set. It may be useful as a learning tool; however, I would wean my students off of it as soon as I introduced functions.
This is simply a semantic argument - the term "function" may be technically incorrect from the perspective of mathematics, but it's been adopted long ago by computer science to include subroutines.
I disagree for Gosub: although I'm intimately familiar with Gosubbing (BASIC was my first language) I have yet to find a situation where it yields even arguably cleaner code than regular functions and calls. It's my belief that Gosub has been deprecated long ago and it's only available in Blitz Basic to complete support for the original BASIC command set. It may be useful as a learning tool; however, I would wean my students off of it as soon as I introduced functions.
A void, argument-less function is an oxymoron. :D
This is simply a semantic argument - the term "function" may be technically incorrect from the perspective of mathematics, but it's been adopted long ago by computer science to include subroutines.