ソフトウェア工学

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

5
盗用しないで自分の「言葉」で安全にコードを書くにはどうすればよいですか?
研究論文の執筆に関しては、盗作と言い換えをかなりよく理解していますが、プログラミングのそれらの同等の分野は私には異質のようです。オンラインでトピックを調べましたが、驚くべきことに、このテーマに関する資料は予想したほど多くありません。 コードを書いて、今までに実装したことがないものを実装しなければならないときは、オンラインで例を探します。事前にドキュメントを読み通そうとしますが、従うのが難しい場合があります。したがって、それが失敗した場合、トピックをオンラインで検索し、多数の例が提示されます(誰かの個人的なブログやSOのようなQ&Aサイトなど)。現在、通常5〜10行のコードが表示されています。これを自分のコードにコピーアンドペーストすることはありませんが、それをそのままコピーダウンすることを心配しています。特定のコードを言い換えることは、特にそうする方法が非常に多くある場合は難しいと思います。変数の名前を変更したり、フォーマットを変更したりするようにします-しかし、これで十分ですか? 私は常にこのトピックを理解したいと思っていましたが、今では新しい言語で作業しており、企業環境では特に適切だと思います。誰かが説明したり、他の場所で良い説明にリンクしたりできるなら、私はそれを大いに感謝します! tl; dr 盗用を避けるために、オンラインで見つけた5〜10個のコードスニペットを変更し、書き直さなければならないことがわかりません。変更できるものがほとんどない場合はどうなりますか?

8
「オープンソースで、パッチを提出してください」と表現すると、わかりやすくなりますか?
「オープンソースです、パッチを提出してください」というレトルトとは何ですか?、多くの人々は、パッチを提出するように単に求めることはsimply慢で失礼だという意見を表明しました。 しかし、私には、オープンソースプロジェクトの開発者として、あなたが実装できるよりも多くの機能要求をメーリングリストで見るように思われます。したがって、ユーザーが「機能Xを見たい」と言ったとき、問題の真実は、通常、パッチを自分で提出しない限り、実装される可能性はかなり低いということです。また、ユーザーをコントリビューターに変えるのに必要なのは、ちょっとした励ましだけでもよい場合もあります。 一方で、失礼として脱落することによって(潜在的な)貢献者を怖がらせたくありません。 では、「機能を要求する代わりにパッチを提出してください」と友好的な方法でどのように言いますか? 更新:すべての提案をありがとう!それらのほとんどはかなり長い説明が必要だと思います。しかし、私はむしろ(a)1日おきに同じことを説明する(時間がかかりすぎる)、または(b)メールに貼り付けるスニペットを使用する(非人称ですぐに取得する)のを避けたいので、私がリンクできるドキュメントにこれを書いた人はいますか? (テストの作成方法、コードのコンパイル方法、パッチの提出方法などのプロジェクト固有の事項は、もちろん文書化する必要がありますが、これらの技術的な問題はCONTRIBUTING.txtに記載する必要があります。)

9
ほとんどのプログラミング言語がブロックコメントをネストしないのはなぜですか?
私が知っている限り、いくつかはそうですが、人気のあるものはどれもありません。コメントをネストすることについて何か悪いことはありますか? 私が取り組んでいる(小さな)言語でブロックコメントをネストする予定ですが、これが悪い考えかどうかを知りたいです。

1
概念を説明し、ソースコードを提示するAIリソースはありますか?
この投稿はコミュニティWikiです。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答は受け付けていません。 AI Horizo​​nと同様に、概念を説明し、ソースコードを提示するAIリソースはありますか? 私は本や研究論文を読みましたが、それらは一般に概念的なアプローチを提示しますが、実際にはそのソースコードを詳しく調べることはありません。

13
コンピューターサイエンスの科学は死んでいますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 質問: CSの科学と芸術は死んでいますか?つまり、問題を考え、計画し、効率的に解決するための実際の要件は、最近ではCSから外れているようです。この分野は、より多くの人々が真にプログラムする方法を学ぶ必要なく「プログラム」できるように、侵入障壁を下げているようです。 背景: 私は最近コンピューターサイエンスの学士号を取得しています。私は、IT部門のかなりの規模の会社で出発点で働いています。私は主に仕事で.NETおよびその他のMicrosoftテクノロジーを使用しますが、これまではインターンシップなどを通じてJavaの仕事をしていました。私は個人的には、楽しいプロジェクトのためのC ++プログラマーです。 詳細:私が行ってきた仕事を通して、本当の科学の強烈な規律はCSにはもう存在しないように思えます。過去には、システムを堅牢かつ迅速にするために、プログラマは問題を効率的に解決する必要がありました。しかし、今では、.NET、Java、スクリプト言語などの普及している技術により、開発の容易さのために効率と堅牢性が犠牲になっているようです。 私が仕事をしている同僚のほとんどは、コンピューターサイエンスの学位さえ持っていません。ほとんどが電気工学の学位を取得しており、一部はソフトウェアエンジニアリングを取得しており、4年のプログラムを持たないハイテクスクールから来た人もいます。それでも、CSの技術的背景がなく、理論やアルゴリズムを勉強しなくても、エレガントなソリューションを作成することを考慮せずに、うまくいきます(最も簡単で安価なソリューションを求めています)。 会社はマイクロソフトの技術を使用するように私たちに促します。Microsoftの技術は問題を真剣に考え、それをあなたのプロジェクトを半分の時間で自動ビルドできるライブラリとツールに置き換えます。私は言語を嫌いにしようとはしていません、彼らは目的を果たし、それをうまくやることを理解していますが、従業員がハッシュテーブルの仕組みを知らず、間違ったソート方法を使用するか、SQLコマンドを実行するときひどく非効率的ですが(許容できる時間内に仕事を終わらせてください)、実際に人々に正しい方法を教えるのではなく、新しい「プログラマー」を悩ませる技術の開発にもっと努力が注がれているように感じます。 私は、効率的で、私の意見では、美しいプログラムを作ることに興味があります。より良い方法があれば、スライドさせるよりも前に戻ってリファクタリングしたいです。しかし、企業の世界では、彼らは私にエレガントではなく迅速にタスクを完了するように促しています。そして、それは本当に私を悩ませます。 これは私がこれからの人生を楽しみにしていることでしょうか?給与だけでなく、CSの科学と芸術を愛する人々のために、まだポジションはありますか? そして、同じメモで、Java Schoolsの危険の前にそれを見なかったなら、ここは良い読書です

5
MVCがPACよりも人気があるのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 SOでPACについての質問に出会ったばかりで、そのパターンに興味を持ちました。なぜMVCほど広く使用されていないのだろうか?PACと比較したMVCの利点は何ですか?

7
経験豊富なRuby on Rails開発者は足場を使用しますか?
Ruby on Railsチュートリアルで、経験豊富な開発者はMVCを自分で接続するコードを書くのが好きなので、scaffoldingを使用しないことを示唆するものを読みました。 別の場所で、私は足場を使用することをお勧めします。それは、コードを見てやり取りする他の人があなたが何をしているのか理解できるように、慣習に固執するのに役立つからです。 Ruby on Railsは初めてですが、MVCやWebアプリケーションは初めてではありません。一般に、scaffoldingの慣習に固執してガイドしてもらうべきでしょうか?

5
エントリーレベルのプログラミングポジションを申請する場合、コーディング例を含めるにはどうすればよいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私はすぐにエントリーレベルのプログラミング職に応募するプロセスを開始します。今のところ、私はプロのコーディング経験がないので、私ができることを示すためにいくつかの個人的なプロジェクトとコードサンプルだけを見せなければなりません。将来の雇用主に、コードサンプル、共同プロジェクト、個人プロジェクトなどの特定の仕事などを提示するにはどうすればよいですか?デジタル名刺のようなものですか?履歴書のウェブリンクから、それがすべてレイアウトされているページへのリンク?個々のプロジェクトページへのリンク 基本的に、それを説明する履歴書のほんの数行を除いて、私がやったことをリストまたは表示するための好ましい方法はありますか?

7
Wikiは、ソフトウェア開発用のドキュメントの保存に本当に適していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 よく文書化されたソフトウェア開発が成功につながることは誰もが知っています。ただし、通常は、プレーンテキストだけでなくバイナリコンテンツもUML図などのドキュメントに含まれることを意味します。そして、私は多くの人がそれを言うのを聞いたことがあります。バージョン管理システムは、バイナリファイルの適切な場所ではありません。私はこの問題を完全に理解し、同意します。文書を保管するのに最適な場所はどこにあるべきか、何人かのベテランの開発者に尋ねました。Wikiは良いですが、別の潜在的な問題を検討しました。バージョン管理システムに保存されているソースコードは、Wikiの関連ドキュメントにどのように接続できますか?誰かがgitまたはmercurialのリポジトリを複製したとしましょう。彼/彼女はどのようにしてドキュメントを簡単に見つけることができますか?または、私は何かを見逃しましたか? 一部のウィキシステムには、ソース管理システムと統合する機能があることを知っています。しかし、私の懸念は統合の能力に関するものではありません。gitリポジトリからソースコードのクローンを作成し、しばらくしてから電車に乗って、電車でオフラインで仕事を続けたい場合(これはDVCSの大きな機能です)。次に、電車でオフラインで作業しているため、ドキュメントにアクセスできないことに突然気付きます。一方、ドキュメントがgitリポジトリに保存されている場合、リポジトリが複製されたドキュメントにアクセスできます。

6
自己参照の匿名クロージャー:JavaScriptは不完全ですか?
JavaScriptで匿名の自己参照関数のクロージャーが非常に優れているという事実は、JavaScriptが不完全な仕様であることを示唆していますか?これの多くを見る: (function () { /* do cool stuff */ })(); そして、私はすべてが好みの問題だと思いますが、あなたが望むのはプライベートな名前空間だけであるとき、これは手品のように見えませんか?JavaScriptはパッケージと適切なクラスを実装できませんでしたか? ECMAScriptに基づくActionScript 3と比較してください。 package com.tomauger { import bar; class Foo { public function Foo(){ // etc... } public function show(){ // show stuff } public function hide(){ // hide stuff } // etc... } } JavaScriptで実行するコンボリューションとは対照的です(これは、jQueryプラグイン作成ドキュメントから)。 (function( $ ){ var …
18 javascript 

12
言語仕様を読む価値はありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 もしあなたがその言語やそれに類するもののためのコンパイラ/インタプリタを書こうとしないなら、言語仕様/標準文書(例えば、Java言語仕様)を読む価値があるのだろうか?このような本を読むことは、誰もが初めて言語に触れるべきではないことを理解していますが、その詳細を学ぶには素晴らしい方法です。 他の人を悩ませたことはありますか?

2
複数のメジャーバージョンが維持されているプロジェクトでgit-flowを効果的に使用するにはどうすればよいですか?
私はいくつかのプロジェクトをgit flowワークフローに移行しましたが、それが大好きです。ただし、一度に複数のメジャーバージョンが維持されているプロジェクトで作業する場合、物事をスムーズに進めるベストプラクティスは見つかりませんでした。 具体的には、「無料版」や「有料版」などのパラレルモデルを維持していません。バージョン1がリリースされ、マイナーバージョン(1.1、1.2などでサポートされているプロジェクト)について話しているのです。 。)バージョン3がリリースされるまで、その時点で2と3が維持され、4がリリースされるまで... gitflowワークフローでプロジェクトの2つ以上のサポートされているバージョンを一度にどのように維持しますか?
18 git  workflows  gitflow 

4
データベースの抽象化—やり過ぎですか?
多数のデータベース抽象化レイヤーにさらされた後、私は、データにアクセスするための独自の異なるパラダイムを発明するすべてのライブラリーのポイントが何であるか疑問に思い始めています。新しいDALを取得することは、新しい言語をもう一度学習するように感じます。通常、やりたいことは、既に自分の頭に書いたSQLクエリを出力するようにレイヤーを説得することだけです。 そして、それは事後の読みやすさにさえ触れていない: # Exhibit A: A typical DAL rows = db(db.ips_x_users.ip_addr == '127.0.0.1') .inner_join(db.ips_x_users.user_id == db.users.id) .select(order=(db.ips_x_users.last_seen, 'desc'), limit=10) # Exhibit B: Another typical DAL rows = db.ips_x_users .join(db.users, on=db.ips_x_users.user_id == db.users.id) .filter(db.ips_x_users.ip_addr == '127.0.0.1') .select(sort=~db.ips_x_users, limit=10) # Exhibit C: A hypothetical DAL based on standard SQL syntax rows = …
18 database  sql  api-design  dsl 

5
VimやEmacsは、.NetやJavaなどの言語に実用的ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 そのため、私は主に.Net開発者であり、Java、Python、その他いくつかの作業を随時行っています。多くの人が、基本が決まったら、VimとEmacsの効率を大幅に高めると称賛していると聞きました。十分な練習をすれば、どれだけの機能が非常に役立つかは間違いなくわかりますし、学習曲線はおそらく努力する価値があるとさえ信じています。しかし...平均的な開発者がVisual Studio、Netbeans、Eclipse、または他のプラットフォームにいるのと同じくらいVimまたはEmacsで効率的にするには、マクロとホットキーのある種のウィザードでなければならないようです。私はVimの使い方を学び始め、その機能のいくつかは素晴らしいと思います(たとえば、列の編集)が、ヘビーウェイトIDEが提供するツールの多くは単純に置き換えることができず、最もジューシーなテキストでも購入できないようです編集者。 Linq-to-SQL用のdbmlファイルの生成 自動テスト UIの設計 プロジェクトとソリューションの作成/整理 VimとEmacsはVSができること(インテリセンス、リファクタリングなど)と同じことを非常に強力に行うことができることを知っています。これらのプラットフォームで作業している人が実際にVimやEmacsの恩恵を受けることはありますか?
18 ide  vim  emacs 

3
プログラミング言語に関する研究はありましたか?
プログラミング言語は形式言語ですが、多くの形式とは異なり、運用セマンティクス、またはマークアップ言語の場合はプレゼンテーションセマンティクスによって定義される特定の固有の意味もあります。プログラミング言語は、実際には形式的ではありますが、許可されるコミュニケーションの点では自然言語に非常に似ています。 プログラミング言語の開発は人工的ですが、自然言語の進化、借用、混合、および突然変異のプロセスにはすべて、かなり明確な人工的な対応があります。だから、私は疑問に思っている:言語学者の観点からプログラミング言語の進化と振る舞いに関する大規模で詳細な研究はこれまでにありました か?

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