hobbyist programmer: which language?

Discussion in 'Mac Programming' started by Red Sox, Apr 26, 2008.

  1. Red Sox macrumors regular

    Joined:
    Jul 15, 2007
    #1
    I consider myself to be a hobbyist programmer. However, I do some easy programming at work for Crestron and AMX control systems (AV industry) which both use very simple proprietary languages that is based on C. I read a book on C++ for beginners to get an understanding of the basic concepts of programming, and now I want to "really" learn a language and get good at it. I also want to learn a language that would look good on my resume.

    After researching a little bit, I settled on Java, and I read through the Java tutorials on the Sun website (which I thought was great, by the way). I'm at the point where I can create a basic application.

    So, my question is, is Java a good choice? Should I start learning something else before I get too far into it?

    Thanks for your help.
     
  2. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #2
    "I want to program as a hobby, what language should I learn?" and "I want to program professionally, what language will look best on a resume?" are pretty different questions.

    I'm of the opinion that a programmer should be pretty language agnostic, and Java is a widely-used, modern programming language, so it would be a good choice.

    It would also probably look decent on a resume, but it won't stand out. There are a lot of Java programmers out there. If you are wanting to get your foot in the door in a particular industry, that might be helpful. If you were to want to work for Ericsson one might recommend Erlang. if you were wanting to go into embedded programming, sticking with C and perhaps expanding further in C++ than you have so far might be a good bet.

    -Lee
     
  3. Red Sox thread starter macrumors regular

    Joined:
    Jul 15, 2007
    #3
    Thanks.

    I didn't mean to sound like I want to become a professional programmer. I just thought that if I'm going to do programming as a hobby, I might as well learn something that would look good on a resume (for any technical or engineering type job).
     
  4. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #4
    Any of the C languages really. C/C++/Objective-C etc which are all included with the Apple dev tools. Lots of people will be able to help you out on this forum with those.

    Another favourite recommendation on this forum for new programmers is Python which is also included with the Apple developer tools. Your choice, I'd say C myself.
     
  5. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #5
    I just wanted to make sure we were answering the right question.

    I would recommend something a little less mainstream if applicability on your resume is not as big of a deal. Python and Ruby are popular languages that are well-supported on OS X. Objective-C for the time being has a niche in the OS X market, but is still a good language that should let you get more practice with C-style syntax while learning Object-oriented concepts.

    -Lee
     
  6. Watabou macrumors 68040

    Watabou

    Joined:
    Feb 10, 2008
    Location:
    United States
    #6
    Sorry to hijack this thread but,
    Anyone know of a good website that can teach me java?

    I mean I want websites that actually teach me from the beginning. I saw websites that just go straight to applets or (object oriented programming).

    I know some basic stuff from java including oop but I'm not that good so I figured that starting from the beginning would help. I'm really interested in programming and its fun when I figure out something right and make a program. So please help :)
     
  7. Red Sox thread starter macrumors regular

    Joined:
    Jul 15, 2007
    #7
    I've heard lots of great things about Python and Ruby, but how is it when it comes to integrating it with GUIs? I found it to be very easy to create a GUI using Swing in Java. How does it work with Python and Ruby? Do you need some kind of virtual machine running? Sorry, I'm not too familiar with how all of that works.
     
  8. aLoC macrumors 6502a

    Joined:
    Nov 10, 2006
    #8
    How much fun do you want to have? Java is a great language, but it's very business oriented. A lot of the frameworks available for it are oriented towards server side development (dynamic websites, database access). It does have Swing for the desktop, but that pales beside Apple's Interface Builder for example.

    If you want to make desktop apps, multimedia editors etc, you will have much more fun with Objective-C/Cocoa. But on the other hand, as you say, it won't look as good on a resume.
     
  9. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #9
    there are bridges to cocoa(os x API) for ruby and python, so you might need to learn a little objective-C, but just for the interface.

    -Lee
     
  10. grapes911 Moderator emeritus

    grapes911

    Joined:
    Jul 28, 2003
    Location:
    Citizens Bank Park
    #10
    Python and Ruby are not where you want to start. C or C++ is the best place to start. From there, you can easily pick up other languages like Java, Objective-C, C#, etc. Java is always in demand. C# is very popular in professional environments (but not so much with hobbyist). And Objective-C is pretty much a requirement for Mac programming.
     
  11. Sayer macrumors 6502a

    Sayer

    Joined:
    Jan 4, 2002
    Location:
    Austin, TX
    #11
    I wouldn't wast time learning Java at this point. If you are Windows-based you can learn C# (and .NET) as that seems to be the new Java at this point.

    That would look best on a resume as most big cos. are into .NET-anything now and you won't have trouble getting a job doing that - even to just maintain some crappy proprietary vertical app already built and running. I see a lot more .NET (C#) jobs than Java jobs these days.

    If you want to be a hobbyist then learn Python or Ruby. They are both pretty widespread in the community (that is, you can ask Google for help and get enough responses to figure it out) and they can be used to make "real" desktop apps in Mac OS X with the various bridges. They are also "scripting" languages which means you type and go, no compiling needed.
     
  12. yeroen macrumors 6502a

    yeroen

    Joined:
    Mar 8, 2007
    Location:
    Cambridge, MA
    #12
    The rub with C# is that, in practice, it's exclusive to the Windows platform. Is that really a place you want to make your bed?

    It's certainly never been my get-up tea.
     
  13. exabytes18 macrumors 6502

    Joined:
    Jun 14, 2006
    Location:
    Suburb of Chicago
    #13
    I'll throw in a good word for Java. It's a powerful language with tons of libraries and goodies available. JOGL is mature enough for some extreme graphics work, JDBC is excellent for handling databases, and networking is a cinch. When it comes to raw performance, Java isn't the best but it can definitely hold its own (approaching that of C++). For a hobbyist, no matter what direction you go, you probably can't go wrong with Java.
     
  14. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #14
    mono is definitely stable enough for hobby programming. Production is another discussion.

    -Lee
     
  15. Analog Kid macrumors 68040

    Analog Kid

    Joined:
    Mar 4, 2003
    #15
    There are a number of decent scripting languages out there. I haven't done much with Python so I can't comment on it, but I've heard many good things about it. Perl was all the rage before people realized how ugly it is. Ruby is kinda cool, but some of the concepts are "non-conventional"-- not in the sense of wrong, but in the sense of not present in most mainstream languages. That also makes it fun.

    Of course, I did my teething on Lisp, so I have a soft spot for non-conventional.

    Javascript is a remarkably nice language that doesn't get used much outside of browsers. The browser gives you a UI though, for basic stuff.

    If you're looking at compiled languages, C is the workhorse. Everything else is C-like, or extensions on C. C++ is incredibly powerful, and also incredibly complex. It takes a long time to really understand how to use it well.

    C# is in demand because the whole world seems to be happy giving MS control of the choke point on their businesses. It's not too terribly different from Java, and it's an extension of C. It wouldn't be hard to transition from either of those once you have a grasp of object-oriented concepts.

    As a hobbyist, Java is a fine choice. You can do quite a lot with it, unless you want to access custom hardware. It tends to run if it can compile, which is always a nice feature in a language. Most of the tools are free. It doesn't label you "Mac only".

    If you really just want to use it for fun at home, go with Obj-C. Interface builder makes throwing together GUIs very easy, and the language itself is pretty straight forward to learn. It's free, and the Apple class libraries are extensive. You'll also find it more satisfying to run the programs you write on your Mac, natively.

    That's my 2 cents.
     
  16. grapes911 Moderator emeritus

    grapes911

    Joined:
    Jul 28, 2003
    Location:
    Citizens Bank Park
    #16
    Uh . . . Yes. Web-based software is becoming increasingly popular in real-world production environments. Java is the most popular language used, but it is declining. C# is number two on the list and gaining ground quickly. As someone with hiring power in the software development industry, if you were looking for a job right now and could only know one language it would have to be C#.

    So if you need a job quickly, learn C#. That being said, a hobbyist who doesn't have immediate job aspirations should start with C/C++ to better learn the basics and understand how and why software works, rather than using all the fancy libraries in Java, C#, and others. Stay away from the C++ STL too, at least for a while.
     
  17. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #17
    He meant that a windows-only architecture might not be what you want your bread-and-butter to be. In a corporate situation where you have an existing windows-only shop this is not a big issue, and for a hobbyist Mono addresses the need to run C# if you don't have windows handy. I think the point is valid that tying oneself exclusively to windows is not a good plan, and even with Novell and Microsoft's various pacts I would be concerned about the viability of Mono as a platform long-term.

    This is coming from someone who recently had to decide on the future architecture of a particular product. It was very difficult to decide between Java and C#, but we run Linux on the server and Mono was not safe enough for us. Java, especially now that Sun is open-sourcing it, cannot go away even if its popularity in certain spheres is waning. The CLR is definitely not going away for Windows, but on Linux Mono is not as mature, and might not have long-term viability.

    In any event, the OP said that employability wasn't his primary interest, so C, C++, Objective-C, C#, Java, Ruby, or Python are all good choices. I think what's important is to pick one and get started. No amount of conversation is going to lead to us picking the perfect choice.

    -Lee
     
  18. grapes911 Moderator emeritus

    grapes911

    Joined:
    Jul 28, 2003
    Location:
    Citizens Bank Park
    #18
    I know what he meant, but you cant underestimate the popularity and growth of C#. If are looking for immediate employment (which I don't think the OP is), C# might be your best choice to be your "bread-and-butter". While Java is probably more in demand, it is declining in popularity.
     
  19. lazydog macrumors 6502a

    Joined:
    Sep 3, 2005
    Location:
    Cramlington, UK
    #19
    For a technical and engineering resume, I would have thought C would be a must and even better to also have C++. Don't know what sort of technical/engineering areas you're looking at but perhaps having something like assembler might look good, or at the other end of the spectrum Maple or such like. Are you interested in graphics? Stictly not a language but OpenGL could be useful for you.

    b e n
     
  20. patrick24601 macrumors newbie

    Joined:
    Apr 27, 2008
    #20
    As far as just being a hobbyist I recommend C# and the .NET platform. Mainly because you can free hobbyist tools from MS for developing in .NET. And alot of the tools to build applications (web or otherwise) are just simple drag and drop tools. Want a grid of information? Drag and drop the grid over and associate it with your data.

    With Visual Studio there is a lot that can be done w/o ever looking behind the scenes or touching a line of code. That is what a hobbyist needs IMO.

    Patrick
     
  21. Eraserhead macrumors G4

    Eraserhead

    Joined:
    Nov 3, 2005
    Location:
    UK
    #21
    Which is just like pretty much every other programming environment out there. Its not a selling point of .NET.

    You can do exactly the same in Cocoa.

    You can do exactly the same in Cocoa.

    If you are a hobbyist I'd avoid .NET, frankly its a totally flawed API. Here is a list of flaws for starters. I could certainly add to that list from my own experience (cannot bind more than two DropDownLists to related data sources, you can in Cocoa, button pressed firing their methods after the page has reloaded in ASP.NET)

    EDIT: So you don't have to read through the whole thread here's my favourite comment:

    Basically a collection is an array with faster access to the elements in it. And that .NET's support for collections is so poor that the .NET developers making other parts of the API make their own versions of them.
     
  22. Analog Kid macrumors 68040

    Analog Kid

    Joined:
    Mar 4, 2003
    #22
    What's the logic here-- to make sure he learns basic data structures before relying on the libraries?
    Not sure what their plans are for the CLR, but there's already talk that MS is lumping .NET in with "legacy APIs" when they talk about Windows 7.
    http://thebetaguy.com/exclusives/?postid=1029344029&title=microsoft-windows-7-exclusive
    No idea who this guy is, so take it with a grain of salt.
     
  23. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #23
    That article is full of errors. Maybe a pinch might be too little :).

    I don't believe that Microsoft will break backwards compatibility though, that was one of the major complaints with Vista that there were too many compatibility problems.
     
  24. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #24
    I agree that this sounds fishy. Especially considering that .NET already runs in a VM. Maybe the CLR won't have the direct hooks to the OS like it does now, and that will be handled differently. Either way, C# and the CLR will be around and plenty of people will be programming for it. If they plan to release an OS in 2 years (which probably means 4-5), and they haven't published any APIs to replace .NET, COM, etc. that will run on XP, Vista and Windows 7 they really have lost it.

    -Lee
     
  25. John.B macrumors 601

    John.B

    Joined:
    Jan 15, 2008
    Location:
    Holocene Epoch
    #25
    I dunno, I've seen Microsoft through a LOT of babies out with the bathwater over the years, technology-wise.
     

Share This Page