knowledge requirements for programming

Discussion in 'iOS Programming' started by zoran, Dec 2, 2016.

  1. zoran macrumors 68030

    Joined:
    Jun 30, 2005
    #1
    What applications and knowledge is required if one should wish to create an iOS app?
     
  2. Dookieman macrumors 6502

    Joined:
    Oct 12, 2009
    #2
    You need to use Xcode and learn Swift or Objective-C.
     
  3. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #4
    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.
     
  4. zoran thread starter macrumors 68030

    Joined:
    Jun 30, 2005
    #5
    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 :)
     
  5. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #6
    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.
     
  6. ardchoille50 macrumors 68020

    Joined:
    Feb 6, 2014
    #7
    Knowledge is required, yes, but I feel that understanding program flow and possessing good problem solving skills are also invaluable.
     
  7. zoran thread starter macrumors 68030

    Joined:
    Jun 30, 2005
    #8
    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?
     
  8. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #9
    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.
     
  9. zoran thread starter macrumors 68030

    Joined:
    Jun 30, 2005
    #10
    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?
     
  10. Dookieman macrumors 6502

    Joined:
    Oct 12, 2009
    #11

    One language isn't necessarily better to work with than others, it all depends on what you want to do. Writing an iOS/Mac App? Swift/Objective-C. Building a webpage? Javascript/HTML/CSS. Building a backend service? PHP/Ruby/Python. Writing Android? Java. Windows applications? C#/C/C++/Java.

    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.
     
  11. deadworlds macrumors 6502a

    deadworlds

    Joined:
    Jun 15, 2007
    Location:
    Citrus Heights,CA
    #12
    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.

    HackingWithSwift
    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.

    Topics:
    Introduction
    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
    Interfaces (Optional)
    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

    Topics:
    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)
    Topics:
    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!
     
  12. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #13
    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.
     
  13. AxoNeuron macrumors 65816

    AxoNeuron

    Joined:
    Apr 22, 2012
    Location:
    The Left Coast
    #14
    I would heavily recommend Swift or JavaScript, it's a lot easier to learn than something like C/C++. A lot of programmers will say things like 'well...you should really start with learning assembly, it's the basis of everything else'. You should definitely ignore these people. Lower level programming is sure fun for me personally, but when you're learning your first language, you want something a bit higher-level like Swift, JavaScript, Python, etc. Most programmers (including myself) love to sound super smart, so I would advise you to take their advice with a grain of salt.

    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.

    I started learning iOS development years ago back when Objective-C was Apple's primary language, and I focused on it for a good 2 years. But since then, I've learned Swift (my day job), C/C++, JavaScript + Node.js, and I've learned a lot about machine learning. A few months ago, I implemented a neural network that could read human handwriting, and I've written low-level software for quadcopter drones. So don't think that if you learn Swift you will be forever condemned to being an iOS developer. On the contrary: once you've learned one language, it is way easier to learn others.
     
  14. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #15

    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.
     
  15. thecheapChihuahua macrumors newbie

    Joined:
    Dec 17, 2016
    #16

    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.

    Why?

    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
     
  16. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #17
    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.
     
  17. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #18
    This.

    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.
     
  18. zoran thread starter macrumors 68030

    Joined:
    Jun 30, 2005
    #19
    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?
     
  19. deadworlds macrumors 6502a

    deadworlds

    Joined:
    Jun 15, 2007
    Location:
    Citrus Heights,CA
    #20

    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.
     
  20. Zazoh macrumors 6502a

    Zazoh

    Joined:
    Jan 4, 2009
    Location:
    San Antonio, Texas
    #21
    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.
     
  21. zoran thread starter macrumors 68030

    Joined:
    Jun 30, 2005
    #22
    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!
     
  22. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #23
    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.
     

Share This Page