誰かがプログラミングの学習に興味を持っています。私は彼にどの言語パラダイムをお勧めしますか-命令型か宣言型か?そして、彼はどのプログラミング言語から始めるべきですか?
数学に近いので宣言的だと思います。そして、Prologはロジックに基づいており、プログラムが短いため、最良のスタートになるかもしれません。一方、学校では命令型言語から学び始めましたが、命令型言語ではなく命令型言語から始めることのメリットがあるかどうかはわかりません。
ありがとう。 :)
私はプロローグを新入生に第一言語として教えていました(SchemeとJavaが次の学期に続きます)。一部の人にとっては素晴らしく、他の多くの人にとってはまったく通じません。論理プログラミング数理論理学に非常に近いかもしれませんが、実際には多くの人は形式論理学があまり得意ではありません-それは人々が実際に日常的に使用する種類の推論(大部分は非公式または無意識)とは大きく異なります。
一方、私も最初にJava、ほぼ同じ成功率で教えました!最近では、包括的な提案をすることは、個々の学習者に大きく依存していると思います。私はまだマシンレベルの言語から始めて(実際に何がコンピュータで起こっているかを理解するために)、より抽象的な言語に向かって進むのが正しいと思います個人的には私にとっての方法ですが、経験から、これは一般化できる種類の推奨ではないと確信しています。
私はプロローグを第一言語として教えるというあなたの考えが好きですが、野心的な若いプログラマーはmake何かを望んでいます。私は何年も前に子供たちにプログラミングを教えました、そして私たちはたくさんのVB6をしました-誰もが泣く前に、VB6は非常に簡単に入ることができました、そして私たちが取り組んだプログラムは通常ゲームか何かグラフィカルでした、そしてそれはまたセットアップと非常に簡単でしたVB6で開始します。学生はコードを変更した直後の結果を見ることができ、素晴らしい時間を過ごし、多くの場合、移行の問題がほとんどなく、C++とJavaのより高度なコースに移行しました。
初めて作業するプログラマーにもよると思いますが、「クールなものを作る」ために利用できるツールやライブラリがもっとたくさんあるという理由だけで、Prologのクールなものを知らない限り、命令に固執します。聞きたいのですが。
私はPROLOGのような言語で始めることはしません。あなたが初心者プログラマーであるとき、あなたは本当に明確になりたいです。 PROLOGは特に明確なものではありません。私は簡単で明白な実行で言語を教えます。
PythonまたはScala=のようなマルチパラダイム言語が最適です。これらは単一のパラダイムに制約されませんが、新しい構文を学ぶことを妨げることなく、手続き型、機能的、およびオブジェクト指向言語を教えること。これらは、少なくとも今のところ、ソフトウェア開発の「現実の世界」で使用される主要なパラダイムでもあります。
FrustratedWithFormsDesignerが作成したポイント に沿って、これらの言語は何かを作成したいという欲求も満たします-入力(およびグラフィカルユーザーインターフェイス)を含むアプリケーションをすばやく簡単に開発できるため、構築しているものを見て使用します。
宣言型はより数学に似ているかもしれませんが、実際には、命令を伝えるために命令型ステートメントを使用することがはるかに頻繁にあります。たとえば、命令的な方法:
トイレに行き、次に手を洗い、歯を磨き、そして寝ます。
対宣言的な方法。
就寝時刻は8時です。トイレに行くことは常に寝る前に行われます。トイレに行った後はいつも手を洗う。歯磨きは寝る前に必ず行います。現在の時刻は8時です。
それから、もちろん、あなたの子供は手を洗おうとします後就寝するか、トイレを使用しながら同時に歯を磨くような大げさなことをします、そしてあなたはそれらの条件をカバーするためにさらに多くの宣言をしなければなりません。 (そして、どんな親も子供がそれらの抜け穴を見つけるのに驚くほど熟練していることを知っています。)
基本的に、コンピューターの直接の主要なアプリケーションが数学者、科学者、統計学者などの間の関係を説明することになる人々のグループを教えているのでない限り、命令型言語から始める方が良いでしょう。 。
コモドールストラクチャードベーシックを独学で学び、高校でウォータールーストラクチャードベーシックとフォートランを学びました。それから私は自分自身にPrologを教えました、そして私はデバッグと学習曲線が嫌いでしたが(純粋に命令的な方法を教えられた後)、私は最終的にそれを学びました、そして今日までそれは私のお気に入りの言語のままです。私がそれを使用する可能性はほとんどないというわけではありませんが、それはあなたに、手元のアプリケーションについて本当に考え、仕事を分解することを教えます手続き的にだらしなく潜り込んで、そのタスクを離れていくのです。
今日、私はさまざまな命令型言語を使用し、Prologの優雅さを欠いていますが、私が学んだ教訓は決して失われませんでした。誰でも命令型言語を習得できますが、最初に命令型言語を学ぶと、後で宣言型言語を学ぶのが難しくなります。宣言型言語を学ぶことは、最初に人生の良い概念を教え、命令型言語を学んだ後で頭を悩ませることに悩む悲しみを救います。
簡単に理解できる非常に慎重なルーチンを使用して単純なスクリプトまたはアプリのみを作成する場合は、宣言型言語をスキップすることもできますが、人間の脳にとっては大きすぎるものに取り組む場合は、宣言型言語を使用してプロジェクトを攻撃するテクニックを学んだ日。そして、なぜ最初の日から簡単なコーディングに制限して、ある日は確実にアプリによって実行されるか、わずかな価格でオフショアされるのでしょうか?私はそれが本当に短い「痛み」の価値があると言います。
だから私は学校で宣言型言語を学ぶことに投票し、次にもっと人気のある命令型言語を学びます。これは学習曲線を最小限に抑えながら良い計画行動を植え付けるための最良の方法です。
人次第ということは強調しきれません。
そもそも学習したいという前提で、特定の学生は宣言型言語を非常にうまく使いこなす場合もあれば、概念的な足がかりを得るために命令型言語が必要な場合もあります。彼らは喜んで抽象的な概念と純粋な数学をいじるのに跳躍するかもしれませんし、友好的で視覚的なフィードバックなしに完全に失われるかもしれません。エレガントなループや再帰関数を作成することでキックを得る可能性があります。または、画面上のものを直接操作できない場合は、興味を失う可能性があります。関数型言語の流れに関連している場合もあれば、オブジェクト指向言語の具体的な表現を高く評価している場合もあります。
プログラミングの世界への私の紹介は、ジオメトリ中のTI-83 BASICの少し、高校のJavaクラス、VB.NETを使用した大学の「コンピューティング入門」コース、および夏はインターンシップのためにVBAでAccessアプリケーションを実行しました。そしてこの夏、私はSpringフレームワークを使用してプロジェクトを実行しました。
重要なのは、私はあちこちで何かを拾い上げたのですが、それらのいずれか(Springを除く)が私のprimaryプログラミング入門であった可能性があります。しかし、他の人にとっては、Haskell、Prolog、C、さらにはJavaScriptの方が良いかもしれません。そして、多くの人々にとって、それはほとんど問題ではありませんwhatあなたが彼らに投げかける-彼らはとにかくそれを学びます。したがって、効果的に学習し、ツールを適切に選択できるようにするためには、どちらかといえば、それらが何であるかを理解する能力にかかっています必要。