アカウント名:
パスワード:
計算機がどのように動いているのか、データと命令とか、値としての 20h と スペース文字の区別がつかないとか、そういう事をまずは一旦理解してから高級言語へと移行するべきだと思うんだ。別に長大なプログラムをアセンブラで組めるようになれ、という意味じゃなく。
最初から高級言語だと、その高級言語が何に依存しているのか判らないんで、「床を踏み抜く」的な間違いをしでかしてしまう。
どんな未来に最適化するかで、機械語の教育の必要性は変わっていきそうですね。直接使用する業種があれば言うに及ばずですが、ほとんどの場合は「必要ない」のが現状。
機械語は、必要な人はハード制御、コンパイラ、仮想化分野、ハイパフォーマンス分野あたりで、それ以外は、一部のコーダーがデバッグの為に知っておいたほうが良い程度。つまり、大量雇用される末端のコーダーには不要で、そのためにわざわざ時間を割くのか……という話で、コンパイラだけ見ても、Microsoft、Intelなどほぼ米国に主要な技術が集中している以上は、日本は作る側というより、それに乗っかる側というのがトレンドなのも、必要性を感じさせない一因でしょう。
個人的には、歴史では「137億年の物語」みたいのが流行っていますが、チューリングマシンから機械語へのつながり、TRONプロジェクトや、CPU周りの黒歴史、OSSがビジネスに取り入れられた経緯とか、まとめて講義できないものかなと。
歴史とか、なぜそれ(例えば機械語)が必要になったのか?といった理念が大事に思い始めているのは年寄りになった証拠なのだろうか。
作業員になりたいのなら、機械語なんてもちろんいらない。でも、学位を取りたいのなら、機械語(を学ぶことで、機械がなぜこのように設計されているのかを理解すること)くらい必要でしょう。
ストーリーの文によると、いま話題になっているのはコンピュータサイエンスの学位だそうですので。
> 歴史とか、なぜそれ(例えば機械語)が必要になったのか?
なぜそれが必要になったのかを理解できれば、その必要性の程度も理解できますから、他の必要性と衝突し、どちらかを選ばないといけない場面で、どちらのほうがより必要性が高いかを自分で判断できますね。
8086が世に出たころ、医学生だった爺はバイトでPC作ってました。当時は
当時の私は、「出来そこないのハードウェアを蘇らせるのがプログラマの仕事」と信じていました。
しかし、386が普及してから、ハードウェアを扱うことはほとんどなくなりました。 (システムプログラマは別として)アプリケーションプログラマはハードウェアの呪縛から解放された訳です。 しかし、今でもコンピュータはハードウェア基盤の上に成り立っているんですよね。
本題に戻ります。私 javaは大嫌いです(と言いつつ、使ってますが・・・)。
javaが目指したもの(ハードウェア非依存)は間違っていないけど、その対価は小さくない。
頭の固い爺は「PCは道具」だと信じて疑いません。 時間がたつと画面が変わるUIは、とても不愉快(UXなんて糞くらえ。余計なことするな)。 今どきのプログラマは労力をつぎこむ先が間違っているようにも感じています。
386以降(ARM含む)のプログラミングは、「ハードエウェアは壁(OS)の向こう」です。 問題はC信仰か java信仰かじゃなく、ハードウェア依存か処理系依存か?じゃないですか?。 ハードウェア依存の時代は、泥くさかったけど、今より夢があった。
以上、爺のたわごと。時計の針は元に戻せない。今でもOSハック(sys call改造)すれば穴開けれるけど・・・。
>最初から高級言語だと、その高級言語が何に依存しているのか判らないんで、「床を踏み抜く」的な間違いをしでかしてしまう。
JAVAというかオブジェクト指向言語自体、リソースが十分にあるという前提のもとの、(広義の)富豪プログラミングの一種なのですが、タレコミのようにJAVAしかやってないと、そういう感覚が持てないんでしょうね。
Cで書いててポインタがわからないと言っている人は、その基礎をやってないからだと思う。
ほぼ同意だが、順番はどうなんだろう?高級言語やってからハードに降りていくのは無理なのだろうか
1回で覚えるようなものではないので、繰り替えして欲しいと思います。最初に、1つの講義でハード・機械語から高級言語まで実習を交えて教えて、そのあとでパラレルで良いのでそれぞれを実習を交えて教えて行って欲しいと思います。
自分が問題だと思っている点としては、C以外になかなか素直にハードまで降りていける高級言語が無いところです。
まず、インタプリタ言語は総てNG。なぜなら、できたプログラムをCPUが実際にどう実行するか、つまりCPUに投げられる命令列を見ることができないから。次に、コンパイルされる言語でも、Javaなどバイトコードベースのものは同様の理由でNG.第三に、haskellなどネイディブコードコンパイラ付き言語でも、出来上がったコードが読みにくければNG.これに関しては自信がありませんが、遅延評価のためのコードや型判定ロジックなど(コンパイル時に消える)によってCやアセンブリコードの背景とは相容れない意味不明な命令列が出来上がると予想しています。噂では、コンパイラの時点でフォンノイマン型とはべつの計算機モデルを使っているとか?聞きました。
よってCommon Lisp を推します。
CL-USER> (defun factorial (n) (if (zerop n) 1 (* n (factorial (1- n)))))FACTORIALCL-USER> (disassemble #'factorial); disassembly for FACTORIAL; Size: 101 bytes. Origin: #x1007E081D9; 1D9: 488B55F8 MOV RDX, [RBP-8] ; no-arg-parsing entry point; 1DD: 31FF XOR EDI, EDI; 1DF: B929040020 MOV ECX, 536871977 ; GENERIC-=; 1E4: FFD1 CALL RCX; 1E6: 744A JEQ L1; 1E8: 488B55F8 MOV RDX, [RBP-8]; 1EC: BF02000000 MOV EDI, 2; 1F1: 41BB05020020 MOV R11D, 536871429 ; GENERIC--; 1F7: 41FFD3 CALL R11; 1FA: 488D5C24F0 LEA RBX, [RSP-16]; 1FF: 4883EC18 SUB RSP, 24; 203: 488B0576FFFFFF MOV RAX, [RIP-138] ; #; 20A: B902000000 MOV ECX, 2; 20F: 48892B MOV [RBX], RBP; 212: 488BEB MOV RBP, RBX; 215: FF5009 CALL QWORD PTR [RAX+9]; 218: 480F42E3 CMOVB RSP, RBX; 21C: 488BFA MOV RDI, RDX; 21F: 488B55F8 MOV RDX, [RBP-8]; 223: 41BB6B020020 MOV R11D, 536871531 ; GENERIC-*; 229: 41FFD3 CALL R11; 22C: L0: 488BE5 MOV RSP, RBP; 22F: F8 CLC; 230: 5D POP RBP; 231: C3 RET; 232: L1: BA02000000 MOV EDX, 2; 237: EBF3 JMP L0; 239: CC0A BREAK 10 ; error trap; 23B: 02 BYTE #X02; 23C: 19 BYTE #X19 ; INVALID-ARG-COUNT-ERROR; 23D: 9A BYTE #X9A ; RCXNIL
おっさん登場
N88-BASIC、peekにpokeでマシン語沼にドボンしてMS-DOSでc、これが定番の順番大事もくそもこの順番しかなかたwww
学生時代は同じく。そして趣味でTurbo Pascal → Delphi仕事でFortran
実行しててなんだか、感覚的な安心感があるな、Delphi。(今はLazarusか?)この安心感が、Javaにはない。
そうかN88の時代はそうなんだ。当時も「TK-85」って奴があったけど、「何を今更」といわれていたからなあ。
自分はMS-DOSじゃなくCP/Mだった……。
昔はやりたいことやるためにハードに降りて行ったけど、今はそうしなくても何とかなっちゃうからな。
でも数回あったスラドでまず学習すべき言語は?の問いではたいてい高級言語だったりしたんだよな
i386 だとアドレッシングモードとか煩雑なので Z80 エミュレータと zasm を使用して演習しています。メモリに番地があって 0 番地から順番に実行される。命令もデータもメモリに置かれるなんてことを学生に理解してもらうのに苦労しています。それでもやらないよりはましだと信じている。
そんな単純なことを学生が理解できないなんて理解できない。どういう思考してるんだ?もしかして、かけ算のやり方から教えているような大学か?
現代のPC環境は、OSも開発環境も徹底的にそういったローレベルの情報を隠蔽してるので、理屈として暗記することは出来ても、実感がわかないんじゃないでしょうか。
国立非帝大の割と上位の大学出身ですが、元ACのような説明をしてくれる授業がありました。が、同級生には怪訝な顔をしてるのが多かったですね。
> かけ算のやり方から教えているような大学か?
せっかく、Z80なんだから、かけ算のやり方を教えなくてどうする!インストラクションが少ないのは良いことだ。
; 9 * 9
LD A,9LD B,9
LOOP:ADD A,ADJNZ LOOP
ネタなのかマジなのかわからない...。
別ACだが、9*(2^9)になっとる?
そんな感じの計算ですね。もっとも8ビットなので桁あふれして結果は0になっていますが...。
そんな単純なことを大人が理解できないなんて理解できないどういう思考してるんだ?もしかして、現状の教育現場なんて一切見た事なくて、大昔を美化した理想で語ってるのか?
そりゃ、/.Jに参加する人の大部分は教育関係者以外でしょうから、教育現場なんて見たことないと思いますよ。
理想と現実はどう違うのか、教育関係者が語ってもらわないことには、分かりません。
いや足し算さえ出来れば計算機の仕事はできる。小学生でも頑張ればきっとできる!
いっそワンボードマイコン使って演習してはどうでしょうか。実物が目の前にあると理解が早そうな気がします。
マイコンだと、一部ではプログラムメモリがフラッシュメモリ=固定で、揮発性の汎用レジスタと分かれていたりするのでちょっと危険
組み込みマイコンではハーバード・アーキテクチャ [wikipedia.org]が表に現れていることが多いですからね.
PC以上向けでは内部的にはハーバード・アーキテクチャになっていても(だから命令キャッシュとデータキャッシュが別になっていたりするし), 外に出る段階ではメモリコントローラを通して統合されていますから.
この系列のアーキテクチャに名前があることを知りませんでした。ありがとうございます。
そもそも計算機がどう動いているかというと、マイクロコード、ハーバード・アーキテクチャ、バスアービトレーション、フリップフロップ、クロック、AND/OR/NOTゲート、トランジスタ、半導体、電圧・電流・電荷、電子、・・・
とりあえず、クオークとレプトンとは?辺りから学習すればいいのですか?
クォークとか、そういう極端な話をし始めるのはよくないね。
本来は、就職のための勉強なら専門学校でやればいいはずだが良くも悪くも4大進学を望む人が多すぎて、就職予備校化してしまっているのが問題の一端ですね。
もう、専門学校にも4年制を設けて、準大卒扱いにして、流行りの言語の指導だけ、処理系の使い方だけが知りたいひとはそっちに行くようにしたほうがいいんじゃないかな。
個人的には、コンピュータサイエンスなら、語句解析や意味解析などを自作して言語を作るような講義や論理ゲートやHDLを使って簡易CPUを作るとかの内容がメインであるべきではと思うね。そっから先の半導体の実装とかの話は電子工学とか物理化学とかだから、概論で触るだけで、それ以上は"学部"でやるような内容では無いかと。
あらかじめ仕様が与えられた言語のコンパイラを作ったり、HDLでプロセッサを作成する実験は情報系の学科ならどこでもやることではないんでしょうか……?
本家の記事なので専門学校は全然関係ないのでは。
もともとの話が。
Java勉強してきた人を、メモリ管理もわからない素人って批判するのも、極端な話だということですよね?
自然界がそうなっている、というのと、人間が設計して作った、というのは区別したほうがよいのでは。
また、人間が設計して作ったものの中でも、コンピュータを実現するための多数ある実装方法のひとつなのか、(すくなくとも現行方式の)コンピュータの本質そのものなのか、も区別したほうがよいのでは。
単に自分が理解できる一番低レベルなところを基礎としているだけ。
C言語は知っているけれどアセンブリ言語はやったことのないうちの上司は、アセンブリ言語までは必要ないけれどCは基礎だから、と言っていますし。
アセンブリ言語が普通に使われていたころは、ワイヤードロジックも理解せずにプログラムができるか、とか年寄りが言っていたはず。
単に古来からある「最近の若い者は」現象にすぎませんね。
ワイヤードロジックが必要なくなったのは、Illigal Instruction 割込みが実装されたからだと思っている。
これがないと、ワイヤードロジックの裏をかいて、特定バージョンのCPUに固有な、非標準命令が使えるようになる。Z80で有名な嶋正利さんが書いたコードにはこれが多くて参った…という逸話もある。
それで出来上がるのが教祖様なら、やめておいた方がいいと思うがね
基礎ってチューリングマシンとかの数学じゃないの?
基礎ってチューリングマシンとかの数学理論じゃないの?
最初に覚えた言語の影響を受けすぎの人が結構いる。その次に覚えようとするときに、すでに知っている言語で強引に置き換えようとする○○言語でいえば、こういうことだよねって置き換えることができないとき、分からないっていってしまう。最初に覚えたときは、なにも知らないのでおきかえれなかったはず、同じように理解すればいいのに
それは基礎ではなくて初歩
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
そもそも計算機の基礎中の基礎は機械語 (スコア:5, 興味深い)
計算機がどのように動いているのか、データと命令とか、値としての 20h と スペース文字の区別がつかないとか、そういう事をまずは一旦理解してから高級言語へと移行するべきだと思うんだ。別に長大なプログラムをアセンブラで組めるようになれ、という意味じゃなく。
最初から高級言語だと、その高級言語が何に依存しているのか判らないんで、「床を踏み抜く」的な間違いをしでかしてしまう。
fjの教祖様
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:4, すばらしい洞察)
どんな未来に最適化するかで、機械語の教育の必要性は変わっていきそうですね。
直接使用する業種があれば言うに及ばずですが、ほとんどの場合は「必要ない」のが現状。
機械語は、必要な人はハード制御、コンパイラ、仮想化分野、ハイパフォーマンス分野あたりで、
それ以外は、一部のコーダーがデバッグの為に知っておいたほうが良い程度。
つまり、大量雇用される末端のコーダーには不要で、そのためにわざわざ時間を割くのか……という話で、
コンパイラだけ見ても、Microsoft、Intelなどほぼ米国に主要な技術が集中している以上は、
日本は作る側というより、それに乗っかる側というのがトレンドなのも、必要性を感じさせない一因でしょう。
個人的には、歴史では「137億年の物語」みたいのが流行っていますが、
チューリングマシンから機械語へのつながり、TRONプロジェクトや、
CPU周りの黒歴史、OSSがビジネスに取り入れられた経緯とか、
まとめて講義できないものかなと。
歴史とか、なぜそれ(例えば機械語)が必要になったのか?
といった理念が大事に思い始めているのは年寄りになった証拠なのだろうか。
Re: (スコア:0)
作業員になりたいのなら、機械語なんてもちろんいらない。
でも、学位を取りたいのなら、機械語(を学ぶことで、機械がなぜこのように設計されているのかを理解すること)くらい必要でしょう。
ストーリーの文によると、いま話題になっているのはコンピュータサイエンスの学位だそうですので。
> 歴史とか、なぜそれ(例えば機械語)が必要になったのか?
なぜそれが必要になったのかを理解できれば、その必要性の程度も理解できますから、
他の必要性と衝突し、どちらかを選ばないといけない場面で、どちらのほうがより必要性が高いかを自分で判断できますね。
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:4, 参考になる)
8086が世に出たころ、医学生だった爺はバイトでPC作ってました。当時は
当時の私は、「出来そこないのハードウェアを蘇らせるのがプログラマの仕事」と信じていました。
しかし、386が普及してから、ハードウェアを扱うことはほとんどなくなりました。 (システムプログラマは別として)アプリケーションプログラマはハードウェアの呪縛から解放された訳です。 しかし、今でもコンピュータはハードウェア基盤の上に成り立っているんですよね。
本題に戻ります。私 javaは大嫌いです(と言いつつ、使ってますが・・・)。
javaが目指したもの(ハードウェア非依存)は間違っていないけど、その対価は小さくない。
頭の固い爺は「PCは道具」だと信じて疑いません。 時間がたつと画面が変わるUIは、とても不愉快(UXなんて糞くらえ。余計なことするな)。 今どきのプログラマは労力をつぎこむ先が間違っているようにも感じています。
386以降(ARM含む)のプログラミングは、「ハードエウェアは壁(OS)の向こう」です。 問題はC信仰か java信仰かじゃなく、ハードウェア依存か処理系依存か?じゃないですか?。 ハードウェア依存の時代は、泥くさかったけど、今より夢があった。
以上、爺のたわごと。時計の針は元に戻せない。今でもOSハック(sys call改造)すれば穴開けれるけど・・・。
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
>最初から高級言語だと、その高級言語が何に依存しているのか判らないんで、「床を踏み抜く」的な間違いをしでかしてしまう。
JAVAというかオブジェクト指向言語自体、リソースが十分にあるという前提のもとの、(広義の)富豪プログラミングの一種なのですが、
タレコミのようにJAVAしかやってないと、そういう感覚が持てないんでしょうね。
Re: (スコア:0)
Cで書いててポインタがわからないと言っている人は、その基礎をやってないからだと思う。
Re: (スコア:0)
ほぼ同意だが、順番はどうなんだろう?高級言語やってからハードに降りていくのは無理なのだろうか
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:3)
1回で覚えるようなものではないので、繰り替えして欲しいと思います。
最初に、1つの講義でハード・機械語から高級言語まで実習を交えて教えて、
そのあとでパラレルで良いのでそれぞれを実習を交えて教えて行って欲しいと思います。
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:3)
自分が問題だと思っている点としては、
C以外になかなか素直にハードまで降りていける高級言語が無いところです。
まず、インタプリタ言語は総てNG。
なぜなら、できたプログラムをCPUが実際にどう実行するか、つまり
CPUに投げられる命令列を見ることができないから。
次に、コンパイルされる言語でも、Javaなどバイトコードベースのものは同様の理由でNG.
第三に、haskellなどネイディブコードコンパイラ付き言語でも、出来上がったコードが読みにくければNG.
これに関しては自信がありませんが、遅延評価のためのコードや型判定ロジックなど(コンパイル時に消える)によって
Cやアセンブリコードの背景とは相容れない意味不明な命令列が出来上がると予想しています。
噂では、コンパイラの時点でフォンノイマン型とはべつの計算機モデルを使っているとか?聞きました。
よってCommon Lisp を推します。
CL-USER> (defun factorial (n) (if (zerop n) 1 (* n (factorial (1- n)))))
FACTORIAL
CL-USER> (disassemble #'factorial)
; disassembly for FACTORIAL
; Size: 101 bytes. Origin: #x1007E081D9
; 1D9: 488B55F8 MOV RDX, [RBP-8] ; no-arg-parsing entry point
; 1DD: 31FF XOR EDI, EDI
; 1DF: B929040020 MOV ECX, 536871977 ; GENERIC-=
; 1E4: FFD1 CALL RCX
; 1E6: 744A JEQ L1
; 1E8: 488B55F8 MOV RDX, [RBP-8]
; 1EC: BF02000000 MOV EDI, 2
; 1F1: 41BB05020020 MOV R11D, 536871429 ; GENERIC--
; 1F7: 41FFD3 CALL R11
; 1FA: 488D5C24F0 LEA RBX, [RSP-16]
; 1FF: 4883EC18 SUB RSP, 24
; 203: 488B0576FFFFFF MOV RAX, [RIP-138] ; #
; 20A: B902000000 MOV ECX, 2
; 20F: 48892B MOV [RBX], RBP
; 212: 488BEB MOV RBP, RBX
; 215: FF5009 CALL QWORD PTR [RAX+9]
; 218: 480F42E3 CMOVB RSP, RBX
; 21C: 488BFA MOV RDI, RDX
; 21F: 488B55F8 MOV RDX, [RBP-8]
; 223: 41BB6B020020 MOV R11D, 536871531 ; GENERIC-*
; 229: 41FFD3 CALL R11
; 22C: L0: 488BE5 MOV RSP, RBP
; 22F: F8 CLC
; 230: 5D POP RBP
; 231: C3 RET
; 232: L1: BA02000000 MOV EDX, 2
; 237: EBF3 JMP L0
; 239: CC0A BREAK 10 ; error trap
; 23B: 02 BYTE #X02
; 23C: 19 BYTE #X19 ; INVALID-ARG-COUNT-ERROR
; 23D: 9A BYTE #X9A ; RCX
NIL
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:2, おもしろおかしい)
おっさん登場
N88-BASIC、peekにpokeでマシン語沼にドボンしてMS-DOSでc、これが定番の順番
大事もくそもこの順番しかなかたwww
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
学生時代は同じく。
そして趣味でTurbo Pascal → Delphi
仕事でFortran
Re: (スコア:0)
実行しててなんだか、感覚的な安心感があるな、Delphi。
(今はLazarusか?)
この安心感が、Javaにはない。
Re: (スコア:0)
そうかN88の時代はそうなんだ。
当時も「TK-85」って奴があったけど、「何を今更」といわれていたからなあ。
Re: (スコア:0)
自分はMS-DOSじゃなくCP/Mだった……。
Re: (スコア:0)
昔はやりたいことやるためにハードに降りて行ったけど、今はそうしなくても何とかなっちゃうからな。
Re: (スコア:0)
でも数回あったスラドでまず学習すべき言語は?
の問いではたいてい高級言語だったりしたんだよな
Re: (スコア:0)
i386 だとアドレッシングモードとか煩雑なので Z80 エミュレータと zasm を使用して演習しています。メモリに番地があって 0 番地から順番に実行される。命令もデータもメモリに置かれるなんてことを学生に理解してもらうのに苦労しています。それでもやらないよりはましだと信じている。
Re: (スコア:0)
そんな単純なことを学生が理解できないなんて理解できない。
どういう思考してるんだ?
もしかして、かけ算のやり方から教えているような大学か?
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
現代のPC環境は、OSも開発環境も徹底的にそういったローレベルの情報を隠蔽してるので、
理屈として暗記することは出来ても、実感がわかないんじゃないでしょうか。
国立非帝大の割と上位の大学出身ですが、元ACのような説明をしてくれる授業がありました。
が、同級生には怪訝な顔をしてるのが多かったですね。
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
> かけ算のやり方から教えているような大学か?
せっかく、Z80なんだから、かけ算のやり方を教えなくてどうする!
インストラクションが少ないのは良いことだ。
Re: (スコア:0)
; 9 * 9
LD A,9
LD B,9
LOOP:
ADD A,A
DJNZ LOOP
Re: (スコア:0)
ネタなのかマジなのかわからない...。
Re: (スコア:0)
別ACだが、9*(2^9)になっとる?
Re: (スコア:0)
そんな感じの計算ですね。
もっとも8ビットなので桁あふれして結果は0になっていますが...。
Re: (スコア:0)
そんな単純なことを大人が理解できないなんて理解できない
どういう思考してるんだ?
もしかして、現状の教育現場なんて一切見た事なくて、大昔を美化した理想で語ってるのか?
Re: (スコア:0)
そりゃ、/.Jに参加する人の大部分は教育関係者以外でしょうから、教育現場なんて見たことないと思いますよ。
理想と現実はどう違うのか、教育関係者が語ってもらわないことには、分かりません。
Re: (スコア:0)
いや足し算さえ出来れば計算機の仕事はできる。
小学生でも頑張ればきっとできる!
Re: (スコア:0)
いっそワンボードマイコン使って演習してはどうでしょうか。実物が目の前にあると理解が早そうな気がします。
Re: (スコア:0)
Re: (スコア:0)
マイコンだと、一部ではプログラムメモリがフラッシュメモリ=固定で、
揮発性の汎用レジスタと分かれていたりするのでちょっと危険
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
組み込みマイコンではハーバード・アーキテクチャ [wikipedia.org]が表に現れていることが多いですからね.
PC以上向けでは内部的にはハーバード・アーキテクチャになっていても(だから命令キャッシュとデータキャッシュが別になっていたりするし), 外に出る段階ではメモリコントローラを通して統合されていますから.
Re: (スコア:0)
この系列のアーキテクチャに名前があることを知りませんでした。
ありがとうございます。
Re: (スコア:0)
そもそも計算機がどう動いているかというと、マイクロコード、ハーバード・アーキテクチャ、バスアービトレーション、
フリップフロップ、クロック、AND/OR/NOTゲート、トランジスタ、半導体、電圧・電流・電荷、電子、・・・
とりあえず、クオークとレプトンとは?辺りから学習すればいいのですか?
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:2)
クォークとか、そういう極端な話をし始めるのはよくないね。
本来は、就職のための勉強なら専門学校でやればいいはずだが
良くも悪くも4大進学を望む人が多すぎて、就職予備校化してしまっているのが問題の一端ですね。
もう、専門学校にも4年制を設けて、準大卒扱いにして、流行りの言語の指導だけ、
処理系の使い方だけが知りたいひとはそっちに行くようにしたほうがいいんじゃないかな。
個人的には、
コンピュータサイエンスなら、語句解析や意味解析などを自作して言語を作るような講義や
論理ゲートやHDLを使って簡易CPUを作るとかの内容がメインであるべきではと思うね。
そっから先の半導体の実装とかの話は電子工学とか物理化学とかだから、
概論で触るだけで、それ以上は"学部"でやるような内容では無いかと。
[Q][W][E][R][T][Y]
Re: (スコア:0)
あらかじめ仕様が与えられた言語のコンパイラを作ったり、HDLでプロセッサを作成する実験は情報系の学科ならどこでもやることではないんでしょうか……?
Re: (スコア:0)
本家の記事なので専門学校は全然関係ないのでは。
Re: (スコア:0)
もともとの話が。
Java勉強してきた人を、
メモリ管理もわからない素人って批判するのも、
極端な話だということですよね?
Re: (スコア:0)
Re: (スコア:0)
自然界がそうなっている、というのと、人間が設計して作った、というのは区別したほうがよいのでは。
また、人間が設計して作ったものの中でも、コンピュータを実現するための多数ある実装方法のひとつなのか、
(すくなくとも現行方式の)コンピュータの本質そのものなのか、も区別したほうがよいのでは。
Re: (スコア:0)
単に自分が理解できる一番低レベルなところを基礎としているだけ。
C言語は知っているけれどアセンブリ言語はやったことのないうちの上司は、
アセンブリ言語までは必要ないけれどCは基礎だから、と言っていますし。
アセンブリ言語が普通に使われていたころは、
ワイヤードロジックも理解せずにプログラムができるか、
とか年寄りが言っていたはず。
単に古来からある「最近の若い者は」現象にすぎませんね。
Re:そもそも計算機の基礎中の基礎は機械語 (スコア:1)
ワイヤードロジックが必要なくなったのは、Illigal Instruction 割込みが実装されたからだと思っている。
これがないと、ワイヤードロジックの裏をかいて、特定バージョンのCPUに固有な、非標準命令が使えるようになる。
Z80で有名な嶋正利さんが書いたコードにはこれが多くて参った…という逸話もある。
fjの教祖様
Re: (スコア:0)
それで出来上がるのが教祖様なら、やめておいた方がいいと思うがね
Re: (スコア:0)
基礎ってチューリングマシンとかの数学じゃないの?
Re: (スコア:0)
基礎ってチューリングマシンとかの数学理論じゃないの?
Re: (スコア:0)
最初に覚えた言語の影響を受けすぎの人が結構いる。
その次に覚えようとするときに、すでに知っている言語で強引に置き換えようとする
○○言語でいえば、こういうことだよねって置き換えることができないとき、分からないっていってしまう。
最初に覚えたときは、なにも知らないのでおきかえれなかったはず、同じように理解すればいいのに
Re: (スコア:0)
それは基礎ではなくて初歩