来週、15歳の実務経験生と一緒に座り、開発者の人生と仕事について話し合うボランティアをしました。
キャッチはそれです
私は何をカバーする必要がありますか、そして一体何を彼女がちょうど30分で彼女に教えることを望むことができますか?
彼女はおそらく開発やプログラミングの経験がないと思います。
私は高校生とよく交流しているので、この質問によく答えます。 15歳の方が50歳よりもプログラミングを説明する方がはるかに簡単であることを覚えておいてください。したがって、物事を馬鹿にしたり、遠く離れた類推を使用したりする必要はありません。
私は通常、プログラムの例から始めます。
その後、私は通常、コンピューターが認識できる正式な言語でプログラムをコーディングすることを説明します。多くの場合、メモ帳のような単純なものでプログラムをタイプアップします。言語は数学と英語のクロスのように見え、概念を説明し、コンピュータが従うべき数式と指示を与えます。
次に、私がいつもコンピューターにいるのか、それが私が常にFacebookにいるのか、そして私の目がまだ悪くなっていないのかと尋ねられます。男は私が「人をハックする」方法を知っているかどうか尋ねます、そして女の子はそれが良いお金であるかどうか、またはコンピューターサイエンスのクラスに何人の女の子がいるかどうか尋ねます。
その後、彼らがまだ興味がある場合、彼らは通常、答え方がはるかに簡単な(または少なくともWikiに対して)特定の質問をし始めます。たとえば、ゲームの作り方、Windows Messengerのしくみなどです。
コンピューターを使用している場合は、いくつかのコードを表示して伝えることができます。具体的には、Firefoxの設定ダイアログボックスのボタンクリックハンドラー、メインループ、ゲームエンジンの物理コードなどの具体的な効果があります。ウェブサイトなどからのJavaScriptソース。
私は5歳の人に次のように説明しました:
私:「あなたは、物語の中で、人々が魔法の言葉を言い、世界で物事を変える方法を知っていますか?」
彼女:「そうですか?」
私:「それがコンピュータプログラミングです。」
彼女(静かに):「すごい」
15分から30分では、実際の内容を説明するのに十分ではなく、根本的な複雑さを説明することで、悲鳴を上げることができます。あなたは毎日それで働いています、あなたはそれがなんてすごいクールであるかを忘れます。言葉だけで機能的なものを作り出す世界の他の職業はありません...ある時点で、他の誰もが肉の世界に出て行き、ハンマーで物事を叩き始めなければなりません。それが彼らが自分のアイデアを実用的なものにする唯一の方法です。
私たちではありません。
15歳の人ならどんな概念でも理解できます。私自身、14歳でプログラミングを始めました(学校で、何年も前に)
デモには30分で十分です。ブラウザと同じくらい普及した何かでプログラミングの魔法を彼女に示してください。
ほぼ15歳の私は、スペクタキュラーで始めるべきだと自信を持って言えます。
作り方を説明してください。
10101010
を終日入力しないことを伝えます。どうすればよいかわからない方法を伝えます。 (嘘)あなたdo10101010
の意味を知っていますよね?.いくつかの疑似コードのサンプルを見せてください。理解しやすくする:
Display Window
Display "I like cheese!"
Display OK button
If user clicks OK button, close Window
そのステップバイステップで行きます。これは、コードが正確にどのように見えるかではないことを伝えます。コードはEnglish + Math
のようになります。しかし、あなたが話している「言語」(読み:構文)を学ぶことは難しくありません。
今回は、もう少し「数学」を使って例を示します。
User inputs A
User inputs B
C = A + B
Display C
そのコードは電卓のように2つの数値を加算することを説明します。このための「実際の」コードを表示します。 (UIなどの大部分を別のファイルに入れ、表示するファイルは短くシンプルにしてください。)目の前で(マイナス記号を+
から-
に変更して)減算プログラムに変更します。 。
プログラミングをするために彼らが知る必要があることを説明してください。 (さまざまなレベルで。)
x + 1 = 2
、x = 1
のような基本的な代数スキル。私たちはあなたが思っている以上のことを知っています。
ええ、まだ説明が必要なものがあります。
10101010
に変換します。一部の人はこのことを知っていますが、とにかく言わないでください。
プロセス、パターン、要件などについて話し始めると、彼女はすぐにシャットダウンします。今日の子供たちはグラフィックで視覚的に動機付けられているので、私はそれらのタイプの刺激を促進するのを助けるために何かを持ち込みます。ウェブでおしゃれなものを見せてから、その概要を高レベルで説明します。開発用のラップトップを持ち込んで、画面上で「かっこいい」何かを起こさせることもお勧めします。彼女の前のコードを変更して、画面上でその変化を観察してください。その年齢では、彼らは非常に賢く、視覚的なものはすべてspark興味を助けるでしょう。
プログラマーの仕事を説明する際に私が信頼する2つの素晴らしいアナロジーがあります。 1つはレシピです。この比喩は、コードの各行が何をしているかを小規模に説明するのに役立ちます。プログラマーの仕事はレシピを書くことであり、コンピューターは料理人です。
もう1つの例えは、大きなプログラムは大きな会社のようなものだということです。さまざまな分野に焦点を合わせ、メッセージをやり取りするさまざまな部門がたくさんあり、全体が会社の目的を達成することになります。プログラマーの仕事は、組織の設定方法を設計することであり、コンピューターは会社のすべての人々です。
私はそれを一般的に保つと思います。プログラミングや他の多くの職業は、問題解決に要約されます。毎日問題を解決する方法を彼女に示してください。自分が取り組んでいるプロジェクトと、それがクライアントにどのように役立つかについて彼女に伝えるかもしれません。また、あなたが(おそらく)あなたの仕事が好きだと思う理由についても少し含めてください。
私の場合、他のスタッフがチュートリアルを投稿する教育ビデオチュートリアルWebサイトを開発しました。プロジェクトの動機(人を拘束することなくリモートで他の人に教える)、直面した問題(必ずしもこれらを難しい問題と見なす必要はありません)、およびそれらをどのように解決したかについて説明します。そもそもなぜプログラミングが好きなのかについてお話ししたいと思います。物事を作成し、プログラミングが現代の世界に貢献できるようにしたいのです。
あなたが取り組んだソフトウェアの例を彼女に挙げてください。あなたのソフトウェアを公に使用するクライアントはいますか?彼女に見せられる社内アプリを開発していますか?エンドユーザーが見たり使用したりする作業の最終結果を彼女に示します。
次に、あなたがそれを書くのを手伝ったことを説明します。あなたが書いた部分に目を通してください。可能であれば、いくつかのコードを表示します。それらのコード行がアプリケーションの一部をどのように機能させるかを概説します。
あなたのコードが人々に使われているのを見るとどれだけ楽しくなるかについて話してください。
とにかく、14歳の従兄弟に説明しました。彼はかなり感銘を受け、次の学期にプログラミングクラスを受講することにしました。
ボードゲームRobo Rallyをご存知ですか?
私はそれがプログラミングの最高の楽しいアナロジーであることがわかりました。基本的に、単純なコマンド(主に矢印)を使用してロボットをプログラミングし、ゲームボード内の特定の場所に到達します。
BigTrakがまだ残っていればいいのに...
シンプルだが便利なものを示す。良い例は次のようになると思います:
このアプローチが好きな理由は次のとおりです。
より良い例を考えることができるかもしれませんが、このスタイルは「最初のイントロ」に役立つと思います。
15歳のほとんどの "今日"は、コンピュータの使用経験が豊富です。私はもっと実践的なアプローチを求めます。私は彼女に少しコードを示し(詳細に説明しようとしないでください。「フロー」の極端な基本をカバーしているかもしれません)、結果を彼女に示します。この種の例ではHTMLでも機能します。次に、「毎日、基本的にそれを行います。何万行ものコードと非常に大きく複雑なプログラムを除いて」.
次に、プログラミングによって解決する問題の種類と、それを行う理由を説明します。たとえば、「自分のコードがアプリケーションとしてコンピュータで実現するのを見るのが好きだから」と言って、プログラミングが好きだと思います。
第一に、あなたが暴力を振るう必要がある競争があります。
映画、大衆文化、さらにはフィールドの人々(およびこの問題についてのこの質問)は、プログラミング(およびコンピュータサイエンス分野の大部分)を描写しようとしています)ある種の魔法として。 それは魔法ではありません。
プログラミングとは、単にタスクを記述し、それらのタスクを組み合わせて問題を解決することです。パラレルを見つけようとしている場合は、数学を使用してください。コンピュータは数学の先生のようなもので、すべての課題を表示する必要があります。
物理的な観点から見ると、コンピュータは賢くありません。コンピュータは、私たちが言うだけ知っているだけです。したがって、コンピュータプログラマがCDから音楽を再生するプログラムを作成する場合、CDに保存されているデータを読み取る方法をコンピュータに指示し、そのデータを音波に変換する方法と、最後に、それらの音波をスピーカーから出力する方法。
このアイデアを次のレベルに進めると、プログラミングがどのようにタスクを相互に構築するかについて進むことができます。彼/彼女が数学で代数を学ぶ前に算数を学ばなければならなかったように、より複雑な仕事をする方法を彼らに教える前に、コンピュータはまた「基本を行う」方法を教えられる必要があります。長年にわたり、コンピューター科学者やプログラマーは、基本的なことをコンピューターに十分に「教える」ことができました。これにより、お互いの話し方にもっと近づくことができます。
実生活に戻ると、数学の教師は「15の3乗」を解くように指示するかもしれませんが、「XのY乗」は次のタスクに分解されると以前に教えられていたので、その方法しかわかりません。 "[〜#〜] x [〜#〜]を[〜#〜] x [〜#で乗算します〜]、そしてそれを行う[〜#〜] y [〜#〜]回 "[技術的に[〜#〜] y [〜#〜]-1回、ただしええと。]
数学のクラスと同様に、プログラマーは「既知の」タスクのベースを確立しているため、細かいことの詳細に集中する必要がなく、実際の問題の解決に時間を費やすことができますhow基本的なタスクを実行する-これで、コンピュータが基本的なことを行う方法を理解していると想定できます。
9歳のときに夢中になったことをします。ロフトからC64をつかんで、次のようにします。
10 PRINT "YOU SMELL"
20 GOTO 10
(ありがとう、お父さん)。
そして、その面白さが終わったとき。彼女に数字当てゲームを見せます。はい、すべてBASICです。コンピューターが指示を出すのを示すために、現代の言語を使い続ける必要はありません。
Facebookのように彼女が日常的に行っていることから始めて、ログインなどの1つの単純な側面が非常に複雑になる可能性があることを彼女に説明すると役立つ場合があります。
ここから、データベース、アプリケーション設計、そしてセキュリティのいくつかの側面に分岐することができます。これは、彼女が取り除くのに役立つものです。
「Facebookについて変更できることが1つあったら、どうするか」などと尋ねることもできます。次に、あなたがどのように変化を起こすか、そして何人の人々が関与するかを彼女に説明します。
私は最初にパスカルをプログラミングすることを学びました、そして、私のプログラムが私の入力を受け入れて、それをいじって、そして何か違うものを印刷したことに私はすべて興奮しました。そこから夢中になりました。一部の人々は簡単にラッチします。
これは、いくつかの失敗といくつかのかなり良い試みの後の私の見解です:
プログラミングは問題解決です。
インターネットブラウザー(facebook)、携帯電話、レジなど、毎日使用するようにプログラムされた具体的なものから始めます。たくさんの例を挙げてもらいます。これらすべてのものの中に一種のコンピューターがあることを確認してください。コンピュータの心臓部はプロセッサです。
プロセッサは非常に高速ですが、非常に馬鹿な労働者です。あなたがそれにいくつかの指示を与えると、あなたが言うようにそれを正確に行います。それは余分なことは何もせず、あなたがするように言った何かが間違っていたかどうかを教えてくれません。ただし、このプロセッサはすべてを実行します。その方法を正確に伝えると、電話をかけたり、電子メールに画像を書き込んだりできます。
ソーダマシンからソーダの缶を購入するように非常に速く、しかし非常に馬鹿な労働者にどのように伝えるか彼女に尋ねてください。手順を説明し始めると(「お金を機械に入れてボタンを押す」)、プログラムのように解剖を開始します(「お金とは何ですか?どうやって機械に入れるのですか?機械にお金を入れて押すと、ボタンと同時に、何も起こりません。」)。ホワイトボードをお持ちの場合は、左から彼女の最初の指示セットから始めます。彼女がそれらを改訂したら、右側に新しい大きなリストを配置します。適切な指示が揃ったら、部品の一般化を開始します(「ポケットからお金を取り除き、トレイからソーダを取り除きます-どの部品が同じ/異なっていますか?」)一般化して中央に配置します。そして、それらが現在取り囲んでいる部分を取り消します。最終的には、関数呼び出しのような、元の命令と一致するようにピースを結び付けるようにしてください。その他の良い演習:手紙を郵送し、ドアを通り、円/四角/三角形を描きます。
つまり、プログラミングは問題解決です。問題をパーツに分解し、共通するパーツを特定し、それらのパーツをグループ化して問題を解決します。すぐに、いくつかの部品が多くの問題に共通していることがわかり、部品を組み立てて、自分が持っていたことさえ知らなかった問題を解決し始めます。
さて、この時点で彼女は理解するかもしれませんが、彼女はおそらく退屈しています。クールなプログラミング例のセットでフォローアップしてください。シェーダーと関連するビジュアルコードは簡単にデモできます。非常に小さなコード変更で、画像を表示して変更を開始できます。 Facebookに興味を示した場合は、RESTで友達の友達(彼女の6度)のデータを表示)を介してFacebookに話しかけることを自慢します。ビデオゲームが好きな場合は、いくつかのオープンソースゲームを自慢して見せますデモと、コードのスニペットとゲームの動作を支援する方法を紹介します。自宅で調査できる無料のツールとリソースをいくつか示して終了します(Python、C#など)。
私の失敗した試み:pi計算を説明しようとしました(彼らは尋ねていました)、C-Jumpボードゲーム http://c-jump.com/ (彼らはそれを取得できず、指示はバグがありました)、2Dゲームのライブコーディング(デモ間のわずかなステップに関係なく、興味を引くことができませんでした)。
幸運を!
簡単なプログラムを作成します。いいえ、「Hello World!」ではありません。
ゲームを作るもの、ロボットを制御するものなど、プログラミング言語にはさまざまな種類があると思いますが、ここで扱うのはHTMLです。
何もないWebページを作成し、メールアドレスにメールを送信するフォームを追加します。彼女はおそらく新しいメールを所有者に通知できる携帯電話を持っているので、友人や家族が彼女に連絡するのに最適な方法であることを彼女に伝えることができます。彼女が将来自分のWebサイトを取得する場合、彼女が自分のWebサイトにフォームを配置して、顧客やビジネスパートナーが彼女に連絡できるようにすることができます。
あるいは、彼女が少しいたずら好きなのであれば、私がプログラミングに興味を持った理由、つまりハッキングについて説明します。その当時、私はAOLをいじくり回すためにこれまで作成された中で最高のプログラムを作成しました(私の行った数十のことの1つだけで私のパフォーマンスを上回った1つのプログラムを除く)-14歳。また、私は最初のスパム除去プログラム(1995年)の1つも作成しました。オンラインエクスペリエンスをさらに楽しくすることができました。それはそのままにしておきます。コンピューターでやりたかったことはすべて、冒険かパズルでした。そして、コンピューターでやりたかったことは無限にありました。確かに、それを機能させるのは頭痛の種になることもありましたが、人間ができるよりも優れた速度でプログラムを作成したり、一般の人々が簡単に実行できないことをしたりすることは、人ができる細かい機械を作るようなものでした誇りに思う。さて、あなたはおそらく深刻なことから遠ざかるでしょうが、起動時に(画面の側面またはシステムトレイに座って)起動できるVisual Basicで何かを作成することは非常に簡単です。彼女のお気に入りのWebサイトやお気に入りのプログラムなどを起動するようにできます。exeやWebサイトを起動するために必要なコマンドを彼女に紹介して、ボタンをいくつか作ってから、それらのボタンにコードを追加するだけです。 、お気に入りのWebサイト(facebook、Twitterなど)やプログラム(iTunes、ワードプロセッサなど)を配置します。彼女の部屋にコンピューターがある場合は、機能を追加するために目覚まし時計を投げることもできます。もちろん、30分は彼女にそれを説明するには短すぎるので、すでに完了している必要があります。最後に、2〜3ページの小さなユーザーマニュアル、コード、.exeを彼女にメールで送信します。その後、少しの売り込みを彼女に任せます。最初は簡単ではありませんが、それのこつ、それはそれほど悪くはなく、人生で非常に有用であり、そして彼女の分析的思考を発達させるのを助けるでしょう。
以前は18歳の大学生を教えていましたが、15歳もほぼ同じだと思います。練習なしに成功を期待しないでください。最初のクラスで「割り込まれた」のに数週間かかりました。
私が学ばなければならなかった最大のことは、とても簡単で明白だと思っていたことが、時間を埋めることができないのではと生徒たちにまったく思わなかったことでした。私はあなたが赤ん坊のステップで行かなければならないことを学びました-そうでなければそれは単に「ジー・ウィズ」魔法です。
30分でこれをどのように合わせるかはわかりませんが、私が最初に行ったのは、自分で作った自家製のコンピューターをスピーカーに出し入れして小さな曲を再生するようにプログラムされていることを見せることでした。私はそれがクリックの間の遅延として機能するために、カウンターをデクリメントすることによってノートを演奏することができると説明しました。レシピのように、ボードに疑似コードを書いただけです。次に、ワイヤーの下に引っ掛けることができる小さなコンデンサーがあり、全体の動作が約1000倍遅くなります。それから、彼らは、クリック-待つ-クリック-待つ...を聞くことができました...そして、私がコンデンサーを外したとき、それは小さな曲で爆発しました。
これのポイントは、コンピュータが単純なことだけを行い、一度に1つずつ行うことを理解することでした。前のステップが完了するまで、各ステップは開始されません。 (ええ、ええ、私は知っています-パイプライン処理などすべてですが、私たちはnewbiesと話し合っています。)初心者が仮定する傾向があるのは、すべてを一度に実行するように見えるのは電子速度だけです(マインドリーディングとともに)。これは、プログラミングやコンピューターを理解するために欠かせない、非常に基本的な概念の1つです。私たちにとって、これは非常に細かく、私たちがそれを知っていることにさえ気づいていませんが、初心者はそれを知りません。
彼女がこの分野に関心を持つ必要があるソフトウェアを開発していると思われる場所で、仕事に就職したいと思いますか?
決まった答えはありません。彼女が知っていることを5〜10分間クイズして、できる限りその問題に取り組んでいきます。
高レベルから開始します。おそらく、コンピュータープログラミングは問題解決についてだと説明できます。つまり、問題を取り、マシンが使用して理解できる一連の命令として書き出される解決策を考案することです。
難しい部分は、15歳の女の子が興味深い、関連性があるを見つける例を考え出すことです。そのような状況に行ったこともなく、彼女も知らなかったので、何をすればよいかわかりません...コードサンプルは、最後まで、「Hello world」プログラムやシンプルでグラフィカルなもの(ウィンドウに図形を描く、マウスを追跡するなど)。
もし私だったら、プログラミングとは、タスクを小さなタスクに分割して、それらを解決できるようにすることだと言います。そして、ばかばかしいコンピュータが誤解できない言語でそれらの小さなタスクを表現します。しかし、他のプログラマも簡単に理解できるような方法でそれを行う必要があります-それは同じことではありません。
つまり、誰もが言ったことに加えて...
これは、単純な「答え」というよりも、個人的な経験です。
なぜ興味を持ったのですか?両親がIBM PCを購入しましたXT(1984年生まれ))。 640 kb RAMおよび20 MB HDDと5インチFDDがあり、MS-DOS v3.2を実行していました。5番目の標準になるまで、そしてようやく許可されるまで、私はそれに触れることができませんでした。それを使うために、私は長年蓄積された好奇心のすべてをそれに注ぎました。
一方、姉は同じPCとQuadra 610 Mackintoshをいつでも好きなときに使用でき、設定されたテーブルに支払ったのと同じだけの注意を払いました。
妹に教える...BASICで妹のプログラミングを教えようとしました。私は彼女に、コンピュータの起動からプログラムの入力、実行まで、すべてを正しくさせました。それはsラインプログラムでした。
10 PRINT "CAT"
20 END
これには30分かかりました。彼女が最後にそれを実行したとき、それは単語「CAT」を印刷し、彼女は激怒しました。彼女は猫の写真が出ると思っていた。彼女は部屋から飛び出した、そしてそれは永遠にプログラミングの終わりでした!
道徳:出力は、彼らが投入した時間と労力に比例する方がよい。
高校の子供たちにLabviewとLego NXTを教える私は FIRST Robotics のメンターであり、子供たちを指導する必要がありましたNI Labviewでロボットをプログラミングする上で。率直に言って、必要なプログラミングスキルは高校生のレベルをはるかに超えていました。しかし、このコンテストは、子供たちにエンジニアリングに興奮してもらい、挑戦する能力についての基準を上げることを目的としていました。プログラムにifステートメントとループが1つしかない限り、問題はありませんでした。昨年作成したロボット用に私が作成したコード図を見て、人々はロボットのプログラミングセクションから抜け出しました。
15歳の人は複雑なことをすることができ、何時間にもわたって注意を払うことができると人々が言っているように、私は彼らにそうする意欲の奇妙な欠如を発見しました。彼らは頭に負担をかけない簡単なことをしたかったのです。彼らはプログラムを書くよりも、旋盤でCADと部品をフライス加工することを好んだ。
デモに入る前に、CSの世界での位置づけを簡単に説明すると役立つと思います。数学に対するCSのHal Abelsonの説明が好きでした。数学は法律の観点から世界を説明するのに役立ちますが、CSは物事の方法を説明するのに役立ちます。彼の例は平方根関数でした:数学はそれを定義しますが、与えられた入力に対してそれを見つける助けにはなりません。 CSはします。低いレベルでは、電気工学と物理学はインターネットを可能にするハードウェアの基礎を築きましたが、人々にそれを使用させる方法についての疑問を残しました。
次に、プログラマーであることがどのようなものかという問題があります。私を惹きつけたのは、他のどの技術分野よりも、何かを試して、テストして、修正するという、より迅速なターンアラウンドがあるということでした。それはノンストップの問題解決ですが、他の分野では単一ループのターンアラウンドタイムは数か月になることがあります。また、他のほとんどすべての技術分野で言えることですが、他のほとんどすべての技術分野にも役立ちます。したがって、何をしたいのかがまだわからない場合は(おそらく)、早い段階で上手になることをお勧めします。大学では、実験をコード化できるほど、多くの教授にとって役立つものはほとんどありません。
その後、もちろん、デモを忘れないでください。たとえば、地震(オープンソース)のコピーを取得し、1行の変更(たとえば、重力の強さを変更)を行って再コンパイルするのは、すばらしいかもしれません。また、彼女にコードを見てもらいます。彼女はあまり理解することを期待してはいけないことを安心させてください、それは今では意味不明なように思えるかもしれませんが、もう一度、彼女がまだ学んでいない外国語の新聞もそうです。それでも彼女は、物事が物事に割り当てられていること、オブジェクトが何をすべきかが指示されていること、そしてここで重力を設定するところなどを見ることができます。
私は14歳のときにプログラミングを始めました。ほとんど(登録した50人の学生のうち47人)は、年の半ばに中退するか、来年は上級コースに進まないことにしましたが、それを堅持して非常に重要なことを学びました。
プログラミングは、何もないところから何かを作成する機能を提供します。あなたは、言葉を、ニーズを満たすあなた、あなたの友人のための楽しい活動、または単に「私がやったことを見てください。」
最初は「Hello World」と教えられましたが、コードをユーザーとやり取りできるようになるまでは興味がありませんでした。 「cin」で入力を読み取るように教えられた瞬間、クラスでプレイできるMad-Libプログラムを作成することに着手しました。私の最初のハードルは、スペースを含む入力を読み取り、次に出力をフォーマットすることでした。後でこれらのストーリーをファイルに保存できるようにしたかったので、ファイルIOを学習する必要がありました。 自分の目標を達成するための障害に取り組むことが、私を惹きつけ続けました。
その年の後半に、ネットワーク管理者が、コンピューターの授業中に通信に使用していた "Net send"とNovell SendMessageクライアントの使用をログに記録していることを発見しました。学生がテストをだまして使用した後、ネットワーク管理者はそれを無効にしました。 私は管理者が無効にしたものを置き換えるためにチャットルームを書きました。それは私が作成した最初の本当に便利なものでした。私はBattle.Netのチャットシステムの後にモデル化しました。ユーザー登録、モデレーター、さらにはユーザーによる改ざんを防ぐための基本的な暗号化とシャドウファイルシステム(すべての生徒がプログラムにアクセスして使用するには、ファイルを共有ネットワークドライブに置く必要がありました。 これらは私がすでに認識している概念ではありませんでしたが、問題を解決するために自分で考え出したソリューションです。私にとって、それはプログラミングの喜びでした。
したがって、ソフトウェアの開発が何を意味するかという議論を超えて、質問に適切に回答するには、インタラクティブなデモがおそらく素晴らしいアイデアです。できれば、カメラの巨大な写真をすべて自動的にサイズ変更するなど、彼女が抱えている問題を解決するものが望ましいです。少し複雑ですが、友達と共有できる簡単なメッセージを残すWebページを楽しんでいる可能性があります。新しいメッセージが投稿されたときに誰かにメールを送ってもらい、コードを編集してあなたの代わりに彼女のメールに送信させることができます。また、ページに最後のX個のコメントを表示し、その数も調整して、結果を確認します。
私が仕事をしていたところ、私たちは時々仕事の経験の子供たちがやってきました。コンピューターに興味がある人もいなかった人もいます。以前はコンピューターの前に座って推測ゲームを書かせていました。 (コンピューターはランダムに数値を選択し、ユーザーの推測が高すぎる/低すぎるかどうかについてユーザーがフィードバックを受け取ります。)実行するのは簡単で、本当に楽しい結果です。彼らが作成できるものを具体的に示すほど強力なものはありません。
これが伝説なのか、それとも本当の話なのかはわかりませんが、なぜこのラッキーなことがあるのかについて読んでいました。物語の一部は、電車の中で出会った子供(またはおそらく子供)にプログラミングを見せたことでした。
ご存知かもしれませんが、_whyはRubyやつでした(そしてRubyは、普通の人間にとても親切です)。彼はRubyでいくつかのゲームに取り組んでいましたが、何人かの子供が彼が何をしているかを確認するために彼に近づきました。彼はそれらにresult-動作するゲームを示しました。 modify結果を変更するためのコードの内容次に、コードを使用して子供にplayを許可し、変更された結果を確認します。
それがあなたの一般的なワークフローであると思います-結果、修正、再生。人間にやさしい言葉でいくつかのプロジェクト(ゲームが最良の選択でしょう)を見つけて、子供に見せるべきです。
悲しいことですが、この話が本当かどうかはわかりません。それはまだとてもクールです。
また、もう1つ。 Delphiでのプログラミング-MessageBox
の私の最初の経験を覚えています。コンピュータに自分のやりたいことをさせて、すぐに結果を見ることができたので、それはクールでした。
その後、マイクロコントローラが登場しました。私のコードが現実の世界を変える可能性があるので、それらはさらに優れていました。つまり、変数に値を割り当てると、出力ポートに電圧が発生し、それによってエンジンが動くため、それほど抽象的ではなくなりました。かっこよかった。あなたはこの方法を選択したいかもしれません-子供にArduinoのようなものを見せてください。
ほら、そう思いますそれはすべて結果を変えて見ることです。
誰かの注意を引き付けたい(そして保ちたい)ときは、質問してください。水を飲むなど、簡単な作業をどのように行うかを尋ねます。次に、彼らが提供した指示(「ホールを下る」など)が実際に左折、右折、停止などの問題を処理しないことを彼らに示します。これらの境界条件を理解して処理することは、ビジネスですプログラミングの!次に、「do-until」ループが「壁に着くまで歩く」種類の状況をどのように処理して、他の最前線のタスクからメタタスクを作成するかを示すことができます。ウォーキングの。
私はそのプログラミング言語ではないことを知っていますが、HTMLから始めるのが良いと思います。あなたはすぐに結果を得るので....
こんにちは世界
次に行います:
こんにちは<b>世界</ b>
等。
子供を理解する最善の方法は、最初に子供になることです。子供の頃、宿題や面付けなど嫌いでした。だから、あなたが彼らの注意を引くことができる入り口点があります。すべてを説明することはできませんが、30分のスパンでは、興味のある子供たちがそれをインスピレーションとして見つける一種の露出を彼らに与えることを試みることができます。宿題などの関連トピックから始めます。コンピューターがほんの数秒で面付けを書く方法などを教えてください。
あなたの人生に幸あれ.. !よくやった
基本的にすべてのプログラミング言語に存在するプログラミングの基本は次のとおりです。
*おそらく、それぞれの順序で行う必要があります。
これらはおそらく説明できる最も重要なものです。このすべての後、十分な時間があれば、おそらくないでしょうが、グラフィックについて説明してみてください。
-子供は、ほぼ確実に退屈しないことが完全に可能です。プログラミングを使用して作られたものの例をいくつか挙げてください。
最初に、教育を受けた15歳ができることや理解できることについて、みんなの期待を再調整できるようにします。
私の職場には、プログラミングの経験がない2週間あります。彼はコンピュータの操作方法を知っていますが、「パワーユーザー」のようなものではありません。
私たちは彼にデータベースのクエリ方法を示しました、そして彼は質問に答えて、そして彼自身のSQLを書くことによってファクトイドを掘り起こしています。私たちは彼にスプレッドシートを渡して、いくつかの統計的指標を計算させました。数学は学校で教えられましたが、スプレッドシートの自動化はありませんでした。そして、私たちは彼に、彼の学校のプロジェクトのいくつかにかなり近く感じられたに違いないと思われる、グーグル燃料のものである潜在的なサプライヤーに関する少しの市場調査をしました。現在、彼はハンズオンのxhtml + cssチュートリアルに取り組んでいます。これにより、来週、私たちのWebサイトの一部を編集できるようになります。私たちはロケット科学の知識や魔法の力で彼を感心させようとしませんでした、そして彼はプログラミングに疑わしいことに物事をする私たちに彼自身を有用にしてくれました。
30分後、その日に彼女が何を見たのか、あなたが関与していると考えていることを彼女に尋ね、会社でのあなたの役割を説明し、あなたが取り組んでいることの簡単な(事前に準備された)デモを彼女に与えることから始めます(または迅速な編集実行フィードバックループがあるものは何でも、jsdo.itは良い提案でした)。コンピュータが関与していることについて話し合って、彼女が興味を持っているものを見つけたり、よりスマートなプログラムがいくつかの活動を改善する方法に貢献したりします。 30分は練習には短すぎますが、良い議論には十分です。
あなたがしたことのいくつかの最終結果を彼女に見せてください。プロジェクトにおけるあなたの役割について一般的に話します。彼女が興味を持っているようであれば、多分彼女がハローワールドをするのを手伝うことさえあります。
プログラミングの私のお気に入りの類推は、Satanicpuppyのような魔法(ハリー・ポッタースタイル)です。私はこれを非技術系のピアや子供に使用します。かなりうまく機能しているようで、コンピュータが私たちに与える力を確実に伝えます。
コンピュータは私たちの魔法の杖です。手首と呪文の適切なフリックを考慮して、魔法を実行することができます。プログラマーとして、私たちは前任者によって機能し洗練されたスペルブック(ライブラリー)にアクセスできます。新しい呪文や呪文を作成したり、既存のものを使用したりできます。簡単なものもあれば、実際に効果的に使用するためにもっと練習が必要なものもあります。同じ問題を解決するために、多くの場合トレードオフや多くの異なる方法があります(私は良い薬か呪文を使うべきでしょうか?)。
この拡張された比喩は本当にうまく拡張でき、フィールド外の人々がアクセスできる方法でプログラミングに対する私の情熱を伝えることができます。
与えられた一連の問題を解決するための専用のコンピューター内に仮想世界を作成する。
これは、まず問題を理解し、必要な世界をモデル化し、次に、世界の特定の状態とユーザーからの入力に対してコンピューターが何をすべきかを説明することによって行われます。
これは、私がさらに若い年齢でそれを最初に理解した方法と、それ以降に得た経験の基本を組み合わせています。