カテゴリ:ソフトウェア
AI(artificial intelligence)
人工知能といわれますが、研究者の中でも何をもって人工知能といえるかは分かれています。巷で「AI搭載」などといっても様々な技術で特定の状況でそれっぽく動かせていることが現状だともいえます。シンギュラリティという言葉で人工知能の進化を掲げる研究者がいて、その後(今まで無理であった一部の)特定のことであれば人間を超えて結果を出すことができていて、技術開発は盛んに行われています。
AI技術はツールであり、本格的にコンピュータプログラミングや数学に携わる人間がそのツールに踊らされることのないように、使う立場になりましょう。
※人工知能に関しては理解が変わることが想定されるものです。この内容は2020.4現在のものです。
コンパイラ言語とインタプリタ言語
という、特定のプログラミング言語があるわけではありません。
どちらもコンピュータが直接実行できる機械語に翻訳されますが、プログラムの実行形態として機械語で記述された実行ファイルにしてから実行させるコンパイラ言語と、そのプログラミング言語で書かれた(ソース)ファイルを1ステップごと翻訳実行するインタプリタ言語に大別されます。
他にも○○言語といいながら特定のプログラミング言語ではない呼び名がありますので注意しましょう。
コメント
プログラムのコーディングをするとき、見返したり他の人が理解しやすくするためにもコードの説明を加えておくことが望ましいです。コード中に日本語でも英語でもいきなり説明文を書くとエラーになってしまうのでそれぞれのプログラミング言語には処理と関係なくするための記述方法があります。
C言語であれば //2つのスラッシュ以降の改行まで部分はコメント
または /*スラッシュとアスタリスクで囲んだ部分がコメント*/
説明だけでなく、試行錯誤しているとき元コードを残すためにも使えます。(コメントアウト)
スタック
stackという言葉には積み重ねられた干草などありますが、コンピュータ分野では最後に入れたものから取り出せる(LIFO:Last-In First-Out)データ構造のことを指します。
身近な例ではブラウザ履歴で戻る進むことや画像編集時などのUndo機能の記録構造はスタックです。
統合開発環境(IDE)
システム開発は、エディタやコンパイラ、リンカ、デバッガなど様々なソフトウェアが必要で、さらに動作対象のマイコンやOS、プラットフォームによって対応したものが必要になる。これらがまとめられて提供されているものをIDE(Integrated Development Environment):統合開発環境 といいます。
開発環境の準備や開発自体が容易になりますが、IDEによっては独自のデータ形式になることも多いので作業ファイルの取り扱いに注意が必要です。
POS
販売時点情報管理(Point of sales - system)を意味します。
コンビニやスーパーでは支払いする所にレジ端末を置いて、バックヤードのコンピュータが商品価格などの情報を蓄積しています。今では様々な機能が連携されたり、アプリとしてスマホをPOSレジとして活用することもできるようです。
商品コードから価格を求めて、販売した記録をつけ、必要に応じ集計情報を出すことが基本です。基礎的なプログラミングができればもう作れますね。データ管理をより本格的に扱うならばSQLなども必要になります。
CODEC
CODEC(コーデック)は動画や音声を扱うときによく出てきます。
音楽であれば、実際に演奏されている音をマイクから取り込んだのち、例えばMP3という形式にのっとってコンピュータのデータに変換(符号化)する「Coder」(enCoderともいう)と、保存などされたMP3形式のデータをスピーカーで再生させるための周波数信号に変換(復号化)する「Decoder」がセットになります。※「Compression/Decompression」(圧縮/伸長)の場合もあります。
ソフトウェアだけでなくハードウェアでもいくつかのCODECが実現されていますが、基本的にはプレイヤープログラムがCODECを利用しデータの再生をしています。
疑似乱数
サイコロをふってでる目のように、不規則な動きをさせてみたい。
C言語にはランダムな値を得るしくみとして、rand( )と初期化のためのsrand( )関数があります。rand( )だけではいつも同じ順番に数が得られてしまうのでsrand( )に現時刻を与えることで不規則な値を得るように見せかけることができます。
基本的にC言語など多くのプログラミング言語で準備されている乱数の仕組みは疑似的なものなので、疑似乱数と呼びます。
うるう年
でも、うるう年ごとにスマホやパソコンの日付を設定せずに自動で表示されています。
うるう年は「4の倍数年にあり、でも100の倍数年には無く、でも400の倍数年にはある」というものです。
法則性があれば、プログラムで解決しやすいことになります。
たとえばC言語などで丁寧に組み立てるとしたら、次のように
if(year % 4 == 0){
if(year % 100 == 0){
if(year % 400 == 0){
days = 29;
}else{
days = 28;
}
}else{
days = 29;
}
}else{
days = 28;
}
考え方次第では、もっと少ない処理で同じことができます。(%は余りを求める演算)
可逆圧縮と非可逆圧縮
「かぎゃくあっしゅくとひかぎゃくあっしゅく」早口言葉ではありません。
様々な手法でデータ量を小さくすることを圧縮といいます。その中で、圧縮後に元と同じデータが再生できる手法は可逆(Lossless)、圧縮後の再生データは元と異なる手法が非可逆(Lossy)に分けられ、非可逆は多くの場合圧縮率が高くなります。
元に戻せないと困る文書等には可逆圧縮を用いて、画像や音声は人間の感覚で気づかない部分もあるため非可逆圧縮でデータ量を大幅に削減して活用されています。