1 :
132人目の素数さん :
03/03/05 20:02 教科書に載ってんだけど大抵の学校では無視されるよね
2 :
132人目の素数さん :03/03/05 20:04
10 print ">>";sqr(1+2+3+4+5+6+7+8)/6;"は基地外" 20 goto 10
金田教授が何万行にもわたるBASICのプログラムで 円周率を一兆桁計算したことは有名な事実。
ま、BASICやるんだったらエクセルのVisualbasicを覚えたほうが 遙かに役立つと思うんだがな。 MsgBox(ちんこ)
!ニュートン法を使ってaの平方根を求める。 !130行目の()/()のかっこ内の式を変えれば, !方程式の近似解を求める事もできる。 !一般式は,x=xo-(f(xo)/f'(xo))→出た解を同じ式で代入する。 100 input PROMPT "求めたい数字":a 110 let x=1 120 for t=0 to 10000 130 let x=x-((x^2-a)/(2*x)) 140 next t 150 print x 160 end んなかんじ?
>>1 ではマジレス。
プログラミングというものと数学とは深い関わりがある。
数値計算や暗号系などの例を挙げればわかるだろう。数学のある理論があって
その応用分野の一つとしてプログラムがある。
プログラミングを実践的に行うには、やはり何かしらのプログラミング言語を覚え
なければならない。以下は憶測だが、BASIC は
・あまり複雑でなく、割と簡単に覚えられる
・昔の PC には BASIC が搭載されているものが多くあった
・言語仕様の範囲でグラフィックを扱える
などの理由から使われているのではないだろうか。
BASIC でプログラミングの学習をすることに関しては、私は反対であるが、学習
指導要領だかなんだかで言語まで指定されている以上、学校のプログラミングは
BASIC になってしまうのであろう。
9 :
132人目の素数さん :03/03/05 20:29
100 print "センターに頻出のプログラム(w" 110 input "a=";a 120 for b=1 to a 130 for c=1 to b 140 if a^2=b^2+c^2 then s=s+1:goto 150 150 next c 160 print a;",";b;",";c 170 next b 180 print "s=";s run センターに頻出のプログラム(w a=?5 5,4,3 s=1 Ok
10 :
132人目の素数さん :03/03/05 20:30
goto 150→160
12 :
132人目の素数さん :03/03/05 21:42
何でBASICなんだ? せめてCにしる
円周率を3にした文部省に問い合わせください。
14 :
NipponA ◆fV.NipponA :03/03/06 09:57
インタープリタじゃなきゃヽ(`Д´)ノ ヤダァァ!!
>>12
15 :
132人目の素数さん :03/03/06 10:04
16 :
132人目の素数さん :03/03/06 10:50
ヤダァってのはアレかもしれんが、 実際学校でやる場合には未熟者達が使うので、 C で書いてコンパイルして、ってのはちょっとな。 (いや、C のインタプリタみたいなのがあった気もしないでもないが) でも BASIC はやっぱアレなんで、 個人的には ML (SML/NJ) なんかを使うのがいいと思うんだがな。 数学チックだし。 でも、DOS Prompt で、ってのはちょっとアレかなぁ。 winhugs (Haskell) なんかだと関数を書いたりする場合、 ファイルに保存しないといけんってのがなぁ…。 って、実際関数型言語が使われることなんてないでしょうから、 こんな心配する必要無いんでしょうが…。 つか、winhugs をちょっと書きかえれば済む話かも。
17 :
132人目の素数さん :03/03/06 11:11
プログラムを学校で教える場合。 ・すぐに実行可能 ・記述行数が少ない ・(変数宣言をしなくてよい) とか?あきらかに学校側のご都合ですね。
18 :
132人目の素数さん :03/03/06 11:57
無料でダウンロードできるUBASICは電卓がわりにも使える。例えば ?1//121+1//212, 1//12321+1//32123, 1//1234321+1//4321234 333//25652 44444//395787483 5555555//5333789872114 OK ?sin(3.14159) 0.000002653589793235348417472629802421145222538699034236019478469444797422 OK ?(1+#i)^3 ,(1+_x)^3 -2+2#i X^3 + 3*X^2 + 3*X + 1 OK ?!(55) 12696403353658275925965100847566516959580321051449436762275840000000000000 OK 実数の精度は2600桁、局所変数も使用可能だ。言語は複数覚えて使い分ければよいのでは。
19 :
132人目の素数さん :03/03/06 14:51
プログラミングを指導要領に入れることを主張したのは飯高先生だ、という俗説がある。 ただ飯高先生の理想はN88的BASICではなく、 prologなどによる論理的なプログラムだったらしい。 あんな糞な言語が教科書に入ったのは、ミイソの政治的?圧力と 「違いのわからない」文部官僚ののせい。 彼らは「自分にわからないもの」は高校生にわかるはずない、と信じている。
21 :
132人目の素数さん :03/03/12 21:48
>>19 Prolog は実際、学校の教師で教えれる人が居なさそうってことで余計敬遠されたんじゃ。
BASICを声高にけなす奴で、他の言語がまともに出来る奴を見たことがない。 プログラム言語は、「何で書くか」という問題に過ぎない。「何をどう書くか」が 問題なのにな。いちばん情けないのは、BASICとCぐらいしか知らないでBASICを 攻撃する奴。程度が低すぎるよ。 あと、BASICにも色々あると同様に、Cにもいろいろある。出始めのCコンパイラ なんてひどいものだったよ。N88BASICの問題点を完備していたと思うよ。 私が一番良く使っているのはWindowsのVC++。WindowsもCもあまり好きではないが、 仕事なのでしょうがない。他の奴が使えるものを選ぶ必要があるからね。 趣味じゃあDelphiかな。Windows環境じゃあ、一番マシなコードを吐くから。 もちろん、後でアセンブラで最適化するけどさ。もちろんいままで色々な言語を 使ったよ。LispとかAPLみたいな有名どころも一応コンパイラを作ったこともあるし、 最近じゃあVBAなんかも使うな。 言語なんてのは手段。何を使っても良いし、場合によっては何でも使えなければ いけないものだ。 学校でも、言語そのものを教えるんじゃなくて、考え方を教えるんだよ。 断っておくけど、「オブジェクト思考」とかそんなクズを教えるって意味じゃ ないよ。もっと不変的なこと。まあ、学校の先生に望めることが少ないってのは わかるけどな。
(^^)
言語に欠点がある事を指摘するしないは プログラミングが出来る出来ないには関係ない気がする。 「プログラムやる奴って22のように妄想入った極論言いながら他人を貶すのが好きな奴ばっか」 なみの信憑性やね。 学校の生徒には「何でも使えるようになるならなきゃいけない」訳じゃ 全く無く「考え方を教える」のが重要だと22自身主張してるんだから、 N88basicがそういう教育に合っているかどうかを論じるべきなんじゃないかと思うが如何?
まあ実際BASICとかFORTRAN辺りを貶す奴には知ったか厨が多いけどな。
そういう意味では
>>22 の1行目は正鵠を射た指摘。
>>24 >N88basicがそういう教育に合っているかどうかを論じるべきなんじゃないかと思うが如何?
そういう事を論じることが、そもそもおかしいって話だろ。
27 :
132人目の素数さん :03/03/18 00:45
> プログラム言語は、「何で書くか」という問題に過ぎない。「何をどう書くか」が問題なのにな。 手続き型でも論理型でも関数型でも「どう書くか」は常に一緒、とでも仰る? 大体、再帰があるかないかってだけでも随分と違うと思うんだが。 言語の詳細なんぞ教えないで、考え方を教えろってのには同意しますが、 そういう目的なら言語的制約の少ない言語で教えたほうが良いでしょ。
>手続き型でも論理型でも関数型でも「どう書くか」は常に一緒、とでも仰る?
違うの?そんなのは
>>22 の言う「どう書くか」のうちに入らないんじゃない?まして再帰なんか「何で書くか」(手段)のレベルだと思うけど。
29 :
132人目の素数さん :03/03/18 01:31
MSX-Magazine 買っとけ
ていうか、再帰を何か特別なものとして例に出すところが、かなりイタイレベル。 ま、最後は教え方かな。 実際、駄目な奴はどんな言語をどう教えても駄目だけどね。 そしてそういう奴が言語や教師のせいにして文句を言うわけよ。
こんなスレあげるなよ。
32 :
132人目の素数さん :03/03/18 02:08
age
> >手続き型でも論理型でも関数型でも「どう書くか」は常に一緒、とでも仰る?
> 違うの?そんなのは
>>22 の言う「どう書くか」のうちに入らないんじゃない?
違うでしょ。全然。手続き型言語しか使ったことないのか?
> まして再帰なんか「何で書くか」(手段)のレベルだと思うけど。
学校で教える BASIC では書けない。
>>22 は「考え方を教えるのに言語は関係無い」というようなことを言ってるが、
これでは再帰って考え方すら教えられないわけで、言語が関係ないってのは違う。
>>27 >>33 22様はBASICで制約論理プログラミングを教えられる神なので、
お前のような糞厨房が気安くレスしていいような存在ではないのです。
氏んできなさい。
仕様が簡単ってことなら Turing みたいな教育用がいいかもしれんし 問題記述という側面では Prolog みたいな宣言型や代数型でもいい気もするけど、 関数を引数として渡すことと、型やクラスを定義できない BASIC は 高校の数学で教えるのには不向きなんでは。抽象化があまりにもお粗末。
36 :
132人目の素数さん :03/03/18 12:19
FOR-NEXTを理解してくれれば シグマ記号もすぐ理解してくれますね。 変数のローカル性とグローバル性の概念も。
37 :
Smallqman ◆y5/DjSlaJU :03/03/18 12:27
10 S=0 20 INPUT N 30 FOR I=1 TO N 40 S=S+1/I 50 NEXT I 60 PRINT S 70 END ここでSはどこかに収束するでござる。 コンピュータと純粋数学を結びつけるのは意外と難しそうでござる。
>>37 Sを実数だと思うのが数学的でないだけの話
浮動小数点数は有限集合なのだから
FORTRAN 最強。 BASIC 基本。 高等。童貞向け。
40 :
132人目の素数さん :03/03/19 23:19
で、
>>22 のいう不変的(普遍的?)なものってなんなの?
入出力とアルゴリズムなんじゃないの
言語についてあれこれ語るような人ならLISPコンバイラ作成経験ぐらいは あって当然かと ・・・しかし、「再帰を特別なものであるかのようにみなすのはイタイ」 は、いったいどのあたりのレベルで話をしているんだろう・・・ たしかにコンビネータ論理とかなら再帰もループもサブルーチン呼び出しも(笑) あんまり違いはないけど
Yがなくちゃね
Turing Complete なら言語はなんでもよい。
おっと、インタプリタじゃなくてコンパイラなんですね。
失礼しました
>>22
確かFORTRANは物理計算とかをするために作ったんじゃなかったっけ? だから数学の計算をするにはBASICよりは向いてるんじゃないかとか言ってみるテスト。
46はこのスレに書き込んだ奴のなかで最も無知。
>>48 そのへんは再帰に関する記事ってわけでもなかったような…
>44 んじゃmalbolgeが計算万能であることを証明してみてね
>>50 そっちかよ! 証明は無理です。できんです。馬鹿なんで。
>51 証明できたら一躍有名人だよ
53 :
132人目の素数さん :03/03/22 22:52
10 'Nazo-no-program 20 screen 3: cls 3 30 line(0,160)-(330,160) 40 line(0,240)-(330,240) 50 for S=-1 to 1 step 2 60 for T=int(-sqr(2000)) to 60 70 X1=T: Y1=sqr(3600-X1^2) 80 X=X1+330+int(sqr(2000)): Y=-Y1*S+200 90 pset (X,Y) 100 next: next 110 for R=1 to 10 120 for S=0 to 14 130 for T=7 to 0 step -7 140 for U=0 to 15 150 circle (460+S*25,200+2*S^2),U,T 160 next: next: next: next 170 line input "CLS 3 OK?";A$ 180 cls 3 190 end
54 :
132人目の素数さん :03/03/22 23:06
(^^)
∧_∧ ( ^^ )< ぬるぽ(^^)
57 :
132人目の素数さん :03/05/13 05:19
14
>> まして再帰なんか「何で書くか」(手段)のレベルだと思うけど。 > >学校で教える BASIC では書けない。 昔、BASICで数式処理のマネゴトで多項式展開プログラム作ってみたとき、再帰使いま くりのプログラム書いたけど。 (入れ子の深さも長さも決まってない多項式を展開するためには、再帰は不可欠なわけで…。 データ型はもちろん線形リスト。) もちろんローカル変数なんてないから、配列をスタックに使って実現した。 無意味な面倒さであったことは認める。
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
62 :
132人目の素数さん :03/06/14 07:52
20
63 :
132人目の素数さん :03/06/14 14:26
BASICは、電卓でも出来るけども、作業量が多くて面倒で、やってらんない事をやるのに最適なの。 手計算→電卓→BASIC(→しばしばMSエクセル) あくまで日常的で工学的な用途向けであって、 訳の分からん数学の証明なんかやらない。
64 :
132人目の素数さん :03/06/16 18:32
f(x)=(4/π){sinx+(1/3)(sin3x)+(1/5)(sin5x)+・・・・・・ +(1/(2n-1))(sin(2n-1)x)・・・} 第n項までの和を求め、図に示せ。 nは任意(INPUT)の定数、f(x)を縦軸、x(-π<x<π)を横軸で図示するのがわかりません。 どのようにプログラムを組めばいいのでしょうか? どなたか教えてください、お願いします。
すみません。 出来たのでもう良いです。
66 :
132人目の素数さん :03/06/17 00:08
BASIC万歳!学校でCなんか教えたら、屍が累々と増えるだけだよ(w
と、と、ところでー! オブジェクト指向って、クズなん? もう、氏むしかないでありまふか?
68 :
沢村@ピンクロータ :03/06/18 06:23
農夫が田を耕すのは鋤のためではない
>>22 は単なる自慢厨と言うか…アフォというか…
今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんてメガデモか3D屋くらいだよ。
単なるミーハーだと寧ろパイプラインとか分岐想無視した時代遅れの最適化技法施すし。
「アセンブラで最適化」ってアセンブラを最適化してくれるツールか何かの一種だと思っているのだろうか。
アセンブラ・アセンブリ・アセンブルの違いくらい理解しとって。
VCの吐くコードが嫌いならBCCとか使えばいいのに…
これだけ「バグの作り方を沢山知っている」って大々的に自己広告する奴も珍しいな。
70も 「オブジェクトコードを最適化」なんていってる時点でアウト
まあ22は時代遅れの感はあるが 70はただの知ったか
71=72
70 = 73
今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて 今時オブジェクトコードをアセンブリ言語使って手作業で最適化かける暇人なんて
10 rem N88BASIC 30 console ,,0 40 cls 3 50 screen 3 60 for i=0 to 209 70 x=320-180*sin(i*0.03#) 80 y=200+180*cos(i*0.03#) 81 cr=cr+1 82 if cr>15 then cr=1 90 line(x,200)-(320,y),cr 100 next
>71 変なところで文切るなよ
71は短歌
>>77 cr の 代わりに (i mod 15)+1 ってのはどうよ
ガリガリ最適化するとこって3Dよりもむしろ2D部分なんだがな‥
>>81 言っている意味が良くわからん
最適化以前に効率の悪いコードでも書いていたら遅いのは当然なんだが…
Basicがプログラム言語の中で簡単だからかと.
描画にゃ描画のテクがある
(´-`).。oO(まさか置換マップの事じゃないだろうな)
空間の投影(3D)よりも描画(2D)の部分だといいたいのでは?
「アルファブレンディングをMMXテクノロジー使って速くしました。」とかそういう事を言いたいのかな… 素直にピクセルシェーダーとかHA使おうとかおもわんのか? 勘違いすまん。詳細きぼん。
追記 一般に3D部の方が当然計算量が多くなるわけで こちらの方がアルゴリズムの方でも改善の余地が多く、今まさに研究が進んでいる… 陰影処理を2D部分とする。。とかの捉え方で違うかと思うのだけれども、 お馬鹿な私のタメにもう少し具体的に言ってもらえませんか。
3D部アルゴリズムの改良の余地が多いからアセンブラでの最適化はしないってことじゃないの? 漏れは3D屋じゃないけど、もはやアルゴリズムの改良の余地の少ない表引きや表への書き込み (秒間数百万〜数億のオーダー)をアセンブラで書き直したことがあるよ。
あんましBASICも数学も関係ない話すまそ
アルゴリズムがほぼ完成しているから最適化すると言うことですか? 真意がよく分かりません…
最適化そのものをやらないと言っているんではなくて アルゴリズムにまだ最適化の余地があるならアセンブラを使わず 高級言語で最適化をするほうがふつう。 アルゴリズムにもはや最適化の余地がない、またはほとんどないときに それでも速度がほしいときにはアセンブラで最適化をする。 もちろん例外はあるけども 例:CPU固有の命令を使うなどの、高級言語ではできない 若しくは著しく困難な類の最適化を使う時など そういう一般的な話では納得いかないですかね‥
>納得いかないですかね といいますか、 > CPU固有の命令を使うなどの、高級言語ではできない > 若しくは著しく困難な類の最適化を使う時など もしくはピクセルシェーダー(アセンブラのような言語というレベルですが)を使う くらいなときしかアセンブリを使わないのでそこでかみ合わなかったのではないかと思われます。 お手数かけて申し訳ない。
×アセンブラのような言語 ○アセンブリのような言語
単純な繰り返しモノはアセンブラのほうが最適化しやすいなと経験上そう思う 最適化にどのような手法を使うかについては、問題の複雑さにはあまり比例しない 最終的にはコスト対効果で決めることになる。
ちょっと言い方がわかりにくかったなと反省。 >素直にピクセルシェーダーとかHA使おうとかおもわんのか? 使えるものなら使う。というか正直使いたい。 が、趣味ならばともかく、クライアントの3000台オーバーのマシンすべてで (下はP166-Win95あたりからある、MMXですら期待できないこともあるんだ) それが使える環境を要求することはできないこともある。 つまりプログラマが2週間アセンブラと格闘するほうがコストが低いってことだな。 もちろんどこかでそのコストは逆転するわけで、新しいハードやドライバが期待できるのは そうなってから後の話。
あまりにもBasicとも数学とも関係ない話になってしまったので反省 なぜBasicかというと、言語が簡単だからというよりも パソコンが一般的になってき始めたころ (8ビット機とか16ビット機の時代ね) ほぼどのマシンでも動くのがBassicだったからではあるまいか (これもBillの陰謀のひとつか?) そのころにプログラムを学習したひとがあいかわらずBasicを 使いたがっているから、いまだBasicなんではなかろうか。 言語の習得のしやすさから言えば、BasicもPascalもcもそんなには変わらない。 ただ、ちょっと(プログラムを)書いて試してみる。というニーズに うまく応えられたのがBasicだったんだろうな。
おおむね同意だけどCは配列が生々しいから習得はちょっと難しいと思う。 それにしても教育に携わる役人や教員といった文系の人達がいまだに BASICに因われてるのは日本の情報科学教育は失敗してると思うよ。 いまやBASICの処理系はパソコンを買えばついてくるものでもないのにね。
生々しいってのは配列添え字の上限下限チェックがないからってことかな C++でチェックつきのクラスを作るなり使うなりすればたいした問題ではなさそうだ 今時C++をサポートしないCの処理系なんて少数でしょ よくポインタが難しいといわれるけど、使わなければいいことだし (もっともポインタ使わなければCらしくはないけどね)
突然 Bus Error とかいわれても分からんだろうしね。 それに文字列の扱いからしていきなり面倒かなと。 これまで連結が $foo + $bar で良かったのが 文字配列であることを意識することを余儀なくされるし。 ライブラリ導入のために better C として C++ を使うの自体は悪くないけど、 そうすると教室ローカルな #include とかリンクの掟が出来て どこまでが C の話か分からんくならんかな。
統合環境とか使えばそれも最小限ですむのかな‥ それでも独習するのにはCは向いてないかも知れん 文字配列とかポインタとかその辺の意識が ステップアップするのにいい課題になってるとは思うけど。 Cは構文の単純さと自由さが好きなんだけどな‥ かえってそれが障害になってるのかなあ
>>102 まあ漏れもCは正直好きなんだけど、
アルゴリズムのような本来やりたい話題から遠いことをいろいろ
指導する必要がある点で、最初の言語としてはどうかなと思う。
Pascalはキーワードを用語にしたとこが画期的だったらしいのだけど、
タイピングに不慣れな人が最初にやるにはちょっと冗長だよね。
結局 Python とか Ruby みたいなのが手頃なんじゃないかなあと思う。
それか数学の一貫としてやるなら Haskell かなあ。
いま高校で想定されているBASICって case sensitive なの? 数学をやるなら case insensitive な言語は触らせたくないのだけど。
教える側の問題もあるんじゃないかな、BASICなのは。
C言語だったら計算機の仕組みを多少理解する必要があるから数学として教えるには不適切かもしれないなぁ。
アメリカはCOBOL教えているって聴いたこともある。
何が良いかって言われると…思いつきません。
それと高校のとき授業でプログラムなんて一度も組まされなかったよ。
進学校だったから故かもしれませんが。
>>104 case insensitiveだったはず
>>98 そんなに違わないってのは間違ってるって、
プログラムを語れる程度の人間(例えばここのスレの人)ならば
大差ないって感じるだろうけど世の中に方向音痴がいるように
C言語やPascalの修得にえらく抵抗を感じる人・子がいるから。しかも、かなり。
教える方もそれをフォローするのに忙しくてやりたいこと(本当に教えたいこと)ができなくなる可能性もいなめない。
>>97 うわ、本職の方ですか。大変ですね。
経営陣側はマシン100台入れ替えるよりプログラマ一人殺した方がやすいって考えるでしょうね。
彼らにとって見れば、プログラマは牛馬のようにまだまだ働ける存在ですから。
Win95はまだまだ行けますからw 「お金も"ない"」し。
Amigaのメガデモはスゴイよなぁ…。
>>105 例えば同じインタプリタでも対話モードの有無は大きな違いかも。
でもそれってホントに一番最初の最初だけなんじゃないかな。
まあでも学校の授業じゃ最初の最初しかやらないから それ以上やるやつはある程度わかるやつだから どれやっても同じ
つーか、それが最初の最初だと言っておる
プログラミングは数学の能力とはあまり関係なく 向き不向きがあると思うなあ なんでもそうか‥
>>108 のようなセンターの奴もわからんって言い出すのがいるんでどうなんでしょ。
そうだよな。センターを最初の最初というやつは習熟度に対する解像度が低い。 高校では教えたことないが、文系で初級のプログラミングの講義を担当すると、 手続き型言語の変数の概念がさっぱり分からない人がいるよ。 でも、そういう人でも対話モードを使わせると大抵は分かるんだな。 しかし反復を理解してもらうのがまた面倒なんだが、これはフローチャートと 例題で説明するしかないのね。
では センター試験受けるレベルのやつには すでに対話モードの有無は大きな違いにはならないと? 解像度の問題ではなくて 対話モードがどのレベルまで有効かの話だろ 変数の概念がわからないなんてのは 最初の最初の最初の最初だ
てゆうかセンター試験の情報甘すぎ 他の教科と比べてそれに回答できるまでの 知識や学習量が少なすぎないか?
>C言語やPascalの修得にえらく抵抗を感じる人・子がいる そういう子は、どこが違うからそう思うんだろう? ごく初歩のプログラムでCとBasciの違いを想像すると インクルード文と変数宣言くらいしか 違いが思いつかないのだが‥ ちかごろのBasicは変数宣言するものも多いし。
>>114 まあ解像度はいくらでも上げられるからな
中高生あたりだと 数学の文章題の立式が得意な子は プログラムも理解が早い気がします 一方数学を問題のパターンでおぼえてる子は プログラミングはどうも苦手な感じがします。
>>113 > しかし反復を理解してもらうのがまた面倒なんだが、これはフローチャートと
> 例題で説明するしかないのね。
動作を見るならデバッガ。これ最強。
Basicのデバッガってあるの? VBならあるのかな…?
VBにはあるよ
変数の概念も理解できるほどの奴でも、プログラムを読めない書けない、何しているか分からない。
理解する気がないのか、慣れていないのか、そういう気がしてました。
でも去年受験板に居たときにもBASIC余裕とか言っているのとそうでないのと二分してたし…
なにが その差になっているんだか
>>116 main関数じゃない?
ホントに大したことないように思えることでも躓きになっているような気がする。
>>118 大学の上位校に受かる(った)程度ってやつでも(数学をパターンで覚えていないとは言い切れないが)
センターのプログラミングに苦手意識持ってた。
>>115 かもしれないね。
でも(自分にとって) 難しい、簡単 とかえらそうに評価くだしている奴もいたぞ 模試の後とかに。
味噌も糞もへったくれもなくくだらないとは思うんだけど…。
以下 以前大学受験板のスレからの引用
> 前立ってたスレは気がついたら落ちてたね
> 取りあえずこれ以上難化しないように祈るばかりです
> IA はベーシックやるけど、2Bはちょっと難しい(−−;
> 数列苦手だから、ついこっちに・・・。
> basicの様な遺物じゃなく
> Cやjava見たいな役に立つものに変えて欲しい
> basicなんて勉強してたら、逆に頭が悪くなる。 > 今から始めても余裕で間に合うと思います。 > 私はやり始めて1週間のマーク模試で満点取れましたから。でも、本試のほうが少し難しい気がします。 > コンピューターを取るかどうかの判断もかなり重要ですよね。 > 年度によっては明らかに数列の方が簡単なケースがありましたし。 > ていうかjavaとかCとか出したらそれこそ取る人いなくなる(w > 将来役に立つかどうかよりも唯単に「点が欲しい」から取るわけですし。 > 個人的にC++なら取るかもしれません。 > 追試のU・Bコンピュータは無駄にムズイ。 > べつにCが難しいとは思わんが。 > センターのコンピュータ程度なら、基本的な構文(if,for,while等switch使わないだろ)だけでいいし、覚えるのなんて楽勝だろ。 > basicからの不便と言えば、変数の宣言と、gotoがつかえないことくらいだろ。 > グラフィック用のライブラリも適当に用意すればいいし。 > ちなみに最近はベクトル複素数数列のほうが簡単な場合も十二分にありえるよ > 今日の模試だめだった 1aは14点 2bは4点。 > 文字の意味がわかりづらいんですけどどうすればいいのかな? > 何のプログラムか書いてないときとか困っちゃいます
> basicの様な遺物じゃなく > Cやjava見たいな役に立つものに変えて欲しい > basicなんて勉強してたら、逆に頭が悪くなる。 ちょっとワロタ 現場では、BASICよりCのほうが遺物化してますよ。 今時C++でないCなんてほとんど見ない。 センター試験のほうも見てみたけど問題もひどいね 言語仕様なんて穴だらけだし
センターのプログラムがレベル低いのは(簡単という意味だけでなく設問のレベルも) 教える側にも問題あるんじゃないかな 他の教科と違って歴史が浅いから、教える側もあんまりよくわかってなかったりね。 大学でちょっとやっただけとか、まともに習ったことなんかなかったりとか。 テキストとかもこなれてなさそうだ。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
127 :
132人目の素数さん :03/08/06 06:49
10
128 :
132人目の素数さん :03/08/06 07:14
C#やれ
129 :
132人目の素数さん :03/08/06 07:47
そんな将来性のない言語やってどーする。 BASICは永遠だ。
130 :
132人目の素数さん :03/08/11 16:44
131 :
132人目の素数さん :03/08/11 16:45
↑十進BASICね
132 :
132人目の素数さん :03/08/11 17:03
133 :
132人目の素数さん :03/08/11 17:09
「computerを教える」か「computerで教える」かにによるんじゃねーの。 さらさらっとグラフを描いたり、モンテカルロ法の実験したりするとかなら BASICでも十分だし。数値演算がちと得意な script言語ぐらいのつもりで。 まあ、これももっとちゃんとしたことやろうとしたら力不足なのは当然だが 最大公約数的としてはいいのかもしれん。 俺が小学校のころそろばん買わされて転がして遊んでたみたいに、 ひたすらキーたたいて AAを描いて喜ぶ厨房とかが多くなるのかしらん。 「computerを教える」なら BASICが不向きなのは当然だな。 Haskellや Lisp使って計算の本質を教えるとか、assemblerで ひたすら低レベルな部分をみせるとか。
Perlでいいじゃないですかー いまどきどうしてあんなつぶしの効かない言語を公的試験に? まあBasicがスクリプト言語だっていう見方は悪くないとは思うけど 少なくとも Using gotos considered harmful ですよねー
Perl は便利だけど、授業で使うのにふさわしい言語じゃないような 気がするな。病的折衷主義者のガラクタ生成装置だっけ? Perlのソースコードは多言語と比較するとやっぱり汚くて見づらいもん。 プログラミング入門にはJavaScriptあたりが一番いいと思う。 C/C++と文法が似ているから移行する踏み台にもなるし。
136 :
132人目の素数さん :03/08/12 16:52
>>132 もちろんフリーソフトですよ
計算結果がコピペできるのがうれしい
大受厨ですが、記述式で、 001 y=ax^2+bx+c 002 y=dx^2+ex+f 003 001<=> x=(ry 004 (ry *** QED とかよくわからんけど要するに行番号振ってそれ使って書く人いるかな?
>>137 いない。
間に一行入れたくなったら大変だし。
普通式の右に ------ (1) とか番号打ちます。
行番号って連続である必要はないと思うが
140 :
132人目の素数さん :03/08/13 19:55
>>135 JavaScriptは是非とも覚えてほしくない言語だな。
言語としてのポリシーが全くなく、なんとなく見た目が良さそうな
構文を採用していったらにっちもさっちも行かなくなった言語に思える。
だいたい、LiveScriptって名前だったのに、SUNが Java出したら
尻馬に載るために JavaScriptって名前を変えたのが policyのなさの典型。
あんなのを使わせたら、IEだけで動くけど潰しが効かずすぐに破綻するコードを
書いて「program書けるぜ」って慢心しそう。
ポリシーがないのは同意だが、どうにっちもさっちもいかなくなってるのか よくわかんない。帯に短したすきに流しってこと?
そいじゃ ECMAScript でいこう。
いやJavaだな… いきなりクラスか。"おまじない"が多くなりそうだな…
プログラミングを始めるのに、Rubyはどう? OOPLだけど、すぐなじめると思うし。 ただ、現時点でまだ仕様が固定されてないのが ちょっとアレだけど。
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
146 :
132人目の素数さん :03/08/27 06:32
4
ActionScript→Perl→JavaScript→C→C++と学んできた高校3年生ですが、 センターの問題でBASICはやりたくありません。 goto文がみづらいし 変数の名前に意味がなさすぎて解りにくいし なにより検算できないのがつらいから。
148 :
132人目の素数さん :03/09/12 22:32
ついでにage
BASICの問題は普通に数学とBASICを理解出来るのならば 間違える事は無いと言うのに…やりたくないとは愚かな
150 :
132人目の素数さん :03/10/13 15:52
3
151 :
132人目の素数さん :03/10/13 18:58
BASICは馬鹿な教員にも対応できるように、教科書に乗ってるだけです。
数学者の目から見りゃ、つまり計算論の立場から言えば BASICだろうがCだろうが、何だろうが本質は少しも変わらねー。 むしろ「この命題は計算可能か?」みたいな問題のほうが よっぽど数学らしい。センター向けじゃないが。
prologだった場合は? おれは、prolog書けないけど。
>>147 の場合いろんな言語に手を出したけどどれも為らずと言ったところかな。
言語の数を自慢する奴はバグの数を自慢するようなもんだというジョークがあったな…
DO PRINT "BASICマンセー" LOOP UNTIL res=1000 END
157 :
132人目の素数さん :03/11/07 23:17
PRINT "age"
158 :
132人目の素数さん :03/11/07 23:49
教育用にはやはりBASICが最強だな。つーか、他の言語は全く「教育」とい う観点を欠いている。巨大なプログラムかく訳じゃあるまいし、ここで、 他の言語をマンセーしているやつの気が知れない。
159 :
132人目の素数さん :03/11/07 23:52
>>147 >goto文がみづらいし 変数の名前に意味がなさすぎて解りにくいし
>なにより検算できないのがつらいから。
おいおい。goto文は効果的に使えば問題なし。スパゲティになる
のは避けるべきだけどね。変数の名前の付け方はBASICの責任じゃ
ない。検算って何だ?途中でストップさせて、作った変数の値を
みられるのはBASICの強み。(インタープリタだからね)
160 :
132人目の素数さん :03/11/07 23:53
(´・∀・`)ヘー
161 :
132人目の素数さん :03/11/07 23:55
>>159 >途中でストップさせて、作った変数の値を
>みられるのはBASICの強み。(インタープリタだからね)
CでもFORTRANでもJavaでもアセンブラでも見れますが何か?
162 :
132人目の素数さん :03/11/07 23:58
163 :
132人目の素数さん :03/11/08 00:02
要するに、言語(というかインタープリタ)の中にデバッガも含めているだけの話じゃん
>>155 あれを見て自慢だと思うのは、君のコンプレックスか何かだろ。
別に5つほど知ってるぐらいざらだし、自慢でもなんでもない。
関数型も制約論理もやったこと無いのかー、とか思えよ。
165 :
132人目の素数さん :03/11/08 10:52
>>163 BASICは途中で実行を停止して、ダイレクトモードで
s = 0:for i=0 to max:s = s+sin(a(i)):next:print s
なんてのが実行できるぞ。
166 :
132人目の素数さん :03/11/08 13:39
Pascal が好きでつ
初歩的なレベルに限れば、 習得が楽で直感的に読みやすい言語はBASICだな。 数学の学習のためであればBASICか FORTRANでいいとおもう。 プログラムをやりたい人間にはお勧めできない。 JavaScriptは読みづらく書きづらい言語だが 用途が独特なので使わざるを得ないところか。
168 :
132人目の素数さん :03/11/09 01:32
昔のコーエーのゲーム「三国志」「信長の野望」等のプログラムは、そのま まBASICでリストがみれたんだよね。で、そのスパゲティたるや…。 おまけに、プログラムの最初に、on error goto 文と resume next文で、 「どんなエラーをも完全に無視する」コードが書かれてたんだ。 これを見ると、まっとうなプログラマー目指すにはやはりBASICは勧められ ないなと思ったもんだ。でも…ゲームは結構おもしろかった(w でも、皆が皆プログラマーになる必要は全くないし、初心者が学習用として 使用したり、数学の計算をぱぱっと直感的にコーディングするには、やはり BASICは最強だと未だに思っている。 業務とかだって、EXCELとか、ACCESSとかにはBASIC入っているよね。それで 生活している者も多いと聞く。VBなんかはもうBASICって雰囲気は皆無だけど… 万能な言語がないってのは定説だ。だからこそ、教育用としてはBASICが 最強だろう。
168の言う教育用とは、プログラミングの教育という意味では たぶんないだろう。 ではいったい教育用とはなんのことなのか?
170 :
132人目の素数さん :03/11/09 03:03
>>169 別に本格的なプログラミングに進む最初の段階で導入してもいいと
思っているぞ。ダイレクトモードで変数の値の変化を実感しながら
プログラムの学習をする。いきなり、Cなんかやるよりまし。
後、高校でやるとかね。
プログラミングの教育用でなければ いったい教育になぜプログラム言語が必要なの?
172 :
132人目の素数さん :03/11/09 12:13
>>171 そんな事を言えば、一切の勉強の必然性がほとんど消滅する。いったいなぜ
古文を…漢文を…歴史を…化学を…えとせとら
手続きを明文化する能力って必要だと思うけどね。特に数学では。
173 :
132人目の素数さん :03/11/09 13:54
一松さんが好きなだけじゃない?
174 :
132人目の素数さん :03/11/09 16:41
一松サンって?
175 :
132板目の素数さん :03/11/09 16:51
>174 一松シン.
178 :
132人目の素数さん :03/11/14 23:28
System.out.println("age");
179 :
132人目の素数さん :03/11/14 23:36
ポインタか参照(両方OKなら、なお可)のない言語なんて意味ねー
ちょっとした計算はBASICでじゅうぶんだ。
ちょっとしてない計算はBASICで不十分なのか?
まともな参照があればポインタはいらんな
183 :
132人目の素数さん :03/12/05 07:13
22
306
185 :
132人目の素数さん :03/12/28 06:17
21
186 :
fushianasan :03/12/30 15:11
>>130-132 放送大学数学とコンピュータで採用されとるよ
ブルーバックスからも出てる!検索してみ
アルゴリズム教えられればなんでもいいんじゃないの? アルゴリズム以外で覚える要素が少ないBASICにしてるだけかと。 とマジレスしてみる。
812
189 :
132人目の素数さん :04/01/23 06:47
21
190 :
132人目の素数さん :04/01/28 14:05
191 :
KingMathematician ◆5lHaaEvFNc :04/01/29 21:36
昔のBASICでも、配列を使って行列計算ができる。
192 :
132人目の素数さん :04/02/03 06:32
22
193 :
◆tsGpSwX8mo :04/02/12 16:30
言語としてのBASICは別に個人的には問題はないと思うし、すでにプログラムを習得してる人なら、 言語を選べる自由があれば目的によって組みやすい言語とか自分の得意な言語を使えばいいと思う。 でも最近はBASIC(というかVB)しかしらんやつはコードが汚いのが多い気がする。 ほんとはBASICという言語じゃなくてVBのIDEが汚いコードの元凶と思うけど、 同じ処理を何回もだらだらと書いたてたり無駄に長かったりするし。 IDE環境は使い方を覚えれば初心者に易しいとは思うけどプログラムを組むという意味では 初心者こそ自分の頭で組み立てなきゃいけないべたなエディタで組めるような 言語が個人的にはプログラムの習得にはいいとおもいまつ。 趣味でやるなら汚くても自分さえ解ればいいけど仕事とかでやるなら他人がわかりやすい コードを書くことも重要・・・最低でも汎用的な処理は関数化しる! マジレス&すれ違いスマソ
195 :
132人目の素数さん :04/03/06 21:13
772
196 :
132人目の素数さん :04/03/06 21:19
数学より文学なのかな
197 :
132人目の素数さん :04/03/06 22:12
100 print "センターに頻出のプログラム(w" 110 input "a=";a 120 for b=1 to a 130 for c=1 to b 140 if a^2=b^2+c^2 then s=s+1:goto 150 150 next c 160 print a;",";b;",";c 170 next b 180 print "s=";s ↑このプログラムは正しいのですか?
140のgoto 150って意味ないんだが…? たぶん文法的な間違いはないはず。
s=s+1 が気になるけど、変数の初期化とかしなくて良いのかな? BASICは全く知らんので的外れならごめん。
200 :
132人目の素数さん :04/03/06 23:55
入力した数を斜辺とする直角三角形で 他の二辺の長さも整数なものを リストアップし個数を数えているようだが‥
140行の goto 150 を削って、そこに160行の print a;",";b;",";c を もって来ればいいんじゃないの。もちろん160行は削除。 あと、始めの方で s=0 としないといけないだろうね。
203 :
132人目の素数さん :04/03/07 02:27
>>194 おまけに今のVB.NETはVisual Basicに無理矢理オブジェクト指向言語を
組み込んだものだそうで、初心者への壁はやたら高いそうだ。
なんでそんなことするんだろうね。Basicは手軽さが命なのに。オブジェ
クト指向言語やりたいなら、C++かJavaでもやれば良いのだから。
OOが組み込まれている言語っていっても 使わないでプログラミングもできるんじゃないの? VB.net使ったことないけどさ。 てか、VisualBasic自体OOPLだったはずだけどな。
手軽さを求めるなら EXCELL VBA がいいと思う。
206 :
132人目の素数さん :04/03/07 14:44
>始めの方で s=0 としないといけないだろうね。 デフォルトで変数値はゼロになってると思うよ
フリーで使える言語でグラフィックが簡単に描けるのってBASIC以外にありますか? 媒介変数表示された式の3次元図形の形の検討つけるのにBASIC使いますが。
208 :
KingMathematician ◆5lHaaEvFNc :04/03/10 14:00
209 :
132人目の素数さん :04/03/10 20:30
210 :
KingMathematician ◆5lHaaEvFNc :04/03/11 18:05
Re:
>>209 アルゴリズムを組む練習には、N88BASICで十分だと思う。
211 :
132人目の素数さん :04/03/12 00:07
そうだね。Cなんかやってもアルゴリズムと関係ない部分をかなりやら ざるをえないから、教育的じゃない。
初歩的なアルゴリズムに関してはそうだな。 でもちょっと高度になってきて、それなりのデータ構造を使いたくなったりしたら、 むしろ BASIC (N88 とかの) のがアルゴリズムとは関係無いことをやる必要が出てくる。
>関係ない部分をかなり ってのは、どのあたりのこと?
数学という観点からすると、十進basicが適当かもしれないね。 初歩的段階としては、十進小数を2進法で表現すると発生する誤差がないので。
215 :
132人目の素数さん :04/03/12 12:11
世の中にはコボラーと呼ばれて忌み嫌われる集団もいることを忘れずに。
216 :
132人目の素数さん :04/03/12 18:28
217 :
132人目の素数さん :04/03/12 18:36
>>214 今のVisualBASICなどは、不必要に肥大化しているから、それが教育的
にはよいかもね。
>>213 211はC言語が分かってないだけだから、
そんなこと訊いてもまともな回答は無いよ。
219 :
132人目の素数さん :04/03/12 18:41
>>218 おいおい。煽るなよ(w
ヘッダーファイルとか、整数を返しボイド型変数を引数にもつ関数mainの
定義とか、画面表示関数とか…いちいち説明する必要あるだろ。
ごめんちゃい(w その辺のことは「とりあえずこう書いておけ」で 済ますって話もあるかもしれんし、 > 関係ない部分をかなり ってのが他のとこを指してるのかもしれないわけで、 どのあたりって訊いてるのにぐらい答えれよって思ったのだよ。
221 :
132人目の素数さん :04/03/12 19:28
>>220 「とりあえずこう書いておけ」ってのは教育には使ってはいけない
用語だと思う…。この言葉を受け入れる生徒も確かに多いが、逆に
この言葉で学習を拒絶する「頭の良い」生徒も多い。
cは文法などの仕様の厳密性も比較的高いし 頭の良い生徒なら説明すれば理解するだろ
223 :
132人目の素数さん :04/03/12 20:33
> 「とりあえずこう書いておけ」ってのは教育には使ってはいけない用語だと思う…。 俺はむしろ使うべきセリフだと思うけど。実際使われてるし。 プログラミングを学ぶときは実際にコードを書いて動かしながら学ぶほうがいい。 しかし、言語によっては動くコードを書くには プログラムの本筋とは別のことを書かなければいけなかったりする。 それらの非本質的なことに拘り、本筋を後回しにするのはよくない。 「とりあえずこう書いておいて」で済まし、後になって説明したほうがいい。 そういうようなことはよくある。 中学校や高校ならそういう拒絶する生徒も強制参加だから、 そのセリフを避けるってこともあるかもしれんが、 全ての教育においてそのセリフを避けてちゃ、ろくにものを教えられんよ。
>「とりあえずこう書いておけ」ってのは >教育には使ってはいけない用語だと思う… んなこたぁない。 大雑把な概念を教えるときに こまかい矛盾や厳密性を犠牲にするのは よくあること
225 :
132人目の素数さん :04/03/12 21:17
>>224 おおざっぱな概念だろ?そんなのCの部分には該当しないだろ。
226 :
132人目の素数さん :04/03/12 21:19
つーか。細かい矛盾や厳密性を犠牲にする際には、それを明言すればよい だけ。そんなのずーーーっと子供のころの教育からやっているだろ。ただ それじゃ納得できない生徒を作ってから、明言しないでそれをやるとやは りまずいと思う。
227 :
KingMathematician ◆5lHaaEvFNc :04/03/12 22:39
Re:
>>222 C言語は… 変数の型宣言を行わないといけない。
さらに、入出力関数を使うために、#includeの行を最低一つ書かないといけない。
(それを云ってしまえば、BASICには行番号という、アルゴリズムと関係ないシステムがあるが。)
228 :
132人目の素数さん :04/03/13 00:11
最近は行番号関係ないBASIC多いよね。エディタがあるからね。
>>222 挫折者が何%出ても、その「頭の良いヤツ」にかけるのか?それはもう、
学校教育じゃないな。
コンピュータに何かをさせることを教えたいのか、数学やりたいのか はっきりしてれば(N88)BASICなんて使う必要ないと思うんだが。
230 :
132人目の素数さん :04/03/13 00:54
>>229 アルゴリズムの学習だろ。BASICが駄目ならじゃ、何を使うんだ?
>>230 だったらもっと抽象的なモデルで教えてもいいと思う。
んで興味あるやつだけBASICなりCなりで実際に動かしてみるとかすればいい。
232 :
132人目の素数さん :04/03/13 01:59
>>231 2兎を追うもの1兎をも得ず。教育目標が「アルゴリズムの習得」
なんだろ、それ以上を求めたら挫折者大量発生だ。
学校教育は数%程度のごく少数に対応するように作られてはいない。
じゃぁHSPでも良いと思います。
234 :
132人目の素数さん :04/03/13 02:22
HSPは式が左から計算されるからなー。乗除を優先しないのは 数学的に痛いのでは?
235 :
132人目の素数さん :04/03/13 02:25
>>232 別にチューリングマシン教えろとか言ってるわけじゃないよ。
(ってか抽象的なモデルって言い方がまずかったな…)
言語の仕様による非本質的なおまじないに躓くほうが馬鹿らしいやん。
例えば2つの変数の値を入れ替えるのに一時変数が要る程度のことでも
十分障害になり得ると思うんだよ。
237 :
KingMathematician ◆5lHaaEvFNc :04/03/13 07:39
Re:
>>236 その点はBASICは優れているが、覚える命令が一つ増えてしまう。(swap)
238 :
132人目の素数さん :04/03/13 12:00
>>223 最初からCを教えようとするからそうなるんだろ?だからCは教育向きじゃ
ないと思うのはそれが最大の理由だ。
239 :
132人目の素数さん :04/03/13 13:57
おまえら、 十進basicだけじゃなく、U-basicももちろんしってるだろうな? どちらも行番号いらへんよ
240 :
132人目の素数さん :04/03/13 14:02
いやUbasicが行番号いらないかどうかは忘れた DOS窓じゃな・・
CだってBASICだってエディタの操作や保存や実行などなど アルゴリズムとは直接関係のないことをたくさん 覚えなければならないことには変わりはないだろ #includeやmain関数が決定的な差異になるとは思えん プログラミングを教えることが目的でないなら 実際にプログラミングをさせる必要はないと思うのだがな
242 :
132人目の素数さん :04/03/13 14:09
Syntax Error Ok ■
243 :
KingMathematician ◆5lHaaEvFNc :04/03/13 14:34
Re:
>>240 吾はUBASICでも行番号使っているが。
それより、UBASICのマニュアルが手元にないので、マニュアルを売っている店とか紹介してくれないか?
244 :
132人目の素数さん :04/03/13 14:48
>>241 CとBASICじゃ、その量が圧倒的に違う。
中学校でフローチャートやっていたが、やはり実際に結果がでないと
「何をやっているんだ」って感じだろうな。
ほんとうに教育的なのは関数型言語なんだろうけどね。
246 :
132人目の素数さん :04/03/13 15:32
>>236 Cだってswap()は組み込みじゃないだろ。この関数を習得するのに、どの
くらいの壁があるか…。コンピュータで飯を食う覚悟ができている生徒な
ら「覚えろ」ってやれるとは思うが、一般の生徒対象にそれはできんわな。
>>244 圧倒的といわれるほどの違いってなんだ?
#includeやmain関数以外になにかあるか?
swapのアルゴリズムも和歌乱ようなやつに いったい何のアルゴリズムを教えるというのか ‥タメイキ
249 :
132人目の素数さん :04/03/14 15:19
煽りにしては、レベル低すぎ。
誤爆?
中途半端なこと書いたせいで俺が「教育用にはCを使え」って考えてると思われてるっぽいな…。 言い訳させてもらうとBASICを名指しした理由は、現に教科書で使われてるから以上の何でもなく Cとかも教育用には向いてないと思う。 俺が言いたかったのは、記憶領域に名前が付けられててその名前がプログラム文中の式としても使えることが 初心者の理解を妨げるんじゃないかということ。 簡単な例としてはX=X+1のようなプログラム文。 これは(文字列としては)今まで方程式の形で出てきたものであろうから それに加えて新しい意味(左辺のXは記憶の更新を表し、右辺のXは値を表す)を教えるのは 大部分の生徒の頭を混乱させるだけだと思う。 だから教育用には関数型言語か、もしくは上のような混乱のない言語を使うべき。
そういやPASCALの代入は=でなく:=だね
S は <- で代入できるな。 でもおれは X = X + 1 で躓きは全くなかったなぁ。 一言説明されたら、そういうもんかで納得行ったけど。 Cで躓いたのは、型宣言、ポインタ、動的メモリ確保あたりだな。
254 :
132人目の素数さん :04/03/15 06:08
>>251 それで混乱する人ってそんないるかね?
関数型言語はおれも良いと思うけど、それを理由にってのは…。
>>253 ポインタや動的メモリ確保なんかに躓くのは分からんでもないが、
型宣言の何にどうやって躓くんですか?
型宣言で躓いたって言うのは、ポインタがらみ。 勉強し始めたころ、char* hoge; で何が宣言されているのか分かんなかった。 アドレスを返す演算子が & なんだから、char& hoge; じゃないのかと悩んだ。 void* とかもなんかなーって感じだったし。
256 :
132人目の素数さん :04/03/15 22:42
代入文はFortranから「=」の記号を使うけど、Cでもそれを採用している のはCの最大の欠点の一つだよね。 while(c=getchar()) { … } なんてできるようにするためかもしれないけど、 if(a==b && b==c && c=d && d==e) { なんて文はエラーにもならないし、きちんとコンパイルできてしかも 間違いを探しにくい。 Cでは代入文をPascalのように「:=」とすべきだったな。 BASICでも同じ。教育用といいながら、x=x+1とやらなきゃならんのは 混乱の元。BASIC普及期でも、この式がわからないって文句が実は結構 多かった。 でも、やはり代替言語ないよ。関数型言語?どれだけの生徒が「真の意味で」 関数を理解してかつ使いこなせると思うのかな。抽象的なものは、理解 できた者にとっては明快で簡潔だけど、理解できるかどうかはやはり障壁が あり、多くの生徒を対象とする「学校教育」に向くかは?? 職業教育なら 別だけどね。
>while(c=getchar()) { … } >なんてできるようにするためかもしれないけど、 これは記号に何を使うかの問題じゃないよ、 あと、どうでもいいけど >if(a==b && b==c && c=d && d==e) { はCでは文法エラー。&&のほうが=より優先されるから。 この手のバグならBASICのほうが入れやすいと思うなあ
258 :
132人目の素数さん :04/03/16 00:08
BorlandC++でコンパイルしたが、警告は出たものの、コンパイル・実行 ともすんなり通ったぞ。 BASICは目的が「初心者のプログラム習得」だから、バグの問題は 関係ない。
259 :
132人目の素数さん :04/03/16 00:15
>>258 正確には…
if ( a==b && b == c && c ==d ) {
は通らなかったが…
if ( a = b && b == c && c == d ) {
は通ったな。
>>252 放送大学の講義で言ってましたが、数学者にとっては = は左辺と右辺が等しいことが、
しみこんでいるので、代入として使用するにはどうにも生理的に気持ちが悪いようです。
それでPASCAL作るときに、その様にしたようです。
261 :
KingMathematician ◆5lHaaEvFNc :04/03/16 07:42
Maximaでは:が数値の代入で、:=が関数定義で、=が等式となる。
Cが代入を=、比較を==にしたのは タイプ量を減らす目的があったと 何かの本で読んだ。
263 :
132人目の素数さん :04/03/17 00:02
>>257 >>while(c=getchar()) { … }
>>なんてできるようにするためかもしれないけど、
>これは記号に何を使うかの問題じゃないよ、
Cが条件式の中で代入文を使えなくしなかったのは、上の例とか、
if((file = fopen(argv[1], "r")) == NULL ) {
if((c = fgetc(file)) != EOF) {
みたいな例の為になんだろ?その為副作用があって、上のように
エラーにはならないが、間違いやすい例が出てくるのは事実。Cの欠点の
一つだと言ってもいいだろ。
Fortran の最大の欠点はDO文だな。
DO I=1,100,2 これは、ENDDO までの間をI=1,3,5,7,…と繰り返す命令だが…
DO I=1.9,6 コンマとピリオドが非常にまぎらわしい。実際これでスペースシャトルが止まった。
264 :
132人目の素数さん :04/03/17 00:04
>>262 たったそれだけの意味しかなかったんだよね…。まあ、後々のコトが
完璧に分かる人間はいないけど。
ていうか、混乱なんてしないし、別に良かったと思うけど。
人生、慣れだよ。
代入文で x + 3 = 10 とかやると自動的にxに7が代入されたりしないんですか。
>>267 しないよ。エラーでる。
いずれの言語でもだめぽ。
269 :
132人目の素数さん :04/03/17 21:22
>>265 C言語原理主義ですな。宗教じゃないんだから、長所短所を冷静に判断で
きなきゃ駄目だと思うがのう。
>>267 Mathmaticaみたいなソフトで、そういうのを打ち込むと自動的に解いて
くれるソフトをつくれば良い。Mathcad?
代入に=を使わない某言語マンセーですが何か?
271 :
132人目の素数さん :04/03/17 22:48
>>270 じゃ、なんで「別に良かったと思う」なんだ?
>>269 教育用ということで短所とされているところは
実用としたら必ずしも短所になるとは限らんのだが‥
てか、=の誤用による代入のミスなんて
ほとんどの処理系ではワーニング出せるから
実際ほとんどないじゃろ。
273 :
132人目の素数さん :04/03/18 00:13
>>272 おいおい。あの短所は「教育用の短所」じゃないだろ。でも、ワーニン
グは多分出るだろうね。条件判断を複雑にしてて、ワーニングを無視して
バグを入れちゃう可能性はなきにしもあらずだけどね。
>>271 代入に=を使わない某言語マンセーですけど、
代入に=を使わないからマンセーってわけでもないし、
別に使おうとなんだろうと別に良いのです。
混乱しないどころか、この辺りのからみで今まで相当な 時間と金と労力が消費されてきたというのが実際のところじゃないの? ソフトウェア工学の本とかあまり読んだことないけど こういう問題も取り扱ってるんだよね
なんか、代入に = を使うのをやたらと問題としたがる奴がいるな。 それによるバグなんて全てのバグの何千、何万分の一とかだろうにな。
あ、何万分の一とかいう表現は良くなかった。 すぐ直せるバグもあれば、直すのが大変なものもあるし、 割合だけの話じゃないな。 まあ、これは直すのが簡単なほうだろうし。
278 :
KingMathematician ◆5lHaaEvFNc :04/03/18 11:23
それじゃあ、高校の教科書に、BASICの代入を書くときはすべて 10 LET X = 0 のように書くようにしなければならないのだろうか?
279 :
KingMathematician ◆5lHaaEvFNc :04/03/18 11:24
[
>>278 ]の「それじゃあ」がどの文を受けているのか分からなかったりする。
280 :
KingMathematician ◆5lHaaEvFNc :04/03/18 11:25
仮にそう書くとしても、 20 LET X = X + 1 なんてのはやはりおかしいな。
let x, x + 1 こんなのだったらいいわけ?w アセンブラみたいになってくるけど。 1足すだけだったらx++だけど。(VB.NET)
インクリメント演算はJavaにもあるしC++にもある、そしてアセンブリにもある。 ちなみに"アセンブラ"はコンパイラと同じ様な意味だ。
おっと忘れてた。 アセンブリの add dst,src はインテル系では一般に高級言語での dst = dst + src という意味。
284 :
132人目の素数さん :04/03/18 18:32
680x0系のアセンブラにはインクリメントないぞ。本題に関係ないけど。
285 :
KingMathematician ◆5lHaaEvFNc :04/03/18 20:22
吾はインクリメントの話ではなくて、代入文を等式で書くのはどうか、という話をしていたのだが。 ちなみに、インテル系の代入をアセンブリで書くと、movになる。
286 :
132人目の素数さん :04/03/18 20:50
数学の常識を持ち込まれましても‥ 掛け算も*だしべきも^だし
287 :
KingMathematician ◆5lHaaEvFNc :04/03/18 20:56
掛け算が*になることについては、とりあえずxと間違えずに済むというメリットがある。 冪の^は、上矢印の縦棒が消えたのが今の形だという話を聞いた。
288 :
132人目の素数さん :04/03/18 20:56
べきを^としたのは、BASICが最初?
289 :
KingMathematician ◆5lHaaEvFNc :04/03/18 21:00
云われてみると、BASIC以前に^が冪として使われているのは知らないなぁ。
ワーニング無視してバグが出やすいとか言われてもな‥
「数学とBASICの関係」「数学教育とBASIC」といった話題から かなりはずれて来てるな…
>>276 275だけど、別にとりわけ問題視してるわけでも
バグの大多数を占めると主張しているわけでもないよ。
条件式での=と==の混在の方がよっぽどアレだし>C
293 :
132人目の素数さん :04/03/19 08:01
>>290 検証してみると、条件式の中に代入文を入れると警告するだろ。(BorlandC++)
おいおい。大昔の教科書に書いているこれをやるなってことか??
Cの旨みがなくなっていく!
条件式で常に混在しているって訳でもないだろうよ。 goto使うよりちょっと多い頻度くらいって感じで。
>>293 すまん、書く前に送っちまった
if((var=getc())!=0){.
てなかんじで!=0を付ければ
ワーニング消えない?
297 :
132人目の素数さん :04/03/19 18:42
確かにワーニング消える。このワーニングの存在自体がこの手のバグの 多さを物語っているな。 しかし、本当にC原理主義者多いな。いくら自分がはまっているコトでも その良い面と悪い面を冷静に分析できなきゃ駄目だと思う。2chでも 多い歴史見直し論も同じだ。
"="が代入文として分からないと言っている奴の気がわからんでもない。 先日始めてHSPのソースを見ることになったんだが、 条件比較の時にことごとく=使っているから普段==で見慣れている 俺の方は…
とりあえずSchemeヽ(´ー`)ノ マンセー
ウチの大学の教授も言ってたが、中学の頃より永年数学一筋でやってきて、 20年程前初めてプログラム言語を見たとき、例題として、冒頭に、X=X+1 が 書いてあったのを見て、フェルマー級のおちょくり方をされてると思ったようだ。 「中学・高校の頃より慣れている諸君等にはさほど抵抗は無いかも知れぬが、 ぼくには、やはりちょっと慣れが必要だった」とも言ってた。そして、上にも誰か 書いてあったが、これは、どうも生理的に合わないとも言ってた。
>>297 > このワーニングの存在自体がこの手のバグの多さを物語っているな。
そうか? "消える"のは意図してやっているのを確認できてるからで、
プログラマは「=と==を間違えうる」と考えたら警告する機能を付ける種類の人間だ。
ワーニングの存在はこの手のバグの存在を物語っているだけで、多さは物語っていない。
303 :
132人目の素数さん :04/03/19 21:48
>>302 そろそろ粘着ぎみだぞ(w
if ((f == fopen(argv[1],0)) != NULL) error();
上の例は逆に代入を比較にしちゃった例だ。エラーを出さないどころか、
警告すら出ないぞ。
304 :
132人目の素数さん :04/03/19 21:51
if ((f == fopen(argv[1],0)) == NULL) error(); こっちの方が普通かな。
で、結局何を言いたいの? やっぱり 警告するからこの手のバグが多いって言いたいの?
306 :
132人目の素数さん :04/03/19 22:09
漏れ、個人的には「Cで書くと余計なバグが増えやすい」っていう 主張は、そんなに間違ってないと思ふ。 しかし、その中で「"="と"=="」がもっとも顕著な例なのかね? ホントに??
いや、普通の数学者or数学愛好家の注意力なら、"="と"=="を間違え たりすっかなぁ? と思って。 スレタイと全然関係なくてゴメンな。
>>306 ==を=と間違える → 事例として多い
=を==として間違える → 事例がない → バグとしては少ない
という主張をしているのかと。
間に"警告"のあるなしがワンクッション抜けてるけど勘弁
311 :
132人目の素数さん :04/03/19 23:14
>>307 他の例も一杯ある…
i=0; while(i<n) y[i]=x[i++];
は、一見正しいように見えながら、yを先に評価するか、xを先に評価するか
決まっていないため、処理系依存のプログラムだ。しかも、完璧にコンパイル
できる点もいやらしい。
>>308 複雑な条件判断の中に埋もれていたら…そんなもんだろ。
312 :
132人目の素数さん :04/03/19 23:18
つーか。俺の目的はC言語原理主義はいかんよって話だから、
君が真に
>>307 なら論争する必要ないな。
313 :
132人目の素数さん :04/03/19 23:21
314 :
132人目の素数さん :04/03/19 23:28
>if ((f = fopen(argv[1],0)) != NULL) error(); こんなコードを書く人間は会ったことがないな BSDとかのソースで見かけることはあるけど… 平気でこういうコードを書く人間とは仕事したくないね # if が while ならまだ話はわかるけど
>>314 thanx!
こんなことも知らなかったとは…
>>315 どこのツッコミを期待しているのだろう?
まーいろいろ問題はあるけど if ((c = getchar()) != EOF) の形なら c = getchar(); if (c != EOF) のでもタイプする量はほとんど変わらんし、読みやすくなるし、 間違いもない。 それに対して while ((c = getchar()) != EOF) の形なら、ばらさないほうが読みやすいというのは分かる
なんかBASICからずいぶんとはなれてるよな。たぶん、ぜったい。
ポインタ減算は記述力があがるからまあいい。 mallocのエラーを正規の結果と同じ返り値で返すのはなんでやねん。 数学板ならSchemeだよな、いやHaskellか?
Ruby。これがあれば他は要らない。 訳じゃないけど、Rubyはいい。
>>311 の示した例は、正直目から鱗が落ちた(w
漏れはC言語原理主義でも何でもないが、かといって他にどの言語
やったら良いのか、よく分かんないんだよね。
>>320 そうすか。一応教科書だけは買ってあるから、ちょっと真面目に
やってみっかなー。ビバ和製!?
>>319 >mallocのエラーを正規の結果と同じ返り値で返すのはなんでやねん。
意味不明
>>321 Rubyの参考書は勉強しづらいよ。読みやすい本がない。
HTMLヘルプ読みながら自分で書いて覚えるのがベストだと思う。
324 :
KingMathematician ◆5lHaaEvFNc :04/03/20 17:31
Rubyって、多倍長計算以外にどんなメリットがあるのだろう?
・和製である ・完全オブジェクト指向である くらいしかわからんな。
326 :
132人目の素数さん :04/03/25 23:14
a=a=0 が a = a == 0 なHSPはさすがだと思いました。
327 :
132人目の素数さん :04/03/27 15:18
9 :132人目の素数さん :03/03/05 20:29 100 print "センターに頻出のプログラム(w" 110 input "a=";a 120 for b=1 to a 130 for c=1 to b 140 if a^2=b^2+c^2 then s=s+1:goto 150 150 next c 160 print a;",";b;",";c 170 next b 180 print "s=";s run センターに頻出のプログラム(w a=?5 5,4,3 s=1 Ok
328 :
132人目の素数さん :04/03/27 23:35
>>327 間違っているんじゃないのか?
140行あたりから。
329 :
132人目の素数さん :04/03/28 06:28
BASICよりLISPのほうが簡単だし、構造的で良いのだが。 どうしても( = x 2 )みたいな書き方に抵抗あるのかね。
x 2 = のほうがイイ!!
331 :
132人目の素数さん :04/03/28 14:53
2,3+5*1,5*/3,2++23,10*2+4*-10+ はもっと!
332 :
132人目の素数さん :04/03/29 14:53
日本語で考えるとこの方が自然だよな
334 :
KingMathematician ◆5lHaaEvFNc :04/03/29 20:24
Re:
>>333 英語では、One plus one is equal to two.
日本語では、一足す一は二である。
英語では、Let x be a number.
日本語では、甲を数とする。
日本語で考えるのは少々無理がある。
数を数えるのは日本語の方が英語よりも遥かに効率的だが。
335 :
132人目の素数さん :04/03/29 22:39
1たす1は2であるって数式をそのまま読んでいるのでは? 1に1を足すと2になるだろ、ふつー。 逆ポーランド記法だね。なんで日本語記法って名付けなかったんだろ せめて翻訳するときに…
2
337 :
132人目の素数さん :04/04/22 14:08
>>335 HPが逆ポーランド式の電卓を売る時
「日本語表記式」
というような売り方をしたはず。
逆ポの電卓って今でも買えるの?
339 :
KingMathematician ◆5lHaaEvFNc :04/04/23 07:55
電卓使うようなときにパソコンなんかもって行きたくないよ
10 1 1 3 1 roll{dup 3 -1 roll mul exch 1 add}repeat pop print
476