回答:
正確な意味を持つ専門用語ではなく、単に「ナイーブ」という英単語です。コンピュータサイエンスのコンテキストでは、この単語は通常、「最初に考えられることの1つですが、それほど明白ではないが重要な事実を理解していない」というようなものを意味します。
たとえば、フィボナッチ数列の定義がであることがわかっている場合、「単純な」実装はなる
def Fib(n):
if n <= 1:
return 1
else:
return Fib(n-1) + Fib(n-2)
どうしたの?つまり、たとえばを呼び出すと、Fib(7)
同じ呼び出しを何度も何度も繰り返すことになりますFib(4)
(たとえば、Fib(7)
呼び出しFib(6)
とFib(5)
、Fib(6)
呼び出しFib(5)
とFib(4)
、および両方ともFib(5)
呼び出しFib(4)
となどFib(3)
)。
したがって、ここでは、単純なソリューションとは対照的に、より「洗練された」ソリューションが動的プログラミングのようになり、すべての余分な計算を回避します。
素朴な実装は、単純明快で可能な限り複雑ではないソリューションです。
場合によっては、フィボナッチ関数の単純な実装(線形ではなく指数関数)のように、空間または時間の動作が適切でない場合があります。
しかし、多くの場合、ほとんどの場合、問題なく機能します。だから、素朴なアプローチには何も問題はありません、あなたはそれを3つのステップとして行うことができます:
「Make it work」(リクエストに応じて)->「Make it working / beautiful」(リファクタリング、より読みやすく)->「Make it fast」(パフォーマンスの最適化)
Javaのような「オーバーエンジニアリング」の伝統を持つプログラミング言語については、いつでも「最も簡単な解決策」をお勧めします。