1.広まりつつあるGolang。でも、まだ課題もある。
元々PHPやJavaでWebや統計のプログラムをしていたけれど、最近は、Golangを使うようにしている。
世界規模でみればDockerをはじめ使われることも多くなってきた。日本でもAbemaなどICT系の先端をいこうとする企業で採用されることが多くなった。
Golangは2009年から世にでて来年で10年になる。まだ、ジェネリクスができないことや、slice(動的配列・リスト)や正規表現の速度の遅さなどが欠点として指摘される。
個人的には、ソースファイルが名前空間の区切りではなく、フォルダ・パッケージ単位での名前空間の区切りというのが、疎結合を志向した設計をする上では、結構、使いにくいなと思ったりする。パッケージ単位で小さいモジュールをつくればそれでもいいのかもしれないけれど。
ただ、多くのGolangのソフトは、一つのパッケージフォルダに多数のソースをいれて、循環参照をさけるためか、フラットな構造にしているのをよく見る。
これならやはりソースファイル単位で名前空間は切ってもらった方が何かと便利だと思うけど。
見えない部分で、名前衝突があるとか、あまりコーディングをするうえでは好ましくない仕様だと思う。
2.Go2.0がいつでるのかの予測
それはさておき、ジェネリクスやエラーについては、Go2.0で改善されるといわれている。
Go2.0へのロードマップは現時点(2018.11)では発表されていないので、いつになるかわからないけれど、Go2.0は、Go1.20と同様の仕様か、それ以降にでるといわれている。
現時点では、Go1.11なので、1.20になるのは再来年の2020年ぐらいだろうか。
3.Golangが新規採用になると思われる点
GolangはJavaの有償化も手伝って、今後採用する企業が増えていくと予想している。RustやSwiftなどほかにも次世代言語でコンパイルをする速い言語はあるけれど、開発体制の大きさ、文法のシンプルさ、大きなソフトでの実績、クロスプラットフォームでのビルド・実行などが採用の決め手になると思う。
また、最近ではRasspery Piのプログラムを作るのに、GoBotをつかったりと、組み込みなどの分野でもPythonやCとならんで使われている。(nodeとかもつかわれてるけど)
単純にPCやサーバサイドで動くだけというよりも、IoTを見据えた組み込みについても使える言語だと思う。
Go2.0になったらもう少し書きやすくなるのかなと思っている。また、Go2.0ぐらいでさらにユーザーが増えるのではとも思っている。
来年もGolangを採用する企業は徐々に増えていくとは思うが、ターニングポイントは2020年以降なんじゃないかな。
これは個人的な予測であり、勿論、外れる可能性もある。とはいえ、使われなくなることはなさそうだし、悪い言語ではないので自分はこのままGoを使って様々なプラットフォームでの開発を続けていこうと思っている。
4.他の次世代プログラム言語への雑感
現状で、次世代言語で書きやすいなと思うのはSwiftだけれど、Winでの実行がしにくく自分は使っていない。けれど、Swiftがもっと幅広い分野で使われるようになれば、こちらが普及する可能性もある。
ちなみに、Rustは、さわれば分かるけれど、文法上かなり文字数や文法的な縛りが多くて、学習するコストが高い。GoやSwiftと比べて修得に時間がかかりそうに思える。(Mozilla系のツールはいつもどこかわずらわしくて、爆発的に伸びない)。
とはいえ、速度はGoよりは上だし、C++の分野ならRustで書いた方が楽かもしれない。個人的には、人材を集めるにはすこし上級者よりになってくるのではと思う。
Nimについてはマルチパラダイム言語で、何でもできそうな感じではある。Javaが今そんな感じになっている。Nimの欠点は、実績と開発体制の貧弱さだと思う。これさえ改良されれば広まるかもしれない。
Juliaについては、今後もPythonがよく使われている統計や機械学習、科学計算の分野でさらなる普及をみると思う。というのは、やはりPythonよりも速度があるという点であり、書きやすさだろうと思う。Pythonの欠点は、速度かなと思う。勿論、Cythonなどを使えば速度があがるけれど、Cythonをつかうと、Pythonだけでなく別途Cython特有なリソースが必要になる。単一の言語で無駄な手間なく速度が担保できる方が楽だと思う。面倒な準備がないといけないのは開発者にとっては好ましいことではない。
ElixirはErlangVM上で動き、型のない言語。型のない言語となると大規模開発するときは注意が必要で、設計がまずいとRubyやPHPで起こるむちゃくちゃな設計のシステムができあがりそう。良さもあるけれど、どこまで広まるのかというと個人的には判別できない。
最近は型をつけるのが改めて一般的になってきている感もするけれど。IDE使うときはやっぱり型がないと補完が効かないから、めんどくさいなと思ったりする。
元々PHPやJavaでWebや統計のプログラムをしていたけれど、最近は、Golangを使うようにしている。
世界規模でみればDockerをはじめ使われることも多くなってきた。日本でもAbemaなどICT系の先端をいこうとする企業で採用されることが多くなった。
Golangは2009年から世にでて来年で10年になる。まだ、ジェネリクスができないことや、slice(動的配列・リスト)や正規表現の速度の遅さなどが欠点として指摘される。
個人的には、ソースファイルが名前空間の区切りではなく、フォルダ・パッケージ単位での名前空間の区切りというのが、疎結合を志向した設計をする上では、結構、使いにくいなと思ったりする。パッケージ単位で小さいモジュールをつくればそれでもいいのかもしれないけれど。
ただ、多くのGolangのソフトは、一つのパッケージフォルダに多数のソースをいれて、循環参照をさけるためか、フラットな構造にしているのをよく見る。
これならやはりソースファイル単位で名前空間は切ってもらった方が何かと便利だと思うけど。
見えない部分で、名前衝突があるとか、あまりコーディングをするうえでは好ましくない仕様だと思う。
2.Go2.0がいつでるのかの予測
それはさておき、ジェネリクスやエラーについては、Go2.0で改善されるといわれている。
Go2.0へのロードマップは現時点(2018.11)では発表されていないので、いつになるかわからないけれど、Go2.0は、Go1.20と同様の仕様か、それ以降にでるといわれている。
現時点では、Go1.11なので、1.20になるのは再来年の2020年ぐらいだろうか。
3.Golangが新規採用になると思われる点
GolangはJavaの有償化も手伝って、今後採用する企業が増えていくと予想している。RustやSwiftなどほかにも次世代言語でコンパイルをする速い言語はあるけれど、開発体制の大きさ、文法のシンプルさ、大きなソフトでの実績、クロスプラットフォームでのビルド・実行などが採用の決め手になると思う。
また、最近ではRasspery Piのプログラムを作るのに、GoBotをつかったりと、組み込みなどの分野でもPythonやCとならんで使われている。(nodeとかもつかわれてるけど)
単純にPCやサーバサイドで動くだけというよりも、IoTを見据えた組み込みについても使える言語だと思う。
Go2.0になったらもう少し書きやすくなるのかなと思っている。また、Go2.0ぐらいでさらにユーザーが増えるのではとも思っている。
来年もGolangを採用する企業は徐々に増えていくとは思うが、ターニングポイントは2020年以降なんじゃないかな。
これは個人的な予測であり、勿論、外れる可能性もある。とはいえ、使われなくなることはなさそうだし、悪い言語ではないので自分はこのままGoを使って様々なプラットフォームでの開発を続けていこうと思っている。
4.他の次世代プログラム言語への雑感
現状で、次世代言語で書きやすいなと思うのはSwiftだけれど、Winでの実行がしにくく自分は使っていない。けれど、Swiftがもっと幅広い分野で使われるようになれば、こちらが普及する可能性もある。
ちなみに、Rustは、さわれば分かるけれど、文法上かなり文字数や文法的な縛りが多くて、学習するコストが高い。GoやSwiftと比べて修得に時間がかかりそうに思える。(Mozilla系のツールはいつもどこかわずらわしくて、爆発的に伸びない)。
とはいえ、速度はGoよりは上だし、C++の分野ならRustで書いた方が楽かもしれない。個人的には、人材を集めるにはすこし上級者よりになってくるのではと思う。
Nimについてはマルチパラダイム言語で、何でもできそうな感じではある。Javaが今そんな感じになっている。Nimの欠点は、実績と開発体制の貧弱さだと思う。これさえ改良されれば広まるかもしれない。
Juliaについては、今後もPythonがよく使われている統計や機械学習、科学計算の分野でさらなる普及をみると思う。というのは、やはりPythonよりも速度があるという点であり、書きやすさだろうと思う。Pythonの欠点は、速度かなと思う。勿論、Cythonなどを使えば速度があがるけれど、Cythonをつかうと、Pythonだけでなく別途Cython特有なリソースが必要になる。単一の言語で無駄な手間なく速度が担保できる方が楽だと思う。面倒な準備がないといけないのは開発者にとっては好ましいことではない。
ElixirはErlangVM上で動き、型のない言語。型のない言語となると大規模開発するときは注意が必要で、設計がまずいとRubyやPHPで起こるむちゃくちゃな設計のシステムができあがりそう。良さもあるけれど、どこまで広まるのかというと個人的には判別できない。
最近は型をつけるのが改めて一般的になってきている感もするけれど。IDE使うときはやっぱり型がないと補完が効かないから、めんどくさいなと思ったりする。
コメント
コメントを投稿