科学技術振興機構のWebラーニングプラザにあるプログラミング言語コースが酷すぎてお話にならない。

http://weblearningplaza.jst.go.jp/cgi-bin/user/top.pl?next=lesson_list&type=simple&field_code=40&course_code=696


科学技術振興機構という国の機関と思われる所が、Webラーニングプラザというページを作っています。Web上で勉強できるような環境を整備しようというのは非常に良いことなのですが、プログラミング言語コースがダメ過ぎです。id:minekoa先生あたりに解説していただけるとより色々なダメさが浮き彫りになると思いますが、とりあえず私の分かる範囲でどこがダメかを指摘しておきます。

プログラミング言語の役割と歴史

たとえば、天気予報などのように科学技術計算を主に必要とする分野があります。また、産業界の多くで使われているのは、事務計算です。これ以外にも、装置に組み込まれるプログラムを記述するための組込み系、オペレーティングシステムなどを記述するためのシステム系、などがあります。

という4つにプログラム言語の分類しているのですが、

組込み系をサポートするプログラミング言語として、CやJavaなどがあります。

javaを組み込みに分類するのはどうなんでしょう?確かに組み込みjavaという名前は聞きますが、javaがそれをメインターゲットにしているとはとても思えません。逆にシステム系として分類されているc++は組込みには使われないのでしょうか?(絵には色々書いてあるからいいという判断なのかもしれませんが)

システム系をサポートするプログラミング言語として、C, C++, C#などがあります。

c#でos書くってそんなに頻繁に行われている事なのでしょうか?

そこで、1960年中ごろに、構造化プログラミングが提唱されました。これは、プログラムの記述を、順次、選択、繰り返しという3つのパターンだけを用いて作成するというものです。

これは構造化定理であって構造化プログラミングではありません(…と言いきってしまうのもまずいか?)。構造化プログラミングを一言でいうと、あらゆる部分をサブルーチンに分割して全体を構成することでしょうか(この説明の仕方も微妙かな。でも構造化プログラミングのメインはこっちだと思うので)。

データ型と計算処理

なお、整数データのことを整数型 integer type、実数データのことを実数型 float type、あるいは浮動小数点型 floating point typeと呼びます。

実数はfloatじゃなくてrealです。

一般的に、整数型はその表現範囲の大きさによって8ビットから64ビットまでの種類があり、それぞれのデータを表現できます。
ここで重要なことは、すべてのプログラム言語がこのすべてを表現できるわけではないということです。
たとえばC言語の場合には、8ビットから32ビットの大きさのデータ型が表現でき、それぞれの型に対して名前が定義されています。

現在のcではlong long型(処理系によってはlong型も)が64bitです。これは通称c99とよばれるisoが1999年に出した規格によって10年前に決まっていますし、実際にそれ以前からlong longって処理系によっては利用可能でした。(参考:http://seclan.dll.jp/c99d/c99d05.htm#dt19990524

データ抽象とオブジェクト指向

データ抽象については何らかの説明があるので、広い意味でのOOPの範囲から飛び出しておいて、ポリモルフィズムについて一言も触れていません(それ全然オブジェクト指向プログラミングじゃないじゃん)。

にもかかわらずお決まりの、

つまり、動物クラスに+αして哺乳類クラスを作ればよいのです。

ときて、

このようにベースとなるクラスを作り、+αだけを作っていくプログラミング方法を、差分プログラミングと呼びます。

という説明だけは存在するというorz

様々なプログラミング言語

まとめに各言語の関連についての図があるのですが(これらの指摘には自信がないけど)

  • 今でもWeb系で利用されているであろうperlが存在しない。(現在仕事としてどれだけ需要があるのかはよくしらないけど)
  • でもbcplとかbはある。(これって今でも現役なんでしょうか?)
  • プログラム言語の歴史でbとか出てくるのにalgolないの?
  • phpがどの言語からの関連もなく独立で存在している。(これもよく知らないけど大元はperlだった気が)
  • いま現在でも毎年のように新刊が出ているlispがない。(FORTRANと並んで最古の言語としてあげられるし、gcとか色々Lisp方面で実用化されたものがその他言語に与えている影響大きいのでは?)
  • matzlispとも呼ばれるrubylispからの線がない。(そもそもlispがないけど)
  • javascriptに唯一引いてある関連はcのみでいいの?(javascriptはよくしらないけど、プロトタイプベースのオブジェクト指向言語だったと思うので、cとはかなりかけ離れた言語のような)
  • pythonないけど多分世界的にはrubyよりも有名なのでは?
  • macでお馴染みのobjective cは?
  • メイヤーの「オブジェクト指向入門」で有名なeiffelは?
  • java, java2, java se(って何?)はあるのに、C#はバージョンは?

更なる問題点と対処

疲れてきたのでこの辺で止めておきます。で、私がこのページを何で知ったかというと情報処理学会の配布物なのですが、その配布物の表紙に、

情報処理学会 企画・制作のおすすめコース

という見出しで紹介さていました。
情報処理学会ってこの程度なんですね。