コンセプトからそれが実装されていく過程を見せてくれる大事な一冊。
言語の作り方だけなら確かにいい本がいっぱいあるが、
このようなコンセプトから実装までの過程を見せてくれる本は初めてだったのでとても役に立ちました。
プライム無料体験をお試しいただけます
プライム無料体験で、この注文から無料配送特典をご利用いただけます。
非会員 | プライム会員 | |
---|---|---|
通常配送 | ¥410 - ¥450* | 無料 |
お急ぎ便 | ¥510 - ¥550 | |
お届け日時指定便 | ¥510 - ¥650 |
*Amazon.co.jp発送商品の注文額 ¥2,000以上は非会員も無料
無料体験はいつでもキャンセルできます。30日のプライム無料体験をぜひお試しください。
新品:
¥3,080¥3,080 税込
ポイント: 93pt
(3%)
無料お届け日:
3月31日 日曜日
発送元: Amazon.co.jp 販売者: Amazon.co.jp
新品:
¥3,080¥3,080 税込
ポイント: 93pt
(3%)
無料お届け日:
3月31日 日曜日
発送元: Amazon.co.jp
販売者: Amazon.co.jp
中古品: ¥2,707
中古品:
¥2,707

無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
まつもとゆきひろ 言語のしくみ 単行本 – 2016/12/22
まつもとゆきひろ
(著)
{"desktop_buybox_group_1":[{"displayPrice":"¥3,080","priceAmount":3080.00,"currencySymbol":"¥","integerValue":"3,080","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"06quy2JO6P6%2BAOF2%2B%2Bcm%2B3CfNrRCsWuEsjCRvgCFYV4XlK%2BZlb0%2FNBFVPbbPZOwkXs2Ks2g3FnRV4bJKXLGUIb0Gk%2FBZFPwZadu64Z%2Bb2hC0wsZ3RPgt7juvUE9bho%2BtSmOeZIHJyiA%3D","locale":"ja-JP","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"¥2,707","priceAmount":2707.00,"currencySymbol":"¥","integerValue":"2,707","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"06quy2JO6P6%2BAOF2%2B%2Bcm%2B3CfNrRCsWuEXo8GUxNIGDs48G3w7EATI50vsykJrcIAq2f1%2Fxqz%2BDVBdtmAmTOtz7evqrDejLlMs2Qbmd4cO1mn0UDMrJE%2Bp7QFmTa4i860tDLMvRQXSL2bqTP8SjM%2B%2FX7r5%2F5LL5aG%2BbLHg5DcVGKVk5dE8GpxLA%3D%3D","locale":"ja-JP","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}
購入オプションとあわせ買い
言語の作り方から学ぶ一流プログラマのスキルとセンス
「言語のデザインと実装を語れるのは私しかいない」(まつもとゆきひろ)
世界中で使われているプログラミング言語「Ruby」の作者、まつもとゆきひろ氏が「言語の作り方」を初めて真正面から解説する本です。
本書のため新言語「Streem」を作りました。2年をかけて新言語を実際にデザイン・実装した取り組みを、試行錯誤の過程も含めて詳しく解説しています。
「今更、言語を作ってどんな意味があるの?」と思う人もいるかもしれません。
まつもと氏は言語を作る価値を本書でこう説明します。
●プログラミング能力の向上
●デザイン能力の向上
●自己ブランド化
●自由の獲得
まずプログラミング言語の実装は、コンピュータサイエンスの総合芸術といえるでしょう。言語処理系の基礎である字句解析や構文解析は、ネットワーク通信のデータプロトコルの実装などにも応用できます。
プログラミング言語はコンピュータと人間をつなぐインタフェースでもあります。そのようなインタフェースをデザインすることは、人間がどのように考え、暗黙のうちに何を期待しているかについての深い考察が求められます。
そのような考察を重ねることは、言語以外のAPIのデザインや、ユーザーインタフェース(UI)、ひいてはユーザーエクスペリエンス(UX)のデザインに役立つでしょう。
こんな言語デザインの世界に皆さんをご案内します。
「言語のデザインと実装を語れるのは私しかいない」(まつもとゆきひろ)
世界中で使われているプログラミング言語「Ruby」の作者、まつもとゆきひろ氏が「言語の作り方」を初めて真正面から解説する本です。
本書のため新言語「Streem」を作りました。2年をかけて新言語を実際にデザイン・実装した取り組みを、試行錯誤の過程も含めて詳しく解説しています。
「今更、言語を作ってどんな意味があるの?」と思う人もいるかもしれません。
まつもと氏は言語を作る価値を本書でこう説明します。
●プログラミング能力の向上
●デザイン能力の向上
●自己ブランド化
●自由の獲得
まずプログラミング言語の実装は、コンピュータサイエンスの総合芸術といえるでしょう。言語処理系の基礎である字句解析や構文解析は、ネットワーク通信のデータプロトコルの実装などにも応用できます。
プログラミング言語はコンピュータと人間をつなぐインタフェースでもあります。そのようなインタフェースをデザインすることは、人間がどのように考え、暗黙のうちに何を期待しているかについての深い考察が求められます。
そのような考察を重ねることは、言語以外のAPIのデザインや、ユーザーインタフェース(UI)、ひいてはユーザーエクスペリエンス(UX)のデザインに役立つでしょう。
こんな言語デザインの世界に皆さんをご案内します。
- 本の長さ352ページ
- 言語日本語
- 出版社日経BP
- 発売日2016/12/22
- 寸法18.3 x 1.6 x 23.5 cm
- ISBN-104822239179
- ISBN-13978-4822239176
よく一緒に購入されている商品

対象商品: まつもとゆきひろ 言語のしくみ
¥3,080¥3,080
最短で3月31日 日曜日のお届け予定です
残り2点(入荷予定あり)
¥2,838¥2,838
最短で3月31日 日曜日のお届け予定です
残り5点(入荷予定あり)
¥3,740¥3,740
最短で3月31日 日曜日のお届け予定です
残り11点(入荷予定あり)
総額:
当社の価格を見るには、これら商品をカートに追加してください。
ポイントの合計:
pt
もう一度お試しください
追加されました
一緒に購入する商品を選択してください。
この商品をチェックした人はこんな商品もチェックしています
ページ 1 以下のうち 1 最初から観るページ 1 以下のうち 1
出版社より
![]() |
![]() |
|
---|---|---|
まつもとゆきひろ 言語のしくみ | 小学生から楽しむ きらきらRubyプログラミング | |
カスタマーレビュー |
5つ星のうち4.1
34
|
5つ星のうち4.1
10
|
価格 | ¥3,080¥3,080 | ¥2,200¥2,200 |
発売日 | 2016/12/22 | 2020/5/21 |
登録情報
- 出版社 : 日経BP (2016/12/22)
- 発売日 : 2016/12/22
- 言語 : 日本語
- 単行本 : 352ページ
- ISBN-10 : 4822239179
- ISBN-13 : 978-4822239176
- 寸法 : 18.3 x 1.6 x 23.5 cm
- Amazon 売れ筋ランキング: - 209,755位本 (本の売れ筋ランキングを見る)
- - 143位システム管理・監査
- - 716位ソフトウェア開発・言語
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。

Rubyのパパ。
プログラミング言語Ruby創始者。プログラミング言語オタク。
著書に
オブジェクト指向スクリプト言語Ruby
Rubyデスクトップリファレンス
コードの世界
コードの未来
言語のしくみ
など。
-
トップレビュー
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
2020年7月20日に日本でレビュー済み
Amazonで購入
別にプログラミング言語を作るつもりもないし、自分には関係ないや・・・そう思っていましたが、読んでみるとプログラミング言語の開発・発展の歴史や、なぜ多様なプログラミング言語が存在するかに関しての話題などがあり、プログラミング言語の教養を深めるのに、とても良い本だなと思いました。いわゆる処理の実装の仕方ではなく、あくまで言語デザインについて語られています。
新言語「Streem」の開発を通して、どういう機能が必要で、それをどうやって実装していくか、それを考え方がわかるように説明されています。随所に、他の言語ではどのようにしてその機能を実装しているのか?という説明がされている場合があり、またコラムでもちょいちょい他の言語(タイニー言語まで!)の解説がまとめられていて、他の言語の仕様を知るにも悪くないです。
中でも、世界最初のオブジェクト指向言語Simula、最も有名で影響力の大きなオブジェクト指向言語Smalltalk、そのSmalltalkに影響を与えたLOGOの話には感動しました。SmalltalkでLOGOのタートルグラフィックスを表現したコードなども説明されていて、オブジェクト指向について他の言語での実装状況も学べました。
筆者はPascalやLispが好きなようで、好みが自分に合うのかもしれませんし、筆者が言う「ベーマガ時代を嬉々として語りだす人達」に該当しているからでしょうか、とても読みやすかったです。
全体を通して、筆者は本当にプログラミング言語が好きだなぁ(自称、プログラミング言語マニアだろうです)と感じました。バブル崩壊で筆者が窓際に追われなければ、Rubyの誕生もこの書籍の出版もなかったかもしれません。
惜しむらくは、巻頭に目次はあるのに、巻末に索引がないことでしょう。トピックで出てきた言語や構文は、索引がないと逆引きリファレンスができないです・・・(なので、★-1としました)
新言語「Streem」の開発を通して、どういう機能が必要で、それをどうやって実装していくか、それを考え方がわかるように説明されています。随所に、他の言語ではどのようにしてその機能を実装しているのか?という説明がされている場合があり、またコラムでもちょいちょい他の言語(タイニー言語まで!)の解説がまとめられていて、他の言語の仕様を知るにも悪くないです。
中でも、世界最初のオブジェクト指向言語Simula、最も有名で影響力の大きなオブジェクト指向言語Smalltalk、そのSmalltalkに影響を与えたLOGOの話には感動しました。SmalltalkでLOGOのタートルグラフィックスを表現したコードなども説明されていて、オブジェクト指向について他の言語での実装状況も学べました。
筆者はPascalやLispが好きなようで、好みが自分に合うのかもしれませんし、筆者が言う「ベーマガ時代を嬉々として語りだす人達」に該当しているからでしょうか、とても読みやすかったです。
全体を通して、筆者は本当にプログラミング言語が好きだなぁ(自称、プログラミング言語マニアだろうです)と感じました。バブル崩壊で筆者が窓際に追われなければ、Rubyの誕生もこの書籍の出版もなかったかもしれません。
惜しむらくは、巻頭に目次はあるのに、巻末に索引がないことでしょう。トピックで出てきた言語や構文は、索引がないと逆引きリファレンスができないです・・・(なので、★-1としました)
2017年1月3日に日本でレビュー済み
この本は一言でいうと完成された本ではありません。
完成されていないというのはある言語(この本の元になった連載のために作り始めたStreem)が完成してハッピーエンド、というわけではなく、まだまだ開発途上のまま本が終わるという意味です。
しかし、だから駄目というわけではなく、言語を作り始める動機、他の言語ではどうなっているのかの調査、言語の利用者に負担をかけない文法とはどういうものかの考察、論より証拠で作ってみる、それを踏まえての効率の追求、Ruby開発の裏話などプログラミング言語はこうやって作られていくのかという様子を追いかけることできます。
その際に初めはこう考えて作ったけどうまくいかなかったから書籍化の際に削る、ではなく、「(書籍の)前の方ではこう考えたけどうまくいかないことがあるからこう変えました」というような過程もすべてそのままになっており試行錯誤の過程を見ることができます。(さらにタイムマシンコラムという懺悔部屋もありおもしろいです(笑))
唯一不満があるのは索引がないことですね。
完成されていないというのはある言語(この本の元になった連載のために作り始めたStreem)が完成してハッピーエンド、というわけではなく、まだまだ開発途上のまま本が終わるという意味です。
しかし、だから駄目というわけではなく、言語を作り始める動機、他の言語ではどうなっているのかの調査、言語の利用者に負担をかけない文法とはどういうものかの考察、論より証拠で作ってみる、それを踏まえての効率の追求、Ruby開発の裏話などプログラミング言語はこうやって作られていくのかという様子を追いかけることできます。
その際に初めはこう考えて作ったけどうまくいかなかったから書籍化の際に削る、ではなく、「(書籍の)前の方ではこう考えたけどうまくいかないことがあるからこう変えました」というような過程もすべてそのままになっており試行錯誤の過程を見ることができます。(さらにタイムマシンコラムという懺悔部屋もありおもしろいです(笑))
唯一不満があるのは索引がないことですね。
2018年7月8日に日本でレビュー済み
## 概要
- 書名: まつもとゆきひろ 言語のしくみ
- 副題:
- 著者: まつもと ゆきひろ
- 出版日: 2016-12-27
- 読了日: 2018-07-05
- 評価: ☆3
- パーマリンク: https://senooken.jp/blog/2018/07/05/
## 評価
日経Linux 2014年4月号から2016年12月号まで連載された「作りながら学ぶプログラミング言語」という記事をまとめて加筆・編集された内容となっている。
プログラミング言語を作るという書籍は既にいくつもあるが,それらは教科書的な内容がほとんどであり,現実に役に立つような発展的な内容が書かれているものはほとんどない。また,実際に世界で広く使われているプログラミング言語の開発経験者により,デザインの仕方を語られた本自体が少ない。その時点で,この本は希少性が高い。
プログラミング言語の開発にはそんなに興味はないが,内部的にどういうことを考えてどうやって作られているかというのには興味があったので読んだ。
言語設計の部分はけっこう小難しくてあまり理解できなかったが,以下のように参考になる箇所もあった。
* 並行プログラミングではどういうことを気にしないといけないのか
* オブジェクト指向での継承パターンの選択
* 構文解析ソフトyaccの使い方
* C言語での各種具体的な実装方法
## 引用
> ### p. 004: はじめに
>
> どのように言語をデザインすべきか経験から語れる人など、そうはいないのです。
> ___
> 数少ない例外としては、C++設計者であるBjarne Stroustrup氏による「The Design and Evolustion of C++」(邦題「C++の設計と進化」、ソフトバンクパブリッシング)があります。この本を読めばC++がなぜこのようになっているのか、何を目指していたのかが分かる貴重な書籍です。
C++の設計について書かれている本があることを知らなかったので参考になった。いずれ読んでみたい。
> ### p. 036: 1-3 バーチャルマシン
>
> 【シンボル】 言語処理系が内部でメソッド名などの識別に使っている値で、任意の文字列に対して異なった値が割り当てられる。
gdbなどでシンボルという単語を見かけるが意味がわからなかった。この解説で意味がわかった。
> ### p. 056: 単純継承の問題
>
> ところが多重継承でクラス関係がDAG (Directed Acyclic Graph) 構造となる場には、探索順序は一意には定まりません。
>
> 単一継承の問題とは、継承のラインを子得てメソッドなどのクラス属性を共有する方法がないことです。共通のスーパークラスが存在しない場合、属性を共有できず、コピーするしかありません。
オブジェクト指向型の単純継承と多重継承で継承時に発生する問題を知れた。
> ### p. 223: 4-2 基本データ構造
>
> ユニオンは同じメモリー領域に対する複数の方での解釈を定義するものです。
> ___
> ユニオンはあまり頻繁に用いられるものではないので、そのようなものをなんに使うのか疑問に持つ人も多いでしょう。ユニオンの 使われ方はいくつかありますが、典型的なものは以下の3種類です。
>
> * 最大サイズの確保
> * 条件付き構造体定義
> * メモリー解釈の操作
C言語のunionは使いどころがよくわからなかったのだが,使うタイミングが少し良くわかった。
> ### p. 293: 5-3 CSV処理機能
>
> 最も都合が良かったものが「semitrivial/csv_parser」というリポジトリーでした。グローバル変数を使っておらず、非常にシンプルで無駄なことをしていません。
実際にGitHubからC言語のCSVパーサーを探して,組み込む手順について解説していて参考になった。
> ### p. 304: 時刻の表現方法
>
> Linuxを含めた多くのUNIXシステムでは、1970年1月1日00:00 (UTC) をエポックとします。
> ___
> 例えば、現在時刻を取り出すシステムコールtime(2) は、以下のようなAPIです。
> ___
> しかし、いつも秒単位で話が済むとは限らず、1秒以下の情報を取り出す必要があるかもしれません。UNIXでもそう思ったのか、より新しいシステムコールgettimeofday(2) が追加されています。こちらは秒以下の時刻がマイクロ秒単位で与えられます。
> ___
> その後、さらにさらに細かい時刻分解能が必要なこともありえると考えたのか、POSIX.1-2008ではより新しいシステムコールclock_gettime(2) が追加されています。
> ___
> MacOSではいまだにclock_gettime()が未実装なのだそうです。
C言語での時刻の取得方法について参考になった。
> ### p. 339: 5-7 ストリームグラフ
>
> CUIはキャラクターで画面表示を行うので、もう何十年も使われてきているターミナルの中で動作できます。今後もターミナルがなくなることは心配しなくてよさそうです。今回はこちらのCUIを使ってグラフを表示する機能を作ります。
>
> そこで参考にできるツールはないかといろいろ探したところ、stag *1 (https://github.com/seenaburns/stag/) というツールを見つけました。
>
> stagは標準入力から数値データを読み込み、それに対して棒グラフを出力するツールです。
CUIでのグラフ作成ツールを知れた。
## 結論
プログラミング言語を自分で作ることというのはあまりないかもしれない。しかし,内部でどういうしくみで,何に気を払って実装されているのか,しっておくと他のことにも役に立つように感じた。
技術者の教養として読むのはいいと思った。
- 書名: まつもとゆきひろ 言語のしくみ
- 副題:
- 著者: まつもと ゆきひろ
- 出版日: 2016-12-27
- 読了日: 2018-07-05
- 評価: ☆3
- パーマリンク: https://senooken.jp/blog/2018/07/05/
## 評価
日経Linux 2014年4月号から2016年12月号まで連載された「作りながら学ぶプログラミング言語」という記事をまとめて加筆・編集された内容となっている。
プログラミング言語を作るという書籍は既にいくつもあるが,それらは教科書的な内容がほとんどであり,現実に役に立つような発展的な内容が書かれているものはほとんどない。また,実際に世界で広く使われているプログラミング言語の開発経験者により,デザインの仕方を語られた本自体が少ない。その時点で,この本は希少性が高い。
プログラミング言語の開発にはそんなに興味はないが,内部的にどういうことを考えてどうやって作られているかというのには興味があったので読んだ。
言語設計の部分はけっこう小難しくてあまり理解できなかったが,以下のように参考になる箇所もあった。
* 並行プログラミングではどういうことを気にしないといけないのか
* オブジェクト指向での継承パターンの選択
* 構文解析ソフトyaccの使い方
* C言語での各種具体的な実装方法
## 引用
> ### p. 004: はじめに
>
> どのように言語をデザインすべきか経験から語れる人など、そうはいないのです。
> ___
> 数少ない例外としては、C++設計者であるBjarne Stroustrup氏による「The Design and Evolustion of C++」(邦題「C++の設計と進化」、ソフトバンクパブリッシング)があります。この本を読めばC++がなぜこのようになっているのか、何を目指していたのかが分かる貴重な書籍です。
C++の設計について書かれている本があることを知らなかったので参考になった。いずれ読んでみたい。
> ### p. 036: 1-3 バーチャルマシン
>
> 【シンボル】 言語処理系が内部でメソッド名などの識別に使っている値で、任意の文字列に対して異なった値が割り当てられる。
gdbなどでシンボルという単語を見かけるが意味がわからなかった。この解説で意味がわかった。
> ### p. 056: 単純継承の問題
>
> ところが多重継承でクラス関係がDAG (Directed Acyclic Graph) 構造となる場には、探索順序は一意には定まりません。
>
> 単一継承の問題とは、継承のラインを子得てメソッドなどのクラス属性を共有する方法がないことです。共通のスーパークラスが存在しない場合、属性を共有できず、コピーするしかありません。
オブジェクト指向型の単純継承と多重継承で継承時に発生する問題を知れた。
> ### p. 223: 4-2 基本データ構造
>
> ユニオンは同じメモリー領域に対する複数の方での解釈を定義するものです。
> ___
> ユニオンはあまり頻繁に用いられるものではないので、そのようなものをなんに使うのか疑問に持つ人も多いでしょう。ユニオンの 使われ方はいくつかありますが、典型的なものは以下の3種類です。
>
> * 最大サイズの確保
> * 条件付き構造体定義
> * メモリー解釈の操作
C言語のunionは使いどころがよくわからなかったのだが,使うタイミングが少し良くわかった。
> ### p. 293: 5-3 CSV処理機能
>
> 最も都合が良かったものが「semitrivial/csv_parser」というリポジトリーでした。グローバル変数を使っておらず、非常にシンプルで無駄なことをしていません。
実際にGitHubからC言語のCSVパーサーを探して,組み込む手順について解説していて参考になった。
> ### p. 304: 時刻の表現方法
>
> Linuxを含めた多くのUNIXシステムでは、1970年1月1日00:00 (UTC) をエポックとします。
> ___
> 例えば、現在時刻を取り出すシステムコールtime(2) は、以下のようなAPIです。
> ___
> しかし、いつも秒単位で話が済むとは限らず、1秒以下の情報を取り出す必要があるかもしれません。UNIXでもそう思ったのか、より新しいシステムコールgettimeofday(2) が追加されています。こちらは秒以下の時刻がマイクロ秒単位で与えられます。
> ___
> その後、さらにさらに細かい時刻分解能が必要なこともありえると考えたのか、POSIX.1-2008ではより新しいシステムコールclock_gettime(2) が追加されています。
> ___
> MacOSではいまだにclock_gettime()が未実装なのだそうです。
C言語での時刻の取得方法について参考になった。
> ### p. 339: 5-7 ストリームグラフ
>
> CUIはキャラクターで画面表示を行うので、もう何十年も使われてきているターミナルの中で動作できます。今後もターミナルがなくなることは心配しなくてよさそうです。今回はこちらのCUIを使ってグラフを表示する機能を作ります。
>
> そこで参考にできるツールはないかといろいろ探したところ、stag *1 (https://github.com/seenaburns/stag/) というツールを見つけました。
>
> stagは標準入力から数値データを読み込み、それに対して棒グラフを出力するツールです。
CUIでのグラフ作成ツールを知れた。
## 結論
プログラミング言語を自分で作ることというのはあまりないかもしれない。しかし,内部でどういうしくみで,何に気を払って実装されているのか,しっておくと他のことにも役に立つように感じた。
技術者の教養として読むのはいいと思った。
2023年10月22日に日本でレビュー済み
プログラミング言語を開発する人がどういう思考なのかということを知り愕然とした。
まず、コンピュータサイエンスの理解が桁違いだ。
例えば、CPUがどういう処理をするかということを考えて設計している。
本書を読むと自信喪失必須だが、非常に価値のある本だと思う。
まず、コンピュータサイエンスの理解が桁違いだ。
例えば、CPUがどういう処理をするかということを考えて設計している。
本書を読むと自信喪失必須だが、非常に価値のある本だと思う。