
BASIC gaming-dev app for iOS - gattilorenz
http://lowres.inutilis.com/
======
mysterydip
Neat idea, but doesn't it run afoul of Apple's allowed apps? I seem to recall
something similar that was taken down for allowing "dynamic programming" to be
done. Maybe the limitations imposed by the language limit the scope enough? I
could be completely off the mark, maybe I'm remembering wrong.

~~~
jdmoreira
They removed that clause a few years ago :) You can now load code at runtime
as long as it's sandboxed. JS inside a UIWebView, for example, is widely
accepted.

~~~
greggman
Can you point to where they removed it. AFAICT it's still in full force. Your
example of JS inside a UIWebView is true but anything else is not. The only
allowed code loaded at runtime has to be either (a) already in the app or (b)
executed by a WebView.

In other words you can't execute downloaded code in BASIC unless that BASIC is
implemented in JavaScript running in a WebView

Is your app doing that?

From the current (as of 2016/10/16) app guidelines

2.5.2 Apps should be self-contained in their bundles, and may not read or
write data outside the designated container area, __nor may they download,
install, or execute code __, including other iOS, watchOS, Mac OS X, or tvOS
apps.

It's also more explicit in the developer license dated 2016/9/21

3.3.2 Except as set forth in the next paragraph, an Application may not
download or install executable code. Interpreted code may only be used in an
Application if all scripts, code and interpreters are packaged in the
Application and not downloaded. The only exceptions to the foregoing are
scripts and code downloaded and run by Apple's built-in WebKit framework or
JavascriptCore, provided that such scripts and code do not change the primary
purpose of the Application by providing features or functionality that are
inconsistent with the intended and advertised purpose of the Application as
submitted to the App Store.

~~~
tluyben2
> provided that such scripts and code do not change the primary purpose of the
> Application by providing features or functionality that are inconsistent
> with the intended and advertised purpose of the Application as submitted to
> the App Store

But does this part not prevent all coding apps? As any code will change the
intended behavior of the app simply because you cannot describe behavior of
something Turing complete that can be loaded from the web and be changed by
anyone?

------
int_19h
I really wish this myth of "if it's a beginner language, it must be a dialect
of BASIC" would die out already.

Yes, BASIC was designed to be a language for beginners. And yes, it actually
delivered - in the age when "serious" stuff was written in Algol, PL/I and
FORTRAN. Things have changed a lot since then, though.

And there are so many better choices for a beginner PL these days, there is
absolutely no reason to go for BASIC other than nostalgic value - which, to a
newbie, means nothing.

~~~
sdegutis
Right. Even a "slimmed down" version of JS would be suitable for beginners.

~~~
int_19h
I was thinking more along the lines of Lua and Python.

JS would need to be significantly reworked to be a _good_ beginner language,
IMO. C-style syntax is not the most readable option, and then there's all the
weirdness around types and implicit conversions, strange and non-intuitive
design of built-in data structures (object vs array similarities and
differences, for example), and weird variable scoping rules.

Lua has pretty much everything that JS has that is worthwhile, but done better
(e.g. the only data structure is an associative array, but they all behave the
same unless and until you start to customize them). Syntax is more natural and
easier to explain, too.

Python is nice in that basic programs are as short as they need to be (i.e.
you don't need to import packages or define classes to print "Hello, world"),
but it does have the concepts that mainstream "grown up" languages have - the
aforementioned packages and classes, for example - and they can be gradually
introduced and explored one at a time without distractions. Also, turtle
graphics out of the box - still the best way to explain things like recursion,
IMO. So, you get a great teaching language, _and_ it doubles as a great
general-purpose programming language for serious stuff once the teaching is
over.

~~~
pjmlp
Basic at least has compilers to native code, while being beginner friendly.

~~~
int_19h
For beginner tasks, it usually doesn't matter - even a dumb AST interpreter
will do.

For more advanced stuff, BASIC compilers usually don't generate particularly
impressive code, because the language allows so many inefficiencies. Code
generation is better if you're strict about your types and explicit about your
conversions, but then you might as well just write in C or Pascal.

------
ferdbold
Oh god, this is like programming on your TI-83 in math class for a whole new
generation. :D

------
jdmoreira
I don't know if OP is the developer of the app but I would be interested in
knowing if they wrote their own interpreter. I've done a minimal BASIC
interpreter in swift as fun project -
[https://github.com/jdmoreira/foobarbas](https://github.com/jdmoreira/foobarbas)
it would be cool to discuss specifics and compare the implementation.

~~~
gattilorenz
I'm not, sorry. Just discovered the app and thought it's a lovely idea

------
TazeTSchnitzel
Similar in spirit to Pico-8 (desktop), or Petit Computer (DS)?

------
cyberferret
Nice. Brings back memories of one my first ever computer books I bought circa
1980 to learn programming. Cut my teeth learning how to build games in BASIC
using this book [1]

[1] - [http://bitsavers.trailing-
edge.com/pdf/dec/_Books/101_BASIC_...](http://bitsavers.trailing-
edge.com/pdf/dec/_Books/101_BASIC_Computer_Games_Mar75.pdf)

------
copperheart
It's deja vu of the classic TI99/4a, complete with the wonders of GOTO and
GOSUB! What great times. Hunt the Wumpus, anyone?

------
reustle
This is pretty cool, but how many people are actually going to want to learn
BASIC just to build games in this app?

~~~
pjmlp
I imagine that those of us that still remember it would already be a big
customer base. :)

