基礎中の基礎だと思うのですが、
プログラミングとはどのようなことをすることですか???
名前の通り、プログラムを作ることであるというようなことを聞いたことはあるのですが、それだけでは全く分かりません。
専門用語は使わないで教えてください。
具体的な例みたいなものもあったらお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (8件)

はじめまして。


じゃ私は、ぐっと身近なところで例えたいと思います。

「牛乳あっためてよー」と、コンピュータ君にお願いする場合、人間君だったらその言葉だけで通じますが、コンピュータ君はわかりません。順序だてて説明しなくてはなりません。

 1、冷蔵庫から牛乳を出す。
 2、牛乳をコップに入れる。
 3、電子レンジのドアを開け、そのコップをいれ、ドアを閉める。
 4、電子レンジのボタンを押す。
 5、「ピッ!」と鳴ったら、ドアを開け、コップを取り出す。

この一連の作業をさらに、コンピュータ君の理解できる言葉に訳します。(人間君でも日本語、英語といろいろあるように、コンピュータ君の言葉も、演算が得意な言葉、処理速度が速い言葉、事務処理が得意な言葉etc..といろいろあります。)
そうしてできた命令の集まりがプログラム、そしてこのプログラムを作ることをプログラミングといいます。実際のプログラムはもっと複雑になりますけどね。

こんな例を出して、「ばかにするなー!」とか思われそうだけど・・参考になれば幸いです。
    • good
    • 0
この回答へのお礼

「ばかにするなー!」だなんて全然思ってませんよ。身近な例まで出していただいて、とても分かり易かったです。しかも、簡潔にすごいまとまっていたのですぐに理解できました。ありがとうございました。

お礼日時:2001/02/20 00:05

>kokucho81さん


横やりになってしまいますが、その定義では「操作」や「操縦」も含まれてしまいます。操り人形を操る行為は人形に対するプログラミングとは呼べません。
    • good
    • 0

人間Aさんが、対象物B(一般にはコンピュータ)を『説得』し、


Aさんの『思い通り』に動かそうとする『行為』、または、その『過程』。
    • good
    • 0

一般化してみます。



どこの民族の言葉でも命令形ってありますよね。
AにBをせよ
と言った感じで対象物Aに動作Bを指定するのが基本です。(対象物Aが実行者自身の時はAを省略することもあります。例:寝ろ、起きろ)

我々の普段の動作というのはこのような命令をその場面場面で脳から受けて実行されています。例:(進行方向にドアがある)→ドアを開けろ

さて、普段の生活の動作を詳しく見るとそれはより細かい動作の組み合わせになっています。「ドアを開けろ」ならば例えば「ドアの前に立て、ドアノブを回せ、ドアノブを手前に引け(これらの動作をさらに細かく見ることもできます)」等のように。ここで注目したいのが動作というのは命令の集まりだということです。そして目的を持った動作というのは命令の集まりに目的によって規則性があるということもわかります。

このようにある目的をもった命令の集まりをプログラムと言います。そして、プログラムをあらかじめ作っておく作業をプログラミングと言います。
プログラミングをしておくことでいちいちその場で同じことを考える手間が省けます。いちいちドアの前に来るたびに開け方を考えているようでは一日などあっという間に終わってしまいます。

実は一ヶ月のスケジュールを組んだりテニスのラケットを素振りしたりするのもプログラミングになります。
ちなみに脳にプログラミングするには基本的には経験しかありません。例えば、ほとんどの人間には経験によってドアを開けるプログラムが脳の中に書き込まれています。いちいちドアを前にしてドアノブを回すとかまで考えていません。従ってドアノブがついていながらじつは引き戸だったりする意地悪なドアを用意すると、自分の持っているプログラムで対応できないのですぐには開けられません。もちろんドアを見たことが無い人もプログラムを持っていないので簡単にはドアを開けることはできません。
人間は学習能力が高いので、他の人が開け方を示すと普通のドア程度ならすぐにプログラミングします。しかし、これが寿司のにぎり方などになるとそう簡単にはプログラミングできません。

優秀なプログラマはこういった普段の生活の動作もすぐに必要なレベルの命令の集まりに細分化(=プログラミング)できます。
    • good
    • 0

こういう風に、皆さんが何も知らないあなたに教えるのもプログラミングと言えるかもしれません。


みんなでプログラマーになって cosmopolitan というコンピュータに「プログラムとは何ぞや」を教え込む(プログラミング)わけです。
コンピュータって利口そうなんですが、実は何にも知らないんです。身近なところでは電卓ですね。すげー難しい計算をいとも簡単に解いてくれますが、よく考えると人間が計算式を教えなければ計算できないんですよ。
つまり計算式が一種のプログラムと言えます。
(実際には内部に計算のやり方というプログラムもあったりするんですが、話がややこしくなるので割愛)
    • good
    • 0

ゲームで例えてみましょう。


まず、RPGで主人公がスライムを攻撃したとしましょう。
○ボタンが押されたのを検知して主人公は攻撃します。
主人公の攻撃力、武器の攻撃力、素早さ等を計算してトータル攻撃力を計算します。
一方スライム側の守備力、素早さ、運などの数値を元に防御力を計算します。
攻撃力と防御力からダメージを計算します。
防御力が劣っていれば、ダメージを受け、ダメージ量がスライムのHPを越えていればスライムは倒されたことになります。スライムの絵を消します。
倒せば戦闘終了の音楽が鳴らし、スライムに設定されている経験値、金額を主人公の持ち分に足し算します。
これで先頭画面を抜け、フィールド画面に戻ります。

このような計算、音楽をならす、画面表示を切り替える等がゲームで行われているプログラミングです。プログラムを組んでできあがった物がソフトウェアです。
実際には上記動きをコンピュータが理解するようにプログラミング用の言語でいろんな命令を記述します。(計算、音を鳴らす、絵を表示する等)
コンピュータはそれを読みとって指示された計算や、処理をするわけです。
    • good
    • 0

プログラミングとは、コンピュータに仕事をさせるための手順を記述することです。


ごく、簡単にいうと、
その一つが、プランナーと呼ばれる人が作成するもので、プログラム仕様書とかプログラム条件書よばれるものです。
入力は何か、どういう項目が入力されるのか、どういう処理をするのか、そして出力をどうするか、というものを文書として記述します。
例えば、「伝票から数量3桁、単価5桁を入力する。金額=数量*単価を計算して、結果を印刷する。」という具合です。
もう一つがコーダーと呼ばれる人が作るもので、プランナーが作成したプログラム仕様書に基づいてコンピュータに対しする命令を記述します。この命令を記述することをコーディングと言います。
このコーディングの具体例はsokuratesuさんが書かれています。

上記2つでプログラミングと言えると思います。
    • good
    • 0

パソコンを動かすための命令を作ることをプログラム作りといいます。


命令を出すためには、コンピュータがわかる言葉で命令を出さないといけません。その言葉が、現在いろいろと開発されています。

1+1を計算して画面に出してという命令から、ゲーム、ワープロ、表集計、インターネットを使えるようにする命令までいろいろとプロブラムされています。コンピュータでできることは、すべてプログラムされていて出来るのです。
少し前までは一般にはBasicという言語がありました。その言語を立ち上げて
命令文を書きます。例えば「1+1」をさせたいのであれば

10 A=1+1
20 PRINT A

と打てば、2と印刷されました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qプログラミングに興味がありますが、プログラミングとは、どのようなことなのですか

プログラミングとは、どのようなことをプログラミングというのですか

Aベストアンサー

プログラミング言語を使って処理手順を記述する事です。

Qプログラミング基礎理論について

静的意味と動的意味を具体的に教えていただけませんか?
あと、集積構文要素の実列個体のための式、選択構文要素の実例個体のための式
case式、リスト構築子の実列個体のための式、を具体的に説明していただけませんか。よろしくお願いします。

Aベストアンサー

理論と言うよりプログラマ的な見解になってしまいますが。
プログラミング上の静的(static)動的(dynamic)の意味は領域の確保の形態を指すことだと思います。
静的な領域は基本的にスタック(積み上げ式)の形でロード時にあらかじめ確保されます。
確保された領域のアドレスはプログラムがアンロードされるまで不変です。
絶対アドレスで参照できますから高速です。
ですがあまりたくさんの静的領域を使うとリソース不足を起こす事になります。
動的領域は必要な都度確保されたり開放されたりする領域ですから、そのアドレスも不特定です。
当然、相対アドレスとして算出する必要がありますから参照に時間がかかります。
でも、その分少ないリソースを有効に使えます。
このへんの折り合いをどう付けるかがプログラミング技術という事に繋がるんだろうと思います。
その他のことについては分かりません、学がないもんで(^^;)

QC#のプログラミングについて(基礎・・)

どうしても エラーが出ます
エラーの表示は 下のようなものなのですが、どういう意味かわかりません。
C:\Documents and Settings\gc60117\デスクトップ\Project3\CodeFile1.cs(20): 引数を '2' 個指定できる、メソッド 'Vector' のオーバーロードはありません。 
自分なりのプログラミングデータを記述します。
間違いを指摘していただけると助かります。
using System;
class Vector
{
private double x;
private double y;
public double Length
{
get{return Math.Sqrt(x*x+y*y);}
}
public void Write()
{
Console.Write("({0},{1})",x,y);
}
public static Vector I
{
get{return new Vector(1,0);}
}
public static Vector J
{
get{return new Vector(0,1);}
}
public static Vector operator*(double k,Vector a)
{
Vector t= new Vector();
t.x=k*a.x;
t.y=k*a.y;
return t;
}
public static double operator*(Vector a, Vector b)
{
double z= new double();
z=a.x*b.x+a.y+b.y;
return z;
}
public static Vector operator+(Vector a,Vector b)
{
Vector u=new Vector();
u.x=a.x+b.x;
u.y=a.y+b.y;
return u;
}
public static double Angle(Vector A,Vector B)
{
double r=new double();
r=A*B/(A.Length*B.Length);
r=Math.Acos(r);
r=r/6.28*360;
return r;
}
}
class kadai53

{

static void Main()

{

Vector A;

double x, y;



Console.Write("ベクトルAの成分を入力してください\n");

Console.Write("x成分は ? ");

x = double.Parse(Console.ReadLine());

Console.Write("y成分は ? ");

y = double.Parse(Console.ReadLine());



A = x * Vector.I + y * Vector.J; //静的プロパティと,一つ目の*演算子,+演算子の呼び出し

Console.Write("A = "); A.Write();



Vector B = new Vector(0, 1);

Console.Write("\nB = "); B.Write();



Console.WriteLine("\nベクトルAとベクトルBの内積の値は{0}です", A*B);//二つ目の*演算子の呼び出し

Console.Write("ベクトルAとベクトルBがなす角度は{0}度です\n", Vector.Angle(A,B));

}

}

どうしても エラーが出ます
エラーの表示は 下のようなものなのですが、どういう意味かわかりません。
C:\Documents and Settings\gc60117\デスクトップ\Project3\CodeFile1.cs(20): 引数を '2' 個指定できる、メソッド 'Vector' のオーバーロードはありません。 
自分なりのプログラミングデータを記述します。
間違いを指摘していただけると助かります。
using System;
class Vector
{
private double x;
private double y;
public double Length
{
get{return Math.Sqrt(x*x+y*y);}
}
public ...続きを読む

Aベストアンサー

using System;
class Vector
{
private double x;
private double y;

/* コンストラクタ */
public Vector(){
}

/* 二つのdouble値を引数に持つコンストラクタ */
public Vector(double a,double b){
x = a;
y = b;

}


public double Length
{
get{return Math.Sqrt(x*x+y*y);}
}
public void Write()
{
Console.Write("({0},{1})",x,y);
}
public static Vector I
{
get{return new Vector(1,0);}
}
public static Vector J
{
get{return new Vector(0,1);}
}
public static Vector operator*(double k,Vector a)
{
Vector t= new Vector();
t.x=k*a.x;
t.y=k*a.y;
return t;
}
public static double operator*(Vector a, Vector b)
{
double z= new double();
/* 式が間違っている */
/* z=a.x*b.x+a.y+b.y; */
z=a.x*b.x+a.y*b.y;

return z;
}
public static Vector operator+(Vector a,Vector b)
{
Vector u=new Vector();
u.x=a.x+b.x;
u.y=a.y+b.y;
return u;
}
public static double Angle(Vector A,Vector B)
{
double r=new double();
r=A*B/(A.Length*B.Length);
r=Math.Acos(r);
/*
A = (1,0)の時
90度からずれるため,Math.PIを使うことにした
*/
r=r/(2 * Math.PI) *360;
return r;
}
}
class kadai53

{

static void Main()

{

Vector A;

double x, y;



Console.Write("ベクトルAの成分を入力してください\n");

Console.Write("x成分は ? ");

x = double.Parse(Console.ReadLine());

Console.Write("y成分は ? ");

y = double.Parse(Console.ReadLine());



A = x * Vector.I + y * Vector.J; //静的プロパティと,一つ目の*演算子,+演算子の呼び出し

Console.Write("A = "); A.Write();



Vector B = new Vector(0, 1);

Console.Write("\nB = "); B.Write();



Console.WriteLine("\nベクトルAとベクトルBの内積の値は{0}です", A*B);//二つ目の*演算子の呼び出し

Console.Write("ベクトルAとベクトルBがなす角度は{0}度です\n", Vector.Angle(A,B));

}

}

using System;
class Vector
{
private double x;
private double y;

/* コンストラクタ */
public Vector(){
}

/* 二つのdouble値を引数に持つコンストラクタ */
public Vector(double a,double b){
x = a;
y = b;

}


public double Length
{
get{return Math.Sqrt(x*x+y*y);}
}
public void Write()
{
Console.Write("({0},{1})",x,y);
}
public static Vector I
{
get{return new Vector(1,0);}
}
public static Vector J
{
get{return new Vector(0,1);}
}
public stat...続きを読む

Qゲーム・3Dプログラムの用語、基礎を説明しているサイト、書籍ありますか?

Web系からゲームプログラマになった者です。
プログラマ歴自体は長い&C言語もそれなりにやってきたのですが、アクセスした時のことだけ考えればいいWeb系とは違い、ゲームは常に常駐するプログラムなので、同じ言語でも全く仕様が違い、未だその感覚が掴めません。
音楽や画像を直接扱うところも、Webとは違います。

業界独特の、3Dソフトなどとの連携もありますが、基礎知識がないため業界の書籍を読んでも一足飛びで解りにくいところが多々あります。

特に3Dのプログラム&ゲームプログラムの基礎の考えについて書かれたサイトや書籍はありますか?
「猫でもわかるプログラミング」的な、実際のソースやプログラム言語の解説ではなくて、
このサイト
http://www.game-create.com/contents/game_programming
のように、原理や考え方を説明している場所だとありがたく思います。
3Dプログラム用語に至ってはそういったサイトが全く見付からないため、詳しい方、ご教授お願い致します。

Aベストアンサー

3Dの用語と言うか実装テクニックであれば、こちらがよろしいかと。
http://game.watch.impress.co.jp/docs/backno/rensai/3dg.htm
どうやってプログラムするかは書かれていませんが、どんな概念で実装されているかは分りやすいかと思います。

マイクロソフトによる講座です。「DirectX によるゲームプログラミング入門」をお読みください。なんか英語のページが表示されますが、ちゃんと日本語のページにリンクしています。
http://msdn.microsoft.com/ja-jp/academic/cc998598.aspx

以下はプログラム中心ですが、ゲームで必要なことの概念を拾っていくために見ておいて損はないと思います。
http://marupeke296.com/GameMain.html
http://rina.jpn.ph/~rance/directx8/index.html
http://www13.plala.or.jp/kymats/study/game_other.html
http://www.plustarnet.com/aspil/Programming/
http://dixq.net/g/
http://dixq.net/rp/

あとゲームでよく使われるタスクシステム(OSのタスクとは別物です)について。
http://www5f.biglobe.ne.jp/~kenmo/program/task/task.html
http://codezine.jp/article/detail/297?p=1

3Dの用語と言うか実装テクニックであれば、こちらがよろしいかと。
http://game.watch.impress.co.jp/docs/backno/rensai/3dg.htm
どうやってプログラムするかは書かれていませんが、どんな概念で実装されているかは分りやすいかと思います。

マイクロソフトによる講座です。「DirectX によるゲームプログラミング入門」をお読みください。なんか英語のページが表示されますが、ちゃんと日本語のページにリンクしています。
http://msdn.microsoft.com/ja-jp/academic/cc998598.aspx

以下はプログラム...続きを読む

Qプログラミングに基礎の知識は必要か?

プログラミングに基礎の知識は必要か?
最近ちょっと疑問に思ったのですが、プログラマーはプログラミング言語の原始的な部分を理解していないといけないのでしょうか?
というと抽象的でわかりにくいので、例をあげて説明させていただくと
Javaなどでネットワークプログラミングを行う際は、Httpやtcp/ipが何たるかを知らなくても、Socket等の高度な抽象化されたクラスを使えば、下の細かい部分を知らなくてもプログラミングをおこなえます。
では、特に下の細かい部分は知らなくてもいいのでしょうか?もちろん、知っているに越したことはないのですが、あえてある程度時間をかけてでも知るべきでしょうか?

みなさんはどう思いますか?よろければ知るべき、知らなくてもいいと、なぜそう考えたのか理由もお聞かせ願えると幸いです。

Aベストアンサー

職業プログラマーならば、知るべきです。

> Javaなどでネットワークプログラミングを行う際は、・・・下の細かい部分を知らなくてもプログラミングをおこなえます。

作れますが、MTUの問題で無応答になったり、ESTABLISHEDの状態からRSTを返されて例外が飛ばなかったりする際など、トラブルシューティングの分野では手も足も出ませんな。

ほかによくあるのが、データベースの応答が遅いのを根拠なくデータベースのせいにするプログラマー。
自分が作ったSQLが結果的にどう影響するのか想像できなかったり同時多接続の影響を考慮できなかったり。


人気Q&Aランキング

おすすめ情報