問題タブ [paradigms]
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.
programming-languages - これに名前を付けます(2次元、真理値表のような、視覚的な)プログラミング言語/パラダイム(サブテキスト/例中心のプログラミング)
新しいプログラミング「言語」とパラダイムを紹介するビデオクリップに出くわしたのを覚えています。「言語」は本質的に2Dで視覚的であったため、ビデオ内のIDEおよびインタープリターと緊密に結合されていました。
それは真理値表のように始まりましたが、より複雑になりました。条件文はプログラムのX軸に、フローはY軸に表示されました。
たとえば、入力と出力を定義した「絶対値」関数を作成するために、それらを整数I
と整数と呼びましょうO
。許可されたものをクリックしてI
、サブケースを定義しますI < (const)
。次に、1つ0
が定数として入力され、I
列が2つに分割されます:I < 0
とI >= 0
。1つは両方に接続されO
、1つは関数を介して接続されneg
、絶対値関数を取得しました。
重要なのは、行方不明の事件は即座に視覚的に識別できるということでした。x < 0
2つのケースを定義し、x > 0
すぐにx
列を3つに分割します。ケースを出力に接続するのを忘れたx = 0
場合は、明らかです。
これは、人々が言語を識別したり、言語に興味を持ったりするのに十分な情報を提供しながら、私ができる限り簡単なことなので、ここでそれを切り取ります。条件文と論理に関する特定の問題を解決するだけのように見えるかもしれませんが、「言語」はそれ自体がパラダイムになるほど強力であることを覚えています。
このビデオはまた、現代のプログラミングが50年以上前のものとそれほど変わらなかったこと、つまり、テレタイプで基本的に1次元であるテキストを入力することについていくつかの良い点を示しました。
質問:言語/パラダイム/ IDE /インタプリタの名前は何ですか?
私は主に[名前を探して]ビデオをもう一度見つけて見るので、現在の同僚と話し合うことができます。それについてもっと言いたいことがあれば、この質問をコミュニティwikiに変えて、議論を始めることができます。
paradigms - TDD をサポートするツールやプログラミング言語は何ですか?
テスト駆動開発をサポートするために、人々が使用しているツール/プログラミング言語は何ですか?
どうもありがとう、J
oop - OOPの代わりに関数型プログラミングが必要な理由を誰かが説明してくれますか?
重複の可能性:
関数型プログラミングとオブジェクト指向プログラミング
OOPの代わりに関数型プログラミングが必要な理由を誰かが説明してくれますか?
たとえば、なぜ C++ (または同様の言語) の代わりに Haskell を使用する必要があるのでしょうか?
OOP に対する関数型プログラミングの利点は何ですか?
programming-languages - 論理プログラミング用の Prolog よりも新しいプログラミング言語
論理プログラミングに特化した Prolog よりも新しい言語はありますか?
oop - オブジェクト指向の原則を手続き型言語に適用する必要がありますか?
C や MATLAB などの手続き型言語でさえ、オブジェクト指向言語に変えることは原理的に可能であることを私は知っています。この質問は、こことここでかなりよく議論されています。
これらの議論とその中の参考文献から欠けていることがわかったのは、そのような原則を適用すべきかどうかについての説明でした. そうすることで具体的に得られるものはありますか?明らかに可能ですが、そうすることをお勧めしますか? この実践が明確な利点につながったオープンソース プロジェクトの例はありますか?
明確化
おそらく、例が適切です。
機械学習アルゴリズムを実装する MATLAB コードをいくつか継承しました。building_model
基本的に、渡されるフラグに応じて、モデルをトレーニングするか、それを使用して将来の値を予測する単一の関数があります。
と
モデル自体は、 内の MATLAB 永続変数で実装されますbuilding_model
。
building_model
トレーニング用と予測用の 2 つの関数に分割しました。永続変数として実装されていたモデルは、いわば外部化されています。
これは、大まかに言えば、MATLAB で OOP のいくつかの機能をエミュレートできる範囲です。私の構築モデル モジュールは、コンストラクターと 2 つのメソッドmodel_train
とmodel_predict
. 私はある程度のカプセル化を達成しました (ただし、呼び出し元が の内部をいじるのを妨げるものは何もありませんmodel
)。原則として、ポリモーフィズムにも対応できます。追加のボーナスとして、コマンド/クエリの分離をほぼ無料で取得できmodel_predict
ます。model
model
(賢明な読者は、MATLAB には既にオブジェクト指向システムがあることを指摘するでしょう。パフォーマンスや古いバージョンとの互換性など、さまざまな理由から、私はそれを使用できません。)
データ構造を設計し、最初の引数がそのデータ構造のインスタンスになる関数を作成する C の同様のメカニズムを想像できます。
私が知りたいのは、このプログラミング方法をどこまでプッシュできるかということです。これは一般的に受け入れられているパターンですか (私はその言葉を言いました)? 注意すべきパフォーマンスの問題はありますか?
android - 「直接データベース接続」のパラダイムがAndroidプラットフォームで歓迎されないのはなぜですか?
「直接データベース接続」とは、SQLiteデータベースを使用してローカルパラメータを格納するのと同じように、JDBCに似たドライバを使用して、アクティビティのコンテキスト内でリモートデータベースクエリを呼び出して実行することを意味しました。
このデータベース接続方法に関するチュートリアルやドキュメントがインターネット上でほとんど見つからないことに気付くまで、すべてではないにしてもほとんどのAndroidデバイスが抱える不安定なWi-Fi / 3Gネットワークに関係なく、データベースに接続する必要があると考えました。そのように行われる。
Android SDKでも、ローカルデータベースアクセス(別名android.database.sqlite
)のみが本質的にサポートされています。また、 java.sql APIの説明には、このAPIを使用するために独自のJDBCドライバーを提供する必要があると記載されています。
それから私は、データベースに直接接続するという私の意図が、Androidの領域で最初に間違っているかどうかに気づき始めました。
Stack Overflowで提供された多数の回答を含め、多くの本、ウィキ、フォーラムを読みました。多くの人が何かを成し遂げることに集中しているように見えます。議論は「Androidデバイス用のRESTfulWebサービスを設計するにはどうすればよいですか?」から始まりました。しかし、私は完全な理解が必要です!また、元のAndroid開発者からの信頼できる引用も必要です。
oop - C ++ 0x OOPパラダイムシフト?
何かありますか、もしそうなら、どれですか?
php - MVC とプログラムの状態 - モデルはダムであるべきか?
MVC パラダイムを使用するフレームワークを使用しています。それは CodeIgniter ですが、私の質問は特にフレームワークに関するものではありません。より一般的には、MVC を使用する際のベスト プラクティスに関するものです。
$_SESSION 変数を使用して、いくつかの状態変数 (ユーザーの選択、いくつかの一時的な設定、いくつかのデータ フィルタリング オプション) を維持しています。これは簡単に実行できますが、モデルとコントローラーの両方でこれらの変数の使用を分割していることに気付きました。コントローラーで更新して、モデルで検索することもありました。モデルにこれらすべての設定を「認識」させるのは良い考えではないかもしれないと思いついたので、これはおかしいと「におい」を感じ始めました。モデルは、データのフェッチ/操作のリクエストを受け入れるだけで、リクエストに明示的に含まれていたものだけに関心を持つべきではありませんか (外部変数を検索する必要はありません)。
以下に例を示し ます。$_SESSION['regionFilter'] というセッション変数が 1 つあります。これはコントローラーで作成および更新され、ユーザーが「ドリルダウン」したい販売地域を表します。コントローラーがモデルからデータを要求すると、現在、モデルに $_SESSION['regionFilter'] 変数を検索させ、データベース用の SQL を作成するときにそれを使用させています。プログラムの状態に関してモデルを「ダム」にし、コントローラーが必要に応じて $_SESSION['regionFilter'] 変数をリクエストにバンドルする方が理にかなっているようです。
何かご意見は?ありがとう!
編集: 議論をありがとう、皆さん。質問が重複していることは承知していますが、このトピックに関する一般的な議論を見つけるのに苦労しました。「MVC モデル プログラムの状態」を検索すると、実装に行き詰まった ASP.NET-MVC 固有の議論に関する多くの質問が見つかりました。詳細。
質問をクローズ済みとしてマークしました。ご意見ありがとうございます。
model-view-controller - MVCでのModelの使用法は何ですか?それは実際に役に立ちますか?
私はこれが初めてなので、我慢してください。私は最近、いくつかのプロジェクトで1つのMVCフレームワークを使用していますが、しばらくすると、MVCの「モデル」の有用性に幻滅します。
コントローラーとビューの有用性を理解しました。プレゼンテーションとロジックを分離することは、コードを将来的に保守しやすくするために重要ですが、必ずしも高速または堅牢である必要はありません。
そもそもすべてのロジックをコントローラー内に配置する必要がある場合、Model、特にActive-Recordの使用は見当たりません。私たちはすでにデータベースとの通信に非常に堅牢で使いやすい言語を持っています、私は正しいですか?これはSQLと呼ばれます。私にとって、モデルがアクティブレコードのように実装されている場合、その有用性は、アプリを複数のデータベースに適合させるかどうかによって異なります。
では、私が求めているのは、データベースを1つだけ使用している場合、なぜモデルとアクティブレコードを気にする必要があるのでしょうか。SQLだけを使用しないのはなぜですか?なぜ複雑さの余分な層?データベースクラスとSQL-awayを使用するよりも、モデルが実際にうまく機能するケーススタディ/実際のストーリーはありますか?
繰り返しになりますが、私があまりにも無知であるように思われる場合は申し訳ありませんが、モデルが重要である理由は本当にわかりません。回答ありがとうございます。
dynamic - Clojure が動的に型付けされるのはなぜですか?
私がとても好きなことの 1 つは、さまざまなプログラミング言語について読むことです。現在、私は Scala を学んでいますが、Groovy、Clojure、Python などに興味がないわけではありません。これらすべての言語には、独自のルック アンド フィールといくつかの特徴的な機能があります。Clojure の場合、これらの設計上の決定の 1 つがわかりません。私の知る限り、Clojure はその関数型パラダイムを非常に重視しており、可能な限り不変の「変数」を使用するよう強制しています。では、値の半分が不変である場合、言語が動的に型付けされるのはなぜでしょうか?
Clojure の Web サイトには次のように書かれています。
何よりもまず、Clojure は動的です。つまり、Clojure プログラムは、コンパイルして実行するだけのものではなく、対話できるものです。
うーん、それは完全に奇妙に聞こえます。プログラムがコンパイルされると、それを変更することはできなくなります。「対話」できることは確かです。それが UI の目的ですが、Web サイトがきちんとした「動的」GUI を意味するわけではありません。
Clojure は動的型付けからどのように恩恵を受けるか
私が言っているのは Clojure の特殊なケースであり、動的型付けの一般的な利点ではありません。
動的型システムは関数型プログラミングの改善にどのように役立ちますか
繰り返しますが、「int a;」をこぼさないことの喜びを知っています。ソース コード全体に影響を与えますが、型推論によって多くの苦痛が軽減されます。したがって、動的型付けが関数型言語の概念をどのようにサポートしているかを知りたいだけです。