강의

멘토링

로드맵

レビュー 5 件

平均評価 5.0

30% 受講後に作成

間違った内容が多すぎます 序盤から間違った内容が多すぎるので、それ以降は講義内容が本当かどうか別に検証しなければならない。 私が講義を聞くのか、エラー検収をするのか、混乱する状況に至る 特に、ArrayはCompileフェーズでメモリ割り当てが発生するという部分で気炎を吐きます それがまたStack memory領域に割り当てられるというのも笑いポイント この講義を聞いて面接官に大笑いしてくださった多くの受講生の方に深く慰めを伝えて 私のような追加の被害者が発生しないことを望む心で受講坪残しておきます。 追加。 コメントに講師様が以下のように残してくれました。 このノッションの内容も間違っていることをお知らせします。 https://midi-mandolin-36f.notion.site/Array-33d866e5193f49789dd2079c75412f96?pvs=4 "C言語" で "Static Array" はプロセスのデータ領域(Stack、Data、Heap)のどこにでも保存でき、開発者の開発意図(コード)によって異なります。 // コードでは以下のようになります。 int [5]; //データ領域に保存 int main() { int [5]; // Stack領域に保存 int* arr = (int*)malloc(5 * sizeof(int)); // Heap 領域に保存 //メモリを動的に割り当てただけで、配列自体はStatic Arrayです。 } もし " C言語のStatic arrayは、compileステップでstackメモリに割り当てられます。" という命題が真なら、 " C言語のint型変数は、compileステップでスタックメモリに割り当てられます。" という命題も同じメカニズムなので真です。 "サイコロを投げると3が出ます:1、2、4、5、6 という説明が正しいか "サイコロを投げると、出てくる数字は1〜6の間の数字がランダムに出ます。" という説明が合うかは受講生の方々が判断していただければと思います。 追加。 講師がいつの間にかノッションをまた修正しておきました。 ノッション内容の論理のとおり、JavaではArrayだけでなくすべてのデータ構造がHeapに保存されます。 その下教授様の回答というのは…何の主張をしたいのか分からないですね。 [特定データ構造とビルド段階、プロセスメモリ領域の割り当ては関係ない]が正しい。 C言語基準で1、2、3番でよく書いてくれたのに、なぜ結論は浮かんでいない [C言語ベースで見るとarrayはcompile段階でstack領域に割り当て] で出てくるのか分からないですね。 とにかくみんな苦労しています。

nossi님의 프로필 이미지
nossi
インストラクター

こんにちはjordyさん。受講生の方々に役立つよう長くて率直な受講評を残していただき誠にありがとうございます。 ただし、C言語ベースで、ArrayはCompileフェーズでスタック領域にメモリ割り当てが行われるという内容はエラーがありません。しかし、JAVA観点では異なることがあり、十分に混乱する可能性があります。その内容については、このリンク[https://midi-mandolin-36f.notion.site/Array-33d866e5193f49789dd2079c75412f96?pvs=4]で詳しく説明します。みんな一度見れば助けがたくさんなるでしょう! 私が授業でC言語基準と明確に申し上げたら混乱がなかったのですが申し訳ありません。 static array と dynamic array, linked list を C 言語基準で説明した直後に述べた内容なので、自然に C 言語基準として受け入れられると思いました。 それにもかかわらず、私の講義がjordy様の気持ちをたくさん傷つけたようで、私も続々しいですね。払い戻しをご希望の場合は、インフラストラクチャに連絡してください。 私と縁が届かなくても、いつもやることができてよかったです。 :) ファイティング!

こんにちは。講師 C言語基準でも同様 "Arrayは、Compileフェーズでスタック領域にメモリを割り当てる"命題は常に真であるわけではありません。 もちろん、mainなど"関数"内で int x[100] のように配列を生成する場合、 ローカル変数はスタック領域に格納されているので真です。 しかし、これはC言語コンパイラがローカル変数をスタック領域に格納するため、データ構造のArrayの特性ではありません。 そしてmain関数の外にグローバル変数領域に生成したり、alloc(malloc)などを使って動的割り当てをしたりすると、 Arrayもスタック以外の領域に作成できます。 データ構造特性と言語的特性を混用して説明するので混乱があるしかありません。 "任意のデータ構造はどのメモリ領域にも作成されます"同じ命題は常に真になることはできない命題です。 あなたが言ったように、言語によって異なる場合があり、同じ言語でも開発者の意図に応じて異なるメモリ領域に保存することができます。 リンクでいただいたノッションから "この講義では、ArrayはC言語のStatic arrayを意味します。" と言われました。 "C言語"に以下のようなコードがある場合、"Static Array"のメモリ割り当て領域はコメントと同じです。 int a [10000] [10000]; // Stack以外の領域に割り当てる int main() { int b [10000] [10000]; //スタック領域に割り当てる }

nossi님의 프로필 이미지
nossi
インストラクター

良い返信ありがとうございます。はい、そうです。 「array は compile 段階で stack 領域にメモリ割り当てになる」という命題は常に真ではない。言及してくれたおかげで、他の方々もご覧いただけるよう、該当例外事項は講義コミュニティ(質問)にリンクしておきました。ありがとうございます。 データ構造、アルゴリズム、ネットワーク、データベース、オペレーティングシステムという科目は、4年制大学では3~4年にわたって学ぶ広範で非常に深い内容です。実際、4年間教授に学んだ内容も、面接の際に受ける質問をすべてカバーすることはできません。私も面接を盛んに準備していた時代、原書になった厚い本を一つ一つ見て一つ一つ深く準備しました。それが私の勉強傾向と合ったんです。ただ、数十回の面接を見て、結局欲しかった企業に入社しながら振り返ってみると、残念が残りました。 「最初に誰かがガイドの役割をしてくれたら、私の大切な時間を節約できたはずなのに」と言います。だから私はこの講義を作る時に一番集中したのは「学習時間を減らすこと」でした。 例えばdynamic arrayのresize過程をdoublingと説明しましたが、実際に各言語で実装されたものを見ると正確に2倍をしません。しかし、このような内容を講義ですべて言及できない理由は、これまでにすれば過度の説明だと思ったからです。 実は講義を作ってみると「すべての内容」を説明して時間を増やすより、「核心内容」を要約して時間を減らす過程がより難しいことが分かりました。その過程で混乱を招いたようです。講義についてもう一度考える機会になりました。ありがとうございます。

回答ありがとうございます。 そうです。 私も講義をアップしてみた立場で一度に完璧に説明するのが大変だということをよく知っています。 最初のレビューでやや過激な表現を使った点について心からお詫び申し上げ、 反省する意味で受講評をクリアしたり修正したりしません。 私がこのように反応した理由は、私も多くの後輩を教えてみた先輩として 就職準備生には少なくない講義費用ですが、講義の内容に少しずつ残念な部分があったからです。 それでも私が残念だったいくつかの部分を除いて、ほとんどの内容で良い講義をしてくれてありがとう。 私もたくさん学びました。 ありがとうございます。

記出に備える開発者専攻面接 [CS完全征服] のサムネイル
nossi

·

65 講義

·

2,219 人が受講

記出に備える開発者専攻面接 [CS完全征服] のサムネイル
nossi

·

65 講義

·

2,219 人が受講