教えて!しごとの先生
教えて!しごとの先生
  • 解決済み

プログラミングに興味があり、c言語を今日から学び始めたのですが、肝心の『開発環境を揃える』ステップがいまいちわかりません…

プログラミングに興味があり、c言語を今日から学び始めたのですが、肝心の『開発環境を揃える』ステップがいまいちわかりません。まず質問1 プログラミングの手順について ・ソースプログラムをエディタ(?)で書く ・それをコンパイラでコンパイルする ・コンパイラしたファイルを実行する という理解で合っていますでしょうか? 次に c言語についてググって手順に従い、vscodeを入れ、mingwで何か2つくらい選択してインストールし、環境変数(なにこれ???)でパス(!?)を通しました。無事vscodeで描いたHello worldを表示するファイルを実行できたのですが、一体何をやってるかわかりませんでした。 質問2 mingwはコンパイラ管理ソフトらしいんですが、コンパイラをインストールするためのソフトという理解であってますでしょうか? 質問3 一般に、(数学的な一般もしくは普遍的という意味、例えばvscode[具体的なソフト]ではなく、エディタ[広いカテゴリーを示す言葉]などを教えて欲しいです。)あるプログラミング言語をWindowsに実行してもらうには、ゼロの状態から何が必要なんでしょうか?その目的(例えばエディタならプログラミングの文法にあうように間違いを指摘してくれる、など)と共に教えてほしいです。 質問4 エディタ、コンパイラが必要なのは分かりますが(なんかまとめてやってくれるideなるものがあるらしい?)、それだけではWindows側はコンパイルされたファイルを実行できないのでしょうか? コンパイルしたファイルは01で作られた機械コードになると聞いたのでこれだけで充分ではないのですか?これだけではWindows側が準備できてないらしいのですがそれはどういう意味でしょうか? 出来るだけ検索で知ろうとはしたのですが、知らない用語が多く、自分の乏しい検索能力ではこの程度が限界でした。聞かないよりは聞いた方がいいと思い、質問箱に投稿することにしました。 最後に、c言語について知っておいて欲しいこと、自分の経験談、楽しいことなど自由に自分語りして色々教えていただければ嬉しいです。尚c言語は難しいと聞きますが、学ぶ言語を変えるつもりはありません。

補足

特定の方法というより、全ての言語に共通した部分を教えて欲しいです。

続きを読む

320閲覧

ID非公開さん

回答(4件)

  • ベストアンサー

    プログラミングは、コンピュータに対する「指令書」を作る行為です。なので、コンピュータに対する知識を必要とします。コンピュータがなにものかを知らなければ、コンピュータに必要な作業をさせることはできません。そして、C言語はプログラマにコンピュータに対する深めの知識を要求します。 コンピュータそのものについての初心者がいきなりC言語から手を付けようとするなら、その全てを一気には処理できませんからその多くの知識の取得を棚上げにして「おまじない」として唱えながらできることを増やしていくことになるでしょう。全てをいっぺんに知ろうとすると飽和するのではないでしょうか。 質問1 質問に書かれた手順の前に ・解決したい事柄をコンピュータでどのように解決できるのかを検討する (この段階では、まだプログラム言語とかそういう話は出てきません) ・解決するためのプログラムがどのように動作するべきか決定する (この段階では、プログラムの内容よりもプログラムへの入力、プログラムからの出力について考えることが多いです) 手順の後に ・作成したプログラムが正しく動作していることを確認する (先にどのように動作すべきかを考えているので、それに沿って検証できるはずです) ・正しく動作しない場合、前の段階に戻って修正する を追加してください。 VSCodeは、たしかに流行っていて、それなりの人には使いでのあるツールだとは思いますが、私はC言語の初心者に向くツールだとは思いません。冒頭の言でいえば、「おまじない」を正しく唱えなければいけないシーンが多いのです。 初心者は、VSCodeを使わずに個々のツールを自分で操作してみて(おまじないに少しはなじんでおいて)一通りの手順の概要を知った上でVisualStudio (Codeは付かない)などの予めしっかりと調整された(おまじないが既に唱えてある)ツールを使用したほうがよいのではないかと思っています。 質問2 > コンパイラをインストールするためのソフト mingwは、もともと他の(Windowsではない)環境で使うために作られたツール群をWindows上で使うために、違いをすり合わせするためのソフト、です。そのツール群のなかにgccコンパイラがあって、つまりコンパイラ「だけ」のための環境ではありませんが、事実上gccコンパイラを動かすために使われることが多いです。 「コンパイラというもの」がmingwを必要とするという話でもありませんから取り違えのないよう。 質問3 「エディタを教える」とは、エディタの定義を知りたいということですか? 極論「なにかのデータを編集するためのツール」です。特に前置きなく「エディタ」というならば「テキストエディタ」を指すことが多く、文字ベースのデータを編集します。多くのプログラム言語が文字ベースなので、プログラムの作成/編集にはテキストエディタを使うことが多いです。 他に、画像エディタとかバイナリエディタとかリソースエディタとか、操作対象によっていろいろあります...ということでよいのかしら? (Wordなどのいわゆるワープロはエディタとは区別されることが多いですが、最近の「エディタ」側の進化をみるともはやワープロも「(業務)文書作成に特化したエディタ」と言っても良さげな感じになってきていますね。) 文法に沿った色付けや入力予測/補完、整形、文法チェックなどは「エディタ」の本質ではないオプション機能でしかありません。ただし、そういう機能をつけたテキストエディタを「プログラミング用エディタ」というジャンルでくくることはしばしばあります。しかし、そういう機能はなくても、必要な内容データ(C言語であればテキストベースの文書)ができあがればどんなエディタを使おうとかまいません。もちろん、要らぬ苦労をする必要もなくて、便利な道具は使えばいいのですが。 質問4 IDEは「エディタ」と「コンパイラ」を連携はしてくれますが、「まとめてやってくれる」ものではないと思います。しかしこの質問のレベルではコンパイラは「実行ファイル」を生成するものであり、 > それだけではWindows側はコンパイルされたファイルを実行できないのでしょうか? というのはちょっと質問の意味を図りかねます。 ある程度突っ込んだ議論をする場合は広義のコンパイルを「(狭義の)コンパイル」と「リンカ」のステージにわけたりしますが、その辺の話が紛れ込んでごっちゃになっているのでしょうか? 気持ちとしてはわからないでもないですが、いろいろな質問を一つにまとめて投げられると回答もあちこちに話が飛んで書くのも大変です。つまみ食いで回答するのが平気な方もいらっしゃいますが、私はついつい網羅しようとしてしまうので。 で、回答側の都合を言えば、1質問1内容、ニックネーム(ID)には識別しやすいものをつけて、かつ関連質問のURLを質問内に提示して「この人はこんなことを知っていてこんなことを知りたがっている」というのが全体としてわかるようになっていると回答を書きやすいですね。 なぜあなたがC言語に一途になるのか知りませんが...(それが悪いという話ではないです) 私は「コンピュータ”を"いじるならC言語」「コンピュータ"で"なにかするなら他の言語」が適切と思っています。C言語は低レベル(「低」はいい悪いではなく、コンピュータの構造とか原理的なものに密着しているという意味)なのでコンピュータそのものを対象としてなにかするのに向いていて、コンピュータを道具として使うならより抽象度の高い記述のできる(コンピュータの都合に縛られない)他の言語のほうが向いている、というようなことで。 敢えてC言語を選ぶということはコンピュータ"を"いじりたいのですね?

  • mingw を使ったことが無いのでよくわかりませんが、分かる範囲で回答してみます。 話としてはシンプルで、例えば、PHP のような言語だと、php.exe に自分の書いたプログラムを指定するだけで、php.exe がすぐに実行してくれます。 C言語にもこういう方式の処理系(インタプリタ)は存在しているのですが、通常、C言語の強みというのはOSで直接実行できる EXE ファイル(機械語)を生成できることにあり、C言語のインタプリタは実用向けでは普及していません。 PHP の場合、実行に php.exe という処理系が必要なのですが、EXE はそれ単体で実行できるという強みがあるほか、実行速度が非常に速いです。 このような、自分の書いたプログラム(ソースコード)から EXE を生成する工程をコンパイルといいます。 C言語で書いたプログラムを実行するには、コンパイルを行い(これはC言語コンパイラにファイルを指定するだけで自動でやってもらえます。)、EXE ファイルを生成する必要があります。 プログラムの実行は、EXE ファイルをOS上で実行することで行います。 よって、C言語のプログラムに必要なものは、実行主体となるOS(Windows)と、実際にプログラムを作成するためのソフト(エディタ、具体的にはメモ帳や Sublime Text 等)、C言語のコンパイラとなります。 パスを通すという概念が難しいとのことですが、これもシンプルな話で、例えば、PHPですと、私のパソコンでは、C:\xampp8\php\php.exe にインストールされています。これを実行するには、C:\xampp8\php\php.exe と長々とパソコンに打ち込む必要がありますが、C:\xampp8\php\ にパスを通しておけば php.exe と打ち込むだけで実行できるようになります。それだけの話です。 なので、このパスを通すのは必須ではありません。むしろ仕事では複数のバージョンの PHP をインストールして使い分けることもあり、その場合は、パスを通すとかえって混乱するのでやりません。 Visual Studio はIDE(統合開発環境)と呼ばれるカテゴリのソフトで、色々な言語の処理系や高機能なエディタ(間違いを指摘する機能等もある。)をパッケージにしたもので、これをインスト―すればすぐにプログラミングを始められるという性質のものです。規模の小さい仕事であれば、無料で使えます。 質問1 合っています。 質問2 使用したことが無いので分かりません。 質問3 上で挙げた通り、コンパイラ型の言語であれば、 実行主体となるOS(Windows)、実際にプログラムを作成するためのソフト(エディタ、具体的にはメモ帳や Sublime Text 等)、C言語のコンパイラとなります。 他の言語であっても、「C言語のコンパイラ」の部分が他の言語のコンパイラやインタプリタに置き換わるだけです。 なお、文法誤りの検出はオプションであって、プログラムを作成する上では必須ではありませんが、プロが仕事をする場合は、そういう機能を搭載したエディタやIDEを利用することが多いです。 質問4 説明した通りです。 Visual Studio で生成した EXE ファイルは機械語であり、原則としては、他に何か準備をすることなくOS上で直接、単独に実行できます。

    続きを読む
  • >という理解で合っていますでしょうか? 合っています。 vscodeはテキストエディターのソフトでソースプログラムを作るのに使用します。mingwはGNU上で動くC言語をWindowsでコンパイル出来るようにした物です。Windowsのはメモ帳と呼ばれるエディターが有るので、これでソースプログラムを作る事が出来ます、又、コンパイラはC#用とVB.NET用がインストールされているので、C#で有ればインストール不要です、ただし、最新は.NET6でこちらはインストールの必要が有ります。vscodeはエディターのみですがVisualStudioは統合開発環境ですので、こちらの方が便利ですが、Windows以外では使えません。

    続きを読む
  • 質問1:作成したソースコードをMinGWに入っているCコンパイラでコンパイルして実行できる形式にしたのですね。 質問2:MinGWだとコンパイラはgcc辺りになると思いますが、コンパイラを動作する環境も含めてのセットがMinGWです。そういう面倒なことをしなくても、Windows向けにエディタもコンパイラもセットになっているVisual Studioというものがあり、今は(商用目的でなければ)無料で使えることができます。正直WindowsでC言語のコンパイルをするだけならVisual Studioの方がお勧めです。(知恵袋を見るとMinGWとかcygwinとか、なぜかLinux互換環境をわざわざ入れて構築しようとしてはまっている人を見かけますが) 質問3:エディタはソースコード(.c)を記述するためのソフトです。VSCodeに適切なプラグインを入れたり、上のVisual Studioなんかを使うと、文法エラーのチェックをしてくれたり、コンパイルを実行したりできますが、本来のエディタとしての機能ではなく拡張された機能です。 .cから実行形式のファイルを生成するのがコンパイラ。(厳密には他のプログラムも使いますが) 質問4:MinGWでコンパイルしたファイルの実行にはMinGWが必要になります。Windowsで広く使いたいというなら、上にも書いたVisual Studioを使った方が楽です(それでもバージョンの問題とかありますが) 最後に、C言語はいわゆる高級言語の中ではシンプルで簡単な方だと思います。機械語の概念(といってもせいぜいメモリとデータの関係くらいですが)が分ってないと理解しにくいところがあったり、使い方を間違った時のガードなどが甘いとかはありますが。(こちらも最近のOSとコンパイラなら、そこまで恐れることはないです)

    続きを読む

この質問を見ている人におすすめの求人

< 質問に関する求人 >

プログラミング(東京都)

求人の検索結果を見る

< 平日勤務で週末はリフレッシュしたい人におすすめ >

正社員×土日祝休み(東京都)

求人の検索結果を見る

もっと見る

この質問と関連する質問

    < いつもと違うしごとも見てみませんか? >

    覆面調査に関する求人(東京都)

    求人の検索結果を見る

    Q&A閲覧数ランキング

    カテゴリ: 仕事効率化、ノウハウ

    転職エージェント求人数ランキング

    あわせて読みたい
    スタンバイプラスロゴ

    他の質問を探す

    答えが見つからない場合は、質問してみよう!

    Yahoo!知恵袋で質問をする

    ※Yahoo! JAPAN IDが必要です

    スタンバイ アプリでカンタン あなたにあった仕事見つかる