コンテンツにスキップ

Q&A

ここでは講義中に出た質問に対する回答を載せていきます。随時更新です。

Week 1

  • 出席点はあるか?

    • ありません。もしC言語を既に全部理解しているなら、講義に出なくても大丈夫です。宿題だけは全部やってください。宿題・最終レポートのみで成績をつけます。
  • 他学部・他学科だが履修可能か?

    • 履修出来ます。便覧やUTAS/UTOLをよく読んで取得単位等について確認してください。
  • この授業で使用するGithubアカウントの情報はこの講義を受ける他の学生を含む他者に公開され得ますか?

    • 基本的に公開しない予定なのですが、優秀作品に関して画面を共有しているときにチラッとみえてしまったりすることがあるかもしれません
  • githubアカウントのメールアドレスはECCSアカウントでよろしいでしょうか?

    • どのようなアドレスでも大丈夫です(eccsだと卒業時に消えてしまうので注意というコメントがありました)
  • githubのサイトを開こうとするとアクセスがブロックされてしまうのですが、どういった対応をすればよいでしょうか。

    • 口頭でもいいましたがこれはちょっとわからないですね。。。
  • 実数型のvを%dフォーマットに変えて表示させたときに8桁の整数が出てきたのですがこの整数はどこ由来のものなのでしょうか?

    • これは未定義動作のようです。
  • 本講義専用のSlackのチャンネルへの入り方を知りたいです

    • https://taura.github.io/operating-systems/html/slack.html を参考に電気系のワークスペースに入って、#2026a-ソフトウェア1 というチャンネルに入ってください
  • homeディレクトリとはどういう意味なのでしょうか?

    • その名のとおり、家であるような、「初期位置」をあらわすというニュアンスです。もともとlinuxは複数人が使うものだったので、/home/tarou とか /home/hanako とか、home以下に各個人の領域が作られる、という背景があります
  • いちいちコンパイルして実行するのが面倒です 一つのコマンドでまとめて出来ませんか?

    • gcc main.c && ./a.out でできます
  • 演習では #include <stdio.h> int main() { printf("Hello World\n"); return 0; } と書いてHello Worldを出力していましたが、関数の前にintを付けるのとつけないのとではどのような違いがありますか

    • intをつけるのが正しくて、昔はintを省略しても大丈夫だった、という感じです。
  • inlayからoffに切り替えても設定が変更できずまた確認するとonに戻ってしまいます

    • むむ、、、これはちょっとわからないですね。。。
  • ./a.out の ./ をなくすとファイルを実行できなくなるのですが,ここでの ./ はただカレントディレクトリを参照するという指示以外の意味を持っているのでしょうか

    • ここには結構長い理由があります。week1のページの一番下に「このコラムは発展的なので、気にならない人はスルーでも大丈夫です。」というコラムがありますのでそこを是非よんでみてください
  • pythonやC言語の文法やその応用に関する授業は多いですが、C言語自体の原理や中身を知りたいです。ブラックボックスな感じが気持ち悪いです。何かいい勉強方法はありますか?この時代車輪の再開発になるためあまり意味はないでしょうか?

    • プログラミング言語自体を作りたい、中身が知りたい、ということであれば、構文解析とかOSの知識が必要になるので、3年生以降で色々講義がありますので楽しみにしておいてください。田浦先生のこれとか https://taura.github.io/programming-languages/
  • usrとhomeは同じ高さのディレクトリということでしょうか

    • はい、そうです
  • 何かファイルやディレクトリを作るときに ./ はなくても何の問題もないのですか?

    • 普通はなくても問題ないです。私も普通は ./ をいちいち書かないです。(特殊な状況では違うことがあるかもしれません)
  • 一旦sample_directoryに移動したあとに、cdをしなければmain.cを参照できないのはなぜですか

    • 参照というのは、catとかの意味ですかね。cd sample_directory したあとに ls してみるとmain.cがいないのがわかります(自分が移動したので当然。main.cは一個上にある) その場合、cat ../main.c とすると見えます(../ は一個上にあがるという意味)
  • rm で削除する際にパスを書かずにいきなりファイル名だけ書いた場合、今の位置の下にそのファイルがない場合消去できませんか?

    • はい、消去できないです。(rmは、再帰的に下まで探しに行って削除する、というコマンドではないです。)
  • mv main.c .(任意の文字) と打つとファイルが消えてしまうのですがなぜですか?

    • mv XXX YYY ZZZ のような書き方をするとXXXもYYYもZZZも消すという意味になります。なので今回は mv main.c .eee のような書き方をすると、main.cと.eeeを消します。.eeeと言うファイルはもともとなかったので、main.cだけが消えます
    • 【授業後追記】すいません、上記はrm だと勘違いしていました。mv main.c .eee の場合は、main.cを.eeeに名前を変えるという意味になります。なので、main.cは消えますが、.eeeというファイルが新しくできます。そして、.eeeのように先頭がドットから始まるファイルは隠しファイルという扱いになり、lsをしても表示されなくなります。ls -aとすると表示されます。
  • なぜUNIX系の環境を用意する必要があるのですか

    • これはwindowsのpowershellとかvisual studio (msvc)ではダメなのか?という意味であれば、基本的に現在の世の中のプログラミングはUNIX系(今日話しているlsとかの世界観)が基本となっている場合が多いです。なので、一度それを勉強しておく必要があります。マックではダメなのかという意味であれば、マックもUNIX系なので、授業の多くの部分はマックでも大丈夫です
  • cd /usr/include はどういう意味ですか?また、これは cd .. とはどう違うのですか?

    • /usr/include というものの意味を知りたいという意味であれば、これはPCに入っている基本的なヘッダファイルというのがまとまっているところ(c言語でこれから習うinclude先)という意味です。
    • そうではなく、cd ../../usr/include などで移動する場合とどう違うかという意味であれば、さっき述べた通り相対的に位置を指定する(../ などで移動して指定)のか、絶対的に位置を指定(/usr/include のようにコンピュータの一番上から直接住所を書く)かの違いというだけです
  • なにか文字を打ってからTabキーを長押しすると出てくるやつは何ですか?

    • 長押しですか?自分の環境だと長押ししても何も出ないようです。ちなみに、タブを押しても一意に決定できないとき(同じような名前のファイル名が複数あるときとか)は、その候補が表示されます
  • $ mv fuga.c sample_directory/fuga.c の代わりに $ mv fuga.c sample_directory としても問題なくファイルの移動ができましたが、移動先のファイル名を書かないと良くないことが起こるのでしょうか。

    • 今の場合はそれでOKです。複雑な処理をするときにちゃんと書いておかないと挙動がかわることがあるかもしれません
  • lsした時に色が違うものがあるのはなぜですか

    • ディレクトリであったり、実行可能バイナリというのであるときは別の色が表示されるように設定されていると思います
  • 二つのフォルダの中にそれぞれファイルが一つずつ入っていた時に片方のフォルダから一個上のcd ~を経由せずにもう一つのフォルダにcdすることはできないですか?

    • ./a/aaa.txt と ./b/bbb.txt がある状態で自分がaにいるときに、bにいきたいということですかね?であれば、cd ../b でいけます
  • cd / を入力すると bash: cd/: No such file or directory と出ました。これはなんですか?

    • "cd /" とうつべきところを "cd/" とタイポしています(スペース忘れ)
  • 一番上のディレクトリに移動してlsをするとこのようになりました。これは何ですか

    bin                boot  etc     home  lib64              media  opt   root  sbin                srv  tmp  var
    bin.usr-is-merged  dev   google  lib   lib.usr-is-merged  mnt    proc  run   sbin.usr-is-merged  sys  usr
    
    • 一番上にはそのようなフォルダやファイルがあるということです。それぞれ、システムにとって重要なものになっています
  • ディレクトリとはなんですか?

    • フォルダのことです
  • lsで読んだファイルとcdで変更しているディレクトリというのは完全に別物なのですか?

    • lsはいまいるディレクトリ上のファイルを表示しているだけです。cdは自分が別のディレクトリに移動しているということです。この2つは全然別の操作になります
  • ローカル環境を作成するとしたらWindowsの場合WSL2を使わなければいけないのでしょうか?Windowsに大学用のローカルアカウントを作ってログインしているので、すでに別アカウントでインストールしているWSLを利用しにくいです……

    • ちょっとわからないのですが、windowsを実行しているローカルアカウント上であらたにwslをインストールできませんか?基本的に、別のオプションであるcygwinはあまりお勧めしないので、windowsでローカルでやる場合は頑張ってwslを使えるようにするのがいいと思います
  • pythonとtypescriptは触ったことがあるのですがc言語で新たに学ぶ内容はどれくらいありそうですか?

    • 結構あります。楽しみにしておいてください
  • 課題の提出などに際しローカルとオンラインでやりやすさの差などはありますか

    • 課題の提出に関しては差はほとんどないと思います
  • ファイルに.cとつけるのはなぜですか

    • これは拡張子といって、そのファイルをどのプログラムで実行するかを決める識別子です。.cは、c言語のソースファイルであることを示します
  • 演習とこの授業でフォルダ分けなどをした方がよいですか

    • 混乱するので分けたほうがいいかもしれません
  • 他学科から受講すると時間割の都合上演習科目を履修できないのですが、支障なく授業についていくことは可能でしょうか?

    • 大丈夫です。演習は独立した講義です。