Why I've been learning Dart

I've been using Dart to build apps lately and it's been mostly fantastic!

Dart was built by Google. It was designed to be familiar, simple yet powerful. Since it heavily resembles Javascript, it is very easy to learn. And since it has none of Javascript's quirks you don't have to learn a bunch of caveats. Finally Dart is strongly typed, so you will detect problems early during compilation. Types are also inferred so that you don't have to explicitly write every single type.

But the biggest reason for choosing Dart is that I can learn one language and write on any platform. Isn't that the holy grail of programming? It can be used to compile into:

Dart has a large collection (link) of public packages, although it's nothing compared to npm (link).

If I were not using Dart, I'd be using one of the following on each platform, as I actually have in the past.

Alternatives

You'll see that Electron appears on Desktop and Mobile apps. Electron packages a browser and your webapp into an app. You write it in Javascript and you can then run it everywhere. It is great. The downside is it runs much slower than native apps.

Web applications

  • React.js: my favorite.
  • Angular.io with TypeScript: typed as well.
  • Polymer

Mobile applications

Android

  • Java: verbose but familiar.
  • Kotlin: new and exciting.
  • Electron

iOS

  • Objective-C: the syntax is very hard to comprehend for beginners.
  • Swift: new and exciting.
  • Electron

Command line and server applications

  • Go: another Google language (https://golang.org/). It is typed, and it compiles super fast. I love it, but the syntax is hard to remember since it's different from most languages.
  • node.js: write Javascript and run it on the server! Extremely popular. But I will use typed languages from now on. Either Go or Dart.
  • Python: popular, but requires Python to be installed on the machine.

Desktop applications

Windows

  • C#: very nice language. Concise and elegant.
  • Java/Swing: Swing is quite ugly. My knowledge here is quite outdated. Maybe there's better now.
  • Electron

MacOS

I've never done it before, so I might be wrong:

  • Objective-C
  • Swift
  • Electron

Linux

C++ with Qt. Probably many others too. Electron? :P