タグ付けされた質問 「procedural」

16
ユーザー定義の演算子が一般的ではないのはなぜですか?
関数型言語で見落としている機能の1つは、演算子が単なる関数であるという考えです。したがって、カスタム演算子を追加することは、関数を追加するのと同じくらい簡単です。多くの手続き言語では演算子のオーバーロードが許可されているため、ある意味では演算子は関数のままです(これは、テンプレートパラメーターの文字列として演算子が渡されるDで非常に当てはまります)。 演算子のオーバーロードが許可されている場合、カスタム演算子を追加するのは簡単なことが多いようです。私はこのブログ投稿を見つけました。これは、カスタム演算子が優先順位規則のために中置記法でうまく機能しないと主張していますが、著者はこの問題にいくつかの解決策を提供します。 私は周りを見回しましたが、その言語のカスタム演算子をサポートする手続き言語を見つけることができませんでした。ハック(C ++のマクロなど)がありますが、それは言語サポートとほとんど同じではありません。 この機能の実装は非常に簡単なので、なぜもっと一般的ではないのですか? itいコードにつながる可能性があることは理解していますが、それによって、過去に言語設計者が簡単に悪用される可能性のある便利な機能(マクロ、三項演算子、安全でないポインター)を追加することを妨げませんでした。 実際の使用例: 欠落している演算子を実装します(たとえば、Luaにはビット演算子がありません) Dの模倣~(配列連結) DSL |Unixパイプスタイルの構文シュガーとして使用(コルーチン/ジェネレーターを使用) 私はまた、言語に興味があるんカスタム演算子を許可するが、私は、より興味なぜそれが除外されています。スクリプト言語をフォークしてユーザー定義の演算子を追加することを考えましたが、どこにも表示されていないことに気付いたときに自分自身を止めました。したがって、言語デザイナーが私よりも賢いのは私がそれを許可していないことにはおそらく十分な理由があります。

12
Cが「オブジェクト指向」言語と見なされないのはなぜですか?
Cには、オブジェクトと見なすことができる「構造」などの独自の準オブジェクトがあるようです(通常は高レベルの方法で考えられます)。 また、Cファイル自体は基本的に別個の「モジュール」ですよね?モジュールも「オブジェクト」のようなものではありませんか?C ++に非常に似ているCが、C ++が高レベルの「オブジェクト指向」である低レベルの「手続き型」言語と見なされる理由について混乱しています *編集:(説明)なぜ、どこで、「オブジェクト」が何のために、そして何のために線が引かれているのか?

4
命令型プログラミング、手続き型プログラミング、構造化プログラミングの違いは何ですか?
(書籍、ウィキペディア、SEに関する同様の質問など)を調査することで、命令型プログラミングは主要なプログラミングパラダイムの1つであり、コンピューターが実行する一連のコマンド(またはステートメント)を記述する(つまり、特定のアクションを実行するように多くの順序を指定するため、「命令型」という名前が付けられます)。ここまでは順調ですね。 一方、手続き型プログラミングは、命令型プログラミングの特定のタイプ(またはサブセット)であり、プロシージャ(関数)を使用してコンピューターが実行するコマンドを記述します。 最初の質問:手続き型ではない命令型プログラミング言語はありますか?言い換えると、プロシージャなしで命令型プログラミングを使用できますか? 更新:この最初の質問には答えられているようです。言語は、手続き的または構造化されていなくても不可欠です。例は、純粋なアセンブリ言語です。 次に、構造化プログラミングもあります。これは、命令型プログラミングの別のタイプ(またはサブセット)と思われ、GOTOステートメントへの依存を取り除くために登場しました。 2番目の質問:手続き型プログラミングと構造化プログラミングの違いは何ですか?あなたは一方を他方なしで持つことができますか?画像のように、手続き型プログラミングは構造化プログラミングのサブセットであると言えますか?

12
手続き型プログラミングに対するオブジェクト指向プログラミングの利点は何ですか?
Cのような手続き型言語とC ++のようなオブジェクト指向言語の違いを理解しようとしています。私はC ++を使用したことはありませんが、2つを区別する方法について友人と話し合ってきました。 C ++には変数を定義するためのパブリックモードとプライベートモードだけでなく、オブジェクト指向の概念もあると言われています。Cにはないものです。Visual Basic.NETでプログラムを開発する際にこれらを使用する必要はありませんでした。これらの利点は何ですか? また、変数がパブリックであればどこからでもアクセスできると言われましたが、Cのような言語のグローバル変数とどのように異なるのかは明確ではありません。プライベート変数がローカル変数とどのように異なるのかも明確ではありません。 私が聞いたもう一つのことは、セキュリティ上の理由から、関数にアクセスする必要がある場合、最初に関数を継承する必要があるということです。ユースケースは、管理者がすべてではなく必要なだけの権限を持っている必要があることですが、条件付きでもうまくいくようです: if ( login == "admin") { // invoke the function } なぜこれが理想的ではないのですか? オブジェクト指向のすべてを行うための手続き的な方法があるように思えるのに、なぜオブジェクト指向のプログラミングを気にしなければならないのですか?

4
手続き型プログラミングとは何ですか?OOPとはどのくらい違いますか?関数型プログラミングと同じですか?
私はJavaで非常にオブジェクト指向(OO)スタイルでプログラミングしています。OOPは非常に直感的に理解できますが、他の種類のプログラミングに関する知識はほとんどありません。 手続き型プログラミングとは何ですか?OOPとはどのくらい違いますか?関数型プログラミングと同じものですか? 私は、オブジェクト指向ではないプログラミングはすべて手続き型であると考えていました。しかし、私はこれが真実ではないと考え始めています。

7
手続き型プログラミング時代のデザインパターンは何でしたか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 同様:20年前にプログラミングはどのように行われましたか? OOPは最近非常にファッショナブルで、1960年代にSimula 67にルーツを持ち、後にSmalltalkとC ++で人気を博しました。DRY、SOLID、オブジェクト指向の世界のデザインパターンに関する多くの本があります。 しかし、OOPパラダイムが広く採用される前のプログラミングの主な原則は何でしたか?そして、主要な設計パターンは何でしたか?

5
単体テストの手続きコードは効果的ですか?
現在のプロジェクトでは、コードに浸透していると思われる一定量のバグを回避するために、開発サイクルにユニットテストを組み込むことを望んでいます。問題は、スパゲッティコードの95%が手続き型であり、ユニットテストを一度も行ったことがないことです(ユニットテストの経験はすべて、OOPコードを使用したことです) 簡単に言えば、私の質問は、現在のコードベースで単体テストを進めるのが賢明でしょうか、それともアプリケーションが適切なOOPフレームワークに移行されるまで延期することを提案するのでしょうか? PS:私はこの問題を言語にとらわれないものとしてスタイル付けようとしましたが、問題のアプリケーションはPHPとjavascriptを使用していると述べると、経験からこの発生はこのようなアプリケーションで最も多く発生するため、この質問に答えることができるより具体的な回答を提供するのに役立つと感じています。

4
論理的に手続き型のソフトウェアをオブジェクト指向言語で記述する最もクリーンな方法
私は電気技師で、一体何をしているのかわかりません。私のコードの将来のメンテナーを保存してください。 最近、機能が論理的に「手続き型」である(C#の)いくつかの小さなプログラムに取り組んでいます。たとえば、その1つは、さまざまなデータベースから情報を収集し、その情報を使用して一種の要約ページを生成し、印刷してから終了するプログラムです。 これらすべてに必要なロジックは約2000行です。以前の開発者が行っていたように、私はそれらすべてを1つにmain()詰め込んで#regionsで「クリーンアップ」したくありません(シャダー)。 ここに私がすでに満足していないいくつかの試みがあります: DatabaseInfoGetter、SummaryPageGenerator、PrintUtilityなど、機能の粗いビットごとに静的ユーティリティを作成します。メイン関数を次のようにします。 int main() { var thisThing = DatabaseInfoGetter.GetThis(); var thatThing = DatabaseInfoGetter.GetThat(); var summary = SummaryPageGenerator.GeneratePage(thisThing, thatThing); PrintUtility.Print(summary); } 1つのプログラムでは、インターフェイスも使用しました int main() { /* pardon the psuedocode */ List<Function> toDoList = new List<Function>(); toDoList.Add(new DatabaseInfoGetter(serverUrl)); toDoList.Add(new SummaryPageGenerator()); toDoList.Add(new PrintUtility()); foreach (Function f in toDoList) f.Do(); } …

2
データ指向インターフェースへのプログラミング
次のスタイルで記述されたコードベースの一部があります。 // IScheduledTask.cs public interface IScheduledTask { string TaskName { get; set; } int TaskPriority { get; set; } List<IScheduledTask> Subtasks { get; set; } // ... several more properties in this vein } // ScheduledTaskImpl.cs public class ScheduledTaskImpl : IScheduledTask { public string TaskName { get; set; } public …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.