パスワードを忘れた? アカウント作成
325 story

加速する日本人のアセンブラ離れ 84

ストーリー by Oliver
ケーキがあってもパンを食べればいい 部門より

kitaj 曰く,"Technology Todayによれば,日本ではアセンブラ言語への関心が薄れてきているらしい.その理由は「高級」言語の高級とは技術的に高度であることだと勘違いしていることと、情報処理技術者試験のCASL程度では実務に全く役立たないからとのこと.perlやruby,VB,javaのような便利なプログラミング言語が充実してきたこと,CPUが昔と比べて随分複雑になったことも原因かもしれない.昔は「アセンブラでコンピュータの仕組みを理解し,PASCALで構造化プログラミングを覚えてから,Cで実用プログラムを書く」とか言ったものだが,もはやそのような時代ではないのだろうか.MASMやTASMで.ifとか.whileのようなマクロを書いていたあのころが懐かしい…"

実務で直接使わなくても、やはり一度は床を這いずり回る様なアセンブラプログラミングを体験し、フォン・ノイマン型の仕組みと制約を我が身に感じなければいけないと思っているのだが、old-typeなのだろう。情報技術者の一般教養としてアセンブラは現在でも必要なのか?独学の為の教材としてはどんなものがあるのか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by G7 (3009) on 2001年06月26日 8時59分 (#3651)
    この手の話題ってCのポインタがよく引き合いに出されますが、
    俺は信じられないなあ。

    フラットで一般的なモデルであるメモリイメージの概念の理解は必要ではあっても、
    フラットでもなければ一般化もされてないCPUイメージは関係ない(!)ですよね。
    それこそ言語の高級度とか抽象度の問題を「理解」していれば、
    その無関係さはみんな気付きそうなもんだと思う。

    というか、汗かけるかどうかとかいう次元じゃなくて
    上記の抽象化された次元の視点(手前味噌で御免)のほうが
    役立つと思うんだよな。今たまたまデスクトップよりモバイル
    という時代になった(ほんとかよ)からって
    慌てて汗そのものに手を出すってのも、
    随分浅薄な心の動きだなと思う>そういう主張する人々
    分解すれば本質わかるってものじゃないのは
    大昔から諺とかで言い尽くされているはずなんだが。

    少なくとも、「低級方面の本質」とは別に
    「高級方面の本質」が存在するわけで、
    たとえば今時OOP判らないなんて奴ぁどうしてくれようか?
    とか思っちゃうわけです。そっちもまた「本質」なのですから。

    ところでアセンブラが欲しいなら
    gccのアレとかNASMとか
    色々なFREEのアセンブラが有るわけですよね。
    わざわざMやTに依存する必要なし。
    これから実際のアセンブラをやりたいといっても
    MやTなどの正に現存するアセンブラ(の文法とか)に
    拘泥するようじゃ、先が見えてる(文字通り)わけで。
  • by goubu (3245) on 2001年06月26日 6時12分 (#3641)
    少なくとも最適化にアセンブラは必要でしょう。 MMX、AltiVecとか。
    機械語がどのように実行されるかを理解しないでの デバッグは困るだろうし、 setjmp/longjmpの動作も理解できないでしょう。
    やはり、今でもこれくらいでなくちゃ。
    The Art of Assembly Language Programming
    http://webster.cs.ucr.edu/Page_asm/ArtOfAsm.html
  • by kazhik (100) on 2001年06月26日 8時06分 (#3647) ホームページ
    ここって平均年齢高そう(^^;

    アセンブラを経験したほうがよいか、という問いかけなら答えはもちろんYESだと思いますが、Javaよりアセンブラのほうが役に立つか、とか、C++の前にはかならずアセンブラとCを勉強すべきか、とか聞かれればNOでしょうね。習得すべき言語はたくさんあり、時間は限られているので、結局は選択の問題になります。

    私はアセンブラを知らなくて困ったことはありません。
  • by Terulin! (2865) on 2001年06月26日 8時35分 (#3648)
    パンがあってもケーキを食べる 部門、なのでしょう。
    もちろんその結果(プログラムの)太りすぎに悩む訳ですが。

    戯れ言はそのくらいにして。
    今でも、機械語レベルでのメモリアクセスについてある程度分かっていないと、
    Cのプログラムはうまく書けないし、人の書いたものも読むことが
    難しいように思えます。
    特に初心者プログラマがポインタの概念を理解するのに手間取るのを
    見ていると、アセンブラ勉強しとけよ!と言いたくなりますね。
  • by WindKnight (1253) on 2001年06月26日 9時19分 (#3659) 日記
    読む技術くらいは要ると思っている。

    PDAや組み込みといった、極小のプログラミングが
    要求された場合、コンパイラが生成したコードを
    チェックできる力量は欲しいと思う。

    なかなか、最新のMPU相手に、直接手で書いて効率
    を上げるのはむづかしいと思う今日この頃。
  • by fgd (2415) on 2001年06月26日 9時37分 (#3663) 日記

    C言語とポインタと言えば、

    配列とポインタの完全制覇

    も参考になります。

    -----
    fgd@最近勉強し直しちゃったのよ

  • 確かに、アセンブラそのものを今詳しくやる必要があるかどうかは疑問だけど、
    「コンパイル」という作業がなぜ必要かわからない学生はいるようです。
    コンピュータは高級言語をそのまま解釈して実行していると思ってたらしいです。
    #別にそれまでインタプリタばかり使っていたわけじゃないんですが。
    コンピュータはマシン語を解釈して実行するってことが実感としてないんじゃないかなと思います。
    #といってる私も今学生ですが、こういう同級生が何人もいたんで。
    #私の周りのごく一部だけに当てはまる話かもしれませんが。

    だから、アセンブラorマシン語をちょっとでも触れる必要はあると思います。
    高級言語しか使っていないと、こういうことを考える人が出てきてもおかしくないと思うから。
    --
    --S0R5
  • by nobuo (263) on 2001年06月26日 10時57分 (#3685) 日記
    20年ほど前から、仕事でプログラムを作っていたんだけど、そのときはFORTRAN-66だったなぁ。そのときになにかの雑誌(日経コンピュータだったかな?)で読んだ「 本物のプログラマはPASCALを使わない (原題:Real Programmers Don't Use PASCAL」を思い出しました。まぁ、この中では当時流行った構造化言語であるPASCALとスパゲティの作り易さでは一番だったFORTRANとを皮肉たっぷりに対比しているわけですが....

    個人的にはmc68000のアセンブラを長い間やっていたので、Cのポインタやインクリメントといったことを覚えるのになんの苦労もなかったですね。

    ただし、アセンブラを覚える必要があるか?というと、「本物のプログラマ」だったら何種類かのアセンブラは使えるようにならないとね。

    もちろん、私は本物ではないのでいまではJavaScriptですら、組みたいとは思っていませんが....

    --
    nobuo * Who's gonna die first? *
  • プログラミングの理解を助ける言語なので、大学のカリキュラムには組み込んでおいてほしいな。
    アメリカでは結構カリキュラムに組み込まれている場所が多いよ。
    最近はOOPをしこむ為にJavaもどんどん教えるようになったなあ、、、。
    --

    There is no spoon.
  • Re:昔は… (スコア:2, 参考になる)

    by keisuken (2614) on 2001年06月26日 12時07分 (#3695) ホームページ 日記
    > 私の場合は
    >
    > 1.BASIC でプログラムを始めて
    > 2.速度に不満を覚えてアセンブラに手を染める
    >
    > というパターンでした. こんなパターンでアセンブラいじり始めた人も
    > きっと多いはず.

    懐かしいですね。私も昔、Hu-BASIC とか N80/88-BASIC (ふ、ふるい)で、何
    がしかゲームを作っていたのですが、画面周りは遅すぎるので、ハンドアセン
    ブルで作ったコードをBASICから呼び出していました。

    今じゃ、OOPができる言語でも、そこそこ動いてくれるので特にアセンブラで
    チューニングなんてことはしません。富豪的プログラミングですか。

    でも、DVDの再生とか、そのあたりはいまだにアセンブラの世界ですし、Cは
    アセンブラしらんと理解しにくいだろうし、なくならない分野ですよね。
  • とおっしゃったのは故祝一平氏でしたよね。
    高級な頭を必要とするからだったかな。

    「情報科学者」というくくりを出すなら必須でもいいと思いますが、
    プログラマーに必須かっていえばなくてもいいかな。
    --
    -- Che Che - Bye Bye
  • ポインタを理解するためにアセンブラをやるべし、というのとは逆に、アセンブラを知らないと理解しにくいポインタは使うべきでない、という考え方もあると思います。ポインタはバグの温床ですし。C++ではSTLを使えばポインタはほとんどいらないし、Javaにはポインタ自体ありません。アプリケーション自体の効率よりも開発作業の効率のほうが重視されてきているからだと思います。
  • Re: 日本人だけ? (スコア:2, 参考になる)

    by cloudy (1160) on 2001年06月26日 16時21分 (#3765)
    Kernighan & Ritchie の The C Programming Language 第1版(1978年版)の
    Chapter 0 にはこうかいてある。

    > ... the vast majority of UNIX users (including one of the authors of
    > this book) do not even know the PDP-11 assembly language.

    つまり、Brian W. Kernighan 氏は PDP-11 のアセンブラ言語を知らなかった
    のである(PDP-11 用 C コンパイラの開発者である Dennis Ritchie がアセン
    ブラを知らないわけがないので)。awk の開発者ほどの人でもそうなんだから
    (しかもこれは20年以上前の話だ)。

    というわけで元記事の指摘は「何をいまさら」。

    無論、コンパイラ屋やOS屋、組み込み屋にとっては必須の知識。だが一般のプ
    ログラマにとって必要とは思わない(人材不足のおり、アセンブラやれなどと
    いうと辞められてしまう)。
  • 私は組み込みの仕事をしていますので,オールアセンブラのシステム開発も経験ありますし,アセンブラの知識のおかげでとても得をしています.しかし,だからといって「アセンブラの知識は必須」なんて言う気には到底なれません.

    仕事仲間にはアセンブラの素養を持たない人も多くいますが,それで困ったことは全然ありません.必要のない人は知らなくても困らないし,必要の生じた人は皆あっという間にマスターしてしまうので...

    むしろオブジェクト指向やデザインパターンなど「高級」な概念を身につけていない人から直接/間接的に迷惑を被ったことの方が圧倒的に多いので,「アセンブラなんかやっている暇が合ったら,そっち方面の勉強をしてくれ!」といいたい.

    プログラマ歴20年のおじさんである私でも,この話題は古臭く感じるなあ.「アセンブラ」を「C」に置き換えた方が,いまどきのテーマかも.
    --
    ------
    Yoshige
  • by sk (478) on 2001年06月27日 1時35分 (#3862)
    昔(といっても20年も経っていない)、
    プロセス制御用ミニコンに実機コンパイラはなかった。
    工場の大型計算機でクロスコンパイルしたバイナリを入れて出荷した後は、
    現地でのプログラム修正手段はパッチしかなかった(今の/usr/bin/patchではない)。
    ハンドアセンブルしたコードをコンパイラが生成したコードに埋め込むのである。

    当然ソースコードは常に保守するのだが、
    パッチのあたったコードと完全に同じコードが生成できるように
    ソースを維持することが求められた。1バイトたりとも違いは許されなかった。
    修正したソースコードはコンパイラに通しバイナリにした後、実機コードと比較された。
    製品として出荷されたシステムは1バイト単位で管理されていた。
    たいていの場合、ソースの保守は新入りの仕事である。

    当時のシステムの多くはもう存在しないが、完全になくなったわけではない。
    今も世界のどこかでパッチをあてているプログラマがいるはずだ。
  • 私の場合は

    1. BASIC でプログラムを始めて
    2. 速度に不満を覚えてアセンブラに手を染める
    というパターンでした. こんなパターンでアセンブラいじり始めた人もきっと多いはず.

    ちなみに,パソコン買って,最初に打込んだプログラムはセルフアセンブラだったりしました (^^;;

    最近は,というと,この前,ARM のブートストラップローダをアセンブラで書いたぐらいかなぁ.

  • by goubu (3245) on 2001年06月26日 6時20分 (#3642)
    もう少し追加です。
    http://www.nk.rim.or.jp/~jun/lxasm/asm00.html
    http://www.web-sites.co.uk/nasm/
  • アセンブラを各種言語の一つととらえるなら覚える事もないだろうけど。
    ノイマン型の機械がどの様に動作するのかを知るにはもっとも効果的だしこれを知っているか知らないかでCのポインタの理解にかかる時間はとてつもなく違うと思うのだが。
    何しろ機械の上ではこれ以上分解できない生のコードなのだから。
    ってこう思うこと自体Old typeなのかもしれない。

    もうすぐ四十郎
  • 組み込みやるんだったらアセンブラは絶対必要だよ。
  • >今時OOPわからない
    確かに知っててもらわないと仕事する上で困るけど,それは言語というより設計手法として意識されるのではないだろうか.
    たとえCやアセンブラ使ってもOOP知らないとくさったプログラムになってしまうと思うんだ.
    そういう意味からするとアセンブラというのはプログラムを書く対象をどこまで理解できるか,またたとえ高級言語で書いたとしてもプログラムの動作イメージを理解できるか,といった部分にかかってくる一つの指標となるのではないだろうか.
    もちろんアセンブラなど知らなくて上記のような事ができる人が多いと思う.
    --
    masashi
  • つまらない自分のはなし。
    NaruTo は小学生の時、
    「ある日家にパソコンが来た」だったが、
    ろくに勉強せず、「ナイコン族」を
    尻目にゲームばっかしして遊んでいた。
    大学生の頃に CASL を一応やった。
    しかし、今一ピンと来ていなかった。

     大学院に居たときに
    「Programmer's Page」という雑誌
    (「DB Magazine」はこれの子孫(爆))
    で「石から初めるプログラミング」で
    機械語の設計をしてみるという記事があり、
     そこで
    「1Byte がアセンブラの 1命令ではなく、
        さらに中で数bit毎に分かれている」
    と初めて知った。(爆)

     それから16進数の数字の羅列が
    「プログラム」だと感覚的に理解し、
    (読めるようになったわけではない)
    かつて BASIC のプログラムで「DATA」文で
    数字を並べていた部分の前に注釈(REM)として
    「機械語ルーチン」と書いてあった意味を
    やっと理解できたし、
    ゲームのプログラムをトレースして
    画像の一部を上書きするルーチンを
    Skip する改造をしてみたり、
    VZ Editor で、アセンブラが生成した数字の羅列を
    マクロに埋めこんで利用したり
    (VZ のマクロに機械語ルーチンを呼び出す機能があった)
    できるようになった。

     これでも、もう8年ほど前の話になるので、
    今では「アセンブラ」・・・というより、
    「機械語」に触れて世界が広がる・・・て場面は
    少なくなったかもしれませんが・・・。
    --
    マクロの基本は検索置換(by y.mikome)
  • by indy (3349) on 2001年06月26日 10時04分 (#3669)
    僕も、まさに同じです。
    当時は16bitの国民機PC9801がありましたけど、親にねだっても買ってもらえるわけでなく、
    MSXをなんとか買ってもらい遊んでました。
    z80のOR AとかLD、JPなど懐かしく思います。:-)
    今ではPerlとshでほとんどすんでしまうようなプログラムしか書かないケド。
    --
    - indy
  • この本僕も買いました。 このシリーズはかなり読みやすくわかりやすいですね。
    --
    - indy
  • 具体的にどういうアーキテクチャをどういう環境で触るのがいいんでしょう。
    普及率でいえば x86 なんでしょうけど、それもなんだかなぁと思わないでもない。

    おれ自身はその昔 Z80 でハンドアセンブルしたり M80 の上っ面をなめたりしたことがあるきりです。
    趣味でもお仕事でも x86 でプログラムを書いたことはないので、メモリモデルがどうのセグメントがこうの、という話は知らずにすんでます。
  • アセンブラ自体を知っていたりする必要性はそれほど無いのかもしれない。情報技術者の一般教養として求められるのは仕組みであって、アセンブラも少し勉強すればその理解がより深いものになる、といった感じでは?

    私は ょゎょゎ なんで、インラインアセンブラをちょろっと使っていた程度ですが。面倒だし。(笑)

    C言語で、特にポインタの理解に関してはアセンブラの知識が役に立ったのはたしか。でも、必須とまでは言えないかも。

    --
    HIRATA Yasuyuki
  •  兄の先生の話ですが、その昔、プログラムをCで書いたらコンパイラの挙動が変で、しょうがないから高級言語Cで書いたプログラムを中間言語アセンブラに直して、そこから機械語にするという作業を手でやったんだそうです。
     あとで、うまくいかなかったのはコンパイラのバグと判明したらしいんですけれど。

     もしかしてハンドコンパイルというのかなあと思いましたが、その昔はそこそこあった出来事だそうで、すごいなあと思いました。

     ボクはもうPerlをちょこっとしかわからない(困ったら兄に泣きつく(笑))ので、もう尊敬するお話です。みなさんすごいですね。
    --
    -------- SORAMINE Yukino
  • > 時間は限られているので、結局は選択の問題になります。
    選択の結果、低級を選択する人の割合が少なくなり、高級を選択する人の割合が多くなったということでしょう。
    #絶対数ではどうなのか&&外国と比べてどうなのかは分からないけど。

    > 私はアセンブラを知らなくて困ったことはありません。
    個々の人を見た場合、その人が高級指向なのか低級指向なのかは他人がとやかくいう問題でもないしどちらでも構わないんですけど、例えば日本という地域で括ってみた場合に(昔と比べて)高級試行に偏っているということですよね。
    今の時代、アセンブラが役に立つ場面って大抵ニッチな市場で需要がないのも確かですけど、だからといって日本全体でそういう市場を切り捨てていくのもどうかと。
  • #私もZ80ハンドアセンブル(逆アセンブルも)してました(^^;

    元ネタには『現実のパソコンを見てみると、ほぼ9割がインテル系のCPUが搭載されていて、インテル系のアセンブラをマスターできれば実務にも直結するが』と書いてあるけど、どうなんでしょう? > 実際にアセンブラを使われてる方

    Windows|PC-UNIX on x86 で実務にアセンブラを使うことなんてめったになさそうなんですけど。。
  • ニューカマーに「アセンブラ言語も知っておいてね」と言うより
    「Z80互換マイコンが載った評価ボードを買っておいで」と言うほうが、真意が伝わりやすいと思いました。

    … 中古のMSXを買ってくるほうが手軽でいいかな?
  • >フラットで一般的なモデルであるメモリイメージの概念の理解は必要ではあっても、
    >フラットでもなければ一般化もされてないCPUイメージは関係ない(!)ですよね。
    >それこそ言語の高級度とか抽象度の問題を「理解」していれば、
    >その無関係さはみんな気付きそうなもんだと思う。
    メモリイメージの概念を理解するのに一番優しいのがアセンブラだと言う認識なんだが、それではだめなのかな?
    経験上、抽象度の高い言語しか知らない新人が持っている低抽象度言語への心理的負担を砕くのはやはり一番低いところを見せると教える方が楽だというのがあるのだ。

    私は言語なんざ問題領域の記述に一番適しているものがそのときのベストチョイスなだけで、コードを書くのはどの言語も変わりないと思っているけど。
    (でもクライアントの要望の方が優先されるのでしなくても良い苦労をすることはある)
  • ってワケで、必要な人には必要かも。

    要らない人には要らない様に見えるけど、コーディングしてるときの安心度が微妙に違うような気がする。
  • by unagi (2663) on 2001年06月26日 13時20分 (#3708) 日記
    私も同じです。
    小学生の頃、ジャポニカ学習帳にハンドアセンブルしてました。Z80。
    相対ジャンプのところを四角書いて空けておいたりしてて今見るとカワイイっす。
  • by Gony (1824) on 2001年06月26日 13時39分 (#3709) ホームページ 日記
    タイトルは"日本人のアセンブラ離れ"ってなってますけど、
    これって日本だけなんですかね?
    欧米でもアセンブラと縁のない人は増えてそうな気もしますが...

    個人的にはPC上で普通に動くものなら移植性の高い高級言語のほうがいいと思いますけどね。

    --
    ごにい(ろぐいんするのなんかげつぶりだろう)
  • by syn (673) on 2001年06月26日 13時45分 (#3712) ホームページ
    次の日の記事にVisualAssemblerなんてのもあるけど、どうなんだろう?
    Visualにしたからといってアセンブラに人が集まるとは思えないけどなぁ。
    #VC++とかC++Builderってアセンブラついてないんでしたっけ?
  • 「極小のプログラミング」以外でも、チェックに使える局面は多いように思います。
     仕事でVC++を使っていますが、デバッガの「混合モード」(C++とコンパイル後のアセンブラコードの混在表示)とレジスタの内容を見て、「あ、ここが間違い」ってことが結構ありました。コンパイラの誤動作を発見したこともあります。
     こういう場合、必須ではないのでしょうが、便利だと感じています。
  • by kubota (64) on 2001年06月26日 14時50分 (#3724) ホームページ 日記
    そうそう。で、相対ジャンプにしようと思ってたら届かなくなってしまって、間のアドレスを一生懸命消しゴムで消して絶対ジャンプに書き換えたりとか。
  • 「Cは構造化アセンブラである」とも言いますね。だれの言葉でしょうか?

    たしかに、Cのポインタが難解だと言われているのは、アセンブラの単純明快な間接アドレス表現をオブラートでつつみまくったからかもしれない。(というか、ハンドアセンブルから入ったぼくにとって、MASMのラベルですでに、なぜこんな混乱をまねくようなことをわざとするのだ、と不思議に思ったものです)。

    ちなみに、ぼくは、Cのポインタが難解だという人のことを理解できないでいます。なぜあんな単純なものがわからないのか。

  • 書いた通りに、ほぼ 100% 確実に動いてくれるという点では、安心感があるかも。

    その点、VB って、とっても不安だったりする。(笑)
  • by masamic (1186) on 2001年06月26日 15時44分 (#3747) ホームページ 日記
    私も大体同じですね。
    1. BASIC
    2. FORM(Tiny FORTRAN Compiler)
    3. アセンブラ
    です。
    #当初使ってた機種がばればれですね。(^^;

    その後、VIC-1001に使用機種が変わって、
    私の場合、1982年ごろにCSALのターゲット仮想コンピュータCOMETの前身である COMP-X仮想計算機をハンドアセンブルで作ったことがあります。
    これが、後のJAVAや、FORTH等の仮想計算機の理解に大変役立ちました。

    また、スームーススクロール機能や、これを応用した。カウンタを作ったりして遊んでました。
    #あんまり完成したアプリケーション(含むゲーム)プログラムは作ったことないです。(^^;

    コンピュータの動きを知るには、マシン語(ニーモニック表記)を理解することが、
    一番良い方法のはずなので、みんなには、かならず一度はアセンブリ言語に手を染めてもらいたいと思っています。
    #最近のプロセッサは、複雑になり過ぎた嫌いがあるので、大変でしょうが…。がんばってください。
    --
    masamic
  • 「極小」というよりは、「極限」というほうがいいのかもしれなひ。

    でも、「極限」ってのは、バイナリ直読みのことだよねぇ。やはり。
  • > ゲームのプログラムをトレースして
    > 画像の一部を上書きするルーチンを
    > Skip する改造をしてみたり、

    昔のものは原画はモロ書きで、後から上書きするっていうのが多かったですからねぇ。隠しコマンドで外れるっつーのもありましたな。(しみじみ

    オフトピックですが一応突っ込んどくのが礼儀かな、と。……もしひとりで勝手に勘違いしてたらごめんなさい。(m0m
    --
    勝つて言はず、敗れて語らず、
    謙譲を崇ぶ者は君子也、怨怒を起す者は小人也。
  • そうそう、実際に触るところからやりたい。
    そのほうが手になじむような気がする。

    IO関係とか実際にはハードに依存するわけだし。
  • by Anonymous Coward on 2001年06月26日 17時51分 (#3792)
    OOP もアセンブラも、実装論も設計論も、どっちも単なる知識の引き出しに過ぎないし、優秀なエンジニアほど、引き出しは多いものと思われる。

    OOP がスケールしないようなところに OOP を当てはめようとしてもダメだし、アセンブラがスケールしないところにアセンブラを適用しようとしても、やっぱりダメ。

    そういう愚を避けるためには、幅広い知識が必要だし、結局は経験と勉強がモノをいう、というだけの話だと思います。エンジニアリングには王道はないんですな。
  • by Anonymous Coward on 2001年06月26日 17時56分 (#3794)
    もうひとつ言うと、優秀なエンジニアほど、パラダイムに対して中立である、というのもあるな :D
  • >一番優しいのがアセンブラ

    そうですかぁ?
    アドレシングモードがどうだとかこうだとか、
    あとCPUごとに概念自体のバリエーションが多すぎとか、
    結構優しくないと思うんですが…

    高低について高所恐怖症のようなアナロジーが
    引き合いに出されたように読めた(勘違いだったら御免)んで
    こっちとしては深海のイメージで捉えてるということに
    しときます(笑)。一番下って深海で凄く怖いじゃんというか
    更に下のハードはどうよ?というか(^^;

    >しているものがそのときのベストチョイスなだけで、コードを書くのはどの言語も変わりない

    ええと。自己矛盾してますよー
    本当に変わりないならチョイスする必要もないんだけど。
  • これもよく聞く説だけど、ちょっと変だよね。

    >Javaにはポインタ自体ありません

    それこそ完全制覇本などの無数の本/人に言われてることだけど、
    ポインタと参照は似ているような似ていないような概念なんで、
    あっさり「Javaにゃポインタありません」と言って大丈夫な文脈と、そうでない文脈とが、あると思います。

    >アセンブラを知らないと理解しにくいポインタは使うべきでない
    というのが、
    >「アセンブラを知らないと理解しにくいポインタ」は使うべきでない
    という意味なら同意します。
    >「アセンブラを知らないと理解しにくい」ポインタは使うべきでない
    ならば大反対します。
    どっちの意味(というか旨く表現できないなあ御免)ですか?

    少なくとも、
    ポインタつーか参照(C++ローカル用語のじゃなく)は、
    ないと話にならんでしょう。
    さもないとデータをコピーしまくる羽目になり、
    効率も落ちるし「同一性」問題にも悩まされる。
    Cとか(まして汗とか)のポインタそのものは
    厄介な面も有るけど、一般的に参照そのものが
    持つ程度のパズル性(?)は、これを解ける能力がない奴に
    プログラム(本番)をさせたくないなあ。
  • by G7 (3009) on 2001年06月26日 19時47分 (#3812)
    実態は理解してませんので質問ですが、
    ほんとに汗離れで高級偏重と呼べる状態なんですか?

    高級言語のほうにしたって、
    主だった高級言語は異国で生まれてるわけだし、
    それを活かした方法論とかも多くが異国から。
    あとユーザーベースは…どうなんでしょうね…
    あんまり語るに値するという感じも受けないんですが。

    高級言語のほうも低級のほうに負けず劣らず落ち目、
    と解釈するほうが、まだしも現実的なんじゃないか?
    という妄想に駆られるんですが、どうなんでしょう?

    というか昔の日本は、そんなに言うほど
    低級分野において「優れて」いたんですか?
    言いかえれば異国と交流して優れてると判定できる状態
    だったのですか?
  • by char (1245) on 2001年06月26日 19時48分 (#3813) ホームページ 日記

    いざ、勉強しようとして本屋へ行ったところ、参考書がみつからなかったことがある。しかたなく、図書館をいくつか回ってやっと、(当時)10年くらい前に出版されたボロボロの本をみつけたのだが、最近はどうなっているのだろうか。少なくともこの状況が改善されている雰囲気はなさそうだ。

    もちろん、古い本だから必ずしも駄目だということはなく。また、みつからなかったのは私の生活環境と探し方に問題があった可能性も大きいのだが。

    --
    char *A;
    モータースポーツ部 [slashdot.jp]
  • 「高級言語がそのまま動く」と思ってる方が、抽象化ということで言えばいいのかも。 …でも言語によっては計算量が予想できなくなるのかも。
    --
    # mishimaは本田透先生を熱烈に応援しています
  • エー、私はアセンブラのことは知らない人間なので、「アセンブラを知らないと理解しにくいポインタ」と「アセンブラを知らないと理解しにくい」ポインタの違いが分かりません(笑)。

    しかたがないのでアセンブラを離れて言うと、Cのポインタがわかりにくくなるのはポインタが指す実体を関数間で持ち回っているような場合ですね。関数Aで宣言したポインタを関数Bに渡して、そこでポインタが指す実体をアロケートして返す、というような。

    C++ならそういうことをする必要はあまりないと思います。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...