2023-01-12

@nishio: この10年の間にあったプログラミング言語の仕様変更で大きなものってなんですかねー

  • 厳密に切らない方がいい
    • @nishio: あ、そうか、10年前からあったけど10年間の間に勢力を拡大したケースがあるからあんまり厳しく切らない方がいいのか(TypeScriptの登場が2012年、Rustの登場が2010年だった)

    • @umezawa_takeshi: C++11 ももう10年以上前であることに気づいて眩暈がw https://t.co/rG7WVblUVX

  • 言語仕様の変化に限らなくてもいい
    • 「プログラミング環境の変化」的な投稿もあってそれも面白い

async

  • nishio ES2017 async await

  • 紅茶ポット(ディンブラ) async/await な構文が各種言語に入ってきた

  • @tanakahisateru: PHP に言及してる反応の中にネイティブ Fiber がまだ出てなかったので追加。PHP にかぎらないけど、シングルスレッド実行が普通の言語がのきなみ async キーワードを取り入れていった 10 年って感じはありますね

  • @haxe: … async / await も C# 5.0 で10年以上前ですが、これも他言語に広まりましたね。(もっとも C# の前に F# での実装がありましたが) Async/await - Wikipedia

  • nishio あれ、Python3.5(2015)のasyncの方がES2017のasyncより先なのか、意外

  • OCaml 5.0でランタイムがマルチコアに対応
    • 2022-12-16: OCaml 5.0
    • @wat_aro: OCaml5の Effect handlers は大きいと思う

      • @zehnpaard: 横から説明を試みると、Effect handlerとは

      • ・機能としては例外機構を拡張して例外発生地点から処理を再開できるようにしたようなもの

      • ・使い方としてはAsync/Awaitなどの並行処理、StateやIOなどの状態など多彩

      • ・表現力はモナドに近いがEffectの方が組み合わせやすく周辺コードへの影響も小さい

      • @zehnpaard: ・これらの性質によりOCamlに限らず関数型プログラミング言語理論界隈ではかなり研究されていた

      • ・OCaml 5.0でランタイムがマルチコアに対応したのに合わせて、並行処理的なグリーンスレッドの実装のために追加された

      • ・OCamlでの実装は型システムが未完成なことが知られており、今後の研究が待たれる

      • @zehnpaard: OCamlでのeffect handlerの構文や使い方については公式リファレンスにもあるが、個人的にはocaml effects tutorialが一番勉強になった

脱オブジェクト指向

  • オブジェクトの破壊的更新を避けるプログラミングスタイル

    • @nakayoshix: Java(Java SE 14)とC#(C# 9)の両方にrecord型が入ったこと。

      • データ構造(record)とアルゴリズム(Class)の分離が当然のこととされ、「(旧来の)状態を持ったオブジェクトをメソッドを通じて変化させる」から「イミュータブルなデータを関数を通して変換していく」スタイルへの流れが当たり前となった。

      • @nakayoshix: @nishio OCaml(更に元を辿ればML)由来のF#には最初からrecord型があったのですが、Scalaにはcase classという形で、またPythonにもdataclassという形でrecord型と似たようなデータ型(データ構造)が入ったのは重要な変化だと思います。もちろんF#等の関数型言語には更に高度な代数データ型等もありますけどね。

      • @roshian: C#/JavaのRecordの前にScalaのcase class(とKotlinのdata class)があったような?Pythonにdataclass入ったのが3.7(2018)なのでその流れだとこっちの方か。 / “プログラミングの変化勉強会 - 西尾泰和のScrapbox” https://t.co/89sBjJ4zZI

  • 継承離れ

    • @yoshiori: @nishio 新しく出来た言語には継承っていう概念無くなってるなぁって話、Rust とか

      • @yoshiori: @nishio Go なんかはそもそもクラス無い(構造体使ってモドキは出来るけど)し継承なくなるとクラスの役割はインスタンス変数の保持と関数の名前空間的な役割になるよね的なところからステート持つのは限定的な場所になって殆どは不変のオブジェクトと関数的なアプローチになってきてるよね的な

  • GUI開発がOOPから脱却

    • nishio: Reactのクラスコンポーネントから関数コンポーネントへの移行
      • GUIの部品作りに従来一般的であった「クラスを使うアプローチ」をやめ、状態を持たない「関数」を使うようになった
      • フック (hook) は React 16.8 で追加された新機能です。state などの React の機能を、クラスを書かずに使えるようになります。doc

        • 2019: React 16.8 release
    • shibukawa JSがオブジェクト指向から関数型指向になってきて、データとプログラムを分けるようになって、状態を維持しながら、エディタで編集した結果をブラウザに送り込んで見た目をリアルタイムに変える、みたいなホットモジュールリプレースメントみたいなのが実用に、というのはプログラミング的なパラダイム変化を感じてる

      • Metaにいる一部の部隊がきっかけだろうけど、ウェブフロントエンド経由で関数型好きが増えたのは感じる

    • てふてふ ElmもあるしGUI開発がOOPからFPに移ってきた感じしますね

Reactiveなプログラミングスタイル

  • @ooharak: @nishio ストリームプロセッシングとかReactiveXとかはもっと昔からありましたでしょうか Javaとかだとわりとこの10年ぐらいなのかと

    • @nishio: @ooharak 広い意味で「プログラムの構成の仕方のパターン」と捉えると、面白い出来事の一つではあるように思います!

  • @haxe: @nishio ReactiveXは C# では11年前ですが、他言語に広まったのはここ10年と言っていいですかね。 ReactiveX - Wikipedia

  • taichi ストリーム指向なプログラミングスタイルが組み込み以外でも受け入れられるようになったのも、この10年くらいかねぇ。

    • Rxとか、Nodeのgulpとか、JavaのStreamAPIとかああいうやつ。これに伴って、record型みたいな状態変更できないオブジェクトの必要性がみんなに認識された。

GoのGenerics

やっぱり型ほしい

  • @ajiyoshi: PHP7系(2015年〜)から色んなところに型を書けるようになったとか。

    • 型システム自体はもちろんありふれた機能だけど、PHPのような言語ですら型制約をサポートするようになったというのは潮流のように思う。

    • @ajiyoshi: (特にWeb系で)00年代は「変数ではなく値に型がついている言語」の勃興期だったけど、10年代に入って「やっぱり型ほしいね」ってなってきてる感じはある。

    • @ajiyoshi: 個人的には「goにgenericsがついた」よりも「PHPに型アノテーションがついた」のほうがずっとデカい差分に思える。

    • @nishio: @ajiyoshi やはりJavaScriptに対して「型のあるAltJS」が生まれて普及したことも大きかったのかもしれないですね、ありがとうございます!

  • @methane: @nishio @zetamatta 型ほしい、のところにTypeScriptが必要だと思います。

  • 漸進的型付け
    • shibukawa 漸進的型付けブーム

    • @cubbit2: Ruby,Python,PHPとかの動的な言語が揃いも揃ってType HintingとかGradual Typingとか言い始めたことかなあ

半精度浮動小数点数

  • @cpp_akira: @nishio ごく最近ですが、C++23でfloat16_tとbfloat16_tが入りますね (GCC拡張の_Float16とかはちょっと前からある)。

  • これからほかの言語も対応していくことになるでしょうから、そこそこ影響範囲が大きいものかと思います

    • @nishio: @cpp_akira なるほど、機械学習などの関連で半精度のニーズが増えたということですかね。確かに面白い変化です!ありがとうございます!

型後置記法を人々が受け入れるようになった

@ryushi: @nishio 型を後置するのが主流になった。Javaでさえも var hoge = “aaa”; みたいに宣言できるようになった。

  • @ryushi: @nishio 型を後置してても、人々が読みづらいと感じなくなったので、コンパイラを作りやすくなった。

  • @nishio: @ryushi それは型引数を取るような複雑な型を扱いやすくなった的な意味です?

  • @ryushi: @nishio そうです。複雑な型を推論するようなコンパイラの実装が相対的に簡単になりました。

Language Server Protocol (+ GitHub Copilot)

  • @yoshiori: @nishio 仕様じゃないんだけどプログラミングという行為に対してのLSPとかはだいぶ大きいと思うんだよね。(次の5年では copilot 的なのがくるのかな?)

    • @nishio: @yoshiori IDEの進化は無視できない大きな流れだと思う

  • @shoma: Language Server Protocol (2016)に一票

  • shibukawa Language Serverも10年以内かな

  • 2016 Language Server Protocol - Wikipedia
    • LSP was originally developed for Microsoft Visual Studio Code and is now an open standard. On 2016 June 27, Microsoft announced a collaboration with Red Hat and Codenvy to standardize the protocol’s specification.

  • 2021 GitHub Copilot - Wikipedia
    • しろう GitHub copilotの話って出てたっけ。そもそもプログラミング言語書かなくなったりするかもだよなぁ、って思ったりしてる

パターンマッチ

  • @_ko1: @nishio Python とか Ruby にパターンマッチ入ったとかですかね(アイディアが新しいわけじゃないですが)

  • @joker1007: @nishio RubyだとやっぱりJITコンパイルですかね。後はパターンマッチが導入されたのもモダンな言語機能が取り入れられた感じかな。

  • @imunolion: @nishio 構造的パターンマッチって,ninja pattern matchとかdragon pattern matchの話ですかね?確かにもはや死語になっちゃうくらい普及しましたねえ.

nullの扱い

  • @masaichi: @nishio dartにnull safety, objective-cにnullabilityが入ったことはどうでしょうか

    • @kagilinn: @masaichi @nishio C#も、#nullable enableでnull安全が(警告として、ではありますがC#は特定の種類の警告をエラーに出来るので実質)出来るようになったほか、色んな言語にnullabilityを明示する手段が追加されて来てますね。

  • @Fushihara: C# がnull安全になった。typescriptやkotlinみたいにalt言語でなく本体が対応するのは珍しいと思う

  • shibukawa: Dart が2011 / null safety は一つのブーム?

  • Nullable

パッケージシステム

  • tokoroten.icon言語とパッケージシステムの融和性が昔と比べてかなり上がった気がする
    • npmとかpypiのようなライブラリ管理システムが言語との結びつきが強くなった
  • taichi この10年で依存ライブラリの管理が標準で提供されるようになった感じあるかなぁ。

フォーマッタ

  • taichi この10年でLintやフォーマッタも言語標準で提供されるようになったと思う。

  • ymotongpoo gofmtが与えたインパクトはあると思う

ビジュアル言語

  • shibukawa Kismet, BluePrintでビジュアル言語は使う人はだいぶ増えた印象(ゲーム開発では)

    • Unity も公式で出すとかなんとかいってた記憶あるけどどうなったんだろ?

    • まあ、Godot は4でビジュアル言語なくなるし、そこまでメジャーではないか

  • tokoroten UEのblueprintとかの、ビジュアルパイプラインプログラミングかなー / houdiniとか

対話的実行の共有

tokoroten jupyterとかr studioとかの、対話型コンソールって2013年にはメジャーだっけ?もうちょっと後ろだったイメージがある

  • 従来の対話型じゃなくて、それをWebに持ってきたうえで、ちゃんとデータが残せるようにしたやつ

    • Project Jupyterは、2014年にFernandoPérezによってIPythonから分離された、数十の言語の実行環境をサポートしている。

  • swallow シェアはそれほど大きくないですがMathematica使ったWolframのノートブックは昔(91年リリースの2.0)からあったようです

    • PythonがFortranとかMathematicaがカバーしていた分野に広まるにつれて、各種環境が整備されていったってことですかね

  • 2015年、 GitHubとJupyterプロジェクトは、GitHubプラットフォームでのJupyterノートブックファイル形式(.ipynbファイル)のネイティブレンダリングを発表

    • In 2015, about 200,000 Jupyter notebooks were available on GitHub. By 2018, about 2.5 million were available. In January 2021, nearly 10 million were available, including notebooks about the first observation of gravitational waves and about the 2019 discovery of a supermassive black hole.

    • Major cloud computing providers have adopted the Jupyter Notebook or derivative tools as a frontend interface for cloud users. Examples include Amazon SageMaker Notebooks, Google’s Colaboratory, and Microsoft’s Azure Notebook.

Javaのラムダ式、型推論

  • @kis: @nishio Javaだとラムダ式、型推論ですなー

  • Java8が2013なので。

    • @kis: やはり、世の中的なインパクトも考えると2013年にJavaにラムダ式が入ったことかなー。

    • Java使ってない人にもビックリ感があったと思う。

    • 余談
      • @nishio: @kis ところで最近きしださんは総理になってオブジェクト指向を撤廃しようとしてるように思ってましたが、何かきっかけになる出来事とかありました?

      • @kis: @nishio きっかけは高齢化問題と、Software Designにオブジェクト指向記事を書いてほしいといわれたときに考えてみるとオブジェクト指向むしろ有害だなってなったやつですね。オブジェクト指向を学びなおそうという特集の一部なのに、「オブジェクト指向いらんわ」って書こうとしたw

      • https://t.co/0YcyqC5P52

ymotongpoo Playgroundが一般的になった気がする https://go.dev/play/ https://play.rust-lang.org/ https://play.kotlinlang.org/

shibukawa ネイティブなデスクトップGUIというものが下火になってきて、Electronとかブラウザをラップしたアプリが増えてきて・・・というのもここ10年ぐらい?

tokoroten google docsのGASとかってどうだっけ? nishio プログラムを書く人の範囲がだいぶ広がったよね tokoroten https://ja.m.wikipedia.org/wiki/Google_Apps_Script 結構昔だったけど、火が付き始めたのはここ数年という印象 chatの普及で、投稿先ができたことが大きいんだろうなー リモートワークでチャットの普及でGASに火がついたという印象

  • shibukawa GASはVBAの流れと思えばそこまで世界が変わったわけではないかもしれない

kumagi 10年前の今頃はスマホがようやく出回り出した頃で、i-mode向けのゲームがまだ出せば出すほど売れるみたいなフェーズだった

  • = Java
  • 今となってはObjCとかKotlinとか個別に書くのが嫌だからフレームワークで一つ作ったら全プラットフォーム行けるとかwebに寄せるからwebviewだけあれば良いとかそういう世界

  • 2007 iPhone - Wikipedia
  • 2013 iPhone 5S

golden_lucky この10年で宣言的な書き方がいろんな言語で一般化した気がする

@haxe: @nishio C++ なら constexpr やラムダ式ですかねぇ。コンパイル時計算が黒魔術から一般化された感じ。

@mike_neck: 仕様ではないけど、Javaはリリースサイクルが半年になったのが大きい

@haxe: @nishio C# は C# 5.0 → C# 11 で大小様々、大量に変更されました。余談でコンパイラも刷新されたし、ランタイムもマルチプラットフォーム化して、どちらもOSS化してます。よくまぁこんなに力を注ぎましたね、って感じ。 C# の歴史 - C# ガイド | Microsoft Learn

@takiuchi: トランスパイラが普及した事かなぁ

@tako_and_kitune: postgresだとマテリアルビューの機能搭載とか?

@aokomoriuta: 領域特化言語(DSL)全盛期になったこと。特にTVMなど。ちょっと仕様変更とは違うかもですけど

@yutkat: @nishio 言語仕様ではないですが、個人的にはLSP、Linter、フォーマッター、ビルドランナー等々開発ツールチェーンがだいたいの言語で出揃って、開発体験が非常に向上したところが一番大きいですね〜 コンテナ技術でテストもやりやすくなったし

kumagi ブラウザでのプログラミング環境はChromeやv8のおかげでハチャメチャに良くなった shibukawa IE8までは開発者ツールがなくて、firebugを入れてデバッグみたいな昔話なら任せろ shibukawa まあ、最初に組み込み開発者ツール入れてくれて世界を変えてくれたのはSafari ではある 最近のホットリロードとかよくやるわー、と思う

kumagi プログラミングでのここ10年でいうとLLVMの台頭なんかもここ10年ではなかろうか

  • gccがあった頃から質的な何かが変わったわけではないけど、ライセンスが緩くてコードが比較的モダンなLLVMはGAFAが専門部署作ってまで寄ってたかって改善したので世界規模では相当な電力削減になった

tokoroten WebAssembly

tokoroten ここ10年でいうと、量子コンピュータ(量子アニーラ)がレンタル可能になった

  • AWSのbraketとかで、量子コンピュータが時間貸しできるようになった

  • https://aws.amazon.com/jp/braket/

  • 従来の制約問題の式を書くとそれをイジングモデルに変換してくれるPyQUBOとかが出てきた

    • image

tokoroten Cerebrasみたいな、キチガイマシンにちょっと期待している https://cn.teldevice.co.jp/product/cerebras_cs-2/ https://www.cerebras.net/

tokoroten SSDが一般化して、m.2SSDも一般化して、IO速度は上がった気がするけど、これによって何か変化があったかと考えたけど、プログラミングパラダイムは変わってない気はするなー

  • nishio IOの高速化によって緩やかに「RDBMSできちんと設計すること」の必要性が下がってNoSQLブームになったのではないかな(雑)

    • 「ランダムアクセスはシーケンシャルアクセスよりめっちゃ遅い」はハードウェアの物理構造由来の制約だったわけだし

  • takabow IOの高速化によって緩やかに「RDBMSでも大規模データなんとかなる」になって、NoSQL ブームが終わって RDBMS が復興した / どちらかというとこういうイメージ

    • 2010年ころってNoSQLブームの頭(実際には 2008 年くらいか)だと思うんですが、そのころって特に海外とかグローバルなビジネスやってるところって、RDBMS だと性能足りなくて、よりシャーディンぐ運用の負担がすくないくて、スケーラビリティによせた NoSQL を「仕方なく」使い始めたとかだったと思うんですよ

      • スケーラビリティが欲しくて、他を諦めてでも使っていた、それが NoSQL

    • 2010-12 年ぐらいに、SSD だの Fusion IO だの足回りの強化がはいって金はかかるけど、それらに換装すれば RDBMS でも性能なんとかなるみたいな話が出てきた

  • tokoroten それまでは垂直分散とか水平分散とかしていた / 垂直分散とか水平分散とかすると、ロックが取れなかったり、トランザクションが使えなかったりするので、だったらNoSQLでええやんってなる

  • nishio あーなるほど。もともとRDBMSはトランザクションがウリだったわけだが、インターネットによるアクセス増加で1台のサーバでRDBMSが提供できる能力を超えてしまい、複数台で分散するようになったのでトランザクションのメリットが弱まっていって「じゃあ捨ててしまってNoSQLにしようぜ」となったが、IO性能が上がったので盛り返してきたということか

  • takabow TBのメモリつんで、TBのディスク積んだ1物理マシンのRDBMSってのが現実的に使えるようになってきて、シャーディングの苦労ないし、これでええやん みたいになってる

    • Aurora の 96 core マシンでええやん みたいなね

ネットワークの太さ

  • kumagi Hadoopがもてはやされてた頃はネットワークは長らく1GbEが主流でHDDのシーケンシャルリードぐらいの速度しか出なかったのでストレージとコンピューティングをいかに近くでやってネットワークに流すデータを減らすかってのがまさにMapReduceだった

  • 進化する Jupiter: Google データセンターのネットワークの変遷を振り返って | Google Cloud 公式ブログ
  • image
  • 25GbEみたいなそこらを出回らない独自チップを経由して100GbEのNIC何枚指します?みたいな世界になってて

  • tokoroten コンピューティングサービスは変わったけど、「プログラミング言語」にまでその影響は出ている?

  • kumagi MapReduceがSQLになったぐらいの違いはあるけど言語の話は確かに少しズレてるかも

shibukawa あとは、タイムトラベルデバッグ

kumagi ML系のプログラミングパラダイム的な変化だと、スパコン的な激オモ計算はFORTRUNで職人が書くんじゃなくてnumpy経由で強いBLASを使えみたいな方向に倒れたよね

@mattn_jp: Vim が Vim script の10倍速い処理系 vim9script を実装しました。(誰も興味ない悲しい)

@nakayoshix: async/awaitとrecord型でF#の話題が連続して出ているのは注目すべき重要なポイントですね。 async構文こそC#から始まってJavaScriptやPythonその他の言語まで今や当たり前のように入ってますが、F#のそれはより一般化されたcomputation式という枠組みの上で作られている(async式)のが最大の特徴です。

@igrep: @nishio マイナーですし割と最近の修正なのでどれほど普及したかも不確かですが、GHCのRecordDotSyntax https://t.co/MlPQxlouZT とかLinearTypes https://t.co/6k32GGUul5 は界隈では結構大きな変更ですねぇ。

  • @nishio: @igrep 前者は他の言語のユーザには「できなかったの?」と言われそうですが、後者はすごいですね。こっちも先を進みすぎてて理解されにくそう…

nishio

  • ES2015 アロー関数(に伴うthisの扱いの変化)
  • Python, 細かい話もあるけど
    • asyncio
    • 行列乗算演算子
      • tokoroten.icon - 言語を使いやすくする、発展させるという観点だと、演算子のオーバーライド - numpyの行列演算のオーバーライドによる利便性の向上
    • セイウチ演算子
      • @usopyon: @nishio Pythonのセイウチ演算子は、言語仕様としてはそれほどでもないかもですが、この議論のため開発体制まで変わって、割と大きな出来事だった気がします。https://t.co/YJiCwzLcSM

    • async generator
    • 構造的パターンマッチ
    • とかかな?

> _3F_2 VSCode が現れた

> hajimehoshi 2013 年って Go 1.1 とかの時代か

> tokibito TypeScriptも2013年ぐらい
- > hajimehoshi TypeScript って 2012 年にはありませんでしたっけ / ギリギリあった


> tokibito Pythonがすごい伸びてるけど
- 2013 [C言語、人気1位へ - 4月プログラミング言語人気 | TECH+(テックプラス)](https://news.mynavi.jp/techplus/article/20130412-a162/)
- > ![image](https://gyazo.com/e28b630f956ef9a9f2d0fc39a1ff59a5/thumb/1000)
- 2023 [TIOBEプログラミング言語ランキング、2022年はC++が最も躍進 | TECH+(テックプラス)](https://news.mynavi.jp/techplus/article/20230110-2558740/)
- > ![image](https://gyazo.com/dca9bdb97590a85752bb37330b7c733c/thumb/1000)


> shibukawa 2013だと、jsエンジン開発競争でスクリプト言語の中でのパフォーマンスが上がりまくってた時期かな
- > 一方でflash が消え、silverlight も消え、java applet も消えて、、、
- > ガラケーも消えて

> tokibito Dockerがでてきたのも10年前ぐらい?
- > shibukawa まさに2013 [https://docker-docs.netlify.app/release-notes/docker-engine/](https://docker-docs.netlify.app/release-notes/docker-engine/)

>  hajimehoshi Wasm が出てきたのはいつですっけ
- > shibukawa wasmの前身のasm.JSが2013らしい

>  tokibito 言語的なのだと、Rustが使われた事例はかなり増えたように思います
- > Rustは結構歴史あるか

> shibukawa あとは、Spectre/Meltdownは、言語ランタイムへ変更が加えられたり

> tokibito 10年前は言語機能どうのこうので結構盛り上がってたけど、最近はコード生成だとかツール周りのほうが盛り上がってる

> shibukawa JavaScript の仕様策定がコミュニティ管轄になったのは大きい流れかなあ

> tokibito 組み込み機器向けの開発環境はリッチになったかも。MicroPythonとか

> hajimehoshi foreach でキャプチャする変数が同じ参照使い回すのではなくループごとに違う変数になったという地味な変化が C# であり、 Go もそれに追従しつつある [https://github.com/golang/go/discussions/56010](https://github.com/golang/go/discussions/56010)

> 盆栽職人 インフラまでコードで書くことがかなり定着したのはここ10年ですかね
- > tokoroten IaC~
- [Infrastructure as Code - Wikipedia](https://ja.wikipedia.org/wiki/Infrastructure_as_Code)
    - 2006 [Amazon Elastic Compute Cloud - Wikipedia](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud)

> tokoroten 機械学習の民主化かなー
> scikit-learnがAPIをそろえることで、学習コストを格段に下げた
> それまではそれぞれのアルゴリズムごとに独自のAPIで学習コストが高すぎた

<img src='https://scrapbox.io/api/pages/nishio/tokoroten/icon' alt='tokoroten.icon' height="19.5"/>
- aws lambdaのようなサーバレス
    - 特定のプログラムで計算をしたいのであって、サーバを持ちたいわけではない。
    - サーバ内にステートやファイルをもたず、通信と計算だけを使うというユースケースがなんだかんだで多かった
> shibukawa Google App Engineとか、Lambdaとか、Cloud Runとか、サーバーレスとかFaaSはだいぶ普及したなって思う。まあプログラミングのマインドセットがCGI同等と言えばそうなんだけど


<img src='https://scrapbox.io/api/pages/nishio/tokoroten/icon' alt='tokoroten.icon' height="19.5"/>
- スマートコントラクトを言語だと捉えるかどうか
- Raspberry piの初代がでたのが2013年
    - 個人的には「PC」と呼ばれるものの、上と下のダイバーシティが上がったという認識はある。
- GPGPUの一般化。特にtensorflowとnvidiaのセット
- クラウドとIaCによるリリースコストの削減→DevOps

[https://b.hatena.ne.jp/entry/s/scrapbox.io/nishio/この10年のプログラミング言語の変化](https://b.hatena.ne.jp/entry/s/scrapbox.io/nishio/この10年のプログラミング言語の変化)
- > otoan52 あんまり出てなさそうなのだと、RustみたいなGCレスのモダン言語、カラムナー型DBの実用化、WindowsにLinuxが入った、プライバシー問題周り、scratchみたいなビジュアルプログラミングが教育に導入
- > n314 型チェックと関数化はゆるく関連ありそうだけどどうなんだろう。オブジェクトの状態を変更していく処理が細かい関数に分かれて型がないと更に辛くなったとか。
- > roshi Rustの所有権やライフタイムあたりは今後他の言語でも採用事例出てきそう(もう少し簡単な方式になって欲しいけど)。あとメジャーにはならなそう(失礼)だけど個人的にNixが気になってる。
- > xlc ノンブロッキングIOあってこそのasync/awaitなので、私的にはノンブロッキングIOが一番大きな変化かな。私は厳密性はどうでもいいので型はない方が書きやすい。
- > topiyama 組み込み屋としてはRustの登場とgcc -O3の普及かな。/何でもかんでもasync Taskの関数で書いてるC#コード見たときにGUIプログラミングもテキトーに作れるようになったんだなと感じる
- > nunulk 個人的に注目してたのは脱オブジェクト指向(というか脱単一パラダイム)。Clojure の protocol、Rust の trait みたいなのが現状は良いとされてるのかな
- > oinume 面白い。あとはweb界隈だとスキーマ駆動開発が主流になったことかなぁ。
- > havanap データフロー志向のなにがしはある気がする(stream, immutable, visual, tensor, ETL)