別にプログラミング言語を作るつもりもないし、自分には関係ないや・・・そう思っていましたが、読んでみるとプログラミング言語の開発・発展の歴史や、なぜ多様なプログラミング言語が存在するかに関しての話題などがあり、プログラミング言語の教養を深めるのに、とても良い本だなと思いました。いわゆる処理の実装の仕方ではなく、あくまで言語デザインについて語られています。
新言語「Streem」の開発を通して、どういう機能が必要で、それをどうやって実装していくか、それを考え方がわかるように説明されています。随所に、他の言語ではどのようにしてその機能を実装しているのか?という説明がされている場合があり、またコラムでもちょいちょい他の言語(タイニー言語まで!)の解説がまとめられていて、他の言語の仕様を知るにも悪くないです。
中でも、世界最初のオブジェクト指向言語Simula、最も有名で影響力の大きなオブジェクト指向言語Smalltalk、そのSmalltalkに影響を与えたLOGOの話には感動しました。SmalltalkでLOGOのタートルグラフィックスを表現したコードなども説明されていて、オブジェクト指向について他の言語での実装状況も学べました。
筆者はPascalやLispが好きなようで、好みが自分に合うのかもしれませんし、筆者が言う「ベーマガ時代を嬉々として語りだす人達」に該当しているからでしょうか、とても読みやすかったです。
全体を通して、筆者は本当にプログラミング言語が好きだなぁ(自称、プログラミング言語マニアだろうです)と感じました。バブル崩壊で筆者が窓際に追われなければ、Rubyの誕生もこの書籍の出版もなかったかもしれません。
惜しむらくは、巻頭に目次はあるのに、巻末に索引がないことでしょう。トピックで出てきた言語や構文は、索引がないと逆引きリファレンスができないです・・・(なので、★-1としました)
まつもとゆきひろ 言語のしくみ (日本語) 単行本 – 2016/12/22
まつもとゆきひろ
(著)
著者の作品一覧、著者略歴や口コミなどをご覧いただけます
この著者の 検索結果 を表示
あなたは著者ですか?
著者セントラルはこちら
|
-
本の長さ352ページ
-
言語日本語
-
出版社日経BP
-
発売日2016/12/22
-
ISBN-104822239179
-
ISBN-13978-4822239176
よく一緒に購入されている商品
この商品をチェックした人はこんな商品もチェックしています
ページ: 1 / 1 最初に戻るページ: 1 / 1
- コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方Noam Nisan単行本(ソフトカバー)
- プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識単行本(ソフトカバー)
- 2週間でできる! スクリプト言語の作り方 (Software Design plus)千葉 滋単行本(ソフトカバー)
- コンパイラ: 作りながら学ぶ中田 育男単行本
- 独学でプログラマを目指すあなたを応援する本。プログラミングは過去に学んだ知識も無駄にならないオンデマンド (ペーパーバック)
- まつもとゆきひろ コードの未来単行本
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
商品の説明
内容(「BOOK」データベースより)
Rubyの作者が初めて明かす!言語の作り方から学ぶ一流プログラマのスキルとセンス。本書のために作った新言語「Streem」を、どう設計&実装したかを一から解説。
著者略歴 (「BOOK著者紹介情報」より)
まつもと/ゆきひろ
1965年生まれ。鳥取県米子市出身。筑波大学第三学群情報学類卒業。プログラミング言語Rubyの生みの親。プログラミング言語デザインの第一人者。プロ言語デザイナー。株式会社ネットワーク応用通信研究所フェロー、一般財団法人Rubyアソシエーション理事長、Heroku Chief Architectなど、肩書多数。三女一男の父でもある(本データはこの書籍が刊行された当時に掲載されていたものです)
1965年生まれ。鳥取県米子市出身。筑波大学第三学群情報学類卒業。プログラミング言語Rubyの生みの親。プログラミング言語デザインの第一人者。プロ言語デザイナー。株式会社ネットワーク応用通信研究所フェロー、一般財団法人Rubyアソシエーション理事長、Heroku Chief Architectなど、肩書多数。三女一男の父でもある(本データはこの書籍が刊行された当時に掲載されていたものです)
登録情報
- 出版社 : 日経BP (2016/12/22)
- 発売日 : 2016/12/22
- 言語 : 日本語
- 単行本 : 352ページ
- ISBN-10 : 4822239179
- ISBN-13 : 978-4822239176
-
Amazon 売れ筋ランキング:
- 388,617位本 (の売れ筋ランキングを見る本)
- - 353位Linuxオペレーティングシステム
- - 408位システム管理・監査
- - 2,126位ソフトウェア開発・言語
- カスタマーレビュー:
この商品を買った人はこんな商品も買っています
ページ: 1 / 1 最初に戻るページ: 1 / 1
カスタマーレビュー
5つ星のうち4.4
星5つ中の4.4
7 件のグローバル評価
評価はどのように計算されますか?
全体的な星の評価と星ごとの割合の内訳を計算するために、単純な平均は使用されません。その代わり、レビューの日時がどれだけ新しいかや、レビューアーがAmazonで商品を購入したかどうかなどが考慮されます。また、レビューを分析して信頼性が検証されます。
トップレビュー
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
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でのグラフ作成ツールを知れた。
## 結論
プログラミング言語を自分で作ることというのはあまりないかもしれない。しかし,内部でどういうしくみで,何に気を払って実装されているのか,しっておくと他のことにも役に立つように感じた。
技術者の教養として読むのはいいと思った。
2017年1月3日に日本でレビュー済み
この本は一言でいうと完成された本ではありません。
完成されていないというのはある言語(この本の元になった連載のために作り始めたStreem)が完成してハッピーエンド、というわけではなく、まだまだ開発途上のまま本が終わるという意味です。
しかし、だから駄目というわけではなく、言語を作り始める動機、他の言語ではどうなっているのかの調査、言語の利用者に負担をかけない文法とはどういうものかの考察、論より証拠で作ってみる、それを踏まえての効率の追求、Ruby開発の裏話などプログラミング言語はこうやって作られていくのかという様子を追いかけることできます。
その際に初めはこう考えて作ったけどうまくいかなかったから書籍化の際に削る、ではなく、「(書籍の)前の方ではこう考えたけどうまくいかないことがあるからこう変えました」というような過程もすべてそのままになっており試行錯誤の過程を見ることができます。(さらにタイムマシンコラムという懺悔部屋もありおもしろいです(笑))
唯一不満があるのは索引がないことですね。
完成されていないというのはある言語(この本の元になった連載のために作り始めたStreem)が完成してハッピーエンド、というわけではなく、まだまだ開発途上のまま本が終わるという意味です。
しかし、だから駄目というわけではなく、言語を作り始める動機、他の言語ではどうなっているのかの調査、言語の利用者に負担をかけない文法とはどういうものかの考察、論より証拠で作ってみる、それを踏まえての効率の追求、Ruby開発の裏話などプログラミング言語はこうやって作られていくのかという様子を追いかけることできます。
その際に初めはこう考えて作ったけどうまくいかなかったから書籍化の際に削る、ではなく、「(書籍の)前の方ではこう考えたけどうまくいかないことがあるからこう変えました」というような過程もすべてそのままになっており試行錯誤の過程を見ることができます。(さらにタイムマシンコラムという懺悔部屋もありおもしろいです(笑))
唯一不満があるのは索引がないことですね。