例を挙げてください。コードがアルゴリズムの一部ではない言語の詳細に焦点を合わせすぎている場合は、当然のことながら、アルゴリズムにアルゴリズムが混在していないため、結果が正しくない可能性があります。
私はその理由を感じます。学習の全体的なポイントは、概念を理解していることを示すことであり、曲がってすべての正しいボックスにチェックマークを付けることではありません。
コンピューターは大学を卒業するように教えることはできますが、実際に自分で考えて知識を応用するようにコンピューターを教えることはまだできません。
食べて逆流する精神が私が卒業しなかった理由です。
最近のコメントに関して、擬似コードを実現することの重要性は未定義です。その中には一般的に再利用される用語がありますが、それは英語以上の厳密な言語ではありません(そうでなければ、それはプログラミング言語であり、逐語的に解析および実行される可能性があります)
擬似コードの重要性は、システムの論理部分を具体化することであり、「それは理にかなっている」以外の構文について過度に心配する必要はありません。
多くの場合、これにより、擬似コードがより簡潔 で理解しやすくなります。
擬似コードはまた、それを処理するために言語の「魔法の構文」を理解している読者に依存していません。彼らが理解する必要があるのは、使用される用語だけです。
たとえば、平均的な人にperlのアルゴリズムを与えるとすると、ほとんどの人は、ラインノイズのスクリードを通り過ぎて見えないため、ホラーで死ぬでしょう。
その間:
sub foo {
my @args = @_ ;
my( $a, $b )=(@args[0],@args[1]);
for( @{ $a } ){
$b .= $_ ;
s/id//g;
}
return [$b,$a];
}
perlに精通している人にとっては、一貫した意味をなすかもしれません。平均的なコードリーダーにとって、彼らが得るのは「一体何を言ったのか」という応答だけです。それを文書化することもあまり役に立ちません。
| there is a subroute foo which can take a list of strings, and a default string,
\- which then iterates all items in that list,
| \- and for each item in that list
| 1. appends the contents of that item to the end of the default string
| 2. removes all instances of the string "id" in that item
|
\ and returns a list, which contains
1. the concatentated default string
2. the modified input list
突然それは曖昧さが少なくなり、より多くの人々がそれを理解できるようになります。
したがって、アルゴリズムを作成する演習の半分は、「問題を理解していることを証明するだけでなく、問題について何も知らない他の人に自分の推論を説明できることを証明する必要がある」という演習です。これは非常に重要です。あなたが必要とする能力。あなたがしたことを伝えることができない場合、誰もそれを使用することはできません。
コードにはこの厄介な小さな問題もあります。これはアルゴリズムには存在しません。つまり、コードは正しく見えるかもしれませんが、思ったとおりに動作しない可能性があります。正しく動作しない場合は、気づかないでください、コードをリバースエンジニアリングして読んでいる人はそれを汚して壊れたアルゴリズムをコピーします。良くない。人間の形のアルゴリズムはよりよく翻訳します'これは私がしたいことです'