問題タブ [imperative-programming]
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.
terminology - コマンドとは(正確には)何ですか?
次のうち、「コマンド」と呼ぶのが最も適切なのはどれですか。もう 1 つは何と呼ぶべきですか?
changeDirectoryTo
changeDirectoryTo /home/peter
python - Python プログラミング関数型コードと命令型コード
私は現在、3 つの主要なプログラミング パラダイムについて学ぶクラスに参加しています。私は、Python が関数型パラダイムと命令型パラダイムの両方を使用していることを知っています。明日の試験の前にこれをよりよく理解するために、これらの各パラダイムの Python での短いサンプル コードを探していました。ありがとうございました!
c - C は命令型または宣言型のプログラミング言語ですか
命令型プログラミングと宣言型プログラミングの違いを知るのは非常に紛らわしいですが、実際の用語で両方の違いを説明できる人はいますか?
Cが命令型言語か宣言型言語かを明確にしてください。
ruby - 関数型プログラミング スタイルと Ruby でのパフォーマンス
私は関数型プログラミングが大好きで、Ruby も大好きです。命令型スタイルではなく関数型スタイルでアルゴリズムをコーディングできる場合は、それを行います。私はできるだけ変数を更新したり再利用したりしないようにしています。メソッドを使用し、「each」や危険ループなどの代わりに「map」、「reduce」、および同様の関数を使用します。基本的には、この記事のルールに従うようにしています。
問題は、通常、機能的なソリューションは命令的なソリューションよりもはるかに遅いことです。この記事には、場合によっては 15 倍から 20 倍遅くなるという、明確で恐ろしい例があります。それを読んでいくつかのベンチマークを行った後、少なくともRubyでは関数型スタイルを使い続けることを恐れています。
一方、私は関数型スタイルでコードを書くほうがスマートでクリーンで、バグが少ない傾向があるため、より快適にコードを書くことができます。特に最近では、同時実行と並列処理を使用してパフォーマンスを向上させることができるため、より「正しい」と思います。
そのため、Ruby でどのスタイルを使用するかについて非常に混乱しています。賢明な勧告をいただければ幸いです。
c# - 関数型リアクティブ プログラミング (FRP) は、命令型言語である程度までエミュレートできますか?
関数型リアクティブ プログラミング (FRP) のすべてのコンポーネントが、ほとんどの命令型言語で実装されているとは限らないことを理解しています。これは、言語がどのように考案されたかという純粋な理由によるものです。
ただし、たとえば C# のイベントを使用して、入力値の変更がさまざまなオブジェクトを更新するためにカスケードする同様の効果を達成することは可能ですか? または、質問に答えたのに、「オブザーバー」パターンのバリエーション以外にできることは他にありませんか? C# 以外の命令型言語 (ここでは慣れ親しんでいるだけです) ではどうですか?
memory - 関数型言語はメモリを浪費していますか?
一般的に、私が聞きたいのは、
問題が命令型言語と関数型言語の両方の方法で解決できる場合、関数型言語は命令型言語と比較して、少なくともメモリを節約せずにメモリを浪費します。なぜなら、関数言語は再帰に大きく応答し、再帰は多くのメモリをプッシュするからですスタック?
上記の質問に従って、メモリ最適化の観点から、ジョブが命令型言語で実行できる場合、関数型言語を使用するべきではありません (少なくともそれよりも悪くないでしょう) ?
上記の質問は、実際にはアルゴリズムの質問から来ています。
追加のスペースを使用せずにスタックを予約します。
上記の質問は、二重再帰を使用することで解決できます。私の意見では、コードで追加メモリを使用していなくても、スタック内の追加スペースを実際に「隠します」。
もちろん、私の質問はより一般的に言えば、上記の特定の質問に集中する必要はありません。
丁寧なアドバイスありがとうございます!
functional-programming - 関数型言語でどのように反復しますか?
私が Lisp のような関数型言語から遠ざかる理由の 1 つは、「生の」配列反復を行う方法がわからないことです。たとえば、スクリーン ピクセルの RGB 値を表す C の配列があるとします。色の変更は C の for ループでは簡単ですが、Lisp でこれをエレガントに行うにはどうすればよいでしょうか?
編集:
申し訳ありませんが、質問を正しく表現していません。C では、画面の色を変更したい場合、単に配列の一部に for ループを記述します。しかし、scheme、clojure、または haskell では、すべてのデータは不変です。したがって、マトリックスの一部を変更すると、新しいマトリックスが返されます。それは少し厄介です。配列全体を再帰してコピーを作成せずに、マトリックスの一部の色を変更する「クリーンな」方法はありますか?
scala - 命令型言語にパターン マッチングがないのはなぜですか?
したがって、関数型言語でのパターン マッチングは非常に優れています。ほとんどの命令型言語がこの機能を実装していないのはなぜですか? 私の理解では、Scala はパターン マッチングを備えた唯一の「主流」の命令型言語です。ケース/スイッチ構造は、それほど強力ではありません。
特に、パターン マッチングの欠如が技術的な理由によるものなのか、それとも歴史的な理由によるものなのかに興味があります。