iOS Anyone used Codea app for programming?

MrMister111

macrumors 68030
Original poster
Jan 28, 2009
2,841
179
UK
I know it probably isn't a proper coding app, or whatever, but for someone with no coding experience is it any good?

It says it can export to Xcode as well so I'm presuming it's got some language?

Is it just for games or can you write apps as well. Once you've written something can it only be used on the iPad itself where written or can you export to run on other iOS devices?

Is there other apps like this on the App store, or is this one best.

So for someone with coding, who wants to mess around, is it viable? Could you even export to Xcode and eventually (with device account) publish it? (I know there is a game called cargo-bot done with it)

Thanks
 

casperes1996

macrumors 601
Jan 26, 2014
4,329
2,186
Horsens, Denmark
I know it probably isn't a proper coding app, or whatever, but for someone with no coding experience is it any good?
I haven't used the app, so take what I say with a grain of salt. I am however a computer science student, I write code a lot and have a lot of experience with Apple devices.

It says it can export to Xcode as well so I'm presuming it's got some language?
Not exactly sure what you mean by the last part there. "It's got some language?" Anything you can write in has a language. Codea seems to support Lua, which is an interpreted language. There are Interpreted languages are not compiled to native machine code, but instead has another program read the code and execute what it reads, as it reads it. This is not the approach you'd typically take when developing an iOS app from scratch in Xcode. interpreted languages have their place, and can be good for certain parts of an app, or in some cases even to fully use; Websites are essentially made from interpreted parts, where your web browser is the interpreter. But as said, typically not the approach you'd take for a new project in Xcode. But sure, you might very well be able to export you Lua files to Xcode. But it's not Swift or Objective C.

Is it just for games or can you write apps as well. Once you've written something can it only be used on the iPad itself where written or can you export to run on other iOS devices?
Lua as a language is often used for games or parts of games but there's nothing that means it has to be just for games. It's to my knowledge Turin complete, meaning it can essentially produce anything that is possible to code. - Mind you, integrating with other tools may not necessarily be possible, which includes hardware features.

Regarding the execution model, it's likely just interpreted on device [which I'm not really sure how they got past the App Store; More on that in a second], but you can take your Lua files to a Mac, and likely find some way to package it up in a view with a Lua interpreter, but it'd require round tripping to Swift or Objective C to create the UIKit View for the interpreter to present its UI in.

Is there other apps like this on the App store, or is this one best.
The App Store actually has some rules that make programming tools for iOS quite rare. I've only ever seen interpreted languages, for good reason, and it's rarely very powerful, with no importing of external code libraries (which can simplify things) and limited execution capabilities. Here's why:

Here are apple's guidelines about code execution: 3.3.2 — An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s).



So for someone with coding, who wants to mess around, is it viable? Could you even export to Xcode and eventually (with device account) publish it? (I know there is a game called cargo-bot done with it)
If you want to learn to code on an iPad; Swift Playgrounds is a good place to go. It's from Apple, so gets around the App Store guidelines above. For "proper" coding, you won't really find good tools on iOS. Though there are websites that allow you to send code to a server that'll execute your code for you, so you can code and learn through that route.
I take programming challenges on my iPad through LeetCode myself, where the ode is executed on a server, and your goal is to make it as efficient as possible.

If you have a Mac though, just start there. Open Xcode, and open the Documentation (Window -> Developer Documentation)
There are good learning resources in there. Get a nice book, some YouTube videos and go at it. The toolchain on Mac is way better than anything on iOS, and nothing better is even allowed per the App Store guidelines currently; Only Apple's own tools could give a better experience, and Swift Playgrounds is a good starting place but very lacking further on. But it's the same code as you'd write later on so still a good resource.

That is if iOS/macOS is your goal. Swift is open source, and there is a Linux compiler (compilers translate code into machine instructions), and a Windows one is in the works, but most of what you'll work with specifically is just for those platforms.
Many computer science classes start with Java, since it's actually quite a good language for getting an understanding of Object Oriented design. There's a good book called Objects First with Java and an excellent environment for writing code for beginners called BlueJ. It's not super good for advanced users, but it has a lot of really helpful features for new users that help them understand and visualise their code, with class and object tracking so you can see when a class instantiates an object and such.

Honestly, most code is trivial once you get the hang of it, but getting the hang of it can take a little while. You can always DM me if you run into issues or want help or to just chat code. I'll gladly give hints and mentor as you learn; Though I may not always reply immediately as I also have to attend uni ;).

But if possible, use a Mac (if you want to code for Apple platforms, otherwise just dig in with Java or something on Linux or Windows) and get a good book like the aforementioned Objects First with Java, or something; YouTube maybe. And don't set your expectations too high right off the bat with what you'll make. Take your 5 million dollar idea and put it away for a bit. Start with getting a bit of text on the screen. Then make some calculations, get a loop and some branching logic, a few interacting classes with an interface/protocol. Then maybe dig up your idea again once you feel comfortable with it all.
And as mentioned, Swift Playgrounds is good for learning on iPad, but it won't take you further than learning.
 
  • Like
Reactions: MrMister111

MrMister111

macrumors 68030
Original poster
Jan 28, 2009
2,841
179
UK
Sorry for the late reply....Thanks a lot for taking the time for your concise answer.

I'm no programmer, wish I could find a course local, although I suppose with all the online tools, lessons, resources it maybe easier using these.

My goal I suppose is to learn something new, that I'm interested in, but can't commit too many hours to, and just come and go when I can.

I'm actually thinking of upgrading my 2012 iMac, and this time getting a MacBook as kids and wife have their own computers/laptops/MacBook/iPad/iPhones now so don't use the iMac. Purely more for the convenience of it being not out of the way like iMac is but could use in living area on lap so maybe more access for Xcode etc, it's reason I was suggesting me using the iPad more, "sofa surfing" as such.

Think a lot of people suggest, even for brand new programmers like me, to just jump in with Xcode.

I did start swift playground but didn't get far as was just moving the character around, so I want sure where it was going tbh. Maybe I should complete them all to see where it goes, and if helps? I presume it then introduces you to Xcode after?
 

casperes1996

macrumors 601
Jan 26, 2014
4,329
2,186
Horsens, Denmark
Sorry for the late reply....Thanks a lot for taking the time for your concise answer.
You're very welcome. Not sure I was so concise, but yeah, you're welcome :). Always happy to help.

I'm no programmer, wish I could find a course local, although I suppose with all the online tools, lessons, resources it maybe easier using these.
Right. I mean, I think a "proper" course is always, or at least often, the best approach. But there are enough readily available resources out there that you can easily learn on your own time.

My goal I suppose is to learn something new, that I'm interested in, but can't commit too many hours to, and just come and go when I can.

I'm actually thinking of upgrading my 2012 iMac, and this time getting a MacBook as kids and wife have their own computers/laptops/MacBook/iPad/iPhones now so don't use the iMac. Purely more for the convenience of it being not out of the way like iMac is but could use in living area on lap so maybe more access for Xcode etc, it's reason I was suggesting me using the iPad more, "sofa surfing" as such.
Makes perfect sense. For me computer science is my day-to-day, but music, filmmaking, photography; plenty of hobbies that I like to dedicate a few hours here and there to, even though I never expect to make a blockbuster. It's good to learn and experience.

I will say this though; Software development, even just the code aspect, is many different disciplines. You can know all about coding in a specific language, and still not be a good programmer. Or you can be what I'd call a great programmer whilst not knowing the language you're writing in at all.
One thing is knowing how to write code, but a trait that quickly becomes more important is how to architect and structure code. It's not important in the beginning, but it's the reason I advice thinking of your learning projects as throwaway. You'll learn to code, but it won't be structured and it'll be nearly impossible to maintain if the codebase grows. That's something you learn to deal with later, when you get into design patterns. - Don't get scared off though; Lots of fun. And frankly, learning to code is simple enough once you get the hang of it. And remember "real programmers" look up things all the time. It's not a contest of memory, but understanding. You don't need to remember exactly how to iterate over the items in a set. Anyways, tangent back on track.

Think a lot of people suggest, even for brand new programmers like me, to just jump in with Xcode.
Yes. As mentioned there are limitations on the App Store making good coding environments difficult to get on iOS.
That said, I don't necessarily think Xcode specifically is a good learning platform. If the goal is iOS/macOS, Xcode is good in that it's only one thing to learn that has everything you need. It'll even get you a simulator to run iOS code, everything is set up sensibly by default and it has auto complete for code. But if the goal is learning about programming in a broader sense, I think a tool made explicitly for learning, like BlueJ (which is Java programming) is a good starting point, as it gives a nice visualisation of objects, classes and interfaces. You don't want to keep using it, but it gets the idea of object oriented programming taught well, especially in conjunction with the book, Objects First with Java.
Java is often the starting language for university courses. It is very explicit a lot of the time, so there's a lot of typing compared to other languages that use fancy syntax to avoid it. But that also means it can at times be easier to read for newcomers. For instance, to make a new list of Players and assign it to a variable named "players" in Java would be

Code:
 List<Player> players = new ArrayList<Player>();
In Swift the same would be:

Code:
 players: [Player] = []
But it really isn't so important what language you learn, because most languages really act quite similarly. The biggest issue with learning Swift as a start is that Swift has many many features that means sometimes if you read other people's code to learn from you may get overwhelmed with things you don't know. Java code tends to be simpler, but that also means you may have to write a lot more. Though Swift can of course also be simple if you just don't use all the complex features. - I'll add that Java has also gotten many more complex language features, but they're less commonly used.

I did start swift playground but didn't get far as was just moving the character around, so I want sure where it was going tbh. Maybe I should complete them all to see where it goes, and if helps? I presume it then introduces you to Xcode after?
Right. I think it'd be good to continue then! I get the feeling Swift Playgrounds is sort of aimed towards kids, so it can be a bit slow and tedious at times, but it does teach all the important parts of learning to code. I think you can probably go through it a bit quickly, skipping a chapter here and there, going back if you find a challenge you can't solve.
Xcode in itself isn't really something Swift Playgrounds needs to, n'or bothers, introducing you to though. Think of it like this. Learning to program is learning how to write in a new language. Xcode is your word processor, like Word or Pages. You use it to write, but you don't really need to know much about Word or Pages. I mean, if you want to collaborate it's nice that Pages has a function to simultaneously work on a document, similarly, Xcode has git built in for teamwork. But it's all just tools. The writing is what's special. And you don't need Xcode for that. You could do that with TextEdit.
Swift Playgrounds is a text entry field and a runtime window, and it won't introduce you to anything else. But everything you write is applicable to Xcode as well, because you're writing Swift, and you can bring that anywhere. As mentioned there's a Swift compiler for Linux too, but no Xcode. So you can write the exact same code in a Linux text editor, like Kate; It doesn't matter. You English report is the same whether it's from Pages, Word, OpenOffice; Whatever. Though they might not all support the font you used ;). In programming that's no biggie though because when you compile it, it doesn't matter how prettily the text was printed in your IDE (integrated development environment). It becomes machine code, and it doesn't care if it came from Xcode, TextEdit or whatever else.

Once you get going, I can recommend LeetCode code challenges to test your problem solving skills with code.

Again, always here to help and mentor if you need it :)
 
  • Like
Reactions: MrMister111

VPrime

macrumors 68000
Dec 19, 2008
1,721
82
London Ontario
Codea is pretty cool and actually pretty capable.

Our iPad app hyperPad is also similar. Instead of writing actual code, our app uses a visual node based behaviour system. You can also export to Xcode on our platform as well :). We're however more targeted towards interactive visual apps and mobile games.
 

MrMister111

macrumors 68030
Original poster
Jan 28, 2009
2,841
179
UK
Codea is pretty cool and actually pretty capable.

Our iPad app hyperPad is also similar. Instead of writing actual code, our app uses a visual node based behaviour system. You can also export to Xcode on our platform as well :). We're however more targeted towards interactive visual apps and mobile games.
Thanks I’ll have a look. As I say I don’t have any coding experience, and it’s purely for personal achievement really to have a “mess” on with.

Have any apps/games etc made it to the App Store they have been made by your app?

Any discounts available
 

VPrime

macrumors 68000
Dec 19, 2008
1,721
82
London Ontario
Thanks I’ll have a look. As I say I don’t have any coding experience, and it’s purely for personal achievement really to have a “mess” on with.

Have any apps/games etc made it to the App Store they have been made by your app?

Any discounts available
There are a few. One of our users has made it to the top charts in Turkey with on of his games.

We were a free app with IAP and subscriptions.. But recently changed to a paid app with no more extra purchases. Send me a PM and I'll try and get you a promo code, if we have any left.
 
  • Like
Reactions: MrMister111

illitrate23

macrumors 6502a
Jun 11, 2004
562
124
uk
a few years ago I wanted to make a game that used a hexagonal tiled map (kinda like Civ) and at the time I couldn’t find any good examples of how to do it in Objective-C
(I wouldn’t call myself a programmer - I know a little about a lot of different languages, but I’m not skilled in any)

but I tried it in Codea and was surprised to find out how much further I could get. By the time my day job got hectic and I couldn’t focus on it any further I had it generating hex tiles to fill the screen, you could shrink and enlarge the size of the tiles with two-finger (I.e. zoom in/out the map) and it’s scroll around if you dragged it.
and that was just from googling and looking at the example code they provide.
So I’d say, for the casual programmer, that is overwhelmed by the size of Swift, Codea could be a good starting place.

I keep meaning to get back to it to see what else the app can do after all these years.
Interested to see what HyperPad is capable of too - i’ll try and check it out.
 
  • Like
Reactions: MrMister111