β This list is more-or-less limited to languages I have personal experience with
- Recommended?: π
- Pros
- Like a more modern Java without a lot of Java's problems
- Cons
- Although it is now open-source with .NET Core, a lot of existing code and libraries aren't compatible
- A fully open-source .NET/C# seems to conflict with Microsoft's priorities: Can we trust Microsoft with Open Source?
- See also: Is .NET an open platform yet?
- Recommended?: π
- Life is too short to use programming languages that aren't fun to write π
- Pros
- Very fast
- Great concurrency support
- Great tools
- Spec is consise and simple enough you can hold most of the language in your head
- Cross-compiling is super simple
- Compiles to a native executable
- Cons
- Not fun to write
- Very pedantic; compiles will fail with unused libraries, variables, etc
- No exceptions, only error codes, which must all be handled explictly which is annoying to do and the code ends up littered with error code handling
- No REPL for quick hacking
- Language authors encourage overly terse usage (single character variable names, etc)
- Tabs instead of spaces; can be mostly ignored thanks to
gofmt
but still eww
- Not fun to write
- Recommended?: π
- Groovy's not a bad language but now that Kotlin is here I don't see much future for it
- Pros
- Modern language with a lot of nice features
- Cons
- Never really gained traction, overshadowed by Kotlin
- Recommended?: π
- You can get the benefits of Java without the downsides by using a modern JDK language like Kotlin
- Pros
- Well-established language with lots of commercial and library support
- Cons
- Verbose
- Has a lot of baggage due to it being an old language that maintains backward compatibility
- Recommended?: π
- Pros
- Due to it being included in browsers, it's everywhere
- Can be used for browser applications, server applications (via Node.js and others), mobile applications (React Native, etc), desktop applications (Electron, etc)
- The most popular programming language since the last decade, which means massive communmity and library support
- Cons
- Recommended?: π
- Pros
- Modern language
- Seems to be the first real JVM language other than Java to gain traction, likely due to backing by JetBrains (who created it) and Google (who added official support to Android)
- Recommended?: πππ
-
This is valid Perl; I rest my case:
$_=q(s%(.*)%$_=qq(\$_=q($1),$1),print%e),s%(.*)%$_=qq(\$_=q($1),$1),print%e
-
- Recommended?: π€·ββοΈ
- Pros
-
Easy to learn and pretty human-readable, e.g.
for item in list: do_something(item)
-
Built-in support for static types
-
- Cons
- Whitespace is significant
- Global interpreter lock
- Recommended?: π
- Pros
- Modern language
- High-level
- Compiles to native code with built-in reference counting
- Cons
- Not a truly open or cross platform language
βΉοΈ - Seems like it's being largely abandoned outside of Apple
- Not a truly open or cross platform language
- Recommended?: ππ
- Pros
- All of the advantages of JavaScript, plus static types and a few other minor features (like enums)
- Cons
- Created and maintained by Microsoft, so there's some uncertainty and danger there (Can we trust Microsoft with Open Source?)
How about a more balanced review of Perl?
You can write bad code in any language.
The flexibility of Perl could also be considered a benefit.