functionのお勉強

引き続きcode academyでJavaScriptのお勉強。

今回はfunctionについて。

 

うーん。

もう躓きかけてますw

 

簡単な関数とかローカル変数の初歩の当たりまではよかったんですけど、

argumentsが出てきたあたりから、

ダメージを受けはじめ、

lessonが終わるころには

HPがほぼゼロの状態にw

 

もう一度復習をするとして、

日本語のサイトか本で単語を確認しながら

勉強する必要があるなと思ってます。

 

もしおススメの本やサイトがあったら教えていただけると嬉しいです。

よろしくお願いします。

JavaScriptを使って自動化に挑戦

introductionでJavaScriptの基礎を学んだ知識を使ってゲームを自動化しようというのが

projectにあったのでやってみました。

 

そのゲームの名前は、

Fizzing and Buzzing

です。

 

自分は聞いたことなかったのですが、アメリカの子供が遊ぶゲームらしいです(牛タンゲームみたいなもの?w)。

1から20まで数字を言っていくのですが、

3で割り切れる数字の時はFizzと言い

5で割り切れるときはBuzzと言い、

3と5で割り切れるときはFizzBuzzと答えて言って

先に間違えたら負けという内容だそうです。

 

いちいち頭で考えながらゲームをするのは面倒なので、

JavaScriptを使ってこのゲームの答えをあらかじめ導き出しましょうというのが今回の趣旨のようでした。

 

問題の雰囲気は、大学受験の数学の問題のように初めは単純な問題にしておいて、

次の問題は前の解答を使いながら答えていくという感じです。

 

最終的に出来上がったのがこちら。

 

// for the numbers 1 through 100,

for (i=1; i<=100; i++) { 

  

  // if the number is divisible by 3 and 5 write "FizzBuzz"

  if ( i % 3 === 0 && i % 5 === 0 ) { 

    console.log("FizzBuzz");

  }  

  

  // if the number is divisible by 3, write "Fizz"

  else if ( i % 3 === 0 ) { 

    console.log("Fizz");

  }

  

  // if the number is divisible by 5, write "Buzz"

  else if ( i % 5 === 0 ) { 

    console.log("Buzz");

  }

  

  // otherwise, write just the number

  else {

    console.log(i);

  }

}

 

もっときれいに書けたり、ほかにも書き方があるんでしょうけど

今の自分にはこれが精一杯ですw

間違い等あったら教えていただけたら嬉しいです。

よろしくお願いします。

 

code academy懐疑論

code academyを使ってプログラミングを勉強しているからには、評判も気になるところです。

 

実際に調べてみると多くのメディア(例えばtechcrunchとかmashable)などでは好評価な記事が多い。

それにtwittertumblrgoogle+を見ても、始めましたーといった発言をよく見かけます。

 

ですが天邪鬼な自分は、みんながいいっている時は思考停止しているときだと思ってしまうたちなので

批判的な記事を探してきました(これでこのブログがステマと言われなくなるはず

 

その記事がこちら

My thoughts on Codeacademy by scott gray

 

書いている内容で目立つところを簡単に箇条書きにしてみると、

 

  • 教育関係のベンチャー出来てるけど、ちっとも昔とかわってねーよな
  • codeacademyって俺がやってるO'reilly school of technologyのフォーマットぱくってるじゃねーか
  • シリコンバレーのジャーナリストは"革新的"って言葉使って褒めればいいと思ってるだろ

 

こんな感じです(かなり適当にピックアップしてるので、実際に記事を読んでもらった方がいいですw)。

この記事の中で一番いいこと言ってるなーと思ったのが、次の箇所(このブログでも紹介されてました)。

 

 "So, for all of my beliefs about the way online education ought to be presented, if people are learning about coding though Codecademy, why am I concerned about which features comprise that learning system? My first thought in response to that question is to consider whether people are really learning to code or do they just think they are? Who decides? Can people who go though those lessons actually open up a programming interface and create something from scratch? Can they explain the coding language to someone else? I doubt it, not yet anyway."

 

こういった問題は、code academyに限らないと思いますが、手段と目的をはき違えてしまっては何事も習得できないと思います。

あくまでもcode academyはプログラミングを学ぶ手段であって目的ではない。

多くの人が時間が経つにつれて、そのことを忘れ目的化してしまう。

そんなことが起こらないようなシステムがO'reilly school of technologyにはありますよとも読めましたがw

 

このような批判を受け入れながら、code academyの勉強を続けていきたいと思います。 

code academyはチャート式?

code academyにアカウント作ったのでさっそくintroductionのgetting started with programming

というlessonを始めてみました。このlessonには全部で8個のテーマがあり、それぞれのテーマについて

下の図のように問題が用意されてます。ひとつひとつの課題を実際に解くことでプログラミング

を覚えていこうというのが分かると思います。

f:id:masa-hiko:20120127090832p:plain

 

さらに優しいことに問題を解くヒントがあったり、ヒントでも分からない時にはQ&Aで質問すれば

誰かが答えてくれる仕組みです。(Q&Aにはほとんど解答が載ってるので見ない方がベターw

自分は最後の方見すぎてしまって、何をやってるのか分からなくなってしまいましたorz)

 

実際にintroductionの8つの課題をやり終えた感想を言うと

単純におもしろい

というのが率直な感想です。

 

自分のペースで問題を解くことができるし、分からなくなれば質問できる。

まるで受験勉強の時に使ったチャート式を思い出します。

 

おそらく今はintroductionなので白チャートなのでしょうw

このあとprojectといって、今ならった内容を使って実際に

何か作ってみましょうというのがあるのでこれが問題集にあたるのではないでしょうか?

 

code academyを全部勉強し終わるころには、jave scriptの基本が理解できるまでに

なっているらしいので、黄色チャートまではマスターできるってことなのかもw

 

まだ勉強し始めたばかりですが、

楽しいのでこの調子で続けていきたいと思います。 

打倒Michael Bloomberg

BBCによると現在ニューヨーク市長でもあるMichael Bloombergの今年の目標は、プログラミングを学ぶことだそうです。

70歳のじいさんにできて、20代の自分ができないはずがないがないんじゃないかという安易な発想で

今年の抱負をcode academyJavaScriptを勉強することにしました。

 

初投稿なので自分のスペックを簡単に紹介しておくと、

  • 20代
  • 文系
  • プログラミングはVBAかじった程度
  • 統計ソフトで少しプログラミングを書いた程度
  • パソコンの知識もほとんどない(Dドライブっておいしいの?)

こんな感じです。

 

なのでプログラミングについては、初心者だと思ってもらって構いません。

友達にもプログラミングに詳しい人がいないので、つまづいたらおしまいですw

 

こんな自分がcode academyを通じて、プログラミングの楽しさを体感し、

最終的には自分でサイトを作るまでいけたらいいなーと考えています。

 

温かい目で見守ってください。