Jump to content

Best Language To Choose For Linux User Program Development?

MrTimcakes

**DISCLAIMER:** If you think this post is based too far on opinion try list languages that suit my requirements instead of providing nothing constructive and deleting it. Or perhaps advise on the use of Mono.
 
I'm looking to get-into developing user Form and CLI applications for Linux, I'm already an experienced programmer and so I don't mind adapting my skill set and learning a new language.
 
However I'm stuck at which language to choose for Linux Dev I'd like the chosen language to be in my sense "Native" meaning the client will ideally not have to have any external binaries installed in-order to use my program ruling out for example Java and Flash. I also far prefer the syntax of using {} (Braces apposed to tabs) and so prefer not to opt for python. And of course I would like it to be cross platform, I'd like it to run on windows too, ARM would be nice but not at all a requirement.
 
I've already searched around found Mono which is C# with a portable JIT Compiler allowing for Linux usage. Are there any superior options or pitfalls to Mono that mean it should not be chosen? I am also unsure whether Mono will need .Net framework or similar to work on linux.
 
Languages I am already experienced in and are fond of include:

  • C#
  • LUA
  • AHK
  • Visual Basic
  • Python
  • Bash
  • Batch
  • PHP
  • Javascript
    - Node
    - Web
    - Hardware
  • HTML
  • CSS
Link to comment
Share on other sites

Link to post
Share on other sites

I think making a web application would suit your needs better than anything else, after all the user wouldn't even need to have a copy of the binaries, they could just access it via their browser. HTML5 (with a little php if you find it limited) should do the job just fine.

 

Mono (iirc) works by including part of the .net libraries in the executable, which isn't very efficient, so I would advise against that. Python needs the interpreter to be installed on the machine, so that's also not an option.

 

Other than that if you really prefer using binaries c or c++ are the way to go, way more portable than c# and they natively compile for windows and linux on any architecture without any weird tricks involved.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

I think making a web application would suit your needs better than anything else, after all the user wouldn't even need to have a copy of the binaries, they could just access it via their browser. HTML5 (with a little php if you find it limited) should do the job just fine.

 

Mono (iirc) works by including part of the .net libraries in the executable, which isn't very efficient, so I would advise against that. Python needs the interpreter to be installed on the machine, so that's also not an option.

 

Other than that if you really prefer using binaries c or c++ are the way to go, way more portable than c# and they natively compile for windows and linux on any architecture without any weird tricks involved.

I already do this with a mix of regular webpages and a mix of something like Electron or NWJS to achieve something closer to home. However I'd like something less idk clunky (Both include things like Chromium) to do simple stuff like what AHS achieves in windows e.g. expanding MrT to MrTimcakes whenever I type it, or a hotkey to open the calculator (No button on my K70 RGB :angry: )

Link to comment
Share on other sites

Link to post
Share on other sites

I already do this with a mix of regular webpages and a mix of something like Electron or NWJS to achieve something closer to home. However I'd like something less idk clunky (Both include things like Chromium) to do simple stuff like what AHS achieves in windows e.g. expanding MrT to MrTimcakes whenever I type it, or a hotkey to open the calculator (No button on my K70 RGB :angry: )

 

that's pretty hard to do without specific os functions, I suppose you could use some abstractions in c or c++ and change only the minimum necessary when you port to windows. For example you could make a function that handles "open calculator" and refer to that in your main, then change only that function when you port the program. I would still say c/++ is the way to go, c# requires way more libraries than make sense for a multiplatform project.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

C and/or C++ coupled with QT (preferably) or GTK. Linux doesn't have an official user-interface library that's as first class as you're going to get. Java works but it's incredibly annoying to use a Java program.

"Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things." - Doug Gwyn

Link to comment
Share on other sites

Link to post
Share on other sites

If you're thinking with Linux first and you're feeling particularly adventurous, I'd recommend Vala.

 

Otherwise, as a personal bias, I personally recommend you just go with Electron. It's easy enough to package you final output into an .exe file for Windows or a C-compiled executable for Linux, and since it's basically just HTML5/JS, it cross-compiles to Cordova (if ever you want to do a mobile build as well).

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×