見出し画像

プログラミングのこと何もわからない人のための、プログラミングでできることのざっくりした説明

この資料でわかること

・プログラミングで何ができるか
・コンピューターは何が得意なのか
・いろんなプログラミング言語の紹介

コンピューターの得意なこと

・先に手順を教えてもらったことならすごい速さで計算できる
・その上人間と違って疲れない


アポロ計画の時、まだ機械のコンピューターは一般的ではなかったので、ロケットの設計で設計者が8659.158のルートを知りたいとか積分してほしいとかなったら、雇われたお姉さんたちが別の部屋で頑張って計算してた。
その頃はコンピューターはただ単に計算する人という意味だった。今はパソコンがあるので、数学ができるお姉さんはもっと楽しいことを考えることができる。

例2
画像ファイルは、一番重たい方式のをメモ帳で開くと、
(129,250,255), (129,250,255), (129,250,255)...
みたいな数字がたくさん並んでる(わかりやすいよう脚色しています
()が一個一個のドットを表していて、中の3つの数字でRedGreenBlueの色を表している。
例えばこれを全体的に赤くしたくなった時、
手で全部Redに10づつ足していくとなるとめっちゃ大変。
256x256の画像でも40000回ぐらい足し算しないといけないけど、最近のコンピューターは2.3GHzぐらいの計算機(CPU)を積んでいて、これは簡単に言うと1秒に2,300,000,000回足し算できると言うこと(ざっくりした例
つまり40000回の足し算ぐらい0.0001秒ぐらいで終わってしまう

例3
長い文章から「」の中身だけ抜き出すとかも、やることが明確なのでコンピューターには簡単。

プログラミングができること

・コンピューターのわかる言葉でコンピューターに頼み事をする
・形の決まったデータを計算して戻す
・形の方は人間が決めてあげないといけない


画像を作るとき、
毎回三つの三桁数字を並べるのは文字数が多くてファイルがデカくなりすぎる
先に8色決めて、色をABCDEFGHで呼ぶことにすると、
1ドットに使う文字数は、
もとの方式に比べて
(129,250,255), の15文字からA,の2文字に収まるので.ファイルサイズがめっちゃ小さくなる
そのかわり、ここのAは(129,250,255) を表すよということをどこかに書いておく必要がある。
こんなふうに、データの表し方を工夫することでファイルサイズを小さくすることができる

例2
乗り換え案内は、出発点と到着点と時間を決めてあげると、勝手にルートとかかる時間を計算してくれる。
どれか一つでも抜けていると計算できないので、その場合は出発時間が書かれてない時は今の時間を使うよ、とかルールを決めてアプリのどこかに書いておいてあげないといけない

例3
インターネットでは、HTMLと呼ばれる形の決まっている文書を通信しあって、ウェブサイトを表示している。
この方式では、
<h1>と</h1>に挟まれた文章が見出しだよーとか、
<img>で画像が入ることを表すよ、とか言うルールをW3Cという団体が決めていて、それをもとにGoogle Chromeとかが文書をウェブサイトとして表示している

プログラミング言語の偏見に満ちた紹介

いろんな言語があり、ここで扱うのは一例です

C(しー)
めっちゃ古いし書くのも大変
けどすごく動作が速いので、よく使う部分やOSとかに今でも使われてる
たくさんの派生言語がある

Lisp(りすぷ)
これも古い。昔の人工知能の研究などに使われている。
使うと悟れるらしい

Erlang(あーらん)
電話回線のプログラムなどに使われてる
たくさんの処理を同時にやるのが得意

Python(ぱいそん)
動作はそんなに速くないけど書きやすいと有名
人気がある
いろんな人がいろんな断片をあげてくれてるので、ネットでコピペしたやつがすぐ動いてくれて嬉しい
逆に言うと誰が書いても大体同じになるので、オタクはそういうのあんまり好きじゃない

Java(じゃば)
業務用ソフトでよく使われてる
オブジェクト指向と言って、例えば名簿を作るとき、
表を作って埋めるように、
メンバーにはひとりひとりに名前と生年月日と部署がいるね、とか決めて扱うのが得意
オブジェクト指向の思想は今でもいろんなところで使われている。

Javascript(じゃばすくりぷと)
Javaとは別物
インターネットで動かせるプログラムをつくりた〜いという気持ちから生まれた
しょぼかった頃のインターネットと一緒に進化してきたので、仕様がわりと秘伝のソース

なぜいろいろなプログラミング言語があってもコンピュータは動くのか

・いろんな言語があるのだけど、最終的にはコンピューターの中では機械語という0101010100101000000みたいなやつに翻訳されている
・コンピューターは基本的にはこの機械語しかわからない
・CPUが本来できるのは基本的にはデータをコピーしてきたり、足し算や引き算をしたり、どっちの数が大きいかとか同じ数かどうかを比較したりなど、単純な操作だけ


最初のプログラミング言語FORTRAN(ふぉーとらん)ができるまで、人間はこの機械語を紙に穴を開けたパンチカードを使ってコンピュータに伝えたり、アセンブリ言語という、機械語に英単語を対応させたものを使ってプログラミングをしていた。

例2
掛け算を作りたいのに足し算しかできないようなとき、九九の表がなくても 7 x 4 なら 7+7+7+7 をやれば良いように、複雑な計算もCPUにできるように計算方法を考えることができる。でも毎回掛け算をやりたくなるたびに足し算から掛け算を定義するのは大変。よく使う動作は再利用したくなってくる。(同じこといっぱい書くのはプログラムにおいてはあまり良くない。)
再利用のために、よく使う動作は言語の基本的な文法に組み込んでしまったり、ライブラリという再利用できるプログラムのかたまりに分けて保存しておいたりする

この文は、株式会社Xemonoで研修用資料として書かれたものの抜粋です。
わかりやすくするためいくつか脚色してありますが、明らかに間違っている部分などあれば書いた人(@kinakobooster)にご連絡ください
書いた人
とりい
株式会社Xemonoの代表。十三機兵防衛圏たのしい。

Header photo by Martim Braz on Unsplash

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

17
UI/UXスタジオXemonoの公式note。お前のアプリを最高にしてやる。