第3話 最速ハチロク伝説 コンピュータの進化とプログラミング言語コンピュータの進化とプログラミング言語 近年 CPU が高速化 マルチコア化 それを生かすプログラミング言語処理系 IE9 では GPU も利用 Lightweight Language の登場 スクリプト言語でも高速に動作 Perl,

Slides:



Advertisements
Similar presentations
「自由な情報」のための ウェブブラウザ Cybozu Labs, Inc. Kazuho Oku.
Advertisements

AWS + nginx + Node.js + Android ~ Android アプリ開発してみた~ 高知工科大学 情報学群 4 年 松下 和生.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Windows Azure ハンズオン トレーニング Windows Azure Web サイト入門.
P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
Flash SWF ファイル書き換え PHP extension 2008 年 7 月 21 日 よや.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
IIS 4.0で開発をするコツ Webアプリケーション構築.
・ω・.
情報処理3 アプリケーション プログラミング 今井孝明.
なぜ今Pythonか? Pythonをお薦めする18の理由
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
連続系アルゴリズム演習 第2回 OpenMPによる課題.
This slide was a material for the “Reading PLDI Papers (PLDIr)” study group written by Kazuhiro Inaba ( ), under my own understanding of.
ハルビン絵葉書コレクションシステムの再構築と機能追加 -サーバ側:PHPとMySQLを用いて
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
Expression Blend 3で始めるSilverlight 3アプリケーション開発
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
稲葉 一浩 (k.inaba) Python と プログラミングコンテスト 稲葉 一浩 (k.inaba)
Microsoftの新ブラウザEdgeとIEについて
WPF(.NET3.5)   vs Silverlight 2.0 Beta1 中 博俊@わんくま同盟.
第8回 今日の目標 §3.1 ソフトウェア 機械語と記憶装置の関係を示せる ソフトウェアの階層を示せる OSの役割を示せる
Hot Pepper for iPod touch
情報工学基礎(改訂版) 岡崎裕之.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
山田 由貴子 (北大理・地球惑星科学専攻) 2004年10月29日
Ibaraki Univ. Dept of Electrical & Electronic Eng.
An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
Silverlight とは.
JavaScript Language Update
文字化けの背景を知る.
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
心理学情報処理法Ⅰ コンピュータ言語の歴史.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
Windows Summit /8/2017 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be.
スクリプト言語を用いたPHITSの連続実行
文字化けの背景を知る.
Linux にログインし、以下の講義ページを開いておくこと
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
Linux にログインし、以下の講義ページを開いておくこと
型付きアセンブリ言語を用いた安全なカーネル拡張
情報の科学的 な理解(2) 情報科教育法 8回目 2005/6/4 太田 剛.
Isesaki City LEADER program Module 1
Expression Blend 3で始めるSilverlight 3アプリケーション開発
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
文字コード 情報処理3 今井孝明.
50年前のプログラミング言語 50年後のプログラミング言語
アルゴリズムとデータ構造1 2006年6月16日
プログラミング言語入門.
平成30年度高知工科大学教職科目 微分方程式特論I 11 高知大学教育学部技術教育コース 北川 晃.
Update.
第4回 コンピューティングの要素と構成 平成22年5月10日(月)
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンパイラ 2012年10月1日
コンピュータアーキテクチャ 第 2 回.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
WPF(.NET3.5)   vs Silverlight 2.0 Beta1 中 博俊@わんくま同盟.
コンピュータアーキテクチャ 第 2 回.
第2回 Webサーバ.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
第2話. 第2話 LLカンファレンス の歴史を 振り返る LL Saturday(2003年)
C#プログラミング実習 第1回.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Presentation transcript:

第3話 最速ハチロク伝説

コンピュータの進化とプログラミング言語コンピュータの進化とプログラミング言語 近年 CPU が高速化 マルチコア化 それを生かすプログラミング言語処理系 IE9 では GPU も利用 Lightweight Language の登場 スクリプト言語でも高速に動作 Perl, Ruby, Python, PHP, ActionScript … JavaScript 高速化バトル勃発 Chrome の v8 エンジンの公開( 2008 年)

各ブラウザの JavaScript エンジン Microsoft Internet Explorer JScript  Chakra ( IE9 ) Google Chrome v8 Mozilla Firefox SpiderMonkey  TraceMonkey  JagerMonkey ( 3.7 ) Apple Safari ( WebKit ) JavaScriptCore  SquirrelFish  SFX  Nitro Opera 世界最速 Carakan ( 10.5 )

JavaScript エンジンの速度比較 SunSpider benchmark の結果( Safari )

TraceMonkey: JavaScript Lightspeed Brendan's Roadmap Updates

Safari vs. Firefox vs. Chrome 2. Mozilla's Dromaeo benchmark (Windows) 1. SunSpider benchmark (Mac OS X)

量質転化の法則量質転化の法則 量が質に転化するとき 量を積み重ねることで質的な変化が起こる瞬間 頭の良くない奴(プログラム)でも、 量をこなせば質に転化することがある コンピュータの処理速度が向上 “ 賢い ” 枝狩りアルゴリズム 昔は CPU の速度が遅く、メモリの量も少なかった “ 単純な ” 総当りアルゴリズム 単位時間あたりに処理できる情報量が増えたため 現在再注目されている

Z80 エミュレーター jsMSX The first MSX emulator 100% written in Javascript Console: Booting jsMSX Starting RAM slots Starting VDP Starting PSG (No Sound) interrupt=0,ticks=59666 cpu ticks/interrupt, cpu clock=3.58 MHz MSX ready to go. Load ROMs and hit [start].

JavaScript = Web2.0 時代のマシン語? Ajax, Web OS, Thin client… mobile browser

これからは JavaScript が 世界を支配する!

市場調査市場調査 JavaScript が好き/嫌いな人 (挙手!) "~が好き""~が嫌い"好きな人 JavaScript3,220,000230, % Perl18,80066, % Ruby20,30052, % PHP42,300172, % Python118,00029, % Google調べ:

JavaScriptが好かれる理由 勝手にベスト3 インデントが自由(強制されない!) 変数名も自由(Unicode文字も使えるよ!) ECMA-262, ISO/IEC 16262, JIS X 3060 で既に規格化されてるよ!(国際標準) ようするに JavaScript かわいいよ JavaScript

Javascript: ゚ ω ゚ノ = / `m ´ )ノ ~ ┻━┻ //*´ ∇` */ ['_']; o=( ゚ー゚ ) =_=3; c=( ゚ Θ ゚ ) =( ゚ー゚ )-( ゚ー゚ ); ( ゚ Д ゚ ) =( ゚ Θ ゚ )= (o^_^o)/ (o^_^o);( ゚ Д ゚ )={ ゚ Θ ゚ : '_', ゚ ω ゚ノ : (( ゚ ω ゚ノ ==3) +'_') [ ゚ Θ ゚ ], ゚ー゚ノ :( ゚ ω ゚ノ + '_')[o^_^o -( ゚ Θ ゚ )], ゚ Д ゚ノ :(( ゚ー゚ ==3) +'_')[ ゚ー゚ ] }; ( ゚ Д ゚ ) [ ゚ Θ ゚ ] =(( ゚ ω ゚ノ ==3) +'_') [c^_^o];( ゚ Д ゚ ) ['c'] = (( ゚ Д ゚ )+'_') [ ( ゚ー゚ )+( ゚ー゚ )-( ゚ Θ ゚ ) ];( ゚ Д ゚ ) ['o'] = (( ゚ Д ゚ )+'_') [ ゚ Θ ゚ ];( ゚ o ゚ )=( ゚ Д ゚ ) ['c']+( ゚ Д ゚ ) ['o']+( ゚ ω ゚ノ +'_')[ ゚ Θ ゚ ]+ (( ゚ ω ゚ ノ ==3) +'_') [ ゚ー゚ ] + (( ゚ Д ゚ ) +'_') [( ゚ー゚ )+( ゚ー゚ )]+ (( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+(( ゚ー゚ ==3) +'_') [( ゚ー゚ ) - ( ゚ Θ ゚ )]+( ゚ Д ゚ ) ['c']+(( ゚ Д ゚ )+'_') [( ゚ー゚ )+( ゚ー゚ )]+ ( ゚ Д ゚ ) ['o']+(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ];( ゚ Д ゚ ) ['_'] =(o^_^o) [ ゚ o ゚ ] [ ゚ o ゚ ];( ゚ ε ゚ )=(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+ ( ゚ Д ゚ ). ゚ Д ゚ノ +(( ゚ Д ゚ )+'_') [( ゚ー゚ ) + ( ゚ー゚ )]+(( ゚ー゚ ==3) +'_') [o^_^o - ゚ Θ ゚ ]+(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+ ( ゚ ω ゚ノ +'_') [ ゚ Θ ゚ ]; ( ゚ー゚ )+=( ゚ Θ ゚ ); ( ゚ Д ゚ )[ ゚ ε ゚ ]='\\'; ( ゚ Д ゚ ). ゚ Θ ゚ノ =( ゚ Д ゚ + ゚ー゚ )[o^_^o -( ゚ Θ ゚ )];(o ゚ー゚ o)=( ゚ ω ゚ノ +'_')[c^_^o];( ゚ Д ゚ ) [ ゚ o ゚ ]='\"';( ゚ Д ゚ ) ['_'] ( ( ゚ Д ゚ ) ['_'] ( ゚ ε ゚ +( ゚ Д ゚ )[ ゚ o ゚ ]+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ー゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ Θ ゚ )+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ (( ゚ー゚ ) + (o^_^o))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ー゚ )+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ Θ ゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ (o^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (o^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ー゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ o ゚ ]) ( ゚ Θ ゚ )) ('_'); alert("Hello, JavaScript")

aaencode って役に立つの? さまざまなフィルタの回避に ! 攻撃コードを書くときの難読化として 書いて楽しい、見て楽しい ! コードリーディング重要 !! 愛の告白に ! いまどきの若い女の子にも 抵抗なく受け入れてもらえる♡

でも …

JavaScript は そんなに速くない → 最速を目指して

最速伝説 ハチロク

BATTLE 3 : Downhill

Quiz: これは何をするプログラムでしょう? Answer → MS-DOS 16bit COM mov ah, 09h mov dx, "Hello, World" int 21h

86 binary Writing 8086 binary only with symbols 記号だけで書く! No alphabet letters [a-zA-Z] No numerical letters [0-9] Of course, No letters other than US-ASCII 使えるのは 32 種類の記号だけ !"#$%&'()*+,-./:; Base32 エンコーディング 16bit COM 形式 "MZ", "ELF" のようなファイルヘッダなし

記号のみで 16bit 8086 自己書き換え 使える演算子が限られる SUB ( ADD 演算は使えない … ) AND レジスタ間のコピーが簡単にできない PUSHA POP BX 自己書き換え Base32 デコードして実行バイナリを メモリ上に動的生成して実行( JIT っぽい)

スタック上に任意の数値を置くスタック上に任意の数値を置く AND AX, 2240 AND AX, 4022 SUB AL, 7e SUB AL, 25 SUB AL, 21 PUSHA POP DI C 7E 2C 25 2C F AX == 0x003C Push 8 registers Pop 7 times, "0x3C 0x00" are left on stack Expand code on stack " ` _

JavaScript で x86 アセンブラを書く

改造車 AA86

顔文字系 記号 プログラミング

顔文字系プログラミングのススメ ソースコードがいつも笑顔! (^_^; 癒される! (^_^; 読みにくいコードで職を守る! (^_^; 純粋に楽しい! (^_^; Fun of the programming

記号プログラミングのススメ 使用するのは記号 32 文字のみ !” #$%& ’ ()-=^~¥| ` @ { [ ] } ; + : * <>,. / ? _ | スペース、タブ、改行も使わない メリット インデントに悩む必要なし 1,2,3,4,8 スペース、 1 タブ派の人も安心 変数の命名に悩む必要なし _ __ ___ ____ _____ ______ _______

37一生涯 顔文字プログラマー 宣言一生涯 顔文字プログラマー 宣言 たとえ、アルファベットのキーが壊れても、 記号のキーだけあればプログラミングできる!

all your base32 are belong to us (^_^)/

39 ご静聴ありがとうございました