Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Red Sox

macrumors regular
Original poster
Jul 15, 2007
171
0
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.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
"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
 

Red Sox

macrumors regular
Original poster
Jul 15, 2007
171
0
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).
 

Cromulent

macrumors 604
Oct 2, 2006
6,812
1,100
The Land of Hope and Glory
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.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
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).

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
 

Watabou

macrumors 68040
Feb 10, 2008
3,426
759
United States
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 :)
 

Red Sox

macrumors regular
Original poster
Jul 15, 2007
171
0
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.
 

aLoC

macrumors 6502a
Nov 10, 2006
726
0
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.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
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.

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
 

grapes911

Moderator emeritus
Jul 28, 2003
6,995
10
Citizens Bank Park
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.
 

Sayer

macrumors 6502a
Jan 4, 2002
981
0
Austin, TX
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.
 

yeroen

macrumors 6502a
Mar 8, 2007
944
2
Cambridge, MA
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.
 

exabytes18

macrumors 6502
Jun 14, 2006
287
0
Suburb of Chicago
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.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
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.

mono is definitely stable enough for hobby programming. Production is another discussion.

-Lee
 

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
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.
 

grapes911

Moderator emeritus
Jul 28, 2003
6,995
10
Citizens Bank Park
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

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.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
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.

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
 

grapes911

Moderator emeritus
Jul 28, 2003
6,995
10
Citizens Bank Park
He meant that a windows-only architecture might not be what you want your bread-and-butter to be.
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.
 

lazydog

macrumors 6502a
Sep 3, 2005
709
6
Cramlington, UK
I might as well learn something that would look good on a resume (for any technical or engineering type job).

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
 

patrick24601

macrumors newbie
Apr 27, 2008
3
0
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
 

Eraserhead

macrumors G4
Nov 3, 2005
10,434
12,250
UK
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.

Which is just like pretty much every other programming environment out there. Its not a selling point of .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.

You can do exactly the same in Cocoa.

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

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:

Metasyntactic@Arstechnica said:
My personal favorite is that there are plenty of *new* 3.0/3.5 APIs that aren't using the 2.0 generic collections. Instead they roll their own with names like MyFooBarTypeCollection. Of course, this class is actually lacking a bunch of useful functionality that you'd expect to find, so you end up either having to write that functionality yourself, or you copy to/from a better collection.

You simply don't see this in javaland. Everyone uses the standard collections. So all your collection handling code works fine with them.

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.
 

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
Stay away from the C++ STL too, at least for a while.
What's the logic here-- to make sure he learns basic data structures before relying on the libraries?
The CLR is definitely not going away for Windows
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.
 

Cromulent

macrumors 604
Oct 2, 2006
6,812
1,100
The Land of Hope and Glory
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.

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.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
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.

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
 

John.B

macrumors 601
Jan 15, 2008
4,197
708
Holocene Epoch
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.
I dunno, I've seen Microsoft through a LOT of babies out with the bathwater over the years, technology-wise.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.