タグ付けされた質問 「computer-science」

コンピュータサイエンスまたはコンピューティングサイエンス(略してCSまたはCompSci)は、計算とそのアプリケーションへの科学的アプローチです。

5
アルゴリズムリフレッシャー。ヒープソートが分類アルゴリズムであるのはなぜですか?
ヒープソートがインプレースソートアルゴリズムと見なされる理由がわかりません。 つまり、並べ替えられる配列の要素(つまりヒープ)が追加された追加のデータ構造を使用して、最小値の抽出と並べ替えプロセスを支援します。 ここでインプレースの定義を誤解しているのではないでしょうか? しかし、たとえば挿入ソートは、インプレースアルゴリズムである、つまり要素に余分なメモリが必要ないことは明らかです。 それで、なぜそれはインプレースと見なされますか?

3
なぜcファミリーは、LISPファミリーではなく、数学/ CSプログラムの標準CS研究連隊なのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は自己改善のためにLISPに慣れてきました。私が気づいたことの1つは、LISPはCと言うよりも数学のパラダイム内にあるということです。構文と設計構造は、アルゴリズムの実際の数学的モデルを直接反映しているようです。優れた数学ベースのCSプログラムでさえ、LISPではなくCを学習する理由は、私には意味がありません。LISPはCよりも高い数学概念をより直接的に採用していると思います。Cで数学構造をモデル化できないと言っているのではありません。LISPが数学者にハードワイヤーされているように見えることに気付いています。 私は、JAVA学校でのジョエル・スポルスキーの暴言の多くを読みましたが、彼の評価に同意しますが、私の学校はその理由でJavaを教えませんでした。彼らは、ポインター、アルゴリズム設計、再帰、さらにはアセンブリ命令などの基本概念を教えるのに厳格でした。ただし、これらはすべてCおよびc ++で行いました。誰もこれおよび/またはその歴史の理由を知っていますか?

6
なぜバイオインフォマティクスでPerlがそれほど頻繁に使用されるのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 バイオインフォマティクスで非常に役立つのは、Perlについての何ですか?なぜC ++、Matlab、Pythonが大きな言語ではないのですか?

7
ソフトウェア開発の実践に関する未確認の声明を誰かが提供した場合、「引用が必要」と答えますか?[閉まっている]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的なものであり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 9年前に閉鎖されました。 最近、グレッグウィルソン(ソフトウェア大工仕事の最高科学者)の講義に出席しました。要約から: ソフトウェア開発の実践についての主張は証拠に基づいているべきであるという考えはまだソフトウェア開発者にとって異質ですが、これはついに変わり始めています:特定のツールまたは実践がソフトウェア開発をより速く、より安く、またはより信頼できると主張する学者は現在ある種の実証研究でその主張を裏付けると期待されていました。 全体として、講義は非常に有益であり、開発への私のアプローチについて非常に深く考えさせられました。特に、私は今、引用を探して多くのステートメントをバックアップしていることに気づきました。以前は、提供された真実を単純に繰り返す習慣に陥っていました。おそらく後で確認するための精神的なメモがありました。 率直に言って、私はだまされていました。 講義からの例を以下に示します。 「コードの25%を超えるリファクタリングが必要な場合、コードを書き直す方が迅速です」。 もっともらしいですが、本当ですか?これを裏付ける研究はどこにありますか?すべての言語に当てはまりますか?等々。 OK、これを極端なものにして、第一原理から自分で導き出さない限り、誰にも信じられないことは十分にあります。その方法は、狂気(または多分数学;-))です。しかし、誰かが「ねえ、これを[瞬間の言語]で行うことで、生産性を[10の倍数]%で]増やす」という文言であなたに近づいたら、それを受け入れるか、実証済みの証拠を求めるつもりですか? 後者の場合(そしてそうであることを願っています) この証拠をどこで見つけますか? あなたはどのくらい厳しいですか? 要するに、誰かがあなたに未確認の声明を提供した場合、あなたは「要出典」で応答しますか?

9
学校でソフトウェア開発コミュニティをブートストラップするにはどうすればよいですか?
私は南フロリダ大学の学生で、コンピューターサイエンスプログラムの教育環境に不満を感じています。今、私は「プログラム設計」を取っています。プログラムを読みやすく保守しやすくするために、ソースコードを関数とモジュールに整理する方法を学ぶ必要があります。代わりに、Cの配列と再帰について学習しています。次の学期では、C ++で教えられる「オブジェクト指向設計」を採用する必要があります(shudder)。 2年前、私はプログラミングに夢中になり、それ以来、できる限り多くのことを学んでいます。別のC ++クラスを受講する見込みがあるため、ほとんど涙が出ます。そのため、同様に野心的な学生に会い、新しい言語を学び、ソフトウェア開発のトピックについて話し合い、他の学生の開発者と協力するために、プログラミングクラブを立ち上げると思いました。 しかし、私のソフトウェア開発経験を共有している他の学生はいないかもしれないことに気づき始めています。それは動機の欠如ではなく、機会の欠如によるものです。私は他のプログラミングクラス(「プログラミング言語」)を1つだけ知っており、実際のソフトウェア開発のクラスはありません。それ以外の人は、CとC ++で簡単なスクリプトを書いた経験しかありません。 他の学生向けソフトウェア開発者と協力したい場合は、自分でトレーニングする必要があることに気付きました。現在、私はクラブをソフトウェア開発のブートキャンプにし、最新のツールと言語を使用してソフトウェアを開発する方法をメンバーに教えることを計画しています。明らかに、非公式のソフトウェア開発コースを開始することは、多くの可能なアプローチを伴う途方もないタスクです。読者への私の質問は 攻撃の計画は何ですか? したほうがいい クラブの仕事と宿題のバランスをとろうとして自分でクラブに講義しますか? CSの教員に、メンバーに関係のない専門知識の範囲内でトピックを教えるよう依頼してください。 私のワークロードを共有できる同情的で経験豊富な開発者を学校内外で見つけようとしていますか? ビデオ講義(MIT OpenCourseWare、Google Tech Talksなど)を表示しますか? 実践的なプログラミングワークショップを開催しますか? 宿題を割り当てますか? 他に何か?

2
スレッドのスリープはどのように機能しますか?
スレッドを眠っているとき、実際には何が起こっていますか? スレッドをスリープ状態にすると、「現在のスレッドを一定期間一時停止」することがわかります。しかし、それはどのように機能するのでしょうか? Thread.sleep()が内部でどのように動作し、Thread.sleepが実際にどのように動作するかによると?: スリープ期間は、システム固有の細分性の影響を受けます 睡眠が妨げられている スレッドはCPUを離れ、その実行を停止します スレッドはスリープ中にCPU時間を消費していません これが何を意味するのかについての内部および基本的なメカニズムを完全に理解することはできません。 スレッド間の切り替えを担当するスケジューラと呼ばれるものがあることを理解しています。 ソースはこれがOS(またはハードウェア)によって異なることを示しているようで、ほとんどのスレッドには、CPUが別のスレッドに切り替える前にいくつかのアクションを実行するために1ミリ秒から60ミリ秒程度与えられます。 しかし、スレッドがスリープ状態になると(たとえば、数秒)、どのように再開しますか?タイマーが何らかの形で関与していると思いますが、それはマザーボードのクロックですか?CPUクロックレートに関連していますか? タイマーが含まれている場合でも、CPUは、スレッドに再び注意を払う時期になったことをどのようにして知るのでしょうか。常にスレッドをチェックインして、準備ができているかどうかを確認する必要はありませんか?効果的ではないことを、ポーリングは、したがって、種類のされたCPU時間を消費しますか? スレッドは言語固有にスリープしていますか、それともOSがスレッドを担当していますか、それともCPU固有のものですか? 誰かがスケジューラのようなものの基本的な説明とこれのすべての間にCPUが何をしているのかでこれを私に説明してくれませんか?

2
ラムダ計算とプログラミング言語の関係は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 来年はコンピューターサイエンスの最初の1年(大学)を開始し、ほとんどCで書きます(それが問題になる場合)。私は検索を試みましたが、私が見つけるもののほとんどはラムダ計算の知識を前提としています。プログラミングでラムダ計算が単一変数計算よりもはるかに有用であると考えられるのはなぜですか?ラムダ式と関数型プログラムの間に関係はありますか?プログラミング言語の開発に影響を与えたのは、ラムダ計算に関するアロンゾ教会の仕事でしたか? 学校の外の誰もがそれについて騒ぎ続けており、私はそれを学び、それがプログラミングとプログラミング言語の理解に直接関係することを熱望しているにもかかわらず、彼らが何について話しているのか見当がつかない。

4
「教育」のバックトラック[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 少し前に、プログラミングを始めることにしました。私は本当に、言語(Perl)に飛びついてそこから行きました。私が後悔しているのは、私がちょうど飛び込んだことです: 私は基本を学びませんでした(もしあなたがそれらを基本と呼ぶなら)。 コンピューターサイエンスについては知りませんでした。 この問題は、本当の可能性から私を遠ざけていると思います。どこから「再起動」する必要がありますか?読むべき本、記事などはありますか?経験豊富なプログラマーが知っておくべきトピックはありますか?あなたのアドバイスは何ですか?

7
誰でも私にスレッドを理解するのに役立つプロジェクトを書くことを提案できますか?
私は現在、C#の開発者であり、スレッドの理解がかなり不安定です。 これらのリンクは両方とも他の投稿で提案されています: http://www.yoda.arachsys.com/csharp/threads/ http://www.albahari.com/threading/ 基礎に戻って、このテーマに関するコンピューターサイエンスのテキストをいくつか見てください。 私が飛び込んでc#ライブラリを使用すると、構築するための強固な知識の基盤が本当になくなると思います。com sciの学生のように、このテーマをゼロから学び、C#ライブラリを使用する必要があると思います。 スレッドを学習するためのアプローチ、おそらくいくつかのリンクやプロジェクトのアイデアを誰でも提案できますか? 前もって感謝します! 編集、すべての返信に感謝します。一部の人は、本は良いアイデアかもしれないと言っていますが、誰かがそれを提案できますか?私は言語にとらわれない何かを好むでしょう。コンピューターサイエンスの学位でこのクラスがカバーされるクラスを誰もが知っていますか?Googleで無料のオンラインメモと割り当てを探しています。

3
機械学習のキャリアへの切り替え[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私の仕事は、昔ながらのソフトウェア開発です。また、CSで修士号を取得しています(パートタイム、コースベース)。AIのコースを受講したところ、機械学習は非常に魅力的でしたが、ほとんどのコースと同様に基本的なイントロだけを提供しました。 私は機械学習についてさらに学び、可能であればその分野で仕事をするつもりです。この分野の求人を見ると、機械学習の博士号(またはかなりの専門知識を持つ分野での以前の経験)がそれらのほとんどに必要であることは明らかです。 業界で役立つ経験を積むために、自己学習に関するアドバイスを探しています。少なくとも、自分の足を踏み入れるのに十分な経験。教科書や論文などを読むなどの明白なことをします。おそらく、私が参加できるオープンソースの取り組みや、自分でできることはありますか? ここで私があいまいになっている場合はおologiesびしますが、同様の切り替えを行ってアドバイスできる人が少なくとも数人いることを願っています。 ありがとう!

1
並行性について推論するためにどの中間表現を使用できますか?
私は、コンパイラーがプログラマーに代わって並行性に関してインテリジェントな選択を行えるようにするために必要なものをよりよく理解しようとしています。たとえば、この問題には多くの困難な側面があることを理解しています。 競合状態がないことを確認する 同時に実行されるコードに、コードのセマンティックな意味に影響を与える副作用がないことを保証する コードで利用可能な並列度を考慮して、スレッドのスピンアップによるオーバーヘッドが価値があるかどうかを判断する 私の理解では、最新のコンパイラで使用される2つの主要な中間表現は、手続き型言語とオブジェクト指向言語の静的な単一割り当てと、関数型言語のスタイルを渡す継続です。これらの中間形式を使用して、上記の問題のいずれかを推論することは難しいようです。理論的には自動並列化の可能性が最も高い言語(副作用のない保証付きのHaskellのような純粋な関数型言語)でさえ、この分野での進歩は限られています。 私の質問は、この問題に取り組むためにどのような中間表現が実際に使用されているのかということです。学術研究で使用されているが、このタスクに適しているとは知らない他の表現はありますか?この問題は、コンパイルが中間表現に到達する前に抽象構文ツリーを操作することにより、コンパイラーのフロントエンドで根本的に解決する必要があるものですか?

2
機能的なコンピューターを構築できますか?
FPがやったように、結局、すべてのプログラムは構造化されています。つまり、どれだけ純粋に機能するかは問題ではありません。常にアセンブリに変換されるため、実際に実行されるのは命令、状態、ループです。FPをエミュレートしています。 ハードウェア初心者として、私の質問は次のとおりです。機能スタイルで実際に計算するコンピューターアーキテクチャを使用しないのはなぜですか。たとえば、コンピューターは「concat」、「map」、「reduce」などのプリミティブな「機能チップ」で構成できます。プログラムは、目的の結果を計算するために、これらのチップ間でデータを流す方法をコンピューターに伝えるだけです、連結言語など。 これは本当に意味をなさないが、私が考えていることを説明するかもしれない。

1
本質的にλ計算とは何ですか?
λ計算についての哲学的質問と呼ぶものがあります。 λ-calculusを探索すると、そこでできるすべてのことを見て驚くでしょう。整数、算術演算、ブール値、if-then-elseステートメント、ループ、再帰関数などを定義できます。計算的に完全であることが証明されていると思います。 しかし、反対に、λ-calculusの関数で何ができるかを考えると、できることは関数を渡すだけで別の関数が返されることです。そして、そのプロセスは決して終わりません。 では、どのようにして計算から結果を抽出できますか? 式の結果がfunctionであると仮定しますf。あなたfが期待したものであるかどうかを確認したい。あなたはそれをテストし、あなたが知っている機能を取り、それに適用fして受け取ることができgます。しかし、チェックgが正しいためには、何をするかを検証する必要がありますg。そして、最初からやり直します。では、どうすれば何を伝えることができますfか? λ計算のすべての関数を単一の関数である恒等関数I = λx.xに置き換えることができ、すべてがλ計算で説明されているように機能するように思えます。教会の数字3が与えられfてx戻ってきますf(f(f(x)))。しかし、fとxしかできないのでI、戻りますI。 Iに適用されI、Iを返しますI。だから、I満たすの定義3。「ブール」(λxy.x)と(λxy.y)なりますが必要2つの引数、IおよびIその両方のブール値が返されますI。それぞれが定義どおりに動作する場合でも、それぞれがIDと同等です。 それでは、どのように違いを生みますか?λ計算が単一の関数以上のものを扱うことをどのように示しますか? アイデンティティの概念はありますか?評価せずにすぐに関数を識別できますか?2つの関数が等しいかどうかをテストする方法がないことが証明されたと思います。 または、λ計算は関数ではなく、関数の正式な記述についてですか?つまり、λ式は関数が行うことを定義するだけでなく、関数が操作するデータでもあることを意味します。したがって、を記述する場合A B、には適用さAれませんBが、文字列で記述されAた関数を、B別の形式定義を返すことに含まれる関数の形式定義に適用します。 λ計算では実際に何が起こっているのですか?それが扱う数学的オブジェクトは何ですか? ファローアップ: OK、以下の回答から、λ計算は数学的な意味での関数ではなく、λ式として表現できる関数のサブセットに関するものであるようです。または、λ表現の操作についてさらに詳しく説明します。

2
製品の総所有コストを測定値として使用するTDDで行われた科学的研究はありますか?
Dogsa T、Batic Dでの以前の作業の要約を読んでいたとき、テスト駆動開発の有効性:産業のケーススタディ。ソフトウェア品質ジャーナル。2011; 19(4):643-661。TDDに関する多くの研究で使用されている測定値は、コードの行、欠陥、開発に費やされた時間などに基づいていることが印象的でした。 TDDを使用して開発された製品と従来の開発またはテストラストを使用して開発された製品の総所有コストに焦点を当てた研究はありますか? 私は、買収と運用の総費用に特に興味があります。

4
コード行はCPUによってどのように実行されますか?
私は、高級言語がマシンコードに正確に変換され、CPUによって実行される方法を正確に理解しようとしています。 コードがマシンコードにコンパイルされることを理解しています。これは、CPUが使用できる低レベルのコードです。割り当てステートメントがある場合: x = x + 5; y = x - 3; CPUは一度に1行ずつ実行しますか?したがって、最初にx = x + 5を実行します。CPUが実行する次の命令はy = x-3です。私は本当に実行プロセスと、書いたコードがCPUによって実際に実行される方法を理解しようとしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.