まず、リンゴとミカンを比較しているので、これを 2 つの観点から説明してみましょう。型付けとは、値/変数に対する操作の実行方法と、それらが許可されているかどうかを指します。結合は、結合とは対照的に、ソフトウェアの一部 (または複数の部分) のアーキテクチャを指します。両者には直接の関係はまったくありません。
強い型付けと弱い型付け
強く型付けされた言語は (通常) 良いことです。なぜなら、動作が明確に定義されているからです。ウィキペディアから次の 2 つの例を取り上げます。
弱い型付け:
a = 2
b = '2'
concatenate(a, b) # Returns '22'
add(a, b) # Returns 4
一部の言語では加算または連結に ASCII (おそらく 16 進数、8 進数など) の数値を使用する場合があるため、上記は少し混乱し、あまり明確に定義されていない可能性があります。そのため、間違いの余地がたくさんあります。a
また、元が an なのinteger
か aなのかを判断するのは困難ですstring
(これは重要かもしれませんが、言語はあまり気にしません)。
強く型付けされた:
a = 2
b = '2'
#concatenate(a, b) # Type Error
#add(a, b) # Type Error
concatenate(str(a), b) # Returns '22'
add(a, int(b)) # Returns 4
ここでわかるように、すべてがより明示的であり、変数とは何か、変数の型をいつ変更するかを知っています。
ウィキペディアは次のように述べています。
弱い型付けの利点は、コンパイラーまたはインタープリターが特定の種類の変換を暗黙的に実行するため、プログラマー側の労力が少なくて済むことです。ただし、弱点として主張されている 1 つの欠点は、弱く型付けされたプログラミング システムがコンパイル時に検出するエラーが少なく、テストが完了した後もこれらのエラーの一部が残る可能性があることです。多くの種類の暗黙的な変換をサポートする 2 つの一般的に使用される言語は C と C++ であり、これらは弱い型付けの言語であると主張されることがあります。ただし、これらの言語は、異なる型のオペランドを混在させる方法に十分な制限を課しているため、2 つの言語は厳密に型指定された言語と見なされるべきであると主張する人もいます。
強いタイピングと弱いタイピングには、どちらにも長所と短所があり、どちらも良いとも悪いとも言えません。相違点と類似点を理解することが重要です。
緩いカップリングと密なカップリング
ウィキペディアから直接:
コンピューター サイエンスでは、結合または依存関係は、各プログラム モジュールが他の各モジュールに依存する程度です。
カップリングは通常、結合と対比されます。低カップリングは高凝集度と相関することが多く、逆もまた同様です。結合と結束のソフトウェア品質指標は、構造化設計の最初の開発者であり、これらの概念の初期の支持者でもあった Larry Constantine によって発明されました (SSADM も参照)。低結合は、多くの場合、適切に構成されたコンピューター システムと優れた設計の兆候であり、高い結束力と組み合わせると、高い可読性と保守性という一般的な目標をサポートします。
要するに、結合度が低いということは、コードが非常にタイトで、読みやすく、保守しやすいことを示しています。さまざまな部分が相互作用して全体を形成する大規模な API または大規模なプロジェクトを扱う場合は、高結合が優先されます。どちらも良くも悪くもありません。一部のプロジェクトは密結合する必要があります (組み込みオペレーティング システムなど)。他のものは疎結合にする必要があります。つまり、Web サイト CMS です。
うまくいけば、私はここでいくつかの光を当てました:)