[HN Gopher] QuickBasic64: Basic for the Modern Era
       ___________________________________________________________________
        
       QuickBasic64: Basic for the Modern Era
        
       Author : daitangio
       Score  : 74 points
       Date   : 2020-07-03 08:37 UTC (14 hours ago)
        
 (HTM) web link (www.qb64.org)
 (TXT) w3m dump (www.qb64.org)
        
       | graton wrote:
       | Ah good memories. Once BASIC got rid of requiring line numbers
       | and supporting function calls it really wasn't too bad of a
       | language from what I remember.
       | 
       | I started out with TRS-80 BASIC, then assembly language on the
       | TRS-80, then using BASIC on the PC, and then assembly language on
       | the PC. After that was C.
       | 
       | But I still have fond memories of BASIC as my first programming
       | language.
        
         | oscargrouch wrote:
         | Basic was also my first introducing to programming. And
         | nowadays i still think its probably the best language to teach
         | programming. I don't think it should be used to create
         | professional programs, as its pretty limited for that, and
         | doing modifications to turn into an able environment for this
         | would only create a creepy language, inflicting misery in
         | people that have to maintain large codebases of such a thing.
         | 
         | What i really want to point out, is that, if you look into
         | Basic for what it shines, i think things like "GOTO line" are
         | very good, because it teach you how the computer works under
         | the hood (the native code will point to memory, stack,
         | registers, program offset, call hard defined OS syscalls,
         | etc..)
         | 
         | You could deal with the soft/logical and hard/physical
         | paradigms at the same time, understanding that the logical ones
         | are built through abstractions over the hard ones.
         | 
         | Later if you decide to code, than you can choose if you
         | want/can be spoiled and use more abstract and easy languages
         | like Python or Javascript, but also with a good
         | understanding/intuition of how things work under the hood.
         | 
         | And all of this can be done in a easy way, like with jumps to a
         | giving code position. (It alsos teach you to think over
         | indirections).
         | 
         | The basic GOTOS and other techniques might be bad for coding in
         | real life, but im against taking them out of languages that can
         | serve to teach programming to kids, and even creating more of
         | this sort of instructions, that teach how to reason about code,
         | where you can start with "bad practices" but that are pretty
         | easy to use at a beginning level.
         | 
         | Stupid little things like taking graphics and sound for granted
         | and not having to import libraries, using things like 'CIRCLE'
         | or 'BEEP' or 'GOTO 10' is what your eight year old self would
         | think its pretty cool and would run to your parents to show
         | them with confidence in yourself.
        
       | cchance wrote:
       | OMG QBASIC FLASHBACKS!!!!!!!!!
        
       | ambyra wrote:
       | I used to love this as a kid. The language is horrible though. A
       | python version would be nice :)
        
       | mysterydip wrote:
       | If you're looking for "basic for the modern era", also check out
       | freebasic and appgamekit studio, the latter of which is a
       | descendant of darkbasic and the "tier 1" version uses a basic
       | dialect. What made appgamekit better for me than qb64 or
       | freebasic is the runtime debugging. While qb64 and freebasic
       | compile down to native code, appgamekit uses bytecode in a vm,
       | allowing you to use the same step, watch, breakpoint stuff as
       | quickbasic of old.
        
       | pjmlp wrote:
       | _$NOPREFIX_ is an welcomed improvement.
       | 
       | As for modern era, a though that crossed my mind a couple of
       | times was having QB target WebAssembly as well. :)
       | 
       | Porting those MS-DOS samples into a browser canvas.
        
         | yjftsjthsd-h wrote:
         | > Porting those MS-DOS samples into a browser canvas.
         | 
         | I feel obligated to point out that https://copy.sh/v86/ has
         | been able to do this for quite a while now. Of course, having a
         | more native option is an extremely welcome improvement.
        
           | pjmlp wrote:
           | Yeah I am aware of it, that was my point. :)
        
       | amasad wrote:
       | Based on pg's request[1] I've been working on a Basic and while I
       | started with Classic Basic as I've been improving by dropping
       | line numbers and currently adding labels I think I've reinvented
       | QBasic!
       | 
       | Anyways, here it is if you want to play with it:
       | 
       | repl: https://repl.it/languages/basic
       | 
       | docs: https://docs.repl.it/misc/basic
       | 
       | some community programs: https://repl.it/talk/share?lang=basic
       | 
       | [1]: https://twitter.com/paulg/status/1256526589300441093
        
       | protomyth wrote:
       | I actually taught QBasic for a 100-level class at a college. It
       | was very interesting to see how close it actually was to the
       | "grown-up" languages they used for the Comp Sci curriculum.
        
       | nathell wrote:
       | Does this mean I can finally run NIBBLES.BAS and GORILLA.BAS
       | natively on macOS?
        
         | pjmlp wrote:
         | Probably PureBasic, RealBasic, Xojo would have been an option,
         | although with code having to be changed for them.
        
         | daitangio wrote:
         | Yes. Grlorillas is included and work well under ubuntu
        
       | themodelplumber wrote:
       | Funny to see this posted today. I was just listening to an
       | interesting QB64 interview with a developer who recently
       | published his QB64 game to Steam. It's episode 3, here:
       | 
       | https://qb64.buzzsprout.com/
        
       | darksaints wrote:
       | This is interesting from a historical perspective, but honestly
       | I'm really glad that the era of Basic is gone. Having had a
       | handful of opportunities to work with legacy Basic code from a
       | wide variety of programmers, it's just a disaster that always
       | leads to unmaintainable garbage. I'm not even sure it is possible
       | to have well architected Basic. Structuring and modularizing code
       | is ridiculously difficult. The very principles of the language
       | somehow lead to pervasive use of globals and gotos. It's neither
       | functional, nor object oriented. Everything ends up as blocks of
       | mutable procedures, tightly coupled, with red flags everywhere.
       | 
       | I'm a very opinionated person about programming languages, and
       | there are plenty of modern language trends that have been
       | bothersome to me. But none of them will be ever as bad as any of
       | the Basic code I have interacted with. I'd rather read and
       | maintain code that went through a unicode-permitted Haskell code
       | golf competition than anything written in Basic.
        
         | BeetleB wrote:
         | Were you dealing with BASIC or QuickBasic or VisualBasic?
         | 
         | Also, consider that it may not be the language but the fact
         | that most BASIC programmers tend not to know much about
         | programming...?
        
         | reaperducer wrote:
         | I think that you were exposed to a limited subset of BASIC
         | dialects. There were versions of BASIC that did all of those
         | things and more.
        
       | dang wrote:
       | If curious see also
       | 
       | 2010 (1 comment) https://news.ycombinator.com/item?id=1161656
        
       ___________________________________________________________________
       (page generated 2020-07-03 23:00 UTC)