Paizaでは伸びない?無料のプログラミング独学教材の比較
私がこれまでプログラミングを無料で勉強してきた、paiza 、atcoder、CS50 の3つの教材について、『それぞれにいいところがあるなあ・・・』と日々感じておりますので、それぞれの特長などをまとめて整理しておこうと思います。
Paiza
Paizaと一口に言っても、①講座、②レベルアップ問題集、③スキルアップの三つを一緒にできないので、それぞれのトピックに分けて話しましょう。
①Paizaの入門講座
完全初心者向けであり、何の予備知識なくパソコン一つで始められる。
動画形式の講座である。特に初心者のうちは、コードの書き方を目と耳の両方で習うことが超重要なので、動画形式の恩恵は大きい!
一部無料、ものによっては全編無料。あるいはレジュメだけは全部無料で見れる、なんてことも。
幅広い言語を取り扱っている。
各プログラミング言語の講座はおそらくどれも、競技プログラミングに参加する下地を作る方向性(全て確認したわけではないですが、カリキュラムをある程度使い回しているようなので、おそらく)。実際受講したJavaScript講座でも、クライエントサイドのことはちっとも出てこないの。で、競技に適した言語でなくても、後述するpaizaランクを取得するよう誘導される(無視できる)。
プログラミング言語以外にも、実は多様な講座がある。私の受講したHTML・CSS講座、SQL講座、flask講座はどれも初心者向けで親切でありながら、なかなかに内容が濃くてよかった。
霧島響子先生のキャラは好き嫌いありそう。
②レベルアップ問題集
個人的にはレベルアップ問題集がpaizaの醍醐味だと思う。
プログラミング初心者は、公式ドキュメントを苦心して読むより、これくらいの問題演習をバリバリこなすのが、身につけるには最短と思う。
各単元に分かれていている問題集で、自分の学びたいところをピンポイントで学べる。
各単元のなかでも、例題が1ステップずつ進むので、聞いたことのない分野であっても独学で無理なく学べる。
そして、問題に解説が付いている(←これ重要)。
チケット制で、うまいことチケットをやりくりすれば無料で進めることも十分可能。
ただし単元は乱雑に並んでるので、もうちょっとレベルや分野ごとに整理してあってもいいのにとは思う。
月一くらいで新しい単元が追加されていく(今後とも見捨てないでください!)。
問題解くのに時間制限がなく、じっくり考えて取り組める(paizaランクは変動しない)。
ただし解答例はC++とpython3(時々Java)しかない場合がほとんど。
競技プログラミングで脱初心者の壁になる「計算量」についてはあまり解説されておらず、ここでしかやってない場合、どこかの時点で頭打ちする(と思う)。
③スキルアップ
paiza転職を利用する際の指標になる『paizaランク』を取得するための『本番試験』。時間制限あり。
要は競技プログラミングである。
文章題が基本。問題の提示が親切で、問題文の理解自体は平易である(AtCoderのように、問題文自体の解読に時間をとられることはまずない)。
解いてみたくなるような面白い問題が多い。
なのに解答・解説が全く無いのが残念すぎる。テストケースの中身も教えてくれない。
問題の流出も認められていないので、ネットで誰か親切な人の解説を探すことも出来ない。
つまるところ、解きっぱなし。復習しないテストってやる意味あるの?って話。
だから個人的には、「解き方はわかるけど、書き方がわからん」というのを実践形式のなかで埋めていくのにしか使っている。あとチケット稼ぎ(スキルアップに挑戦するとチケットが一枚もらえる)。
レート変動やランクの取得について評判が微妙で、「他のAランク問題は知らんけど、一番簡単なAランク問題は解けたからAランク取得余裕」みたいなことも可能、と誰かが書いてた。
逆に、たとえば問題の途中に腹痛で休んで制限時間を超過すると、一発でEランク「見習いコーダー」に降格する。
そんなこんなでpaizaランクはあてにならないという噂もチラホラ。能力を測りたいor見て欲しいなら素直にAtCoderへGO!
せっかく毎週面白い問題を用意してくれるのだから、もっとこれらを活用してプログラミングの理解を深められるよう工夫してくれたらいいのに、もったいなすぎません!?
atcoder
毎週末開催される、リアルタイムのプログラミングコンテスト。問題文が日本語と英語であり、世界中から参加者がいる模様。無料。
競技プログラミングの番付として確固たる地位を築いている(らしい)。
リセマラ対策含め、公平で正確なレート変動に定評がある(らしい)。
でも複数人で解いたりとかできんじゃね、とか思っちゃう私はまだまだ低ランク勢。
てか難しい。
問題文がとっつきにくくてわかりにくい。毎回問題文と睨めっこする羽目になる。
計算量がシビア。計算量を正確に見積もれないと、全然先に進めない。
色々な言語を選べるけど、ランタイムの制限からいって基本C++(時々python)でないと戦えない(と思う)。
paizaランクより上限がずっと高く、刻みも細かく、順位とかレート見てるとガチで落ち込む。
だから順位とかレートとかは置いておいて、地道に問題と解説に向き合おうと思う。
解答例、解説はコンテスト終了後すぐに見れる!
ただし解答例はほとんどC++とpythonだけ。
動画形式の解説もある!個人的にAtCoderやってみようと思ったのは、この解説動画の存在。問題の難易度が上がるにつれ、文章の解説読むだけでは理解できなくなってくるから、動画解説はマジでありがたい。
動画のコメント欄には「英語で解説してくれ」「英語字幕くれ」と書いてないことがない。つまり、日本語わかる人なら、AtCoderやらないと勿体無いよ!
CS50
競技プログラミングとは別世界。
競技ばっかやってると抜け落ちかねない、コンピューターサイエンス全般の教養が身につく。
プログラミングを現実世界でどう活かすか、みたいな側面が強い。
英語(日本語字幕もあるらしい?)。
英語わかる人ならCS50やらないと勿体無いよ!
というか詳しくは前に書いたのがあるのでそっち読んでください↓
語学好きのプログラミング初心者がCS50というハーバードのコンピューターサイエンスの授業を受けた話。
そんなわけで私は今、paizaのレベルアップ問題集で競技寄りな知識をボチボチ学びつつ、CS50で競技寄りでないコンピューターサイエンスを嗜み、たまにAtCoderにてこれまで学んできた知識を試してみる、みたいな感じでやっています。
パソコンと通信環境さえあれば、こんなにも色んなことが無料で学べるなんて、ありがたい時代ですね。
ではご機嫌よう。