Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

スッキリ分かるC言語入門

スッキリわかるC言語入門 (スッキリわかる入門シリーズ)
プログラム言語の習得において、どの言語から勉強を始めるのか、はあまり意識されることがないのだが、かなりの重要事項だ。最初の言語学習を通じて養われた知見、認識が、2つ目以降の言語を学ぶ際の橋渡しをしてくれる。さらに異なる言語の学習を続けると、言語間の共通概念、ある言語独自の機能や概念が体系的に構成、認識され、学習効率は向上する。
一方、最初に学ぶ言語、2つ目以降に学ぶ言語のコンセプトが違い過ぎる場合、その橋渡しが良好に機能せず、2つ目の言語習得に要する負担は、一つ目のときと変わらないこともあり得る。

英語学習を想像してみるとよい。日本人が英語を苦手とするのは、日常生活で英語を用いない、学校教育云々、色々言われるのだが、原理原則で考えてみてほしい。日本語はウラル・アルタイ語族に、英語はインド・ヨーロッパ語族に分類されている。両言語系統は、分類上、最も遠くに位置している。つまり全く特性の違う言語ということだ。原理原則として、タイプの異なる言語を学ぶのは難しい。プログラム言語も一緒だ。

この観点から、プログラムの初学者が初めて学ぶ言語としてC言語は、かなり良好なポジションにある。C言語を用いた場合の制約や問題をきっかけに、後発の言語へ派生している経緯もあり、C言語で学んだ概念は他の言語でも通じやすい。
学習範囲が広がれば、結局のところC言語に限らず、どの言語でも構文には、それ程変わりがないことを知る。言語特有の機能や概念を学ぶことを重視するようになる。
初学者は、まず構文を学び、加えて特有の要素を学ぶ必要があるため、最初だけは学習負荷が大きいのだ。

『スッキリ分かるC言語入門』(以下、スッキリ~)はタイトル通り、C言語の入門書だ。特にC言語特有の機能であるポインタの紹介を工夫しており、初学者にお勧めの書籍だ。

続きを読む

作って理解するOS x86系コンピュータを動かす理論と実装

作って理解するOS x86系コンピュータを動かす理論と実装
今年やり残したことを消化する時期がやってきた。今回紹介する書籍に目を通すことも、そのようなやり残しの一つだった。本書は9月に頂いたものだ。せっかくの頂きものなので、年内に目を通して、何らかの記録を残しておこうと考えていた。頂きものだからと言って、ステマに類する投稿ではないことを前置きしておく。

OS、並びにその作成については好奇心以上の関心があるものではなく、そのテーマについての読書は、10年以上前に読んだ『30日でできる!OS自作入門』*1以来だった。同書の著者であり、『作って理解する~』の監修者でもある川合秀実氏は、本書を次のように評している。

  • 効率よくたくさんの知識を教えてくれ、効率よく学ぶことができる。
  • OSの作り方を紹介した本ではない
  • PCの仕組みを深く説明している本

本書は「作って理解する」と謳うものの、読んで理解する部分が多い。実際のところ、700ページ超の半分はx86アーキテクチャの説明に割かれている。そして、この部分が私にとっては大変得るものが大きかった。同時に、この部分が本書を特徴づけている部分でもあると感じた。それは著者自らが言うところの、

  • OSの入門書であると同時にコンピュータの入門書
  • コンピュータの基礎からOSの基礎までを体系的に理解する

を多分に反映している箇所でもあるからだ。

続きを読む

42 SILICON VALLEY Piscine 2017 Day04を考える アルゴリズム問題の手引き。

先日、ロジック問題に対する一つのアプローチを紹介した。アプローチ手法は異なれども、自分で考えることはロジック問題に限らず、何かにつけ共通する活動の一つだ。

42 SILICON VALLEY Piscine 2017 Day02を考える 私なりのアプローチ。 - Technically Impossible

しかし考え過ぎるのは良くない。時には考える必要がない、あるいは考えない方が良い場面もある。それは、いわゆる定石が適用できる、あるいはそれを積極的に適用すべき場面だ。特にプログラミングにおいては、そのような定石となる「アルゴリズム」が存在する場合だ。

Day02のロジック問題を、一から自分で考える問題とするならば、アルゴリズム問題は知識を活用し、適用するための問題だ。加えて、提供された限られた学習機会を通じて、どれだけのことを学び、実践適用できるかを試している問題にも見える。
ただし課題にアルゴリズム問題と明記されているわけではなく、受講者が判別、判断する必要がある。Day04 Exercise 08、09はその典型例だ。

42SV、2017年PiscineのDay04の課題を題材に、その取り組み方を説明してみよう。対象の課題はExercise 08~09だ。この投稿がPiscine受講生の一助になれば、と思う。

続きを読む