過去のIfステートメント配列、ループ…さて、何ですか


9

私がこの壁にぶつかったとき、私は1年以上前にプログラミングをあきらめました。基本的なAndroidアプリケーションを作成したいので、このトピックを再考します。しかし、私の限られた知識では不十分だと思います。

これが私の問題です。

私はいくつかの本を読んだり、C#/ Javaでビデオチュートリアルを見たり、例に従って、本を完成させたりしました。結局、彼らはいつも次に何をすべきかについて私を困惑させているようです。

つまり、基本的な "hello world"アプリケーションからifや配列までを教えてくれるので、コーディングの世界に出て、何かを作成する方法を知っているように思われます。

ここで何か不足していますか?これらはすべてのプログラムの構成要素であることは知っていますが、私が読んだ本は次に何をすべきかを実際に示すことはありません。

私が仮定する簡単な答えは「コーディングを開始する」ことですが、どこに?たとえば、「He​​ad First Java」を読みました。その部分まで、彼らはあなたがあなたが学んだすべてを取り、犬のレースゲームを作成することをあなたに言っていました...

「チートしないで、提供されたソースコードを見てみてください。これでこれを実行できるようになるはずです」_正確な引用ではありませんが、基本的にはそうです......

30分前は、配列を作成する方法を説明しているだけでしたが、理論なしに、実際に動作するゲームを作成するつもりですか?

私がこれを尋ねる理由は、これが少なくともコーディングを開始するために知っているはずのすべてであると恐れているからです。

アドバイスありがとうございます


「ドッグレーシングゲーム」は多くのことを意味する可能性があります。手始めに、それはどんなグラフィックスも含みますか?あなたが作成しているものがグラフィックを含まない限り、私はそれが初心者には完全に適切だと思います。たぶん、画像について考えないようにする代わりに、絞首刑にしたほうがいいかもしれません...
2013年

その小さなツールボックスを使用して超高層ビルを構築することは十分に可能です。大きなプログラムは、小さなビットのLOTのコレクションを編成しただけです。ただし、はできません-巣箱の構築を開始して、上に向かって作業する必要があります。jhockingが言ったように、まだグラフィックスで何もしないでください-最初のものが常にフォーマットされていないテキストに基づいているのには十分な理由があります。
Loren Pechtel 2013年

回答:


10

つまり、基本的な「Hello World」アプリからifや配列までを教えてくれるので、コーディングの世界に行って何かを作成する方法を知っているように思われます。

ここで何か不足していますか?これらはすべてのプログラムの構成要素であることは知っていますが、私が読んだ本は次に何をすべきかを実際に示すことはありません。

実は違う。そうではありません。すべてのプログラムの構成要素は、抽象化と再利用です。多くのプログラミング言語には、配列、S、またはループさえありませんif

特定のプログラミング言語がどのように機能するかではなく、プログラミングの方法を教えるすばらしい本がいくつかあります。これは、あなたが読んでいる本のようです。

HtDPとも呼ばれるプログラムの設計方法は、このような本です。それは、プログラムを設計する方法を教えてくれます。そして、問題を分析し、解決し、アルゴリズムに変換し、さらに作業プログラムに変換するためのレシピを提供することで、これを実現します。

「レシピ」は基本的に「プログラム」の別の言葉であることに注意してください。つまり、この本は、コンピュータで実行されるプログラムを生成するために人間が頭の中で走るプログラムを教えています。なんてクールなの?:-)

著者は現在、HtDPの第2版のドラフトに取り組んでおり、第1版の代わりに読むことをお勧めします。命令型プログラミングに関する資料は削除されており、現時点ではまだ書かれていない第2巻「コンポーネントの設計方法」で説明されていますが、欠けている章は第1版から読むことができます。

HtDPはプログラミングの知識がないことを前提としており、高校生を対象としています。しかし、それがあなたを止めさせないでください。それはあなたがおそらくあなたがいくつかの早い章をより速く終えることができることを意味しますが、あなたが退屈することはないと思います。

具体的な抽象化も、同様の流れに沿って読むのに適しています。HtDPと同様に、プログラミングの知識はありません。

聞いたことがあるかもしれないもう1つの本は、SICPとも呼ばれるコンピュータプログラムの構造と解釈です。これは、これまでに書かれた最も優れたプログラミングの本の1つであり、繰り返しになりますが、プログラミングの知識は一切ありません。

それはされたが、完全な初心者に合わせMITで勉強します。それは任意のプログラミング知識を前提としていませんがそしてそう、それはありませんかなりの前提とドメイン電気工学、物理学と数学の分野では、例えば知識を。注:これらは、教えられている概念とは何の関係もありません。演習を理解するためにのみ必要です。したがって、最初にHtDPまたは具象抽象化を読んでから、SICPを読む方がよいでしょう。


1
私は、ステートメントや何らかの種類のないプログラミング言語について聞いたことがありません。それなしで完全に機能することはありません。ifloop
モニカの復活-M.シュレーダー2013年

@MartinSchröder:loopステートメントのないプログラミング言語が存在し、チューリング完全です。
Giorgio

@ジョルジオ:例えば?私の知る限り、何らかのループ/後藤が必要です。
モニカの復活-M.Schröder2013年

2
@MartinSchröder:Lambda Calculusはチューリング完全であり(実際、それはその用語が発明された言語です)、関数の抽象化と関数の適用のみを行います。それは再帰さえも持っていません、あなたはフィックスポイントコンビネータを使ってそれをエンコードする必要があります!裏側:SQL(2003年以前)のようなチューリング完全ではないプログラミング言語や、微妙にC(チューリング完全には無限のストレージが必要ですが、Cは何でもアドレスを取得できることを保証します)有限サイズの変数に格納します)。
イェルクWミッターク

2
@MartinSchröder:または、別のタック:プログラムをコンパイルするだけでコンパイラに難しい問題を解決させることができるプログラミング言語があります。C#では、3-SATの問題をオーバーロード解決の問題としてエンコードしてコンパイラーに解決させ、Haskellでは、Halting Problemと同等の問題を型システムに実際にエンコードして、コンパイラーに解決させることができます。あなたは「プログラミング言語」を命令型言語と考えているようですが、複雑な計算を表すことができる多くの非命令型言語があります。
Eric Lippert、2013年

5

さて、あなたは特別な状況ではありません。プログラミング言語の初心者向けの本のほとんどは、言語の基本的な構成要素に重点を置いている傾向があり、それは良いことです。しかし、あなたと一緒に起こったように、結局、言語が提供しなければならないすべての構成要素を学習しましたが、いくつかの実用的な問題を解決するためにそれを適用できない状況に私たちは気づきました。つまり、テキストの例と実用的なプログラムの間のギャップは、コードを(Tlastynのように)試してみた場合にのみ解消されます。

  1. 本から学びながら、本のコード例/テクニックを適用できる実際のシナリオをいくつか見つけてみてください。
  2. 本に記載されているサンプルプログラムを組み合わせて、より大きく複雑なものを作ってみてください。その後、コードを最小化して、同じ結果が得られる別のコードを記述してください。
  3. 検討中の言語の実用的なプロジェクトのためのGoogle。
  4. 基本的な言語要素を学習したことを確認したら、選択したフレームワークを試してください。初めて、より習得しやすいものを選びました。
  5. 既存のプロジェクトを探して、そのデザインを調べてみてください。
  6. アプリケーションパターン、オブジェクト指向の設計、実装など、より高度なアプリケーション設計について学習できる高度な本を探してください。

結局のところ、プログラミングスキルを向上させ、最終的には多くの超高層ビルの建築家にするのに役立つ実践と研究についてのすべてです。


2

C#については、こちらをご覧ください。それは非常に完全です:http : //www.programmersheaven.com/ebooks/csharp_ebook.pdf 半年前に自分で使用しました。例として#Developコンパイラを使用しています。私はJavaをほとんど使用していなかったので、Javaについてはあまり手助けできません。

プログラミングの段階になると、多くの人が気づいていないのは、通常、設計対象に追加のSDKまたはフレームワークを使用することです。したがって、すぐにJavaまたはC#から電話プログラミングにジャンプすることを期待しないでください。優れた中間フレームワークが必要になる可能性があり、それらの学習曲線はプログラミング言語自体の学習曲線と同じくらい面倒になる場合があります。私が投稿したC#チュートリアルはC#のみをカバーしていますが、それがカバーする概念の多くは、Javaなどの他のオブジェクト指向言語で見られます。

編集:あなたが説明するシナリオは、残念ながら、多くのチュートリアルがたどるルートです。このようなチュートリアルに従う必要はありません。学習方法に反する場合は、おそらく別のチュートリアルを試してみることをお勧めします(わかりませんが、Googleはおそらくそうです)。ただし、念のために、あなたが説明しているその本の著者がコードを1行ずつ説明しているかどうかを確認してください。あなたがどれほど賢いか心配する必要はありません。本から実用的なゲームに直行できるのは天才だけです。覚えておいてください、チュートリアルは決して能力の標準的な測定ではないので、あなたに最高のことを教えてくれるものに行き、落胆しないでください!


すばらしい答えです。あなたが引き受けたいプロジェクトを決定すべきだと付け加えたいと思います。プロジェクトが提示する問題を解決するGoogleの方法。あなたが直面している問題を解決するためのより良い方法を探すことで多くを学びます。
mortalapeman 2013年

1

はい、それは超基本的なプログラムを作るのに十分なはずです。この時点で、あなたは本でやったよりも少し複雑なプログラムを作ろうとします。何か特定のことをする必要があり、いくつかの作業でもその方法がわからない場合は、インターネットを検索するか、教師/メンターに尋ねます。これにより、より高度な機能が実現します(無意識のうちに、自分ができることよりも複雑な方法を選択したため、行き止まりになることもよくあります)。

問題を解決する方法を教える本はありません。

プログラムを設計する方法を説明する本はありません。重要なアプリケーションの作成方法を教える本はありません。ニュアンスが多すぎます。あなたはそのようなものはなく、その実装を構築する方法を学びます。

この時点で学ぶ最良の方法は、手を出すことです。コードをいじって何かを作成する。アーティストと同じように、次第に洗練された見栄えの良い小さなこだわりを始めることが多いので、プログラマーは探索的な進歩を必要とします。


1
「いいえブックは、プログラムを設計する方法を説明しようとしている」 -の作者どのように設計するプログラムには同意しないかもしれません:-)
イェルクWミッターク

1
@JörgWMittag:一般的なプログラムのいくつかの一般的な手法とデモンストレーションがありますが、些細なことでは、高度な人間の判断が必要となり、2013年の時点ではまだ機械化できません。
whatsisname 2013年

1

本を使ってプログラミングを始めたかどうかは本当に思い出せませんが、当時はチュートリアル本ではなく構文リファレンスマニュアルだったと思います。プログラミング言語で何ができるかを教えてくれましたが、それを使って実際のアプリケーションを構築する方法はわかりませんでした。

幸いにも、私が入力するために使用したいくつかの例があり(そう、ダウンロード可能なソースコードの例はありません)、それがどのように機能するかを理解しようとしました。それはプログラミングを学ぶための最適な方法ではありませんが、私にとっては当時は楽しかったです。

私がお勧めするのは、「跳ねる円を描くJavascriptアプリケーションを構築したい」などの目標を設定し、すでに取得している知識を使用して、言語SDK /ドキュメントおよび/またはその他のすべてを開始して調べることです。 SOで。

それが私が新しい言語に飛び込もうとして最初のステップを学ぶときに使用するアプローチです。最近読んだ本のほとんどは、同じように大切なもの見逃しているのと同じ感覚で満足していませんでした。しかし、幸運なことに現在インターネットが利用できるので、学習したい言語が何であれ、インターネット上でサンプルソースコードを見つけ、それを使用して学習を続けることができます。

編集もちろん、アプリケーションの設計方法や従うべきプロセス(SCRUM、XP、V-Modell)を説明したより一般的な本は、純粋な言語知識に加えて良いものです。


1

この段階で特定の言語についてあまり多くの詳細を学ぶのではなく、プログラミングの概念についての一般的な本もいくつか読んでおくべきであることに、私はヨルクに同意します。「プログラムを設計する方法」という本に関しては、このコースで参考として使用されているので、興味があると思います。

そうでなければ、他の人が言及していない別のツールということですが、他の開発者と多くのことを話します。私にとって、プログラミングを学ぶための最も効果的な方法の1つは、同僚、または他のプログラマーと、プログラミングの側面、プログラミング言語、技法、またはその特定の瞬間に直面していた具体的な問題について話し合うことでした。知識の口頭による伝達は、新しいスキルを習得するための最も効果的な手段の1つである可能性があります。


+1。一回の話に行かずに会議に行く人を知っています。彼らは廊下にたむろし、見知らぬ人と問題について話し合って、別の見方をします。
イェルクWミッターク

0

オープンソースプロジェクトを見つけて、個人のサンドボックスに変えることをお勧めします。既存の動作を変更し、新しい動作を追加して、いくつかも削除します。遊んで、自分のアイデアを実装して、「もし私がこれを試してみたらどうなるか」。

私はあなたが誰か他の人のオープンソースプロジェクトを変換してあなた自身のものであると主張することを主張していません。

次のステップに進む方法を自分自身に教える手段として他の作業中のプロジェクトを見ることを言っています。オープンソースのコードをダウンロードできるサイトはたくさんあります。ここで気になることをいくつかです: CodePlexの CodeProjectの


-5

それはコーダーの人生です。あなたはテクノロジーを知りませんが、「ハローワールド」を開発し、専門家になります。企業(実生活)では、それがどのように機能するかです。幸運を


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