問題タブ [imperative]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
procedural - 手続き型(命令型)ベースのアプリケーションを正常に設計および構築することは可能ですか?
手続き型で、高レベルの整合性と効率を維持する今日のアプリケーションの例を提供できますか?命令型システムを正常に構築および維持する方法の例を提供する本、チュートリアル、またはリンクはありますか?この分野でガイダンスを提供する場合、どのように構成する必要があるかについて、どのようなヒントを提供しますか?OOPは手続き型プログラミングの自然な進歩として提示されることが多いので、私は尋ねますが、それが常に当てはまるとは信じられません。
object - クロージャーとオブジェクト
関数型プログラミングは..古典的なものです(マーク・トウェインのタイプ)。SICP に関する別の記事を読んでいるときに、人々が閉鎖がそこでの思考に与えた大きな影響について話しているときに、私はこれを思い出しました。
クロージャーは貧乏人のオブジェクト オブジェクトは貧乏人のクロージャー
(正確なソースを思い出すことはできませんが、それはプログラマーのロゼッタストーン、またはプログラミングの禅、またはプログラミングのタウでした... Googleは非常に混雑しているため、元のソースにアクセスできません)
それで、共同プログラマー...あなたの見解は...あなたがいつも見逃していたクロージャーです..または、プリプロセッサーができる構文糖衣です!!
programming-languages - 命令型言語で使用できる関数型言語の手法は何ですか?
通常関数型言語に関連付けられている手法またはパラダイムは、命令型言語でも生産的に使用できますか?
例えば:
- 再帰は、テールコール最適化のない言語では問題になる可能性があり、その使用は限られたケースのセットに制限されるため、有用性は限られています
- マップとフィルターは、関数型の感覚を持っているにもかかわらず、非関数型言語への道を見つけました
私はたまたま、関数型言語の状態について心配する必要がないのが本当に好きです。私が特に頑固だったら、変数を変更せずに、関数に渡される変数と関数から返される値に自分の状態をカプセル化するだけで、C プログラムを書くかもしれません。
関数はファーストクラスの値ではありませんが、Java のオブジェクトで関数をラップして、それを別のメソッドに渡すことができます。関数型プログラミングと同様に、楽しくありません。
それでは、関数型プログラミングのベテランにとって、命令型言語でプログラミングする場合、FP のどのアイデアをうまく適用できますか?
oop - 命令型と質問型の方法
クラスを実装するときは、メソッドの値を返す(質問)か、メソッド内でクラス属性を直接操作する(命令)方がよいでしょう。
たとえば、CSVファイルに出力する文字列を作成するクラスがあります。私はそれをこのようにするかもしれません:
または、私はそれをこのようにするかもしれません:
それは単に個人的な好みの問題ですか、それとも一般的に受け入れられているベストプラクティスのガイドラインがありますか?
乾杯、
アンドリュー
language-agnostic - 宣言型言語の実装の詳細は本質的に必須か
Tomas Petricek と Jon Skeet による「Functional Programming」を読んでいて、宣言型プログラミングと命令型プログラミングの違いを理解しています。
私が疑問に思っていたのは、プリミティブ演算子と関数がどのように実装されているか、命令型演算子と関数から構築された宣言型言語であるということです。
乾杯
AWC
java - 親と子へのポインターを使用して、Haskell でオブジェクトのツリーをコーディングするにはどうすればよいですか?
次の問題があります。子クラスのアクションが親を無効にする、さまざまなクラスのオブジェクトのツリーがあります。命令型言語では、行うのは簡単です。たとえば、Java では次のようになります。
Haskellで上記を行うにはどうすればよいですか? Haskell でオブジェクトを構築すると、それを変更することはできないため、これに頭を悩ませることはできません。
関連するHaskellコードが投稿されている場合、私は非常に義務付けられています.
編集:私が解決しようとしている問題は次のとおりです。
ドキュメントを編集するアプリケーションがあります。ドキュメントは、オブジェクトの階層です。子オブジェクトのプロパティが変更された場合、ユーザーがドキュメントを検証する必要があることを認識できるように、ドキュメントを無効な状態に設定する必要があります。
scala - Scala のパフォーマンス: 命令型と関数型のスタイル
私は Scala が初めてで、Scala By Exampleを読んでいたところです。第 2 章では、著者は 2 つの異なるバージョンの Quicksort を使用しています。
1 つは命令型のスタイルです。
1 つは機能的なスタイルです。
関数型のスタイルが命令型のスタイルよりも優れていることは明らかです。それは簡潔さです。しかし、パフォーマンスはどうですか?再帰を使用するため、C などの他の命令型言語と同じように、パフォーマンスのペナルティを支払う必要がありますか? または、Scala はハイブリッド言語であり、"Scala 方式" (関数型) が優先されるため、より効率的です。
注: 著者は、機能的なスタイルはより多くのメモリを使用することに言及しました。
java - 同時実行性の観点から見た Java v Scala
私は今、最終年度のプロジェクトを開始しています。Java と scala の観点から並行処理のアプローチを調査します。Java 並行性モジュールから抜け出した私には、共有状態のスレッド化アプローチが推論するのが難しいと人々が言う理由がわかりました。Java スレッドが非決定論的に動作するため、懸念すべき重要なセクションがあり、競合状態やデッドロックなどのリスクがあります。1.5 では、この推論はいくらか明確になりましたが、それでも明確にはほど遠いものでした。
一見すると、scala はアクター クラスを通じてこの複雑な推論を取り除いているように見えます。これにより、プログラマーは、よりシーケンシャルな視点から並行システムを開発し、概念化することが容易になりました。しかし、このポジティブな点について、いくつかの欠点があると私が言っているのは正しいでしょうか? たとえば、両方のシナリオで大きなリストを並べ替えたいとします。Java を使用して 2 つのスレッドを作成し、リストを 2 つに分割し、クリティカル セクション、アトミック アクションなどを心配してコードを実行します。scala では、「何も共有しない」ため、実際には list/2 を 2 つのアクターに渡してソート操作を実行する必要がありますよね?
私の質問は、より単純な推論に対して支払う代償は、スカラでコレクションをアクターに渡さなければならないというパフォーマンスのオーバーヘッドであると思いますか?
この効果のためにいくつかのベンチマーク テスト (選択ソート、クイック ソートなど) を行うことを考えていましたが、1 つは機能的でもう 1 つは必須であるため、アルゴリズムの観点からリンゴとリンゴを比較することはしません。
私を始めるためのいくつかのアイデアを私に与えるために、あなたが上記について持っている意見を本当に感謝します. どうもありがとう。
dependencies - 私はそれを副作用プログラミングと呼びたいのですが、これにはもっと適切な用語が必要です
次のプログラミング パラダイムの名前は?
コードは、true (句) に解決される一連の論理テストに基づいて実行されます。この句は、演算子とオペランドで構成されます。各オペランドは値/オブジェクトです。
命令型言語 (例: のような通常のフロー制御) で行われるように、句を明示的に評価する代わりにif(){}
、句が宣言され、結果のコードにバインドされます。句が満たされると、将来の任意の時点でコードが実行されます。
したがって、基本的には、依存関係の状態が変化するたびにコードを実行する必要があるかどうかを再評価する依存関係ツリーです。
例えば、
より正式な名前と定義を探していますが、検索しても何も思いつきません。これは宣言型と命令型の間のどこかですが、これを可能にする言語やパラダイムは見たことがありません。
ありがとう、ショーン
functional-programming - 機能と命令のハイブリッド
純粋な関数型プログラミング言語では変更可能なデータは許可されませんが、一部の計算は命令的な方法でより自然に/直感的に表現されます。または、アルゴリズムの命令的なバージョンがより効率的である場合があります。ほとんどの関数型言語は純粋ではないことを認識しており、変数の割り当て/再割り当てや命令的なことを実行できますが、一般的には推奨されません。
私の質問は、ローカル状態をローカル変数で操作できるようにしないで、関数が独自のローカル定数とグローバル定数 (または外部スコープで定義された定数のみ) にのみアクセスできるようにする必要があるのはなぜですか? このように、すべての関数は参照の透過性を維持します (同じ引数を指定すると、常に同じ戻り値を返します) が、関数内では、計算を命令語 (while ループなど) で表現できます。
IO などは、モナドを介して、または「世界」または「宇宙」トークンを渡すことにより、通常の機能的な方法で実現できます。