ベビートークまたはC ++も何かで始まります

そもそも、プログラミングを少し勉強した人にとっては、この記事はあまり役に立たないでしょうし、Cを長年使ってきた人にとっては、C ++が「Cクラスで」、そして一般的に2つまたは3つ以上の言語を知っている、それはばかげています。 しかし、このモニターのあざけりの目的は、誰かを驚かせたり、運命の運命について文句を言うことではなく、「明日、学期論文/プロジェクト/卒業証書を書き始める」というフレーズで突然ショックを受けた若くて明るい頭がパニックになるのを防ぐことです。 C ++では、テーマを選択します。 " つまり、このテキストは、関連分野の1年生から2年生、そして自分で言語を学ぶことを決心した愛好家に向いています。



実際、読者がプログラミングについてある程度の知識を持っていることを願っています。そうでなければ、彼(または彼女)がそれを読むのは奇妙です。



それでは始めましょう。



最初に生徒が授業で使用する言語を教える教師は幸いです。 たとえば、私たちと緊密でした-私たちの良心をクリアするために、私たちはPascalに何かを書くように頼まれましたが、プログラマになることを夢見ている一人の正気な学生はそのような設定に同意しません。 そのため、経験から、Pascalとオブジェクト指向プログラミングに関するいくつかの理論的知識があります。



今後は、オブジェクト指向プログラミングに関する本で最も簡単なことを述べているものはありません。教育用言語から同じC ++に切り替えるとすぐに明らかになります。つまり、「試してみるまで、あなたは認識しません」。 ちなみに、本について-すべての言語の参考書、「C ++ for Dummies」の教科書、インターネットの講義、リソース、その他、すべてが意味を理解していなければ、違いはありません。 これは、いくつかの言語をマスターしたプログラマーにとって、そして実際にはプログラマーにとって非常に明白です。しかし、これは初心者にとってはあまり明白ではありません。 つまり、最初は構文、関数、操作...ホラー、どれだけ学ぶべきかということです。 パニック-パニック-パニックは、これから正確に始まり、ボリュームがあり、今後の地獄のような重労働が伴います。

そして面白いのは、これが根本的に間違っているということです。



言語のロジックを理解していれば、構文は重要ではありません。 つまり、オブジェクト指向(および結合)アプローチの本質を理解すれば、少なくとも何かをすることができます。



そして、これは私たちの先生の本当に正しいフレーズから始まります:「ユーザーはバカですから、プログラマーは彼のために考えなければなりません。」 これは、私たちの心の主人がどのような知恵を話したかを理解できなかったときでした。 そして今、彼は打つ。 私のコースの例を説明します:



多項式クラスのコンストラクター。 メインデザイナーの意味は、キーボードでいっぱいのユーザーとの対話です。 係数と次数が導入されます。 「3x ^ 4 + 5x + 7と入力できないのはなぜですか」とすぐに挿入したい人のために-今のところはそうなるでしょう、それから私はユーザーの利便性で変質し始めますが、それにもかかわらず、これは私のC ++の最初の経験です。 だから、すべてが静かで平和なように見えますが、通常の質問がすぐに発生します-ユーザーは係数と度をどのように入力しますか? 最古から最年少まで、最年少から最年長まで、あるいは混chaとも言えるでしょうか?



そして、数学者は言うでしょう:あなたは、例えば最年少から年長へと入力し、それを忘れるようにユーザーに書く必要があります。 原則として、適切な人なら誰でもそう言うでしょう。 そして、これはすべて、人が自分でそれを簡単にすることを考えるからです。 そして、学生はさらにそうです。



しかし、便利なように、何かを入力するように求める計算機はどこで見ましたか? これはおそらく、プログラマにとって厄介な道の始まりで最も不快なことです。ユーザーにとって何が良いのかを理解することです。 そして、このために頭の中のこのまさにユーザーにやってくるすべてを考慮する価値があるという事実は、あなたが緊張する必要があると思う第10の問題です。 ユーザーのためのすべて、彼のためのすべて、彼の最愛の人。



つまり、私自身がこのプログラムを使用していると想像しました。 そして最初に考えたのは、「なに? Enterは恐ろしいことではありませんか? さて、私は何か他のものを見つけるでしょう。」 もちろん、私は商業を目指していません(そして実際に流通を目指していますが、その傾向は示唆的なものです。



だから、 ユーザーは快適でなければなりません-それ以外の場合、なぜ彼と一緒に気にしますか? いいえ、もちろん、多くのことを実行しました。基本よりも実装に近いですが、それでもです。 ソフトウェアの大部分は何らかの形で人的要因を暗示しています。「サンドボックス」から「大きなサンドボックス」に切り替える際には、これを考慮しなければなりません。



さらに進んでいます。 教科書には書かれていないものがもう1つあります。より正確には、書かれていますが、すべてではありません。 ここで小さな余談を挿入します。



インターネットは教科書以上のものを提供すると信じていることもあります。 時々これは真実です。 時には、何を、何を、そして情報を探すことにおいても平等ではないと信じて、教師のアドバイスを聞き逃します。 したがって、これは真実ですが、プログラミングの場合、そして多くの場合、数学の場合、これらの単純なルールは機能しません。 おそらくこれは学校の遺産です、私にはわかりません。 しかし、彼らがあなたに「そのような本を読んで、すべてがそこに詳細に書かれている」と言うとき、彼らは他に何も説明しません-読んでください! C ++の場合、すべてのオブジェクト指向プログラミングでは一般的に、そのような本はBjörnStraustrup、「C ++ Language」です。 まあ、言語の作者が言語の意味について話し、一般的にひどい単語「クラス」から脚がどこで成長するかについて話すことができるのは論理的です。 私はそれをきちんとシャベルしましたが、この問題に対するより良いアプローチに会ったことはありません。



他のすべてのソースでは、セマンティックな「おしゃべりな」レイヤーをスキップして、すぐに実現に進み、微妙になります。 これは予想外の複雑さをもたらします。 まあ、つまり、オブジェクト指向への導入全体は通常スキップされ、このフレーズは未知の動物のままです。 正直に言って、ここで終わりますが、私は続けます、私は考えを繰り返します、突然、それはより良くなります。



たとえば、テーブルを取り上げます。 オブジェクトはテーブルです。 そして、このオブジェクトにはプロパティがあります。 いくつか。 まあ、材料はガラス、木材、プラスチックです。 色-黒、クリーム、青茶色ラズベリー; 形状-正方形、円形、楕円形など。 これは直感的であり、これによってすべての耳が皆に賑やかになるようです。



しかし、このアプローチが基本です。 つまり、初心者がコードを書くために座る明るい瞬間まで、 彼は葉とペンを合字し、オブジェクトとそのすべてのプロパティを書き留める必要があります 。 そして、彼が必要としないものを消します。



たとえば、出勤テーブルのクラス「生徒」を作成する必要があります。 生徒の目の色、肌の色、宗教、病気、学業成績、配偶者の有無、親relative ...生徒の多くの特性。 しかし、特にこの課題では、学生が靴下を着用するかしないか、祖母にどのようにキスするかなどが重要です。



最も興味深いのは、これらの見かけ上理解できる事実が何らかの形で浮かび上がり、反対側ではないにしても、主題に精通し始めるということです。 そのようなフレーズがあります。「うさぎでも光のマッチを教えることができます」。 言い換えれば、(既知の努力を持った)言語学者でさえ、C ++で何かを書くことを余儀なくされ、この「何か」が機能する可能性があります。 ただし、右側から学習を開始しないと、タスクが突然そのサイズを押しつぶす可能性があります。



これは、C ++だけではありません。もちろん、言語学者は記憶されているので、同じ自然言語も同じ方法で学習しています。 最初に、文の作成方法、単語間の関係についての特定のアイデアが与えられ、次に辞書ベースがすでに開発されています。 プログラミング言語も本質的に違いはありません。



私は100回繰り返しますが、アメリカを発見せず、オリジナルの素材のふりをしません-例えば、2ヶ月前にそのような記事に出くわしなかったので、ある程度のパニックに陥り始めました-どのように学ぶことが不可能で、どのように非現実的ですか、機能を学ぶことは急務ですが、私はそれらを知りません-そして、円の中のすべて。



何かをする方法を理解していれば、それを行うことができます。 そして、単純なものから複雑なものへと進みます。 これは、犬のブースを思い起こさせるものです。最初に1つのレンガを取り、次に2つ目のレンガ、3つ目のモルタルを使います。タスクをコンポーネントに分割しないと解決できません。



ちなみに、これはプログラミングだけでなく適用されます。



しかし、C ++で関数がどのように上げられるのかわからない場合、それは力を発揮します-インターネットとヘルプへの参照。



私はこの記事が素朴に満ちていることを理解しており、プログラマーはそのような結論を繰り返し描き、それを一般に公開しました。 しかし、私の経験がこの問題に遭遇した少なくとも1人の人を助けるなら、それはすでに良いことです。



All Articles