1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

Newbie to Programming !

Discussion in 'Mac Programming' started by fab5freddy, Jan 22, 2007.

  1. macrumors 65816


    Hi Mac Geeks, I am a Newbie to Programming, but want to get started right away...What language should i start out learning ? someone mentioned that Apple Script or Visual Basic is a good starting language..? is this true ? also, what i need to know, is which software do i need to write code in the various languages ? thanks a million, Fred :)
  2. Moderator emeritus


    Well, scripting and programming are two different things. And if you want to do Visual Basic, you're kind of on the wrong sort of computer....

    How about starting with Objective-C and XCode? XCode is the official Apple development environment, and it's included with every Mac on the install discs (you have to install it, though, it isn't installed by default). It's the principle app in which most OS X software is developed. Objective-C is the "official" programming language of OS X and supports all the OS X APIs such as Cocoa.

    Apple has lots of tutorials, and then you can look out on the web as well.

    But if you really don't feel ready for object-oriented programming, you might find scripting easier. You can play around with AppleScript and Automator, and they're great in their own rights, but I'm not sure how much that will teach you about "real" programming. If you're into web stuff, Perl is a sophisticated scripting language that can do lots of things....
  3. macrumors 65816


    Newbie to Programming

    wow, thanks for the reply.
    Realistically, how long does it take to learn a language enough to get a job in programming or maintaining servers ?
    i am ready to do some hardcore learning and practice. I have already done some html for my websites etc.... Fred
  4. Moderator emeritus


    To get a job? Erm.... four years? I think most people will expect that you have a bachelor's degree.... But you can become fairly proficient in much less time. If you are comfortable generally with computers, and diligent, you can probably be fairly proficient in Objective C in about 1-1.5 years. Much less if you already knew another object-oriented language.
  5. macrumors 65816


    Newbie to Programming

    ok, sounds reasonable......my situation is, i am 34 years old and have been a digital advertising photographer for many years, but am sick of the hustling of the photo business. i am starting a 2 year degree in data programming next week....i know it's a bit late in life to start over, but i am psyched about getting into the field of IT computers, as i love everything about my macs and computers ... : ) i hope it's not too late to start now.......Fred
  6. 4np
    macrumors 6502a


    If you want to develop your own OS X applications you should start to study Cocoa / Objective C programming. Although object oriented programming and design patterns may be a bit hard to grasp when you're new to programming. Here's a nice book to start out with (I bought it myself as well).

    If you want to developer for web I'd choose for PHP (5.x) or Java.
  7. macrumors 65816


    Good luck and its never too late!
  8. Moderator emeritus


    Very true! I'm in grad school at 31 changing professions because I was not happy. It is never too late. :) Well, I might never be a ballerina, but... :D
  9. macrumors regular

    Don't forget, Objective-C is a very simple subset of C. If you learn C, then learning Objective-C takes a few days. Only hard transition is going from procedural to Object-Oriented. Anyways, learn the language first (possibly the book by Steve Kochan: http://www.amazon.com/Programming-Objective-C-Stephen-Kochan/dp/0672325861) then learn Cocoa. Also, most other programming are based around C (well, the syntax at least), such as Java, C++, C#, ect...

    If you want to start out sooner then later with Cocoa, you can choose a scripting language like Python, Ruby, or Perl, and use the bridges to Cocoa. They are easier languages to learn, and probably safer, and PyObj (the python bridge) and RubyCocoa (the Ruby bridge) will be officially supported on Leopard. Most serious developers use Objective-C, but it's never bad to learn two (or three, or four ways :p). Or use two in one app :)

    Either way, hope you have fun programming, and good luck in your new career decision!
  10. macrumors 6502

    programming and maintaining servers are two completely different things. I've done both but I've also been using computers for the majority of my life. If you don't know between the two, I would suggest you first learn C. To me, it is a must know for anyone in the field, whether programming or server admin. Being a good programmer/developer will probably take years but if thats the route you want to take, you shoudl learn C then go to Java. Imo, learning OOP (object oriented programming) is easiest with Java. If you start with something like C++ i bet you'll pull your hair out and quit. Good luck
  11. macrumors 68020



    What he says about Java is true. Beset OOP, second only to PHP, in my opinion. :D

    C++ is super fun though. After using java for a year, C++ is SO much faster. :apple:
  12. Moderator emeritus


    I do also have to admit that I learned OOP for real on Java. Lovely design for a language. And you can develop cross-platform apps with it too. :)
  13. macrumors 6502

    Also if you learn C first, you will pick up on PHP quite easily. C++ may be faster but I always advise people who are just starting programming to stay away because it doesn't follow all the OOP practices and ideas. Sure, java doesn't follow all of teh OOP rules ideas but not to the extent of C++. I think the purest OOP language I've used in the past would be Smalltalk, but its not that popular.
  14. macrumors 6502a

    You can't go far wrong learning C. It's pretty simple with the hardest bits being pointers and memory management. You could avoid these two issues by choosing, say, Java to learn first but I think you will be a better programmer in the long run for understanding these concepts. Once you learn C then you will recognise many similarities in other languages and so will find stepping up to object orientated languages like Java, Objective C or C++ that much easier. However, the language or languages you will program in the most (this time next year you will probably know at least 3!) will depend very much on the line of work you want to move in.

    You mention VisualBasic though. The equivalent on the Mac is RealBasic. You can download a trial version from www.realsoftware.com. It's simple and fun to use and you could be creating your own simple applications within days. I'm not suggesting you make this your only language but if you play around with it even for just a few hours I think it will give you an idea of what programming can be like.

    have fun

    b e n
  15. macrumors member

    I'm going to go against the advice of others here.

    Learn an OO-paradigm language first, along with UML. Also emphasize such concepts as test-driven development, since the earlier you learn these concepts and integrate them into your programming practice, the better off the people you work with later will be in the long run.

    I've known a lot of people who get C just fine but can't figure out OOP. I've known a lot of people who had OOP and imperative down cold but couldn't figure out a logical language such as Prolog or a functional language such as LISP. In my experience, its also easier to go from OOP to imperative than vice-versa.

    So, since its currently the big paradigm and it allows for the logical grouping of program functionality (which is very important if you want anyone to read your code, ever) learn OOA&D along with programming. C++ may not have the best implementation, but then Java's OO model is cripple. Python, Smalltalk, and Ruby are all OO from stem to stern and would be excellent choices to learn at first while getting used to control structures and the like, though if you want to start with a lower level language I do not personally have any problem with C++ for this at the most basic level.
  16. macrumors 6502a


    I'm in the same boat as this person. Unsatisfied with the industry I'm in, I enrolled in college this Spring in a programming class and a network class. How's the job market for an entry level programmer or IT person these days? Are most jobs outsourced overseas? Also, which computer field is the easiest to get into? Thanks...
  17. macrumors 6502

    Well when I think of an IT person, I think of 'Mo' in my office and I can tell you he doesn't do any of the programming. What he does is maintain stuff. i.e. he will set up user accounts, manager them, look after servers, hook our phones up, any technical questions with our desktops, fixes desktops.. those kind of things. If I would have to guess, I would say that type of IT guy would start around $45K (cdn).

    Entry level programmer is hard for me to answer. From what I noticed here (in Toronto) if you work for a big company, you could probably get a entry level position for around $50k, but thats hard to get. Even if you do get it, I dont' know how happy you'll be with the job. Since it is entry level, they don't expect much from you and make you tedious things. If you go with smaller companies they pay a lot more but its hard to find an "entry level" position. Small companies expect a lot from employees but you do learn a lot more.
  18. macrumors newbie

    i currently have a junior standing in college with a major in computer science. I have an internship at a local bank developing internal maintenance tools. For the first 6 months they had me writing websites with Ruby on Rails. Now I am currently juggling a few projects. Some of them are asp.net websites that I wrote with C#, and some of them are prototype applications created with FileMaker 8.5 advanced. FileMaker is a great tool for prototyping, btw, and it was created by Apple :)

    I work full time in the summer and part time during the school year. I don't get benefits or anything because I'm not permanently full time. I get paid $18/hr. Not too shabby for a part time gig.
  19. macrumors member

    IT or software engineering or computer programming?

    The market for the latter two is very good right now. The former I can't speak to.
  20. macrumors regular

    Guys, take it easy here.

    You're telling him to learn OOP, test-driven development, Cocoa APIs, Perl (seriously !?!), C, C++, Objective C , UML, Java, etc..., when he probably doesn't even know what half those words mean.

    Fred, first tell us exactly what you want to do. You said server administration. Is that it ? Would you want to create programs or work in a software company as well ? Just for Mac, or Windows, or both ? What will you be learning in your 2-year degree ?

    At your stage, learning about servers and networking is totally different than learning about programming applications. From what you tell us, we'll be able to suggest the best course of action.

    Now for the money. I'm graduating in Software Engineering soon and I had the chance to do a few internships. My first ones were rather entry-level jobs that payed pretty well, at about 16-17$/h (canadian), and they were in large companies. Luckily, they hire the highest number of entry-level programmers, since small companies look for somewhone who can do many things and can instantly be productive. I live in Quebec, where the outlook for the industry, especially for engineers, is looking really good. It's true that a lot of work is being outsourced, but there is so much demand that you shouldn't worry about it.

    You have balls to completly change careers. That's really impressive. Luckily, there are a few things about programming that are so very attractive, to me at least. First, there will always be something new to learn. Second, learning about it can easily be done in your room, at your own pace, for free. And finally, since our whole world is virtual, all it takes to become a millionnaire is a good idea and talent.

    Tell us what your goals are,
  21. macrumors member

    Ahhh, the sweet scent of untested idealism ^_^

    For whatever it is worth, I am a professional software engineer who wants out of the industry over the long run. There are a few reasons for this, but I'll list some of the "nitty gritty" of the real world of software development.

    The following are all stem from things that have happened to me in the last year.

    1) Software Engineers are the bottom rung of the totem pole in most organizations. Non-technical managers--or even managers who are technical but lack perspective--are an enormous problem. Management will frequently treat software engineers as interchangeable.

    2) You will write the software and then be told what the requirements are, when they bear only minimal relation to the software in its current form and are 100% tasked on another project.

    3) A deadline will get moved up for political reasons and then your team will get blamed for not finishing in time.

    4) Someone else will go in and modify code you originally developed without talking to you first in order to fix one bug or another or to scratch a personal itch and, in doing so, will break it, break whatever you are working on at the same time, change the contract, and/or do something that makes absolutely no sense whatsoever.

    5) A bug will be filed (e.g., "component x doesn't respond to dust") and no information will be given on how component x should respond to dust. Attempts to gather this information will prove fruitless, and no one will believe your list of 20 citations indicating that it doesn't respond to dust.

    6) A great deal of time is spent in archeology--trying to figure out undocumented or poorly documented code.

    7) We were at one point told that the code would branch... at a point six weeks beforehand, and that we were expected to forward port "only the necessary changes" we had made in the last six weeks.

    Etc. etc.

    The project this comes from was one of the best organized that most people had ever worked on.

    I'm not meaning to discourage or to belabor the point--the software industry has a lot going for it--but the advantages you list for going into it are exceptional cases at best. Many people get stuck maintaining the same piece of code for their entire time at a company, learning very frequently cannot be done for free and has to be done on a deadline, and becoming a millionaire takes a lot more than a good idea and talent. It takes good business sense, people skills, presentation skills, a healthy dose of luck, being somewhat closer to the top that most software engineers are, and for most people a massive amount of work.

    On the other side, the software engineering world is filled with a lot of potential and exciting opportunities. It is consistently ranked as career choice that people are happy with, and your mileage on any given point will vary. By all means go into it, but its worth it to know what you can get yourself into.

    I advocate starting with UML and test-driven development for a very simple reason: It helps correct bad habits that programmers get into early and that tend to stay with them for a long time. I suggest OOP because it is a common paradigm and it is conceptually easy. I suggest python or ruby because they are OO, allow for the developer to totally ignore that fact, and are good learning languages in general.
  22. macrumors 6502

    If you do a search in the forums you'll see alot of threads (that I have commented in also) which discuss the aspects of the Computer/Software Engineering route.

    Fred, your from Copenhagen. I'm from there as well. Please tell us where your going to do your 2 year degree. Is it Niels Brock (diploma) or are you going over to IT-University?

    Whilst I have a law degree and I am not in the profession - all my close net friends are working in the IT field. What I would advice you is most emplyers are looking for solid education backgrounds and experience. As alot of users have commented here you need to explain what filed you want to work in. Hardware and software is totally different fields.

    One of my friends is working with servers in a large danish firm and all he does is manage the network and the severs. He usually comes by at night around 2-3am doing systme maintanence. It's odd hours, and if he takes a day off there is chaoes at the office. He has little social life.

    Programming is the most dynamic field changing all the time. New languages or technology will develope and expect that your firm will not pay you to go take time off and learn the technology - some firms will not even offer further eductaion due to the working deadlines. Expect to learn everything new at your own private time when you get home.

    The only 2 promising places in Denmark is DTU Civilingenior in Software and Datalogi at Copenhagen University. Forget the 3 year Diplom ingenior (i've attended it) at DTU I would not recommend it. The 2 education will give you the best insight and good foundation in IT.
  23. macrumors 65816


    Hi IronJaw, thanks for the reply. I'm starting on the 'Datamatiker' education at Lyngby ( which is like Niels Brock). on Feb 5, next week.
    I know it's not the best, but it's a start, and only 2 years, whereas Datologi is 5 years minimum, and at my age, is a little too daunting now. I have heard from friends, that alot of professional programmers are mostly self taught.....
    Previously, i lived in New York City Hell Hole, and worked as a freelance commercial photographer. That business is getting BRUTAL, as with digital photography, anyone can take a decent photo now....
    I also enjoy doing website design, but i have also heard that is a very competitive field......
    Also one little note to mention, i was looking through some job ads in the øresunds region, and they had 500 available positions in the IT field, though they varied in type from programming to Server Admin, it still seemed like they need people........just my 2 cents.....cheers, Fred

    email : wosiho (a) gmail.com
  24. macrumors 6502

    Hi Fred. How is the job market in Copenhagen with regards to Commercial Photography? New York and London are brutal places - work ethic is so severe that its does kill you or at least takes over you.

    There is a NEED for highly educated IT man folk in Copenhagen. I mean datamatiker is not a good education - a 3 year bachelor from DTU would be more suitable IMHO. It's a year more but at least you can stop and work and then go back to complete the 2yr masters.

    Most professional programmers (assuming that's what you want to be) are self thaught but that's many years ago - now you cannot even get in a firm without credentials or an education. Unless of course your extremely talented. One of friends who is only 22 years old does work for a huge company in cph and whilst he is hugely talented and knows alot about computer technology he is also doing an education at Teknisk Skole.

    I've got some friends who have done the Datamatiker and whilst they do get jobs (this was back in 2001/2) I believe that its really low level and some I guess are unemployed. I have heard that the need for them have gone down. I mean really what can you learn in 2 years. :confused:

    Most of them anyway go to DTU to do 2 more years (4 in total) to get there bachelor. That's more promising.

    A recently graduated Software Engineer (3 yr Bachelor) from Ingeniorhojskolen i Lyngby (one of my friends) has started at kr. 27.000. Ingeniorhojskolen is a great place as well they have good acedamic department and they also start in february as well.

    You can do the datamtiker and see how it is - you have the opportunity to get a bachelor if the need arises.

    Having commercial experience from New York as a Photgrapher would actually make you sought after in Copenhagen. You have what most Photgraphers don't have and that's many years of experience I assume. Have you tried some firms in Espaladen? There is a firm called Saatchi & Saatchi, try them (a friend of mine worked there long ago). Send out some CV's or go to Adecco - you might be surprised at what jobs you can get.

    No offense but I'm old school thought and I believe that if you keep hanging there in the end you get to your goal eventually. So one word of advice think seriously before you choose to change career especially at that tender age :D

    Bear in mind also that you will be stuck with "virus-compatible pc's" as alot of firms use HP, Compaq and MS. Oh yeah and of course Linux which should be your bible.:D
  25. macrumors 6502

    Another Dane here :)

    I came through old-school (DTH) and started with COBOL/C/PL/1 and the like. I agree with the point mentioned above wrt datamatiker vs. datalog/DTU.

    It all really depends what you want to do. In my case, I have extensie experience, but had to basically take a year off and un-learn old-style tools, and learn UML, test-driven programming etc.

    If you want to work in industry, with mission-critical stuff (ie. failure rates are not acceptable, period (aviation etc.)), then a proper CS degree plus skill in languages like Ada are key. This is the kind of stuff I used to do, now it's mostly consulting. Good money, good career prospects, and can be intensely exciting. The pressure can be murder, though, although I never found the deadline issue to be as bad as in other sectors.

    On the other hand, if you want to work in 'Web 2.0' (I really detest that meme), then you could probably start out more slowly. Learning the theory (including math/set theory) really does help, though, and low-level stuff like compiler designs taught me a lot about disciplined coding (although I screwed that project up royally :D )

    It is really programming you are interested in, or is it systems? One thing we still desperately need in the industry are proper analysts, able to bridge the gap between the customer and the software house.

    I would recomment that you perhaps also talk to some of the associations, Dansk IT comes to mind. They have some, somtimes good, general workshops/conferences that might give you a flavor of the different areas.

    Whatever you do, unless you want to be stuck on the bottom rung, avoid technician jobs where you have to sort out physical problems with user machines, and helpdesks. The latter is only good for masochists.

    Good luck. It's good to see people wanting to switch into the industry, when so many have had enough and are switching out.

Share This Page