C++の後継を目指すプログラミング言語「Carbon Language」がGoogleによって公開される [857186437]
■ このスレッドは過去ログ倉庫に格納されています
GitHubのドキュメントでは、C++が言語そのものにおいて数十年にわたる技術的負債が蓄積されていることなどにより段階的に改良していくことが極めて困難になっていると指摘。
そこでC++の段階的な改善ではなく、最新のジェネリクスシステム、モジュール式のコード構成、一貫したシンプルな構文といった堅実な言語基盤から再設計したC++の後継言語として開発しているのがCarbonとのことです。
Carruth氏らはまた、次のような例を示しています。
JavaScript → TypeScript
Java → Kotlin
C++ → Carbon
右辺にあるTypeScriptやKotlinはいずれも、左辺にあるJavaScriptやJavaの直接の後継というより進化形 のように見なされています。
CarbonもC++に対する同様の位置づけであることを示したいのでしょう。 Googleはすぐサポートやめて捨てるから信用できない >>8
上のc++も俺の知ってるのとちょっと違うw GNU gccとかグッチャグチャでメンテ大変らしいからね >>16
そういやGoogle謹製ならGOあるやん 型と変数なんで逆にしてんの
後継にしたいなら変にオリジナリティ出さなくていいんだが >>22
C#はマイクロソフトが開発してるからGoogleにとっては敵 >>21
パーサーの実装が楽になるって何処かで聞いた気がする 演算子の再定義ってそんなに使ってる人とか分野あるの? これ公式でもRust使えるならRust使えって言ってるぞ >>29
C++で多人数開発する場合はそれこそChromiumで行われているような何ページにも及ぶコーディング規約儲ける必要が出てくるからな
だから言語レベルで制約つけたくなる気持ちはよく分かる そういうのもういいんで
100ぺんくらい聞いたわそんなん >>21
わざわざvarとかautoとか導入してる理由考えれば
前に変数の定義なんてつけたくないのが多勢なんじゃね Googleは飽きたらすぐ捨てるから無駄
rustでええやん C♯はJavaに寄せたC++って感じで後継とは言えないな
独自のデータ構造作ったり、ポインタでバイト列に高速アクセス出来るのがC系の良さなのに、それが潰れてる ジェネリックが丸括弧はないなあ
目が滑る
まあテンプレートメタプログラミングが型族感あるから
そういう意味ではキレイに書けそうだけど 数年したらCarbonの課題ガーとか言い出すに決まってる 言語を作りたがる動機がわからないわ 既存の言語じゃ駄目なの?
>>8
Rustをベースに改良した感じか
値を返す時はセミコロンをつけませんみたいなのじゃなく、ちゃんとreturnを強制うることでわかりやすくなってますよ
StructじゃなくてClassでええやんな
スライスを引数にとるとき&つけるだけじゃ普通の参照と区別つかないからSlice関数でわかりやすくするよ
配列はArrayでいいよ、引数にクラスのオブジェクトを入れる時はいちいち型名入れなくて{}で直接渡して型推量してくれるよ
ResultオブジェクトでいちいちOk(())ってめんどくない? 値だけ返すよ
こういうことか
リフレクションを導入してくれたり、例外処理も楽になるなら、そっちのほうがいいけど
googleの言語って結局他の大企業が導入しねえから普及しにくいよね
Goも大流行するかと思ったらそうならなかったし 流行った当時のOOP脳じゃなければC++からRustは簡単やろ C++マジで嫌いだわ
合理的じゃない文法多用して収集つかなくなってるだろアレ
Rustやってると、パスパラメータから渡された情報をもとに動的に生成した文字列からモジュール名を合成してあとから関数を呼び出す、ってことができないんだわ
だからwebフレームワーク自作しようと思っても難しい
最初で想定されるルーティングを設定ファイルに全部リストしておくとかしないと、マクロ使っても処理できない
これはマジで不便ですよ
>>50
そう
マクロ使っても無理 C++後継ならランタイムライブラリも最低限だろうから実行時のリフレクションはないだろう >>51
パラメーターをキーにした関数ポインタの辞書作れば出来るけどそのコーディングを手動でやると後から追加する場合とか面倒で保守性低いから動的にやりたいって話?
だとするとこういうのはソースコードジェネレーターがあれば解決できる話なんだけどな
ソースジェネレーターなら静的に解決できるからパフォーマンスも良いし リフレクションなんて致命的バグの温床だからC++系の言語には不要だよ >>8
文末のセミコロンって何で無くならないの?
Kotlinはセミコロン排除してなかったっけ あれ?安価ミスった
手打ちじゃなかったと思うんだけど… ゲームやだからcppからは逃げられない
いまさらUe書き直すなんてありえんし >>56
リフレクション使ったことないけど何でIFとか関数オブジェクトじゃダメなのか分からない🥺 もうぐちゃぐちゃなc++は無かったことにして
C言語の後継を作ってくれ しかし一見して流行らないことがわかる糞言語だな
Googleが作る言語はどれも「ぼくのかんがえたさいきょうげんご」の域を出ないんだよな
MSの言語のように実用性に全振りでもなければ、Rustのように哲学があるわけでもない
既存の言語をただ誰かの好みで適当に弄くり回しただけでしかない >>56
Jsonが蔓延ってる現代においてリフレクション的な機能は必須だけどな
この辺は多分C#が一番進んでて、コード上のクラスをJson化する場合はリフレクションを使わずにコードジェネレーターを用いてパーソナライズしたハイパフォーマンスなコードを裏で生成するように進化してる >>59
構文解析に必要だっただけで
改行してればそれでわかるじゃんという >>65
小規模ならそれでいいよ
でも中規模以上のアプリ作る場合はそれじゃ収拾突かなくなる >>71
逆に大規模なのに型のメリット捨ててるように見えるリフレクションが良い理由がよう分からん
>>54
一行目: そう。twitterくらいの数のパスならいいけど、複数の会社に多数の機能を提供する、プラットホーム的な業務アプリとして使用しようとすると、鬼長い設定ファイルが出来上がってしまう。
二行目:そうだね。マクロで毎回処理するより、実行時にソースコードとして作ってビルドしてくれちゃうジェネレータがありゃ楽 CやC++の時代から何十年も経つのに相変わらず新しい言語を作っては捨てして
決定版が一向に決まらないのはどういう事だよ Rustさんは名前にCが入ってないから後継っぽくない >>69
リフレクション自体を否定するわけではないけど、型の保証とリフレクションを共存させるにはそういう疑似リフレクションしか不可能なわけじゃん
疑似であろうとリフレクションを使う限りは型安全とは言えなくなるし、それならわざわざ疑似のリフレクションなんぞに頼らないほうが潔いように思うんだけどな
Rustはそれでばっさりとリフレクション切り捨ててるし
>>65
スマートに書ける >>72
想定してるシーンが俺とは異なってる
例えば分かりやすいのはオンラインゲームにおけるネットワークメッセージルーティング
ヘッダのintオペコードによって呼び出す関数を変えるとかってシーンだとintと関数ポインタの辞書を作るってのが多分最も一般的なやり方だが、関数毎にキーと辞書への追加する作業が地味に面倒だしミスも起きやすい
だったら関数にメタデータをつけてリフレクションを用いて呼び出したいと考えたくなるもの >>34
科学や数学の計算用じゃない?
変なベクトルや虚数をガチャガチャいじるやつ
>>52
autoってなんだよ? C++の不満点を解消しました はい
ついでに最新の機能追加しました はぁ? 未だにセミコロンとか括弧省略できない言語リリースして使われると思ってんのかよ Co も C++ の後継とかいう前フリだったけど実際に C++ からの以降はおきず
むしろ Pythonista が大量に移民してきただけという >>83
型推論だよ
autoがない時代ってもう10年以上前では? >>80
C#の例は疑似リフレクションですらなく純粋なコードの自動生成だけどな
コード生成だからつまりコンパイル時チェックが入るということだから安全性も完璧だし Rustが徐々に普及してきてるしめちゃくちゃタイミング悪いな
C++との互換性重視っていうけどコードベースにcarbonとC++が混在ってRustが混在してるのと同じくらいだるい状況だよな >>67
Rustは哲学というかメモリ安全性モデルがちゃんと考えてあるからな
可変参照は一個までとか >>93
GOはGCあるから少し遅い
C++と同時に使えて同じくらい速い言語が欲しかったんだろう C++ の後継とバースの再来は単になにも理解してない記者の飛ばし Googleの言語とかフレームワークとか嫌
angularjsとか誰も覚えてないだろ Go→ node, python, java(kotlin)でいい
Carbon→ Rustでいい
なんで後追いするの???意味あるか? >>100
型推論するからvarで書いてるだけじゃないの?
いや、俺も画像見ただけだけど もう世の中にはC#とJavaScriptだけあればいいよ いや、angularはgoogle
msだと昔knockoutってあった
msというより、MSの社員が個人的に作ってたみたいなあれだけど
angularは日本ではあんま人気ないけど、海外だとvueと同じくらいにはある
ま、どっちみちreactの方が遥かに人気だけど >>8
var r: f32;
の時点でむーりー
型を後ろに書くのは遅延評価みたいでキモいんだよ
しかもだったらvarの予約語もいらねえだろ
しかも余計なコロンまである
C#見習えや
>>104
型付けおじさん・・・ ブロックが中かっこなのはいいな
ブロックがendなのは無理 >>21
むしろ由緒正しいPascal系やろ
PLとか思い出す if [1, 2, 3] in [Integer, Integer, Integer]
puts 'matched'
end
#=> matched
Rubyすこ var x as Array[10] of Integer
とかのがええやろ 相変わらずgoogleの言語センスの無さはいつも通りだったな >>8
{{1.0}, {2.0}}};
↑
ここおかしくね? >>122
上のはいわゆるパターンマッチの一行記法だよ
1 == Integer && 2 == Integer && 3 == Integer の意味をもつ
すべてIntegerか調べるだけならこれでいい
[1,2,3].all?(Integer) >>114
宣言以外でもアノテーションできるのかもしれない
ジェネリック変数みたいなのを型推論で宣言できるhaskellだと
後から型決定みたいなので結構使うんだけど
まあ基本的には型が決定してる関数に渡せば良いから
アノテーションはそんなに使わないけど 標準C++ライブラリは排除的な感じなのかな?
悪くはなさそうだけど
>>89
main()の前に書くんか? Rustが選べる時はそれ選んで
過去のc++資産を使わないといけないときはこっち使ってねって感じか >>129
よく見てなかったわ
最近は戻り値にも型推論使えるようになったんだよ C++のmainの戻り値は環境依存だからな
auto mainはちょっと進化を感じられる unityとかueをこれで書けるようになってから騒いでくれ ってもともとRust使えるならそっち使え、無理ならカーボンって感じなのか >>129
c++14以降だったっけか
c++03で止まってる元ユーザも多いんだろう UEのC++どうやって勉強すればいいの?
日本語資料どころか英語でも資料見つからんのだけど
オープソースだから元を全部読みとけってこと? >>140
>>138
それmain関数の始まりやろ よくわかんないけどカーボンもコンパイルするとマシン語になるのか? >>8のサンプルのコードも禄に読めない奴が大半なんだな怖い C++はいいからFortranをどうにかして欲しい googleがやるならjavaとjavascriptのjava関係の後継をなんとかしたら…… 余計な変更し過ぎだろC++おじさんってC++++じゃなきゃ移行しないでしょ GoもそうだけどGoogleが作る言語とかツールなんでことごとくググラビリティが終わってんの? プラスが3つでシャープだから
プラス4つでカーボンの分子構造 >>8
Pythonぽい
Rust知らんがもっと近いのか 検索屋なのに検索しにくいネーミングばかり選ぶ
何度も検索させた方が儲かるか >>156
大事に守られてきた後方互換性《レガシー》に美を感じるのが人類だから… >>165
faqにc++に依存してるプロジェクト向けだからrust使える環境ならrust使った方がいいよって書いてる C#で書くと
-----------------------------
using System.Linq;
class Program {
class Circle { public float R { get;set; } }
private void PrintTotalArea(IEnumerable<Circle> circles) {
var area = circles.Sum(c => Math.PI * c.R * c.R);
Console.WriteLine($“Total area:{area}”);
}
static void Main() {
var circles = new Circle[] { new Circle{R=1.0}, new Circle{R=2.0}};
PrintTotalArea(circles);
System.Environment.ExitCode = 0;
}
} >>125
閉じカッコ1個消したらコンパイルできた それでGoogleの本番環境でのCarbon実装の割合は? decltype使うまでも無いのは戻り値の方後置にしないで欲しい🥺 検索エンジンも業者に敗北したしもはやただの広告事業者 タイピングが面倒いというだけの理由で
functionをfnにしたりfloatがfになるのは美観的にむーりー >>180
バックエンドでよう使われてるしコミュニティも毎年カンファレンスあって活発や
逆にGoを失敗とみなしてるんなら理由を知りたいわ >>145
両辺に長ったらしい型名書く機会さえあれば需要に気付くでしょ ■ このスレッドは過去ログ倉庫に格納されています