2010年以降に登場したオープンソースのプログラミング言語

この記事は、[Business Bank Group Developers Advent Calendar](https://qiita.com/advent-calendar/2018/bbg_developers) 20日目の記事です。

## はじめに
- 2010年以降に登場したオープンソースのプログラミング言語についてまとめました。
- 対象は、該当言語のGitHubのStarが、2018年12月19日時点で2,000を超えていているものであり、各年毎に、2018年12月19日時点でStarの多い順に並べています。(年は独断と偏見で決めています。)
- 一部の言語では、localでの環境構築(Ubuntu18.04)からHello World!を表示するまでの方法も記載しています。
- 間違いがあれば、編集リクエスト等を送っていただけると幸いです。


## 2010年
### Rust
https://github.com/rust-lang/rust

```bash

$ curl https://sh.rustup.rs -sSf | sh
$ sudo apt install cargo
$ cargo install evcxr_repl
# export PATH
$ evcxr
```

```rust
Welcome to evcxr. For help, type :help
>> println!("Hello World!");
Hello World!
```

## 2011年
### Kotlin
https://github.com/JetBrains/kotlin

```bash

$ curl -s api.sdkman.io | bash
# restart terminal
$ sdk install kotlin
$ kotlinc-jvm
```

```kotlin
Welcome to Kotlin version 1.3.11 (JRE 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
Type :help for help, :quit for quit
>>> println("Hello World!")
Hello World!
```

### Dart
https://github.com/dart-lang

※ 言語の音楽性の違いから、ブラウザ上で実行することにしました。
https://dartpad.dartlang.org

```dart
void main() {
  print("Hello World!");
}
// console outputs: Hello World!
```

### Red
https://github.com/red/red

### MoonScript
https://github.com/leafo/moonscript

## 2012年

### TypeScript
https://github.com/Microsoft/TypeScript

```bash
$ npm -i ts-node
$ node
```

```typescript
> console.log("Hello World!");
Hello World!
```

### Julia
https://github.com/JuliaLang/julia

```bash
$ sudo docker run -it --rm julia
```


```julia
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.0.2 (2018-11-08)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> print("Hello World!")
Hello World!
```

### Elixir
https://github.com/elixir-lang/elixir


```bash
$ sudo docker run -it --rm elixir
```

```elixir

Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.7.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> IO.puts "Hello World!" 
Hello World!
:ok
```

### Elm
https://github.com/elm/compiler

### Alda
https://github.com/alda-lang/alda

### Halide
https://github.com/halide/Halide

## 2013年

### Idris
https://github.com/idris-lang/Idris-dev

## 2014年

### Swift
https://github.com/apple/swift

```bash
$ sudo docker run --privileged --cap-add sys_ptrace -it --rm swift swift
```

```swift
Welcome to Swift version 4.2.1 (swift-4.2.1-RELEASE). Type :help for assistance.
  1> print("Hello World!")
Hello World!
```

### Hack
https://github.com/facebook/hhvm

```bash
$ sudo apt update
$ sudo apt install software-properties-common apt-transport-https
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xB4112585D386EB94

$ sudo add-apt-repository https://dl.hhvm.com/ubuntu
$ sudo apt update
$ sudo apt install hhvm

$ echo '<?hh echo "Hello World!\n";' >> hello.hh
$ hhvm hello.hh
Hello World!
```

### Crystal
https://github.com/crystal-lang/crystal

```bash
$ curl -sSL https://dist.crystal-lang.org/apt/setup.sh | sudo bash
$ curl -sL "https://keybase.io/crystal/pgp_keys.asc" | sudo apt-key add -
$ echo "deb https://dist.crystal-lang.org/apt crystal main" | sudo tee /etc/apt/sources.list.d/crystal.list
$ sudo apt update
$ sudo apt install crystal

$ echo 'puts "Hello World!"' > hello.cr
$ crystal run hello.cr
Hello World!
```

### Elvish
https://github.com/elves/elvish

## 2015年

### Solidity
https://github.com/ethereum/solidity

### Streem
https://github.com/matz/streem

### Pony
https://github.com/ponylang/ponyc

### Wren
https://github.com/wren-lang/wren

### Imba
https://github.com/imba/imba

### Luna
https://github.com/luna/luna

### Zig
https://github.com/ziglang/zig

## 2016年

### Eta
https://github.com/typelead/eta

## 2017年

### Gravity
https://github.com/marcobambini/gravity

### Goby
https://github.com/goby-lang/goby

## 感想
- 2010年以降に登場したプログラミング言語で知名度の高いものについては、ほぼオープンソースである。
・new programming language
・next generation programming language
・emerge programming language of 2018
などで検索をすると、2010年以降に登場した言語は全てオープンソースのようでした。
また、オープンソースでない言語についても調べていましたが、自分で見つけることは出来ませんでした...。
このことから、2010年以降に登場したプログラミング言語で知名度の高いものについては、ほぼオープンソースであると述べて良いのではないでしょうか。

- みんな違ってみんないい
この前流行った、【今後必要になるプログラム言語】
なんてものは、業界毎に様々なので、各々で考えればいいかなと思いました。

- EmojicodeやQ#も入れたかったです。
(いずれ、記事更新時に追加すると思いますが)

明日は @keitatakahashi さんが担当です。よろしくお願いします！