Object-oriented design patterns in the kernel, part 1
https://lwn.net/Articles/444910/
Despite the fact that the Linux Kernel is mostly written in C,
it makes broad use of some techniques from the field of object-oriented programming. >>21
「文法的に」は互換性はあるでしょ。
実際、Cで書いたコードのコンパイルが通るし、リンケージ指定してやれば.cから.cppを呼び出せるわけだし。
絶対、キャストやnull問題を持ち出す揚げ足取マンが現れると思ったから、わざわざ「文法的に」という言葉を添えたのに。
反応が予測通り過ぎて嫌になるね。なんで揚げ足取るの好きなん?
>>20みたいな反応を期待してたんだけど、想像以上にレベル低い奴多いな。 0029デフォルトの名無しさん2019/10/12(土) 23:20:00.14ID:Z2q104YO
CとC++はごっちゃでもコンパイルエラーにならないだけで、CとC++を混ぜて使うのは素人。
0031デフォルトの名無しさん2019/10/13(日) 00:09:05.82ID:43NOwa52
>>30
それはおかしい。C++の規格としてCのライブラリを追加したものを言っているのなら、それはCではなくC++のライブラリの一部。 >>29
そりゃ、OS上で動くプログラムでCとC++を混在させてたら正気を疑うけどな。
でも、今回はLinuxカーネルレベルの話でしょ。
最下層はC言語ライクな記述をして他は思いっきりC++言語特有の書き方で実装すればいいじゃんって考え方は自然だと思うけどな。
ただ、MCUとC++実現レベルの事情は詳しくないので>>17や>>20みたいな意見には何とも言えないが。
やっぱ、そこなのかねぇ...。
カーネルのコードを見ると、C++だったら良かったのにと惜しまれることがあるだけ残念。 >>31
世の中には、標準ライブラリ以外のライブラリもあるんですけど?
言ってる事、おかしくないですか? どういう意図で言ってるのかわからんのだけど
例えばzlibはc++で使うべきじゃないってことでいいのか?
C++がCとの互換性を意識して設計されているからこそCで書かれたzlibを呼び出せたりするのだが
それをC++のライブラリと見なすか、Cのライブラリと見なすかは言葉の問題でしょ
そんな話を議論して何の話に繋げる気だ?
区別する必要がないしごちゃまぜで使えるのがメリットなのに
混ぜるなとかいう人がいたからの皮肉だろ
0041デフォルトの名無しさん2019/10/14(月) 15:35:49.51ID:Cg/ykvDA
>>25
>「文法的に」は互換性はあるでしょ。
えっ
>実際、Cで書いたコードのコンパイルが通るし、
これはCで書いたコードはC++文法としてはコンパイラ出来ない
コンパイラがCのコンパイルもサポートしてるってだけやろ
>リンケージ指定してやれば.cから.cppを呼び出せるわけだし。
これはオブジェクトが互換なんやろ cで書かれたコードをc++に貼っつけた上でクラスでラップしても動くものを互換性があると言わずになんて言うんだよ
コンパイラが中で何してようが関係ないし
というかcのみのコード書こうがc++でコンパイルされて名前修飾されるでしょうに
0043デフォルトの名無しさん2019/10/14(月) 17:55:21.16ID:ljIrzJ7B
void * だっけ
評価されるかは知らんが、自分で互換カーネルをC++で作って発信したらいいんじゃね?
するわけねーだろw
実際やってみりゃどんだけひどいことになるかわかる。
てかやる気力のない無責任連中が騒いでるだけだろうけれど。
0046デフォルトの名無しさん2019/10/15(火) 16:38:47.52ID:d2lxKB6N
MONA os
>>42
なぜ extern "C" があるか理解してないな。 0048デフォルトの名無しさん2019/10/15(火) 21:48:03.84ID:m8AinitX
gcc と g++ も違うやん
0050デフォルトの名無しさん2019/10/16(水) 12:22:23.91ID:dmmazo8P
本当に上位互換が事実なら
片方いらんやろ
>>50
うん。C++とCの二つの選択肢があるのなら、間違いなくC++を選択する。
二つの選択肢があれば、だが。 ただ、カーネル開発となると知らん!
コンストラクタやデストラクタを呼ぶコードやスマートポインタを管理するコードをアセンブラで書いたりすることになりそう。linuxカーネル開発経験ないから知らんが。
0053デフォルトの名無しさん2019/10/16(水) 12:53:18.57ID:dmmazo8P
知らないならうざいだけです
知らんけど
0055デフォルトの名無しさん2019/10/16(水) 15:04:46.69ID:Th6NiMcc
>>53
お前は上位互換という所で引っ掛かってたじゃねーか
ま、お前のことなんて 知 ら ん け ど 0056デフォルトの名無しさん2019/10/16(水) 15:04:46.74ID:Th6NiMcc
>>53
お前は上位互換という所で引っ掛かってたじゃねーか
ま、お前のことなんて 知 ら ん け ど 0057デフォルトの名無しさん2019/10/17(木) 10:42:16.71ID:ewN8FeZ7
どうでもいいけど
g++ で gcc 相当の事が上位互換で出来るなら
なんで gcc がいまだに残されてるのって話
>>57
gccは「GNU compiler collection」の略で、C++、C、Objective-C、Java、Fortran等のコンパイラを集めたもの
g++は、C++のコンパイラ 単純に早くて軽いんじゃないの多分
でかいプロジェクトだと構文解析の速度とか結構変わってきそうだし
cで大丈夫でc++だとコンパイルエラー吐くのって汎用ポインタの暗黙の型変換ぐらいじゃないの
他はなんかあったっけ
0061デフォルトの名無しさん2019/10/22(火) 10:29:57.89ID:F+STirlY
gcc拡張とか使ってるとコンパイル出来ないね。
0062デフォルトの名無しさん2019/11/01(金) 14:36:39.71ID:fUonGWFa
もうリーナスの言いなりになる必要ないんじゃね?
"Linuxの生みの親"トーバルズ氏:「私はもうプログラマーではない」
https://japan.zdnet.com/article/35144738/
>もうコーディングは全然やっていない。私がコードを書くのは、ほとんどがメールの中だ。誰かがパッチを送ってくると、私は擬似コードを書いて返す。
パッチの修正にはとても慣れているので、最近ではテストもしないままパッチを修正したり、そのパッチを送ったりすることもある。
文字通りメールの中でコードを書いて「これはこうすべきだと思う」と書くわけだが、それが私がやっていることで、プログラマーとは言えない。 呼吸をするようにプログラム出来る
って事なのね
プログラマーでは無くて
プログラムの神に成った
そんな感じ何だろうか?
0066デフォルトの名無しさん2019/11/02(土) 17:05:25.24ID:orbX83iK
わかってないやつ多いんだよ
いきってc++で自称モダンな設計で作り上げてあとで泣きながらcのインタフェース作るはめになる
たいてい機械的なラッパーではすまないからな
void*的な「ハンドル」を経由して操作する
C由来のインターフェースは強いな
>this is a double-edged sword. The developer has enough flexibility to do really cool things, and equally the flexibility to do really stupid things
>>67
この手の、英語の原文をいきなり訳もせず突っ込んでくるやつは何がしたいのだろう…。
いきなり業界用語持ってきて「え?こんなのもわからないんですか?ふ〜ん」的な古典的オタクのり? >>69
>I am the bone of my sword. Steel is my body,and fire is my blood. I have created over a thousand blades. Unknown to Death. Nor known to Life. Have withstood pain to create many weapons. Yet,those hands will never hold anything. So as I pray,unlimited blade works. 0071デフォルトの名無しさん2020/10/08(木) 12:46:54.93ID:Riy1MZEi
業界用語ωωω
0072デフォルトの名無しさん2020/11/23(月) 11:07:33.31ID://ZJMWym
OSをインタプリター言語あるいはスクリプトで書けたらいいのにね。
もちろんデバイスの制御の部分やCPUの初期設定などは機械語にならざるを
得ないけれども。
今のCPUはかなり早いから、インタプリターでOSのカーネルを書いても
昔のPDP11ぐらいの速度ではうごくのではなかろうか?
そんなOS使わん。
結局少しくらい危険なところがあっても速度重視ってのは
ビジネスからくるクリティカルな要求な訳だ。
0074uy ◆e6.oHu1j.o 2020/11/24(火) 12:36:57.49ID:gfNKbZsO
>>72
自分でCでインタプリタ書けるならOS開発のコンパイル作業に一工程を噛ませるだけだぞ
やる意味が無いからCでそのまま書くのがカーネル