プロが教える店舗&オフィスのセキュリティ対策術

ストリームとは、何でしょうか?簡単に教えて頂けると幸いです。

質問者からの補足コメント

  • うーん・・・

    ①~④はバッファを使う場合の手順です。
    バッファを使わない時は、プログラムから1文字出力してファイルに書き込むことを繰り返します。書き込み先がハードディスクだったら非常に時間がかかるでしょう。の所で、なぜ、ハードディスクだと非常に時間がかかるのでしょうか?それと、以下のURLの関数の所のファイル、メモリ、標準入出力について教えていただけると幸いです。
    https://zenn.dev/masahiro_toba/books/a7d0c3d685a …

    No.5の回答に寄せられた補足コメントです。 補足日時:2023/10/27 17:15

A 回答 (8件)

>ストリームとは、何でしょうか?



下記のURLにいろいろ情報が載っています。教えて!gooで質問をする前にご自分でも調べられます。

https://search.goo.ne.jp/web.jsp?MT=C%E8%A8%80%E …

また、ChatGPTさんに聞くこともできるでしょう。ここに書いてある意味が分からないのであれば、ChatGPTさんはインタラクティブに丁寧に答えてくれますから、ChatGPTさんに対してさらに突っ込んだ色々な質問をするなど会話することでより詳しい情報を得ることができると思います。QAサイトで人間に聞くことで他人の貴重な時間を使うまでもなく、AIチャットに聞いた方が、あなたの疑問ははるかに速く確実に氷解するものと思います。下記はChatGPTとの会話例です。

Q. ストリームとは、何でしょうか?簡単に教えて頂けると幸いです。

A.「ストリーム」とは、データを連続的に転送または処理するための仕組みや方法を指す一般的な用語です。データストリームは、情報やコンテンツが一方向に連続的に流れるデータの流れを表します。以下はストリームのいくつかの一般的な用途です:

インターネットのストリーミング: オンライン動画、音楽、ライブ放送などのコンテンツをリアルタイムで視聴または聴取できるようにする技術やサービス。データは連続的に送信され、視聴者は途中から視聴できます。

ファイルストリーム: ファイルの読み込みや書き込みに使用されるデータの連続的なフロー。ファイルを逐次処理するためにストリームを使用することがあります。

ネットワーク通信: ネットワークを介してデータを送受信するとき、データは通常ストリームとして転送されます。これにより、大量のデータを効率的に処理できます。

プログラミングにおける入出力ストリーム: プログラミングにおいて、ファイル、データベース、デバイスなどからデータを読み込む入力ストリームと、データを書き込む出力ストリームが使用されます。これはプログラムがデータを連続的に処理する際に役立ちます。

ストリームはデータ処理において非常に重要な役割を果たし、リアルタイムデータの転送や連続的なデータ処理に関連するさまざまなアプリケーションと技術に使用されています。

Q. プログラミングにおける入出力ストリームについて詳しく教えてください

A. プログラミングにおける入出力(I/O)ストリームは、データの読み込みと書き込みに使用される抽象的なコンセプトで、データを連続的に処理するための方法を提供します。入力ストリームはデータを読み込むために使用され、出力ストリームはデータを書き込むために使用されます。以下に、プログラミングにおける入出力ストリームに関する詳細を説明します。

入力ストリーム(Input Stream):

入力ストリームは、外部データソースからデータを読み込むための抽象化です。外部データソースは、ファイル、キーボード、ネットワーク接続、データベースなどが該当します。
プログラムは入力ストリームを使用して、外部データソースからデータを逐次読み込むことができます。例えば、ファイルからテキストを読み取る場合、ファイルからのデータが入力ストリームを介してプログラムに供給されます。
出力ストリーム(Output Stream):

出力ストリームは、プログラムがデータを外部データソースに書き込むための抽象化です。外部データソースにはファイル、画面、ネットワーク接続などが含まれます。
プログラムは出力ストリームを使用して、データを逐次外部データソースに書き込むことができます。例えば、テキストファイルにテキストデータを書き込む場合、テキストデータが出力ストリームを介してファイルに書き込まれます。
入出力ストリームはプログラミング言語やフレームワークによって異なりますが、一般的な操作やメソッドが存在し、基本的なデータ型としてテキストデータやバイナリデータの読み書きがサポートされます。例えば、JavaではInputStreamおよびOutputStreamが、Pythonではopen()関数を使用してファイルの読み書きが行われます。

入出力ストリームを使用することで、プログラムは外部データを効率的に操作し、ファイルの読み書き、ネットワーク通信、コンソール入出力などのタスクを処理できます。データを連続的に処理するための抽象化として、入出力ストリームはプログラム開発において非常に重要な役割を果たします。
    • good
    • 0

先ほど回答した者ですが。



うーん、そうですね。
見てる画面によって行が違うとおもうので予想ですが、「プログラムが〜」で始まる部分でしょうか。

4行目から11行目の辺りが分からないのであれば、プログラム以前にコンピュータに関する全般的な基礎知識の部分がまだ不十分なのだと思います。

↓こういうのとか
https://kumipuro.tech/computer_structure/

もっというと、パソコンになれることとか、コンピュータの仕組みを徹底解説した図解書籍とか。

そういったものを勉強して、前提知識をつけることが先のような気がします。

多分さらにかみ砕いて説明しても、また分からないことがどんどん出てきそうなので。
最近はYouTubeとかでも探せば出てくると思います。
    • good
    • 0
この回答へのお礼

では、C言語でいうstdio.hのバッファとは何でしょうか?教えて頂けると幸いです。

お礼日時:2023/10/28 11:57

C言語(またはC++言語)におけるストリームとは、プログラムがデータをどこかから受け取る(入力)、またはどこかへ送り出す(出力)という機能を、上流から下流へ流れていく水の流れに見立てて表現した考え方です。

つまるところ、例えです。

プログラムが入力、出力する相手は、PCキーボードだったり、タッチパネルだったり、色々あります。これが、trajaaさんがおっしゃるデバイス=周辺機器です。他にも、テキストファイルなどのファイルだったり、適切な表現かは分かりませんが、コンソールや他のプログラムだったりもします。

入力の場合、ストリームの下流がプログラムです。デバイスやファイルといった上流から、データが流れてくるということです。

逆に出力の場合、ストリームの上流がプログラムになります。プログラムが、下流に当たる相手にむけてデータを流し出すわけですね。

バッファとは、データを一時的にためておく仮想的な容器のようなものです。
上流でリンゴを10個川へ流したら、手が2本しかない下流の受け手は、大きなざるを用意して流れてくるリンゴを全てまとめて取り、それからひとつひとつ水気を拭き取って行きました。
このように、流れてくるデータを一旦集めておいて、後で自分の好きなタイミングでデータを一つ一つ取り出して処理します。ちなみに、バッファではデータを流れてきた順番どおりに溜め込んでいきます。
上記は受け取りなので入力の場合ですが、出力する場合も同じように、リンゴを1個1個渡すよりダンボールにまとめた方がいいと言った感じで、データをどこかにまとめておいて、一回で渡してあげたほうが効率が良いです。

コンピュータの仕組みにおいて、データを溜め込む容器をバッファといい、具体的にはメモリがその役割を果たします。質問者さんがおっしゃっているファイルの書き込みの場合、データを保存する先がハードディスクになります。
ハードディスクは構造からして、一般にメモリよりデータのやり取りに時間を要します。それで、バッファであるメモリにプログラムがデータをまとめ、出来上がったデータの集まりをメモリからハードディスクに、えいやで一括保存します。

厳密には少し違うところがありますが、考え方としてはこんなところです。
    • good
    • 1
この回答へのお礼

この文章の4行目から11行目の所をもう少し噛み砕いて教えていただけないでしょうか?

お礼日時:2023/10/27 20:28

ストリームという言葉にどこで出会ったのでしょうか?



C言語を勉強中に参考書か何かの文章に出てきたのであれば、どんな文章だったか教えていただけるとこちらももう少しご説明できるかと。
この回答への補足あり
    • good
    • 0
この回答へのお礼

この質問のURLのhttps://detail.chiebukuro.yahoo.co.jp/qa/questio …のベストアンサーの回答のことです。教えていただけると幸いです。以下が、その文章です。
「バッファリングしないと、ストリームに対し、文字を一字づつ読み込みまたは書き込みます。バッファリングすると、書き込みに対しては、文字を受け取り、バッファが満杯になると書き込みます。読み込みに対しては、文字を渡し、バッファが空になると、満たします。」

お礼日時:2023/10/27 17:10

自分で学習しようって気持ち有るのかな・・・・

    • good
    • 0
この回答へのお礼

すみません。プログラム初心者なので、デバイスとは、周辺機器という理解で大丈夫でしょうか?教えて頂けると幸いです。

お礼日時:2023/10/27 14:03

C言語では、一般的なテキストファイル等のデータを収めたファイルにとどまらずに外部のデバイスもデバイスファイルという形で扱いますね


Printf関数やscanf関数で使うデバイスなどが最も馴染みがあるかな

そういったデバイスも含むファイルを操作する時に利用するのがストリームという概念でざっくり言えば水道ホースのようなもの

蛇口を捻れば先頭から順に水(データ)が流れてきます

そういう流れてくる経路をストリームなんて言いますね
    • good
    • 0
この回答へのお礼

ここでいうデバイスってどういう意味でしょうか?教えて頂けると幸いです。

お礼日時:2023/10/27 13:35

物の流れ stream(ストリーム)はもともとは「小川、水路」や、水が流れている様子を表す言葉です。

「主流」を表すmainstream(メインストリーム)といった意味にも広がっています。

最近ではインターネットの技術として、映像や音楽を止めることなく流れっぱなしにする手法として「streaming(ストリーミング)」がよく聞かれるようになりました。
    • good
    • 1
この回答へのお礼

ストリームについてもう少し詳しく教えて頂けると幸いです。すみません。

お礼日時:2023/10/27 13:35

C++におけるストリームは、入出力を概念化した実装のことですね。

    • good
    • 0
この回答へのお礼

C言語の事なのですが。それと、もう少し簡単な文章で噛み砕いて教えて頂けると幸いです。

お礼日時:2023/10/27 12:54

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A