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
340
(自作の)プログラミング言語ができるまで
taiseiue
May 09, 2024
Tweet
Share
More Decks by taiseiue
See All by taiseiue
“⾞が通れるほど⼤きな”セキュリティーホールを抑えながらログインしたい
taiseiue
0
160
Kotlinのデフォルト引数の話
taiseiue
0
40
.NETの上でお手製の言語を動かす技術
taiseiue
0
60
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
280
振り向き美人
taiseiue
0
19
Tadpole operators
taiseiue
0
49
Other Decks in Programming
See All in Programming
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
6
1.4k
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
3
320
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
knih
10
1.7k
iOSアプリ開発もLLMで自動運転する
hiragram
6
2.3k
複数アプリケーションを育てていくための共通化戦略
irof
10
3.7k
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
160
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
180
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
730
Go Modules: From Basics to Beyond / Go Modulesの基本とその先へ
kuro_kurorrr
0
110
Javaのルールをねじ曲げろ!禁断の操作とその代償から学ぶメタプログラミング入門 / A Guide to Metaprogramming: Lessons from Forbidden Techniques and Their Price
nrslib
3
1.9k
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
470
無関心の谷
kanayannet
0
160
Featured
See All Featured
Visualization
eitanlees
146
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
106
19k
Making Projects Easy
brettharned
116
6.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Automating Front-end Workflow
addyosmani
1370
200k
Facilitating Awesome Meetings
lara
54
6.4k
Code Reviewing Like a Champion
maltzj
524
40k
A Modern Web Designer's Workflow
chriscoyier
693
190k
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
Otomatik - 104.22.38.239
CloudFlare DNS
Türk Telekom DNS
Google DNS
Open DNS
OSZAR »