コード入門

CS101では、コンピュータの本質的な性質、仕組み、できること、できないことを探求し、コンピュータの知識が全くなくても大丈夫です。まずはコンピュータの基本的な特徴を見て、コンピュータコードで遊び始めましょう

Acknowledgements: Nick Parlante氏の資料に感謝します。 Nickより: 「このクラスを作るのに役立った私の初期の研究をサポートしてくれたGoogleに感謝します。 818>

コンピュータの基本方程式

コンピュータの基本方程式は次のとおりです:

Computer = Powerful + Stupid

  • 大量のデータに目を通すだけのパワフルさ
    -Billion of “operations” per second
  • それぞれの操作は単純かつ機械的なのでバカであること。
    -「洞察」や「思考」(HAL9000のビデオ)のようなものはない
  • 強力+バカ…が演習で出てくる
  • なぜコンピューターはその限界にもかかわらず有用なのか?
  • それがCS101の目的です
    -コンピュータというおかしな世界を訪れ、それがどのように機能するかを見る
    -コンピュータに何ができるのか、人間がそれをどのように活用するかを理解する
    -怖がらない
  • Hidden agenda: open eyes for some, more computer science courses

コンピュータは大量のデータを素早く調べるのに非常に強力なものです。 コンピュータは、文字通り 1 秒間に何十億もの処理を実行することができます。 しかし、コンピュータが実行できる個々の「演算」は、極めて単純で機械的なものであり、人間の思考や洞察とは似ても似つかないものです。 典型的な「演算」には、2つの数字を比較したり、2つの数字を足したりすることが含まれる。

つまり、コンピュータが行うことは高速だが、できる演算は極めて硬直的、単純、機械的である。 別の言い方をすれば、コンピュータは映画『2001年宇宙の旅』のHAL9000のようなものではないのです。 HAL 9000のビデオ

重要なことは、コンピューターは人間の脳のように動作しないということです。

ハイレベル – コンピューターはどのように動作するのか

  • コンピューターは一連の「コード」命令に従う
  • それぞれの命令は単純である(例………………………)。 数字を2つ足す)
  • コンピュータが一連の長い命令を「実行」する
  • 純粋に機械的

コンピュータはとても便利だ

  • すべてのコンピュータ便利機能(電話、カメラ)
    -メッセージ、メール
    -MP3オーディオ
    -赤目の軽減
  • コンピュータがそんなにバカなら….どうしてそんなに便利なの?
  • 両者をつなぐものは何か?

プログラマ

  • プログラマはコンピュータの力を活用する!
  • プログラマは便利な機能を考え出す
    -創造性、人間のニーズについての洞察、コンピュータの知識が必要
  • プログラマは手順を分解し、コンピュータのためにコードを書く
    -コンピュータのためにそれを要約する!
  • プログラマはコンピュータのためにコードを書き直す
    -プログラマはコンピュータのためにそれを要約し続ける-創造性と創造性が必要。
  • 双方の長所:コンピュータの安価/高速処理 + プログラマの創造的洞察力
  • CS101 explorations: algorithms and code

コンピュータがまったく機械的で愚かであるのに、なぜこんなにどこにでもあるのだろうか。 コンピュータが何か役に立つことをするまでのギャップは、人間のプログラマーが解決策を生み出すところです。 プログラミングには、創造力と問題に対する洞察力、そして解決策をコンピュータが従うことのできる命令に分解する能力が必要です。

コードとは、コンピュータが理解できる言語のことである。 この講義では、コンピュータの本質的な性質、特にその長所と限界を理解するために、コードの短いスニペットを書いて実行します。 818>

コーディングの前に – 忍耐

  • 以下、いくつかの簡単なコーディングから始めます
  • コードはレゴブロックのようです…
  • – 個々のパーツは超シンプル
  • – 最終的には素晴らしい組み合わせを構築する
  • でも、小さく始める必要がある

Foreshadow

数時間の講義で、以下のように画像を使って特殊効果を行うことができるようになります:

でも今は print() だけ!

  • 忍耐 コンピュータのさまざまな部分と同様に、いくつかのプログラミング要素を学ぶことから始め、後でこれらのいくつかの要素を組み替えて、多くの問題を解決します。 これらの最初の要素は単純なので、単体で見ることはあまりありません。

    Javascript Computer Langauge

    • Javascript コードと CS101 用の拡張機能
    • Our code phrases are small….
    • -Just big enough to experiment with key ideas
    • -Not full, professional programs
    • -But big enough to show the real challenges of coding

    このクラスでは、Javascript として知られる言語の変種を使用しますが、このコース用にいくつかの機能を追加してあります。 Javascript言語はWebブラウザ上で動作するため、すべての実験はブラウザ上で行うことができ、他に何も必要ありません。 実験に必要なJavascriptの部分のみを使用し、専門的なJavascriptを使用した場合のような完全な言語ではありません。 とはいえ、Javascriptは本物の言語であり、私たちのコードも本物のコードなのです。

    最初のコード例 – 印刷

    以下は、「印刷」関数を呼び出すコードです。 下の実行ボタンをクリックすると、コンピュータがこのコードを実行し、コードの出力が右側に表示されます。

    code1-1

    • 実行すると各行を一度で上から下へと実行する
    • print は関数で、コンピュータが行う操作を表す動詞である。
    • 括弧内のデータはprint関数に渡される(名詞)
      -このデータは「動詞」のオブジェクトである
      -データは関数の引数と呼ばれる
    • 複数の値はカンマで区切る
    • 実験はコードを変え、それぞれの変更後に実行すると新しい出力を見る:
      -Change a number
      -Add more number separated by commas inside the print(.).
    • Change a number
      -Add more numbers separated by commas inside the print(….)
      -最初の行をコピーして、最後の行の後に 2 回ペーストする
      -出力はもっと面白くなることを約束する!
    • Narrow Syntax not free form
      -Allowed syntax is super strict and narrow
      -e.g. cannot leave out the right parenthesis )
      -A reflection of the inner, mechanical nature of the computer
      -Don’t be putting off – “When in Rome….」
      -私たちはコンピュータの世界を訪れている
    • Note this “print” is not a normal part of Javascript, I added it for CS101

    Print And Strings

    code1-2

    • コメントは // から始まって行末まで続きます。 コードに関するメモを書く方法ですが、コンピュータは無視します。
      Why might programmers use comments? 「
    • 実験:
      -文字列内のテキストを編集する
      -カンマで区切って文字列を追加する
      -「print」という文字列を追加する-トリッキーですね!
      -文字列はprint関数で動作する-数字と同じように
      -コンピュータ内の文字列はテキストを格納する-
    • 実験(例):-helloや123など
      -print関数は文字列を表示できる
      -文字列を表示する-引用符の中は単なるデータ
    • Code = 実行される命令
    • Data = 数値や文字列、コードによって処理される

    print がコード内の関数として認識されるのに対し、hello は単なる受け身のデータ(動詞や名詞など)だということに注意。 コメントは、一時的にコードの行を削除するために使用することができます。コードの左側に「//」を置くことで、コードを「コメントアウト」することができます。)

    • Syntax — コードはコンピューターのために構成されている
    • Very common error — Type in code, with slight syntax problem
    • Professional programmer are always make that sort of “error” as a long time
    • Fortunately, very easy to fix …これは非常によくあるエラーです。 don’t worry about it
    • Not a reflection of some flaw in the programmer
    • Just the nature of typing ideas into the mechanical computer language
    • Beginners can be derailed by syntax step, thinking they are making some big error
    • Try a bunch of typical syntax errors and fix them
    • Fixing this small errors is a small, normal step
    • Note: Firefox は最高のエラーメッセージを提供します

    構文 上に示した構文は厳密に従わなければなりません。関数名、括弧、各文字列には開閉引用符、関数呼び出しの値を区切るカンマがあります。

    構文の厳密さは、コンピュータの自然言語が固定的で機械的であるため、コンピュータの限界を反映したものとなっています。 これは、コンピュータで作業する際に吸収すべき重要なことで、多くの人がコンピュータを使い始める際に脱線してしまうところだと思います。 人間なら誰でも理解できるようなことを書いても、コンピューターはそのコードがコンピューターの機械的な構文に適合するところしか理解できません。 地球上で最も熟練したプログラマは、常にその種の誤りを犯し、何も考えません。 構文エラーは、作者による何らかの欠陥のある戦略を反映しているわけではありません。 これは、私たちの考えをコンピュータのより機械的な言語に翻訳する際の自然なステップに過ぎないのです。 後述するように、これらのエラーを修正するのは非常に速いです。

    このような小さな表面的なエラーのケースで脱線しないようにすることが重要です。 パターンを学ぶために、以下に典型的なエラーを示す多くの例を示しますので、エラー メッセージがどのように見えるか、どのように修正するかを確認できます。 以下の各コードのスニペットは、どのようなエラーなのでしょうか? コンピュータが生成したエラーメッセージが問題を正確に指し示している場合もありますが、エラーメッセージは、エラーがコンピュータを深く混乱させ、正確なエラーメッセージを作成できないことを明らかにしているだけである場合もあります。 Firefox は現在最も役立つエラーメッセージを生成し、多くの場合、問題のある特定の行を教えてくれます。

    Syntax Error Examples

    These syntax problems are quick to fix.

    code1-err1

  • コメントする