The beast of halfpace

日々のメモ

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  107  : 記事  0  : コメント  396  : トラックバック  31

ニュース

Mozilla Firefox ブラウザ無料ダウンロード

記事カテゴリ

書庫

日記カテゴリ

アキラさんのセッション面白かったです。

でもね、やっぱりね、

覚えれば簡単に書けるようになります

ってのはどうも引っかかるんですね。

勿論、その追加された機能を覚えれば他の面倒臭い事を覚えなくて良いというなら大歓迎ですが、

新たに追加された機能によって簡単になる元の機能の知識があることが前提のような気がして…

 

とはいえ、C/C++は廃れて欲しくないからこれからも進化し続けることは大歓迎。

 

templateとかサクっと書けない人(僕)でも簡単に使えるような言語になってくれることを期待してます。

投稿日時 : 2008年7月13日 20:53

コメント

# re: C++ 0x 2008/07/13 21:23 アキラ
懇親会でも言いましたが、C++0xの入門書を誰かが書けばいいんですw
昨日紹介したのは飽くまで差分ですから。

# re: C++ 0x 2008/07/13 21:34 アキラ
で、昨日も言いましたがcppllオフ会やりましょうw(なぜここで書くw)
きっとエピさんが企画してくれるでしょうw

# re: C++ 0x 2008/07/13 22:20 出水
C++0xの半分ぐらいって、ライブラリ作る人がウンウン言いながら
あれこれ悩む部分だと思うんですよ
覚えると楽になる構文のところだけつまみ食いすればいいんじゃないですかね?

>オフ
是非行きたい!!…けどどんなオフになるんだ…

# re: C++ 0x 2008/07/13 22:31 あんどちん
入門書=初心者が理解するための本って認識しか出来ない人です

> 懇親会でも言いましたが、C++0xの入門書を誰かが書けばいいんですw
それ微妙。
その入門書の内容がC++0x前提であるとして、C++0xなら従来のC++よりも簡単に習得でき、実践的に使うことが出来るようになりますというものならいいんですけどね。
最大の問題は、その入門書の内容を読者が使えるようになるのは何年後になるかわからないってことだけどw

言語の進化の過程で機能が増えるのはC++に限らずあることだけど、今回のセッションで出ていた内容は初級者ではなく中級者以上のC++プログラマに対して優しい言語になると思いました。


# re: C++ 0x 2008/07/13 22:32 あんどちん
> で、昨日も言いましたがcppllオフ会やりましょうw(なぜここで書くw)
>>オフ
> 是非行きたい!!…けどどんなオフになるんだ…
濃いのになるんじゃないかなw



# re: C++ 0x 2008/07/13 22:38 επιστημη
これこれ、年寄りをコキ使うもんじゃぁない。
> どんなオフになるんだ…
言語規格書がおつまみです。


# re: C++ 0x 2008/07/13 22:42 あんどちん
> 覚えると楽になる構文のところだけつまみ食いすればいいんじゃないですかね?
「覚えると楽になる」を理解できるようになるまでのハードルが高いと感じたんですよw


# re: C++ 0x 2008/07/13 22:43 あんどちん
>> どんなオフになるんだ…
>言語規格書がおつまみです。
やっぱり濃くなるんだw


# re: C++ 0x 2008/07/13 22:46 あんどちん
全面的に否定しているわけじゃないんですが、良くある「より簡単にするために機能を追加しました」が必ずしも初心者にとっては簡単になっていないという悪循環に入っているような気がしたんですね。
確かに理解すれば簡単に扱うことが出来るようになるんだけど、難しいものに機能を追加したと聞けばそれだけで拒絶反応が起きる場合もあるわけで。


# re: C++ 0x 2008/07/13 23:13 επιστημη
えとね、むかしむかしテンプレートがなかった頃、#define駆使して
テンプレートもどきこしらえてたんだけど、
使う側には不便だし、作る側にはえれーめんどちかったの。

それと同じよなコトが今起こってるです。
テンプレート駆使してハックまがいのテクニックでちょー難解コード書いてます(つくるひと)。
使う側もその難解さをいくばくかは理解してないと使えない。
それがC++0xでずいぶんと見通しがよくなるなー思うてます。


# re: C++ 0x 2008/07/13 23:14 アキラ
まず、C++0xに追加される機能の多くは、今現在なくて困ってるものが入るんですよ
そして、なくて困ってる人にとっては、追加されてうれしいものが多いんです
そのへんが、昨日ぼくが話した差分の話です

で、初心者がC++を一通り覚えてからC++0xを覚える必要はないんです
知ってる人が、より簡単に教えることができるようになる、という考えもできるんじゃないですか?

vectorの初期化だって、

int ar[] = {3, 1, 4};
vector<int> v(ar, ar+3);

と教えるより

vector<int> v = {3, 1, 4};

と教えたほうが初心者にはわかりやすいですよね?
初心者にとっては、"追加される機能"というのをそもそも気にしなくていいように教えればいいでしょう。
それは情報発信する側の提供方法によりけりです。

ぼくは今回、C++をある程度知ってる人(つまり、教えることができる側の人)を対象としてC++0xで追加される機能を紹介しました。
なら、それでC++0xを知った人が初心者にわかりやすいようなC++の解説を考えればいいんじゃないですか?

前にも言いましたけど、下位互換性の問題から言語を小さくすることはできないので
言語拡張によって簡単な構文を用意するのは自然な流れでしょう
それがイヤなら簡単な言語に移るか、現在のC++の機能のままC++を使えばいいんじゃないでしょうか
C++0xの機能は使うことを強制しているわけではないですからね。

# re: C++ 0x 2008/07/13 23:28 アキラ
C++には今現在、知る人ぞ知るスーパーテクニックというものが数多く存在します
「Boostのコードなんて読めねーよー」と言ってる人多いですよね
C++0xではそういったスーパーテクニックに頼らずともBoost並のライブラリを作れるようになるし、BoostもC++0xでもし書き直されたら、より読みやすいコードになる、という考えもできると思います

# re: C++ 0x 2008/07/14 0:14 あんどちん
> επιστημηさん
> 使う側もその難解さをいくばくかは理解してないと使えない。
> それがC++0xでずいぶんと見通しがよくなるなー思うてます。
見通しがよくなって、難解な部分を理解せずとも使えるようになるならそれが一番だと思います。覚えたい人は覚えてもいいけど覚えなくても書けますよってなることを期待してます。>C++0x

> アキラさん
vector<int> v = {3, 1, 4};
この辺とかは勿論簡単に書けるようになるし素直に「やったー!」って思います。
僕が引っかかってたのってconceptとかの辺りだから。
実際可変長templateとかも便利になるなって素直に思ったし(すぐに使いどころは思いつかないけど)。

> 前にも言いましたけど、下位互換性の問題から言語を小さくすることはできないので
> 言語拡張によって簡単な構文を用意するのは自然な流れでしょう
うん。その辺は理解してるつもり。
でね、仰るとおり理解出来るものから使っていけばよいし、Better C++としてC++0xを使い始めれば良いと思うんですよね(この辺はC++をBetter Cとして使えばいいじゃんというのと同じ)。
ただ、気持ち的にアレルギー起きないかな?と。0xにおいて下位互換性は残してるけど、この機能は0xでは使う必要は無いよ!その代わりにこの機能が入ったから。という形で記述した本が出ればいいんだよね。あ、それがC++0x入門書になるのか。

> 「Boostのコードなんて読めねーよー」と言ってる人多いですよね
僕だw

C++という言語が拡張されていって言語機能としては十分なものを持つようになったから簡単に記述できる方法が追加されていくっていうのは自然な流れだと思います。
気になっているのはそこまでの歴史があるから言語仕様が大きくなりすぎて敬遠されるようになるんじゃないか?ってことなので。

> それがイヤなら簡単な言語に移るか
C++好きとしてこれは悲しいでしょ?

じゃぁどうなれば納得するんだよ!と言われると、自分でもなんとも言えないんだけど、0xが問題なく使えるようになったとき(殆どのC++コンパイラでC0xのコードが通るようになった時)に、0xをベースとして覚えれば面倒くさい方法を覚えなくてもいいよってなってればいいなぁと思います。

OSでもそうなんだけど、時代に合わせた要求を満たすためにAPIが追加されていき、その中にはより簡単にプログラムを書くために追加されたものも含まれる。しかし、その結果同じ事をするのに何通りもやり方があるとなると、どうするのが正解かわからなくてプログラムを組むことに2の足を踏んでしまうようになる。
それがC++という言語でも起きてしまうんじゃないか?ってのが気がかりなんですよ。

「こう書けば簡単ですよ」が必要とされる事例全てにおいて提示されていれば問題ないんだけど、現実にはそんなことは難しいので。


# re: C++ 0x 2008/07/14 0:43 アキラ
Conceptは、汎用ライブラリを書くライブラリアンのための機能でしょう。
初心者にいきなりそれを覚えるよう勧めようとは思わないですね
Conceptは、Conceptで実装されたライブラリを使う側が簡単になります。

list<int> ls;
sort(ls.begin(), ls.end()); // エラー!

このコードで数百行のコンパイルエラーが出ても初心者はわかるはずがないですが

「list<int>::iteratorはoperator<を持っていません」

このようなエラーメッセージが表示されれば、言語を学ぶ上でよりわかりやすくなるでしょう。

Range-baseなfor文も内部ではConceptを使用していますが、それをユーザーが知る必要もないでしょう。
ライブラリによる抽象化は、それを使うユーザーにわかりやすくすることができるので、それが「初心者のため」につながるのでしょう。

右辺値参照もそう。右辺値参照を使って実装されたクラスは、それを使う側は意識する必要がありません。
今までと同じように使えばいいです。

# re: C++ 0x 2008/07/14 0:50 アキラ
言語拡張では、「簡単に書ける」という選択肢を増やしてあげることしかできません。
なので、『Accelerated C++』のように、簡単でわかりやすく、より良いコードで、C++の前提知識を必要としないC++0xの入門書が必要なのではないかと思います。
(本に限らず、「2009年(?)のC++入門」のようなサイトでもいいです)

実際、『Accelerated C++』では、charの配列よりもstringを教え、配列よりもvectorを教えるようにして、Cの前提知識を必要とせずにC++を教えています。

それはもちろん、C++0xを実装したコンパイラが普及したころでもいいでしょう。

# re: C++ 0x 2008/07/14 10:03
C++未だにわからない人です ノ
というかCがわからない人です(あはw

コメント自体が暗号に見えてしまうんですが(爆

>懇親会でも言いましたが、C++0xの入門書を誰かが書けばいいんですw
そこはあえてアキラさんが書いちゃえばいいはなしではw

# re: C++ 0x 2008/07/14 10:03
のんです。↑

# re: C++ 0x 2008/07/14 10:59 アキラ
"誰か"というのは常に自分でありたいと思っていますが
入門書は・・・きっと Bjarne さん(C++の設計者)が書いてくれますw

# re: C++ 0x 2008/07/14 11:11 凪瀬
むしろC++ 0xから入門したほうがいいのかもなぁ。

自分は最初C++のクラスなんて理解できなくて、JavaをやってからC++に戻って「そういうことだったのかー」と思った経験があって。
今、C++をもう一度勉強すると見えてなかったものがいろいろ見えそうだけど、今からやるとしたらC++ 0xに直接行った方がいいのかもしれない。

# re: C++ 0x 2008/07/14 22:59 あんどちん
> アキラさん
> Conceptは、汎用ライブラリを書くライブラリアンのための機能でしょう。
そうですね。ライブラリ利用者が意識する必要は余り無いですね。

> 『Accelerated C++』では…
この教え方をC++0xベースで構築すれば、わかり易いものから学んでいって覚えたい人はそれ以上のものを学ぶことができますね。そんな入門書が出来てそれが教え方の標準になればC++の敷居も下がるんでしょうが…

> のんさん
最初から「あれもこれも」と手をつけてもどれも満足に覚えられずに終わってしまう事もあります。C/C++は覚えたくなったときに勉強を始めれば良いと思いますよ。
# 最強の先生もいることだし

> 凪瀬さん
だがしかし、C++0xに直接行こうにもマトモに使える環境が現在(ってか今後数年)無いというw
Java屋さんがC++やるんならJavaには無い部分で楽しむんでしょうね。


Post Feedback

タイトル
名前
Url:
コメント: