ページ内ジャンプ:

アレゲなニュースと雑談サイト

mhattaによる 2008年01月25日 21時30分の掲載
アメリカですらそうなのか部門より。

pinbou 曰く、

少々前の本家/.の記事より。ニューヨーク大学(NYU)の名誉教授で、GNU Ada95コンパイラ(GNAT)の開発者として知られるEdmond Schonberg氏とRobert B.K. Dewar氏が、NYUを始めとする最近のアメリカの大学におけるプログラミングの授業のあり方に苦言を呈して話題になっている。「計算機科学教育: 明日のソフトウェアエンジニアはどこに?」と題した彼らの論説では、最近の大学の授業ではCやC++、Lisp、(そしてもちろん)Adaと言った本格的な言語、数学やアルゴリズム、ハードウェアとの密接な関わり方といった難解なテーマを教えず、Javaのような簡単で人気が高く、近年減少気味の受講者数を増やせそうなお手軽な言語とカリキュラムしか教えなくなっていると主張。このままでは海外の安価なアウトソース先にたやすく置き換えられてしまう程度の能力しかない「プロフェッショナル」しか育てられなくなるだろう、と警鐘を鳴らしている。

この問題提起は活発な議論を呼び、最近になって本家/.では2つめのストーリーが立ったDatamationの記事によれば、Dewar教授は、今や計算機科学を専攻して卒業しても「社会学や哲学の学位と同じくらい将来が不安視されるようになってきて」おり、そのため専攻者が減っているが、だからといって受講者数の減少を補うためにカリキュラムを安易に易化するのは危険だと指摘する。氏の元には「よくぞ言ってくれた」という賛同者からのメールが多く届いているそうだ。

NYUはニューヨーク州立大学(SUNY)ではなくニューヨーク大学でした。失礼しました。(by mhatta Fri, 25 Jan 2008 23:52:46 +0900)

関連ストーリー

この議論は賞味期限が過ぎたので、保存されている。 新たにコメントを書くことはできない。
表示オプション しきい値:
  • Javaって (スコア:5, すばらしい洞察)

    Anonymous Coward : 2008年01月25日 22時03分 (#1286669)
    おいおい
    Javaっていつからお手軽言語になったんだ?
    • Re:Javaって (スコア:5, おもしろおかしい)

      Anonymous Coward : 2008年01月25日 22時29分 (#1286689)
      ほんと、Cなら

      main(){write(1,"Hello world.\n",13);}

      ですむところ、Javaだと

      package jp.slashdot.coward.anonymous

      import java.io.*;

      class Hello{
        public static void main(String argv[]){
          java.io.Writer stdout
            = new java.io.BufferedWriter(new java.io.OutputStreamWriter(System.out));
          try{
            stdout.write("Hello World.\n");
            stdout.flush();
          }catch(java.io.IOException ioe){
            ioe.printStackTrace();
            System.exit(1);
          }
          System.exit(0);
        }
      }

      ってうっかり書いてしまったり、ちっとも手軽じゃないですよね :-D

      # でもJavaで変数1文字とかにするとまわりの白い目が
    • Re:Javaって (スコア:5, おもしろおかしい)

      okky (2487) : 2008年01月26日 0時09分 (#1286780) ホームページ 日記

      Javaっていつからお手軽言語になったんだ?


      アセンブラが持っている弱点を、きちんと全部持ち合わせてこそ、初めて一人前の言語です。

      ちょっとでも学生が気を抜くとすぐメモリリークが発生したり、バッファーオーバーフローを起こしたり、スタックを踏み抜いたり…そういう緊張感のない言語なんて全部お手軽言語です。

      バグの 1/2 を占めるこれらの障害が簡単に起きない言語を、学生の授業や演習で教えるなど言語道断!! アセンブラを教わればいいんだ、アセンブラを!!!

      高級言語なんざ、最終コードがどう実装されるのか予測できれば、簡単に理解できるわっ。

      -----

      はい、そこのあなたー。Prolog を引っ張り出そうとするのはやめてねー。
      はい、そっちのあなたー。Lisp を棚から下ろさないー。
      あー、君々。バグっていて例外処理が出てくるのに特権命令が含まれている Itanium2 のコードは、学生実験で使うには「熱過ぎる」からねー。
      こらー、そのデータフローマシンは高いから手を出しちゃだめだと何度言ったら…
      --
      fjの教祖様
      • 「お手軽」ということが、教育に不向きであるという性質と対応していないと思う。
        機械語/アセンブリ言語、C、Lisp はどれも教育に向いていて、Java はそうではない、
        というのはおおむねコンセンサスになっているよね?
        ならば、Java の批判されるべき点は「お手軽」なことじゃなくて、テニスの
        デカラケ(?) に相当するような、上手下手の差が現れにくいことではないか。
        聞くところでは、テニスラケットもゴルフクラブでも素人向けにはスイートスポット
        の大きいモデルが好まれていて、当りどころが悪くてもそこそこ打てるという性質が
        受けているらしい。しかし上達するためには、狭いスイートスポットにきちんと当てる、
        という感覚を掴む必要があるでしょ?
        似たような話で、松井秀喜は星稜高校にいるとき意識して木製バットを使っていたという話もある。
        • Anonymous Coward : 2008年01月26日 18時38分 (#1287104)
          >しかし上達するためには、狭いスイートスポットにきちんと当てる、という感覚を掴む必要があるでしょ?

          ●状況のほうが変わってしまうこともある。
          例えばテニスは、デカラケがむしろ(プロにも)普及したことで、
          より簡単に強い球を打ったり打ち返したり出来るのが「当然」になってしまい、
          その結果みんなのプレイスタイル自体が変化してしまったらしい。ここ数十年で。

          もちろん、スイートスポットに当てれる選手のほうが強いのは昔も今も変わらないんだが、
          「スイートスポット」の定義自体が変化すれば、色々なことが変わってきてしまうのよ。

          プロ野球の金属バット禁止ように「デカラケ禁止」というルールになってれば
          話は違ってきたんだろうけど、今実際にデカラケは使われているからね。

          #おかげで男子トッププロのテニスがあまりにも秒殺になっちまった…と。
          #球が速くなる一方で、人間の目と足がそれを追うのは限界があるから
          #ゲームバランスが変化しちまうのよ。

          ●べつにJavaでだって上手下手の差は出ますよ。
          ただ、ありがちな(クソ)企業においては、
          「ヘタなほうのコードを書け」
          と言われる点が問題です。

          本当に不味いのは社員にそういうお手軽(?)な指示を出す企業のほうだと思う。
      • 3個のコメント が現在のしきい値以下です。
    • 2個のコメント が現在のしきい値以下です。
  • Tatenon (20311) : 2008年01月25日 22時05分 (#1286672) 日記
    ハード寄りの言語も、ハードを意識しない言語もそれぞれ一長一短があることは
    もう随分前から語りつくされてることじゃないのかな?

    向き不向きもあるから、自分の目指す道に応じた言語を習得すれば良いと思うけど。

    逆にどちらにしても、習得が中途半端なレベルではそもそも使い物にならないわけだし。
    母国語を喋るのと同じ感覚でコードが書けるようなレベルまで教育しないと意味が無い。
    それができないなら言語に関係なくカリキュラムに問題があるだろうとは思う。

    JAVAが引き合いに出されてるが、本当の意味で『JAVAの限界を感じる』程JAVAを使いきれる人間を育ててるかってことが
    問われるべきではなかろうか。そこまで極めていればそうそう他の人間に引けをとることはなかろうし、
    自分が本当に必要とする言語も見えてくるはずだから。

    # BASICでなんでもできると思ってた時代が私にもありました。
    # 86ASM/C/C++/JAVAを業務で使ってるけど、まだまだ全然使いきれていない。
    # まだまだ功夫が足りんということか・・・
    • saitoh (10803) : 2008年01月25日 22時38分 (#1286695)
      たとえば、自動車教習所のMT免許コースの教習車が、楽ちんだという理由でオートマ車でいいとおもいますか?

      すくなくとも、JAVAでは領域計算量のセンスを磨かせる演習は困難じゃないですか。

      あと、組み込みCPUのブートとか、データセグメントの初期データをROMからRAMに転送するとかいった当たりのセンスの涵養がサッパリ。 某家電メーカーの知人は、そのあたりができる技術者は皆40代以上だと嘆いていました。

      教育に使う言語は、将来その言語でプログラミングして喰ってゆくかどうかで選ぶものではありません。 プログラミングの本質を身につけるのが目的。言語は、仕事で使えと言われた言語をその時点で勉強して使えばいいのだし。 将来お手軽言語さえ知ってれば困らない職場で定年まで居られるか、抽象度の低い言語のセンスがないと辛い職に行くか、どちらの可能性もある学生さんを教育するんですから、目先の楽ちんさで将来を限定してしまうのはよくありません。

      • Anonymous Coward : 2008年01月25日 23時03分 (#1286721)

        組み込みCPUのブートとか、データセグメントの初期データをROMからRAMに転送するとかいった当たりのセンスの涵養

        プログラミングの本質
        ではないと思います。
      • まぁ確かに、個人的にはハードの動作を知っておいたほうがいいとは思いますけどね。
        だったら別にJAVAでエミュレーター書かしてもいいわけで。(極論すぎますけど)

        元コメでも言ってますが、中途半端に色々使えるくらいなら、いっそ何でもJAVAで書けたほうがいいと。
        JAVAでは実現が難しいことがわかってから、CなりLISPなり他の言語をやっても全然遅くはないし、
        その方が本質がわかるはずです。

        そもそも学生の演習レベルや、アルゴリズムの習得といったレベルで、言語による致命的な差異があるとは思えません。
        "Hello World"に毛が生えたようなコードが、CとJAVAでどれほど違うというのか。
        もちろん向き不向きがあるので、アルゴリズムによってはJAVAでは複雑怪奇なコードになるのにLISPだと数行で書けるといった違いはあるでしょうけど。
        それでも一度JAVAで書いて苦労する方が、むしろ勉強になると思います。

        『目的次第では、JAVAは決して楽な言語ではない。万能な言語ではない』
        コレが理解できて、やっとスタートラインだと私は思います。ハンドル握らせるのはそこからです。

        元の話がJAVAを引き合いに出してるのでJAVAと書いてますけど、これをCに変えてもLISPに変えてもアセンブラやCOBOLに変えても
        私のスタンスは変わりません。だって、同じことですから。だから「言語は関係ない」と申し上げております。

        以下はちょっと話がそれますが。

        実際使ってる人なら痛感してると思いますが、JAVAの便利さは時に足枷にすらなります。
        これはC等でも同じことで、それゆえにインラインアセンブラみたいな技術がありました。
        JAVAはVMを使ってコンパイラとインタプリタの両方の利点を持つ中間言語コンパイラですが、
        VMとコンパイラの作り方次第でネイティブコンパイルができないわけではありませんし、そういうソリューションも存在します。
        これはまぁ極論ですけどね。最終的に動いてるのは何で書こうがマシン語なんです。

        # そもそも学生が集まらないでは意味が無いし。
        # 最終的に必要な知識が備わっていないというなら、それはやはり教え方の問題でありカリキュラムの問題ではないでしょうか?
        • Anonymous Coward : 2008年01月26日 8時25分 (#1286925)

          そもそも学生の演習レベルや、アルゴリズムの習得といったレベルで、言語による致命的な差異があるとは思えません。 "Hello World"に毛が生えたようなコードが、CとJAVAでどれほど違うというのか。 もちろん向き不向きがあるので、アルゴリズムによってはJAVAでは複雑怪奇なコードになるのにLISPだと数行で書けるといった違いはあるでしょうけど。 それでも一度JAVAで書いて苦労する方が、むしろ勉強になると思います。

          言語による「致命的な差異」など存在しないという点については同意しますが、Javaしか知らないと自らの記述したJavaのコードが「複雑怪奇なものになっている」ということなど、なかなか自分で気づくことができません(「そんなもんだ」と自分自身で納得してしまうから)。 しかし他の言語を知っていると、他言語での実装と簡単に比較できる、つまり「自らのやっていることを振り返りやすい」というメリットが出てくるわけです(実際に実感しています)。

          「言語に精通する」という目標を「山の頂上を目指す」という目標になぞらえてみると、Tatenon氏の「まずJavaだけに専念する」という主張も「他の言語とともに言語を学ぶ」という主張も「単なる別ルート」であり、どちらも間違ってはいないと思います。
          しかし、Tatenon氏のルートはかなり険しいのではないかと思います(完全無欠のカリキュラムがあり、神の如く完璧な先生の元で教われば最短距離で頭頂可能だと思いますが、現実問題としてあり得ない)。

          非線形な世界では、こまめな進路補正が欠かせないのです。
        • juli (26219) : 2008年01月26日 16時24分 (#1287062)
          この意見を否定する程のつもりはないのですが、私は少し異なる意見を持っています。
          何れの言語も万能ではなく、得手、不得手があるのは同意ですし、そういう意味で、元発言で言われていることの大半には同意なのです。
          ただ、その結果として (教育するに当たって)「言語は関係ない」と括られてしまうところには異論がありまして、結果として「どの言語でも良い」と結論付けることはできないと私は思っています。

          どの言語も万能でなく、適用領域が異なってくるという面では同意して頂けると思う (コメントを辿ると同様のことを仰っていると思います) のですが、その上で、私が強く感じているのは、それぞれの言語を習熟する過程で身に付くプログラミングのアプローチが異なるのではないか、という点です。

          これまで様々な言語を使って (本当の意味で『限界を感じる』程、使い熟すまでには至っていませんが) 来た中で感じていることや、他の様々な言語を習熟されている方々からの話を聞いていても、やはりそれぞれの言語が持つ特性や文化、言語設計の方針などによって、問題領域の捉え方や解法へのアプローチが異なってくる様に感じられるのです。

          非常に本質的で抽象度の高い問題意識に関して言えば、「言語なんて皆一緒だ」と括ることができると思うのですが、「教育」という観点に立ったとき、教育対象となる人々に学ばせて実効性のある事柄を考えると、どの言語でも良いとは言えないかなあ、というところでしょうか。
          教育の目的がある程度限定的な問題領域に対するプログラミング能力ということになれば、その目的に即した言語を習熟させることになるでしょうが。
          また、同じ理由から、何れか一つの言語ではなく、幾つかの言語について学ぶことにも意義があると感じています。これについては、初学者がある程度の素養を身に付けるまでは対象を絞った方が良いという考え方もあるとは思いますが。

          どうも上手く説明できなくてすみません。
          個人的な意見としては、この様な観点で、プログラミング初学者に最初に学んで貰いたいのは Lisp/Scheme かなあと愚考する次第です。他の方々からは異論もあるでしょうが。
      • 2個のコメント が現在のしきい値以下です。
    • cybernetwalker (32994) : 2008年01月26日 9時18分 (#1286936)
      俺も言語に固執する奴はわけわからん。
      高水準言語がダメっていってる奴は、「自分の問題を解決する」ためにダメって
      いうところを自分の世界がすべてだと思い込んでいないか?
      エクセルのVBAでも基本的なロジックを教えるためなら、一向にかまわんと思う。
      それとも「コンピュータを扱う人は、すべからくコンピュータサイエンスを学ぶ
      べきだ」って今の何億台もパソコンが出回っている世界に向かって叫ぶんです
      かね。

      お手軽プログラミング言語反対派は、自分がタラタラやってきた茨の道の横に
      出来た高速道路をぶっとばす連中に腹がたつんでしょうね。一人で死ぬまで
      匍匐前進してろ、と思う。

      Javaの深奥を知ることはいいことだ。だが、まったく金にならん。それは事実。
      みんなのべき論が世の中ではまったく評価されない、ということだ。
      なぜか?よく考えたほうがいいと思う。
    • 1個のコメント が現在のしきい値以下です。
  • epipolar-line (33670) : 2008年01月26日 10時11分 (#1286951)
    普通に疑問に感じるのだが,大学って,いつから「プログラムを教える専門学校(+α)」になってしまったんだろうかね?

    オレの知り合い(米国人)の例だが,ちゃんと世界最高峰レベルの某大学(@米国)の計算機科学で学位を取った優秀な研究者なのに,(ホントかどうかは知らんが,本人曰く)CもC++もJavaもその他LL系言語も含めて一般的なプログラムの類は一切書けないらしい.彼はどうやって計算機を使っているかというと,MatLabで研究をしているのだが,彼自身はMatLabに実装されている各アルゴリズムの意味するところ(≠実装)は完全に理解して使っているから,計算機科学としてはそれで何も問題無いと思う.大学で扱う「計算機科学」ってのは,本来はこういうもんだと思うんだよね.

    もちろん上記の話はあまりにも特殊な例で,通常はメジャーな環境でのプログラムが書けないのは困るだろうし,本質的な部分を理解させた上で便利な環境を教えるのは「車輪の再発明」的な問題を避けるためにもアリだと思う.しかし,先の東大の話題 [slashdot.jp]における議論を見ていても感じるのが,大学に対して「IT業界で使えるプログラミングの教育」みたいなことを期待してる勘違い社会人も多いし,そういう勘違い企業に就職させるために手軽な開発環境のプログラミングだけを教えるようになるのは言語道断だと思う.で,そういう意味でバランスが取れていたのがC言語(百歩譲ってC++)だったんじゃないのかなーと思う今日この頃ですな.
  • 下まで読んで (スコア:4, おもしろおかしい)

    elderwand (34630) : 2008年01月25日 22時10分 (#1286675) 日記
    U. S. AIR FORCE と書いてある(ガンダムみたいな)ロゴを見つけた。お、URL を見たら、af.mil じゃないか。こんなサイトを作ってるんだ米空軍は。

    って、完全オフトピですね。すみません。
  • 車輪の再発明をさせろ (スコア:4, すばらしい洞察)

    SNT (23129) : 2008年01月25日 22時13分 (#1286677)
    JAVAだけで教育すると、標準ライブラリが強力すぎて何でもできてしまう。
    ライブラリが無い環境でどうしていいか分からなくなる。
    コードは書けるけど、アルゴリズムが無いと何もできない子になる。
    一度Cとかのなにもない環境でやらせないとダメ。
    無いものは作るというハングリー精神が無くなる。

    #最近はPythonでしか書いてないなぁ…
    #10行でWebサーバが書けるのには感動。
    --
    賛同はACで。反論はIDで。カルマボーナスはチキン。
    • Anonymous Coward : 2008年01月25日 22時41分 (#1286699)
      うーん、気持ちはわかるけど反対。

      例えば、便利なアルゴリズムや制御構造が揃ってるlispを使ってアルゴリズムに弱くなるかっていうとそんなことないだろう。

      Javaの問題は、便利な道具が揃ってることじゃなくて簡単にソースが見れないのと、ライブラリの利用者と製作者を分けるような姿勢が問題なんじゃないかって気がする。

      似たようなので、Windowsの世界もそうかな。OSのことを語られるのにあーなんじゃないかこーなんじゃないかって内部構造を想像して終わらない議論になってて、まるで占い師か経済学者の議論を見ているような気分になることがある。
    • kida (35606) : 2008年01月26日 16時15分 (#1287058)
      車輪の再発明をさせろ、ってのわかるなあ。

      学生の雇用面接(@US)をすると、いろいろなアルゴリズムや技術の名前は知っているのだけれど、それをブラックボックスとしてしか理解していない人が驚くほどいるんですよね。ちょっと話すと色々知っているし、レジュメを見てもいろんなものを作っているように見える。でもちょっと掘り下げるとすぐに馬脚を表して、がっかり。そういう人は確かに典型的に Java, そして perl や Python 止まりで C はできるけれどそれほど得意じゃない。そういう感じ。最近立て続けに、The Perils of JavaSchools [joelonsoftware.com] とNYUの先生の記事を読んで、なるほどそういう背景があったのか、ポンっと膝を叩く気分でした。

      こっちの期待しているのは車の運転の仕方を知っている人ではなくて、車を作れる人なんだけどな。
      • いろいろなアルゴリズムや技術の名前は知っているのだけれど、それをブラックボックスとしてしか理解していない人が驚くほどいるんですよね。


        私が面接をした範囲では、quick sort を O( N * log N ) のアルゴリズムだと思い込んでいる、と言うあたりが馬脚の基本ですね。
        # 逆にそこをつついてくる面接を受けた事もあります。
        # 多分、あそこの面接官は本当に技術力があったんだろうな。
        --
        fjの教祖様
        • saitoh (10803) : 2008年01月27日 12時11分 (#1287292)
          教科書どおりのquicksortは逆順データを食わせるだけでO(n^2)になりますしね。 O(n^2)になりにくいようにピボット選択その他、実際のquicksortの工夫はあるわけですが。

          クイックソートは『平均』nlognだと教えてはいるのですが、細かい背景をすっ飛ばしてnlognだけ暗記するアンポンタンがおおくて、すみません。

          P.S。「quicksortは最悪時O(n^2)」よりも、「quicksortは最良時O(nlogn)」のほうが結構頭からすっかり抜けている落とし穴かも。ちゃんとクイックソートを理解していれば、その場で考えて「最良時もnlognだ」と分かるんですが。

        • okky (2487) : 2008年01月27日 3時59分 (#1287229) ホームページ 日記

          最悪計算量が O(n^2) とかいう話?
          アルゴリズムの話なのだから、当然これですね。

          Quick Sort の最良値が O( N * log N ) になるのは、理解できると思う。
          で、最悪値が O( N^2 ) になるのも(書き込んでいるぐらいだから)理解できると思う。
          と言う事は、このアルゴリズムはこの2つの間のどこかの計算量になり、どうなるかは「与えられたデータに強く依存する」と言う事だ。

          Quick Sort は決して O( N * log N ) のアルゴリズムではない。単に「係数」部が非常に軽いので、O( N * log N )である事が保証されている他のアルゴリズムを、平均値では追い抜いているのに過ぎない。最悪値比較をすれば、O( N * log N )が保証されている merge sort に負ける。

          それとも,ピボット選択がどうとか,分割後の要素数が閾値以下になったらとか実装に関わる話?
          どの方法も(ランダムアルゴリズムを利用する方法でさえも)平均値を良くする以上の効果は無い。つまり、ここに述べられている『実装』の話を全部ぶち込んでも、Quick Sort の数学的な側面は変わらない。

          はたまた,並列計算で O(log n) に近づけられるとかそういうこと?
          並列処理をしても変化するのは結果が出るまでの総時間だけで、計算量は変わりません。もっと言うと、並列処理をするために「データを分配する」段階が O( N ) になるので O( log N )とは、とても呼べません。
          # で、分配しない、共有メモリ型にすると、メモリ参照が衝突する。その頻度がO(N)が
          # 最悪値保証されてしまう。
          # 衝突頻度を下げるために Cache を入れると「Cache 読み込みの段階で」O(N)が保証される。
          # と言うわけで、O(N)を切るソート方式はありえないのだよ。
          ## 厳密な証明は面倒なのでやらないが。

          実装レベルでの改良方法を一杯言ってくる人はいます。いろいろ独創的なものを持ってくる人も含めて(最初に一発 table sort を入れる、ってのは面白かった)。
          その結果「係数がどんなに小さくなっても、計算量評価の際には無視する」という大前提を理解しているかどうかが判る。

          # 「係数が小さいから、この項は次数が大きいけど無視しよう」という判断は、
          # ・N の範囲が本当に制約されている事
          # ・インターフェース的にきれいに分かれていて、
          # Nが万が一でかくなったときにも対処できる事
          # という2つの前提が成立しない限り、やってはいけない。で、このセンスは教えられる。
          # もし、その前の段階の「計算量」の話が判っているのならば。
          --
          fjの教祖様
        • okky (2487) : 2008年01月28日 4時13分 (#1287452) ホームページ 日記

          もちろん多くのアルゴリズムを知っているべきであるというのは強く共感するし、
          実際に優秀なプログラマーの多くは比較的多くのアルゴリズムを知っていると
          思うけれども、暗記しているアルゴリズムの個数とプログラマーの能力とは比例
          するわけではないでしょう。

          あー、そういうことをいう「試験官」にプログラマーとして有能な奴はいない。テストとは「コスト」と「エラー率」との戦いだ、という事を念頭においていない証拠であり、それ自体プログラマーとして無能な証拠だから。

          もちろん、個数と単純に比例はしませんがソートというトピックに対して、1つしか方法が出てこない人は確実に無能です。

          # いや、名前は出てこなくてもいいんですよ。「ほら、こういう風にするやつ」でも。

          大事なのは、「比較する能力がある」事。そのために「2つ以上述べられる」事。そしてそれぞれの pros/cons が比較できる事です。

          ただ、大抵の場合ちゃんと2つ以上述べられる人にソートというテーマを与えると、quick sort と merge sort が出てきて、必要要件に応じてどちらを使うかをパシッと述べる事ができる。これができない人は quick sort しか出てこない。そしてほぼ確実に quick sort を O( N * log N )だと思い込んでいる。

          # で、ここでこのネタをばらしていると言う事は、実はもうそろそろ次のネタが
          # 見つかったという事なんで、ここを丸暗記したってだめだよ (^o^)。
          --
          fjの教祖様
        • 2個のコメント が現在のしきい値以下です。
    • elderwand (34630) : 2008年01月25日 22時45分 (#1286704) 日記
      一方、苦労してC言語入門をやっと通過した学生は、#include <stdio.h> や #include <math.h> は知ってるが、#include <string.h> になると何も知らずに、しこしこ標準ライブラリを再発明しようとしたりする。

      ので、お手軽言語だって教えておく意味は十分あると思うよ。
      • midcpp (21702) : 2008年01月25日 23時16分 (#1286735)
        > お手軽言語だって教えておく意味は十分あると思うよ。

        ここで得た経験を足がかりにして,応用を利かせられれば良いと思いますが.
        特に最近の大学のプログラミング実習は,実用性を中心に考えるのではなくて
        取っかかりを掴ませるところに主眼を置いている気がします.

        とりあえず誰でも出来るような簡単なところからスタートして動かしてみて,
        それで面白がってやる気を起こした学生は,面白がってもっと上を目指すでしょうし,
        つまらんと思った学生は逃げていきます.
      • saitoh (10803) : 2008年01月26日 0時15分 (#1286786)
        お手軽言語を教えてはいけないのではなく、お手軽言語「だけ」を教えて卒業させちゃダメってことでは?
    • 1個のコメント が現在のしきい値以下です。
  • お前が言うな! (スコア:4, すばらしい洞察)

    gonta (11642) : 2008年01月26日 18時01分 (#1287092) 日記
    「車輪の再発明(に相当すること)はするな!」

    といっていいのは、車輪を発明できる人だけです、と誰か声高に言ってくれ。

    昔Cで文字列操作をゴリゴリやっていた。Javaになって、より手軽にできるようになった。しかし、そのゴリゴリの時に得たノウハウは、文字列操作でなくてもいろいろ役に立つことが多い。だから、文字列操作をしないこととできないことは違うんだが・・・誰かわかって・・・
    --
    -- gonta --
    "May Macintosh be with you"
  • 大学名が違う (スコア:3, 参考になる)

    odz (33623) : 2008年01月25日 22時03分 (#1286668)
    ありがちですが、ニューヨーク大学(NYU)とニューヨーク州立大学(SUNY)は別の大学です。
    他にもニューヨーク市立大学(CUNY)なんてのもありますが。
  • saitoh (10803) : 2008年01月26日 9時38分 (#1286942)
    よく読むと

    ・・といった本格的な言語、数学やアルゴリズム、ハードウェアとの密接な関わり方といった難解なテーマを教えず、・・・・・・・お手軽な言語とカリキュラムしか教えなくなっていると主張。
    ですから、プログラミング言語は一例でプログラミング以外のカリキュラムも軒並み「楽」なほうに流れてるということへの批判ですね。

    ちょっとぐぐってみたら、日本の情報○○学科で「データ構造とアルゴリズム」が選択科目になってる学科って存在しますね。

  • んなこと (スコア:2, 興味深い)

    Anonymous Coward : 2008年01月25日 21時46分 (#1286656)
    ジョエル・スポルスキとかポール・グレアムとかが何年も前から言ってることだよね。
    • オフトピ (スコア:5, おもしろおかしい)

      Anonymous Coward : 2008年01月25日 22時14分 (#1286678)
      よくあるんだよね、俺が昔からさんざん言ってきたのに適当に流されて、
      ちょっとイケメンっぽい一般ウケする奴が全く同じこと言ったとたん、みんな真面目に聞き入れるの。
    • Re:んなこと (スコア:3, 興味深い)

      Vorspiel (2391) : 2008年01月25日 22時50分 (#1286707) ホームページ
      さらにさかのぼればDijkstra先生のお言葉に。

      It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

    • Re:んなこと (スコア:3, 参考になる)

      Anonymous Coward : 2008年01月27日 16時49分 (#1287349)
      Joelの「採用面接ゲリラガイド」 [joelonsoftware.com]の以下のくだりが、この手の論争における両側の考え方を端的に表していますね。

      近頃では、あなたが面接する多くのプログラマは、再帰や、ポインタや、データ構造でさえ、つまらない実装上の詳細であり、今日の楽しいプログラミング言語が抽象化し去るべきものだと考えている。そして「あなたが最後にソーティングアルゴリズムを書いたのはいつのことですか?」と言ってせせら笑うのだ。

      しかし私はあまり気にはしていない。私はERの医者が解剖学を理解していることを望んでいる。たとえ彼女がしなければならないのが、コンピュータ制御の心臓細動除去器の接点を私の胸につけて、大きな赤いボタンを押すことだけであったとしてもだ。そして私はプログラマにはCPUレベルまで理解していることを望んでいる。たとえRuby on Railsがあなたの心を読んで完全なWeb 2.0ソーシャル・コラボレーティブ・ネットワーク・サイトをマウスクリック3回で作ってくれるのだとしてもだ。
    • Re:んなこと (スコア:2, 参考になる)

      Anonymous Coward : 2008年01月25日 22時27分 (#1286687)
      一応リンク

      Javaスクールの危険 [joelonsoftware.com]
      Paul Grahamは、普通のやつらの上を行け [practical-scheme.net]でいいのかな?
    • 1個のコメント が現在のしきい値以下です。
  • 卒業生です (スコア:2, 興味深い)

    Anonymous Coward : 2008年01月25日 22時08分 (#1286674)
    この二人、知ってますが、特にDewarというぶっといおっさんは実に饒舌で面白い人だった。Schonbergの方は地味な感じでちょっと怖そうだった。

    他の人も書いてますが、NYUは私立のNew York Universityで、マンハッタンのグリニッジビレッジにあります。ニューヨーク州立大学はState Universtiy of New York, 通称SUNYで、バッファローとかストーニーブルックとかの田舎にあります。
  • Sukoya (33993) : 2008年01月26日 2時05分 (#1286855) 日記
    それぞれに一長一短があり、優れた点も劣る点もあることはわかった

    だから、そんな事はどうでもいいから、
    そのスペシャルなスキルで、デスマーチの起こらないミドルウェアを開発してくださいよぉぉぉ!
  • 何となく (スコア:2, 興味深い)

    nsmrtks (20015) : 2008年01月26日 2時35分 (#1286865)
    違う気もするけどこれを思い出した。

    Master Foo and the Ten Thousand Lines [faqs.org]
    1行のシェルスクリプトの方が 10000行の C よりも Unix らしさがある。
    (邦訳は「The Art of UNIX Programming」に。まだ読んでない...)

    お手軽プログラミング言語って、awk や sed や find も含んでいるのかねえ。
  • $ir (18994) : 2008年01月25日 21時53分 (#1286661)
    分野として複雑化してきているんだから、 カリキュラム簡単にしたら余計にダメでしょ、と。
  • Ada? (スコア:1, おもしろおかしい)

    Anonymous Coward : 2008年01月25日 22時15分 (#1286679)
    Adaが難しすぎて嫌った人たちがUnixとCを作ったんだけどな
  • kyazuo (3932) : 2008年01月26日 1時37分 (#1286841)
    9倍するときに、3回ローテートしてから足せばいいのを知ったときは感動しましたね。
    ある程度不自由なマシンのほうが、苦労の成果が目に見え易くて幸せな気がします。

    ...もう20年前かあ
  • naruaki (2658) : 2008年01月26日 22時11分 (#1287150) 日記
    そもそも大学って学問する所で学習/勉強する所じゃないだろ。
    学校で教わってません!なんて言えるのは、高校までだよね。

    TK-80世代の後のマイコン少年世代のとりかかりは BASIC だった ろうが、彼らはアセンブラの扉を叩いて別世界へ足を進めた。
    何故だ? --- 速いプログラムが出来なかったからだけど。
    講義の内容だけが総てと立ち止まってしまう人達ばかりではないと思うんだけどなぁ。

  • Anonymous Coward : 2008年01月26日 23時52分 (#1287177)
    本物のプログラマはパスカルを使わない [wikipedia.org]
    と何が違うんだぜ。
  • paprika (5024) : 2008年01月27日 1時11分 (#1287202) 日記
    計算機科学と似ていますが、計算幾何学っていう分野が、パズルみたいで面白いです。

    ↓この二冊が私のお気に入りです。

    http://www.amazon.co.jp/gp/product/476490277X [amazon.co.jp]
    http://www.amazon.co.jp/gp/product/4764903091 [amazon.co.jp]

    テーマの複雑さの割には、図も多く、文体も易しい気がします。

    --
    あなたの予想に反して、このページが見えているでしょうか?
  • >技術者ってのは、薄く広く、でそのうち好きな(使える)ひとつを極めれば良いんで
    >極めたものってのは、どこでも使えるんですな
    >その代わり、薄く広くってのをやらないと、どこで使えるのかがわからない
    このあたりを考えてくれたら幸いです
  • 原典 [af.mil]を読むと、formal methods(形式手法)や浮動小数点演算などの研鑽がおろそかになっている、ミッションクリティカルなシステムを開発する企業が求人に苦労する…それらの元凶は最初に学ぶプログラミング言語がJavaであることだ、何故ならリッチすぎるフレームワークはそれがどんなしくみで実行に至るのかが見えないから…みたいな話のように見えますね。そうだとするとこれは、初期教育における「お手軽プログラミング」批判というよりも、富豪的プログラミング [pitecan.com]批判、といった方が意を汲んでいるような気がします。まぁ「お手軽」という形容詞が「手続き的でない」という意味であれば、合っているのかもしれませんが。

    そうだとしても、この見方については同意しがたいものがあります。確かに高度な安全性が要求される開発や、実行時間やメモリリソースに厳格な制限を要求される開発のニーズは現在でも確実に存在しますが、それが学生の卒業後からリタイアまでの間の重要なスキルになるという確証はありません。その問題は、実時間要求を満たす機能がついたJavaネイティブコンパイラの研究が進んだら解決してしまう問題かもしれない。本当に必要なら教えるべきだ、としても、なんでJavaをやっていることがその障害になるのかわからない。形式検証をJavaでトレーニングしてはいけないんでしょうか? 富豪的プログラミングで甘やかしたらその後の気の利かない開発環境や難解な技術分野での苦闘から逃げる子に育つに違いない、とかいう精神論と区別つかない。だとしたら企業にとってそれは技術者の報酬をはずめば解決する問題かもしれないし、高い報酬を払いたくないのならインドや中国に安くアウトソースすればそれが適切な役割分担になるはずですから問題ありませんよね?

    「ホンモノのプログラマはどんな言語でも書けるのだ」って、それは単なる循環論法じゃないんでしょうか。Cはソフトとハードを完璧にコントロールする低レベル言語だ、と思っているのは、ハードの見えないサポートに気づいてないから言える台詞かもしれないよ。システムを隅々まで知っていてすべての手続きをコードに書ける人がいなければならないとしたら、それは単に役割分担に失敗しているだけとも考えられる。そんな万能プログラマになるためにJavaの楽しいプログラミングは一切禁止だ、という命令には、仮に私が学生時代に戻ったとしても従えそうにありません。

  • 最近はJavaを使うやつは増えたけど、Javaを作るやつ(作れる力があるヤツ)は減った、ということではないかと。

    ショーバイとしても、前者のほうが儲かるから、後者(教えるほうも教えられるほうも)が減っただけの話。

  • 思うに、ものを作る/理解する本当の楽しさが、スクリプト言語だとかlight weight languageでCGIしか書けないいわゆる「IT系」エンジニアに味わえるのだろうか?

    車がなぜ走るのか、個々のコンポーネントの動きや役割を汁ことが車を作ることと重要なのと同じで、パソコンがそれこそ何億台と出回るこの時代でさえ、プログラミング言語だけでなく計算機の構造について詳細に理解してない人には、やっぱりコンピュータに関わってほしくないし、自分もそうならないように努力している。
  • SorabeAlto (35110) : 2008年01月28日 20時01分 (#1287697)
    お手軽プログラミング言語がソフトウェア開発の裾野を広げるなら、良いと思う。
    後は、「そこは裾野でしかないんだ、それだけじゃまともな仕事は務まらないんだ」と
    教えていけば良いかと。

    プログラム言語の文法を得意げに語っている人を見ると、
    二次方程式の一般解を丸暗記して問題解いて得意げになっている中学生を連想する。
    はい。両方とも過去の僕です。orz
    --
    ----------宙辺 或人
  • しかし、それはまるでどこかの国の大学のようでもあるな。
  • Anonymous Coward : 2008年01月26日 0時11分 (#1286783)
    ># 中小企業にはできない人間を養う余裕はないので

    でも中小企業は
    (何か尖がってる一部の企業を除けば)
    できない人間しか来ないのですがorz

    10年見てて、湯水のように沢山の若者が入っては出ていったが、面白いといえる奴は3人くらいしか居なかったのでAC。

    ああそうか。養ってるのではないのだな。
    ブックオフのようにロクに評価せず束で購入し、
    駄目ならぽんぽん捨てていく。
    どちらかというと(社長は)回転率を上げたがっているように見える。
    職場に「回転率」ってのもどうかと思うんだが、実際そう見えるorz

    まあありがちな偽装(?)請負業者だから、こんなもんなんだろうな。
  • saitoh (10803) : 2008年01月26日 0時21分 (#1286791)
    御意。
    たとえば、「EOFがくるまでホワイトスペース区切りで数値を読み込み、平均と分散を計算して出力しろ、というC(でもJAVAでもいいけれど)の課題がわかりません」って学生が居るとする。 そいつに、『じゃ、紙と鉛筆と電卓で、平均と分散を計算する方法を説明してみろ』というと・・・
    説明できるヤツ→C言語の技能が足りない
    説明できないヤツ→プログラミング以前の問題

    でも説明できないヤツでも、「C言語が難しいので出来ない」と思いこんでるんだな。

  • Anonymous Cowpat (32210) : 2008年01月26日 0時39分 (#1286800) 日記

    ソフトウェア開発を生業としてるはずの会社なのに、プログラミング初心者とかパソコン初心者とかそんなのばかりがやってきます。

    むしろ経験の無い人を採用したがる企業が多い時代がありましたが、今はそうではないんですかね?

    # 変な癖が付いていると困るからだそうで…

  • JAVA [housefoods.jp]の次がLee [ezaki-glico.net]って、カレーかよっ!と空目。
  • Re:Pascal (スコア:2, 参考になる)

    saitoh (10803) : 2008年01月26日 15時04分 (#1287040)
    PASCALはそこそこの実用性(データ構造とアルゴリズムの教科書に出てくるようなアルゴリズムは無理なく実装できる)と言語使用が小さい、などという特徴があります。そこで、HelloWorld的なレベルから初めてコンパイラを作るところまで、そしてデータ構造とアルゴリズムや計算量理論の演習まで1つの言語で教えようとすると、ちょうど良い(手ごろ)でした。

    ・学生のレベルが下がって、「まず教育向けのコンパクトな仕様の言語で一通り勉強して、実用性を気にするプログラミングの言語は3年生くらいで別途学ぶ」といったことが難しくなってきた。
    ・入学直後から、聞きかじった今時の言語(社会に出て実際に使いそうな言語)を使いたがるように、学生の風潮が変わってきた。
    ・会社で使うような言語を大学でも教えておけという、産業界からのプレッシャが強くなってきた(「PASCALでもSCHEMEでも、基礎をしっかり大学で教えてくれれば結構。仕事で使うCOBOLとかCは会社で教えるし」なんていう態度の会社はすっかり減った)

    といった背景で、CやJAVAが1年生でまず習う言語として主流になってきたのだと思います。 あと、BASIC(N88とか・・・)はすっかり消えましたが、VisualBASICは教育用としてもかなり使われています。

  • それは理想のひとつ。
    第四世代言語はその発想で作られて、エンドユーザプログラミングがもてはやされたこともありました。
    けど、現状はそうなってないわけで。たぶん、言語が簡単になるだけじゃだめで。技術じゃなくて意識の問題。
    初等教育から、ちゃんとプログラミングを教える社会なら実現できるかと。

    単純な業務支援なら「なでしこ」あたり使えば簡単に書ける気がします。ほんと。
  • Re:Pascalは駄目だろ (スコア:1, すばらしい洞察)

    Anonymous Coward : 2008年01月26日 18時23分 (#1287099)
    >変数→関数→メイン
    >という宣言順序を縛る文法は、

    とか、

    >相互呼び出しなんてものは、ちょいと気の利いたアルゴリズムでは
    >非常に頻繁に使われる道具なわけだが
    >(例:Pacal自体のコンパイラ!)
    >それを「特別な書き方」をしないと使えないように特別扱いするのは、

    とか、何でそんな作りになっているのかを考えるのも教育上とても
    良いと思いますよ。むしろ仕事に向いていない言語というのなら、
    同意しますが。
  • > #.NET frameworkに振り回されてるけどID

    C#でXMLをパースしようとして、.NET frameworkにSAXが無いのを知って、愕然としました。
    DOMを使いこなすのは私には難しすぎるので、「オレSAXパーサ [slashdot.jp]」を自作して事なきを得ました。

    気が向いたら、そのうちどこかで公開しようと思います。

    --
    あなたの予想に反して、このページが見えているでしょうか?
  • vn (10720) : 2008年01月29日 22時27分 (#1288286) 日記

    プログラム言語などというものは、UMLを効率的に記述できるか否かが重要なのだよ。
    そうだろうか?
    並のプログラミング言語よりも UML の方が重要であるというパーセプションがもしあるとしたら、
    Wikipedia の UML の項 [wikipedia.org]が余りにも簡素、というよりおざなりであることは
    どうやって説明できるだろう?
    Java [wikipedia.org] のようなメジャーな言語より説明が短いのは当然のこととしても、
    Ada [wikipedia.org] や Tcl/Tk [wikipedia.org] の方が UML より寧ろ充実している程だ。
  • 11個のコメント が現在のしきい値以下です。