なぜ大学でJavaを勉強するのですか?[閉まっている]


25

Javaは学界でよく見られます。その背後にある理由は何ですか?


9
MicrosoftエコシステムのようなJava IDEのライセンスコストはありません。大学への大規模な授業料の多く。
mjhilton

16
何?Microsoft Visual Studio Expressを無料で入手できます。
quant_dev

12
実際、ほとんどの場合、学生とその他すべてのMicrosoftアプリであれば、Visual Studioを無料で入手できます。
エリン

5
卒業時にお金を稼ぎたいのですか?real世界中で誰も使っていないものを勉強するのに4年間費やしても、学生や学生を雇いたい企業にとっては有益ではありません。

5
@JarrodRoberson、一部の企業のみがJavaを使用しているため、大学は実際にあなたがより多くの言語で教育できるようにして、現実世界への準備を整える必要があります。他にも多くの考え方や開発方法があるのに、Javaプログラマーにとどまることを望まないでください。
CaffGeek

回答:


73

いくつかの大学は十分に多くの(そうでない場合はほとんどの)決定は、たとえばなどその人の好き、嫌い、意見、味、ちょうどを中心に展開することが知られています誰かが、テキサスA&Mは、スタッフにビャーネ・ストロヴストルップを持っている持っています。おそらく、カリキュラムがC ++を重視する傾向があることは、誰にとっても驚くことではありません。

しかし、ほとんどの大学は少し異なります。第一に、多くの場合、決定は学生よりも教員の利益のために行われます。多くの場合、単一の最大の基準は「どの言語が私たちの側で最も労力を必要としませんか?」です。彼らのほとんどは怠にも注意を払っています-高度な概念を最も少ない言語で習得するだけでなく、(たとえば)革新、更新、または新しいものを受け入れるのが最も遅い言語も求めています。

第二に、ほとんどの決定は委員会によって行われます。これは、最終決定が誰も実際に望んでいたことはめったにないことを意味します-委員会の最も少数のメンバー(特に最も影響力のあるメンバー)が特に好ましくないと判断したものです。アイスクリームの味を選ぶようなものです。一つは本当にイチゴが好きですが、もう一つはイチゴにアレルギーがあります。別の人はチョコレートが大好きですが、他の人はそれを我慢できません。さらに別の人は、ラムレーズンは素晴らしいと考えていますが、「ラム」に言及する他の2つの心配は、アルコール乱用を助長するものと解釈されるため、バニラになります。

最後に、通常は前の2つの基準が単独で生成するもののほとんどとは正反対に実行されますが、通常は業界のニーズに対応していると見なされる必要があります。

Javaは、次の3つの共通部分です。

  1. それが具体化するすべての概念は、1980年までによく知られていました。OOPが何であるかという最も基本的な概念を超えて知ることはあまりありません。
  2. それは、無味無臭、無毒、生分解性、政治的に正しい選択です。
  3. 歴史上、長く、おそらく(おそらく)革新が少ない限り存在していた他の言語は、SQLだけです。COBOLとFortranは、あなたが高速移動ターゲットと呼ぶものとはほとんど言えませんが、Javaよりも革新的です。
  4. 広く使用されています。理解すると、教授とPHBには同様の基準があります。

私が実際に言っているのではないことに注意してください(たとえば)、Javaについて知っておくべきことは、OOPとは何かという最も基本的な概念以外にありません-それだけが、それを教えるのに受け入れられる仕事に合格するために必要なことです。


この回答に関する意見が分かれているため、コメントの多くはここから削除されました。
表示名

1
FWIW、私はバニラが好きです。
モニカとの軽さのレース

私はあなたの答えをupvoteするためにサインアップ
user2445942

22

私はJavaが登場する直前の90年代前半にコンピューターサイエンスを学びました。教授が従ったアプローチは次のとおりです。

初年度:Pascalのプログラミングとアルゴリズムに関する入門コース。パスカルを選ぶ理由 それは、ハッキングの設備なしでプログラミングの概念を教えるために設計されたクリーンな言語だからです。もちろん、当時の最も人気のある言語はCであり、人気が高まっている新しい言語であるC ++があることを学生は知っていました。そのため、私たちは常にこれらの言語を読んで議論し、自分たちでそれらを使用して小さなプロジェクトを行っていました。そのため、授業ではクラスで真剣な理論(Pascal)を行い、自宅ではハッキングの方法を学びます(C)。:-)

2年目には、オペレーティングシステムコースを開催しました。このコースでは、Cおよびアセンブリの演習を行うように依頼されました。教授は、Cの完全なコース(ほんの数回のレッスン)を提供しませんでした。これは、(1)初年度にプログラミングのコースをすでに受講しており、(2)プログラミングの概念を知っているすべてのコンピューター科学者は、本を読んで、新しいプログラミング言語を学ぶことができます。コースは非常にスムーズに進み、Cとアセンブリは自分で学習したり、廊下で他の学生と話し合ったりする実用的なトピックであるが、コースを作成する価値はないことがわかった。

3年目にはプログラミング言語のコースがあり、プログラミング言語のさまざまなパラダイム(命令型、機能型、論理型、オブジェクト指向)を研究し、一般的な概念と実装技術を学び、主要なプログラミング言語を修正しました(パスカル、 C、Modula2、Simula、Lisp、C ++、Prolog)。コースの始めに私たちの教授が私たちに言ったことは、コースの終わりに知っているプログラミング言語の数ではなく、あなたが学んだすべての一般的な概念、その方法について考えることによってこのコースを評価すべきではないということでした互いに関連し、それらが何のためにあるのか、どの言語でどのように使用されるのか。次に、特定の言語を学ぶことは、本を読んだり、既存のコードを調べたり、特定のプロジェクトでそれを使用しようとしたりするだけです。

このアプローチは非常に適切かつ効果的であることがわかりました。大学は優秀なプログラマーを養成することを目指すべきではなく、むしろプログラミングとプログラミング言語を理解することを可能にする良い知識を与えることを目指していると思います。優れたプログラマーになることは、その副作用として生じるだけです。Adaで本格的なプログラミングをしたことがないのに、Adaが必要な仕事に応募することを考えています。

Javaを教えるという問題に戻ります。Javaは十分に中立であり、業界の世界にも近い言語を使用してプログラミングの原理を説明できるため、Javaは教育によく使用されると思います。

個人的には、Java /オブジェクト指向言語で緊密に統合されている制御構造とデータ構造を区別できるため、最初のコースではまだPascalまたは同様の言語を使用します。したがって、私の意見では、Pascalはプログラミングの基本概念をより緩やかに紹介できるようになるでしょう。

また、コンピューター科学者(および優れたプログラマー)は、スタック、ヒープ、パラメーターの受け渡し、メモリ割り当て、ポインターなどの基本的なメカニズム/ランタイム構造、または組み込み機能を使用せずに抽象データ型を実装する方法について知っておく必要があります言語(リスト、セットなど)。Javaはこのことの多くをプログラマーから取り去ります(もちろんそれは良いことですが)が、初心者はこれらのことについて学ぶ必要があります。おそらく、Javaでの最初のプログラミングコースの後、プログラミング言語の概念に関するより一般的なコースを受講する必要があります。

これは私の経験と意見です。


1
私が1年生のときに、プログラミングコース(コンピューターシステムコースの一部のアセンブリ)でAdaをしました。2年目は言語スタイルがかなり似ていました。3年目には、「プログラミングの概念を知っているすべてのコンピューター科学者は、本を読んで新しいプログラミング言語を学ぶことができるはずです」と正確に言われました。年の終わりまでに、私たちはC、C ++、Java、そしてあなたがプロジェクトで使った言語(Pythonだった)を独習しました。
エイミー

(+1)Pascal関連のプログラミング言語は、プログラミングの教育に使用するのが適切です。その理由は、その父 "Niklaus Wirth"が教育のためにそれらを注意深く設計しているためです。;-)
umlcat

@umlcat:ありがとう。はい、ルールを破ってハッキングできるCまたはC ++があると良いと思います。しかし、ルールを破る前に、どのルールを破っているかを知る必要があります。このためには、パスカルのようなクリーンなプログラミング言語を使用して、「理想の世界」でどのようにプログラミングすべきかを学ぶことが非常に役立ちます。そうすれば、少なくとも、ハッキングしたときに何をしているのかがわかります。:
ジョルジオ

@Giorgio:生徒には最初にPascalを教え、次にC / C ++以降のJavaを教えるべきだと思います。どちらか一方だけを意味するのではなく、すべてが特定の順序で並んでいます。一部の学校は、他の学校を支持して教えることをやめます。それが役立つことを願っています
;

@umlcat:まったく同感です。また、Lisp、Haskell、Prologを追加します。プログラミングパラダイムが多くなればなるほど、より良いものになります。
ジョルジオ

10

Javaが登場したとき、私は学校にいました。そして、私の大学は一晩でほとんど変わりました。学界では、人々はジャバで正気を失っていた。私はそれが発表されたとき、私はジュニアでした、そして、私のシニア年までに、ほとんどすべての学界は彼らのカリキュラムを変えるためにすぐに動いていました。私の大学だけでなく、どこでも。本当に速かった。2つ目のイントロコースはPascalで、1年も経たないうちにすぐにJavaに変換されました。なぜ彼らはそんなに速く変換したのですか?2つの大きな理由。

ある学者は、理論とアルゴリズムを教えたいと思っています。操作に多くの経験を必要としないこれらのアルゴリズムの学習を容易にする言語は、Scheme、Python、Java、Smalltalkなどが最適です。当時、スクリプト言語は、安価または迅速で汚いという雇用主から眉をひそめられた二流市民でした。学者は彼らをより模写猫と見ていましたが、雇用主が望むものは学者にも影響を与えました。

それが次の理由につながります。雇用主は特定の言語経験を望んでおり、当時はC / C ++でした。しかし、C / C ++は学ぶために多くの経験を必要とし、多くのコーナーケースと、気を散らすものがあるかどうかを調べます。私たちはC / C ++でコースを学びましたが、下位レベルでは学びませんでした。当時、学生はC / C ++の第一人者として出てこなかったため、雇用主はCSプログラムに怒っていました。

Javaは、学界とほぼ同じ速さで業界を席巻していました。ついに学界は彼らが望むものを手に入れていました。習得しやすく、雇用主が望んでいた高水準言語。完璧すぎる。私が退学してから3年後に友人に学界に戻ってもらい、彼はあなたがすべてのCS科目でJavaの本を見つけることができると言った。これが、Javaが学界を引き継ぐ速さです。

個人的には、JavaがCSを馬鹿にしていないと思います。学生はCSを勉強し、オープンソースに参加し、学校にいながら仕事を見つけることができるので、実際に良いことだと思います。私はまだCSの学生として多くの言語を勉強すべきだと信じています。それはJavaだけではありません。しかし、彼らがすべてpythonを使用している場合、Joelもpythonを嫌います。


あなたの学校が90年代半ばにまだPascalを使用していた場合、いずれにせよオーバーホールが遅れていました。私の最初のCSクラスはPascalでしたが、それは1980年でした!興味深いことに、それは入門コースのみでした-上位クラスはC(OS内部用)、Modula(コンパイラー設計用)、Prologを使用し、一部の大学院コースはAdaを使用しました。なぜ学校がこれをやらないのか理解できません。
TMN

1
ほとんどまたはすべてがまだ1995年までにPascalを使用し、一部はModulaに移行しました。私は1995年にシニア向けにC ++の導入を開始し、パスカルはジュニア向けにしています。PascalがJavaに置き換えられたと思います(多くの作業がハードウェアとのやり取りを伴うため、低レベルの言語が必要なので、おそらくC ++はまだ存在しています)。
ジュウェンティング

Pascalの入門コースの後、C / C ++をかなり使いました。Prolog、LISP、Scheme、Smalltalk、Assemblyはすべて、中間レベルのクラスで使用されました。1990年代に政府による技術の消費の重要性が低下したため、エイダは段階的に廃止され、1990年代後半に言及されただけでした。Javaの危険は、Javaとは関係なく、モノカルチャーと学習とは関係ないと思います。私は現在Flex開発者であり、Adobeは先週、Flexで生計を立てる能力を失いました。1つの言語しか使用していないという長い歴史があるため、私は心配していません。Java、Ruby、Php、Pythonを使用してフォールバックします。
chubbsondubs

8

以下のようないくつかの理由があります。

  • 就職市場における偏在性-大学が学生に就職を希望する場合(さらに大学に多くの学生を推薦する場合)、関連する言語を教える必要があります。
  • カリキュラムを簡素化
  • 簡単に採点でき、宿題を簡単に実装できます。
  • ガベージが収集されたため、ポインタや手動のメモリ管理を教える必要はありません

同じ理由の多くでC#を教える多くの学校があることに注意してください。さらに多くの理由があり、それらのいくつかは個々の学校に特有のものです。本質的に、Javaは、昨年のオブジェクト指向の「BASIC」になりました。


BlueJを使用したJavaの最初のオブジェクトなど、すばらしいJavaの本もあります。しかし、C#では、最初からあなたを連れて行き、良い方法であなたを学ぶような学習本は見ませんでした。私に賛成してくれますか?
ゴマ

します。教えることは非常に困難な作業であり、教師は依然として最高の教え方を学んでいます。Strayerのような多くのオンラインスクールがC#に準拠しており、ブリックアンドモルタースクールはJavaを好む傾向があります。おそらく、オンラインスクールはすでに働いている生徒に対応しているためでしょう。基本的なプログラミングの本はどの言語にも適用できるため、資料が用意されています。
ベリンロリチュ

「ガベージが収集されたため、ポインタと手動メモリ管理を教える必要はありません。」ソフトウェアエンジニアとして、ポインタとメモリ管理について知らない場合、またはそれらがどのように機能するかを知らない場合、非常に重要な知識が不足しています。
右折

Javaには*構文がない場合がありますが、ポインターの基本的な理解なしに使用するのは非常に困難です。
dan04

@WTP。だからこそ、Javaは入門コース(以前はPascalまたはModulaが使用されていた)でよく使用され、後でC(++)が導入されます。
jwenting

6

私はジョエル・スポルスキーの「ジャワの学校の危険」と題された投稿が好きです。Berin Loristchは、それがカリキュラムを単純化し、実世界にも適用できることについて正しいと思います。

「コンピューターサイエンスの学位はプログラミングを学ぶ学位ではなく、理論を学ぶことです」と何度も言われたことがあります。理論が学習されている限り、言語は必ずしも重要である必要はありません(邪魔することはありませんが)。Javaは比較的使いやすい言語であり、すべての背後にある理論の学習により多くの時間を費やすことができます。これが、MITがSchemeを使用する理由の1つです(だから聞いたことがあります)。


2
Mitは数年前にSchemeの使用を停止しました -cemerick.com)/ 2009/03/24 /…
nate c

@nate c-わからなかった。それでも、Pythonも簡単に習得できます。リンクをありがとう!
ジェッティ

私がクラスを教えていたら、生徒たちと完全にやり取りしていたでしょう。独自のプログラミング言語を書くことをお勧めします。クラスのコース全体を通してそのプログラミング言語のみを使用できます。
berlinbrown2

1
@ベルリン-それがあなたが教師ではない理由だと思う:)
ジェッティ

3

上記の回答の多くは良いものですが、何かを省いています。

Javaはマルチプラットフォーム言語です。1人の学生は自分のMac、もう1人は彼女のPC、もう1人は彼女の学生Unixアカウントを使用できます。同じコードで同じことができます。教師と学校のIT部門の両方がサポートするのがどれほど簡単かを考えてください。

これは、Javaが登場したときのJavaの真の重要性でした。ジョークは「一度コーディングすれば、どこでもデバッグできる」というものでしたが、実際にはハードウェアとオペレーティングシステムを式から外します。


おそらく、JavaがC、C ++、またはC#よりも選ばれている理由を説明しているのかもしれませんが、RubyとPythonは(とりわけ)うまくクロスプラットフォームで動作します。
エリックウィルソン

いい視点ね。多くの理由から、CS部門も強く型付けされた言語を好むと思います。また、Javaは米国で順調にスタートしました。Rubyは1999年以降までここで成功しませんでした。Pythonは2.0が登場するまでかなり制限されていました。
マシューフリン

1

私は教授がJavaを使って教えると言っているのを聞いたことがあります:

  • 新しいパラダイムを使用します(OOP、いくつかのジェネリック)
  • 非常に冗長ですが、構文的には非常に単純です
  • 基本概念をまだ学習している人々を混乱させるような高次関数、クロージャ、カリー化、継続などの高度な概念はありません
  • それのために書かれた多くのライブラリ
  • gcがあるので、学生はメモリリークのデバッグで行き詰まってしまうことはありません

個人的には、Schemeを使って教えるときにバークレーでCSを受講したことがうれしいです。数年後まで、私は言語がどれほどエレガントかを実感していませんでした。


1

少しの背景

私たちの学校で提供されている唯一のJavaクラスを受講しました。これは90年代後半から2000年初頭でした。Javaは成長し​​ていましたが、ほとんど離陸していませんでした。Cでの多くの開発から来て、Javaを起動して実行するために必要なすべての定型コードに少しイライラしていました。私は自分の仕事に集中できませんでした。「open」でファイルを開くことができませんでした。クラスを定義してから、インポートなどを定義する必要がありました。

私はコンピューターエンジニアリングだったので、最初にアセンブリプログラミング、次にC、次にC ++、Scheme、そしてその1つのJavaコースを受講しました。ほとんどはC指向の学校プログラムでした。アルゴリズムクラスはCを使用して教えられました。

業界に入ったとき、Javaが明らかに支配的なプレーヤーでした。バックエンドCOBOLシステムからJava Webビジネスアプリケーションへの変換中の唯一のプレーヤーだったのかもしれません。Javaは、2000年初頭にビジネスの世界で大きな進歩を遂げました。

同時に、私はすべてのJavaフレームワークを知っていませんでしたが、Java環境にコーディングして適応させる方法を知っていました。優れたJavaコーディング標準に関するトレーニングコースを受講した場合、おそらく、より良いJavaスタイルまたはJavaエコシステムの知識から始めることができたでしょう。

振り返ってみると、それは重要ではないと思います。

あなたの質問に答えるために:なぜ大学でJavaを勉強するのですか?

Javaは教えられるべきですが、すべてのコースで使用されるべきではありません。

コンピューターサイエンスを学んでいるなら、大学のある時点でJavaを学ぶべきです。ビジネスの世界で人気があります。JavaとC#を学ぶ必要があります。Javaをプログラミング入門コースとして絶対に教えません。また、Javaはすべてのコースで使用される主要な言語であってはなりません。

Java批判について:

Javaは多くの批判を受けており、常にそうです。私は、Javaについて疑問符の付いた「Javaはエンタープライズに対応していますか?」というJava雑誌を読んでいます。Javaプラットフォームは依然として広く使用されているプラ​​ットフォームです。ただし、ほとんどの一般的なプログラミングタスクでは、Javaは正常に機能します。また、Javaの使用に大きな問題はありません。スキルセットを傷つけることはありません。その下で何が起こるのかを学習せずに、Javaライブラリーだけに依存している場合があります。しかし、Javaはいかなる種類の脳損傷も引き起こしません(一部の開発者は実際にこれを真実だと信じています)。

さらに、開発者がCまたはC ++を攻撃しないのはなぜですか?または、少なくともC ++。命令型プログラミングのパラダイムは非常に似ています。そして、私はC ++でwebappを書くことを決して考えませんが、Javaを使うかもしれません。

カリキュラムの設定方法は次のとおりです。

  1. 入門コース:スキーム、Python、アセンブリ言語、C(3つすべて)
  2. アルゴリズムコース:C、Haskell、Python(3つすべて)
  3. オペレーティングシステムコース/ネットワーキングコース:C / C ++
  4. GUI開発:Java Swing、Win32上のC ++
  5. オブジェクト指向プログラミング:(これは注意が必要です。OOPコースはありません)。C ++、Java、C#
  6. 企業?開発:Java、C#、Python
  7. 言語設計、コンパイラ:Haskell、Scala、C、Assembly、Scheme、Common Lisp、Prolog。

カリキュラムにリストした言語はかなり一般的です。多くの学校が問題なく複数の言語を教えています。業界では、多くの異なるプログラミング言語を使用します。聞いたこともない言語を使用します。

学校でのJavaのトピックは、Javaから完全に保護したい場合や、Javaのみを教えたい場合を除き、問題ではありません。どちらの場合も、学校は不当です。

(申し訳ありませんが、Ruby言語)


(-1)「アセンブリ言語」は「入門コース」には複雑すぎます。私は「私たちは、後で、それを教えてくれます」を意味し、「それを教えていない」という意味ではありません
umlcat

1

申し訳ありませんが、退屈な答えのみ:

(1)もしかして:

「なぜ最初のプログラミング言語として大学でJavaを勉強するのですか?」

(2)または、どういう意味ですか:

「とにかく、Javaの前に他のプログラミング言語を学んだとしても、大学でJavaを勉強するのはなぜですか?」

あなたは本当に両方の質問を意味しているように聞こえます。

(1)の場合:

Java(または.NET C#とVisual Basic)を最初のプログラミング言語として教えるべきではないと思います。古くて時代遅れに聞こえても、Structured&Modular Pascalが最初になります。

多くの人々は、「誇大広告」または「トレンド」という理由だけで、オブジェクト指向プログラミングまたは関数型プログラミングを人々に教えるべきだと考えています。

Structured Pascalは、類似したものとしてではなく、「オブジェクト指向プログラミング」の小さなバージョンとして学びます。構造化プログラムは、単一の小さなオブジェクトと見なされます。

その後、関数型言語とObject Pascalを継続することをお勧めします。

その後、C、C ++、C#、VB.Net、Java。

JavaやC#が最初のプログラミング言語として好きではない主な理由は、「ポインター」、「オブジェクトへのポインター」、「オブジェクト」自体(「参照」)の概念が混在していることです。

学生は、これらの概念の違いと類似点に留意する必要があると思います。JavaでのStringsオブジェクトの比較は、その奇妙な好例です。

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

(2)の場合:

JavaまたはC#は、いくつかの更新された優れた機能を備えており、同時に実際に使用されるため、学校で教えるべきだと思います。


0

コンピューターサイエンスを学んでいるなら、大学のある時点でJavaを学ぶべきです。ビジネスの世界で人気があります。JavaとC#を学ぶ必要があります。Javaをプログラミング入門コースとして絶対に教えません。また、Javaはすべてのコースで使用される主要な言語であってはなりません。

私はこれ以上異議を唱えることはできません。Javaは私の大学の言語であり、私の学校のCS&Eプログラムに参加するために必要な言語でした。Javaは非常に簡単に教えることができます。なぜなら、「プログラマではない人」が学べる特定の概念に自分自身を制限できるからです。

また、Javaを入門的なプログラミングコースとして絶対に教えるかどうかもわかりません。あなたは基本的に絶対に教えてはいけないと言っ

単純な理由はすでに説明されています。Javaにはライセンス料はありません。基本的なテストエディターを使用して教えることができます。確かに間違った理由で使用されます。

私は以前の答えに反対します。Javaは学生にそれを「間抜け」にさせず、C ++の配列やリストのような現実的に単純な概念に問題があるとき、それは本当に示されます。


無知は「愚かな」ことと同じではないことを指摘します。Javaを「渡す」人は、教えられていないため、「単純な概念」を知らないかもしれません。それは彼らがそれを理解するのに時間がかかった場合、彼らはそれを取得しないという意味ではありません。
ジェッティ

0

CからJavaへの切り替えは、間違った時に起こりました。

2000年頃。私は大学の最後のCクラスにいました。

  • C ++の機能多すぎて、初心者を混乱させません。(そして、まだあります。そして、いくつか追加する予定です。)

  • .NETは十分に成熟しておらず、今日よりもさらに高価でした。

  • Objective Cは古く、Appleの使用法はレーダーの下を飛んでいました(iPhoneがありませんでした


当時の他の.NETの問題?ポータブルランタイムはありません- 使用可能なモノはありませんでした。
ZJR

テキストエディタの中立性はありません。(テキストエディタの戦争はいですが、本当です)そして、学生がボイラープレートに夢中になるデフォルトのIDEです。
ZJR

ところで、私は世界がObjective Cの道を選ぶことを望んでいたでしょう、Appleはその球場で唯一の子供ではなく、そのビジネスモデルでさえ少し狂気です。
-ZJR

0

これらの答えが実際に私の視点をカバーしていないので、ここに答えを追加する必要があります。

私は趣味のプログラマーです。「コンピューター」と「プログラミング」に関しては、私は時代を先取りしていました。私は学部卒業-学士-2007年、修士2年後-2009年に修了しました。アセンブリ、QuickBASIC、C、C ++、Java、PHP、Perl、Python、BASHスクリプト、Javascript、COBOLなどの多数の言語を扱ってきました。 。

プログラミングを学生に教えるために使用される言語である私見は、私たちが現在住んでいる時間の指標です。たとえば、1980年代には、アセンブリは低レベル言語でしたが、Cは高レベル言語と見なされていました。

1990年代に、C ++、Java、Perlおよびそのような言語は、主にCよりもレベルが高く、迅速な開発原則を具体化したため、重要性を獲得しました。そのため、CSの学生にアセンブリを教えるのをやめ、アルゴリズムを表現する方法としてCを教えました。Cが低レベルの言語であると見なされ、アルゴリズムの本質を効果的かつ「システム」のノウハウをあまり多く取り入れることができないと考えられている過去10年間でゆっくりと変化しました。これは実際には非常に重要です。CSカリキュラムの焦点は実用的というよりも「理論的」である必要があり、誰かがアルゴリズムを書きたいと思うたびに、メモリ割り当てとポインタ演算で行き詰まってしまうと、どこでも。

マスターズCSプログラムに参加している場合でも、学生がシステムレベルのアプリケーションをプログラムできるようにする必要のある特定の「システム」要件(米国では少なくともこれは米国の大学と大差ないはずです)を完了する必要があります。特定のケースでは、カーネルレベルのハッキングと同じくらい深く、実際に要件を満たします。だから、Cはあるもののません学校で教えられている事実上の言語で、SystemsやHigh Performance Computingまたはそのようなニッチに特化したいのであれば適切です。

また、別の点について言及したいのですが、Javaのような言語はそのような制約について少しリラックスしている一方で、Cは物事を正しくするために多くの規律を必要とします。これにより、RA / TAがGDBを起動して学生のプログラムをデバッグする必要なく、コースを実施しやすくなります。


0

それの大部分は、それが業界で使用されていることだと思います。

私のCSプログラムには、地元のハイテク企業や航空宇宙企業の上級スタッフで構成される産業諮問委員会があり、カリキュラムに多くの情報を提供していました。イントロCSクラスは、私が始めた年(1986年)にCを支持してPascalを落としました。同様に、地元の航空宇宙企業がDoD作業にAdaを使用しなければならなかったため、いくつかの高レベルのコースでAdaを教えるようにプッシュされました。

Javaは現在、特にAndroidデバイスが離陸しつつある今、かなり遍在しています。それは教訓的な観点からは嫌ですが、Cもそうでした。


0

彼らはより少ない学生がコースを失敗することを望んでいるので、それはそれ自体が失敗です、私見。少なくともここで大学の学位を真剣に受け止めている人がほとんどいない理由の一つかもしれません。

Javaは単純すぎる言語であり、PCに限られたリソースパラダイムがあることを教えません。同時に、「抽象化の別のレイヤーで解決できないものは何もない」という考え方を強制します。

はい、OOPの概念とおもちゃの問題には適していますが、間違った角度から問題にアプローチすることを教えています。ここにきちんとした構造を使用し、残りをねじ込みます。

しかし、学界はAI、OWL、その他の玩具技術について夢を見ていることで知られています。彼らがそのようなことを研究し続けている間に、誰かがそこに驚くべき何かを発明することもありますが、良い開発者になりたいのなら、それを独立して学ばなければなりません。

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