タグ

ProgrammingとRubyに関するagwのブックマーク (209)

  • ついに軽量Rubyの「mruby」のソースコードが公開!:Rails Hub情報局:エンジニアライフ

    Rubyの生みの親、まつもとゆきひろさんが、ついに新しいRuby実装である「mruby」のソースコードをGitHub上で公開しました! 2012年4月20日です。ライセンスは、MITライセンスとなっています。 以下にまつもとさんがmrubyについて語るインタビュー動画を貼り付けます。18分30秒のあたりからどうぞ。インタビューは昨秋の時点でのものです。 公開されたmrubyのレポジトリから、Readmeの一部を引用します。 mrubyはISO規格に準拠したRuby言語を様々な環境で動作可能となるように軽量化したものです。モジュール構成によりインタプリタ実行形式やコンパイル&VM実行形式でも動作させることができます。 2010年度の経済産業省の地域イノベーション創出事業により開発されました。 MRI(Matz Ruby Implementation)版との互換性 以下要修正 + シンプルな文

    ついに軽量Rubyの「mruby」のソースコードが公開!:Rails Hub情報局:エンジニアライフ
  • TechLIONvol.6報告(1/2)―Rubyの父まつもと氏が考える「10年先も通用するプログラマー」とは - TechLION

    こんにちは。USP MAGAZINE編集長のまつうらです。既に各所で速報していただいておりますTechLION vol.6(2012.04.12@六木SuperDeluxe)ですが、いやぁ~、前回に引き続き、今回も大変盛り上がりました。その雰囲気を余すことなく伝えるべく、スタッフの立場からより濃いレポートをお届けしてまいります。(→後編(2/2)はこちら) そもそも、TechLIONって何? さてレポートに入るわけですが、その前に!今一度おさらいしておきたいことはがあります。それは、TechLIONが何なのかについて、です。 TechLIONとは、今注目の技術者を招き、彼ら彼女らから技術者哲学を学ぶシンポジウム(=飲み会)である。 シンポジウムって言うと何かマジメで堅苦しいものを想像するかもしれませんが、来のシンポジウムというのは酒を酌み交わしながら、哲学について深く語り合う会であり、

    TechLIONvol.6報告(1/2)―Rubyの父まつもと氏が考える「10年先も通用するプログラマー」とは - TechLION
  • How Emacs changed my life

    1. The document describes how the author's experience with Emacs as a student taught him about software freedom and how to read and modify source code. This led him to create his own Emacs-based tools and influenced the design of Ruby. 2. Emacs taught the author the power of Lisp and how to implement a programming language and garbage collection. Using Emacs to write code, documents and email made

    How Emacs changed my life
  • Python の map, filter, reduce とリスト内包表記

    1. リストを操作する関数で重要なのはどれ? リスト内包表記は慣れたら使いやすい Python のリスト内包表記に出会って 4 ヶ月が経った。 「Python のリスト内包表記」を読みなおしてみると、 … 同じく数値のリストから、特定の条件に合う要素を抽出する。 print [x for x in [1,2,3,4,5] if x > 3] これまた読みにくい。 (@_@;) と書いていたけれど、今では「シンプルで読みやすく、また書きやすい」と思える。慣れとは恐ろしい。 ^^; (リスト内包表記がネストしてたりすると、すぐに理解出来ないけれど。) Ruby の Enumerable モジュールにはたくさんのメソッドが定義されている Java しか知らなかった頃、Ruby の 配列に定義されているメソッドを見て、「便利なメソッドがたくさんあるなぁ」と思った。Ruby の配列は、Enumera

    agw
    agw 2012/02/28
    なるほど > 配列をfoldして配列を返す
  • bump(他動詞)の意味 - tkrdの日記 (rails や ubuntu のことなど)

    一般的な用法では、他動詞 bump は「ドンとぶつける」という意味でして、 She bumped her head on the low beams. みたいに使います。 インターネットの世界では、日での「アゲる」に相当する言葉で、古いスレッドに何か書き込むことで「板」の中での順位を上げることを意味するそうです*1。 さて、(他の言語の場合は知りませんが)Ruby プログラマーの間では、「(バージョン番号)を上げる」という意味で使われる場合があります。 例えば、コミットメッセージに bump version to 2.0.0.rc と書いてあれば、バージョン番号を 2.0.0.rc に上げた、という意味になります。 *1:http://en.wikipedia.org/wiki/Bump_%28Internet%29

    bump(他動詞)の意味 - tkrdの日記 (rails や ubuntu のことなど)
  • アクセス制御の抜け穴 (Python/Ruby編) - blanket log

    ある既存クラスの private なメソッドを外から使えるかどうかという話。 他人の触れてはならないプライベートな領域に踏み入りたい! なんていう不埒な欲望が首をもたげて現れた時点で9割9分どっか不健全なわけで、すぐに首を洗って出直すか首を括って死ぬべきですが、それでも往々にしてそんな時のための抜け穴を、僕たち私たちのプログラミング言語は用意してくれていたりするようです。*1 言語としてみれば、そういった裏技が使えることが必ずしも悪なのかどうか。全くないといざというときに困る…かどうかはともかく少なくとも困るかもしれないという漠然とした不安がつきまとうということはあるかもしれない。 それにまぁ、パズル的に使うのは全然アリだと思います。むしろそっちがメイン。そういうの好きな人多いですしね。 というわけで前置きが長くなりましたが私が知ってる各言語についてまとめてみます (その言語をふつうに使っ

    アクセス制御の抜け穴 (Python/Ruby編) - blanket log
  • 1.8.7の今後につきまして

    Posted by maki on 7 Oct 2011 (<URL:https://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7/> の翻訳です) いつもRubyをご愛用いただき、誠にありがとうございます。 さて、みなさまの中にも、Ruby 1.8.7を今でもお使いの方が少なからずいらっしゃると思います。 2008年にリリースされた1.8.7版のRubyは、当時としては最先端の大変優れたものであり、 おかげさまで多くの方々にご愛用いただきました。心より御礼申し上げます。 とはいえ、今後もお使いいただくことはお勧めできません。 Rubyのコア開発者は、今現在はより新しいバージョン、1.9に注力しており、 近々最新版である1.9.3のリリース準備を進めているところです。 私たちも以前から1.9を使っており、率直なところ、今さら1.9

  • 【インタビュー】言語は思考にも影響を及ぼす、だからRuby開発を選んだ--まつもとゆきひろ氏 | エンタープライズ | マイコミジャーナル

    「ソフトウェア・エンジニアの幸せ」とは一体何だろうか? 報酬、評価、やり甲斐。何に喜びを見出すかは人それぞれかもしれないが、ここでは一つの仮説を立ててみたい。 一生涯エンジニアであり続けること――仕事のためだけにプログラミングをするのではなく、仕事を離れても自発的にプログラミングに取り組むようになれば、エンジニアとして日々を楽しめるようになり、ひいては幸せなエンジニア人生を送れるのではないだろうか。 この仮説に基づいてソフトウェア・エンジニアの幸せを考えたときに、切っても切り離せない存在となるのがOSS(オープンソースソフトウェア)である。OSSのコミュニティは、ソフトウェア・エンジニア仕事を離れてプログラミングに向き合う環境を提供してくれる。先の仮説が正しいとすると、「生涯エンジニアへの道」にぴったりな場所と言えるだろう。 そこで誌は、日発のプログラミング言語にして日発のOSSコ

  • Cより速いRubyプログラム

    The document discusses various techniques for optimizing the performance of embedded Ruby (ERuby) templates. It describes 7 iterations of improvements to "MyEruby" that reduced the processing time from over 69 seconds to under 1 second. The optimizations included avoiding line splitting, replacing parsing with patterns, tuning regular expressions, inline expansion and array buffers.

    Cより速いRubyプログラム
  • Rubyで関数型プログラミング - 貳佰伍拾陸夜日記

    Rubyでの快適関数型プログラミングライフを追求するあまり, 使えるのか使えないのかよくわからないものを作ってしまったという話. Rubyに不慣れな人や関数型プログラミングに不慣れな人に対して酷なのはまだわかるとしても, C++(というかboostでの関数型プログラミング)に不慣れな人も全力で置いてきぼりにする誰得記事になってしまった...... 経緯 そもそもRubyはだいぶLispっぽくて, ブロックとイテレータを使うだけで関数型プログラミングになってしまう. たとえばこんな感じで: %w|1 2 3 4 5|.map{|x| x.to_i} %w|1 2 3 4 5|は'1'から'5'までの文字列からなる配列で, その配列のメソッドArray#map*1に対して, 受け取った引数を整数化するブロックを渡してやると, 1から5までの整数からなる配列が得られる. たとえば関数型プログラミ

    Rubyで関数型プログラミング - 貳佰伍拾陸夜日記
  • Twitterが、Ruby on RailsからJavaVMへ移行する理由

    オライリーが主催するイベント「Open Source Convention 2011」が7月25日から米国ポートランドで開催されました。 その中で、TwitterがなぜRuby on RailsベースのシステムをJavaVMベースへ移行しようとしているのかを解説したセッション「Twitter: From Ruby on Rails to the JVM」が行われ、ビデオが公開されています。 13分程度の短いセッションのポイントをまとめて紹介します。 世界最大のRuby on RailsによるWebサイトをJavaVMへ移行 Twitterのアプリケーションサービスグループ、Raffi Krikorian氏 Twitterは世界中からのツイートをリアルタイムで扱っている。リアルタイム処理が、ツイッターにおけるもっとも難しい処理だ。 Twitterは、おそらく世界最大のRuby on Rail

    Twitterが、Ruby on RailsからJavaVMへ移行する理由
  • なぜRubyをPythonよりもPHPよりも高速化できたか - 方向

    最も有名なベンチマークサイト "The Computer Language Benchmarks Game" における最新のランキングRuby 1.9 は Python3, PHP, JRuby を追い抜きスクリプト言語としてトップクラスの値を叩き出しました。 5/4の時点では最下位に近かったので大きく前進しています。 1つのパッチで520%の高速化を達成 この高速化は私がfastaというベンチマークのプログラムを改善したことにより実現しました。 少し前Rubyのベンチマークを書くことにハマっていました。 他の人のプログラムや統計を眺めていたとき、fastaに関してPythonが異常に速いことに気づきました。 他のスクリプト言語のおよそ50倍速く、アルゴリズムが改良されていました。 fasta #6 fasta #7 この2つのコードを比較するとわかるのですが、処理が重複している箇所に

    なぜRubyをPythonよりもPHPよりも高速化できたか - 方向
  • githubがコード解析に使っているライブラリを公開

    またまたgithubから新しいプロダクトがアナウンスされました。githubではリポジトリ内のファイルの種類を判別したり、コードハイライトを行うといった機能がありますがこれを途方もない種類の言語に対して実現しています。そして今回公開されたのはまさにそういったコードの検出やハイライティングといった部分のライブラリです。 ちょっと使いどころがすぐに思いつくようなライブラリでもないですが、Rubyで実装された実践的なコードの例として楽しむのも良さそうです。 via:https://github.com/blog/881-linguist

    githubがコード解析に使っているライブラリを公開
  • JavaScriptは初心者向けではなく“ハッカー言語”:Rails Hub情報局:エンジニアライフ

    先日、日Rubyの会会長の高橋征義さんと雑談しているとき、以下の指摘に妙に納得しました。 「私の中ではハッカー言語という分類があって、PerlやLisp、JavaScriptハッカー向けの言語だと思うんですよね」。 その心は、これらの言語は多数のプログラミングのパラダイムをサポートしていて、自分が何がしたくて、どれを使えばよいか分かっている人には柔軟で良いのだけれども、初心者が使う言語としては自由度が高すぎて難しいのではないか、ということです。 JavaScriptは最初のハードルこそ低いけど…… JavaScriptはどこでも動きますし、すぐに「Hello World」が表示できます。文字の色もすぐに変えられます。ほかのどの言語よりも最初のハードルが低く、入門に向きそうです。そういう意味で、初心者にオススメといわれることもあります。しかし、そこからちょっと先に進もうと思っても、「これ

    JavaScriptは初心者向けではなく“ハッカー言語”:Rails Hub情報局:エンジニアライフ
  • なぜリファクタリングは必要なのか?

    今回からいよいよコードの話を始めます。もはやRuby文化の一部だという主張もあるリファクタリング、テストについて、その意義や概要を紹介します 実際のアプリを例に解説 連載のこれまでは、私の過去の体験や仕事環境についてお話ししてきましたがそろそろ少しコードの話をしましょう。 これからしばらくはテストとリファクタリングがメインです。ただ理論を説明するだけでなく、実際に書かれたアプリのコードをレビューし、テストを追加しながら改善していきます。今回から解説する一連のリファクタリング、テストのターゲットは、@IT編集部の西村賢さんがRuby on Railsで開発中の力作、「Worklista」です。 テストを書かずばRailsエンジニアにあらず? 2010年11月に米国ニューオリンズで開催されたRubyConfでのキーノートで、Ruby on Railsの作者であるDHHは、テストについて次のよ

    なぜリファクタリングは必要なのか?
  • Underscore.js

    Table of Contents Collections each, map, inject, detect, select, reject, all, any, include, invoke, pluck, max, min, sortBy, sortedIndex, toArray, size Arrays first, last, compact, flatten, without, uniq, intersect, zip, indexOf Functions bind, bindAll, delay, defer, wrap Objects keys, values, extend, clone, isEqual, isElement, isArray, isFunction, isUndefined Utility uniqueId, template Collection

  • Ruby で「Lisp脳」に迫る。 - YNote

    はじめに 再利用性の高いプログラムを書くにはどうしたらよいのだろう、と、いつも思う。 学生のころ、BASIC と C と Verilog を勉強して、社会人になってから Ruby をちゃんと勉強した。正確には学生のころも Ruby さわったことがあったんだけど、「正規表現が使えてセミコロンがいらない C 」くらいにしか思ってなくて、それよりも踏み込んで便利さを知ったのは、けっこう最近。 再利用性が高いプログラムを書くのに、Ruby はやっぱり便利だ。 Ruby が便利な理由としては「メタプログラミングが得意」とか「オブジェクト指向だから」、とか、いろいろ言われるけれども、個人的には「『DoA(Data Oriented Approach)』を気軽に実践できる」というのが大きいと思う。 DoA というのは「データ中心アプローチ」とも言われていて、データ構造の変遷を中心にプログラムを設計してい

    Ruby で「Lisp脳」に迫る。 - YNote
  • プログラマブルなインフラ、Ruby、JavaScriptなどが重要なテクノロジと評価される。ThoughtWorksのレポート

    プログラマブルなインフラ、RubyJavaScriptなどが重要なテクノロジと評価される。ThoughtWorksのレポート オブジェクト指向やアジャイル開発などを広めてきたMartin Fowler氏が所属し、アジャイル開発のコンサルティングなどを行っている企業としても知られているThoughtWorks。同社は、IT業界内のさまざまなテクノロジーの中から、重要性を増しつつあるテクノロジーや、逆に影響力を失いつつあるテクノロジーなどを紹介するレポート「Technology Radar」を不定期に公開しています。 そのTechnology Radarの2011年1月号が公開されました。いままでPDFバージョンしかなかったのですが、今回はHTML版も公開され、より見やすくなっています。 Technology Radarは、開発技法を対象とした「Techniques」、ツールを対象とした「T

    プログラマブルなインフラ、Ruby、JavaScriptなどが重要なテクノロジと評価される。ThoughtWorksのレポート
  • プログラミング言語人気TOP10の簡易解説

    0-1. 前書き この世にはたくさんのプログラミング言語が存在します。Wikiepdiaのプログラミング言語一覧を見ると、実に200個以上というわけの分からない数の言語が並んでいたりします。 【参考URL】プログラミング言語一覧 - Wikipedia http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%... 200の中にはほとんど使われてない言語も混じってるので、実際に仕事でざくざく使われている言語は20とか30とかそういうオーダーなのですが、それでも1人の人間が把握するにはちょっと多過ぎる数です。 記事では、そうした有り余るプログラミング言語の海の中で「どれを勉強したらいいの?」とか「どれを採用するのが適切?」という悩みをお持ちの方が「よし、この言語に決めた!」と自信を持って決断できるように背中を押すことを目的として書か

  • Rubyで末尾再帰最適化をする。 - Homoiconic Days

    元ネタはPythonで末尾再帰最適化をする。 - wasabizの日記。Pythonのデコレータを使って、末尾再帰で書かれた関数に対して末尾呼び出し最適化(TCO)を行う、というものです(どうやってTCOを実現しているかの詳細についての説明はここでは割愛します)。 さて、元エントリでは「Pythonがすごいからこんなことができるんだ」という感じで書かれていますが、タネさえ分かればいろんな言語でできそうだということが分かったので、他の言語でも試してみることにしました。 まずはじめに、試しにScheme版を書いてみたものの、そもそもSchemeはTCOを勝手にやってくれるのであまり意味のない例になってしまいました。 その後、Scheme版をだいたいそのままRubyに書き直したのが以下のRuby版です。 class Module def tco(name) continue = [] first

    Rubyで末尾再帰最適化をする。 - Homoiconic Days