On Sunday, 3 January 2016 at 15:38:18 UTC, Dibyendu Majumdar wrote:

I am looking to choose between D, Swift and Rust for a project that I am currently coding in C++. So far D seems the alternative but I guess I won't know until I try out a few things.

Why I now choose D, even for commercial jobs...

C++ had been my primary language (personally and professionally) for 20 years, and it was effective and enjoyable for me. But, I was naive. I didn't realize that what made it enjoyable for me, is that I always used effective and complete frameworks/toolsets (IBM VisualAgeC++ on OS/2, BeOS standard API, Qt on everything) with effective base classes and data structures that all worked together. When forced out of my comfortable space, by a project a couple years ago that allowed no dependencies on Qt, I discovered the grief of C++.

So, time to give D a try. I'd watched it through the tumultuous years, and saw that it had settled down. I like the pedegree of D - a pragmatic approach from a creator of a commercial C++ compiler. Also, I was encouraged to see Alexander jump in to contribute to D (even before the D foundation announcement), as he's been tirelessly working to improve C++ over the years.

I, like you, wanted to "try out a few things" before committing to D on commercial effort. I found myself fantastically productive (more than C++, even with Qt) using rdmd to begin script-like and refactor as it grew. Easy, like Python that produces fast compiled single executables that are easy to deploy (even to folks without a Python development environment installed), especially with the 'import' feature to embed external resources. It is so easy to keep unit tests current and running, and so easy to see testing code coverage, that I felt always safe refactoring. I appreciate the ability to mark any scope @safe, and have the compiler keep me honest.

And I found myself using more "esoteric" features that were a pain in C++. I loved the concept of meta-programming in C++, but always found myself using features in my framework - which had taken the great pains to provide the necessary functionality. I found implementing threads and concurrency in D every bit as simple and safe as Qt.

Admittedly, GUI stuff in D is a mixed bag. I've settled on creating D console applications that transmits json data, via stdin/stdout, directly into Qt base model classes so the rest of the Qt framework works seamlessly. I quite like the solution, and I'm actually glad there was no "standard" gui interface that bound me. But, gtk and sdl bindings seemed to work easy enough for simple things, and dlanggui is looking promising.

As for future commercial efforts, I'll continue with D. I feel safe that straight C is relatively easy to integrate. Having access to proven libs like sqlite, redis, libgit2, nanomsg makes little incentive to ever feel like replacing them. Even many of the interesting Python libs are just linked to a standard C lib underneath.

Anyway, I'm just more productive at producing robust, fast code in D.
Best of luck in your efforts.

Reply via email to