Separate names with a comma.
Discussion in 'iOS Programming' started by zoran, Dec 2, 2016.
What applications and knowledge is required if one should wish to create an iOS app?
You need to use Xcode and learn Swift or Objective-C.
iPhone Developer FAQ
There's a couple of different paths to take. IMO, it should start with your goals.
Wanting to make a 3D or VR game is different from a mobile enterprise solution.
Do you want to do this for a job or a personal app, job skills are different.
Does it need to run on Android?
Hard for us to pin things down without more detail.
I wish to enter the app dev world because the way i see it, professionally, im very capable and experienced in the design partbut the programming part, there is absolutely nothing there, so i need to begin evolving it
There's a lot of "learn how to program" tutorial out there. They don't have to be specific to iOS at the start. You can learn pretty much any language at the start just. Swift is a good language to learn, so is Java or C#.
I'd go to YouTube and watch some tutorials.
Knowledge is required, yes, but I feel that understanding program flow and possessing good problem solving skills are also invaluable.
Why not specific to iOS?
What exactly is each language responsible for? Why should i go to Swift and not Java or C# (btw what does the # stand for)?
Could you direct me to specific tutorials that you think are best to start learning with?
Programming is programming. It really doesn't matter at the start what language you use or what platform it's on. There are tons of languages out there, it really doesn't matter which one you start with because you need to learn the basics of computer logic.
The # is pronounced 'sharp' so it's called "C Sharp" and it used by Unity, Microsoft and others.
You can start with Swift, C, ObjC, C++ that's not the main concern, the main concern is understanding how a program works. Thing like logic, control flow, memory, etc...
Just go to Google and type in learning programming, you'll get tons of hits.
--- Post Merged, Dec 11, 2016 ---
Very true. There seems to be a trend to have 'coders' instead of 'programmers' It's looking like the 'coders' just know how to put codes into the editor and press compile. Very little problem solving skills are needed for that.
I've seen where the screens are drawn out and the 'coder' just types in the 'codes' to make the screens work.
--- Post Merged, Dec 11, 2016 ---
but aren't some languages that are better to use or work with, surely there must be advantages and disadvantages!
Are there tutorials that give such know how tips?
Though, most of these platforms let you write applications in pretty much any language (If that language supports that platform you are targeting). You COULD write all of your iOS Apps in C, but you would be rewriting a lot of the same things that Apple already provides you with their frameworks. 99% of people wouldn't do that, because 1. It requires a much greater understanding of how things work under the hood. 2. It would take 5x times longer to get your application completed. 3.There is little reason to do so since Apple's Frameworks are so good.
As others have mentioned it is recommended you first learn how to program. The process can be long and hard, and you never truly stop learning. With hard work and a willingness to learn, you will be well on your way to programming for iOS. I am currently in school getting a BS in computer science so I would like to provide you with some "academic" books that can help you get started. C++ is probably the most widely used language in the industry, so my book list will focus on that, but once you learn to programming you can take those skills over to any language.
If you really, really just want to jump in and start some iOS programming then head over to
Hackingwithswift (LINK). Scroll down and start the Intro to Swift tutorial. This will walk you through installing Xcode and a quick overview of the swift programming language. You will most likely be able to work through a lot of the tutorials, but may find you are not understanding exactly how the code is working.
Here is the list if you'd rather actually learn the ins and outs of programming
programming with Java: A multimedia Approach by Radhika S. Grover
This is the first book I used in an intro to programming class. I enjoyed learning Java first and then switching over to C++, mostly because Java and C++ are similar but I feel java can be a little easier to understand at first. This book is aimed at people with no prior knowledge of programming, it is focused on creating applications that draw shapes, manipulate photos, audio, etc. I personally feel this is a better approach than using a console output based approach.
Classes and Objects
Programming Basics (Data types, declare/init variables, strings, operators etc.)
Control Flow Statements (If,If-else, switch, while loop, for loop, do-while loops)
Defining your own classes (Write methods, pass parameters, return values)
Inheritance (What is inheritance, type of inheritance, polymorphism)
Arrays and Strings
GUI Programming (optional)
Exception Handling (try catch blocks)
File I/O (Read/write files to HDD)
Generics and Collections (What are generics)
More on GUI Programming (optional)
Multithreaded Programming (optional)
That should get you pretty familiar with programming.
C++ Primer Plus by Stephen Prata 6th Edition
This will cover most of what you learned in the Java book but with c++ instead, also introduces you to pointers and memory management. Older editions should be fine to use here, and they are usually cheaper to buy.
C++ Plus Data Structures 5th Edition (older editions should be fine)
This book will teach you about abstract data types like linked lists, stacks, queues.
The book also covers recursion, binary search trees priority queues, heaps.
Lastly you learn about sorting and searching algorithms.
I hope this helps you and doesn't crush your willingness to learn. I have been reading through some of the other threads on this iOS programming forum and found it quite sad that some people would rather reply with negativity and not provide real resources for people who genuinely want to learn.
Practice, practice, practice, experiment and never give up!
There are advantages and disadvantages.
Example, asm - asm is very, very small, maybe the smallest you can get.
Compare that to MS VisualFoxPro or PowerBuilder. Very bloated, but you get programs done in a hurry.
Some languages are "self documenting" in that they stay away from odd syntax and try to use words people understand.
Others are better for math stuff (Fortran, actually stands for Formula Translation, IIRC).
So yes, they can be specific purpose.
However, there's still the basics in almost any "high level" language.
Things like, loop, iteration, selection.
IMO, not everyone should program. I've see so many 'programmers' or 'coders' as I guess they're called now, that don't have a close to program logic. I've see their work destroy businesses, or take hours and hours just to figure out why a loop doesn't stop looping.
You should see if you understand basic logic before saying "show me what buttons I need to push to be an app dev".
I could say "show me what form I have to fill out to be an NBA star"... I'm never, ever going to be an NBA star.
Learning programming really takes a lot of work, but it's rewarding to some. After the first few days, I began to find it really enjoyable. Programming definitely isn't for everyone though. I'd suggest you buy a subscription to Lynda.com or some course on Udemy and give Swift a go. If you aren't having any fun after the first 2 weeks, I'd move on to something else.
once you've learned one language, it is way easier to learn others. << this is the KEY point. It's amazing that so many people just don't get this.
I'm one of those people who you should ignore lol.
I tried learning programming for ages, would start and give up, either because I was confused or bored with the examples I was given. I had an internship where I had to code in C# and things made somewhat sense, but I was definitely not grounded.
If your taking this serious, I would say its important to learn the basics of computer architecture.
Well for me, I didn't know what the hell programming was, I just knew I wanted to do it to make stuff. I just jumped into it. I didn't understand how simple a computer was. I thought after the complier there is literally magic going on with those one's and zero's. But its simple, you have an instruction, you have data. The computer's job is to run through your memory (your memory is the program!) and execute (another high level term, but is simple when you break down the logic) those operations, you can go back and repeat stuff through branches (takes you to a different spot in memory (Remember your program)). I'm writing this on the fly. But my point is that when you know this stuff, the high level stuff makes sense. Pointers and other concepts will be cake for you.
Here's my attempt at an analogy:
If you look at a house, its hard to know whats going on with the foundation, the support beams, etc. You can build a house from bigger components but it will be handy to know whats actually going on in lets say a wall. (now we don't build houses like this but I hope you get my point)
I'm speaking from experience, I noticed some of my friends had a hard time with programming because they hadn't learned computer organization. I found it a lot easier. I'm also an EE major, so I had experience with Digital Logic. (How do you do an addition using gates, what is binary) But I think a lot of people miss out on this.
You don't have to be the best in low level programming to benefit from it. Maybe I'll do a video here I walk throw the basics. Hope this helps
I've been programming for decades as an employee and as the owner of a custom software company. I can tell you that it can really suck when things change. It's non stop learning and the skills of a few years ago might not have much value today.
The basics are still there, but they really want a lot more from people now. It's hard to think of many industries that are this fast forward.
I really think people should have a true dose of reality before they spend a ton of time trying to break into certain jobs.
Which language is better? That's actually a far more advanced topic than just learning basic programming itself, and thus you should decide which one is best for yourself *after* you learn to program in at least 2 different programming languages.
There are now lots of new tutorials in learning Swift 3 using the Xcode and iPad Playgrounds. So I've very recently changed to recommending Swift (unlike before, when there were not multiple books on Swift 3 in print). If you are comfortable with using the command-line, Python is very often used in educational settings (e.g. in a school that uses Raspberry Pi's in the classroom). The top of the TIOBE index list a few other programming languages that are popular.
Learn to program first, until breaking down problems into solutions in code seems natural. Then specialize in iOS, or whatever.
Im curious, isnt there a WhatYouSeeIsWhatYouGet app that a total amateur -like me- can use to program? Why get into the realm of scripting or programming using code? Arent there apps one can use to program and build his own app?
The only app I know of that comes close to what you describe is called GameSalad. Its used to make games and I think it works for other platforms, not just iOS. It uses a sort of drag and drop type of interface along with some script writing to create some more custom functions.
It is not free but back when I tried it (about 4 years ago) they offered a trial for it.
The only draw back here is that it only does games. Maybe someone else can chime in with another app that does what you're looking for.
There are many programing teams where those are different people. In fact, they are almost always different people unless you are out there doing it on your own.
When you know how to do it all on your own you got great control over things, of course knowing the whole package isn't easy!
There are tools (such as buzztouch.com) that let a person drag and drop to create limited and simple apps. The problem is when what you want to drag is slightly different than the items the tool offers, or where you want to drop it is some place the tool doesn't provide, or you otherwise want to do more than the tool provides. Then you're stuck unless you learn to code your own creative custom details, functions or effects.
You can build a lot of stuff with a large kit of pre-made legos, but you can build a lot more with a 3D printer, laser cutter and CNC mill.