プログラミングを逆に学習するか、「FizzBu​​zzテストに失敗しました。今何?」[閉鎖]


94

少し背景

私は現在28歳で、ソフトウェア開発の正式なトレーニングを受けたことはありませんが、広報の学士号とプロジェクト管理に焦点を当てたエグゼクティブMBAに相当する2つの高等教育学位を持っています。私はそれらの分野で合計約6年間働いていましたが、2.5年前に仕事を辞めたり、失い、方向を変えることにしました。

1か月後、私はWordPressで小さなWebサイトの開発をフリーランスで始めることにしました。私は自分のやり方を自分で学びました。今日、私はクライアントのためにテーマとプラグインをゼロから開発する謙虚だが成功したキャリアを走っていると言えるでしょう。

しかし、十分な数学を学んでいない、または物事を正式に理解していないと、より経験豊富な開発者と競争したり仕事をしたりするときに、本当に遅れをとると感じることがあります。もっと学ぶ方法を常に探していますが、基本が欠けているようです。

残念ながら、コンピューターサイエンスに4年間を費やすことは今のところ選択肢ではないため、書籍やオンラインリソースからできる限りのことを学ぼうとしています。この方法でNASAが私を雇うことは決してありませんが、私は今のところ本当に気にしません。私の目標は、まず基準をクリアし、自分を本当のプログラマーと呼ぶことができるようにすることです。

私は現在、プログラマー向けJava(誰もが難しい/要求の厳しい言語を把握するため)を勉強し、コードの抜粋(ベストプラクティスを把握するため)とコード:The Hidden Language of Computerを勉強していますハードウェアおよびソフトウェア(コンピューターの内部動作を把握するため)。

TL; DR

だから、私の現在の状況はこれです:基本的にPHPで完全なシステムを書くことができ(Googleといくつかの本の助けを借りて)、Ajax、SQLなどを統合し、経験豊富な開発者が期待するよりも少し遅いかもしれません関係するすべての研究のため。

しかし、昨日、if($n1 % $n2 == 0) メソッド モジュラス演算子が記憶されていなかったため、FizzBu​​zzテストの解決策を(Googleではなく)見つけようとしていました。

このジレンマを解決する良い方法として何を提案しますか?問題をより早く、おそらく「プログラマーの方法で」解決するために、どの科目/本を勉強すればよいでしょうか?

編集 -FizzBu​​zzを解決するために私が知らなかったことについて、いくらかの混乱があったようです。

自分自身を正しく表現しなかったのかもしれません。問題を解決するために必要な手順を知っていました。記憶しなかったのは、モジュラス演算子です。問題は、基本的な数学を知ることではなく、基本的な数学をプログラムに転置することでした。

Coding Horrorで読んだ後、テストを楽しみました。私と、正式に訓練された開発者との間の優れたベース比較ラインだと判断しました。

これは、単純な問題を解決するためにモジュラス演算子などの基本的なものを探す時間を失う前に、コンピューター環境で数学を処理しなかった方法の例として使用しました。


63
私がこれを読んだとき:I'm basically capable of writing any complete system in PHP (with the help of Google and a few books)知らないあなたとこれを組み合わせるとif($n1 % $n2 == 0)、PHPで書かれたものにあなたがさらされたのではないかと思います。あなたが行うほとんどのことは、単純なモジュロ計算を超えると思います。あなたができると思うことについて、もう少し洞察をいただけますか?
phant0m

10
また、私は独学のプログラマーです..10年以上、すべてのWebに常に携わっています。当時はWeb開発クラスはありませんでした...自分で学習することにはいくつかの利点があると思います。基本的なオブジェクト指向の原則と設計パターンについて学びたいと思うでしょう。私は一般に、他の人が持っている語彙を常に持っているとは限りませんが、コーディングを楽しんで、エレガントなソリューションを書くことを楽しんでいるなら、最終的には'あなたが望むものにあなたの方法をコーディングすることができます
-hanzolo

56
stuck b/c I didn't memorize %問題に関連して、これを行う他の方法があることに注意する価値があります:($ n2!= 0を想定)if (is_int ($n1 / $n2))またはif (($n1 / $n2) == (int) ($n1 / $n2))キーワードを知ることは1つのことであり、組み込みソリューションがない場合に根本的なアイデアを表現する方法を知ることは別の。
-Grossvogel

18
@grossvogelまさに!Fizzbuzzが好きな理由の1つは、それを解決する方法が非常に多いことです。モジュラス演算子を知っているかどうかを確認するのは、単なるトリックではありません。一つの重要なプログラミングスキルそれはあなたの知識/ツール/リソース/などのための最善の形式に述べていた形態から問題を翻訳する機能です
octern

18
モジュラス演算子を知らないことは、FizzBu​​zzに失敗する理由ではありません。何か足りないものを見つけたら、それを回避できる必要があります。
ローレンペクテル

回答:


144

あなたの場合、独学であり、学習のための良い、健康的でBSなしのアプローチと思われるものをすでに持っています。まだいくつかの提案...

練習は完璧を作る

次のようなプログラミング演習に飛び込む必要があると思います。

あなたの周りの有名な大学、またはローカル(またはリモート)プログラミング競技会の過去の試験問題を入手してください。たとえば、フランスには高校生志望者向けの素敵なものがあり、これはProloginと呼ばれ、毎年一連の頭を悩ませるパズルを提供します(おそらくフランス語だけですが、申し訳ありませんが、そういうことです) )。

詳細:プログラミングのパズルと課題はどこにありますか?

古典的な本と参考文献

素晴らしい 本の非常に長いリストをお勧めすることもできますが、禅の答えはEnlightenmentへの単一の正しい方法はないということです。

どれがリストのトップであるかを伝えるのは難しいでしょう。あなたが今正しくやっているので、避けるべき一般的な落とし穴と従うべきベストプラクティスを学ぶためにたくさんのものを読み続けてください。

多くのための:

限界を押し広げる

また、次のような頭をひっかくような素材を探します。

必ずしも今やるべきことの例として取り上げられる必要はありませんが、そこで何が起こっているのかを把握することは価値があります。

ピアシステムは動機付け

また、次のコミュニティに潜んで(そして参加して)他の人と対beingすることでスキルを段階的に向上させることもできます。

パートタイム教育

別の4年間のコースまたはそれに類似したもの(とにかく必要でもなく、やりがいのあるもので、高価なもの)に従事する時間や動機がない場合は、オンラインで教材を探すことを検討できます。もちろん、これらはコンピューターサイエンスに限定されません。

MIT OpenCourseWareの当初の取り組みのおかげで、今では多くの大学が訴訟追随しており、無料で大学レベルの多くの教材を見つけることができます。自分でナビゲートしたり読んだりするのは必ずしも簡単ではありませんが、いくつかは非常によくできています。ゼロから始めてかなり上に行くには、カーンアカデミーも検討することを検討してください。

さらに進んで、無料で実際のオンラインコースを提供するものもあります。このコースでは、同様にコースの資料にアクセスできますが、ペースの取れた講義と定期的な自己評価も提供します。たとえば、CourseraまたはUdacityにアクセスしてください。

上記のほとんどは、YoutubeまたはiTunesUで講義を公開することが多いので、知識への渇望が以前のすべてのリンクでまだ解消されていなければ、多くの資料を見つけることができます。

「本物の」大学により近い体験を提供するものが必要な場合は、遠隔大学を検討することができます。OpenUniversityやその国際的な変種と同様に、1年の試験(場合によってはオンサイト)。

Passion Keeps You Going

  • ペットプロジェクトを見つける:独自のプロジェクトを作成するか、1つ以上の既存のソフトウェアプロジェクトに参加して貢献してください。
  • コード、コード、コード。そして、さらにコーディングします。

(そして、あなたを批判し、異なる視点をhqveするためにあなたのコードを見て十分な目玉を取得してください)

フランス人は言う:

C'est en forgeant que l'on devient forgeron。

あなたがやっていることをやり続けると、最終的にあなたは専門家になります。時間と労力がかかります。

その他の提案については、「学習問題があります」も参照してください。


PS:インタビューには非常に物議を醸すツールであり、良い候補者を特定する助けにはなりませんが、私はしばしば信じられないほど「悪いもの」を取り除くためにFizzBu​​zzを使用します。だから、この実践的なことでクランクイン!:)


3
最高の超!:)リストをありがとう。Project Eulerとパズルはとてもいいようです。そして、私はすでにいくつかの他のSEサイトを使用しています。それに飛び込みます。
モラレイダ

@moraleida:答えが気に入ってくれてうれしいです。どういたしまして。
ヘイレム

あなたのPSについて:従業員に戻りたくないので、今はインタビューをあまり心配していません。Coding Horrorで読んだ後、テストを楽しみました。私と、正式に訓練された開発者との間の優れたベース比較ラインだと判断しました。:)
モラレイダ

4
最後にFizzBu​​zzが使用されている理由のために +1があります。多くの場合、スーパーコーダーを識別するために企業がそれを使用していると考えているため、これを批判する人々に関するコメントがここまたはブログに表示されます。(それらの会社に:あなたはそれを間違っています!)
Izkata

1
これはいくつかのリンクにリストされていますが、呼び出しが必要だと感じています:rosettacode.orgも調べます。多数のプログラミング言語で解決さ​​れるさまざまな問題が多数あります。コードを読むことは、コードを書くことと同じくらい重要であり、同じ問題を解決するための多くの異なるアプローチを見る素晴らしい方法です。そして、あなたが知っている、または学びたい言語でまだ解決されていない問題を見つけた場合、それはあなたのためのプログラミングの挑戦です。
マークリード

60
I didn't have the if($n1 % $n2 == 0) method memorized.

私はそれほど長い間コーディングしていません(約27か月前に自分でSQLを教え始め、約20か月前にPerlでコーディングを開始しました)が、上記の引用は私が元学生から聞いたことのように聞こえます:

どの統合手法をすべての問題に使用するかをどのように記憶するのですか?

確率を追加するのか乗算するのか、「n choose k」を使用するのか、階乗を使用するのかを覚えていません。

ちょっと待って!あなたは昨日xが2に等しいと言った!今、それはゼロに等しい?!

さて、最後の1つはおそらく少し厳しいものでした...しかし、私がやろうとしているのは、問題解決は暗記ではないということです。もしそうなら、天才はコンピューターをプログラムしてすべての問題を解決することができ、誰も考え直す必要はありませんでした(なんて地獄のような世界でしょう...)。

さて、知的努力は少なくとも少しの暗記から成り立っているのは事実です。特に、PHPでコーディングする場合、基本的なデータ型(数値、文字列、配列)、それらを使用して実行できる基本的なこと(数値の場合:加算、減算、乗算、除算、およびモジュラス;文字列の場合:連結、部分文字列、置換、および少なくとも正規表現のある程度の知識;配列の場合:連結、要素の追加、要素の接合、ループ、要素のカウントなど)、および使用できる基本的な論理構造(if / then / elseステートメント、foreachループ、whileループなど)。

次に、問題が発生したら、問題を使用して、必要なツールのコンテキストを提供します。FizzBu​​zzの場合、数字が3、5、または15で割り切れるときを通知する必要があります。それでは、数字を処理しています。...ある整数が別の整数で割り切れる場合、どのような基本ツールがわかりますか?さて、モジュラス演算子。だから、それを使用してください。(もちろん、あなたの番号がの場合$n、あなたは空想し、の最後の桁$nが0または5であるか、および/またはの桁が$n3で割り切れる何かになるかどうかを見ることができますが、私は逸脱します...) 1から100までの各番号に対してこれを行いforeachます。したがって、心皮トンネルを取得しないようにするには、ループを使用します。

物語のモラルは、一方で「私は基本的にPHPで完全なシステムを書くことができる」と言い、他方でFizzBu​​zzをコーディングできない場合、最初の主張は間違っているということです。私のかつての微積分学の学生の何人かは、概念を理解していると断言したが、試験の問題や宿題の問題、またはクイズの問題を実行できなかった。彼らも彼らの理解について間違っていました。

言い訳をやめて、基本を学びましょう。


6
私は記憶せず、代謝し、これらのものを私の直感の一部にします。常にそれを拡大しようとします。
ncmathsadist

@ncmathsadist-はい、直感を拡張することが重要ですが、直感でさえ、ごく少数の非常に基本的な概念と事実の記憶に頼らなければなりません。

レコードについては、数字を3倍してから数字を追加して3で割り切れるかどうかを確認する必要はありません。数字を追加するだけです。たとえば、
864、8

@ leaf68-当たり前![額をたたく]あなたは絶対に正しい...レム編集!

27

FizzBu​​zzはおもちゃの問題だと思うかもしれません。実際のプログラムでモジュラス演算子を使用する必要があるのはいつですか。しかし、本当にあなたはいつもそれを使用しています。3つの一般的な例:

  1. テーブルを表示していて、異なる行の背景色を交互にしたい場合。行が偶数かどうかを確認し(row_number % 2 == 0)、偶数行に1色、奇数行に1色を表示します。
  2. ループしているオブジェクトのコレクションがあり、行ごとにN個のオブジェクトがあるテーブルを印刷したい場合。改行を追加するタイミングの基準は(item_number%N == 0)です。このテンプレート言語では、条件は同等のものとして記述されていましたが、実際にはこの正確な動作についてSOの質問がありましたif item_number % N == 0if item_number|divisbleby: N)。
  3. 効率上の理由でグループが特定のサイズに達した場合にのみコミットされるトランザクションにグループ化するいくつかの操作を実行しています。google data APIを使用していて、各操作の新しいトランザクションを作成するためのHTTPヘッダー/認証のオーバーヘッドが不要なため、それらを50個の操作のグループにまとめます。または、データベースにレコードを保存していて、適切なサイズのトランザクションをコミットしたい場合。のようなものif cur_item_number % 50 == 0 then commit_data

確かに、これらすべてを行う他の方法があります。ただし、モジュラス演算子を使用したり、浮動小数点除算と整数除算を比較したりすることなく、フィズバズを実行できます。たとえば、FizzBu​​zzの場合、次の擬似コードのようなことを行うことができます。

div_by_3_rem = 0
div_by_5_rem = 0
for(i = 0; i< 50; i++) {
    if(div_by_3_rem == 0 && div_by_5_rem == 0) {
       print "FizzBuzz"
    } elif(div_by_3_rem == 0) {
       print "Fizz"
    } elif(div_by_5_rem == 0) {
       print "Buzz"
    } else {
       print i
    }
    div_by_3_rem += 1
    div_by_5_rem += 1
    if(div_by_3_rem == 3) {
       div_by_3_rem = 0
    }
    if(div_by_5_rem == 5) {
       div_by_5_rem = 0
    }
}

結論として、いつか偉大なプログラマーになりたい場合は、言語の本を学ぶことに飛び込まないでください。はい、PHP / Javaブックでは、google / stackoverflowおよびハーフワーキングプログラムからの回答を他のどの製品よりもはるかに高速に取得できます。しかし、実際に品質の最適なプログラムの書き方を知り、プログラマーのように考えるには、実際のCSブックに触れる必要があります。

プログラミング言語とCSの背景を紹介するCSの本から始めましょう。有名な例のコンピュータープログラムの構造と解釈(Scheme-Lisp方言を教えます)または、Think Python How to Think Like Like Computerのようなもの科学者(私はまだ読んでいません)。どちらも無料のオンラインです。

最終的には優れたアルゴリズムの本を読む必要があります。最高ののはCLRSのアルゴリズム(無料ではありません)ですが、この無料のオンラインアルゴリズムの本低コストの代替品となる可能性があります(ただし、CLRSを購入できる場合のみ)。アルゴリズムの本では、コンピューターの問題を解決する方法を学び、さまざまなデータ構造(配列/リンクリスト/ヒープ/バイナリツリー/ Bツリー/ハッシュテーブル)と最適な使用方法を知る必要がある重要なアルゴリズムを紹介します。 。すべての証明を記憶したり、すべてのアルゴリズム(フィボナッチヒープを使用したことのあるアルゴリズム)を完全に記述する方法を知っている必要はありません。ただし、2つのネストされたforループがO(N ^ 2)であることを直感的に知っておく必要があります。比較ソートはせいぜいO(N lg N)、バイナリ検索はO(lg N)、O(N)で中央値を見つけることができる、ハードディスクデータベースがBツリーを使用する理由など)。少なくとも、アルゴリズムの本に関する強力な知識は、google / facebookのさまざまな技術的なプログラミングインタビューに役立つでしょう。プログラミングの本を読むときは、ざっと読むだけではありません。君は'

また、CSおよびアルゴリズムの本を読んだ後、ソフトウェアエンジニアリングに関する本(Code CompleteまたはPragmatic Programmer)をお勧めします。 ;コードをまとめる;必要に応じてリファクタリングする;バージョン管理を使用する;など)。


4
まだ最高のコメント。多くの人が練習、練習、練習を言っているのを見ていますが、それは行く方法ではありません。彼らは言う練習は完璧になりますが、それは悪い行動を強制するだけです。OPへ:他の概念に触れ、バブルソートよりもクイックソートが好まれる理由を学びましょう。完璧な練習だけが完璧になります。そのCSコースを入手してください。
ピーターB

2
そのサンプルコードを投稿していただきありがとうございます。私はすでに自分でやらなければならないと思っていました。– NANDゲートのみを使用して、複雑な論理回路を構築できます。チューリング完全なごく少数の単純な操作を備えた言語があります。問題を解決するためにこれらの派手な演算子は必要ありません。問題を解決することは、適切なツールを知っているだけでなく、問題に取り組むことができ、自分の知識で機能するソリューションを見つけ出すことがプログラマを作ることです。
突く

22

しかし、昨日、if($ n1%$ n2 == 0)メソッドが記憶されていなかったため、FizzBu​​zzテストの解決策(Googleではなく)を見つけようとしていました。

誰もそのことを覚えていません。あなたは自分でそれを思いつくはずです。モジュラス演算子を知っていて、それが何をするかを知っているなら、それは簡単にFizzBu​​zz問題にぴったりです。

ここでは手足に出て、一般的に問題はPHPであることを提案します。Javaはこれまでに設計された最悪の言語であり、PHPは史上最悪の言語であると言いたいのです。環境が実際にそれをしない方法の定義である場合、優れたソフトウェアエンジニアリングの実践を学ぶことは困難です。そして、すべてを成し遂げるためにフレームワークに依存することは、あまり言っていません。

私は現在、プログラマーのためにJavaを勉強しています(誰もが難しい/要求の厳しい言語を把握するために)

Javaは、存在する中で最も簡単で最悪の言語の1つです。ガーベッジコレクションされた手動継承という1つのことだけがあります。友人やアドバイザーからJavaが難しいと言われたら、新しい友人を見つけましょう。C ++は多くの概念を含む難しい言語であり誰も異議を唱えないでしょう。少なくともいくつかのジェネリックとラムダを持つC#を実行することもできます。

あなたの言語がコーディングできない人々によって設計および実装され、あなたが行うすべてのことをフレームワークに依存している場合、どのようにコーディングを学ぶつもりですか?


14
@moraleida:使用する理由がなかった演算子の構文を調べるのは恥ずかしいことではありません。
DeadMG

2
@moraleida:その場合、私は本当の問題がないことに同意します。意図が明確に表現できる限り、異なる言語の正確な構文に指を当てることができない場合でも、専門家、面接官などは気にしないと思います。
ヘイレム

5
ほとんどの点で合意しましたが、なぜJavaを「これまでに設計された最悪の言語」と見なしますか?私はJavaの大ファンではありませんが、これは非常に熱心に聞こえます。
ケーシークーボール

7
-1は、質問に対する関係がゼロのときに、質問をbash PHPにひざまずきの言い訳として使用した場合。
StasM

1
@ダースフェット:それについてのエッセイを書くことができました。SO C ++チャットに来て、あなたはそれを読むことができます:P
DeadMG

11

FizzBu​​zzを見つけようとしてあなたが立ち往生した理由をよく見る必要があると思います。したがって、$n数値で割り切れるかどうかを伝える演算子があることを思い出したとします。そして、それが何であるかを忘れるのは不運です。いいでしょう、他の方法でそれをやろうとしないのですか?コードについて何かを知っているなら、それを行う他の多くの方法を見つけることができるはずです。それらのいくつかは奇妙に見えるかもしれません-例えば、5の倍数をすべて配列に入れて$n、それらがそれらの中にあるかどうかを確認するように-そしてそれは悪い解決策ですが、それでも解決策になります。しかし、あなたは何も持っていないと言っている、あなたはただ動けなかった。大きな問題の症状である可能性があります。

プログラミングには、学ぶ必要がある2つのことがあります。

  1. トリックの袋。PHPでファイルを読み取る方法、JavaでXMLを解析する方法、Pythonでデータベースに接続する方法。一部の人々はそれを暗記しますが、実際には、これらを毎日使用する場合にのみ、これらのことを暗記する価値があります。それ以外の場合は、ドキュメントにアクセスして検索するだけです。これらのものは、文字通りの形を除いて実質を持ちません。特定の魔法の呪文がどのように聞こえ、結果がどうなるかを知る必要があります。
  2. 考え方。これが最も重要なことです。これはあなたがプログラムする方法であり、これは暗記とは何の関係もありません。コンピュータにしたいことを説明する方法、それを行う方法、および特定のケースで使用する方法を理解する必要があります。現在、最新のツールと最新のドキュメントを考えると、「バッグオブトリック」アプローチを使用してPHPでCMS全体を記述できると考えられますが、既成のソリューションがないタスクに遭遇すると、「スタック」します。

あなたからの説明は、最初の部分から始めたように見えますが、2番目の部分にはやや欠けています。通常、優れたCSコースはそれを大いに助けますが、唯一の方法ではありません。さまざまな問題を解決し、これらの問題をどのように解決する必要があるかを読み、ここに引用されている基本的な本を読んでみてください。プログラマーの考え方が得られたら、新しいトリックのバッグを使用することはそれほど問題にならないことがわかります。もちろん、あちこちでグーグルで検索する必要がありますが、決して立ち往生することはありません。


1
「そして、これらの問題をどのように解決する必要があるかについて読んでください」 –実際、同じ問題に対する異なる解決策を見てください。それぞれを理解し、共通点と異なる点を比較してください。これらのことを理解すると、同じ問題についてさまざまな考え方が自動的に選択されます。
突く

私は考え方に完全に同意します。考え方と概念を理解すれば、基礎となる言語構成の学習ははるかに簡単になり、当然のこととして、物事を行う別の方法を考え始めるでしょう。(fizzbuzzなど、5で割り切れる数値はすべて5または0で終わるため、その部分にモジュラスオペランドは不要です)
-JohnP

9

あなたは他の何でも得られるように、開発で上手になります:練習。プログラミングの世界には、コードカタと呼ばれる素晴らしいコンセプトがあります。これは基本的に、比較的小さな問題の解決策をコーディングし、何が良いのか、何が悪いのかを分析し、それをすべて廃棄し、再度実行する演習です。FizBuzzはそれ自体がカタです。それで、それをして、そしてもっとしてください。あまり良くないように思えるか、うまくいかないものを見つけたら、調査を行い、それについて徹底してください。Q&Aサイトで質問し、記事やブログを読んで、他の人がこれをどのように処理するかを確認し、学んだことを実践してください。

この実践の過程で、必要な追加の数学的/理論的背景を学習します。頭をかき回すことができないという概念にぶつかった場合は、その概念とその前提知識について読んで、コースを拡大するためにあなたがコースまたは何を持っているかをケースバイケースで決定します理論的背景。


1
このコード型も素晴らしいようです!
モラレイダ

8

... if($ n1%$ n2 == 0)メソッドが記憶されていなかったため。

私はそれを意味すると解釈している、あなたはモジュラス演算子を知らなかった、および/または覚えていなかった。この場合、開始する場所は、使用している言語の言語構成を確認することです。「寒さ」を知らないものはすべて見直し、知らないことは何でも学びます。


4
+1。他の答えはより良い職人になる方法について語っていますが、どのツールが実際に存在するかを知ることはおそらくさらに重要です。壊れたネジを簡単に外さずに取り外そうとしたことがありますか?他の方法もありますが、それ用に作られたツールを最終的に学ぶとき、それは額を叩く人です。私は、OPがずっと前にPHP演算子のリストを熟読し、馴染みのない演算子で遊んでいたと思います。
ティムレーナー

5

コーディングを続け、学習を続けます。最終的には、十分な献身で、FizzBu​​zzを見て、なぜそれについて考えなければならなかったのか疑問に思うでしょう。多くの企業が、インタビューの非常に早い段階でFizzBu​​zzスタイルの質問をしているため、これを一度失敗すると、少なくとも採用プロセスについて何かを学んだことを意味します。

コードを書き続け、プロジェクトのアイデアを考え出し、調査し続けるだけです。


4

Java、C ++の前にJavaScriptを学ぶことをお勧めしますか?あなたの理由:

  1. フロントエンドデザインで使用(jQuery、WordPressプラグインの一部、Twitterフィード、バックエンドの作業がほとんどないJSON経由でのデータベースのブラウザーへの読み込み、フォームの検証など)
  2. Node.jsを介してサーバー側で使用できます
  3. iOS、Android、Win8などのハイブリッドアプリの構築に使用できます
  4. JSを学習することで、さまざまなブラウザやデバイスでのWebページのパフォーマンスをよりよく理解できます
  5. JSはより初心者に優しいように設計されました
  6. あなたはすでにHTMLとCSSを知っています(私は願っています;)、それはJSに役立ちます

無料の初心者向けリソース

http://www.codecademy.com/tracks/code-year
https://stackoverflow.com/tags/javascript/info
さらに10個のリンクがありましたが、10人の担当者がヒットするまでSEはそれらを投稿できません。

C ++、Javaなどの学習も役立ちますが、フロントエンドとバックエンドの両方で使用できるため、IMHOがJSのようにWebプログラミングに全体的な影響を与えるわけではありません。楽しんで!



1
そして、仕事を得る準備ができたら:jobety.com
imns

3

あなたは他の人を見つけて助けることができます。例えば、giving.code(開示:私のサイト)またはアメリカのためのコードまたは何でも。これは、PHP以外のWebページ作成の問題にさらされ、気分が良くなる優れた方法です。

解決すべき問題がある場合、または解決に役立つ場合、または単に理解する場合、コードの取得はその過程で自然に行われます。目標を持つことは、何かを学ぶ最良の方法です。


1
驚くばかり!これは本当に勉強にいい方法です!
モラレイダ

0

したがって、FizzBu​​zzの問題を解決できませんでした。大したこと。今、あなたはそうすることができます。頭の上の1つの愚かな問題を解決できなかったという理由だけで、自分自身に悪いプログラマーをブランド化することにあまり熱心にならないようにしてください。

それが一つの問題です。もう1つは、プログラミングの学習曲線に少し遅れを感じているように見えることです。他の人が言ったように、コーディングを続け、読み続けてください。あなたがするほど、あなたはより良くなります。それはそれと同じくらい簡単です。あなたのバックグラウンドの最大の穴だと思うものから始めて、そこから進んでください。


(これは高揚するように意図されていた。私はそこに成功したかどうかわからない。笑。)
ニックスプレイツァー

0

モジュラス演算子であることを知らなかったため、雇用を勧めることを拒否するとは思わない:

  1. 彼らはそれが何らかの演算子であることを知っていました。
  2. 彼らは私に彼らを促した後、「モジュラス」が何であるかを教えてくれました。

常に(通常ではありませんが)%とは限らず、一部の言語は奇妙です。そして地獄、10年後、私はすべてのperl演算子を知っているとは言えません(そして宇宙船は何をしますか?)。それらを必要とすることを何でもやったので、数年が経ちました。

誰かを推薦することをheするかもしれないのは、それがその質問/テストを見逃してパニック発作を起こさせた場合です。それは、彼らが少し緑がかった印象を与えるかもしれません(それが非常にエントリーレベルのポジションでない限り)。そうしたことを暗記する(またはその必要性を感じる)人は誰も必要としません。もっと広い概念を理解している人が必要です。グーグルで調べても誰も気にしないだろうが、インタビューで%を知っていることは大したことではなく、クイックグーグルをするときにキーワードとして「演算子」を使うことを知っていることを確信しなければならない調べる。

また、これは単なるアイデアです...しかし、地元のコミュニティカレッジにcompsciプログラムがある場合、他の単位はすべて移転され、2年間で約20単位しか必要としないでしょう。ほぼ一学期でそれを終えることができます。彼らはあなたにデータ構造のコースをやってもらい、アルゴリズムも願っています...あなたを少し強くするかもしれません。


-1

サンプルコースは次のとおりです。http//www.ox.ac.uk/admissions/undergraduate_courses/courses/computer_science/computer_science_.html

最初に以下を読むことをお勧めします:オブジェクト指向プログラミング(非常に一般的で、どこでも使用され、これがjavaの出番です) (ほとんどのアプリケーションはデータを保存する必要があり、理論はここで重要です)プログラミングパラダイム(考えを広げて新しいことを学ぶために、できれば機能的な、少なくとも1つの非oops言語について読んでください)

4年間のcomp科学教育を見ると、正直に言って、真剣に取る必要のあるコースはほんの一握りだと思います。

データ構造とアルゴリズム(そしてここで数学が必要なのは、本当に良くなり、他のプログラマーに真剣に受け止められるため)、コンピューターネットワーキングとオペレーティングシステムが最も重要だと思い浮かびます。アセンブリでコーディングできるなど、低レベルのコードを扱う他の主題は、おそらくあなたにとってそれほど重要ではありません。ソフトウェアエンジニアリングとテストにより、有用な概念が明らかになり、時間をかけてそれを理解することができます。

これらの概念を直感的な方法で説明するpdfをダウンロードするだけで、すぐに使用できます。

一部のコンプサイエンスコースでは、少なくとも私の場合、最初の年は、機械、電気、民生などの工学のすべての分野を紹介します。複雑な数学がたくさんあります。今日のほとんどのアプリケーションプログラマにとって。そのため、今日のエンジニアの多くは、実際にわずか3年間しか実際のcomp科学教育を受けていません(気分が良くなることを願っています:)

答えの要点:毎日1時間ほど勉強して、ある程度の時間をかけて、ある程度の時間をかけてかなり良いプログラマーになることができます。学び続けるだけです。そして、毎日いくつかのコードを書くことを忘れないでください。


-3

私にとって、私の戦略は、私が働いているものに関連する問題のみを攻撃することです。したがって、私のアドバイスは、あなたがすべてを学ぶ必要はなく、あなたが働いているものに関連するものを読んでください、一度にすべてを学習しようとすると、ひれ伏してしまい、プログラミングを嫌う傾向があるためです。

平和

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.