2K Views
January 27, 24
スライド概要
言語が生きていることとは何か?
言語が死ぬこととは何か?
性質も用途も全く異なるが、「言語」という唯一の共通点で自然言語とプログラミング言語を比較・考察し、言語の本質を探究する。
某教育系サービスの内製開発にソフトウェアエンジニアとして携わっています。 使用技術スタックは、サーバーサイドは Ruby on Rails、フロントエンドは React.js + TypeScript です。 プライベートでは Python も少し書きます。 学部生時代は英語学を専攻していたので、言語に強い興味を持っています。 私の所属する部署ではテーマフリーの LT 会や技術トーク会があり、そこで利用した資料をこちらにアップしています。 ご興味があれば是非ご覧下さい。
言語の生と死 -自然言語 vs. プログラミング言語作成者: 石田 隼人 英語版はこちら 最終更新日: 2024年07月16日 1
自己紹介 • 各種アカウント • • • • • Linkedin: @hayat01sh1da GitHub: @hayat01sh1da Speaker Deck: @hayat01sh1da Docswell: @hayat01sh1da HackMD: @hayat01sh1da • 職業: ソフトウェアエンジニア • 趣味 • • • • • 語学学習 カラオケ 音楽鑑賞 映画鑑賞 卓球 2
免許 / 資格 • 英語 • TOEIC® Listening & Reading 915点: 2019年12月 取得 • エンジニアリング • • • • 情報セキュリティマネジメント: 2017年11月 取得 応用情報技術者: 2017年06月 取得 基本情報技術者: 2016年11月 取得 IT パスポート: 2016年04月 取得 • その他 • 珠算2級: 2002年06月 取得 • 暗算3級: 2001年02月 取得 3
スキルセット • 言語 • 日本語: 母語 • 英語: ビジネスレベル • 開発 • Ruby: 中上級(FW: Ruby on Rails) • Python: 中級 • TypeScript:中級(Library: React.js) • HTML:中級(Library: Bootstrap) • CSS:中級(Library: Bootstrap) • SQL:中級 • その他 • ドキュメンテーション: 上級 4
職歴 1. システムエンジニア @SES • レガシー Windows Server 運用・保守 • 社内アカウント管理 • 社内セキュリティ啓蒙 • 英語通訳(海外拠点とのオンライン会議・ベンダー対応・海外スタッフのアテンド) 2. ソフトウェアエンジニア @受託開発会社 • サーバーサイド開発(Ruby on Rails, RSpec) • フロントエンド開発(HTML / CSS, JavaScript) • QA(Native iOS / Android Apps) • 企業技術ブログ記事執筆 3. ソフトウェアエンジニア @チャットボットプラットフォーム開発会社 • 既存チャットボットプラットフォーム開発・運用・保守(Ruby on Rails, RSpec) • 新規チャットボットエンジン性能検証(Ruby, Ruby on Rails, RSpec, Python) 4. ソフトウェアエンジニア @メガベンチャーの教育系サービス内製開発部門 • 学事・進路支援機能開発(Ruby on Rails, RSpec, Minitest, TypeScript + React.js) • 年次高校マスタデータ更新(Ruby on Rails, RSpec) • ドキュメンテーション執筆・啓蒙活動 5
国際交流活動 • 大学時代 • • • • 英語学ゼミ(マスメディア英語) 国際交流サークル兼部(2年次) 内閣府主催国際交流プログラム(2013年 - 2016年) 日本語学の授業の S 単位取得(最終年次) • 海外生活 • オーストラリアでのワーキングホリデー(2014年04月 - 2015年03月) • • • 2ヶ月間のシドニーの語学学校通学 6ヶ月間の Hamilton Island Resort での就労 1ヶ月間の NSW 州の St Ives High School での日本語教師アシスタントボランティア活動 • その他活動 • • • • • 英語での日々の日記(2014年04月 - 現在) Sunrise Toastmasters Club 参加(2017年02月 - 2018年03月) Vital Japan 参加(2018年01月 - 2019年07月、2022年10月 - 2023年02月) 英語自己学習 オーストラリアの友人とのビデオ通話 6
今日話すこと 目的も用途も全く違う自然言語とプログラミング言語を、以下の3つの観点 で比較してたら意外と面白かった話。 • 言語が「生きている」とは? • 言語が「死ぬ」とは? • 言語の死が私たちにもたらすこととは? 7
今日話さないこと • 英語の詳しい話(単語・熟語・文法・発音etc.) • 言語学の詳しい話(言語の歴史とか音韻学etc.) • プログラミング言語の詳しい話(なぜ動くのか・歴史・実装etc.) 8
元ネタ • 2018年のアドベントカレンダー(2社目)で書いた記事 • Matz(Rubyの父)がTwitterでシェアしてくれた 9
歓迎 10
目次 1. 言語の概要 2. 言語の生死の定義 3. 言語の死の副作用 4. まとめ 5. 参考文献 11
1. 言語の概要 12
1. 言語の概要 自然言語 • 自然発生的 • 人工的に開発されたものではない • 口語と文語の両方が存在する • 話し言葉と書き言葉 • 今この瞬間が最新版= Living Standard • 常に進化・変化する • 古英語、中英語、近代英語、現代英語のような時代区分が存在する • 社会、文化、歴史とそれを扱う集団や個を映し出す鑑 • コミュニケーションツール • 情報のやり取り、行動規制、知識体系化、推論など 13
1. 言語の概要 プログラミング言語 • 人工的 • 開発目的で人間が発明 • 話すことはできない • 「Ruby を話してみて!」← 無理! • 定期的に進化・変化する= バージョンアップ • Ruby の 3.1.2、Python の 3.10.7 etc. • JavaScript は Living Standard(ES6 はバージョンというよりスナップショット) • 開発者(言語の生みの親やコミッター、メンテナー等も含む)の思想の分身 • クラスや関数(メソッド)の設計 • 開発手法(TDD, DDD etc.) • 間接的なコミュニケーションツール • コードから実装意図が読み取れるのが良いコード • レビュアー、レビュイー間で要件を満たしているかをコードを見てすり合わせる 14
2. 言語の生死の定義 15
2. 言語の生死の定義 自然言語 The true definition of a dead language is one that has no native speakers left. There are several different ways that it can happen, but the bottom line is that if there is only one person left who speaks the language as their native tongue and fluently, then the language has died. 死語の本当の定義は母語話者が誰1人としていなくなった言語のことを指す。それに至 るまでの過程はいくつか存在するが、その最低ラインは「その言語を母語として流暢 に話す人が 1 人しか存在しない場合、その言語は死んでいる」と言うことだ。 出典: ll.8-10, Sarah-Claire Jordan, Alpha Omega Translations 16
2. 言語の生死の定義 自然言語 • 生の定義 • 進化、変化し続けること • 2 人以上の母語話者が存在する • 母語話者間でコミュニケーションがある • 死の定義 • 進化、変化が止まった時 • 母語話者が 1 人以下 • コミュニケーションが発生しない • 言語と私たち人間は一心同体 → 一方が死ぬと他方も死ぬ(ピッコロと神様のような関係) 17
2. 言語の生死の定義 プログラミング言語 There are only two kinds of languages: the ones people complain about and the ones nobody uses. - Bjarne Stroustrup, creator of C++. Be it because nobody is using it, nobody is hiring for it, or nobody is talking about it - based on the level of community engagement, the job market, and overall growth - some languages just aren't worth your time anymore. プログラミング言語には 2 種類しか存在しない。それは、人々が文句をつけるプログラミング 言語と誰も使わないプログラミング言語だ(C++ の生みの親ビャーネ・ストロヴストルップ談)。 今この瞬間に(コミュニティへの貢献や労働市場、総合的な成長性の水準に基づいて)それを使っ ていないという理由であろうと、それを使える人を雇っていないという理由であろうと、それが 全く俎上に上がっていないという理由であろうと、もはや単純に時間を費やす価値のないプログ ラミング言語もあるのだ。 出典: ll.9-15, Justina H., Codementer 18
2. 言語の生死の定義 プログラミング言語 • 生の定義 • 人々が関心を示していること • 文句をつけられる=「もっとこうなってほしい」 • 毎年のように「死んだ」説が出る Ruby / Rails は絶賛生存中 • Ruby はクリスマスにメジャー版をリリースするのが通例 • 現在進行形で開発者が使っており、改良され続けていること • 死の定義 • 誰も見向きしない • 不満も抱かれない= どうでもいいと思われている • メンテナンスされない= 機能不足&セキュリティホール満載 • No news is bad news. 19
3. 言語の死の副作用 20
3. 言語の死の副作用 自然言語 Orwell believed that if something is not sayable, it will not be thinkable. In his novel, he told of a society that tried to limit language by getting rid of certain words(e.g., freedom or justice) and restricting the meaning of others. The purpose was to make certain political ideas unsayable in the hope that they would become unthinkable. Orwell は「言葉で表現できないことは思考不能になる」と考えていた。 彼の小説の中 で、特定の語彙(「自由」や「正義」)を消去したり、その他の語彙の意味を制限して言 語統制を行う社会を描いた。 その目的は、政治思想を思考不能することを期待して特定の政治思想を言葉で表現で きなくすることであった。 出典: p.61 ll.17-22, Michael L. Geis, Language and Communication 21
3. 言語の死の副作用 自然言語 • 思考手段の喪失 • 例えば、「空腹」という言葉やその関連語がなかったら、どのようにお腹が空いたこ とについて考え、表現するか • 国家や社会の言論統制の目的は、特定の思想を口に出せなくし、それによって考えさ せなくすること • 文化的アイデンティティの喪失 • 日本語独特の敬語表現、婉曲表現は長い日本の歴史の中で醸成されたもの • それは日本語という媒体を通して考えられ、表現され、発展したもの • 例えば、日本語がなくなったらどのように「建前・本音」や「社交辞令」などの独特 な文化が存在しうるか← 不可能! 22
3. 言語の死の副作用 プログラミング言語 • 市場価値の下落 • 「DoJa で i モード開発ゴリゴリやってました」 • ※ ただし、JavaScript のように Flash の台頭や標準化の難しさから受難の時代があったものが、Google Map の Ajax 通信や Node.js の台頭によって再び脚光を浴びる例もあるので何があるかはわからない。 • 開発コストの膨張 • メンテナンスコスト • 不足機能の自前実装 • セキュリティパッチ • 他言語やフレームワークへの乗換えコスト • etc. 23
4. まとめ 24
4. まとめ 性質 自然発生的/ 人口的 口 語 / 文語 自然言語 自然発生的 口語・文語 プログラミング言語 人工的 書くことのみ 常に 定期的に(ものによる) 個、コミュニティ、社会、文化、 歴史など 〇 実装者の思想 (生みの親、開発者etc.) △ 生の定義 進化、変化し続けること 人々が関心を示すこと 死の定義 母語話者が 1 人しかしないこと → コミュニケーションがなくなる → 進化、変化が止まる 思考手段の喪失 文化的アイデンティティの喪失 誰も興味を持たないこと → 開発、メンテが止まる → 進化、変化が止まる 市場価値の下落 開発コストの膨張 進化 何を反映するか コミュニケーションツール? 言語の死の副作用 25
4. まとめ 補足・感想 • プログラミング言語に関しては、実用的なものでなければ売れないし参照 されないので、この手のテーマに関して信頼できるエビデンスを見つける のが難しい • 一方、自然言語に関しては言語学という学問が存在するので、実用性はと もかく深い考察の成果物や研究結果があるため、文献の参照が比較的容易 • 自然言語は紀元前の太古の昔から存在する一方、プログラミング言語は資 本主義経済の時代に生まれた若い言語。「進化、変化が止まることによっ て死ぬ」のは、言語の性質というより市場の原理 • 「プログラミング言語学」なるものがあったら? 26
5. 参考文献 27
5. 参考文献 • Sarah-Claire Jordan, What Causes the Death of a Language? • 最終アクセス日: 2021年10月23日 • Justina H., Worst Programming Languages to Learn in 2018 • 最終アクセス日: 2021年10月23日 • Michael L. Geis, Language and Communication, Oxford, OUP, 2001 • NTTドコモの公式開発ツールを使おう • 最終アクセス日: 2021年08月09日 • クジラ飛行机、『いまどきのJS プログラマーのための Node.js と React ア プリケーション』、東京都、ソシム株式会社、2017年 28
EOD 29