Selecting language and GUI toolkit for project

I’m looking to write a competitor of NovelWriter.

While the author is very competent, NW is written in python – which results in a performance bottleneck and some other irritating problems.

She started another project with the exact same purpose, but in C++. However, that project, up to now, doesn’t nearly receive as much love as NW does.

This means some features are very hard to implement. She also did some things in a way which, to be honest, smells of the ninetees and early twothousands.

There are also some things which are implemented in a way I simply do not agree with.

All of this makes me go hhhmmmm… What language should I use? Graphics framework?

No, I’m not going with python: it’s got too many issues. I’ve also heard too many horror stories about javascript.

My cup of tea is statically typed languages.

Go seemed nice to me, but package management is simply a nightmare. Rust complains about everything and anything. Java I don’t know much about, but I don’t like the thought of installing an 80GB IDE. C++ I have some experience with, but it’s so easy to get vague errors. C is easy to learn, hard to master and, like C++, hard to find bugs loom on the horizon.

Once I selected a language, there’s the issue of toolkit. I like FLTK. It is simple, to the point and feature rich while still performant. Qt seems like overkill to me.

As it stands, rust seems to be the best candidate. However, I have some misgivings with rust. So, anybody got some other suggestions?

1 Like

Hi Xander,

I know very little about programming, but just out of curiosity, can you elaborate or give examples of your statement?

Thanks

I don’t know if you’re interested, but have you seen wxWidgets?

Jorge

1 Like

The modern, statically typed language that addresses the issues you raise is supposed to be Nim

I cant make a recommendation… too little experience.
My own preference is to stay with C and R.
I did try Rust once… its method of updating outside of the package system gives me the horrors.

The other modern language which you have not considered is Julia. Julia is dynamically typed, but you can use explicit types. It is a large language to learn, is very internet oriented, and has the worst user interface ever. Lots of people use it, especially in the scientific computing scene. One leading R programmer migrated to Julia and caused quite a stir.

Just my 2 cents worth.

3 Likes

Python
I like using Python, but my uses are more for DevOps than applications. My “programs” really are just single file scripts for the most part.

Nim
I’ve read a bit about Nim, but never used it. It seems like the intent was a faster Python-like language.

Julia
I did mess around with Julia just a bit. It seems nice, but it’s more suited and intended for data analysis I believe. It could probably serve lots of general purpose uses too.

Flutter
Have you looked into Flutter? It uses the Dart language. It’s from Google. That could be a very good thing or a very bad thing, depending on your point of view. One good thing about it is that it can compile to several platforms with one codebase. Write once and deploy to Linux, Windows, Apple, Android, iPhone, and Web. Seems almost too good to be true. There are probably some gotchas, but might be worth a look.

2 Likes