Trending Languages
So this starts with trying to instal the Dart VM on RHEL 6 only to discover that the gcc installed might be too old for it to work correctly. I might try anyways later, but the experience sparked this train of thought. I originally wanted to write a little game solver in Dart to get for it outside of the web-app environment, which is decidedly not what it is designed to do, thinking it would be like Node. The little hiccup I ran into got me thinking about the maturity of languages and futures.
Dart
When I first started following dart, I didn’t have much JavaScript experience so I thought that most of the issues I had learning JS might be easier with Dart. I have friends who used CoffeeScript in prod, and I’ve been at Typescript presentations, but I wanted to try my hand at something new to see how it compared. I read tutorial blog posts and updates on development and features and it all sounded nifty at the time.
I didn’t get around to sitting down with it until the 0.1.0 release of Angular.dart. I had been learning JavaScript primarily through writing a few AngularJS applications, so I thought that having a framework in common would make for an easy test drive. I updated my dartium install and tried rewriting an old CakePhp application I had never finished. I came away with the stark awareness of 0.1.0 label: documentation was missing, examples used deprecated methods, and I didn’t get very far. I guess I shouldn’t have been surprised given the state of project and language, but I hadn’t had that experience before. I was accustomed to working with established languages and hadn’t really come to terms with what stage Dart was in.
Go
i started following Go after having a few unsatisfying experiences with Python and a growing interest in languages focused on concurrency. I wrote a few dirty programs for system maintenance and found it appeased the C/C++ side of me that was often left unfulfilled by Python and PHP. It wasn’t until I got involved with an open-source project that I became familiar and comfortable with the language. I continued having great experiences with language and ecosystem when I made the connection between trending languages and problems.
Language timing
I’ve experienced multiple languages filling different roles, but I’d just realized why I had such different experiences with 2 new languages. Go was solving a very well defined set of problems, ones that had been addressed multiple times by a variety of other older languages. It came out at the time when many people were looking to move to something more scalable than a dynamic language and concurrency support is really helpful when working on big data sets.
On the other hand Dart came out while a whole bunch of JavaScript frameworks were fighting for the limelight. People had just started figuring out that writing huge apps with only dojo/jquery is a ton of work to build and maintain. Javascript programmers weren’t looking to learn a new language, they just wanted more tools in the one they had. It was almost moving the opposite direction with the popularity of Node. Lessons learned from Dart will most certainly find their way into newer versions of JavaScript, but I’m kinda sad to see that something that I’ve used doesn’t have a path into the near future.
I’ll probably finish writing that server script in dart just for completeness, but I probably won’t come back to it anytime soon after that. I have too many other projects where I don’t think Dart would be appropriate.