Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゴーファーくんと辿るプログラミング言語の歴史/history-of-programming-l...

iwasiman
April 24, 2023

 ゴーファーくんと辿るプログラミング言語の歴史/history-of-programming-languages-with-gopher

若手向けに開催した勉強会の資料です。
一般的なアプリケーション開発をターゲットに、主要言語と歴史を解説しています。

iwasiman

April 24, 2023
Tweet

More Decks by iwasiman

Other Decks in Programming

Transcript

  1. 2 この技術講習会(先端技術勉強会)について ゆるくやっていくので、気軽にいきましょう! ⚫ 新年度開始、メンバー15人に増加。グループを超えて部門の活動となりつつ あるので今まで通り続けていきます!! ⚫ 頻度は不定、基本1H+α、だいたい夕方にやっています。 ⚫ とりあえず始めてみて様子を見ながら続けます。

    ⚫ 説明中も適宜ブレイク(間)を挟むので、リアクションはその都度音声でも チャットでもOKです! ⚫ テーマはフリー、参加者から聞いたりして決めていきます。 ⚫ 次回テーマは [いよいよPythonかも?] ,[フロントエンドを題材に前後編で 資料作成中] 。その後のテーマ候補も募集中です! ⚫ 皆さんが講師をしてくれるのも大歓迎です! 第1回 ゴーファーくんと学ぶGo言語の世界 [再開催中] 第2回 AWSの基本情報の歩き方 第3回 ゴーファーくんと学ぶAWSサーバーレスの世界 第4回 ゴーファーくんと辿るプログラミング言語の歴史 ★今日はここ★ 第5回 ゴーファーくんたちと学ぶRust言語の世界 [再開催中] 第6回 ゴーファーくんと探るMendixの有用性 第X回 某先生がPythonの機械学習コンペ(Kaggle)の話をいつか語ってくれるのでは…? 第Y回 ゴーファーくんたちと辿るJavaScriptの潮流 (前編、資料作成中!) 第Y+1回 ゴーファーくんたちと辿るフロントエンドFWの潮流(仮) (テーマが大きいので後編)
  2. 1. 20世紀までの進化の系譜 2. プログラミング言語の分類 3. まず、主要言語の分布イメージ (2枚) 4. コンパイル型言語の潮流 (3枚)

    5. コンパイル型言語の新たな流れ 6. スマートフォン時代の到来 7. インタプリタ型言語の発展 (3枚) 8. テック系ジャイアント企業との関連 9. 近年のトレンドいろいろ 10.おまけ:プログラマーの通り名 11.おまけ:各言語の実行速度差イメージ 12.本日のまとめ ゴーファーくんと辿る プログラミング言語の歴史 ⚫ SQL、HTML、CSS、Shell系の話は除きます ⚫ 組み込み系やデータ処理やデータサイエンス系用途を除いた、一般的なアプリケーション開発で使う言語を扱っています 祝・再開催 Update版 2023/4/24
  3. 5 1. 20世紀までの進化の系譜 ◆1940年代のPlankalkül(プラン カルキュール)が最初とも言われる が、設計のみ。 ◆1954年のFortlan (フォートラ ン)がほぼ世界最初の言語として 知られる。

    ◆1959年のCOBOL(コボル)が 事務処理言語として普及、金融系 で今も稼働。 ◆この2つが長く生き残るが、滅んだ (?)言語も他の言語に様々な影響 を与えている。 ◆1963年のBASIC(ベーシック)が ビギナー向け、80年代のパーソナ ルコンピュータ普及に貢献。 Microsoft誕生のきっかけにも。 ◆1971年のC言語がUNIXや WindowsなどOSの主要開発言 語。今も現役。 ◆1983年のC++(シープラスプラ ス、シープラプラ)が、オブジェクト 指向を取り入れたCの上位互換。 https://www.itmedia.co.jp/enterprise/articles/0703/26/news021.html 記事の図を拝借 https://xtech.nikkei.com/it/article/COLUMN/20060825/246464/?ST=ittrend 現在メジャーな 高水準言語 特定分野でまだ 現役な言語 関数型言語 の系譜 コンパイラ型 1947年 ハーバード大 「マークII」での 世界初のバグ !! インタプリタ型 インタプリタ型 関数型言語: 数学的な関数を主軸にした言語。参照透過性、高階関数etc。 結構難しい。今日のモダンな言語群にその考え方が受け継がれている。 凡 例
  4. 6 2. プログラミング言語の分類 ◆①コンパイル型/インタプリタ型 ◆コンパイル型:コンパイラ型とも。テキストのコードを実行形式にコンパイルして動 作。実行速度が早い。1980年代までの多くの言語が該当。 ◆インタプリタ型:1行ごとに実行。実行速度より開発効率、柔軟性を重視。動的言 語、軽量級言語、スクリプト系言語などとも呼ばれる。 ◆②型の扱い ◆型なし:データがその種別の情報を持たない。(機械語のみ)

    ◆静的な型:コンパイル時にチェック。C, C++, Java, C#, Kotlin, Go, Rustなど ◆動的な型:型が実行時に決まる。手軽に書け柔軟性が高い。Python, Ruby, PHP, JS ◆③ベースになる考え方、計算モデル ◆手続き型:コンピュータの実行手順そのままのベーシックな計算モデル。計算は 「逐次実行」「条件判断」「繰り返し」から構成する。 ◆オブジェクト指向型:クラスとメソッドを持ったオブジェクト指向をベースに。多く の言語が備えている。 ◆関数型:同じ入力に対しては常に同じ出力を返す数学的な「関数」をベース。 ◆論理型:述語論理をベースにしたモデル。メジャーな言語では使われていない。 3つの分類方法 近年は進化し 混合している(後述) 「マルチパラダイム」といって、ほとんどの言語は複数の考え方を備 えている。オブジェクト指向型+関数型が多い。 パラダイム: ものの見方、考え方の枠組み
  5. 7 3. まず、主要言語の分布イメージ① Webアプリ フロントエンド (クライアントサイド) バックエンド(サーバーサイド, バッチ系も大まかに含む) コンパイル型言語(静的) インタープリタ型言語(動的,LL,軽量級,スクリプト系)

    2014 1996 2002 登場年 (基本はv1) 2012 1995 1995 1994 2015 2019 1995 オレンジが2000年代後半以降の、 一般に”モダン”と分類される言語 ★定番言語でも新Verならモダンと 呼ぶ場合もアリ WebAssembly(WASM,ワズム) という技術で、各言語の実行ファ イルでJS処理を部分的に受け 持ったり。C/C++,Rustが主。 今後の発展に注目… 2020 2009 JavaとC#が同世代 右の3つを「JVM系言語」 2000年代後半頃から手軽さや 開発速度、アジャイルとの親和性で 若い企業で採用多し。 実行速度ではコンパイル型に劣る 2016 2003 モダン モダン (ES6以降) モダン モダン モダン 2014 ちょっとマイナーな エリクサー言語 1987 Node.js, Denoは 言語でなくJS実行環境 JavaScript、型で強化した TypeScriptがフロントエンド の華。ブラウザの上で動く言語 は現状これだけ。しばらくは独 占状態が続くハズ…? この勉強会で今後 フィーチャー予定です
  6. 8 3. 主要言語の分布イメージ② 低レイヤー、低水準、システムプログラミング 1972 1983 iOS: Objective-C→Swift Android: Java→Kotlin

    2012 2015 モバイル、 スマートデバイス コンパイル型言語(静的) 2014 2016 2018 2013 2015 モバイルバックエンド ネイティブアプリ開発 クロスプラットフォーム開発 Webアプリのバックエンド と同じ言語群 Flutter: AltJSのDart言語を使用 React Native: JavaScript .NET MAUI: C# ←★出たばかり! 2022 クラウドプラットフォーム デプロイしやすさが強み 基盤技術でも使われたり 長らくC,C++の独壇場だったが、 置き換えられると期待大 モダン モダン モダン モダン モダン
  7. 9 2003- 2001- サポート終了 (2014) 4-1. コンパイル型言語の潮流:Java 1991 2000 2010

    2020 Javaの公式 マスコット、Duke ◆Java (ジャバ、コーヒーのJavaは「ジャワ」) ◆由来は開発チームが通ったコーヒーショップのメニューという説が最有力。 ◆クラスベースのオブジェクト指向、マルチスレッド、ガベージコレクション等手堅い特徴。 Sun Microsystems製。 ◆90年代後半のインターネット黎明期、オブジェクト指向のブームと重なり大きく普及。 ◆Strutsで標準を定めた開発と相性がよく、ゼロ年代のWeb開発、特に大規模 エンタープライズ開発をC#と共に長らく強力に支える。 ◆Oracleによる買収の混乱の頃から徐々に衰退の兆しを見せ、2010年代後期に 遂に首位をJavaScript、Pythonに明け渡すことに… ◆古いバージョンで固定されたレガシーアプリ保守や大企業の下請けで苦労、 転職前に問題プロジェクトで苦労…などとマイナス面と関連して語られることも多く、 現在ではネガティブ、レガシーなイメージも多めに。 JDK1.3 Java SE6 Java SE7 Java SE10 Java 20 2023/3 2018 2011 2006 Java SE8 2014 2000 5年もの長い停滞期間… OracleがSun買収!! Servlet/JSP Java Applet→終了 ライセンス有料化の噂などでイメージダウン… 10以降は半年ごとにリリース。有償のサポート延長がある 2004 流行らず Springの後継たりえる新たなWebフレームワークが登場せず。 この間、Ruby,PHPの台頭、Pythonの急上昇、JavaScript復権 とフロントエンドの発展、クラウド[2006-]、コンテナ[2014-]、 GoやRustのような新しい言語登場…など変化が続き出遅れる C/C++ 古めの名著は Javaが多い Groovy→流行らず AWS認定試験でも レガシー扱い… 2022/11 v3
  8. 10 4-2. 続き JVM系言語 2003 2000 2010 2020 ◆Scala (スカラ)

    ◆オブジェクト指向言語と関数型言語の特徴を統合した言語。Scalable languageより。 ◆Java仮想マシン(JVM)上で動くのでJavaの資産も使える。 ◆2010年代前半にスタートアップ企業などで採用され一時は話題になったが、 現在は言語全体の中ではシェアは低め… ◆Kotlin (コトリン) ◆”Better Java”を合言葉にnull安全保証を始め様々な機能を追加した言語。 ◆こちらもJVM上で動くのでJavaと完全同居可能。コードは.ktだがビルドすると.jarになる。 ◆由来はバルト海のコトリン島。フィンランド語の「やかん」でロゴもやかん。IDEのIntelliJ IDEAで 知られるチェコ本社のJetBrains社製、ロシアのサンクトペテルブルグ生まれ。 ◆2017よりAndroidネイティブアプリ開発サポート開始、2019にJavaに代わり正式推奨言語に。 ◆バックエンドでもJava製システムのリプレイスなどに先進企業で使われている。 V3.2.2 2023 V3.0 2021 関数型言語の 系譜 2011 V1.0 2023 V1.8.20 2016 インタプリタ型 言語も影響 https://www.scala-lang.org/ https://kotlinlang.org/ 2021年登場のKotlinの マスコット 名前がまだないとのこと サポート!! 2021に実はロゴ更新 最新のコーディング本 言語はKotlin! (2023) 採用!!
  9. 11 C/C++ 実行環境の方 名前がよく変わる 2000 2010 2020 4-3. 続き:MS系 2000

    ◆C# (シーシャープ) ◆Javaに似すぎていたVisual J++という言語が黒歴史で消えた後に登場。 ◆由来はC++をさらにインクリメント、++を足して4つで#という説が有力。 ◆Microsoft謹製、開発のIDEはお馴染みVisual Studioを使う。Javaと並んで2000年代の サーバーサイド開発を支えた。MS系技術の中核。 ◆型推論を始めJavaよりも改良が速く、現在も精力的に進化が続いている。 ◆各技術を用いたデスクトップアプリ、(今なら)ASP.NET Core MVCを用いたWebアプリ、 ゲームエンジンのUnityを用いたゲーム開発、.NET MAUIなど、実は適用分野が幅広い。 ◆言語の選択肢が多いためか、Web開発でのシェアは少なめ。 ユーザーがビジネス寄りだからか、ネット上の情報が意外に少ない。 ◆なおVisual Basic .NET(VB.NET)も一応続いているが、C#が完全上位互換。 ◆関連技術の流行り廃りが速く、名前の変遷がややこしい… 2011年の名著! 後半のサンプル コードが実はC# V1.0 2002 V5.0 2012 V11.0 2022/11 .NET Framework 1.0 2002 .NET Framework 4.6 2015 .NET Core 1.0 2016 .NET Core 3.1 .NET 5 .NET 7 2019 2020 VBも この頃 Unityの公式 マスコット、 ユニティちゃん 2022/11 2009 2016 悪名高い ASP.NET Web Forms 2002?-
  10. 12 https://rustacean.net/ https://www.rust-lang.org/ja/ 2000 2010 2020 2022 5. コンパイル型言語の新たな流れ ◆Go

    (ゴー) ◆Javaを超える十分な実行速度、クラウドやコンテナとの親和性、低レイヤー系など、 隙間を埋めた独自の立ち位置。マスコットのゆるいゴーファーくんが目印。 ◆Rust (ラスト) ◆”Better C”だったGoよりさらに高速でC/C++に完全に並び、置き換えられるのではと 期待。Mozilla製。Stack Overflowの愛される言語 2016年から7年連続1位に輝く!! ◆ガベージコレクションなし、様々な機能でメモリ安全、型安全を確保。 ◆由来は”錆び”のRust等。メンバーに自転車愛好家が多く自転車のチェーンがロゴに。 ◆非公式マスコットがカニさんの「フェリス(Ferris)」。鉄に関連することを意味する 形容詞ferrousより。 ◆次期Android OS, Windows, Linux, ビルドツール系などで次々採用... ◆日本での事例はまだ少なめだが本は24冊、機運が高まっている。 先進的なエンジニアに注目。学習曲線が急(=むずい)と言われる… 2009 V1.0 V1.20.3 2012 2023/4 Python(の開発速度) モダンな言語の長所 2010 V1.0 2015 V1.69.0 2023/4 C/C++、 関数型言語の系譜 Hello! !! この勉強会の第1回、第5回 でフィーチャーしてます!!
  11. 13 2007/1 iPhone登場 2010頃~ スマホブーム始まる 2000 2010 2020 6. スマートフォン時代の到来

    2008 関数型言語の Smalltalk, C言語 ◆Objective-C (オブジェクティブ・シー, ObjC) ◆実は歴史が古く、OS用に作られた言語。けっこうマイナー。 ◆2007年のiPhone登場の衝撃の頃、iPhoneネイティブアプリの開発言語として発表。 ◆しかし現在では後続のSwiftにほぼ置き換わっている。両方ともApple印。 ◆Swift (スウィフト) ◆Objective-Cの資産も使えるようにしつつ、様々な言語のアイデアを受けて作られた。 ◆Objective-Cよりだいぶ習得しやすいと言われ、アプリ開発者に歓迎された。 ◆由来はSwift=アマツバメ (時速169kmの鳥類最速種)。高速な動作や開発のイメージ。 ◆LinuxやWindowsでも動くが、ほぼMacやiOSネイティブアプリ開発用。 2014 V5.8 2023/3 本物の アマツバメ 他の様々な 言語 Androidでの開発は、前述のように 2016年からKotlinサポート、 2019年に正式推奨に モダンな言語のバージョン1登場: Kotlinが2016で最若手 Rustが2015, Swiftが2014
  12. 14 7-1. インタプリタ型言語の発展 1987 1990 2000 2010 2020 ◆Perl (パール)

    ◆新約聖書の”高価な真珠”(Pearl)にちなんだ命名。 ◆強力な正規表現を持ち、90年代終わり~ゼロ年代のWebの掲示板などでも活躍。 サーバーサイドの後続の言語に影響を与えつつ、その役目を(ほぼ)終えた… ◆Ruby (ルビー) ◆メジャーな言語の中で唯一日本発、親はまつもとゆきひろ(Matz)さん。 ◆Pearlが6月の誕生石で、次の7月の誕生石から取ったと言われる。 ◆純粋オブジェクト指向言語、プログラミングを楽しめることを設計思想に。 ◆アジャイル界隈やベンチャー、インターネット系企業などから根強い支持。 エンジニア界隈に愛好者や著名人が多い。初級~上級まで本やネット情報も豊富。 ◆しかし近年はPythonその他に押されて世界的なシェアでは下落。型サポートや高速化、 WASM対応など進化中。今後の動向が注目されている。 V5.0 1994 V5.36 2022 1995 著名FW登場! Ruby on Rails 2004 V2.0.0 2013 V3.0.0 2021 V3.2.2 2023/3 Pythonも 個人ホーム ページ全盛期 ブログ、SNS、 2chなど ゼロ年代後半~2010年代後半まで、Webの バックエンド軽量言語ではRubyとPHPが有名 講演多数のMatzさん 1965生まれ、島根県 松江市名誉市民。 今もITエンジニア界の カリスマ的存在 2015頃まではRuby非公式 マスコット「るびくる」がいた。 ほか、ラブライブ!の黒澤ル ビィがネタに使われたり Perlは徐々に他の言語に 置き換わり姿を消す… 今でも雑誌連載や コミュニティはあったり 2011 後から作られたロゴ 恐竜のベロキラプトル 有名な チェリー本 コンパイル型サブセット言語 「スピネル」のアイデアも
  13. 15 1991 7-2. インタプリタ型言語の発展 1995 2000 2010 2020 ◆PHP (ピーエイチピー)

    ◆動的Webページ作成が最初の用途だった所から発展。 ◆PHP: Hypertext Preprocessor より。マスコットはelePHPant。 PHPという文字を崩すと象っぽいかららしい。 ◆Web制作や初級者層にもユーザーが多い。求人、本、ネットの情報も豊富。 形を変え進化しながらしぶとく生き残っている。Web用FWはLaravelが有名。 ◆AWS Lambdaの対応言語になかったり、クラウドでは若干仲間外れ感あり… ◆Python (パイソン) ◆実は歴史が古い。”Battery Included”な豊富なライブラリ、Glue(糊)言語。 ◆python=ニシキヘビ。由来はイギリスの番組『モンティ・パイソン』より。 ◆TIOBE Indexで2020年のプログラミング言語ランキング遂に1位、首位継続中! ◆データサイエンス、システム管理、教育。ここ1-2年でWebアプリの本も出揃ってきた。 V5.0 クラス導入 2004 V7.0 型導入 2015 V8.0 高速化等 2020 V8.2.4 2023/3 V2.0 2000 V3.0 下位互換なし 2023/2 V3.11.2 2008 AI・機械学習 ブームで大浮上!! 2016?前後 V3.5 型ヒント 2015 青いエレファント Pythonエンジニ ア育成推進協会 のマスコット
  14. 16 7-3. インタプリタ型言語の発展 1995 2000 2010 2015 2020 ◆JavaScript (ジャバスクリプト)

    ◆最初の名称はLiveScriptだったが、Java人気にあやかり名前を変えた。 ◆ゼロ年代は忌み嫌われたいらない子扱いだったが復権、バックエンドもこなす主要言語 に返り咲いた。 ◆ここまで変化の激しい言語は珍しく、歴史が面白い。ES2015(ES6)以降、仕様が 毎年進化し続けている。標準規格名がECMAScript(エクマスクリプト)=略してES ◆TypeScript (タイプスクリプト) ◆AltJS言語:TSでコードを書き「トランスコンパイル」するとJSコードに変換されて動作。充実した型 サポートと型推論でVSCode上で実装支援。JSの完全上位互換。徐々に浸透しフロントエンドの主役に。 ◆Microsoft謹製。言語設計者が同じ人で実は文法がC#と似ている。21世紀の有力モダン言語のひとつ。 ◆他のAltJS言語:Dart (ダート) JavaScript置き換えを狙ったが叶わず、しかしiOS/Android両用クロスプ ラットフォーム開発FWのFlutter(フラッター)専用言語として生まれ変わった。 公式ロゴのフォントは Windows10標準の ”Segoe UI” 第一次 ブラウザ戦争 IEが勝つ ECMAScript 策定するも 混乱期 Google Maps,Ajax フロントエンド元年 復権開始!! ES2020 V1.0 V5.0.3 ES2021 ES2022 Angular ES2015(ES6) 2011 2012 2014 2000 2005 2009 2023/3 V2.0 2016 2018 V3.0 2010年代後半から動きが大きく、 「フロントエンドエンジニア」という 職種が認知されるように 名著。2版は コードがJSに! 2022/6 祝 IE終了!! 2010 この勉強会で今後 フィーチャー予定です
  15. 17 8. テック系ジャイアント企業との関係 ◆G: Google ◆社内の標準言語7つはC, C++, Java, JavaScript, Python,

    Go, TypeScript ◆Go言語を開発 [2009] 、コンテナのKubernetesでも使用 ◆クロスプラットフォーム開発FW Flutter専用のAltJS言語、Dart (ダート) [2011] ◆フロントエンドのJavaScriptフレームワーク、Augular (アンギュラー) [v2は2016] ◆A: Apple ◆MacOS/iOSアプリ用のObjective-C [1984]、後続のSwift [2014] ◆F: Facebook (現meta) ◆PHPを魔改造したHACK(ハック)という言語を内部では使っているらしい [2014] ◆社内の採用言語はPython, C++, HACK。さらにRustがジョイン [2022/8] ◆フロントエンドのJavaScriptフレームワーク、React (リアクト) [2013] ◆A: Amazon (主にAWS) ◆特定の言語を保有していないので概ね中立。 ◆AWS Lambdaも好きな言語で可能。Lambda自体の基盤の仕組みでは Rustも使われている。 ◆M: Microsoft ◆バックエンドで伝統的なC# [2000]、フロントエンドを加速させたTypeScript [2012] ◆90年代末~ゼロ年代の悪のMS帝国のイメージから一新、仕様を積極公開し開発者に 寄り添った姿勢に。 ◆汎用コードエディタのVisual Studio Code [2016]、GitHubを買収 [2018]、 Teamsの台頭 [2020-]、BingにAI搭載[2023]と着実に進めている。 Angular 黙示録の四騎士 Microsoft CEO サティア・ナデラ氏 2014-
  16. 18 9. 近年のトレンドいろいろ ◆①インタプリタ型言語の型サポートや、型推論 ◆Python: 3.5から型ヒントを書けるように ◆PHP: 7.*から型を書けるように ◆Ruby: Ruby3で静的型チェッカー導入

    ◆C#: 3.0から[2008]、Java: ようやく10から[2018]、varで変数宣言すると型推論されるように ◆Go, Rust, Kotlin, Swift, TypeScript: モダン言語は仕様で最初から型推論を組み込み ◆②関数型プログラミングスタイル ◆Scala: 関数型言語の流れを受け継ぐ言語 ◆JavaScript/TypeScriptフレームワークのReactも途中から関数コンポーネントが主流に ◆③Null安全:「Nullは10億ドルに相当する誤りだった」 [2009] ◆Kotlin: 型名の後に?をつけないとnull非許容、ぬるぽを言語仕様で防ぐ ◆TypeScript: 2.0から設定ファイルでstrictNullChecks導入、true推奨 ◆④不変(Immutable): 変数には値を再代入しない方が安全という考え方 ◆モダンJavaScript: 変数宣言はletよりconst推奨。TypeScriptはreadonlyがある ◆Java: 1.8あたりからImmutableなListが登場 Kotlin: val で変更不可に ◆C#: 7.2あたりからreadonly修飾子が強化 ◆Rust: “let x = 5;”が不変、識別子mutをつけて初めて可変に ◆Go, Rust: 未使用の変数もコンパイル時に弾ける ◆⑤オブジェクト指向の見直し ◆ゼロ年代のオブジェクト指向=絶対正義 ではなくなってきている ◆「継承より移譲」の考え方。 Kotlin: クラスはデフォルト継承不可 ◆クラスや継承を敢えて持たない言語もある。例: Go, Rust ◆⑥コード設計の重要性 ◆書いて終わりでなく変更され続ける→保守性や変更容易性が重要 ◆リファクタリング、ドメイン駆動設計(DDD) 、Clean Architecture ◆テスト駆動開発(TDD)などが注目 ぬるぽってなんぞ? 2002 20周年!
  17. 19 10. おまけ: プログラマーの通り名 言語名 通り名 補足 COBOL COBOLer (コボラー)

    揶揄的、自虐的なニュアンスも。なおPL/I使いの通り名はない… C, C++ 特に定まっていない C/C++ ProgrammerとかC+er(シープラー) C++er(シープラプ ラー) C# C#er (シーシャーパー) CSharp+erでCSharper。悪い意味はない。 Java 特に定まっていない ジャバラーとかJava屋、ネタでJavarista (ジャバリスタ、コーヒーのバリスタ) など Scala Scalalian (スカラリアン) Scalman (スカルマン) 後者はネタ。石森章太郎氏の昔の漫画と同名とのこと Kotlin 特に定まっていない? “ことりなー”だとちょっとkawaiiかも Perl Perler (パーラー) Perl Monger (パール・モンガー) 後者は世界のPerlユーザーグループ名に使われている。 Monger: 何かを売りつける商人、つまらないことに夢中になる人の意。詳 しい人とか信者的なニュアンスあり PHP PHPer (ペチパー) PHPer Kaigi などカンファレンス名で使われる一方、揶揄的にも使う。 Ruby Rubyist (ルビイスト) “Rubyに対し単なるお客さん以上の気持ちを持っている人”の意。(日本 Rubyの会に定義あり) 技術的に高い人は昔はRuby Hackerと呼んだらしい。 Python Pythoner (パイソナー) Pythonista (パイソニスタ) 前者は比較級で単にPythonを使う人。あまり使わない言葉。 後者が自由に使いこなせる人の称号的なもの。熱狂的な信者の意味も。 JavaScript JavaScripter (ジャバスクリプター) JSer (ジェイサー) JavaScriptのユーザー≒だいたい「フロントエンドエンジニア」。(バックエン ドもあるが) なおTypeScript使いの独自の通り名は特にない模様。 Go Gopher (ゴーファー) マスコットのゴーファー君と同じ。eGoist(エゴイスト) というネタも。 Rust Rustacean (ラステイシャン) Crustacean (クラステイシャン, カニやザリガニの甲殻類)の言葉遊び。 マスコットもカニさんのフェリス。Go, Rustは公式で通り名を提供。 ~er: 単に使う人、謙遜、場合により悪い意味も ~ist: 同じく使う人、Rubyで使われる
  18. 20 11. おまけ:各言語の実行速度差イメージ 遅い.. ガベージ コレクションの壁 仮想マシンの壁 インタプリタ型 言語の壁 最速!!

    JVM言語であるScala、Kotlinも大まかにはJavaと同程度と思われる。 C#も、JVMと似た仮想マシンの仕組みの上で動いている。 詳しくは 『第5回 ゴーファーくんたちと学ぶ Rust言語の世界』 にて! Blazingly Fast! メモリ安全の防壁 機械語 機械語 中間ファイル 逐次実行 メモリ操作の罠 注:簡略化していますが、実際のプログラムの 実行速度には、これら「~の壁」以外にも 言語の仕組みなど様々な要素が関係します。 このインタプリタ型言語の壁までの間に、かなり大きい速度の差あり。 Node.jsなどJS実行環境はコンパイル型とインタプリタ型の中間 らしく、比較的速い。 主要言語の中では実は遅さが目立つ。Python→ マシンコードへ変換するコンパイラの「Codon」 論文発表、C++並みの速度とのこと [2023/3] 詳しくは 『第1回 ゴーファーくんと 学ぶGo言語の世界』 にて!
  19. 21 12. 本日のまとめ ◆様々なプログラミングパラダイムを持った言語があり、互いに影響を 与えあいながら発展してきました。今も進化が続いています。 ◆世界/日本でのシェア、ネット上の情報量、開発者からの人気などの パラメーターは相関関係がありながらも、微妙に違ったりします。 ◆単一の言語で全てを賄う試みは過去でも成功したことがなく、 目的ごとに、それぞれの言語の特徴を活かして使い分けをしていく 時代が続いています。

    Creative Commons Attributions 3.0 The Gopher character is based on the Go mascot designed by Renée French. それではまた次回! 資料中の様々なロゴやマスコットはその言語や技術の公式・非公式のものです。書影はその書籍・雑誌のものです。 カニさんのフェリスと友達になれたよ! この動画が動きで分かりやすいのでオススメ Most Popular Programming Languages 1965 - 2019 https://www.youtube.com/watch?v=Og847HVwRSI UPDATED!! Most Popular Programming Languages 2000 - 2021 https://www.youtube.com/watch?v=JP1hzHfaEHw Stack Overflow Developer Survey 2022 https://survey.stackoverflow.co/2022/ 後を頼んだよ… Javaの公式 マスコット、Duke