【嫌儲プログラミング部】 C++を使うな、FireFoxの本物のエンジニアが開発した Rust を使おう!

このエントリーをはてなブックマークに追加
1番組の途中ですがアフィサイトへの転載は禁止です

Rust はハイパフォーマンスアプリケーションを対象として Mozilla が開発したシステムプログラム言語である。
今回の記事では,開発者である Graydon Hoare 氏とのインタビューを紹介する。<中略>

InfoQ: 新言語の開発に至った理由は何ですか。

GH: 認知度や利用度が高く,明らかによいと言えるアイデアは他の言語にもたくさんあります。
しかしそれらの多くは,広く利用されているシステム言語ではサポートされていなかったり,あるいは非常に粗末な (安全性が低く,並行性の低い) メモリモデルの言語であったり,というのが現状です。<中略>
インターネットが高度な同時性と安全性を手に入れた今,C あるいは C++ (例えば) がいつでも妥当な選択肢であった設計上のトレードオフも,以前と同じではないはずです。

InfoQ: 開発者が Rust を選択する理由は何でしょう。

GH: 私たちがターゲットにしているのは,"欲求不満な C++ 開発者たち" です。要するに私たち自身なのです。
私たちと同じような立場にあるのなら,システムレベルの作業に C++ を選択する必要があるのは,そのパフォーマンスと配布時の特性によるものだと,何度も実感しているはずです。
それでも,もっと安全で苦労の少ないものがあればよいはずで,私たちはそれを提供できればと思っているのです。

ソース: 2012年8月8日 InfoQ
http://www.infoq.com/jp/news/2012/08/Interview-Rust
2番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:23:18.40 ID:/T20SEZ/0
■ C
for( const char *s="12345"; *s; ++s ) if( '2'<*s&&*s<'5' ) printf( "%d", (*s-'0')*2 );
■ JavaScript
console.log([1,2,3,4,5].filter(function (i){ return i > 2 && i < 5 ; }).map(function(i){ return 2 * i; }));
■ Python
print(map(lambda x: x*2, filter(lambda x: x>2 and x<5, [1,2,3,4,5])))
■ Ruby
puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2}
■ C#
new{}{ 1,2,3,4,5 }.Where(x => 2 < x && x < 5).Select(x => x*2);
■ Common Lisp
(print (loop for x in '(1 2 3 4 5) if (< 2 x 5) collect (* x 2)))
■ Haskell
print [x*2| x <-[1,2,3,4,5], x > 2, x < 5]
3番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:24:32.05 ID:KLZJGFU+0
型推論してくれないとイヤ
4番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:31:22.69 ID:KLZJGFU+0
■ Scala
println((1 to 5).filter(n => 2 < n & n < 5).map(n => n * 2))
5番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:31:53.99 ID:PLccj3Dk0
ダークマター考えたら怖くて使えない。



6番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:34:00.66 ID:GbL9zdDK0
Cとかくそとか思ってたけど今の業務で使ってたら好きになった
面白いな
7番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:34:37.95 ID:0gKz6ZuVO
>>1
FireFoxなんてものはないんだが?
Firefoxならあるが
8番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:40:10.72 ID:g5bzygkR0
>>6
複雑じゃなくて極端にシンプルだと気付くのが壁だな
バッファと扱い方しか存在しないのがC
9番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:40:27.23 ID:ncv0+eQL0
D使おうぜ
俺はつかってないけど
言語ってどうやって作るの?
「Cというのはこういう言語ですよ、こう打ち込んだらこう動いてね」っていう設定をするのもまた言語なの?
何がどうなってるの?
日本語のプログラミング言語もあるよな
教育用に使えそうだけど、どうなの?
12番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 17:56:26.69 ID:0n8sYQgr0
>>10
言語は文字列をどうやって機械語に変換するかの規則を集めただけのもの
紙とペンでやる場合もあるよ
>>2
Cでなんで'0'引くのかわからん
引いたら6と8になったけど
引かなかったら102と104になった
なんで結果変わるんだ
14番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 18:03:32.93 ID:9owTxCJZ0
C++11楽しいれす^q^
15番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 18:10:07.05 ID:pbLyDlXV0
>>13
文字コード→数字に変換してる
>>15
おおおサンキュー
17番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 18:26:48.34 ID:KLZJGFU+0
18番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 18:46:50.82 ID:WQDNJbgd0
お前らいつから始めてどのくらいプログラミングしてんの?
19番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 18:49:49.17 ID:pWuHzuKs0
でも実行効率がいいということはCみたいに低水準なんでしょう?
20番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 18:51:31.23 ID:P4hWzdtd0
Cは、概ね書いたとおりに動くってだけで、
効率が良いかどうかはロジックしだい
ダークマターの約85%はCSS關係だった
22番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:00:01.79 ID:sIKgfs420
Firefox()
23番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:00:37.70 ID:aOPMkOtB0
FireFoxの名前がIE6ばりのアレなイメージになりつつあるんですがそれは大丈夫なんですかね
232C通信が使えるようなソフト作りたいんだけど何の言語が楽なんやで?
25番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:02:53.47 ID:R1enuOLG0
車輪の再開発
26番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:04:58.41 ID:kezE4RZ70
JavaでいいっしょJK
Javaの倍早いなら考える。gcc超えちゃうけどな。
27番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:06:17.08 ID:KLZJGFU+0
オブジェクト指向と関数型言語のハイブリットで将来が期待されてるScalaこそ最強
App InventorのC言語バージョンみたいのあったらやってみたい
29番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:08:42.10 ID:rPoEefeK0
>>2
一番上、gccだと通らないよ
MS-CならMS-Cと明記した方がいい
プログラム言語って機械語にするための言語らしいけど
機械語ってのはどうやって生まれたんだよ
31番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:15:01.85 ID:j3BN/HFk0
objective-cみたいな仕組みでfunctionalなのがいいんじゃない
functional-c作りなよ
32番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:15:46.53 ID:+nAh/JMQ0
>>30
こことここに通電したらメモリの電位が変わるっていう回路があって、それを2進法での足し算になるように設計してある
んで、どこに通電するのかってのを決めるのが機械語
33番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:17:49.17 ID:TdLD6KAZP
>>30
機械語は言語じゃない
34番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:18:41.20 ID:P4hWzdtd0
>>30
CPU屋が、勝手に作った
C99じゃろ -std=c99 でおk
36番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:21:15.92 ID:nxrKlFKk0
C++11最強伝説
37番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:23:26.63 ID:9WxnBRoC0
c++でポータブルなライブラリ作るの難しすぎワロタ
stl関係全滅とか欠陥言語だろこれ
C++11て標準でregex使えるんだっけか
39番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:47:25.62 ID:/bDjy/1/0
>>35
未だにデフォルトじゃないのは
なんか欠陥あるんだろうなと思って
使ってないや
40番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:58:18.86 ID:P4hWzdtd0
C99は、問題無く使えるよ。
他の処理系に移植する場合を考慮してるんじゃね
41番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 19:59:32.03 ID:LtFnpBYD0
Disjoint Unions = Sum Types = Tagged Unions = Algebraic Data Typesだから
非交和なんて訳し方じゃなくて単に代数的データ型って訳したほうが良いと思った
42番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:02:39.03 ID:AmTEUXLi0
>>30
機械語 って表現は、機械が01の数字列を読み込んで行く様から、
人間があたかも文字を解釈している様に準えて言われる様になっただけで、
言語ではない。
厳密には、人間側には01の数字列が並んでいる様に見え、機械にとっては、
内部の電子回路の制御システム命令文になってる。
で、どの数字列がどの制御命令に対応してる勝手のは、CPUメーカーが勝手に決めてる。
基本的には大きな変更はしないけど、拡張を繰り返したり、最適化したりしてる。
つまり、インテルさんがコンピュータ全ての動作を決めてる。
C++の実行時型情報ってどんなときに使うんだ?
44番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:03:13.32 ID:D4YM9GBH0
そんな俺は大学でfortran(核爆)
45番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:03:39.67 ID:nP0/PYmb0
C++しか使えん
46番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:21:37.38 ID:/6xs9bxwP
>>42
最後の行が大嘘
インテルがAMDやモトローラのマシン語を決めてるとでも?
47番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:24:14.05 ID:Cbog9aYq0
今のx86/AMD64ははるか昔に作られた命令セットの拡張に過ぎないし
CPUの中味なんてx86/AMD64ハードウェアアクセラレーター状態とも言えるしなあ・・・
ソフト的に実現したのがクルーソー
p2でネタに全力でつっこむとか・・・
49番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:27:41.95 ID:byaFpx7J0
新しい言語とかいらんからライブラリを作ってもらえれば
50番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:28:52.14 ID:Cbog9aYq0
俺?
固定回線だよ
p2も使ってないし
51番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:29:43.67 ID:jSf6ldK60
錆?

なんだ?
52番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:40:58.08 ID:OQw8zqzz0
>>2をJavaで書いても普通に2行で、しかも分かりやすく書けるんだけど、
(下の例は4行だけど、for のブロックの改行なくせば2行になる)
無理に1行で読みにくく書く意義ってあんの?
いくら行数を少なく書いても結局コンパイラーが同じように直してしまうし、
保守する側から見たら、>>2みたいなコード書かれたらうざいだけじゃね?

int array[] = {1, 2, 3, 4, 5};
for (int x : array) {
  if (x > 2 && x < 5) System.out.println(x*2);
}
53番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:43:03.98 ID:5B2XRDE70
生まれたときから錆びついた言語ってこと?
Cだってこの場合2ケタになると破綻してしまうわけで
こんなんあるで!くらいのものでインテルが悪い
55番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 20:56:20.37 ID:edGGqoXQ0
>>52
元々はリストの内包表記から派生したコピペだった気はする。
ただ、できない言語もあるから、一つずつプリントするように強引に合わせたような。

Pythonだと本当はこれでおk
[ x*2 for x in [1,2,3,4,5] if 2<x<5 ]

1要素ずつ表示するなら
for y in [ x*2 for x in [1,2,3,4,5] if 2<x<5 ]: print(y)

内包表記使わないなら、全く意味のない例だということがわかる。
56番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 21:00:11.70 ID:2qQpXEQL0
VB.netの何がいけないの
for (int x: new int[]{1,2,3,4,5}) if (2 < x && x < 5) System.out.print(x*2 + " ");

確かにウッ
ニートかニンジャかVB.netプログラマのどれかを名乗ることにしている
>>2
これ書いた奴Python触ったことねーだろ
59番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:08:25.41 ID:4m23ZVlp0
>>2はHaskellを布教するためのコピペ
60番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:09:55.12 ID:JF9NYdxw0
ま、pythonが一番美しいんですけどね
61番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:11:34.37 ID:m0lVOymq0
テンプレート使ってメタプログラミング始めると、C++以外がもどかしくなる。
C#やりながら悶絶してたが、ラムダ式とLINQに慣れたらC#以外がもどかしくなった。

結論:
  その時慣れているプログラミング言語が一番に感じる
62番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:13:59.45 ID:LTqvw3JU0
低級言語を知ってると
高級言語が「なぜそうなってるのか」が理屈で分かったりする
高級言語オンリーだと「そう書けばそうなる」って文法ありきになるんじゃないかな
c++は禁止すべきだろそろそろ
公害じゃないか
64番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:19:58.87 ID:edGGqoXQ0
>>62
まぁ、公式だけ覚えて、応用が全くできないやつの典型だな。
情報学科だとどこでも8bit命令時代のCPUとかOSとか実習でつくると思うんだけど
中学校くらいの知性でも十分できるよね
66番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:35:47.95 ID:9IwYqPZM0
C#使うとC++には戻れないよね
67番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 22:47:50.51 ID:xzIWg/tK0
D使いやすそうだから使ってみたいんだけど、環境ちょくちょく変わるみたいだから手をつけがたい
Rustってどんなのか言語仕様調べてみたが
golangと比べてGoogleが関わっていない以外メリットないじゃん
何がしたいんだ?
69番組の途中ですがアフィサイトへの転載は禁止です:2012/08/11(土) 23:53:47.44 ID:8sckNCql0
ふぇぇ…スクリプトしか書きたくないよう…
敗北速報の言う事の反対の事をしなければこの先生きのこれない
71番組の途中ですがアフィサイトへの転載は禁止です:2012/08/12(日) 00:07:10.28 ID:10S7KmmH0
Pythonが普及しないのは
日本語ドキュメントが少ないのもあるが
2系と3系が両立しているせいで新規を混乱させるからだな
まあ現状2系列で問題ないんだろうけどね
Rustはかなり本気で追いかけてるけど、今勉強するのは全くオススメしない
言語仕様がコロコロ変わりまくりで、一ヶ月も経つと全然コンパイルが通らなくなってる
せめてあと一年は待ったほうがいいよ
>あるいは非常に粗末な (安全性が低く,並行性の低い) メモリモデルの言語であったり,というのが現状です。

Firefoxが粗末なのは言語のせい
74番組の途中ですがアフィサイトへの転載は禁止です:2012/08/12(日) 10:40:26.97 ID:e5PBB76a0
>>72
いつぞやのPHPみたいだな
>>72
じゃあなんで追いかけてるの?
76番組の途中ですがアフィサイトへの転載は禁止です:2012/08/12(日) 14:09:57.12 ID:NhgrvLKW0
Matzよろしく言語スキーなんでしょう
0.*にいろいろと求めるのは酷かもしれない
.. ???? ???? ???? ???? ????? ???????