タグ

ブックマーク / sumim.hatenablog.com (9)

  • Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です

    2022-09-09改訂: gcc バージョンが古すぎたのと、C が内部計測でなかった点を改め計測しなおしました。結果、Rust は C より速くはなくなりました。紛らわしいことで、ごめんなさい。また、gcc のバージョンアップに伴い、Python および Ruby についてはビルドと計測をしなおしたので、これらも少し速い値に変わっています。この点もどうぞあしからず。 2022-09-10追記:ご要望のあった Python numba.njit 使用時と Go の結果を追加しました。PHP は JIT 有効化が面倒だったので断念しました^^; 2022-09-10追記2:C の計測で clock() を使うのはフェアではないという指摘がありましたので、念のため clock_gettime() を使用したコードに差し替えました。結果に大きな差はありません。 2022-09-10追記3:PHP

    Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です
    Wacky
    Wacky 2022/09/09
  • 二つのオブジェクト指向とそれぞれのメリット - Smalltalkのtは小文字です

    似たような話の繰り返しで恐縮ですが、現時点での自分の理解の整理のためのメモ。 前後しますが、こうして改めてまとめてみると、純粋な抽象データ型のオブジェクト指向プログラミングは、メッセージングのオブジェクト指向の影響も多分に受けている OOAD(分析・設計)のテコ入れ無しには、ちょっと弱っちく&古くさい感じが否めませんね(何をいまさら…ですが)。^^; とはいえ、OOAD は OOP とはまた別のものなので、同じ「抽象データ型の〜」あるいは「メッセージングの〜」だからといって対応する OOP とひとくくりにしてよいかというとそういうわけでもないので(整理・分類上は)難しいところです。 ▼ 抽象データ型のオブジェクト指向プログラミング 端的には、「ユーザー定義型(抽象データ型)」を、当初は「クラス」、今はそれに加えて「インタフェース」に準ずる言語機能によるサポートを前提として実践するプログラミ

    二つのオブジェクト指向とそれぞれのメリット - Smalltalkのtは小文字です
    Wacky
    Wacky 2008/10/29
  • 恒例のフィボナッチベンチで V8 と Smalltalk、Ruby、Python、Scheme とを戦わせてみる - sumim’s smalltalking-tos

    爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい の続き。 その速いと言われる V8。実際、どのくらいの速度で動くのかを具体的な数値として見てみたくなったので、手軽に試すことができるフィボナッチベンチで、そのスコアを手元の処理系たちと並べて比較してみました。 環境は Modbook 2.4GHz Core 2 Duo(MacBook 相当)の Vista SP1 で、40番目のフィボナッチ数(63245986)の算出にかかった秒数をカウントしています。結果は次のようになりました。 言語 処理系 スコア [秒] JavaScript Google Chrome (V8) 2.95 JavaScript Firefox 3.01 (SpiderMonkey) 31.9 Small

    恒例のフィボナッチベンチで V8 と Smalltalk、Ruby、Python、Scheme とを戦わせてみる - sumim’s smalltalking-tos
    Wacky
    Wacky 2008/09/05
    元になった Strongtalk や商用 Smalltalk には一歩及ばないものの、それでも、よく知られた LL 言語たちよりはずっと高速に動作するように見えます。あなどれないですね。
  • 爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい - Smalltalkのtは小文字です

    Animorphic Smalltalk というのは、1990年代半ばに作られ、2006年にオープンソース化されて話題になった“Strongtalk”のこと。 Another interesting aspect of the V8 virtual machine is that it's open source. It is mainly written in C++, based on the Strongtalk Smalltalk code and released with a BSD/MIT license. The Hitchhiker's Guide to ...: Google Chrome, JavaScript and Smalltalk Strongtalk は、Objective-C ばりのオプショナルな静的型チェック機能と Ruby と同様にミックスインを用いた

    爆速で話題の Google Chrome 搭載 JavaScript VM “V8” は、Animorphic Smalltalk VM がベースになっているらしい - Smalltalkのtは小文字です
    Wacky
    Wacky 2008/09/04
    Strongtalk は、Objective-C ばりのオプショナルな静的型チェック機能と Ruby と同様にミックスインを用いた多重継承機構を併せ持つ、ちょっと毛色の変わった Smalltalk 処理系
  • 最低限の Smalltalk デバッガ入門(Squeak システム向け) - Smalltalkのtは小文字です

    Smalltalk ではスタックフレームも「コンテキスト」と呼ばれるオブジェクトです。ちなみに、実行中のコンテキストに容易にアクセスできるようにわざわざ thisContext という擬変数まで用意されています。Smalltalk には予約語は全部でたった6つしかない(他は self、super、nil、true、false)うちのひとつを使うわけですから、これはある意味、破格の扱いです。 こうした背景もあってか、はたまた私の単純な思い込みでか、Smalltalk のデバッガは「コンテキスト(や、その連なりによって表現されるコールスタック)をブラウズするためのツール」という性格が強いように感じられます。クラス用ブラウザがクラスブラウザ、インスタンス用がインスペクタなら、デバッガはコンテキスト向けに特別に用意された“第三のブラウザ”といったところでしょうか。 ▼デバッガの起動 デバッガを起動

    最低限の Smalltalk デバッガ入門(Squeak システム向け) - Smalltalkのtは小文字です
    Wacky
    Wacky 2008/08/28
    Smalltalk のデバッガは「コンテキスト(や、その連なりによって表現されるコールスタック)をブラウズするためのツール」という性格が強いように感じられます。
  • 最低限の Squeak Smalltalk 入門 - sumim’s smalltalking-tos

    ついでにSmalltalkでも試そうと思ってSqueakをインストールしたけど… - 西尾泰和のはてなダイアリー Smalltalk、特に Squeak Smalltalk は、言語処理系や IDE というより、あたかも“ゲストOS”のように振る舞うので、ちょっと試してみたいと思い立ってインストール&起動まではできたものの、そこから先には、独自の GUI や操作スタイルに阻まれて進めなかった…という経験をお持ちの方も多いと思います。 そこで、Smalltalk 環境独自の GUI ツール群の使い方はあとで覚える(あるいはそもそもそれほど興味がない←しょぼーん…(^_^;))として、今のところは、試してみたいコードを動かしたり、どんな動作になるのか確認ができればいい…といった忙しい人向けにざっくり、Smalltalk 式を評価するための方法のようなものを書いてみました。 とりあえず、マシンが

    最低限の Squeak Smalltalk 入門 - sumim’s smalltalking-tos
    Wacky
    Wacky 2008/03/07
  • クックの分類を意識した、Python による「未定義な遷移の解釈」の実装 - Smalltalkのtは小文字です

    Diary?::2007-10-12 - (22:35) 経由で、未定義な遷移の解釈 -- 3つの立場 - 檜山正幸のキマイラ飼育記 のうち未定義がエラーを(値として…)返す場合を同じく Python で。 関数とメソッド(クラス内定義関数)の区別を持つ Python は、クックの ADT と PDA(OOP)の両方のスタイルをサポートできます(もちろん、情報隠蔽が十分でないので、いずれもかなり限定的にではありますが…)。両者の違いを際だたせるのによさそうな例に思えたので、少し遊んでみました。 クックの ADT を意識した場合 class err: def __str__(self): return "error" class n(int): pass def up(v): if isinstance(v,n): return n(v+1) elif isinstance(v,err):

    クックの分類を意識した、Python による「未定義な遷移の解釈」の実装 - Smalltalkのtは小文字です
    Wacky
    Wacky 2007/10/28
  • オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です

    忙しい人のためのまとめ 一般に「オブジェクト指向プログラミング」と呼ばれる考え方には発案者が異なる二系統がある。(ただし簡単のため、次のうち前者から批判的に派生して生じたプロトタイプベースのオブジェクト指向はここには含めていない) アラン・ケイによる、変化に強い長期運用可能な遅延結合システムを SIMULA67 にあった「オブジェクト」をメッセージの受け手とすることで実現(オブジェクトにメッセージ送信)するアイデアに基づく「メッセージングのオブジェクト指向」と、 ビアルネ・ストラウストラップ(前後して抽象データ型を発案したリスコフ人、オブジェクトクラスを考えたニガードらSIMULA陣営、Eiffelのメイヤーらも同様の着想を得ている)による、ユーザー定義型(抽象データ型)を SIMULA67 にあった「クラス」という言語機能を使って実現(カプセル化、継承、多態性)するアイデアに基づく「抽

    オブジェクト指向の概念の発明者は誰ですか? - Smalltalkのtは小文字です
    Wacky
    Wacky 2007/01/24
    “メッセージングによる可能な限り動的な処理・実装・設計”(メッセージ指向),“抽象データ型のスーパーセット”“継承によるプログラミング”(クラス指向),“手続きによる抽象化”
  • Little Smalltalk v.1 - Smalltalkのtは小文字です

    前のエントリーでマニアックなハックとともに(^_^;)ご紹介させていただいた Little Smalltalk は v.3 で、比較的新しいものです(エントリー名を変更しました)。そのため、仕様が書籍で解説されているのとだいぶ異なります。タイトルから郷愁にかられてアクセスしていただいた方の中にも、記憶のものとちょっと違うな…と感じられた向きも多数おられるかと。 ならば書籍が出版された当時の v.1 はないのか…と探してみたところ、家からは削除されてしまって久しいのですが、C User's Group が CD-ROM で配布していたものが Planet Mirror というサイトにかろうじて残っているのを見つけることができました。 229_01.zip 54102 10-03-89 Little Smalltalk, Part I, with bundled files 230_01.z

    Little Smalltalk v.1 - Smalltalkのtは小文字です
    Wacky
    Wacky 2006/02/25
  • 1