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:
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
