世界を動かす技術を、日本語で。

コンピュータサイエンスのための数学 (2018) [pdf]

概要

このテキストは PDF内部構造 の一部を表している。 主に オブジェクト参照リンク情報 が含まれる。 内容は バイナリデータエンコードされた文字列 も混在。 通常の テキストデータ とは異なり、直接的な読み書きには専門知識が必要。 PDFの 目次やリンク の定義部分である可能性が高い。

PDFオブジェクトとリンクの構造

  • PDFファイルは オブジェクト 単位で構成される
  • 各オブジェクトは 番号 で識別
  • /Title/Parentなどのエントリは 目次や階層構造 を示す
  • /D/S /GoToリンク先やアクション の指定
  • [25 0 R /XYZ 162 617.768 null]のような記述は ページ座標ジャンプ先 を示す

バイナリ・エンコードデータの存在

  • (�v�c�v\r��$��2)のような文字列は バイナリまたはエンコード済みデータ
  • これらは タイトルや注釈 などの情報を含む場合がある
  • 日本語や特殊文字は エンコード方式 によって正しく表示されないことがある
  • エンコード情報がなければ 直接の復元は困難
  • 専用ツールやライブラリで デコード・解析 が必要

目次・リンク構造の解析

  • /Next/Prev前後の目次項目 へのリンク
  • /Aアクション(例:ページジャンプ) を示す
  • /Parent階層的な親子関係 の定義
  • /Count/First子要素の数や先頭要素 を示す
  • これらの情報をもとに PDFの目次やナビゲーション が実現

解析・編集のポイント

  • PDFの 内部構造理解 が不可欠
  • テキスト抽出や編集には 専門ツール(例:pdfminer, pdftk, qpdf) 利用推奨
  • バイナリ部分やエンコード文字列の扱いには 注意が必要
  • 誤った編集は ファイル破損 の原因
  • 目次やリンク修正時は バックアップの取得 が重要

まとめ

  • 本データは PDF内部のオブジェクト定義 である
  • 主に 目次やリンク、階層構造 を記述
  • 一部は バイナリやエンコード文字列 で人間には判読困難
  • 解析や編集には 専門知識とツール が必要
  • 通常のテキストファイルとは 大きく異なる構造

Hackerたちの意見

コンピュータサイエンスの必読書100選みたいなリストはよく見るけど、必ず持っておくべき本のトップ5ってあるのかな?

やる仕事の種類によると思うよ。例えば「どのプログラミング言語を学ぶべき?」みたいな感じ。あんまりいい答えじゃないけどね。

あなたの目標が何かわからないけど、もし私みたいにコンピュータサイエンスの学位がなくて、ギャップを埋めたいなら、このサイトは素晴らしいよ。 https://teachyourselfcs.com/ 「まだ多すぎるセクション」を見てみて。時間がないなら、彼らが推奨するトップ2冊を教えるよ。

特におすすめの本はないけど、この本は関係よりも数字に重点を置いてるみたい。もしかしたらPDF検索がうまくいってないのかもだけど、「型理論」と「カテゴリ理論」で0件の結果が出たよ。もしコンピュータサイエンスの数学に興味があるなら、そっちも調べてみるといいかも。

Concrete Abstractionと次にSICP、どちらもScheme用だよ。これをやれば、CSの基礎はほとんど理解できてるはず。別の言語を学ぶのは楽勝だよ。

プロジェクトを通じてプログラミングを練習する方がずっと有用だよ。特定の問題を解決するために知識が足りないと感じたら、そのことについて調べればいいんだ。

トップ5では分野をカバーできないよ。俺のトップ10はこれだね:

  • BrookshearとBrylow - Computer Science - An Overview
  • Forta - Teach yourself SQL in 10 minutes
  • Stallings - Computer Organization and Architecture
  • Stallings - Operating Systems - Internals and Design Principles
  • CLRS
  • Kurose, Ross - Computer Networking - A Top Down Approach
  • Sipser - Introduction to The Theory of Computation
  • Stallings, Brown - Computer Security - Principles and Practice
  • Aumasson - Serious Cryptography
  • Russell, Norvig - Artificial Intelligence - A Modern Approach これでもプログラミング言語はカバーしきれないけどね。Pythonはこの分野の共通語だし、過去におすすめされた本の多くは古くなってるけど、MatthesのPython Crash Course第3版はいいかも。

この本、めっちゃ好きなんだけど、難しすぎて、各段落の1-2ページしか理解できない。でも、入力と出力の無限リストみたいな関数についての素晴らしい洞察を得たし、数学的表記で「全てが失われたわけじゃない」っていうユーモアも最高だった。死ぬ前にこの本を完全に理解できたらいいな。

各段落の1-2ページ。 ヴィクトル・ユーゴーが書いた本を想像して笑っちゃった。

「1-2ページ」って言ってるけど、実際は-1ページだよね。

これがHackernewsの好きなところなんだよね。最近これを探してたら、フルPDFで手に入った!もっといいスクリーンリーダーのおすすめがあったら教えてほしいな。

LaTeXの数式が読めるスクリーンリーダーってあるの?もし可能なら驚くけど、その数式の記号のほとんども言えないよ。

Hacker Newsで議論の続きを見る