0

私はBjarneStroustrupの新しい入門プログラミング本「プログラミング:C++を使用した原則と実践」を閲覧してきました。これは、大学の1年生のコンピュータサイエンスおよびエンジニアリングの学生を対象としています。

この本の早い段階で、彼はデスクトップ計算機を作成する興味深い拡張例を試し、文法に基づく一連の再帰関数に算術式エバリュエーター(括弧で囲まれた式と演算子の優先順位を考慮)を実装することになります。

これは非常に興味深い例ですが、多くの初心者にとっては間違いなく複雑な側面です。

この特定の例の他のことは何だろうか。式パーサーを実装する方法を見てプログラミングを学ぶことは、あなたを興奮させ、やる気を起こさせるだろうか、それともすべての詳細と複雑さのためにあなたを落胆させるだろうか?

初心者のための他の良い「実際の」プログラミング例はありますか?

4

10 に答える 10

5

私が最初にプログラミングを学んだとき、私が取り組んだ最も良い例は、ゼロからテキスト アドベンチャー ゲームを作成したことでした。基本は、画面にテキストを表示する方法、キーボードから入力を受け取る方法、および基本的なフロー制御を知ることだけでした。しかし、テキスト アドベンチャーには常に機能やパズルなどを追加する余地があるため、学習している言語の側面を探索するために簡単に適応させることができます。

もちろん、誰もが電卓よりもゲームの方が面白いと思うわけではありません。それは本当にプログラマーに依存します。

于 2009-02-11T07:17:14.337 に答える
4

最初に、認知心理学者は多くの研究で、学習における最も重要な要素は知りたいという欲求であることを証明したと言っておきましょう。

プログラミングについて学びたいのであれば、理解したいという欲求を刺激するドメインを見つける必要があります。プログラミングで解決できる課題を見つけてください。

あなたが興味を持っていることを彼らが提案するとき、私は他の人々に同意します.そして、ゲームは共通のスレッドのようです. プログラミングを学んだ経験 (何年も前) を振り返ると、数学の問題と簡単なゲームが関係していました。

しかし、ビジネスパーソンが実際の問題を解決するのに役立つ便利な小さなプログラムを作成するまで、ソフトウェアの力を本当に理解していたとは思いません。私には「クライアント」がいたので、私にはとてつもないモチベーションがありました。私は支払いを受けていませんでしたが、クライアントはこのプログラムを必要としていました。この状況に関連して、心からの痛みがありました (仕事を早く終わらせなければなりません)。

ですから、私のアドバイスは、あなたが知っている人たちと話をして、どんな小さな煩わしさやコンピューター関連の障害があるのか​​を尋ねることです. それからそれを修正してみてください。これは、単純な Web ウィジェットであり、オフィス ワーカーの繰り返しの手動タスクを減らすことができます。

私の初期の最高の仕事の 1 つは、小さな印刷所 (1985 年頃、ソフトウェアなし) を支援したことです。セールスレディとオペレーションマネージャーにたくさんの質問をしました。明らかに、一般的な問題点と、自動化できる非常に簡単な計算が交差していました。Lotus 1-2-3 (若者向けのスプレッドシート) を習得して、いくつかのマクロを記述できるようになるまでに 2 日かかりました。やる気が出ました。私は情熱を持っていました。私はどこで違いを生むことができるかを見ました。そして、それが何よりも、簡単なプログラミングを学ぶきっかけになりました。

実在の人々、実在の問題、および非常に単純な解決策を持つことは、初心者のプログラマーとして必要なインスピレーションになる可能性があります。会計システムを書こうとしないでください。誰かのフラストレーションのほんの一部を取り除いてください。その成功を土台にすることができます。

だから、私は(まだ)技術に焦点を当てるつもりはありません. 「これが最も効率的な方法ですか?」と心配する必要はありません。初心者の主な目的は、どんなに小さくても成功し、自信をつけることです。

ところで、その Lotus 1-2-3 マクロ セットは、完全なジョブ トラッキング システムに成長しました。非常に古風で限られた機能ですが、小さな印刷所の収益性を大幅に高めました。

アーティストが粘土の塊で傑作を発表するように、モチベーションを高め、欲望を刺激し、プログラミングへの情熱を育んでください。そして粘り強く。障害物に直面してもあきらめないでください。私たちは皆、時々困惑します。人間は成功よりも失敗から多くを学ぶため、これらは最高の学習の瞬間の一部です。

幸運を。

于 2009-02-12T21:03:15.150 に答える
2

テトリスのテキスト版のような小さなゲームを作ることは、プラグラミングの世界に入る良い方法になると思います。

于 2009-02-11T06:33:06.563 に答える
1

ボードゲームは、さまざまな形や難しさがあるため、デザインやコーディングが楽しい

三目並べからチェッカー、独占まで、教育目的で車輪を再発明します!

私が考える最善のアドバイスは、興味のある分野から何かを選ぶことです。コーディングのためのコーディングはあなたの決意を曇らせる可能性があるからです。

于 2009-02-11T07:09:49.657 に答える
0

小さく始めます。興味のある例を実行してください。毎回少しだけストレッチしてください。自分が何をしているのかがわかっていると確信できるようになるまで、各ステップに慣れてから、次回はもう少し頑張ってください。

于 2009-02-11T06:31:30.937 に答える
0

どんなサンプルプログラムでも新しい言語を学ぶのに役立つと思いますが、初心者は住宅ローン計算機など、現実の世界で理解しやすいものを使って作業する必要があります。

于 2009-02-11T06:32:51.197 に答える
0

答えは、プログラミングの仕方を学んでいる人次第だと思います。

算術式エバリュエーターのようなものの良い点の1つは、非常に小さく開始できるプロジェクトであるということです(XとYは1桁の数字であり、SYMBOLはプラス記号でなければならない「XSYMBOLY」の形式で動作するようにします) )そして、複雑なシステムのポイントまで機能をゆっくりと拡張しています。

ただし、コンピュータの概念(ハードディスク、メモリなど)を実際に理解していない人にとっては、優れたスタータープロジェクトではない可能性があります。

反復的で、簡単に自動化できるコンピューターで行うことを考えてみてください。次に、そのタスクを自動化するプログラムを作成する方法を考えてみてください。足を伸ばすために15分ごとにリマインダーをポップアップする場合でも、定期的に一時ディレクトリをクリーンアップする場合でも、何でもかまいません。

于 2009-02-11T06:33:21.663 に答える
0

このタスクの問題は、それが複雑であり、実際の生活に関連していないことです。別の電卓は必要ありません。

しかし、かつて私は、中央近くに傷のある表面とたくさんの貴重なJPEGファイルが入ったCDを持っていました。ディスクの傷のない部分からデータをダンプしましたが、すべてのファイルシステムが確実に失われました。そこで、ダンプを分析してファイルに分割するプログラムを作成しました。それほど単純ではありませんでしたが、ファイルIOプログラミングの演習としては素晴らしくエキサイティングでした。

于 2009-02-11T06:34:18.277 に答える
0

例は、自分で書き込もうとするものよりも複雑になる可能性があります。自分でやるよりも、他の人が何かをしているのをフォローする方が簡単です。この計算機のような実際の例は、誰かに言語を紹介する良い方法かもしれません。たとえば、Practical Common Lispは、インメモリデータベース(私が思うにCD用)の例から始めて、それを言語の一部を探索するための出発点として使用します。

単純な「HelloWorld」プログラムの多くよりも、時間の経過とともに構築された実際の例を見る方が好きです。

于 2009-02-11T06:36:09.613 に答える
0

ある種のゲームを実装することは、言語のさまざまな機能を学習する十分なインセンティブであることが常にわかってきました。特にカードゲームは、一般的に実装するルールセットが単純ですが、抽象的な観点からは十分に複雑であるためです。

しかし、私は他のすべての人に同意します。興味のあるものの例を見つけてください。誰もがゲームのファンというわけではありませんが、住宅ローンの計算機のようなものがあれば、はるかに興味深いものになるでしょう。

于 2009-02-12T20:35:17.653 に答える