アカウント名:
パスワード:
コンピュータサイエンスの初級コースってのがどんな教育をする場かは知りませんが、アルゴリズムのお勉強とかは、C/C++ がベストと思うんですよね。使える機能がもっとも原始的という意味で。ま、最低、Java でもいいとは思うけど。
入門は弱い型付けな言語の方がいい。
int x;x = 0.5;が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。コンパイラの都合、最適化、高速化の都合、書き間違いの検出、などなどの意味はあるけど、最初期にそこで引っかかって時間を無駄にする理由は特にない。
int a[10];float x;x = 0.5;a[x] = 0;一方、これがエラーになるのは、「配列の性質」だから、理解する必要がある。と言うように、弱い型付けの方が理に叶っている面が大きい。
あまり本質的ではないことには時間をかけずに、そこそこのものが作れるようになってから、(作れるようになった人は)次のステップとして、JavaなりCなりに進めば無駄が少ないと思う。
ついでに、構造化プログラミングの必須テクであるインデントを必修させられるという意味でPythonが選ばれるのは理に叶ってる。
…というか、うちもPythonにしたい。……んだけど、エラいせんせー方が、C言語からの流れで、辛うじてJavaは分からなくもないという状態で。………学生に合わせて新しい言語に触ったりしたくないからJavaから変えることに大きく抵抗なさる。
勘違いしている人が多いですが、C言語では
int x;x = 0.5;
は、エラーになりません。Cの規格上、これは"合法"です
正しい記述なので、処理系は警告を出す必要がありません。例えば、最近のGCCではエラーも警告も出ません。しかし処理系によっては未だに警告を出す場合があります。その余計な警告が勘違いを引き起こしている様です。
C言語の厄介なところは処理系がエラーを出さないからといって合法である保証はまったくないことで(このケースは合法だけど)、やはりどう考えても初級者向きじゃない。
> int x;> x = 0.5;> が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。
うーん、整数を宣言する意図があるのに、その直後浮動小数点数を代入というのは思考が整理されていない証拠のように思うのです。数学でも、まずは自然数、次に整数、次に有理数、でもって実数と段階を踏みますよね。整数と浮動小数点数が区別できることは重要ではないかと。
まあ、これ以上は、動的型の言語か静的型の言語かの果てしない論争になるんでしょうけど。
>動的型の言語か静的型の言語かの果てしない論争
俺の中では、「型推論ありの静的型付け言語が最良」ととっくに結論が出てるなC++/Java/C#だって型推論を取り入れ始めたし、動的型付けの言語だって、実は最適化のために内部で型推論してる処理系は多い型推論ありの静的型付け言語を否定する意見があったら聞いてみたい
型付き論理は一般的ではないので論理型言語では動的型のほうがよい
C#はどっちかっつうと型推論普及の先駆者って感じ。で、後からdynaic型なんてのを導入してる。これは型推論とは逆方向のシンタックスシュガーと言えると思います。静的評価の否定ではないですが、動的評価の有用性も同様に肯定する姿勢ですね。
で、結局型を意識しないと実行時エラーになるのが弱い型付け言語ですよね。
Pascal系というかWirth系というか、静的な型チェックの厳しい言語のご利益は使ってみないと分からない弱い型付け言語でランタイムエラーになってデバッグに苦労するバグ/ミスをコンパイラが弾いてくれるのだから、ありがたいことこの上ない
逆にそういう型の制約を無くして実行時のハンドリングに任せるという方向もあるが、少なくとも基本的なアルゴリズムなどを教えるアカデミックな教育の初期段階では型チェックの厳しい言語の方が良いだろう
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
アルゴリズムのお勉強 (スコア:0)
コンピュータサイエンスの初級コースってのが
どんな教育をする場かは知りませんが、
アルゴリズムのお勉強とかは、C/C++ がベストと思うんですよね。
使える機能がもっとも原始的という意味で。
ま、最低、Java でもいいとは思うけど。
Re:アルゴリズムのお勉強 (スコア:0)
入門は弱い型付けな言語の方がいい。
int x;
x = 0.5;
が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。
コンパイラの都合、最適化、高速化の都合、書き間違いの検出、などなどの意味はあるけど、
最初期にそこで引っかかって時間を無駄にする理由は特にない。
int a[10];
float x;
x = 0.5;
a[x] = 0;
一方、これがエラーになるのは、「配列の性質」だから、理解する必要がある。
と言うように、弱い型付けの方が理に叶っている面が大きい。
あまり本質的ではないことには時間をかけずに、そこそこのものが作れるようになってから、
(作れるようになった人は)次のステップとして、JavaなりCなりに進めば無駄が少ないと思う。
ついでに、構造化プログラミングの必須テクであるインデントを必修させられるという意味でPythonが選ばれるのは理に叶ってる。
…というか、うちもPythonにしたい。
……んだけど、エラいせんせー方が、C言語からの流れで、辛うじてJavaは分からなくもないという状態で。
………学生に合わせて新しい言語に触ったりしたくないからJavaから変えることに大きく抵抗なさる。
Re:アルゴリズムのお勉強 (スコア:4, 参考になる)
勘違いしている人が多いですが、C言語では
int x;
x = 0.5;
は、エラーになりません。Cの規格上、これは"合法"です
正しい記述なので、処理系は警告を出す必要がありません。例えば、最近のGCCではエラーも警告も出ません。
しかし処理系によっては未だに警告を出す場合があります。その余計な警告が勘違いを引き起こしている様です。
Re: (スコア:0)
C言語の厄介なところは処理系がエラーを出さないからといって合法である保証はまったくないことで(このケースは合法だけど)、やはりどう考えても初級者向きじゃない。
Re: (スコア:0)
> int x;
> x = 0.5;
> が、エラーになるのは、スクリプト言語という選択肢がある昨今では、プログラムを学ぶ上では本質的ではない。
うーん、整数を宣言する意図があるのに、その直後浮動小数点数を代入というのは
思考が整理されていない証拠のように思うのです。
数学でも、まずは自然数、次に整数、次に有理数、でもって実数と段階を踏みますよね。
整数と浮動小数点数が区別できることは重要ではないかと。
まあ、これ以上は、動的型の言語か静的型の言語かの果てしない論争になるんでしょうけど。
Re: (スコア:0)
>動的型の言語か静的型の言語かの果てしない論争
俺の中では、「型推論ありの静的型付け言語が最良」ととっくに結論が出てるな
C++/Java/C#だって型推論を取り入れ始めたし、
動的型付けの言語だって、実は最適化のために内部で型推論してる処理系は多い
型推論ありの静的型付け言語を否定する意見があったら聞いてみたい
Re: (スコア:0)
型付き論理は一般的ではないので論理型言語では動的型のほうがよい
Re: (スコア:0)
C#はどっちかっつうと型推論普及の先駆者って感じ。
で、後からdynaic型なんてのを導入してる。これは型推論とは逆方向のシンタックスシュガーと言えると思います。
静的評価の否定ではないですが、動的評価の有用性も同様に肯定する姿勢ですね。
Re: (スコア:0)
で、結局型を意識しないと実行時エラーになるのが弱い型付け言語ですよね。
Re: (スコア:0)
Pascal系というかWirth系というか、静的な型チェックの厳しい言語のご利益は使ってみないと分からない
弱い型付け言語でランタイムエラーになってデバッグに苦労するバグ/ミスをコンパイラが弾いてくれるのだから、ありがたいことこの上ない
逆にそういう型の制約を無くして実行時のハンドリングに任せるという方向もあるが、少なくとも基本的なアルゴリズムなどを教えるアカデミックな教育の初期段階では型チェックの厳しい言語の方が良いだろう