IT 以外の人、より具体的にはプログラマーは、問題を解決する良い方法を持っていません。彼らは単に、私たちプログラマーのように論理的に物事を考えていないのです。日々の専門的な問題に最終的に役立つ論理を改善するために何を勧めるかを何度も尋ねられました. 頭に浮かぶのは、良いパズル、数学の問題などです。
そうは言っても、何をお勧めしますか、そしてその理由は何ですか? 書籍、サイト、記事 ?
コーディングホラー.comの関連記事:
プログラミングのすべての教師は、結果が「二重のこぶ」を示すことに気づきます。それはあたかも 2 つの集団があるかのようです: [プログラミング] できる人と [プログラミング] できない人で、それぞれに独自のベル カーブがあります。プログラミングの教育と学習に関するほとんどすべての研究は教育に集中しています。言語を変更し、アプリケーション領域を変更し、IDE を使用し、モチベーションに取り組みます。どれも機能せず、二重のこぶが続きます。
上記の抜粋からの簡単な要約: 人が最初からプログラムできない場合、あなたが何をしてもうまくいかないという推測があります。
コンピューター プログラムを作成するには、このことを受け入れなければなりません。つまり、プログラムにどんな意味を持たせようと、マシンは無意味な規則に盲目的に従い、無意味な結論に達することを受け入れる必要があります。テストでは、一貫性のあるグループは、この事実を事前に受け入れていることを示しました。彼らは、ルールの観点から数学的計算の問題を理解することができ、それらのルールが導くところならどこでもそれらのルールに従うことができます。一方、一貫性のないグループは、 意味がないところに意味を探します。空白のグループは、無意味なものを見ていることを知っており、それに対処することを拒否します。
私の提案する冗談の解決策は、それらを無神論/ニヒリズムに変換することです。そうすれば、彼らは意味がないところに意味を探そうとせず[原文のまま]、おそらくバイナリで折り合いをつけます。
オタクのように考えないほとんどの人は、オタクのように考えたくありません。
しかし、問題を解決することの一部は、それをより小さな部分に分解することであり、それぞれは簡単に解決できる問題です。問題を扱いやすいチャンクに分割する方法を学ぶことができれば、オタクのような問題を解決するための少なくともいくつかの部分を改善することができます.
論理については、矛盾のない法則を思い出してください: A != !A. 物事が同時に真であると同時に偽であることはあり得ません。私たちは、きちんと考えようとさえせずに、あまりにも多くの時間を費やしています。
私は最初の学期のプログラミングを約3回失敗し、必死になって「プログラムされた」学習方法を採用したオンラインコースを試しました.
より一般的な (皆さんにとっては本当に単純な) プログラミング ロジック構造のコンテキストと動機を提供することで、プログラミングを理解するのに役立ち (私は信じています)、「こぶ」を乗り越えるのに役立ちました。
その後、さまざまな問題に対して紙の上でおもちゃのプログラムを「実行」する何時間もの練習が、この主題に関する私の完全な混乱を最終的に終わらせました。
私が使用したこのプログラムされたアプローチを採用した無料のCS入門コースへのリンクは次のとおりです(私の通常の講師を捨てる間):
http://chortle.ccsu.edu/CS151/cs151java.html
スタックとキューと再帰を使用した試験レベルの問題にまだ困惑しています (コースでは C を使用しましたが、最終的な分析ではそれほど重要ではなかったと思います)。
結局、自分のスキル レベルを考えると、永遠に (おそらく 2 ~ 3 年以上) 取っていたであろう CS 専攻を気にすることはありませんでした。
小さい頃、あのパズルの本に注意を払うべきだった. 当時、私はよりLEGOオタクでした:)
CS インストラクター (話したり話したりするだけの人) は、もう少し辛抱する必要があります。
別れを告げて、私たちは皆、優れた作家になることはできませんが、だからといって、上手に書く方法を学ぶ (または教える) ことを止めることはできません。情報化時代のコンピュータープログラミングも同じだと思います。
ほとんどの非プログラマーには、数独やBrain Ageのようなゲームをお勧めします。
人々は常に練習によって問題解決能力を向上させることができますが、(imo) 程度にすぎません。決してそんな風に思わない人もいます。彼らは生まれたときからそのように配線されていませんでした。私たちが生来の可能性をコントロールできるとは思いません。
私はロジックが苦手です。配列から何かを削除したいという問題があったことを覚えています。誰かが来て、「新しいものを作成して、削除したいアイテムを除外してみませんか?」と言いました。 「」。私は本当に恥ずかしいと感じました。つまり、ソリューションは完璧です。結局のところ、すべてのアプローチですべての要素を反復処理する必要があります。単純にそれを実行して、これらを新しい配列にコピーし、不要な要素を除外するのはなぜですか。
しかし、質問に戻ると、私がお勧めするもののいくつかは次のとおりです。
私の論理スキルを本当に向上させたもう1つの演習は、簡単なプログラミングタスクを設定し、それを3〜5つの異なる方法で解決しようとすることでした。
私は配線が遺伝的であるとは思わず、子供時代に社会的に脳に刻印される可能性が高い. パズルをする子供もいればしない子供もいますが、多くのパズルをする子供はより準備ができていますが、Bill the Lizard が述べているように、誰でも脳を再訓練して抽象的なパズルを解くことができると思います.
私は、あなたが考え続け、常にパズルを解こうとしているなら、愚かな小さなものであっても、きちんとした、興味深い、最適化された、巨大な、小さな、ほとんどあらゆる方法で解決しようとするなら、あなたは自分自身を鋭く保つことができます. また、他の人の解決策を読むと、長い目で見れば、似たような、または似ていない状況でも適用できる方法のこの「ツールボックス」を提供する、あなたが考えていなかったであろうことを指摘するのに役立ちます.
これは、私が Web で見つけた論理的誤謬サイトの中で最高のものの 1 つです。
このサイトは、言語のカジュアルな性質に関心のあるすべての人にお勧めします。論理的誤謬の種類ごとのサイト上の例は、ほとんどの場合非常に優れており、何かを学ぶことができることを保証します. 一緒に転送します。
nmr