Best cross-platform development for a beginner? (1 Viewer)

A

Anonymous

Guest
Best cross-platform development for a beginner?

I have been toying with the idea of learning some programming skills. What do you think the best language/environment would be for a relative noobie. I haven't done any programming for years, except a bit of scripting, so I count myself as a real beginner.

Ideally I would like something which is cross-platform, quick to learn and fairly rapid to develop. Free or open-source IDEs would be nice if possible. I did think about the mono/C# thing, but I don't think I'm dedicated enough to tackle the C thing.

What do you guys think?
 

samuel337

Portal Pro
August 25, 2004
772
0
Melbourne, Australia
Well, if you're talking about cross-platform, the only real options you have are Java and Mono (you can include Perl, Javascript and HTML but that's not what you're after). I'm sure there's some more obscure languages out there that are cross-platform, but these are the popular ones and probably the best supported.

With Mono though, you have to remember that programs that you write for Mono will not immediately work with the windows .NET framework and vice-versa. You will have to make modifications (albeit not a lot). For true cross-platform, I reckon Java the only one (correct me on this one though, I could be wrong).

If you're starting programming from the start however, I'd recommend VB.NET just because I think its much more readable. The learning curve for VB.NET and C# are pretty much the same I reckon, its just different syntax that you have to get use to. Both languages run on Mono, but C# is supported better (VB.NET support is experimental). VB.NET is also a lot more forgiving as it isn't case sensitive (or if it is, the IDE fixes it for you) - this is the one thing I hate about programming in C# (is there an option I'm missing?).

Both java and C# have open-source IDEs. For java check out http://java.sun.com, and for C# do a google search for CSharpDevelop. I think you will have to download the .NET SDK though for C#, which is 100 or so MB...

HTH

Feel free to correct anything in this post - I only started 'real' programming at the start of last year...

Sam
p.s. C and C++ are different to C#.
 
A

Anonymous

Guest
Thanks Sam, I'll read this again tomorrow morning when I'm not so tired :shock: I thought the java or mono route would probably be the way to go. Just needed some reassurance before I narrowed down the search. I totally agree that I should stick with a mainstream langauge base.

I think it will probably be java, mono/c# or mono/vb.net. Anyone else with any other good sugestions? The only other thing I could really think of was python.

What do you guys think? If you were starting over, what would you learn from the outset?
 

TimmyT

Portal Pro
October 18, 2004
107
11
Zurich
Home Country
Switzerland Switzerland
well, i started with java a view years ago and i would go for it once again... you have a good documentation (javadoc) and a perfect ide (eclipse). i program c# as well, but i feel much more comfortable with java, mostly because of the eclipse-ide.

i have to add that i've never done any gui stuff with java, so i don't know how complicated (compared to c#) it is...
 
A

Anonymous

Guest
Thanks for the replies,

So which do you think is easier to learn c# or java?

I'm think about writing some very small apps for my USB key, which wouldn't write anything to the local machine. If I get anywhere then I might create a web page for it (learn a bit more about html/css, etc). Does C#/mono need .net installed, or java need the run-time locally installed for their apps to run, or is that just for certain api calls?
 

samuel337

Portal Pro
August 25, 2004
772
0
Melbourne, Australia
Whoops, I should have clarified this. Perl and python are great for command line apps but I don't think you can use them to create GUI apps (I might be wrong, especially about python...). Both C# and java have good IDEs that make GUI creation pretty easy though (C# - CSharpDevelop, java - Eclipse).

I reckon C# is similar to java, but I've never actually learnt java so I can't really comment.

Mono is a replacement for the .net framework - so you only need to install one or the other.

The java virtual machine is required to run java apps, not .net apps.

.NET and java work by taking your code (C# or java), converting it into an intermediate language (.NET - MSIL, java - bytecode) which then gets interpreted by the respective runtime which runs the app.

Sam
 

jdiffend

Portal Pro
January 9, 2005
98
0
I'm a software engineer and I've programmed in VB, Java, C/C++/C#, Perl, etc.

VB is the easiest to learn but I hate it worse than anything. Every project I've worked on that involved VB had issues with something VB related. The compiler, the enviroment, runtime dll bugs, plugin bugs or it just made something more difficult than it would be in C/++ or Java in the long run. For a beginner... you'd probably never see the obscure bugs I have so it's a good way to get your feet wet to see if you like programming. Just don't try to tell me how much better than C it is.

Pearl and Python are good to learn for use as tools... but don't try to build a large GUI application in them. Still, a good app in Python will be better than a bad one in something else. Take a look at Freevo and you'll see just what can be accomplished.

Java... tougher to build GUI apps than VB but not bad for simple GUI stuff... but then C++ isn't too bad either for simple stuff. Java and C++ are the most portable but for a GUI application C would require a GUI library to be portable where Java already has it and every example out there uses it. If performance is an issue Java CAN be compiled to native code. If you want to access hardware directly Java isn't the best choice.

C/C++ has the steepest learning curve and C# doesn't really offer anything that can't be done in C++ and isn't as portable. If you are going with a C dialect then use a portable one! Microsoft lovers might tell you C# the greatest but what if you want your application to eventually run on Linux or the Mac? How about Solaris? Free BSD?

C++ is the most powerfull hands down but it will require you to be a better programmer to prevent some bad things from happening. If you're not a detail oriented persion it might not be for you. For that matter, programming might not be for you. If you chose C++ learn how to use something like Lint to scan your code for errors.

What do I suggest?

If you learn Java, most of the concepts and a lot of the syntax still apply if you want to move to C++ later. It also keeps you from doing a lot of bad things that C++ wouldn't care about that might drive you nuts as a beginner.

What's most important with any language is that you use good tools/IDE. It will make learning easier, lets you build application GUI's visually and there is nothing worse than fighting a buggy development tool while you already have enough problems with language and API syntax.

I prefer C++ Builder and JBuilder (I used to like Supercede till it was discontinued). I've had far less problems with them than with the Microsoft counterparts and yes... you can still build .net stuff with Borland tools if you wish.
 
A

Anonymous

Guest
I prefer C# syntax to Java (as well as some advanced C# features, such as generics and iterators built into the language [don't you just love that yield keyword? :) Java 5 is catching up but not yet]) but the "cross-platformness" of .NET is still an open question, so if the "cross-platformness" is your priority, then it is still Java. If you want nicer-looking GUIs on mostly windows platforms and mono with some tweaking - then try C# or VB.NET.

I'd like to say some words in defense of Python :)

If you can start with smaller projects first, you can try Python, you later can have your code run (with some degree of compatibility) on either Java VM (see jython) or .NET CLR (see IronPython). Regular Python on windows can also access .NET objects and therefore can be used for protoyping in .NET. WinForms GUI in Python - no problem!

By the way, Python is cross-platform by itself and has a very small learning overhead. It is a full-featured OO language, unlike javascript. Plus it has a good set of primitives for functional programming. There are also some cross-platform GUI toolkits for Python, some of them are very good (wxWidgets). There is also support for SDL, OpenGL and DX/D3D for graphics. Plus python can successfully be used in the server-side/enterprise level applications.

Just a friendly warning - if you learn Python first, you will treat other OO languages as inferior :) (well, with possible exception of C#) and will have a hard time convincing yourself to switch to other languages. I've seen this happen :) Not to mention that most employers will not even notice your resume if it does not say Java or .NET
 

noocyte

Portal Member
December 9, 2004
18
0
Sandnes, Norway
I've got a Bachelors in Java programming and expanded into a Masters in .Net programming. And I honestly think you should learn C#, GUI/Web development on the .net/Mono plattform is WAY better than Java and commandline/library is not worse, IMO better.

Using Microsoft Visual Studio 2003/2005 is a breeze, and there is quite a few open-source IDEs available as well (SharpDevelop/MonoDevelop).

Also keep in mind that the basic syntax of java and C# is very similar... :)
 

Users who are viewing this thread

Top Bottom