HyperPad behaviours through text like regular programming
-
@Kamdroid Have you read this:
https://forum.hyperpad.com/topic/646/undo-in-behaviour-editor-a-suggestion
It goes into a few other reasons why such a language is a good idea/necessary.
-
I don't think C# is a good role model for the type of langauge that should be the intermediary between cocos2D/hyperPad-Core and Visual Programming in hyperPad.
Something like Apple Script or Live Code is a better role model, and all that's necessary.
No need or desire for end of line guff
;
Definitely don't need:
Public Static Void
There are a few experts in both static/dynamic compiled languages and the nature of highly abstracted script languages (and designing and shaping them) floating around. Two of them I know reasonably well and could be roped into helping with syntax and grammar, parsing, design, description and education. They'd need to be paid, but the two I'm thinking of are absolutely incredible minds when it comes to programming, pedagogy and parsing.
Freaks, in fact. Best in Class, if you'll excuse the pun.
A third guy I don't know, but is easily reached, also knows cocos2D and has built and designed more than one game engine. One of which was enormously successful. He's not so fluent in designing highly abstracted script languages, but does love Lua. Which isn't a horrible language.
-
@Deeeds I kinda don’t like AppleScript though, maybe for people who don’t program a lot though, since I’m used to using symbols etc rather than keywords. It’d be cool to have semicolons optional though, and I love to use them sometimes to have two short pieces of code on one line.
Also, the only thing required in C# when making functions is “void FuncName”,
-
@Kamdroid said in HyperPad behaviours through text like regular programming:
Also, the only thing required in C# when making functions is “void FuncName”,
functions maybe.
Methods... I dunno...
Either way, C# is one of the most verbose of all dynamic languages. It make Swift and Kotlin look positively succinct and modern.
-
@Deeeds Aren’t methods and functions practically the same thing (in C#), though functions are not from a class, and methods are?
Either way, they are technically the same thing, just a different term, so thus it would be the same as declaring a “function” (as I called it, however I believe ‘method’ is the more correct term)
-
@Kamdroid There's a "technical" difference.
Methods are functions that are part of a class hierarchy, including being able to be called on the Class itself... if they're a Class method.
Or that's how I like to think of them.
Methods need to be called by their object/instance or class. You can't really call a method without that "address" in some form or another.
Functions can best be thought of as functions (duh) that don't need to be called by an object, they're there, waiting to be called in isolation. So they're already scoped to wherever you are calling them from.
Again, that's how I think of the difference. It's probably mostly made up semantics... so I can know the difference for myself, when I'm making a mess, for myself. As I often do.
For languages like C++ and Objective-C you can have and use (and often do) both methods and functions (more pure C-ish) and blend them together because C is still a big part of what can be done, and C definitely doesn't have methods. It's all functions.
Functions (in OOP) can be called inside instances because they're scoped to their class, more often their instance. You could, I suppose, think of functions as private methods of an instance. If you wanted to. I just did ;)
Then there's Categories, which might be the coolest part of Objective-C. They give you the ability to "inject" functionality into otherwise inaccessible places, even dynamically, at which point the boundary between method and function gets really thin because this is done just about anywhere in your code.
The saddest thing about Swift is that we'll eventually have to say goodbye to Objective-C.
-
@Kamdroid Sorry. Forgot to address the C# part of your question.
I'm pretty sure all that public static void guff means method... in a class.
But it's been a LONG time since I even considered thinking about considering C#
I liked Boo.
-
@Deeeds I don’t think so, pretty sure it’s just depends if they’re independent (not in a class), or are in a class.
But anyway, my point was that you don’t need to specify a method’s access type or if it’s static, unless you want to override its default behaviour.
The only thing required is the return type and name -
Skimming through and hoping I didn't miss the point, a custom language would be finest.
For instance,
INT OBJC = 0
INT OBJPS = 0
INT MAX OBJPS = 15FOREACH [[OBJECT] in [SCREENVIEW]]
IF [[OBJECT] is [BEHAVIORS.FX.ISPLAYINGSOUND]]
OBJPS = OBJPS +1
IF [[OBJPS] > [MAXOBJPS]]
BEHAVIORS.FX.STOPSOUNDEFFECT (OBJECT)
ENDIF
ENDIF
OBJC = OBJC + 1
IF [[OBJC]>[250]]
PROJECT.SETGRAPHICSQUALITY (PROJECT.GETGRAPHICSQUALITY - 0.1)
PROJECT.SETSOUNDQUALITY (0.5)
ENDIFThis would allow hyperPad to formulate behaviors and change settings using this logic, erase the text after parsing the behaviors into a project, and not anger apple. With some work, of course :)
-
@Thecheater887 However, I was thinking of more mainstream syntax, like C#.
If they made a language like that with everything needing to be upper case, I’d just stick with visual coding..
-
@Kamdroid In one of your earlier posts you mentioned new programmers needing a simple syntax.
This cannot be overstated. It's IMPOSSIBLE to overstate this requirement.
But that's not all that's required.
The grammatical rules need to be as easily understood as possible, too.
The creation process needs to be as elegant and simple as possible.
C#, whilst making a lot of sense to you, is one of the most verbose general languages on the planet, for lots of reasons, and about as far from ideal as any known language.
Please read my post about the requirement of this being an intermediary language, linked above.
C# isn't that, either.
If you're going to get as complex and involved as C#, you might as well use Swift and begin porting hyperPad to Swift, because it'd be less effort and a friendlier language. Despite Optionals needing to be explained.
// just watched my iPad crash whilst typing this, it was sitting on the Behaviours Editor, doing nothing... Full iPad restart, in front of me. First time I've seen that in a while.
-
Probably the best example of a command based language that was designed for discoverability and new users was Logo.
Which was based on Lisp, something all programmers (of any worth) seem to agree was the best language, ever. In.The.World! (Summon your inner Jeremy Clarkson voice when reading the above sentence)
I prefer Swift, but that's because I like this capacity, a lot:
myFunkyFunc(block: () –> ()) –> (){}
-
I don't know if you guys realize, but apple doesn't allow apps to expose internal libraries to users. They also don't allow code to be uploaded or shared from within apps, and don't allow code to be executed in apps if it wasn't pre-compiled and included in the app.
This means ALL traditional coding languages are out of the question. Additionally, any language that would need to be executed, or packaged alongside a program would be unacceptable.
Heck, I'm not even certain a custom-command language that is interpreted into in-app functionality as I showed above is acceptable, but it's a lot more acceptable than anything else here.Thanks Apple.
-
@Thecheater887 Yes, this is well known. But it's (quite recently) been extremely relaxed compared to the past. Part of that is a result of the iPad Playgrounds app becoming a thing.
Part of it is a more relaxed stance on these sorts of matters.
And, yes, what I'm proposing is an intermediary, representative, custom command language doing nothing more than exposing the internal activities of a sandboxed, approved creative app's process. Much like automators and things like IFFFF or any other highly abstracted "language" are currently doing.
The key to a chance of approval is that it be limited to the functionality of the underlying app, nothing else possible, and that that already be approved and obviously limited to activity within itself.
This means downloading URL based images and other stuff is definitely OUT. Not an option. Only user created and hosted content (on device) and the App's existing and already approved content and its in-app purchasable content (which is also approved, obviously).
Allay the fears of Apple, basically. Understand why this rule originally existed and play within the spirit of their intentions and concerns.
-
Some people have trouble believing me on first take, probably because I'm sure of myself and somewhat arrogant in writing. In person, I'm far worse.
No need to believe me, read this instead: https://twitter.com/palmin/status/871980560943636480
-
@Deeeds what’s wrong with downloading url based images?
-
@Thecheater887 I thought educational apps could upload and share code, as long as the user could view and edit it?
-
Apple has in fact relaxed the rules. But, some of the other stuff we're doing make it so they wouldn't be too happy (like the hub).
They're still pretty strict though.Also, this is a huuge undertaking and not something we're prepared to do right now. There are some stuff in the works for exported projects and being able to interact with swift or objective-c outside of the app. But it will be unlikely to ever function within the app.
@Thecheater887 welcome back, you disappeared for a while :).
-
@Murtaza Another suggestion: Kill the hub.
Or just let it die. It's distracting from the core attraction of interactivity creativity and an idea from an era of the old internet. An internet that is no more.
There will never be another kongregate, and we've all since moved and grown into being connoisseurs of mobile gaming, social networking and instant messaging.
-
@Deeeds What, why get rid of the hub? You surely can't get rid of and redo everything?