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

Which language to use?

Options
  • 11-08-2018 7:11pm
    #1
    Registered Users Posts: 6,947 ✭✭✭


    Hi folks,

    Does anyone have good resources for pros and cons of all the major languages? I come from a DevOps/sysadmin/cloud architect background so my programming is minimal (mostly scripting in python, ruby, bash, powershell and yaml).

    I'm currently looking at starting a project that I've planned out. I know the infrastructure, how it should interact and I've even settled on storage and database solutions. The last thing is which language to code the application in.

    If anyone has opinions or comparison websites it'd be great to see as there are so many options these days.


Comments

  • Registered Users Posts: 586 ✭✭✭Aswerty


    Assuming you're building a web app (if not ignore this post) there is only six realistic options. So: Java, Python, C#, PHP, Ruby and Node.js are about it unless you want to pick up something outside the mainstream (bad idea!). Considering Java and C# are very similar that's more like five realistic options (+1 extra flavour).

    Rather than give you something subjective, the Stackoverflow 2018 Survery has these languages ordered as follows in terms of most loved:
    1. Python
    2. Javascript (front-end Javascript makes the popularity of this less understandable)
    3. C#
    4. Java
    5. Ruby
    6. PHP

    If I had to give a couple of tips based on that list. Don't go with C# if you're planning on a linux environment (although these days this is technically possible). Personally, I love C#. The paradigm behind Javascript/Node is less orthodox than the rest of the list.

    Finally, this question is so open ended - there is no true answer. Pick one of the six and you'll be grand. This question can be argued back and forth ad nauseum.


  • Registered Users Posts: 6,947 ✭✭✭circadian


    Thanks for that. Yes I understand the question is open ended, I'm obviously trying to avoid going into too much detail.

    I wasn't aware of the Stack Overflow poll, that's a handy one to reference. I have experience of C# from a previous life but yes this will be a Linux based project so best to go with something a bit more suitable.

    Thanks for the advice.


  • Registered Users Posts: 768 ✭✭✭14ned


    Aswerty wrote: »
    Finally, this question is so open ended - there is no true answer. Pick one of the six and you'll be grand. This question can be argued back and forth ad nauseum.

    Firstly, good answer.

    Secondly, I'd second choosing Python, as the OP has some experience with it already, it's a fair no brainer.

    I would say that Python for small programs is very different to Python for large programs. For the latter, you need to learn the unspoken rules and conventions for how to structure large Python programs (which are not documented anywhere, to my knowledge), and be ruthless in forcing yourself to strictly apply them. Definitely make use of the various Python lint and static analysis tooling. And early on, set up a CI job which tests your program per commit on PyPy, and ensure you don't write Python which won't compile there as a sanity check. If Python v2 compatibility might be needed, obviously also set up CI jobs for python 2 and 3 testing.

    Finally, Python is great and everything, but it's easy to write slow Python, and fast Python isn't idiomatic Python. Most places choose a different programming language for performance sensitive parts rather than write non-idiomatic Python, as ordinary devs tend to accidentally break fast Python without realising. A lot of people seem to choose Go or C for the performance sensitive parts, and for a web app those choices make sense. For more systemy apps, C++ makes more sense.

    Good luck with your software solution!

    Niall


  • Moderators, Society & Culture Moderators Posts: 9,703 Mod ✭✭✭✭Manach


    For future proofing beyond the immediate project, Java and Python seem to current front runners but C++ still has strongholds, for instance in finance and security work.

    Given the shift to cloud based architectures, it might be work checking if any of these are more suited for working in this setting if the project migrates to the cloud?


  • Registered Users Posts: 6,150 ✭✭✭Talisman


    circadian wrote: »
    Thanks for that. Yes I understand the question is open ended, I'm obviously trying to avoid going into too much detail.

    I wasn't aware of the Stack Overflow poll, that's a handy one to reference. I have experience of C# from a previous life but yes this will be a Linux based project so best to go with something a bit more suitable.

    Thanks for the advice.
    You didn't provide any details regarding the project. No mention of an architectural pattern or what field it's in so anybody making a suggestion is shooting in the dark.

    Microsoft made the .NET framework open source and available to run on any platform so .NET Core is also an option for you.


  • Advertisement
  • Registered Users Posts: 7,410 ✭✭✭jmcc


    As Talisman pointed out above, your post is light on details. Without those details it is like asking us to guess the length of a piece of string. If you are building a database backed site, start reading up on SQL immediately as what you think you know will never be enough.

    Regards...jmcc


  • Moderators, Society & Culture Moderators Posts: 15,750 Mod ✭✭✭✭smacl


    Manach wrote: »
    For future proofing beyond the immediate project, Java and Python seem to current front runners but C++ still has strongholds, for instance in finance and security work.

    Given the shift to cloud based architectures, it might be work checking if any of these are more suited for working in this setting if the project migrates to the cloud?

    Long time C++ hack myself after many years of C following various mixes of assembler, Pascal and even Forth. I think if you're looking for best performance, C++ is still hard to beat, not to mention the vast wealth of open source libraries that allow you to do just about anything. If you don't need the performance characteristics, C++ is often touted as the best language in which to shoot yourself in the foot, which I've also managed to do on more than one occasion ;)

    C# is easier but very Microsoft centric.


  • Registered Users Posts: 98 ✭✭haskellgeek


    Come to the weird world of functional and true functional programming Haskell and yesod for when you need web stuff done :) , Oxford and Cambridge here in the uk teach Haskell and java now for their courses, of comp sci, and all I think in now is types I'm currently working in them. But there is very little in libraries api's etc for them also testing is not an easy task


  • Moderators, Computer Games Moderators, Technology & Internet Moderators Posts: 19,240 Mod ✭✭✭✭L.Jenkins


    I use a bit of everything from Java to C#, Python, Bash, C and C++. Whatever does the job best.


Advertisement