ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

10
堅牢なコードを定義するものは何ですか?
私の教授は、「堅牢な」コードについて話すとき、このJavaの例を参照し続けます。 if (var == true) { ... } else if (var == false) { ... } else { ... } 彼は、「堅牢なコード」とは、プログラムがすべての可能性を考慮に入れており、エラーなどは存在しないことを意味すると主張しています。 しかし、私は疑っています。変数がブール値の場合、3番目の状態が論理的に不可能なときに3番目の状態をチェックするポイントは何ですか? 「エラーのようなものを持たないこと」もばかげているようです。Googleアプリケーションでさえ、エラーを静かに飲み込んだり、何らかの形でそれらを有効な状態と見なしたりするのではなく、ユーザーに直接エラーを表示します。そしてそれは良いことです-私は何かがうまくいかないときを知ることが好きです。そして、アプリケーションにエラーが発生することは決してないだろうという主張はかなりのようです。 それでは、「堅牢なコード」の実際の定義は何ですか?


8
なぜセグメンテーションではないのですか?
私はオペレーティングシステムとx86アーキテクチャを勉強しています。セグメンテーションとページングについて読んでいる間、現代のOSがメモリ管理をどのように処理するのか自然に興味がありました。私がLinuxや他のほとんどのオペレーティングシステムで見つけたものから、ページングを優先してセグメンテーションを本質的に回避しています。私が見つけたこの理由のいくつかは、シンプルさと移植性でした。 セグメンテーション(x86またはそれ以外)の実用的な用途は何ですか?それを使用する堅牢なオペレーティングシステムが表示されるか、ページングベースのシステムが引き続き使用されます。 今、私はこれがロードされた質問であることを知っていますが、新しく開発されたオペレーティングシステムでセグメンテーションがどのように処理されるか興味があります。ページングを支持することは、「セグメント化された」アプローチを誰も考慮しないほど理にかなっていますか?もしそうなら、なぜですか? そして、「排除」セグメンテーションと言うとき、Linuxは必要な範囲でのみ使用することを意味します。ユーザーおよびカーネルコード/データセグメント用のセグメントは4つだけです。Intelのドキュメントを読みながら、セグメンテーションはより堅牢なソリューションを念頭に置いて設計されていると感じました。それから、x86がどれほど複雑になるかを何度も言われました。 Linux Torvaldの元々のLinuxの「アナウンスメント」にリンクした後、この興味深い逸話を見つけました。彼はこれについて、いくつかの投稿を後に述べました。 簡単に言えば、移植は不可能だと思います。ほとんどはCで書かれていますが、ほとんどの人は私がCを書いているものとは呼びません。これは、386について教えてくれるプロジェクトでもあったので、386の考えられるすべての機能を使用します。すでに述べたように、 、ページング(まだディスクへではない)とセグメンテーションの両方。本当に386に依存するのはセグメンテーションです(すべてのタスクにはコードとデータ用の64Mbセグメントがあります-4Gbで最大64タスク。64Mb/タスク以上が必要な人は誰でもCookieが強い)。 私自身がx86を試した結果、この質問をするようになったと思います。LinusにはStackOverflowがなかったため、それを実装して試してみました。

14
企業は起業家志望のソフトウェア開発者を雇いますか?[閉まっている]
コードを書いて問題を解決するだけでなく、いつか起業家になって自分の会社を経営したいという開発者もいます。彼らはオープンソースプロジェクトに参加したり、さまざまなネットワーキングイベント/ミートアップに参加したり、仕事以外で自分のビジネスを形成/開始するのに役立つコードを書いたりすることもあります。 そして、例えば、将来の雇用者との完全に率直なインタビューは次のようなものになるかもしれません: 会社:5年後の自分はどうなっていますか? あなた:私は自分でCity Zでソフトウェア会社を経営し、xxプロジェクトを行い、yy種類の問題を解決しているのを見ています。 これは、この種の開発者が退職するリスクが高く、特定のソフトウェアを開発した経験や特定の業界知識を持っていると考える会社にとっては危険な場合があります。 開発者は、この種の願望/特徴を現在の雇用主から隠すべきですか、それともインタビューしているところですか?この種のことを言及するのはプロではありませんか?それは彼らが雇われるチャンスを助けたり、傷つけたりしますか?

14
プロジェクトを完了することはどれくらい重要ですか?[閉まっている]
私は学生です(まだ大学に通っています)。今から5年ほどプログラミングをしています。その間、私は言語から言語へ、APIからAPIへ、そしてプロジェクトからプロジェクトへと飛び回っていました。私は一つのことに自分自身を設定しようとしましたが、興味を失います。私のPC全体は半分の完成したプロジェクトでいっぱいです(そして、少なくとも4倍は私のディスクからフォーマットされています)。 それを楽しむためのプログラミングに対する私のモチベーションが低いのは、私が最後に完成したプロジェクトを一度も手に入れられないからではないかと思い始めます。私は、あまりにもオープンエンドの目標を持っているのか、それとも注意力が低いだけなのかわかりません。私はそれらを完成させるためだけにいくつかの小さなプロジェクトを試みましたが、それらは私には全く興味がありません。 これが私のモチベーションの低下の原因になりますか?また、私がuni(そして将来的にはソフトウェアの仕事)に行くことを申請するとき、それは問題になる可能性がありますか? 要約すれば: キャリア、モチベーション、または教育のために、サイド/ホビープロジェクトを完了することはどれくらい重要ですか?



7
関数型プログラミングが増えていますか?
私は最近、関数型プログラミング言語の人気が高まっていることに気付きました。Tiobe Indexの人気が昨年と比較してどのように増加しているのかを最近見ましたが、このインデックスによると、それらのほとんどは最も人気のある上位50言語にさえ達していません。 そして、これはかなり以前からそうでした。関数型プログラミングは、他のモデルほど普及していません(つまり、オブジェクト指向プログラミング)。 関数型プログラミングの力に生まれ変わりましたが、マルチコアの人気が高まっているため、開発者はHaskellやErlangなどの言語で既に検討されている他の並行性モデルに関心を示し始めています。 コミュニティの大きな受け入れがないにもかかわらず、この種の言語がますます出現しているという事実に大きな関心を持っています。Clojure(2007)、Scala(2003)、F#(2002)は、最近の10年間のほんの3つの例です。 私自身、HaskellとScalaを学ぶのに時間を費やしてきました。そして、私は長い間そこにいたにもかかわらず、私にとっては新しいパラダイムに大きな可能性を見出しました。 そしてもちろん、私の最大の質問は、これらのいずれかが努力を検討するのに十分人気があるかどうかですが、これはすべての大騒ぎの人々がそれらについて作っているにもかかわらず、Mandrakeでさえ答えることができない質問です。 私が聞きたいのは: 特定のタスクを実行するのにより適した関数型プログラミング言語を検討すべきシナリオはどれですか?並列プログラミングの最近人気のマルチコア問題に加えて。 関数型プログラミング言語に切り替えることにした場合、私が直面する最大の落とし穴になると思いますか?(パラダイムの変更と、遅延評価によるパフォーマンスの評価の難しさに加えて)。 非常に多くの関数型プログラミング言語がありますが、ニーズに合った言語をどのように選択しますか? さらなる研究のための推奨事項は大歓迎です。 私は意見を求めてウェブを検索しましたが、この新たな人気はすべて、ムーアの法則の壁にぶち当たろうとしているという考えから来ているようです。しかし、そうだとすれば、既存の一般的な言語がパラダイムに適応する可能性はもっと高いと思います。 おそらくこれらの言語を毎日使用する経験が豊富な人の中には、このテーマに関するより多くの洞察を提供できる人もいます。あなたの意見はすべて高く評価され、慎重に検討されます。 前もって感謝します!

16
ライブラリとコードスニペットを多用しない具体的な理由はありますか?[閉まっている]
全体的に私は約8年間プログラミングに携わっており、「仕事をやり遂げる」ためにオープンソースライブラリとスニペット(GitHubを気にせず)にますます依存しているように思えます。やがて自分の実装を書くことができることは知っていますが、全体的な設計に集中したいです。 これは正常ですか(非企業環境)?私の「プログラミング」が異なるライブラリーを一緒に接着すること以外の何物でもない場合、何がうまくいかないのでしょうか? 「車輪を再発明しない」ことは知っていますが、もう1つの車輪を発明しないとどうなりますか?


10
在宅勤務の(不利な)利点についてのハードデータはありますか?[閉まっている]
在宅勤務の長所と短所に関する確固たるデータ(研究、比較、非直感的感覚分析)はありますか? 私の開発者は、たとえば週に1日自宅で仕事をすることについて尋ねましたが、上司はさまざまな理由でそれを気に入らなかったのです。 実在するオフィス(それぞれ2..3人)があり、気晴らしは依然として一般的です。IMOはフォーカスに有益であり、1週間に1日あれば、相互作用やコミュニケーションに大きな損失はありません。さらに、それは素晴らしい特典であり、通勤を節約するでしょう。 関連:リモート/自宅での作業の長所と短所 (興味深い点ですが、難しい事実はありません) 明確にするために、それは私の決定ではなく、状況に応じて賛否両論があることに同意し、「試してみてください」を推進しています。(a)事実はエンジニアの上司と議論する際の考えに加え、(b)私たちは開発者として、あらゆる尊敬すべき取引のような事実に基づいて構築する必要があるため、この特定の質問をしました。

15
クリエイティブコーディングの何がそんなに悪いのですか?[閉まっている]
ボブ・ロスが今夜「ハッピー・ツリー」をペイントするのを見ていましたが、最近、自分のコードについて何が私にストレスを与えているのかがわかりました。 こことStack Overflowの人々のコミュニティは、不完全さのあらゆる気まぐれを拒否しているようです。私の目標は、スキルを向上させることにより、立派な(したがって、保守可能で機能する)コードを書くことです。それでも、私は創造的にコーディングしています。 「創造的にコーディングする」ことの意味を説明しましょう。 プロジェクトの最初のステップは、多くの場合、座ってコードを打ち消すことです。より大きなものについては、あちこちで少し計画を立てていますが、ほとんどの場合は飛び込みます。 プロジェクトで他のピースを作成している他の人と一緒に作業している場合を除き、クラスを図に示していません。それでも、それは確かに私が最初にすることではありません。私は通常、大規模なプロジェクトに取り組んでおらず、ビジュアルが非常に便利だとは思いません。 私が書いた最初のコードは、何度も何度も書き直され、元のハックをテスト、簡素化、やり直し、再利用可能、論理的、効率的なものに変換します。 このプロセスの間、私はいつも掃除しています。未使用のコードを削除し、明らかでないものはコメントします。私は常にテストしています。 私のプロセスは、プロの開発者コミュニティで受け入れられるものの粒に反するようであり、その理由を理解したいと思います。 悪いコードに関する不満のほとんどは、誰かが元従業員の混乱に巻き込まれていることであり、修正するには多くの時間とお金がかかったことです。私が理解していること。最終結果が最初からすべてを計画することで得られるものに似ていることを考えると、私のプロセスが間違っていることは理解できません。(少なくとも、それは私が見つけたものです。) この問題に対する私の不安は最近非常にひどく、私が取り組んでいる特定の問題を解決するためのすべての方法についてすべてがわかるまでコーディングをやめました。言い換えれば、私はほとんどコーディングを完全にやめました。 問題についてのあなたの意見がどうであれ、私はあなたの意見に心から感謝します。 編集: 回答ありがとうございます。私はそれらのそれぞれから何かを学びました。あなたはすべて最も役に立ちました。

8
HTML5の使用を開始するにはどうすればよいですか?[閉まっている]
HTML5を学習するための推奨ワークフローは何ですか?どのツールをインストールする必要がありますか?どのSDKですか?どこから始めれば?テスト方法 デバッグ方法 私は何を読みますか? 「HTML5開発」と呼ばれることが多いのは、実際にはHTML、CSS、JSなどの混合物であることを理解していますが、より大きなプロジェクトがメモ帳で開発されているとは思いません。だからこそ、ワークフローに関するヒントやコツを明らかにするようお願いしています。
42 javascript  html  css  ajax  html5 

14
より良い見積もりをする方法を学ぶには?[閉まっている]
私は見積もりを吸います。誰かが私に何か時間がかかるかと尋ねると、私は完全に調子が悪くなるので、推測する勇気さえありません。通常、私はあまりにも楽観的であり、おそらく私の推測にいくつかの大きなX因子を掛けるべきです... より良い見積もりをする方法を学ぶにはどうすればよいですか?私の大学では教えられていませんし、すべての労働の期限がありますが、私は何かが実際にどれくらいかかるかについて決して考えません。どっちがいい?みんなのために(特に私のもの)。

10
「ユースケース」、「ユーザーストーリー」、「使用シナリオ」の違いは何ですか?
「ユースケース」、「ユーザーストーリー」、「使用シナリオ」の区別について、正確でありながらシンプルで理解しやすい定義はありますか? 多くの説明がありますが、今のところ、1つか2つの文の違いを説明している人はいません... (例:http : //c2.com/cgi-bin/wiki?UserStoryAndUseCaseComparisonは非常に長く取得が難しく、議論に満ちています)

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