問題タブ [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 - さまざまなプログラミング言語の概念とは何ですか?また、どの言語がそれらを純粋な方法で示していますか
私は言語の専門家ではありませんが、最近言語に興味があり、主要な概念と「それらの」言語の概要を理解しようとしています。これは、本に関する別の質問に似ています。それで、最初に、主要なプログラミング言語の概念は何ですか、例えば
- 構造化
- 手続き型
- オブジェクト指向
- オブジェクト指向-プロトタイプベース(例:Javaスクリプト)
- 機能的(例:Haskell)
- ロジック指向(例:Prolog)
- メタ(それ自体の純粋な概念の場合?)
- スタックベース(例:Forth)
- 数学ベース/配列指向(例:APL)
- 宣言型
- 連結(例:PostScript)
- (間違いなく不完全なリスト...)
そして次に、これらの概念をうまく理解するために、そのコア概念に基づいて/最も自然で純粋なプログラミング言語は何でしょうか?
- たとえば、JavaはOOですが、アトムのために純粋なOOではないため、良い例ではありません。
- Lispは関数型言語として知られていますが、マルチパラダイムであるため、純粋ではありません。しかし、Lispは「リストベース」の純粋な実装かもしれません(それが概念として数えられる場合)。
- 構造化されている(GOTOはない)が手続き型ではない言語はありますか?(多分XSLT v1.x)
programming-languages - データ指向プログラミングとは?
誰でも私に説明できますか
- データ指向プログラミングとは?
- データ指向プログラミングと関数型プログラミングは同じですか?
- データ指向プログラミングはオブジェクト指向プログラミングとどう違うのですか?
- オブジェクト指向プログラミング言語ではなく、データ指向プログラミング言語を選択するのはどのような状況ですか?
network-programming - アクティブな接続を追跡するためのデータ構造
アクティブな接続を追跡したい場合、それらをリンク リストに保存するか、インデックスが接続の ID を表す配列に直接保存する方がよいでしょうか? たとえば、次のような競合状態の問題を回避したいと考えています。
- リスト内の接続数が多い
- 誰かがリストの最後にある接続を探し始めます
- その間、検索中に接続が切断されます
scala - Scala の関数型パラダイムだけに固執することの有効性
私は最近Programming Scalaを購入し、それを読んでいます。言語は間違いなく私が期待したものではありません! 具体的には、Lisp マクロと Haskell の型レベルの副作用の分離を除いて、私が知っているほぼすべてのプログラミング言語のアイデアを実装しているようです。
率直に言って、それは私をやや圧倒しています。非常に多くのツールを自由に使用できるのは良いことだとは思いますが、実際には JVM で厳密に型指定された関数型言語を探していました。おそらくそのようにScalaを使用できると思いますが、ライブラリとやり取りしたり、他の誰かのコードを調べたりすると、この高度な(私にとって)OOPの多くに遭遇することになると思います--特性と「オブジェクト階層」線形化」、このすべての抽象的でオーバーライドするビジネス、シングルトン、パッケージ、およびコンパニオン オブジェクト、暗黙の変換...さまざまな構文のショートカットやシュガーは言うまでもありません。
多くの正当な理由から、ある言語のスタイルを別の言語に押し込もうとするプログラマーを嘆く人がよくいます。しかし、すべての言語が Scala のようにマルチパラダイムであるとは限らないため、おそらく Scala のコミュニティは異なる見解を持っているのではないでしょうか? 例えばF#では、プログラミングスタイルやOOPの使用量に多少の余裕があるようです。しかし、読んだだけでは、これが Scala にとっても良い哲学であるかどうかはわかりません。
経験豊富な Scala プログラマーがここで私を助けてくれますか? わかりやすくするために編集:基本的に、高度な OOP 側について心配することなく、Scala の FP 機能のみ (またはほとんど) を安全に使用できますか?
とりとめのない質問でごめんなさい!
mysql - MySQL:同じテーブル上の多くの結合と関係(理論上の質問)
これはより理論的な質問であり、特定のシナリオではありません。
次のような単純化されたテーブルスキームがあると仮定します。
items
いくつかの基本データ、item_data
各アイテムの追加プロパティが含まれrel_items
、異なるアイテム間のツリー関係を設定します。さまざまな種類のアイテム(フィールドで表されるitems.item_type
)があり、さまざまなフィールドが格納されていitem_data
ます。たとえば、犬、猫、マウスなどです。
いくつかの結合と接続詞を含むより大きなクエリがある場合(親アイテムが他のアイテムといくつかの条件を持つアイテムを取得するなど)、これは、すべての異なるタイプのアイテムを別々のテーブルに分割する場合と比較して、パフォーマンスの問題になる可能性があります(dog
、cat
、mouse
)そしてそれらを単一のものにマージしませんか?
すべてを1つの基本的なアイテムテーブルにまとめると、ビュー(犬、猫、マウス)の作成はパフォーマンスに何らかの影響を与えますか?
編集(以下にコメント):「種」、「ハウスペット」などをitem_typesと考えました。タイプごとに異なるプロパティがあります。基本的なアイテムテーブルとitem_dataテーブルを使用する目的は、基本的な「オブジェクト」を持ち、データベーススキームを変更することなく、必要な数のプロパティをそれらにアタッチすることです。たとえば、アプリケーションに含まれる動物の数とそのプロパティがわからないため、ユーザーが新しい動物を作成するたびに変更する必要のないデータベーススキームを考えました。
paradigms - 「設定より規約」パラダイムの利点
Web開発における「設定より規約」パラダイムの利点は何ですか?そして、それに固執することが意味をなさない場合がありますか?
ありがとう
html - マークアップ/スタイルのベストプラクティス:CSSクラスにスタイルルールを効率的に配布する方法は?
HTMLページと対応するCSSファイルがあると仮定します。いくつかの要素に丸みを帯びた角を追加したいと思います。1つおきのセクションで背景色を変えたい。セクション見出しごとにホバー状態を追加したいと思います。などなど-私はスタイリングとスタイリングとスタイリングを続けています。
クラス別、ID別、階層別のマークアップでCSSルールを配布する「誰が、何を、いつ、どこで、なぜ、どのように」という3つの極端なことが思い浮かびます。
極端な#1:すべてのスタイルルールはIDに基づいています。
極端な#2:すべてのスタイルルールはクラスに基づいています。
極端な#3:すべてのスタイルルールはDOM階層に基づいています。
明らかに、フロントエンドWeb開発の禅には、クラスの再利用、一意のルール、階層の健全なバランスが含まれます。これは、3つの極端な例のいずれかが、ブラウザーのパフォーマンス、保守性、およびコードサイズに大きな打撃を与えるためです。おもう。それとも私は間違っていますか?新しい.class
ものがいつ必要かを判断する方法、または適用したいスタイルルールを既存の定義に安全に組み込むことができますか?二人はいつ#id
共通のコードをクラスに引き出す必要があるほど類似したルール?クラスを「フォーク」するとき(元の状態を維持し、すべての逸脱した状況の派生を追加するとき(OOP用語で「パーコレーション」)するとき、およびいくつかの互いに素な逸脱のそれぞれに共通のルールをプッシュするとき-明らかにこれは偏差自体の性質(つまり、関係するルールの数))。純粋に階層的なルールを使用する状況はありますか?
質問:この種の議論を支配する経験則はありますか?あなたの経験やアドバイスは何ですか?優れた記事、リソース、本、講義(「テックトーク」スタイルのビデオのボーナスポイント)、またはこのトピックに関するその他のコンテンツはありますか?いくつかの重要なポイントに基づいて議論を続けたいと思います(ただし、コメントは歓迎します)。順不同です。
- 保守性(コードの読み取り、変更、追加のしやすさ)
- DRY(繰り返さないでください)
- 時間効率(オンロードまでの時間、プログレッシブレンダリング)
- スペース効率(マークアップと関連するスタイルの合計サイズ)
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 に対する関数型プログラミングの利点は何ですか?