はじめてUNIX で仕事をする人が読む本 の備忘録 08
お世話になった本
この連載ブログを書くにあたり、お世話になった本がこちら。LPICと被っているところもありますが、実務での使い方なんかも扱っており、良書だと思います。
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
第2部 プログラミング環境編
第8章 UNIX プログラミング環境
第2部ではUNIX におけるプログラミング環境について解説を行うらしい。
UNIXプログラミング環境の特徴
ツールボックスアプローチ
プログラミング環境には、大別して2つの種類がある。
一つは、統合開発環境。機能は豊富だが、重い。しかし、このように全ての機能を1つのソフトウェアでまとめる方法をキッチンシンクアプローチと呼ぶそうだ。
もう一方は、単機能のソフトウェアを組み合わせて使う方法。必要なものだけ揃えればよかったり、一部だけカスタマイズしたらよくなる。しかし、各ソフトウェアの仕様を一通り理解する必要がある。このように、単機能で実現可能なことを複数の組み合わせで実現したりする方法をツールボックスアプローチという。
UNIX の環境では、ツールボックスアプローチの発想に基づいている。
プログラミング可能なシェル
シェルでプログラミングがかけて幸せだよね。
「1行プログラム」が書ける
わざわざ、エディタを開いて、#!/bin/sh
とかしなくても、プロンプトでいきなりコードを書ける。これが早くていい。可読性は捨てることがある。
この技をワンライナーと呼ぶ。
これを芸の道にまで発展させた人たちを、シェル芸人と呼ぶことがある。
オンラインマニュアルがある
man
GNU info
-h, --help
man
があるかどうかは、man -k <keyword>
で探せる。もし、名前がフルでわかっているなら、これでもいい。man -f passwd
主なコマンドの配置
Ubuntu | ||
---|---|---|
コンパイラ | GNUコンパイラ | /usr/bin/gcc |
中略 | ||
インタプリタ | perl | /usr/bin/perl |
Python | /usr/bin/python |
|
PHP | /usr/bin/php |
|
Ruby | /usr/bin/ruby |
|
シェル | sh | /bin/sh |
bash | /bin/bash |
|
中略 | ||
zsh | /bin/zsh |
代表的なプログラミング言語
注意:コードの書き手によって異なることがあります。
- C
- 演算子、データ型、制御構造が豊富
- 移植性が高い
- ハードウェア寄りの処理の記述も可能
- C++
- Java
- Perl
- Python
- 最近は、機械学習とかAI でも使われている
- 言語仕様が小さい
- インデントによるブロック構造
- Ruby
- 日本製。まつもとゆきひろ氏が開発
- オブジェクト指向言語
- シンプルな文法
- 整数や文字列なども含め、全てがオブジェクト
- Lisp
- 関数型言語
- 前置記法
- 括弧を使用したリスト表現で構成
- リストで表現されたプログラムはデータとしても扱える
- アセンブリ言語
開発ツール
- オンラインマニュアル
- バージョン管理ツール
- コンパイラ
- make
- リンカ
- なにこれ?
- デバッガ
- 大事
コンパイラ
コンパイル対象の言語で書かれたソースファイルから、実行可能なバイナリを生成するプログラム。
中には、このコンパイラを自作して楽しむ人もいる。
make
ファイルの依存関係やコンパイル、リンクの手順を記述したファイル(Makefile) に基づいて、自動的にこれらの処理を実行するツール。
デバッガ
プログラムの不具合の原因究明に使用するツール。
ソフトウェアデバッガ
OSの支援によりユーザプログラムのデバッグを行うためのツール。
ブレークポイントの設置など。
ハードウェアデバッガ
組み込み開発環境では使えない。そのような場合に、ICEやJTAGデバッガが使用される。
これらのデバッガは直接CPUに対して馳tら着かけることでデバッグを行う。OSが存在しなくても使用できる。
C言語による開発実例
skip
Javaによる開発事例
skip
LL言語による開発実例
Perl
バージョン
perl -v This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi (with 34 registered patches, see perl -V for more detail) Copyright 1987-2012, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
sample.pl
$ whereis perl perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz $ vim sample.pl $ cat sample.pl #!/usr/bin/perl print "Hello, World!\n";
実行権限をつけて実行
$ chmod u+x sample.pl $ ./sample.pl Hello, World!
#!/usr/bin/perl
はこう書き直すことも出来る。
#!/usr/bin/env perl
こうすると、環境変数PATH
に応じて実行されるべきperlコマンドが決定されるので、絶対パスを記述する必要がなくなる。
移植性はよくわからない。なぜなら、100個スクリプトがあって、全てこれで統一されていればいいが、1つだけフルパス指定だった場合、環境移行して、パスが変わったら使えないのが出てくる。可能性がある。
以上で、第8章 UNIX プログラミング環境を終わります。
次回は、第9章 バージョン管理システムに行きたいと思います。