ソフトウェア工学

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

4
文字列オブジェクトに割り当てるときに「」の上にstring.Emptyを使用する理由
コードに対してStyleCopを実行していますが、SA1122の推奨事項の1つは、空の文字列を値に割り当てるときに ""ではなくstring.Emptyを使用することです。 私の質問は、これがベストプラクティスと見なされる理由です。または、これはベストプラクティスと見なされますか?私は2つのステートメントの間にコンパイラの違いがないと仮定しているので、それは読みやすいものだと思うことができますか? 質問と回答 ジョン・スキートの質問への回答
13 c# 

7
固定の小さな語彙がRESTfulサービスの利点と見なされるのはなぜですか?
そのため、RESTfulサービスの語彙には動詞の固定セットがあります。RESTful Webサービスは、HTTPメソッドからこれらを取得します。固定語彙を定義することにはいくつかの利点があると思われますが、私はその点を本当に理解していません。たぶん誰かがそれを説明できるでしょう。 RESTで概説されている固定語彙が、各状態の語彙を動的に定義するよりも優れているのはなぜですか?たとえば、オブジェクト指向プログラミングは一般的なパラダイムです。RPCは固定インターフェースを定義するために記述されていますが、なぜ人々はRPCがこれらの制約によって制限されていると仮定するのか分かりません。RESTfulサービスがそのコンテンツ構造を動的に記述するように、インターフェイスを動的に指定できます。 RESTは、語彙を増やすことなく成長できるという点で有利であると考えられています。RESTfulサービスは、リソースを追加することで動的に成長します。オブジェクトごとの語彙を動的に指定してサービスを拡張することの何がそんなに悪いのでしょうか?オブジェクトでボキャブラリーとして定義されているメソッドを使用し、これらのメソッドが何であり、副作用があるかどうかをクライアントにサービスで説明させてみませんか? 基本的に、サーバー側のリソース構造の記述は語彙の定義と同等であると感じますが、これらのリソースとやり取りするために限られた語彙を使用せざるを得ません。 固定語彙は、クライアントの懸念をサーバーの懸念から本当に切り離しますか?確かにサーバーの構成に注意する必要があります。これは通常、RESTfulサービスのリソースの場所です。動的ボキャブラリーの使用に不満を言うことは、とにかく何らかの方法でこの構成を理解する方法を動的に推論する必要があるため、不公平に思えます。RESTfulサービスは、ハイパーメディアを介してオブジェクト構造を識別することによって実行できる遷移を記述します。 固定語彙が、自己記述型の動的語彙よりも優れている理由がわかりません。これは、RPCのようなサービスで簡単にうまく機能する可能性があります。これは、HTTPプロトコルの語彙が制限されていることの不十分な理由にすぎませんか? 反射 私の考えを私がやったよりも少し良くするためだけに。おそらく汎用のAPIを設計していると仮定します。Web向けではないかもしれません。オブジェクトでこれらのメソッド名しか使用できないと誰かが言ったら、あなたは幸せになりますか?RESTはHTTPに限定されるものではありませんが、作成するすべてのAPI、Web向け、または単純にGET POST PUTおよびDELETEメソッドを含むオブジェクトで構成される状況を考慮してください。そのため、定義したいobject.fooメソッドは不可能です。fooという新しいオブジェクトを定義し、そのGETメソッドを呼び出す必要があります。それが本質的にRESTの仕組みであり、それについて考えるのが少し不快になります。fooが何をするかについての一般的な理解はありません。基本的には親オブジェクトのメソッドである新しいオブジェクトを作成するように強制されました。さらに、APIはそれほど複雑ではありません。より多くのオブジェクトを作成することにより、インターフェイスの複雑さが隠されているだけです。RESTful Webサービスでは、公開しているAPIのコンテキストでは十分である場合とそうでない場合があります。おそらく、Webに面したAPIでこれを行う正当な理由があるかもしれませんが、すべての汎用APIのすべてのオブジェクトに標準インターフェースを採用しない正当な理由があります。実用的な例に感謝します。

5
奇妙な会社のリリースサイクル:分散ソース管理に行きますか?
この長い投稿については申し訳ありませんが、価値があると思います。 私は小さな.NETショップから始めたばかりで、私が働いていた他の場所とはかなり異なった動作をします。私の以前の職務とは異なり、ここで書かれたソフトウェアは複数の顧客を対象としており、すべての顧客がソフトウェアの最新リリースを同時に入手できるわけではありません。そのため、「現在の製品バージョン」はありません。顧客が更新プログラムを入手すると、最後の更新以降にソフトウェアに追加されたすべての機能も入手しますが、これはかなり前のことです。ソフトウェアは高度に設定可能であり、機能のオンとオフを切り替えることができます。いわゆる「機能切り替え」です。ここではリリースサイクルが非常に厳しく、実際にはスケジュールどおりではありません。機能が完了すると、ソフトウェアが関連する顧客に展開されます。 チームは昨年だけVisual Source SafeからTeam Foundation Serverに移行しました。問題は、VSSのようにTFSを使用し続け、単一のコードブランチでチェックアウトロックを強制することです。バグ修正がフィールドに公開されるたびに(単一の顧客であっても)、TFSにあるものをすべてビルドし、バグが修正されたことをテストして顧客に展開します!(私自身は製薬および医療機器のソフトウェアのバックグラウンドから来ており、これは信じられないほどです!)。その結果、テストが行​​われなくても、半分焼き付けられた開発コードが本番環境に入ります。バグは常にリリースビルドに滑り込んでいますが、多くの場合、ビルドを取得したばかりの顧客は、バグが含まれている機能を使用しない場合、これらのバグを見ることはありません。突然、いくつかの大きなクライアントが参加し、さらに小さなクライアントが参加しました。 バグのあるコードや未完成のコードのデプロイを排除するためにソース管理オプションを検討するように頼まれましたが、チームリリースのやや非同期な性質を犠牲にしないでください。私は自分のキャリアでVSS、TFS、SVN、Bazaarを使用しましたが、TFSは私の経験のほとんどがあった場所です。 以前、私が働いていたほとんどのチームは、1か月間、開発者が直接Devで作業し、その後変更をTest then Prodにマージするか、または「ではなく」固定サイクル。Cruise ControlまたはTeam Buildのいずれかを使用して、自動ビルドが使用されました。私の以前の仕事では、BazaarはSVNの上に座って使用されていました。開発者は独自の小さな機能ブランチで作業し、変更をSVN(TeamCityに関連付けられていました)にプッシュしました。これは、変更を簡単に分離し、他の人のブランチと共有するのが簡単だったという点で便利でした。 これらのモデルの両方には、コードがプッシュされる中央のdevおよびprod(および場合によってはテスト)ブランチがありました(そしてラベルはリリースが行われたprodのビルドをマークするために使用されました...そしてこれらはバグ修正のためにブランチにされました)リリースし、devにマージします)。これはここでの作業方法にはあまり適していませんが、さまざまな機能がいつリリースされるかは決まっておらず、完了するとプッシュされます。 この要件により、「継続的インテグレーション」アプローチが崩れます。継続的インテグレーションで新しい機能を使用するには、dev-test-prodを介してプッシュする必要があり、devで未完成の作業をキャプチャします。 これを克服するには、dev-test-prodブランチを持たない機能の多い分岐モデルを使用する必要があります。むしろ、開発作業が完了するとロック、テスト、修正、ロックされる一連の機能ブランチとしてソースが存在する必要があります、テストしてからリリースしました。他の機能ブランチは、必要な場合や必要な場合に他のブランチから変更を取得できるため、最終的にすべての変更が他のすべてのユーザーに吸収されます。これは、前回の仕事で経験した純粋なバザールモデルに非常に当てはまります。 これは柔軟に聞こえますが、開発用トランクやprodブランチがどこにもないのは奇妙に思えます。災害を統合... これについての人々の考えは何ですか? 2番目の最後の質問:分散ソース管理の正確な定義について多少混乱しています:一部の人々は、TFSやSVNのような中央リポジトリがないことを示唆しているようです。 TFSには完全に機能するオフラインモードがあります)、他の人は、機能分岐と親子関係のないブランチ間のマージの容易さについてだと言います(TFSにはベースレスマージもあります!)おそらくこれは2番目の質問です!

4
Rubyが正しかったこと(またはRailsだったこと)[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 ほとんどのプログラミング言語には、使用法と適用可能性に影響する設計上の決定事項がいくつかあります。 例えば: Pythonは、コードの保守性/可読性に焦点を合わせ、インデントを言語自体の一部にしました。 Javaの意図は、クロスプラットフォームOOPをC ++より「簡単」かつ「使いやすい」ものにすることでした Objective-Cは、当時のC ++の未来を知らないCのオブジェクト指向ラッパーとして構築されました。 Erlangは、高度なフォールトトレラントな同時システム向けに設計されています Webページの動的作成を処理するために設計されたPHP Javascript の優れた部分を公​​開し、OOPの構文糖を追加し、JSの「舞台裏」などのニュアンス(グローバルなど)を隠すように設計されたCoffeeScript 各プログラミング言語は、特定のニッチなIMHOを活用して活用しようとしました。上記は、プログラミング言語の創立原理であり、それらの進化と広範な採用可能性を支配したものについての私の見解です。もちろん、もっとたくさんありますが、リストは例としてのみ意図されています しかし、Rubyの基礎となる人気の原則とその人気の高まりを理解するのに苦労しました。今日人気のあるRubyの設立原則は何でしたか?それとも、Railsフレームワークを設計した一人の男の天才でしょうか?後者が、RubyがRailsの設計をより良く、より簡単に、より速くしたとしたら?どのような意味で? その作成者による最も一般的に引用された理由は、「...弱く型付けされた楽しいプログラミング言語を望んでいた」です-新しいプログラミング言語を完全に作成する理由とは思いません!プログラミングは言語に関係なくまったく楽しいです(各言語にはいくつかの悪い部分がありますが、それを回避するか、それと一緒に生活します)。 では、現在の言語では活用されていないRubyの活用法はどのようなニッチなのでしょうか?広く採用されているRubyの「強み」(USP)とは何ですか?Rubyは、これまで行われなかった(または非常に困難だった)ことをしましたか? 私はRubyプログラマーではなく、単にRuby初心者であり、それゆえ混乱しています。 免責事項:これはフレーム戦争ではなく、Ruby vsプログラミング言語タイプの回答を探しているわけではありません。私は、Rubyのベースとなっているデザインの決定を探しています。Rubyが人気を博したために満足しているニッチとは何か、それは純粋にRailsに起因するものですか?

6
ゼロから構築するのではなく、なぜ確立されたCMSを選択するのですか?
今後数週間の私の研究の多くは、さまざまなCMSの研究になります。エピサーバーとウンブラコについては簡単に見てきました。これらのシステムを読みながら、コンテンツ管理機能を提供することは、これらの(かなり大規模な)CMSプラットフォームの多くの詳細と構造を学ぶことなく達成できると考えざるを得ません。 過去には、開発者としての私の役割を編集者の役割とは別にしなければならないプロジェクトが与えられました(理にかなっています)。つまり、サイトのデザインと機能を開発し、クライアントのコンテンツを更新する仕事が私の仕事でした。また、テキスト入力や写真のアップロードなどを受け入れるページがいくつかある「ポータル」を実装することでこれを達成しました(基本的には、彼らが望むどんなコンテンツでも)、この新しいコンテンツをデータベースに記録してから、設計により、コードビハインドはこのすべてをデータベースから関連するコントロール(リピーターなど)に読み取ります。 私にとって、これは、クライアントがコンテンツを管理してソリューションで展開するのに十分効果的な方法でした。私は間違っていることを知っています-そして、CMSが一から構築されたものよりも望ましいことを知っていますが、コストの問題以外に、なぜですか?
13 asp.net  cms 

5
アジャイルなソフトウェア開発:変化するユーザー要件に*財務的に*どのように対応しますか?
SEや他のサイトでこの「アジャイル開発」に関するすべての記事を読むとき、私がいつも疑問に思っていたことが1つあります。 「従来の」ソフトウェアエンジニアリングでは、 ユーザーの要件を収集し、 これらの要件に基づいて仕様を作成し、 それを顧客に渡し、これまでに行った作業の代金を請求します。 実装コストを見積もることができるように(大まかな)技術設計を行います。 ユーザーに実装の価格を提示し、 顧客が仕様に署名してオファーを受け入れるまで待ちます。 設計、実装、テスト、 ビル。 プロセス中に要件が変更された場合、希望する変更のオファー(価格付き)を送信します(または、変更が小さい場合は無料で行います。顧客は好きで、顧客はあまり頻繁に行いません)。 。 では、頻繁な要件の変更がプロセスの一部であるアジャイルプロジェクトでは、これは(財務的に)どのように機能しますか? 設計変更ごとにオファーを書いていますか?(これはかなり面倒ではないでしょうか?) または、固定価格について交渉し、顧客が要件を頻繁に変更しないことを望みますか?(リスクを伴う可能性があります。プロジェクトの完了を受け入れる前に、この機会を利用して新しい機能を何年もリクエストする顧客を知っています。) または、必要な合計時間に対して顧客に請求するだけですか?(事前にコストを知らない顧客にとっては危険です。)

1
オンラインコードエディター[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 主要なオンラインIDEは、サービスプロバイダーのサーバーでホストされています。例は、Kodingen、Cloud9、ShiftEditです。したがって、何らかの理由で外部サーバーがダウンしている場合は使用できず、とにかく自分のコンピューターでコンピューティングを行うことを好みます。 誰もがローカルIDE(ローカルLAMPサーバー)でダウンロードして実行できるオンラインIDEまたはエディター(できればエディター-AceまたはCodeMirror JSエディターの単純な実装)を知っていますか?これまでのところ、Eclipse OrionとWiodeの2つを見つけましたが、どちらもあまり好きではなく、代わりのものを探しています。 また、外部サイトにアクセスせずにブラウザ上でネイティブに(オフラインで)実行されるブラウザ拡張機能も適しています。例はChrom(e / ium)のSourceKitです。
13 ide  text-editor 

3
オーディオを単体テストするにはどうすればよいですか?
私は小さなプロジェクトを継承しており、追加するすべての新しいコードの単体テストを作成して、プロジェクトを拡張し、同時に安定させたいと考えています。最初のクラス、TypedAudioCreatorはオーディオファイルを作成し、これは最初にテストし、2番目のコードを書くのが非常に簡単であることが判明しました。 しかし、書くときが来たときTypedAudioPlayer、どうやってテストできるかわかりませんでした。サウンドの再生の基本に焦点を当てた非常に小さなクラスです。 public class TypedAudioFilePlayer { public event StartedPlayingHandler StartedPlaying; public event StoppedPlayingHandler StoppedPlaying; public readonly int TimeBetweenPlays; private Queue<TypedAudioFile> _playlist = new Queue<TypedAudioFile>(); public TypedAudioFilePlayer(int timeBetweenPlays) { TimeBetweenPlays = timeBetweenPlays; } public void AddFile(TypedAudioFile file) { _playlist.Enqueue(file); } public void StartPlaying() { ThreadPool.QueueUserWorkItem(ignoredState => { while (_playlist.Count > 0) …
13 c#  tdd 

2
アプリケーションに対する否定的なキャンペーンをどのように処理すればよいですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 私は数年前にアプリを開発しました。今日利用できるものと比較すると時代遅れで役に立たないものの、最初にリリースされたときは人々にとって役に立ちました。 最近、Googleで自分の名前を検索し、自分のアプリが正常にアンインストールできないマルウェアであると主張するWebサイトを見つけ、削除するための段階的な手順を提供しました。 もちろんこれは真実ではなく、私はその意味にかなり不満を感じています。 このような状況をどのように処理すればよいですか?サイトの所有者に立ち向かうべきですか、それとも別の方法で扱うべきですか?
13 feedback 

2
Javaの経験がなくてもScalaでAndroidアプリを構築するための理想的な学習パスは何ですか
残念ながら、現時点では理想的なソリューションとなる「ScalaでAndroid開発を学ぶ」というテーマの書籍はありません。ここでは、トピックごとに1冊以上、少なくとも3冊の本を取り上げる必要があると思います。ただし、それらをどの順序で読むか、同時に読むか、Javaブックのどの部分を安全にスキップできるかなどはわかりません。 Scalaを使用してAndroidアプリの構築を始めるための最良の方法は何ですか?
13 java  android  scala 

2
別のサードパーティ製品のバージョンに付随する製品のまともなgit分岐モデル(および1つの提案の賛否両論)
注: 私の質問は、特定の問題(Liferayを含む)に焦点を当てていますが、gitで同じプロジェクトのさまざまなバージョンを維持する必要がある人にとって役立つことを願っています。 私はLiferay Portalの多くのプラグインを書いている会社で働いています。これらのプラグイン(ポートレット、テーマなど)は通常再利用可能であり、もちろん、ポータルの新しいバージョンに合わせて更新する必要があります。 しかし、移行する必要があり、私たちは、言うのLiferayの新バージョンへのポートレットせることが通常であるとその前のバージョンを維持します。また、一部のクライアントに対して非常に具体的なカスタマイズを作成する必要が頻繁にありますが、これは「メインバージョン」に追加しても意味がありません。 これらの要件により作業が複雑になりますが、幸いなことに、いくつかの単純化を想定できます。たとえば、プラグインは一度に1人のプログラマのみが頻繁に更新します。プラグインに複数の機能を同時に追加することは非常にまれです。 現在、Gitoriousに移行しています。このようなシナリオの分岐モデルを考えています。 私のモデル 私が提案したのは: 各プラグインには、プロジェクト内のGitoriousに独自のリポジトリがあります。たとえば、子猫を表示するためのポートレットにはkittens-portlet、liferay-portletsプロジェクト内にリポジトリがあります。 新しいプラグインを作成するときは、Liferayバージョンに応じて名前が付けられたブランチ(たとえば、lf5.2)に作成します。 プラグインで更新が行われるたびに、更新は本番環境で承認およびデプロイされ、プラグインにバージョン(たとえばlf5.2v1、lf5.2v2など)のタグが付けられます* プラグインをLiferayの新しいバージョンに移植するたびに、最新バージョンをブランチします(たとえば、ブランチを作成しlf6.0ます)。 本番環境に入ると、新しいブランチのヘッドはなどのタグを受け取りlf6.0v1ます。 クライアント固有の方法でプラグインをカスタマイズする必要があるたびに、クライアントの名前でブランチを作成します(たとえば、lf5.2clientcorpクライアント「ClientCorp Inc.」のブランチを作成します) これは通常とは異なるモデルですmaster。マージされないブランチはまったくなく、多くあります。これは、そのようなモデルを持つリポジトリが次のように見えると思う方法です: 友人がこのシステムをかなり複雑でエラーが発生しやすいと感じました。彼は、優れた人気のあるVincent Driessenモデルを提案しました。もちろん素晴らしい(そしてテスト済み!)が、私たちの状況には複雑すぎるようだ。 私の友人のモデル 次に、彼は別のモデルを提案しました。Liferayバージョンの各プラグインのリポジトリを作成し(したがって、を作成しkittens-lf5.2-portlet、次にを作成しますkittens-lf6.0-portlet)、それぞれにmasterブランチとdevelopブランチがあります。これmasterにより、いつでも展開の準備が整います。(それとも、他の方法で回避することが、可能性masterとstableによって示唆されているように、スティーブLosh)。 これは非常に簡単ですが、私はこのシステムが好きではありませんでした: その結果、プロジェクトに膨大な数のリポジトリが作成され、Gitoriousの閲覧が困難になる可能性があります。 プロジェクトのディレクトリの名前が関連しています。誰かがリポジトリをkittens-lf6.0-portletディレクトリにクローンし、antを使用してWARを生成する場合(通常どおり)、WAR名kittens-lf6.0-portletも同様になります。このポートレットの古いバージョン(kittens-portletたとえば、名前が付けられている)は、アップグレードされたポータルでは異なる(おそらく欠落している)ポートレットと見なされます。少し注意すれば回避できますが、回避したいです。 同じプラグインの異なるバージョンは別々に維持されます。私は私の心を壊します:( kittens-lf6.0-portlet リポジトリのい名前だと思います。 私は、2つの最後のポイント-これも2つのより主観的なポイント-が私の不本意の主な理由だと思います。それにもかかわらず、すべての4つの異議が立っています。 OTOH、私自身の提案は私には奇妙に思われ、それに隠されたバグがあるのだろうかと思います。OT3rdH gitは非常に強力で柔軟性があるため、その可能性を探ることに恥ずかしさは感じないと思います。 だから、私は尋ねます: 最高のモデルは何でしょうか?わたしの提案?友達のモデル?今では伝統的なビンセント・ドリーセンのシステムですか? 他にどのような分岐モデルを提案しますか? 私のモデルが悪いと思うなら、なぜそう思うのですか?私は欠点と盲点が何であるかを学びたいです。 *実際には、次のようなバージョンでコミットにタグ付けすることを好みますv1が、どうやらgitのタグはブランチ内でスコープされていません-つまり、1 つのv1タグlf5.2ともう1つのタグを持つことはできませんでしたlf6.0ので、ブランチ。それは正しいですか?


3
ClojureはJavaからどれだけ独立していますか?
私はClojureの世界には全く新しいです。Clojureの相互運用機能を介してすべてのJavaライブラリに簡単にアクセスできるという事実に感謝していますが、Clojureがどれだけ独立しているのか疑問に思っていました。 もちろん、コアライブラリはJavaで記述または公開されているため、Javaなどの相互運用性が常に必要となるAndroidなどのプラットフォームもあります。さらに、Clojureの文字列はJavaの文字列なので、文字列操作ライブラリがJavaのStringメソッドのラッパーになると期待しています。 しかし、他のタスクについては、ネイティブのClojureライブラリーを開発できなかった理由はわかりません。Http、日付操作、XML解析、テンプレート、JSONのシリアル化と逆シリアル化、OAuth、数学ライブラリなどを考えてください。 だから私の質問は: ClojureはJavaエコシステムからどの程度独立しましたか?これらのタスクやその他のタスクのほとんどに独自の慣用的なライブラリがありますか?

3
入力ファイル(Makefiles、SConstruct、CMakeLists.txtなど)を整理して自動化ソフトウェアを構築する良い方法は何ですか?
私のコードでやりたいことの1つは、管理しやすい部分にリファクタリングすることです。しかし、ソフトウェアの構築に関しては、私が最終的に使用するビルド自動化ソフトウェア(最近はGNU MakeまたはSCons)が完全に混乱することになります。入力ファイルは、簡単なリファクタリングに逆らう長いスクリプトのように見えます。何らかの方法でそれらをリファクタリングできるようにしたいのですが、「関数」の概念は、プログラミング言語でのビルド自動化ソフトウェアとまったく同じように動作しないため、管理しやすい記述が難しいと感じていますやや複雑なプロジェクトのMakefileまたはSConscriptファイル。 ビルド自動化ソフトウェアの管理可能な入力ファイルを作成することについて、何かアドバイスはありますか?ソフトウェアに依存しないアドバイスが最適ですが、特定のビルド自動化ツール、特にMakeやSConsについてのアドバイスも役立ちます。これは私がプロジェクトで使用しているものだからです。 編集: Thorbjørnが指摘したように、コンテキストと使用例をいくつか追加する必要があります。私は化学工学の博士号を取得しており、計算科学の研究を行っています。(私はSciComp.SEのpro modです。訪問する人のためです。)私のプロジェクトは通常、いくつかの重いスクリプト言語(Python、Python、C ++、Fortran) 、Perl)を使用してプロトタイプを作成し、場合によっては、プロトタイプ作成または技術的な目的でドメイン固有の言語を使用します。 およそ250行の範囲で、以下に2つの例を追加しました。私にとっての問題は、一般的にモジュール性の欠如です。これらのプロジェクトの一部はモジュラーユニットに編成できます。これらのラインに沿ってビルドの一部を抽象化し、私と将来のメンテナーが追跡しやすくするのは良いことです。各スクリプトを複数のファイルに分割することは、頭の中でいじくり回してきた1つのソリューションです。 2番目の例は特に重要です。なぜなら、すぐに多数のファイルが必要になるからです。 以下は、265行Makefileが実際のプロジェクトから取得し、できる限り整理したものです。 #!/usr/bin/make #Directory containing DAEPACK library folder daepack_root = . library = $(daepack_root)/lib wrappers = $(daepack_root)/Wrappers/DSL48S c_headers = parser.h problemSizes.h f77_headers=problemSizes.f commonParam.f f90_headers=problemSizes.f commonParam.f90 includes = -I. -Iinclude -I/usr/include/glib-2.0 \ -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 \ -I/usr/include/libgdome -I/usr/include/gtest/ #Fortran 77 environment variables f77=gfortran …

5
異種リストに特定の目的はありますか?
C#とJavaのバックグラウンドから来た私は、リストが同種であることに慣れていて、それは私にとって理にかなっています。私がLispを取り上げ始めたとき、リストが異種であることに気付きました。dynamicC#でキーワードをいじり始めたとき、C#4.0の時点で、異種のリストが存在する可能性があることに気付きました。 List<dynamic> heterogeneousList 私の質問は、ポイントは何ですか?異種リストは、処理を行う際のオーバーヘッドがはるかに大きくなるようであり、1つの場所に異なる型を格納する必要がある場合は、異なるデータ構造が必要になる場合があります。私の素朴さはそのい顔を育てているのですか、それとも異種のリストを持つことが本当に役立つときがありますか?

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