Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Application Language

Options
  • 28-09-2006 9:30pm
    #1
    Closed Accounts Posts: 22,479 ✭✭✭✭


    I have been doing PHP for a while now and I am getting quite good at it. I would like to learn another application based language this time. Although I would like to stay away from MS languages, any reccommendations for where i should start or should I just go learn C++. I would like to be able to make graphical programs.


Comments

  • Closed Accounts Posts: 8,866 ✭✭✭Adam


    I'm in a similar position, mind if I hop on your band wagon? :)


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    You can make graphical programs from most languages.


  • Closed Accounts Posts: 4,943 ✭✭✭Mutant_Fruit


    If you want to make a cross-platform GUI application, you could try using GTK+. It's usable from C, C++ and C# (and probably any other language compilable under the .NET framework, i.e. Python, PHP and god knows what else).

    As for programming language, it depends on how low level you want to go :p C++ leaves you with all the nicities of memory management, C#/Java hide all those and let you concentrate on actually writing the logic of your app without worrying about writing to unreferenced memory. If you go the .NET route (whichever language you choose to write in) you'll have access to WinForms aswell, which is a fairly cross platform GUI toolkit aswell.


  • Closed Accounts Posts: 583 ✭✭✭monkey tennis


    Sounds like Java would fit the bill nicely, particularly if you've been exploring the OO aspects of PHP.


  • Registered Users Posts: 5,112 ✭✭✭Blowfish


    Well it depends what you mean by graphical.

    If you mean GUI, then Java is easy enough to learn. You could also use C++ with the QT libraries - its what KDE uses.

    If you are meant 3d graphics, then OpenGL through C or C++ is what you want.


  • Advertisement
  • Closed Accounts Posts: 638 ✭✭✭theTinker


    I agree with the above post,
    If its 3d graphics i would do opengl through c++. Java is great for application GUIs but not for 3d games etc.

    If you liked using php for oo /web based stuff java would be a nice extension, loads of openings for j2ee programmers.

    I used a graphics implementation of java from www.processing.org for a few graphic apps(racing car game, and a renewable energy demo). It is great for learning graphic concepts using non extensive/advance java code. You'll get working projects far faster than opengl or java graphscenes but its nothing i would use for large scale 3d developments, just personal demos etc. It will quickly give you a flavour basic java and graphic programming.


  • Registered Users Posts: 9,557 ✭✭✭DublinWriter


    Jakkass wrote:
    Although I would like to stay away from MS languages, any reccommendations for where i should start or should I just go learn C++.
    I still like Delphi, you can write .NET stuff with it these days as well as compiling neat little .EXE's for Win32, and write Web Services and all that good stuff. There's also a version of it for Linux (Kilyx).

    Plus the new Turbo version of it is now free along with the new Borland versions of Turbo C++ Builder and Turbo Java.

    However, these days it's less about the language and more about the framework you're developing for. Especially true if you're doing graphical stuff using a DirectX library in Window or TK (?) under Linux.


  • Closed Accounts Posts: 22,479 ✭✭✭✭philologos


    I'm in a similar position, mind if I hop on your band wagon? :)

    not at all more the merrier :)

    I might try learn C++ or Java i'm undecided though? Which should I pick?

    It doesnt have to be a DirectX Application, I'd just like more of a program with a graphical interface rather than a text based interface if you get me! Preferrably one that would be able to run on Windows and Linux and OSX


  • Registered Users Posts: 1,193 ✭✭✭liamo


    Jakkass wrote:
    I might try learn C++ or Java i'm undecided though? Which should I pick?

    They're both excellent languages with different strengths. If I was asked that question I would have to ask : "What are you trying to do?".

    You would do well to read up on the various languages that have been mentioned in this thread. Here's a few links to get you started :

    C : http://en.wikipedia.org/wiki/C_programming
    C++ : http://en.wikipedia.org/wiki/C%2B%2B
    C# : http://en.wikipedia.org/wiki/C_Sharp
    Java : http://en.wikipedia.org/wiki/Java_%28programming_language%29

    It doesnt have to be a DirectX Application, I'd just like more of a program with a graphical interface rather than a text based interface if you get me! Preferrably one that would be able to run on Windows and Linux and OSX

    I'd be inclined to nudge you towards C#. With its implementation on Linux (and MacOS) with Mono, it's pretty cross-platform. Additionally, with C# (or VB.NET) most of the functionality is in the libraries so your skills can be transferred to other languages in the .NET stable. If you like Python, there is now IronPython. As mentioned earlier, you can do .NET development with Delphi. This is just to name a few.

    Anyway, you can always change your mind if you decide that you made the wrong decision. Learning of any kind is not a waste of time and will stand you in good stead even if you do change your mind.

    Regards,

    Liam


  • Closed Accounts Posts: 22,479 ✭✭✭✭philologos


    If I did C# I could do ASP programs as well I'm assuming, but would it be more beneficial to start on C++ as its a much stronger language (by assumption)


  • Advertisement
  • Registered Users Posts: 1,193 ✭✭✭liamo


    Jakkass wrote:
    If I did C# I could do ASP programs as well I'm assuming
    That would be a correct assumption. And, by the way, Mono has a fully working ASP.NET implementation so your ASP applications are portable.
    but would it be more beneficial to start on C++ as its a much stronger language (by assumption)
    Again, it depends on what your objectives are. If you want a lot of low-level control and (as mentioned earlier) to do your own memory management then C or C++ might very well be the way to go. However, the fact that you're even asking these questions means that these are not requirements.

    As for your assumption that C++ is a "much stronger language", I don't agree with this. "Horses for courses" is my response. I wouldn't use Java for writing device drivers, and I wouldn't use C++ for writing a web-based application.

    You have to ask yourself what your objectives are. What will you be developing? If you would like to get into Linux kernel development then C would be my recommendation. If you want to get a job in an enterprise level distributed transaction environment then Java should be given strong consideration.

    However, you don't appear to have specific objectives in mind so it's difficult to point you in any particular direction.

    In the absence of specific objectives I can only assume that your top priority will be to learn a skill that will get you a job.

    While there is most definitely a demand for C and C++ developers, I would have thought that there is a larger demand for C# and VB.NET developers. Couple this with some SQL Server experience and you now have a skillset that is marketable.

    Anybody that tells you "Language X is the best and that's what you should learn" is talking thru their arse. Note that nobody so far in this thread has done this - it's all been "If you want to do X then language Y would be a good choice". At the end of the day, you need to decide what you'll be doing with the language that you choose. Then you can make an informed choice of language.

    Remember, however, that you won't end up using this language exclusively. At this point I've written applications and utilities in about 10 different languages. I say this not to blow my own trumpet but to illustrate the point that, as a developer, you will pick up languages as you go along and that your choice of language now is less important than just making a decision and just doing it. Eventually, of course, you will have your favourites (I would now only develop in 2 or 3 languages) and at that point you will be able to make an informed decision about which language would be the best for a particular set of requirements.

    Sorry for the long post but there really is no quick answer to your question(s).

    The very short answer that I'd give you is : Jump right into C#. Get a couple of books. If you change your mind later, no big deal. What you've learned will stand you in good stead.

    Regards,

    Liam


  • Closed Accounts Posts: 22,479 ✭✭✭✭philologos


    I'd be interested in creating network programs like chat clients or something simple to start off with. I hear that Java can be very heavy on RAM and thats a bit of a put off.


  • Registered Users Posts: 9,557 ✭✭✭DublinWriter


    Jakkass wrote:
    If I did C# I could do ASP programs as well I'm assuming, but would it be more beneficial to start on C++ as its a much stronger language (by assumption)
    Back in my day we were thought a variety of languages, ranging from plain ol' C through to Prolog, Pascal, Cobol and Assembler.

    Most were all like night and day when you compared them to one another.

    What I will say is that languages such as C++,C~ and Java are a bit like dialects of the same language. It's a bit like Dutch, where you have the Dutch that's spoken in Holland, Flemmish in Belgium and Afrikaans spoken in South Africa. Having worked in an office with three people that spoke all of the above variations of Dutch, they could all understand each other if they spoke slowly enough.

    There's not a world of difference hopping from C++ to C# to Java, as was said originally, most of the differences arise from the framework you're developing for...Win32, .Net or a Java environment.

    Commercially speaking, I see most of the programming jobs now are in Java and VB.Net.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Jakkass wrote:
    I hear that Java can be very heavy on RAM and thats a bit of a put off.

    Earlier versions prehaps (Pre 1.4) or if you can't code. Also if you are using JIT it will effectively rewrite the code on the fly to be more optimal in performance and memory (again assuming you can code, doesn't protect against stupidty).

    You will find a lot of peoples horror stories of "Why you shouldn't use Java" are based on stuff that is over 6 years old or related to the MS JVM.

    [edit] Oh and creating a network based app is horribly simple in java. Can't vouch for C/C++ but I would guess the same could be said for C#


  • Closed Accounts Posts: 4,943 ✭✭✭Mutant_Fruit


    Hobbes wrote:
    Earlier versions prehaps (Pre 1.4) or if you can't code. Also if you are using JIT it will effectively rewrite the code on the fly to be more optimal in performance and memory (again assuming you can code, doesn't protect against stupidty).
    So does the .NET framework, but it still doesn't do a good job unless you understand how the garbage collector works and know how to code to improve performance.

    The only thing you *have* to remember when dealing with garbage collected languages is that allocations are bad. Every allocation you make puts extra strain on the garbage collector. So if you're allocating objects on a heap, then try and minimise those as much as possible to reduce memory usage.

    For example in an app i wrote i was allocating a new array of ~20-30 elements quite a few times a second (i.e. every time a certain method was called). By declaring the array at class level and then just reinitialising it at each method call (with appropriate locking) i reduced memory usage from ~16 megs to ~12 megs. That's the kind of "optimisation" that can greatly improve memory usage in GC languages.
    Hobbes wrote:
    [edit] Oh and creating a network based app is horribly simple in java. Can't vouch for C/C++ but I would guess the same could be said for C#
    Yup, in C# it's as simple as:
    Socket s = new Socket();
    s.Connect();
    s.BeginRecieve();

    Want to download a file? Use HttpClient.DownloadFile(); I believe there's a similar one for FTP. Want to open a webpage, use HttpRequest.GetResponse();

    Easy as pie!


Advertisement