アカウント名:
パスワード:
インタプリタがついてて気軽に始められ、マルチプラットフォーム対応で応用範囲が広く、ライブラリも充実していて、教育用途専用というわけではなく、実用アプリケーションも多数作られているという点で見れば、Pythonなんかがいいんじゃないですか?国内でも実習に使っている大学、結構あるみたいですよ。
昔の私ならCをお勧めしますが、今ならJavaで良い気がします。クラスの扱いにおいて、ポインタとは言わないまでも格納方法を意識する必要が出てきますし。いきなりCでは、好きな子以外はプログラムの楽しさを覚える前に疲れてしまいそう。
Cのぶっちゃけトーク。確かにそのとおりですね。しかし学生にメモリ破壊のデバッグをさせる事はどうでしょう。新人の時に何回も徹夜した覚えが><w
JNIを使えば、Javaでもポインタと仲良しさんになれますよ
ガッしなかった部下のあなたも同類です
> たとえばFILE*なんてのはFILE_HANDLEに#defineしちまえばいいんですよ。
FILE_HANDLE fh1, fh2;
ってやったら破綻するからtypedefにしてよ。
アルゴリズム+データ構造=プログラム ニクラウス・ヴィルト著で育った世代としてはアルゴリズム教育でポインタは外せないんじゃないかなと思う。Cの演算できるポインタじゃなくて演算を許さない参照の方がいいですけど。
そこで勉強しておいて「本物のプログラマはPascalを使わない [pbm.com]」とエッセイ風の論文を一本書く手間をなぜ厭うのだ
# まぁ、文字列配列だってポインタを覚えることはできるぞ## そこが間違いのはじまりだってば
今どきのプログラムの計算コストのかなりの割合をメモリアクセスが占めるという重要なことに気がつけて良かったじゃないですか.というわけにはいかないか,教育用ならば.
私のいたところは酷かったです。1年生の授業はJava,2年生の授業はC言語,3年の実習は週替わりでC++,Lisp,Matlabを使わされ、4年で研究室に配属されたらFortranでした。私はプログラミング自体が好きだったのでむしろ面白かったのですが、得意でない人はさぞかし苦痛だったのではないかと思います。また、多くの学生はいずれの言語についても理解が浅く、実務に使うのは難しいレベルだったように感じました(3年の実習中に隣の奴に「switch構文ってどう書くんだっけ?」と聞かれたのを覚えています…)。プログラミング言語の設計や思想について語れるレベルに達していたのはほんの一部のマニア達だけでしたね。大学の先生方って思想的な部分に強いこだわりのある人が多くて、なかなか意見のすり合わせが難しいみたいですね。私のいた学科は、先生方の好き勝手にやらせるとこうなってしまうというイマイチな例でした。
言語を手段ではなく、目的にしてるから罠に落ちるんです。
プログラミングの入門としてRubyUNIXのためにCEnterprise開発のためにJavaWebアプリケーションのためにPHP……後何かあったかな
まあ、そういうラインナップ(単位数や必修/選択は異なりますが)で用意している所を知っています。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
教育現場ではかなり前から切実 (スコア:1, 参考になる)
入門としてCを扱う? アセンブラまで囓るようなカリキュラムならいいが、
ソートアルゴリズム習うのにポインタの扱いに習熟する必要あるんですか?
むしろLLや何かの方が学習には向いているのでは?
いやいやしかしCを扱えないと卒業後に困るのではないか? 今時はCのみでは役にたたない?
ではC++ではどうか? しかし学習に時間がかかりすぎる。初心者が手を付けるには向いていない。
ではC#か? Windows前提というのは如何なものか。javaの方が良いのではないか?(以下略
・・・と延々と巡り巡ってこれと言った定番が無いのでCとpascalみたいな妙な実習になったりとか。
Cはほとんど知らないがLLなら1つある程度習いました、ってな学生が社会に受け入れられる時代は来るかな?
基礎教養としてCは適切な学習言語だと思うが、実用言語として別の物を習熟させたほうがいいと思うんだけどね。
そんな時間はないから、原理から入るとC、そこを無視するといきなりflashで作品作り、みたいなことに。
Re:教育現場ではかなり前から切実 (スコア:2)
インタプリタがついてて気軽に始められ、
マルチプラットフォーム対応で応用範囲が広く、
ライブラリも充実していて、教育用途専用というわけではなく、
実用アプリケーションも多数作られているという点で見れば、
Pythonなんかがいいんじゃないですか?
国内でも実習に使っている大学、結構あるみたいですよ。
Re:教育現場ではかなり前から切実 (スコア:1)
昔の私ならCをお勧めしますが、今ならJavaで良い気がします。
クラスの扱いにおいて、ポインタとは言わないまでも格納方法を意識する必要が出てきますし。
いきなりCでは、好きな子以外はプログラムの楽しさを覚える前に疲れてしまいそう。
Re: (スコア:0)
Javaはポインタが不要だから、という話が出ますが、あれ、全てがポインタだから、とも考えられますよね。
要するにメモリ上にどのようにデータが配置されるかを理解しているかいないかという点が要点であって、
それを明示するかしないかだけなんじゃないでしょうか。それを考えると、Cみたいにぶっちゃけトークが
いちばん正直なんじゃないかという気もしないでもない。
Re:教育現場ではかなり前から切実 (スコア:1)
Cのぶっちゃけトーク。確かにそのとおりですね。
しかし学生にメモリ破壊のデバッグをさせる事はどうでしょう。
新人の時に何回も徹夜した覚えが><w
Re: (スコア:0)
不具合報告でJavaの"NullPointerException"に出くわしたとき、
「Javaってポインタねぇんじゃねぇの?」と叫んだことを思い出した。
Re:教育現場ではかなり前から切実 (スコア:2)
JNIを使えば、Javaでもポインタと仲良しさんになれますよ
Re: (スコア:0)
ガッしなかった部下のあなたも同類です
Re: (スコア:0)
最適化の弱いコンパイラで高効率の文字列操作をするならともかく、
いまどきのコンパイラが相手なら、ハンドルとしての使い方だけで十分です。
たとえばFILE*なんてのはFILE_HANDLEに#defineしちまえばいいんですよ。
ポインタの演算なんかやらずに[]を使えばいいんですよ。
Re: (スコア:0)
> たとえばFILE*なんてのはFILE_HANDLEに#defineしちまえばいいんですよ。
FILE_HANDLE fh1, fh2;
ってやったら破綻するからtypedefにしてよ。
Re: (スコア:0)
http://srad.jp/developers/article.pl?sid=11/03/29/0047205 [srad.jp]
個人的にはCで良いと思います。
記述順序と実行順序がなるべく一致しているようなものでないとよくわからなくなる学生も多くなりますし
それにポインタが難しいから教えないってのは本末転倒で
理系、それこそCSの学生ならコンピュータの中身を理解させながらポインタとは何かと理解させることが重要でしょう。
文系大学でプログラミングの概念だけを教えるならVBAとかでも良い気はします。
Re: (スコア:0)
CSなら関数型と論理型の言語は基礎素養として教えるべきで、
「記述順序と実行順序がなるべく一致しているようなものでないとよく分からない」
なんて軟派な学生は、おとといきやがれ、です。
文系の皆さんは手続き型1点買いでも、おk。
Re:教育現場ではかなり前から切実 (スコア:1)
アルゴリズム+データ構造=プログラム ニクラウス・ヴィルト著で育った世代としては
アルゴリズム教育でポインタは外せないんじゃないかなと思う。
Cの演算できるポインタじゃなくて演算を許さない参照の方がいいですけど。
Re: (スコア:0)
そこで勉強しておいて「本物のプログラマはPascalを使わない [pbm.com]」とエッセイ風の論文を一本書く手間をなぜ厭うのだ
# まぁ、文字列配列だってポインタを覚えることはできるぞ
## そこが間違いのはじまりだってば
Re: (スコア:0)
ポインタに習熟する必要はないかもしれませんが、
ソートアルゴリズムを体感させるなら C/C++ が良いと思います。
Ruby で書くと GC せいか原因不明の速度低下を起こし
アルゴリズムの真の性能を覆い隠してしまいます。
以前、マージソートを Ruby で書いたとき、異常に遅くなって、
何度もプログラムリストを見直したことがあります。
Re:教育現場ではかなり前から切実 (スコア:2)
今どきのプログラムの計算コストのかなりの割合をメモリアクセスが占めるという重要なことに気がつけて良かったじゃないですか.というわけにはいかないか,教育用ならば.
Re: (スコア:0)
私のいたところは酷かったです。
1年生の授業はJava,2年生の授業はC言語,3年の実習は週替わりでC++,Lisp,Matlabを使わされ、4年で研究室に配属されたらFortranでした。
私はプログラミング自体が好きだったのでむしろ面白かったのですが、得意でない人はさぞかし苦痛だったのではないかと思います。また、多くの学生はいずれの言語についても理解が浅く、実務に使うのは難しいレベルだったように感じました(3年の実習中に隣の奴に「switch構文ってどう書くんだっけ?」と聞かれたのを覚えています…)。プログラミング言語の設計や思想について語れるレベルに達していたのはほんの一部のマニア達だけでしたね。
大学の先生方って思想的な部分に強いこだわりのある人が多くて、なかなか意見のすり合わせが難しいみたいですね。
私のいた学科は、先生方の好き勝手にやらせるとこうなってしまうというイマイチな例でした。
Re: (スコア:0)
その講義でC#を教えてくれと頼まれたそうです
なんでC#なんですか?と尋ねたところ「C++って言語より凄い言語なんでしょ?」と言われたそうで
プログラミング言語の歴史に詳しく、それぞれの言語の特徴を知ってる人が
各大学にいるわけではないですからね。カリキュラム組むのもなかなか大変なものだと再認識しました。
Re: (スコア:0)
ちょっと前までは情報処理とコンピュータアーキテクチャが
表裏一体だった時代があって、ハードウェア的コンピュータシステムが
どうできていてどう動くか、を学ぶとすれば、ポインター付のCが
ふさわしかったんでしょう。
今の時代どんなおしゃれなアプリケーションを作るか、に比重が
おかれるなら、Cはたしかにふさわしくない。むしろ Excelマクロの
方がふさわしかったりして。
Re: (スコア:0)
>表裏一体だった時代があって、ハードウェア的コンピュータシステムが
>どうできていてどう動くか、を学ぶとすれば、ポインター付のCが
>ふさわしかったんでしょう。
そんな時代は、言語がどうこうじゃなくて、
実際にどう動くかをプログラミングすることが重要。
言語処理系作ったり、OS作ったり。
Re: (スコア:0)
言語を手段ではなく、目的にしてるから罠に落ちるんです。
プログラミングの入門としてRuby
UNIXのためにC
Enterprise開発のためにJava
WebアプリケーションのためにPHP
……後何かあったかな
まあ、そういうラインナップ(単位数や必修/選択は異なりますが)で用意している所を知っています。