Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
(自作の)プログラミング言語ができるまで
Search
taiseiue
May 09, 2024
Programming
1
260
(自作の)プログラミング言語ができるまで
taiseiue
May 09, 2024
Tweet
Share
More Decks by taiseiue
See All by taiseiue
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
振り向き美人
taiseiue
0
4
Tadpole operators
taiseiue
0
38
Other Decks in Programming
See All in Programming
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1k
Software Architecture
hschwentner
6
2.1k
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.4k
WebDriver BiDiとは何なのか
yotahada3
1
140
Flutter × Firebase Genkit で加速する生成 AI アプリ開発
coborinai
0
150
Linux && Docker 研修/Linux && Docker training
forrep
24
4.5k
『品質』という言葉が嫌いな理由
korimu
0
160
Domain-Driven Transformation
hschwentner
2
1.9k
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
550
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
4
380
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
44
13k
Writing Fast Ruby
sferik
628
61k
Agile that works and the tools we love
rasmusluckow
328
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Gamification - CAS2011
davidbonilla
80
5.1k
BBQ
matthewcrist
87
9.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
320
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Fireside Chat
paigeccino
34
3.2k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
RailsConf 2023
tenderlove
29
1k
Transcript
(⾃作の) プログラミング⾔語ができるまで ランチタイムトーク 2024/5/9 B1 上村太成
本⽇の話 • 作ったプログラミング⾔語の話 • ふんわりしか説明されてこなかった部分に少しだけスポットライトを • ⾃分の⾔語がこうできてるのであって他の⾔語がそうとは限らない • 何を作ったかを中⼼に •
背景 • 作ったもの • 作ったものの特徴 • これから
背景 どういうものを作っていて、どういう要求があったかというと
当時作っていたもの • .NET上で動くChromiumベースのブラウザ • ユーザーが欲しい機能をプラグインとして追加で きる • メーカーはプラグインを介して独⾃のアプリを作 れる •
独⾃のミニアプリを作るためのフレームワーク Plugin Plugin Plugin Plugin ユーザーには点線の部分が 個別のアプリに⾒える WebSailing
前提:作っていたプラグインの性質 • 開発コスト⾼すぎ • がっつりプラグインの仕組みを理解していないと開発できない • デバッグが難しい • バイナリに依存しまくり •
ブラウザを更新するたびプラグインも更新してもらう必要がある 簡単に開発でき、コンパイルせずに動かせるマクロ⾔語が欲しい!
こんな⾔語が出来上がりました
こんな⾔語ができあがりました
こんな⾔語ができあがりました • 元々は.NETアプリ向けのマクロ⾔語 • 気に⼊ったので汎⽤⾔語化 • WindowsやmacOS、Linuxなど 様々な環境で動作 • たくさんのAPIが標準で使える
何を作ったの? AliceScript Docs プログラミング⾔語の説明 Losetta プログラミング⾔語の実装
AliceScript Docs • 「AliceScript」って • 調べると出てきます • APIや概念について説明 • クラウド上で100%動作
Losetta The AliceScript Interpreter Platform • よくいわれる例え 読んでそのたび コンピューターに命令する
Losetta The AliceScript Interpreter Platform • インタプリターにアクセスできるように • アクセスできることのメリット •
AliceScriptから、コードを書き換えられる • 簡単に⾔語機能を拡張できる AliceScript
AliceScriptの特徴 ⻑いのでざっと3つ
特徴:名前空間 • C++やC#と同じ概念 • ファイルをフォルダで整理するように 関数や変数を名前空間で整理 • アクセス修飾⼦を使うことで使わせた いものと使わせたくないものを分離
特徴:契約プログラミング • 関数の定義時に 制約をつけることができる • D⾔語を参考に導⼊
特徴:契約プログラミング • 関数の定義時に 制約をつけることができる • D⾔語を参考に導⼊ • 実⾏時コード書き換えで実現
特徴:プラットフォーム呼び出し • .NETの静的メソッドを AliceScriptで定義して呼び出せる • @netimportでどこにある関数かを伝える • ”extern”は実装が外部にある意 • 引数リストには変換先の型を書く
特徴:プラットフォーム呼び出し • OSや他のライブラリで 公開されている関数も呼び出せる • @libimportでどこにある関数かを伝える • ”extern”は実装が外部にある意 • 引数リストには変換先の型を書く
特徴:プラットフォーム呼び出し • 標準APIも構⽂もプラットフォー ム呼び出しでできている • マーシャリングと バインディングで実現
特徴:プラットフォーム呼び出し • マーシャリング(Marshalling) データ変換
特徴:プラットフォーム呼び出し • バインディング(Binding)
特徴:プラットフォーム呼び出し • 上記を駆使すれば、 理論上⼤規模なアプリだって作 れる
AliceScriptのこれから いままでの歴史とこれからの計画と
これまでのAliceScript • WSOFTScript • AliceScript RC • AliceScript GM 初めての正式リリース
• AliceScript 2 関数型プログラミングの導⼊ Losettaの開発 • AliceScript 3 契約プログラミングの導⼊ • AliceScript vNEXT 2020 2021 2022 2023 2024
⾔語開発を通して • ⾃分の知らないことが知れる • “使い⽅は知ってる”のに”作り⽅は知らない”ことはよくある • ⾔語機能が”なぜ”あるか、考える時間ができる • ⾃分でも技術基盤が作れる •
⾃作の基盤の上で何かが動くのは楽しい • リバースエンジニアリングが得意になる
AliceScriptのこれから • 例年通りできれば新機能を10⽉に締め切り、 トリアージ後AliceScript 4を冬ごろに公開予定 • 事前コンパイルやIDEのサポートも構想中 • メディア化企画「Aliceたん」も進⾏中 a.wsoft.ws/alice/me
コメント募集中 • 新機能のアイデアや質問など… • X(Twitter): @taiseiue • github.com/WSOFT-Project/Losetta
コメント募集中 • 新機能のアイデアや質問など… • X(Twitter): @taiseiue • github.com/WSOFT-Project/alicescript