>>140,142
奥が深そうだねえ
どれくらいのパフォーマンス出してくれるのか想像つかない
>>141
C/C++並の低レベルプログラミングができて、人間が話せて、かつ人工知能も理解しやすいような言語という設定でいろいろ考えてる
自然言語に声調というのがあって、これは抽象化すれば音階としても処理できるから、人工知能にも扱いやすいし、
音階の配列である声調は命令の配列である機械語とも相性が良い。
探検
【超高速】C/C++に代わる低級言語を開発したい 8
143133
2014/09/19(金) 13:25:22.42ID:NxcXgwij144142
2014/09/20(土) 02:06:52.74ID:U6pDraTi LLVMはフロント・ミドル・バックの、3つの部分に独立している
フロントはプログラミング言語とコンパイラ
Clangなら、C/C++ → IR
ミドルはコンパイル後の擬似的なアセンブラ。IR(中間コード)
バックはx86,ARMなどのCPU
新言語を作っているなら、
フロントのコンパイラ(字句・構文解析)の部分だけを作って、
IRになるようにすればよい
>142の本を買うのが速い
フロントはプログラミング言語とコンパイラ
Clangなら、C/C++ → IR
ミドルはコンパイル後の擬似的なアセンブラ。IR(中間コード)
バックはx86,ARMなどのCPU
新言語を作っているなら、
フロントのコンパイラ(字句・構文解析)の部分だけを作って、
IRになるようにすればよい
>142の本を買うのが速い
145デフォルトの名無しさん
2014/09/21(日) 17:41:47.69ID:ReekRvFB >>143
「人工知能も理解しやすい」というのはコンパイラにとって効率が良いという意味?
「人工知能も理解しやすい」というのはコンパイラにとって効率が良いという意味?
147デフォルトの名無しさん
2014/09/22(月) 21:27:22.05ID:Q0QJp/T/ >>146
その効率はプログラミング言語としてどういう意味を持つの?
その効率はプログラミング言語としてどういう意味を持つの?
148デフォルトの名無しさん
2014/09/22(月) 21:58:15.46ID:EiJEHJdV 人口無能を作ってるんでは?
149デフォルトの名無しさん
2014/09/22(月) 22:47:26.85ID:LvPIFofq >人間との会話のときに相互の情報伝達の効率がいい
いわゆるドラえもんをつくる気か。すごいな。
いわゆるドラえもんをつくる気か。すごいな。
150デフォルトの名無しさん
2014/09/22(月) 23:14:21.82ID:ufGb4z7Y 何でも良いけど、動作速度がトロくて高級言語がとかぬかして
ジェネリック要求してくるLL使いが鬱陶しいわ
ジェネリック要求してくるLL使いが鬱陶しいわ
151デフォルトの名無しさん
2014/09/23(火) 00:44:54.05ID:75K7vBZU152133
2014/09/23(火) 00:48:58.01ID:fk2c4+Og153デフォルトの名無しさん
2014/09/23(火) 09:43:28.68ID:D7BulMBA >>152
人工知能とか、ネタなのか本気なのか分からなかったので若干しつこく聞いたけど、本気ならその方針で面白いものへと広げてほしい。
といいながら、興味本位で聞いてしまうけど、人間はともかく、人工知能にとって「直感的」ってどういうことなの?
人工知能ってコンパイラだよね。コンパイラにとっての直感性というのが分からなかったので。
それと、作りたいのは「言語」でいいんだよね?コンパイル可能な自然言語とか。
人工知能とか、ネタなのか本気なのか分からなかったので若干しつこく聞いたけど、本気ならその方針で面白いものへと広げてほしい。
といいながら、興味本位で聞いてしまうけど、人間はともかく、人工知能にとって「直感的」ってどういうことなの?
人工知能ってコンパイラだよね。コンパイラにとっての直感性というのが分からなかったので。
それと、作りたいのは「言語」でいいんだよね?コンパイル可能な自然言語とか。
154デフォルトの名無しさん
2014/09/23(火) 12:57:04.95ID:RZgQ8Ezi しゃべればしゃべるほど非マの妄言と化していくな
板違いだべ
板違いだべ
155133
2014/09/23(火) 13:48:39.80ID:fk2c4+Og >>153
純粋なコンパイラというよりはコンパイラとインタプリタを統合した処理系だね。
Prologのような対話(厳密にはうちの言語のは対話ではないけど似たようなもの)を繰り返してプログラミングすることもできる。
その場合、処理系は対話によって学習できるし、学習したところから発話もするように考えてるから人工知能と呼んでいる。
人工知能にとって直感的っていうのは、手続き型の制御フローに沿った発話がそのままできるってこと。
たとえばうちの言語はそもそも語順がかなり自由だから、手続き型プログラミング的な構文をそのまま人間の言葉として理解できる、とか。
一言で言えば言語だね。芸術言語とプログラミング言語を足したようなものだよ。
純粋なコンパイラというよりはコンパイラとインタプリタを統合した処理系だね。
Prologのような対話(厳密にはうちの言語のは対話ではないけど似たようなもの)を繰り返してプログラミングすることもできる。
その場合、処理系は対話によって学習できるし、学習したところから発話もするように考えてるから人工知能と呼んでいる。
人工知能にとって直感的っていうのは、手続き型の制御フローに沿った発話がそのままできるってこと。
たとえばうちの言語はそもそも語順がかなり自由だから、手続き型プログラミング的な構文をそのまま人間の言葉として理解できる、とか。
一言で言えば言語だね。芸術言語とプログラミング言語を足したようなものだよ。
156デフォルトの名無しさん
2014/09/23(火) 19:40:06.05ID:D7BulMBA157デフォルトの名無しさん
2014/09/23(火) 22:25:50.92ID:11MYg8X9 >>155
実験言語で終わりそうな悪寒
実験言語で終わりそうな悪寒
158デフォルトの名無しさん
2014/09/23(火) 23:09:33.36ID:beG9zooH エプロンおねえさん、めざしてるのかしら
159デフォルトの名無しさん
2014/09/24(水) 22:12:59.34ID:1vKhut4O Cは高級言語であって、スレタイがすでに間違ってるのに、お前ら
はあほか、こんなものを続けて何の意味があるんだ。
はあほか、こんなものを続けて何の意味があるんだ。
160デフォルトの名無しさん
2014/09/24(水) 23:07:20.55ID:EketT0f3 Cは低級言語だろ何言ってんだ
161デフォルトの名無しさん
2014/09/24(水) 23:11:42.12ID:B6bZpcqc 高水準言語の基準は人間がそのまま動作を読み取れる言語だろ
よってC言語は当然高水準言語
よってC言語は当然高水準言語
162デフォルトの名無しさん
2014/09/24(水) 23:14:48.57ID:uTgX/qQw ハードウェアを直接操作できるのが低級、できないのは低脳
163デフォルトの名無しさん
2014/09/25(木) 01:17:10.50ID:erkjRt9/164デフォルトの名無しさん
2014/09/25(木) 03:06:49.15ID:Izg0GKzf Cは昔から「高級アセンブラ」と呼ばれていたと思ったが
165133
2014/09/25(木) 03:14:33.45ID:8qvU6Kt5166デフォルトの名無しさん
2014/09/25(木) 04:07:23.07ID:997Wnr2J 高級言語でも低級言語でもないから、中級言語である。
There are following reason that C is called Middle Level Language as:
C programming language behaves as high level language through function, it gives a modular programming and breakup, increased the efficiency for resolvability.
C programming language support the low level language i.e. Assembly Language.
C language also gives the facility to access memory through pointer.
Its combines the elements of high-level languages with the functionalism of assembly language.
So, C language neither a High Level nor a Low level language but a Middle Level Language.
C Programming: Middle level Language
http://cprogrammingcodes.blogspot.jp/2011/12/middle-level-language.html
There are following reason that C is called Middle Level Language as:
C programming language behaves as high level language through function, it gives a modular programming and breakup, increased the efficiency for resolvability.
C programming language support the low level language i.e. Assembly Language.
C language also gives the facility to access memory through pointer.
Its combines the elements of high-level languages with the functionalism of assembly language.
So, C language neither a High Level nor a Low level language but a Middle Level Language.
C Programming: Middle level Language
http://cprogrammingcodes.blogspot.jp/2011/12/middle-level-language.html
167デフォルトの名無しさん
2014/09/25(木) 04:09:06.54ID:997Wnr2J 諸説あるよ
"middle-level language"
Googleで検索
"middle-level language"
Googleで検索
168デフォルトの名無しさん
2014/09/25(木) 04:18:01.41ID:997Wnr2J 各CPUのアセンブラを勉強しなくていいから、Cは、高級な感じがするが、
オブジェクト指向言語ではないし、セキュリティが不足している(実際は、それもCで達成できるはず)ようにみえるから、
Cは、高級言語ではない。
オブジェクト指向言語ではないし、セキュリティが不足している(実際は、それもCで達成できるはず)ようにみえるから、
Cは、高級言語ではない。
169デフォルトの名無しさん
2014/09/25(木) 06:36:29.36ID:erkjRt9/ ID:997Wnr2J には、このスレでCを「高級言語ではない」と呼ぶ権利を与えます。どうぞご自由に。
170デフォルトの名無しさん
2014/09/25(木) 09:38:34.27ID:H7xxDOL8 高級言語ではあるけど、メモリアドレスを直接指定しての書き込みや
必要とあらばインラインアセンブラも使える言語って意味だろ
更にC言語の場合、アドレスの抽象化があまりされていなくて
それらが必要でなくともアドレスを扱うことになるからそう言われるんだろう
必要とあらばインラインアセンブラも使える言語って意味だろ
更にC言語の場合、アドレスの抽象化があまりされていなくて
それらが必要でなくともアドレスを扱うことになるからそう言われるんだろう
171デフォルトの名無しさん
2014/09/25(木) 12:42:03.78ID:FK6wklg/ 高級言語って30年前の言葉だからな。C/C++より上のいまどきの言語は超高級言語だろ。
172デフォルトの名無しさん
2014/09/25(木) 12:46:26.61ID:GQOH8SqT 肉体労働向け言語に進化しましたから、超高級とかいってるのは
173デフォルトの名無しさん
2014/09/25(木) 12:58:54.18ID:aCIY3SmK 高級言語だから定休知能では扱えないということはなく
むしろ反比例の関係にある
むしろ反比例の関係にある
174デフォルトの名無しさん
2014/09/25(木) 13:15:02.54ID:FK6wklg/ マ板に高級=デラックスと勘違いしてるやつがいるとは。
175デフォルトの名無しさん
2014/09/25(木) 13:24:45.09ID:GQOH8SqT ここム版ですが
176デフォルトの名無しさん
2014/09/25(木) 13:56:45.69ID:aCIY3SmK マイッタ
177デフォルトの名無しさん
2014/09/25(木) 20:29:44.52ID:q7N5Q3ZR >>2->>3を読む限り>1の望みを満たして居るのはかつてとは段違いに美しく高水準に整えられた今時のアセンブラと思われる
178あぼーん
NGNGあぼーん
179デフォルトの名無しさん
2014/10/17(金) 03:52:20.34ID:DGojcH6F 配列を表現する場合無限にメモリーなりCPUなりが利用できる場合リストになるよね
数値の表現も
色々な型がサポートされている時点で低級言語じゃないか
細かいリストや配列の加工操作がしたいんじゃなくて
もっと抽象的に状態に対する結果が欲しい
高級言語と呼ばれるものも抽象化で捉えると低級言語?
数値の表現も
色々な型がサポートされている時点で低級言語じゃないか
細かいリストや配列の加工操作がしたいんじゃなくて
もっと抽象的に状態に対する結果が欲しい
高級言語と呼ばれるものも抽象化で捉えると低級言語?
180デフォルトの名無しさん
2014/10/17(金) 09:18:32.72ID:Z0zTp1Pd 各CPUを勉強するのが低級言語
181デフォルトの名無しさん
2014/10/17(金) 09:23:07.84ID:Z0zTp1Pd ギガヘルツとか、正気か? とおもうぞ
182デフォルトの名無しさん
2014/10/18(土) 20:13:08.37ID:ugB2Qpg9 何の話?
183デフォルトの名無しさん
2014/10/19(日) 13:43:57.95ID:2X3kG3QA PCは15年ぐらい前から、スマホは5年ぐらい前から、ギガヘルツ超えのCPUが載ってるけど
電子レンジもWi-FiもBluetoothも2〜5ギガヘルツの電波出してるけど
正気か? とおもうか?
電子レンジもWi-FiもBluetoothも2〜5ギガヘルツの電波出してるけど
正気か? とおもうか?
184デフォルトの名無しさん
2014/10/19(日) 13:51:13.18ID:NuKVNm4T >>183
衛星とかFWA無線とかもっと速かった気が
衛星とかFWA無線とかもっと速かった気が
185デフォルトの名無しさん
2014/10/19(日) 14:13:12.90ID:Y2JhTmAB ムーアの法則で想定内。
186デフォルトの名無しさん
2014/10/20(月) 02:31:53.48ID:QkxWZYWv 低級言語って
言語の基本機能だけじゃまともなアプリ作るの苦労するって言語ってこと?
言語の基本機能だけじゃまともなアプリ作るの苦労するって言語ってこと?
187デフォルトの名無しさん
2014/10/20(月) 04:08:06.24ID:WXuTs7FD 低いレイヤにアクセスすることが前提の言語な
プログラミングにおける低級高級は優劣の話ではなくレイヤの話だから
プログラミングにおける低級高級は優劣の話ではなくレイヤの話だから
188デフォルトの名無しさん
2014/10/20(月) 04:37:34.43ID:QkxWZYWv 低レイヤってOSやハードウェアと直接やり取りするって感じ?
189デフォルトの名無しさん
2014/10/20(月) 08:37:55.31ID:4bxYYw/L このスレとは違うが
一般に、低級言語はアセンブリ、C言語以上の言語は高級言語。
一般に、低級言語はアセンブリ、C言語以上の言語は高級言語。
190デフォルトの名無しさん
2014/10/20(月) 11:11:46.78ID:ysyLgJvq 超高級言語クレとは言わないけど
高高級言語くらい欲しいって思ってたら有ったっぽい
通常パターンマッチてif文の羅列やネストで重複した論理演算を省略して速度他を稼ぐんだけど
パターンマッチ指向はその常識がないw
なんて恐ろしい子
その代わりマッチする条件をダラダラ例記すればよいから
直感的にこの組み合わせおかしいとか修正が楽
なんか条件の検出に正規表現?使っている様な雰囲気ワロタw
最適化なしの高級っぽい言語ってマクロの親玉みたいな感じだから
実装は楽じゃないの
デバッグ環境もセットで用意しろと言われるといきなり敷居があがるけど
高高級言語くらい欲しいって思ってたら有ったっぽい
通常パターンマッチてif文の羅列やネストで重複した論理演算を省略して速度他を稼ぐんだけど
パターンマッチ指向はその常識がないw
なんて恐ろしい子
その代わりマッチする条件をダラダラ例記すればよいから
直感的にこの組み合わせおかしいとか修正が楽
なんか条件の検出に正規表現?使っている様な雰囲気ワロタw
最適化なしの高級っぽい言語ってマクロの親玉みたいな感じだから
実装は楽じゃないの
デバッグ環境もセットで用意しろと言われるといきなり敷居があがるけど
191デフォルトの名無しさん
2014/10/20(月) 11:53:18.42ID:VnfuINao >>190
おまえ、ここで何言ってんの?
おまえ、ここで何言ってんの?
192デフォルトの名無しさん
2014/10/20(月) 11:54:48.29ID:nHn9rVxH LLVMそのものやん
193デフォルトの名無しさん
2014/10/20(月) 12:28:54.91ID:LQcjTm7E 僕が考えた最強の言語Swift
各言語の構文てんこ盛りで、LLVM介してコンパイルで、>>1が望むものじゃねーか?
各言語の構文てんこ盛りで、LLVM介してコンパイルで、>>1が望むものじゃねーか?
194デフォルトの名無しさん
2014/10/20(月) 14:44:33.49ID:QkxWZYWv どっかのC/C++コンパイラは一度アセンブリのソースに変換してからオブジェクトコードにするって聞いたな
195デフォルトの名無しさん
2014/10/20(月) 15:00:11.99ID:LUozctHl よく分からないならROMっとけよ
196デフォルトの名無しさん
2014/10/22(水) 02:10:55.06ID:J+sywfss >>193
Swiftってデバドラを実用的に書けたりするの?
Swiftってデバドラを実用的に書けたりするの?
197デフォルトの名無しさん
2014/10/23(木) 15:28:13.97ID:eDVkHXcG まっくのでばどらはぜんぶ Swift でかかれるよ
198デフォルトの名無しさん
2014/10/26(日) 15:52:31.81ID:NBo7Xiri それはすごいね。
199デフォルトの名無しさん
2014/10/26(日) 17:44:29.89ID:16PtYm9d C言語用のVMを作ればいいじゃん
GCCがVMの役割を持てばいい
GCCがVMの役割を持てばいい
200デフォルトの名無しさん
2014/10/26(日) 19:34:17.91ID:8S4QBfQC そういうのを言葉遊びという
201デフォルトの名無しさん
2014/10/26(日) 21:59:29.74ID:NBo7Xiri なんでVMの話が出てくるんだよ。
202デフォルトの名無しさん
2014/10/30(木) 17:21:21.48ID:6ICFY1Et で、どこまでできたの?
203デフォルトの名無しさん
2014/11/01(土) 02:45:09.97ID:nLN9HWuZ あ
204デフォルトの名無しさん
2014/11/01(土) 02:55:02.59ID:nLN9HWuZ LLVMは大体分かった。GCや例外が大変。
テンプレートを型推論したくてHaskellの型推論読んでみたりしたけど難しい。
Yacc慣れするために、OCamlYaccでトランスレータ書いたりしてて、
今は文法を洗練させようとしてOCamlの別シンタックスを考えてる。
マクロはPHP的な物も検討中だな。
Swiftは悪くないけど、仕様を自分で弄れないからなぁ。
テンプレートを型推論したくてHaskellの型推論読んでみたりしたけど難しい。
Yacc慣れするために、OCamlYaccでトランスレータ書いたりしてて、
今は文法を洗練させようとしてOCamlの別シンタックスを考えてる。
マクロはPHP的な物も検討中だな。
Swiftは悪くないけど、仕様を自分で弄れないからなぁ。
205デフォルトの名無しさん
2014/11/01(土) 13:24:54.74ID:KRbHmgXS 組み込みの構文と違和感なく構文を拡張できればいいね。
206デフォルトの名無しさん
2014/11/01(土) 15:22:57.68ID:8KfJEHPC 大事なのはエラーメッセージが適切な内容になる構造を持たせることと
実用的なデバッガサポートがあること
作るのを優先するとその辺が落とし穴になる
実用的なデバッガサポートがあること
作るのを優先するとその辺が落とし穴になる
207デフォルトの名無しさん
2014/11/01(土) 16:12:09.26ID:5yNYNAVX DylanとNemerleや、天才高校生プログラマの言語とか参考になると言えばなるんだけど
結構難しそうなので、Lisp的な式レベルでどうにか簡単な仕組みが作れれば良いなと思ってます。
エラーメッセージやデバッガは、言語機能がしっかり出来上がってからですね。
位置情報埋め込むと構文木が煩雑になるし、デバッガの為の位置情報の埋め込みも同じ。
その辺頑張ると、それだけで大変なので結局今の言語と同じ物しか作れなくなってしまう。
納得いかない文法で、エラーメッセージとか詰めても結局捨てる事になってしまうし。
エラーメッセージも出来れば、グローバライゼーションして、日本語と英語くらいは用意してあると良いけど。
それも含めて、構文拡張が出来て、うまくデバックできてっていうのは難しい。
結構難しそうなので、Lisp的な式レベルでどうにか簡単な仕組みが作れれば良いなと思ってます。
エラーメッセージやデバッガは、言語機能がしっかり出来上がってからですね。
位置情報埋め込むと構文木が煩雑になるし、デバッガの為の位置情報の埋め込みも同じ。
その辺頑張ると、それだけで大変なので結局今の言語と同じ物しか作れなくなってしまう。
納得いかない文法で、エラーメッセージとか詰めても結局捨てる事になってしまうし。
エラーメッセージも出来れば、グローバライゼーションして、日本語と英語くらいは用意してあると良いけど。
それも含めて、構文拡張が出来て、うまくデバックできてっていうのは難しい。
208デフォルトの名無しさん
2014/11/01(土) 16:31:00.21ID:5yNYNAVX エラーメッセージは特に、エラー発生箇所と、エラー内容が作っている箇所からは
特定出来ない事が多いので、エラーが発生するようなテストケース作って
エラー内容のテストをしていけば、良くなるんだろうけど、1つ1つ作り込む感じにしないと
出来なさそうなので大変だけど、ちゃんと作ると、それなりに成果があっていいんでしょうねぇ
Rubyが成功している理由ってそういう所もあったのかなぁ?
特定出来ない事が多いので、エラーが発生するようなテストケース作って
エラー内容のテストをしていけば、良くなるんだろうけど、1つ1つ作り込む感じにしないと
出来なさそうなので大変だけど、ちゃんと作ると、それなりに成果があっていいんでしょうねぇ
Rubyが成功している理由ってそういう所もあったのかなぁ?
209デフォルトの名無しさん
2014/11/01(土) 21:11:55.78ID:KRbHmgXS210デフォルトの名無しさん
2015/01/15(木) 15:09:15.49ID:Tduq/91S おうお前らがモタモタしてるうちにRustが1.0になったぞ
ランタイム&GC不要のメモリ管理、メタプログラミングのための各種機能をゼロ・オーバーヘッドで用意、パターンマッチもついて中々のイケメンに仕上がってるぞ
>>209メジャーな言語と似たものなら大体はいいぞ。関数型はエラーメッセージが分かりにくくて有名だからそれは避けてね
ランタイム&GC不要のメモリ管理、メタプログラミングのための各種機能をゼロ・オーバーヘッドで用意、パターンマッチもついて中々のイケメンに仕上がってるぞ
>>209メジャーな言語と似たものなら大体はいいぞ。関数型はエラーメッセージが分かりにくくて有名だからそれは避けてね
211デフォルトの名無しさん
2015/01/30(金) 15:25:40.49ID:FZMZtl7q フルスクラッチでcを実装するブログ読んで思わず自分もって感じで始めた
まずは、物凄くシンプルなc言語っぽい仕様書をシコシコ書いてる
実装するまでは中二病に浸れて気持ちいいなこれww
あと、ここの
http://homepage1.nifty.com/herumi/prog/x64.html
c言語でのレジスタの扱いとか読むと
行儀の良さげなレジスタの扱い方とか参考になる
だけど、一番目の整数引数rcxの下り
一番目が実数だった場合はxm0と言う排他的にrcxもしくはxm0で受け渡すって言う意味なのは
サンプルコードを見るまで理解できなかったww
vs2013も入れたけどコンパイルしたあとのアセンブラのコード何処で見るのか不明w
まずは、物凄くシンプルなc言語っぽい仕様書をシコシコ書いてる
実装するまでは中二病に浸れて気持ちいいなこれww
あと、ここの
http://homepage1.nifty.com/herumi/prog/x64.html
c言語でのレジスタの扱いとか読むと
行儀の良さげなレジスタの扱い方とか参考になる
だけど、一番目の整数引数rcxの下り
一番目が実数だった場合はxm0と言う排他的にrcxもしくはxm0で受け渡すって言う意味なのは
サンプルコードを見るまで理解できなかったww
vs2013も入れたけどコンパイルしたあとのアセンブラのコード何処で見るのか不明w
212デフォルトの名無しさん
2015/01/30(金) 19:27:40.42ID:6KJpuSJC >>1
低級なのはお前の頭だろ。
低級なのはお前の頭だろ。
213デフォルトの名無しさん
2015/01/30(金) 22:38:21.69ID:lIZvN3Ub .NETでどうでもよくなったよなー
ていれべるなことなんてほんとしなくなったわ
ていれべるなことなんてほんとしなくなったわ
214デフォルトの名無しさん
2015/01/31(土) 13:48:59.11ID:8ogYhJDT このスレは言語について議論するスレである。
「.NETでていれべるなことしなくなった」というのはこのスレでは的外れな発言である。
「.NETでていれべるなことしなくなった」というのはこのスレでは的外れな発言である。
215デフォルトの名無しさん
2015/01/31(土) 14:20:18.92ID:1XVXay7T216デフォルトの名無しさん
2015/01/31(土) 22:11:13.99ID:L/74skj4 新しい言語に何を求める?
217デフォルトの名無しさん
2015/01/31(土) 22:16:50.25ID:pKNd4dfq モアパワーそしてモアトルクだ
218デフォルトの名無しさん
2015/02/01(日) 01:59:02.72ID:mW2nLdSc 求めたのは低級言語
出来上がったのは低脳言語
無能が開発すると(以下略
vc++とかgccの吐き出すコードってそんなに酷いかな?
吐き出されたコードがアセンブラレベルで手を加えやすいと助かる
そんな感覚はあるけど、小さい規模なら問題ないけど
規模が膨らむと放棄するしかないような
出来上がったのは低脳言語
無能が開発すると(以下略
vc++とかgccの吐き出すコードってそんなに酷いかな?
吐き出されたコードがアセンブラレベルで手を加えやすいと助かる
そんな感覚はあるけど、小さい規模なら問題ないけど
規模が膨らむと放棄するしかないような
219デフォルトの名無しさん
2015/02/02(月) 01:52:40.02ID:Ond45CKH このスレは言語仕様を議論するスレであって、処理系が吐き出すコード(バイナリ?)に関しての議論はスレ違い。
220デフォルトの名無しさん
2015/02/02(月) 06:05:55.27ID:j5MISSAc 低級言語ってアセンブラレベルでお手入れができたり
アセンブラに近い処理ができたりCに近い感覚じゃダメなのかね
言語仕様のなかにこれはアセンブラに近い記述でありコードもそれに近いコード
この部分の記述はガベージコレクタを含む重い処理を暗黙で行っていますって感じで
ソースを一見するだけで明確なのが良いのいでは?
変数の宣言でint型をINTと大文字で書いて[0...100]とか範囲指定がある場合とか
var I:INT[0..100]
I=I+101
//一見したときの明確さは変数は大文字、型指定も大文字
//ああ、厳格な範囲検査してるから遅くなるってわかるみたいな
アセンブラに近い処理ができたりCに近い感覚じゃダメなのかね
言語仕様のなかにこれはアセンブラに近い記述でありコードもそれに近いコード
この部分の記述はガベージコレクタを含む重い処理を暗黙で行っていますって感じで
ソースを一見するだけで明確なのが良いのいでは?
変数の宣言でint型をINTと大文字で書いて[0...100]とか範囲指定がある場合とか
var I:INT[0..100]
I=I+101
//一見したときの明確さは変数は大文字、型指定も大文字
//ああ、厳格な範囲検査してるから遅くなるってわかるみたいな
221デフォルトの名無しさん
2015/02/07(土) 00:44:43.69ID:4cqwcWM8222デフォルトの名無しさん
2015/02/07(土) 08:58:43.40ID:vv4w4L4p Objective-Cは文法のセンスが致命的に悪い。
223デフォルトの名無しさん
2015/02/07(土) 13:22:00.52ID:opuN7f// >>220
>低級言語ってアセンブラレベルでお手入れができたり
>アセンブラに近い処理ができたりCに近い感覚じゃダメなのかね
それでいいよ。
で、その時に、それをどのような文法で実現するのか、がこのスレの主題。
いま、Cと同じことができる言語を1から考えたら、Cと全く同じ文法にはならないだろう。
それを考えるのがこのスレの趣旨。
>低級言語ってアセンブラレベルでお手入れができたり
>アセンブラに近い処理ができたりCに近い感覚じゃダメなのかね
それでいいよ。
で、その時に、それをどのような文法で実現するのか、がこのスレの主題。
いま、Cと同じことができる言語を1から考えたら、Cと全く同じ文法にはならないだろう。
それを考えるのがこのスレの趣旨。
224デフォルトの名無しさん
2015/02/07(土) 14:23:19.42ID:1yVP4+Fh Luaはどうよ?
225デフォルトの名無しさん
2015/02/07(土) 15:44:39.52ID:TiU3gCM4 どこのスレの誤爆ですか?
226デフォルトの名無しさん
2015/02/07(土) 15:57:46.61ID:IoYj+0nc >>224
Luaいいね
色々考えるとLuaの再定義っぽい感じかな
Luaってスクリプト言語に分類されるアセンブラみたい
低級言語だから高級っぽい文法でプログラムを書き下して
コンパイルして一旦アセンブラのソースの形で出力
必要ならここで編集
最後にアセンブラさんにお任せみたいな
アセンブラって基本ラベルとメモリー空間があって
そこにどんな形式のどんなデータが格納されているのかは自己責任って世界だから
ここら辺を援護してくれるマクロアセンブラっぽい物が良いのかな
Luaいいね
色々考えるとLuaの再定義っぽい感じかな
Luaってスクリプト言語に分類されるアセンブラみたい
低級言語だから高級っぽい文法でプログラムを書き下して
コンパイルして一旦アセンブラのソースの形で出力
必要ならここで編集
最後にアセンブラさんにお任せみたいな
アセンブラって基本ラベルとメモリー空間があって
そこにどんな形式のどんなデータが格納されているのかは自己責任って世界だから
ここら辺を援護してくれるマクロアセンブラっぽい物が良いのかな
227デフォルトの名無しさん
2015/02/19(木) 03:03:32.12ID:z6pi1paq あえて言おう
rustでおk
rustでおk
228デフォルトの名無しさん
2015/02/26(木) 00:12:09.00ID:Jk67BKxU スレ立てから3年が経った今、時は動き出す
ってことではよ何か作ろうや
ってことではよ何か作ろうや
229デフォルトの名無しさん
2015/03/05(木) 23:01:28.56ID:4N6WK8Zh 最近の名前だけ高級言語スクリプトを見てると仕様も技術者もアホの極地にしか見えん。
その技術者の得意言語でもやっちゃいけないって事を平気でやる
その技術者の得意言語でもやっちゃいけないって事を平気でやる
230デフォルトの名無しさん
2015/03/05(木) 23:02:51.16ID:rUbEobY5 >>229
具体的に知りたいな
具体的に知りたいな
231デフォルトの名無しさん
2015/03/06(金) 18:39:28.57ID:CTj2h1Ar 逆に超高級言語を作りたいな(´・ω・`)
今一番超高級な言語って何がありますか?
今一番超高級な言語って何がありますか?
232デフォルトの名無しさん
2015/03/06(金) 21:17:39.74ID:k288A3Sb haskell
233デフォルトの名無しさん
2015/03/06(金) 22:48:44.48ID:K7+tV1QH 依存型のAgda、Coq、Idris、ATSとか
234デフォルトの名無しさん
2015/03/07(土) 10:12:36.84ID:pum8dd/R235デフォルトの名無しさん
2015/03/08(日) 19:10:07.23ID:KcdPJfzn 日本語かな
236デフォルトの名無しさん
2015/03/08(日) 23:03:34.99ID:52zFOAkV マイナーな言語は習得が大変なことと、わからないことがあったとき情報やノウハウがないので
全部自分で何とかしないといけない。普及している言語の中から好きなのを選んで使いこなすのが一番いいよ。
全部自分で何とかしないといけない。普及している言語の中から好きなのを選んで使いこなすのが一番いいよ。
237デフォルトの名無しさん
2015/03/08(日) 23:13:29.78ID:mm6WxmZr マイナーだけどメジャーになりそうなら本書いて印税うはうは
238デフォルトの名無しさん
2015/03/19(木) 21:48:47.69ID:QTBsG6tP 高級言語を使いこなすってC++を使いこなすより大変じゃないのか?
で結局パワーではC++に敵わない
で結局パワーではC++に敵わない
239デフォルトの名無しさん
2015/03/20(金) 16:42:34.97ID:sriWfzYS >>238
C++ほど大変な高級言語はなかなか無いと思うぞ
C++ほど大変な高級言語はなかなか無いと思うぞ
240デフォルトの名無しさん
2015/03/20(金) 19:26:50.44ID:e2IVv9/F C++ほど変態な高級言語はなかなか無いと思うぞ
241デフォルトの名無しさん
2015/03/20(金) 22:14:20.35ID:1BR7B8ZR C++ほど変変な高級言語はなかなか無いと思うぞ
242デフォルトの名無しさん
2015/03/21(土) 00:46:15.62ID:m0LUk3nX c++のunsigned long 型の変数を >=0で評価するとーの値が存在しないので必ずTureになって
forループが無限ループになるバグの説明が面白かった
アセンブラならループのインデックスを引いたあとキャリーフラグ調べて分岐じゃないか
ループ離脱の条件が単純比較じゃなくて条件式を容認してるからだろうけど
forループが無限ループになるバグの説明が面白かった
アセンブラならループのインデックスを引いたあとキャリーフラグ調べて分岐じゃないか
ループ離脱の条件が単純比較じゃなくて条件式を容認してるからだろうけど
243デフォルトの名無しさん
2015/03/21(土) 02:54:48.44ID:x0x7jBK5 Cの骨にテンプレートの肉を詰め、OOの毛皮を被った化物だよ
骨だけ使った料理もできるし肉を焼いてもいいし、毛皮からコートを作ったっていいが、
他人が作ったものはまだ蠢いているかもしれないから怖い。
骨だけ使った料理もできるし肉を焼いてもいいし、毛皮からコートを作ったっていいが、
他人が作ったものはまだ蠢いているかもしれないから怖い。
244デフォルトの名無しさん
2015/03/21(土) 07:42:06.13ID:zBl3Ii3W >>242
そもそもループカウンタにunsignedを使うこと自体、バグと言うべき話なのでわないかと・・・
そもそもループカウンタにunsignedを使うこと自体、バグと言うべき話なのでわないかと・・・
245デフォルトの名無しさん
2015/03/21(土) 10:14:12.91ID:9V6972Qg 必ずTureになるのが1番の問題
246デフォルトの名無しさん
2015/03/21(土) 11:05:05.60ID:rA11USYH ×Ture
○True
○True
247デフォルトの名無しさん
2015/03/21(土) 12:01:32.67ID:/IY/BI0W while(true)で評価するとーの値が変化しないので必ずTureになって
whileループが無限ループになるバグの説明が面白かった
ループ離脱の条件が条件式だけじゃなくてbreakやreturnを容認してるからだろうけど
whileループが無限ループになるバグの説明が面白かった
ループ離脱の条件が条件式だけじゃなくてbreakやreturnを容認してるからだろうけど
248デフォルトの名無しさん
2015/03/21(土) 14:50:37.16ID:TeX2vL/Q 高級な変態というと・・・女体盛りで大トロとかヒラメの縁側を使う感じか。
249デフォルトの名無しさん
2015/03/21(土) 15:50:58.96ID:xKri6eTm250デフォルトの名無しさん
2015/03/21(土) 20:43:28.09ID:zBl3Ii3W251デフォルトの名無しさん
2015/03/22(日) 00:05:49.26ID:SsX9i6KK C++/CLIはC++の顔してて勝手にスレッド作りやがる
252デフォルトの名無しさん
2015/04/13(月) 21:56:18.38ID:1Ez10RQf FORTHという>>1の要件をほぼかなえる言語がある
これをベースにすればよい
これをベースにすればよい
253デフォルトの名無しさん
2015/06/10(水) 13:56:59.28ID:/kHDwUM2 while( c )
{
...
c -= 2;
}
{
...
c -= 2;
}
254デフォルトの名無しさん
2015/06/10(水) 23:35:06.95ID:bjmIAJs7 好き / “アセンブリ言語のみで言語処理系を作った話 // Speaker Deck”
ttps://speakerdeck.com/nineties/bootstrap
これ見て元気だせ
自分でも出来そうな気がするだろ
実際、大学あたりではcコンパイラの実装までやらせてるんじゃないの?
ttps://speakerdeck.com/nineties/bootstrap
これ見て元気だせ
自分でも出来そうな気がするだろ
実際、大学あたりではcコンパイラの実装までやらせてるんじゃないの?
255デフォルトの名無しさん
2015/06/11(木) 02:58:17.97ID:wwX+zBdZ256デフォルトの名無しさん
2015/06/11(木) 18:03:31.89ID:mzhQ9y6C257デフォルトの名無しさん
2015/06/13(土) 22:22:22.81ID:ueb0hiNe あー、ドアドアの人? と思ったら違ったヽ(´ー`)ノ
むかーし(20年ちょっと)、アセンブラに構造化マクロを追加して『生産性が超上がる!』って
謳ったPDS(今で言うフリーソフト)があったけれど、当時意味分からなかったなあ。
と言うかGCCの吐くアセンブラコードを読んで、自分で書くより綺麗でスッパリ諦めた(^^;
むかーし(20年ちょっと)、アセンブラに構造化マクロを追加して『生産性が超上がる!』って
謳ったPDS(今で言うフリーソフト)があったけれど、当時意味分からなかったなあ。
と言うかGCCの吐くアセンブラコードを読んで、自分で書くより綺麗でスッパリ諦めた(^^;
258デフォルトの名無しさん
2015/06/14(日) 01:34:40.73ID:et+uySKI 少し前、x265のエンコードダーをアセンブラで記述してる人達の話題で
プログラムを組む上で何が問題なのかって話題があって
OSのシステムコールを行うとレジスターが壊れるのが気に入らないって事だった
オレは重要なアルゴリズムに係わる高度なコーディング作業をしているのだから
システムコール如きへの配慮で煩わしい事をさせるなってことかな
システムコール用のレジスタ退避マクロなり
システムコールをラップしてレジスタを退避復旧したり
もう少し便利なアセンブラの処理系を作ってみたりしないのかな〜
既存コードとの互換性問題とかあるのかな
アセンブラ関係のTool類はかなり保守的で目新しい道具類がガンガン使われる様子は少な目??
>>254の記事を読むと、コンパイラ系統ってリストへの変換ー>実行コード(アセンブラ)への還元って事が凄くよく判るんだよね
物凄く大雑把に言うと、LISP処理系への構文糖衣≒コンパイルする対象(プログラム塊) な構図
プログラムを組む上で何が問題なのかって話題があって
OSのシステムコールを行うとレジスターが壊れるのが気に入らないって事だった
オレは重要なアルゴリズムに係わる高度なコーディング作業をしているのだから
システムコール如きへの配慮で煩わしい事をさせるなってことかな
システムコール用のレジスタ退避マクロなり
システムコールをラップしてレジスタを退避復旧したり
もう少し便利なアセンブラの処理系を作ってみたりしないのかな〜
既存コードとの互換性問題とかあるのかな
アセンブラ関係のTool類はかなり保守的で目新しい道具類がガンガン使われる様子は少な目??
>>254の記事を読むと、コンパイラ系統ってリストへの変換ー>実行コード(アセンブラ)への還元って事が凄くよく判るんだよね
物凄く大雑把に言うと、LISP処理系への構文糖衣≒コンパイルする対象(プログラム塊) な構図
259デフォルトの名無しさん
2015/06/20(土) 16:36:37.21ID:lPLujLwf Objective-ASM
260デフォルトの名無しさん
2015/10/31(土) 22:45:31.32ID:z7pRF+TT261デフォルトの名無しさん
2015/10/31(土) 23:17:02.36ID:d1AV3Byr 54 :デフォルトの名無しさん [sage] :2013/04/07(日) 22:40:29.84
262デフォルトの名無しさん
2015/11/01(日) 07:59:19.09ID:xEvp3/ht VS2013のC++x64でアセンブラコードみてるんだけど
かなり良さそうなコード吐き出している
問題はC++の仕様が大きいので他人の書いたコードが理解できないこと
C++の仕様の大きさが問題ならC++のコードを吐き出すプリプロセッサ?
みたいなものを企画してあとはC++にお任せが一番楽そうだね
unionを使った偽装もキャストって呼ぶんだな
&を使うリファレンスも別名とか名称変更とか説明があってやっと理解できた
C++もC並みにフリーダムだからお行儀の悪いコードが書けてしまう
提案になってないな
アイデアとしては、cpuやハードを直接叩く記述をする場合明確に宣言させて隔離とか
_low_level_fuc みたいなキーワード導入してその内部のみ色々悪さが出来るとか
これは運用の問題なので今のC++でも可能なんだろうけど
pythonのサブセット、お行儀の悪いpythonとかpychonとかoppayとかwww
C++の複雑さって仕様が大きくなって新たなキーワードを導入して何でもかんでも
詳細にテキストで記述しようとした結果じゃないかな
本来ライブラリなりフレームワークなりにお任せすべき部分までやらかしていると
かなり良さそうなコード吐き出している
問題はC++の仕様が大きいので他人の書いたコードが理解できないこと
C++の仕様の大きさが問題ならC++のコードを吐き出すプリプロセッサ?
みたいなものを企画してあとはC++にお任せが一番楽そうだね
unionを使った偽装もキャストって呼ぶんだな
&を使うリファレンスも別名とか名称変更とか説明があってやっと理解できた
C++もC並みにフリーダムだからお行儀の悪いコードが書けてしまう
提案になってないな
アイデアとしては、cpuやハードを直接叩く記述をする場合明確に宣言させて隔離とか
_low_level_fuc みたいなキーワード導入してその内部のみ色々悪さが出来るとか
これは運用の問題なので今のC++でも可能なんだろうけど
pythonのサブセット、お行儀の悪いpythonとかpychonとかoppayとかwww
C++の複雑さって仕様が大きくなって新たなキーワードを導入して何でもかんでも
詳細にテキストで記述しようとした結果じゃないかな
本来ライブラリなりフレームワークなりにお任せすべき部分までやらかしていると
263デフォルトの名無しさん
2015/11/01(日) 08:07:06.43ID:xEvp3/ht Cの複雑さってint,char,とか扱う型の種類とサイズが多い事も理由っぽいので
ここはきっぱりアルゴリズムを記述する為に扱える数値の種類を1,2種類に限定して
そのほかはデーターベースの記録管理みたいに色々なコストをかけて
型変換なりレンジチェックなり圧縮なり手間隙かければ良いのでは?
いっそ64bitサイズの何かで統一してしまう
charもintも実数も全部64bitの何かw
ここはきっぱりアルゴリズムを記述する為に扱える数値の種類を1,2種類に限定して
そのほかはデーターベースの記録管理みたいに色々なコストをかけて
型変換なりレンジチェックなり圧縮なり手間隙かければ良いのでは?
いっそ64bitサイズの何かで統一してしまう
charもintも実数も全部64bitの何かw
264デフォルトの名無しさん
2015/11/01(日) 09:17:05.73ID:v5UlfxKI >>261
単に型なしのオブジェクト言語使えばいいのでわないかと
単に型なしのオブジェクト言語使えばいいのでわないかと
265デフォルトの名無しさん
2015/11/11(水) 11:53:35.17ID:iOpec/0o 型無しのオブジェクト言語って言えばluajitがかなり高速なんだよな、確か。
あれの仕様を上手く転用できないかな。
あれの仕様を上手く転用できないかな。
266デフォルトの名無しさん
2015/11/11(水) 20:22:43.34ID:1hY3wyl+ 多分スクリプトとアセンブラの悪いとこ取りじゃね
267デフォルトの名無しさん
2015/12/14(月) 21:02:53.45ID:LOQs7wcg268デフォルトの名無しさん
2016/04/08(金) 01:45:14.02ID:sej0xQjF void*最強って話か?w
コンパイラが勝手にトレードオフして機能の一部をFPGAに突っ込んでくれよ
コンパイラが勝手にトレードオフして機能の一部をFPGAに突っ込んでくれよ
269デフォルトの名無しさん
2016/05/24(火) 08:42:53.66ID:67ul01kR 高速とは無縁だけど多倍長整数ってあるよね
これをビット単位でやるの、管理も緩く1ビットで1バイト使って管理
速度で無いけど全部の計算表現できるよね
文字列とかは考慮してないけど
色々考えた結果、変数の精度、byte,word,duble word,q...
ここら辺がいかにCPUの効率都合に合わせた制限だってよく判る
制限して精度に条件が付いても効率と速度が欲しいって言う
たった1ビットの多倍長数が扱えるだけで何でも表現できるなと思った。ww
これをビット単位でやるの、管理も緩く1ビットで1バイト使って管理
速度で無いけど全部の計算表現できるよね
文字列とかは考慮してないけど
色々考えた結果、変数の精度、byte,word,duble word,q...
ここら辺がいかにCPUの効率都合に合わせた制限だってよく判る
制限して精度に条件が付いても効率と速度が欲しいって言う
たった1ビットの多倍長数が扱えるだけで何でも表現できるなと思った。ww
270デフォルトの名無しさん
2016/05/24(火) 15:58:40.37ID:AJNPSyjI せめてBCDにしれwww
271デフォルトの名無しさん
2016/06/02(木) 01:23:18.32ID:RwzROqD7 何で10進数にしたがるかね
272デフォルトの名無しさん
2017/03/25(土) 08:50:12.87ID:Wiqnaowk RustがC++に並ぶぐらい速くなってるみたいだけどRustのサブセットみたいなの作ったら良いのかね
273デフォルトの名無しさん
2017/04/03(月) 00:12:39.32ID:Eo4f9wsY 修理するより買い換えた方が安いって話は多いが
もはや解読不可能になったコードのメンテナンスに金は出すくせに
新しく作り直すのはNGってのは恐ろしいな
大手では比較的作り直しもするようだが
もはや解読不可能になったコードのメンテナンスに金は出すくせに
新しく作り直すのはNGってのは恐ろしいな
大手では比較的作り直しもするようだが
274デフォルトの名無しさん
2017/04/03(月) 00:14:37.85ID:Eo4f9wsY もしあらゆる面でC++に勝る言語が出来たとしても、それが流行るかどうかは怪しい
275デフォルトの名無しさん
2017/04/03(月) 00:53:32.18ID:OlsWZk+G >>272
なんでサブセット?
なんでサブセット?
276デフォルトの名無しさん
2017/08/25(金) 04:46:53.19ID:QVMMnsrU ネタがないんだね
Cに代わるっておそらく劣化Cになるだろうし
C++は現状仕様が巨大過ぎて大変な状態らしい
最後は、ライブラリーを移植するとき仕様差による移植性の低下をどうカバーするか問題がでる
(ライブラリーなんて一から書いてられないから)
ー> 結果現行のC++でも良いじゃん
設計とかコード書くときの作法が問題じゃねーのみたいに収束するのかな
あとは、コードの様子を解析するツールやAIっぽい機能を備えた解析などを行うアシストツールが必要になりそう
10進数の需要って金銭関係や丸め切り捨ては四捨五入で行いたい方面に需要があるんかな、やっぱ
Cに代わるっておそらく劣化Cになるだろうし
C++は現状仕様が巨大過ぎて大変な状態らしい
最後は、ライブラリーを移植するとき仕様差による移植性の低下をどうカバーするか問題がでる
(ライブラリーなんて一から書いてられないから)
ー> 結果現行のC++でも良いじゃん
設計とかコード書くときの作法が問題じゃねーのみたいに収束するのかな
あとは、コードの様子を解析するツールやAIっぽい機能を備えた解析などを行うアシストツールが必要になりそう
10進数の需要って金銭関係や丸め切り捨ては四捨五入で行いたい方面に需要があるんかな、やっぱ
277デフォルトの名無しさん
2017/08/25(金) 11:22:12.03ID:KodDhcxm 最近のC++は何を勘違いしたか高級言語気取っててウザイ。
278デフォルトの名無しさん
2017/08/25(金) 21:39:31.76ID:BZOsNf+t 高級っぽく見える言語だな
279デフォルトの名無しさん
2017/08/26(土) 11:55:56.79ID:lejZryYl トンキンではC++関係者は不審者に見えるらしいw
280デフォルトの名無しさん
2018/03/25(日) 14:11:56.44 >>3
>◆新言語でのリソース管理方針◆
>
>・確保したリソースを明示的に後始末しなくても問題が発生しない
>・何らかのメリットのために確保したリソースを明示的に後始末してもよい
こういう魔法みたいなことってどうやったらできるんだろうね
もちろん効率重視なのは言うまでもない前提条件として
数十〜数百マイクロ秒単位で使用元・使用先スレッドがガチャガチャ入れ替わる環境で
>◆新言語でのリソース管理方針◆
>
>・確保したリソースを明示的に後始末しなくても問題が発生しない
>・何らかのメリットのために確保したリソースを明示的に後始末してもよい
こういう魔法みたいなことってどうやったらできるんだろうね
もちろん効率重視なのは言うまでもない前提条件として
数十〜数百マイクロ秒単位で使用元・使用先スレッドがガチャガチャ入れ替わる環境で
281デフォルトの名無しさん
2018/05/23(水) 20:03:50.70ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BTGPU
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BTGPU
282デフォルトの名無しさん
2018/07/05(木) 01:37:35.74ID:RfoszcD2 DKB
283デフォルトの名無しさん
2018/10/20(土) 20:00:04.70ID:YPDT0Cqq Cは8進10進16進数が扱えるのに、何で2進数が扱えないんだろう。
ちょっとの工夫でどうとでもなるけど、やっぱ標準であると嬉しいなあ。
ちょっとの工夫でどうとでもなるけど、やっぱ標準であると嬉しいなあ。
284デフォルトの名無しさん
2018/10/21(日) 14:55:24.25ID:YTn6F4Fk 16進数の方が分かりやすいからじゃないの
1010000とか書かれても1の位置がどこかすぐに分からないし
0x50なら一目で分かるけど
1010000とか書かれても1の位置がどこかすぐに分からないし
0x50なら一目で分かるけど
285デフォルトの名無しさん
2018/10/21(日) 17:25:58.13ID:3rYBWp0g gccはじめメジャーなコンパイラなら大抵は2進数リテラルは扱えるから
よく使う処理系基準でいいでしょ
よく使う処理系基準でいいでしょ
286デフォルトの名無しさん
2018/10/21(日) 20:17:45.60ID:IbAoaMml C++では0bが使えるようになったけど、Cはまだなのか
つか素直にC++使おう
つか素直にC++使おう
287デフォルトの名無しさん
2018/10/21(日) 21:24:49.94ID:y1FMkoBF 最近のc++は糞化拡張が止まらないから。
あくまでアセンブラの代替として使いたいのであって、ハード寄りのコードを書きたいのであって、
速度重視、メモリ効率重視が根底にあるのに、c++の仕様拡張してる奴らはただの言語オタクでうざい。
あくまでアセンブラの代替として使いたいのであって、ハード寄りのコードを書きたいのであって、
速度重視、メモリ効率重視が根底にあるのに、c++の仕様拡張してる奴らはただの言語オタクでうざい。
288デフォルトの名無しさん
2019/05/25(土) 11:08:30.63ID:jbgB9jQg Rustが正解に近い。
メジャー化してエコシステムが充実すればいける。
メジャー化してエコシステムが充実すればいける。
289デフォルトの名無しさん
2019/06/03(月) 11:49:30.62ID:561P/qAZ armcc, armclang, Linaro GCC
ARMR コンパイラ armcc ユーザガイド
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472jj/index.html
armcc は、標準 C および標準 C++ のソースコードを ARM アーキテクチャベースプロセッサのマシンコードにコンパイルする、最適化 C および C++ コンパイラです。
ARMR コンパイラ armcc ユーザガイド
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472jj/index.html
armcc は、標準 C および標準 C++ のソースコードを ARM アーキテクチャベースプロセッサのマシンコードにコンパイルする、最適化 C および C++ コンパイラです。
2901
2019/08/13(火) 23:00:51.64ID:oTlgbS6H Rustが正解であることが確認されました。
10年弱に渡りお付き合いいただきありがとうございました。
10年弱に渡りお付き合いいただきありがとうございました。
291デフォルトの名無しさん
2019/08/21(水) 20:28:24.91ID:6xsUkfpB 言語が
理解習得し易い
誤認間違い難い
というのもお願いしたい
理解習得し易い
誤認間違い難い
というのもお願いしたい
292デフォルトの名無しさん
2019/08/31(土) 17:50:09.35ID:54Etlgy2 MIT「えっまた俺なんかやっちゃいました?」
julia、軌道に乗る
julia、軌道に乗る
293デフォルトの名無しさん
2019/08/31(土) 22:20:26.54ID:XxwPKKvU294デフォルトの名無しさん
2019/09/01(日) 01:01:46.09ID:JdN5NInb >>288
バスト占い思い出した
バスト占い思い出した
295デフォルトの名無しさん
2019/09/01(日) 13:35:22.25ID:gzRpR9B4 c++が示したことってのは結局
ランタイム速度
高級機能を追加
の2点だけ追求すれば馬鹿プログラマは寄ってくるってことなんだわ。
ランタイム速度
高級機能を追加
の2点だけ追求すれば馬鹿プログラマは寄ってくるってことなんだわ。
296デフォルトの名無しさん
2019/09/14(土) 20:38:11.35ID:IbeHy12P どうみても今はコード書かない言語オタクが好き勝手に拡張してる。
C++にくだらん機能追加したいなら名前変えろよ。
C++系言語で普及した言語はJavaやC#などいっぱいある。
C++にくだらん機能追加したいなら名前変えろよ。
C++系言語で普及した言語はJavaやC#などいっぱいある。
297デフォルトの名無しさん
2020/02/17(月) 23:02:27.37ID:R0DiDWe7 Low* (Low star)という言語は型システムがすごいのでぜひ取り入れていくべき
298デフォルトの名無しさん
2021/10/27(水) 10:06:43.69ID:XE3bmMwX 演算子オーバーロードって難読化だよね
299デフォルトの名無しさん
2021/10/28(木) 12:18:05.54ID:VQB5DVZJ まあ、もともとCは最適化はあまりやらなくて、プログラマの意思をなるべく素直に伝えるという思想だしな。だから、a=a+1;とa++;は演算後の値は同じでもプログラマの意図は違う。前者は加算命令、後者はインクリメント命令に落ちてほしい。
コンパイラのエラーチェックも最小限で、チェックはlint使えって感じだし。
Rust屋の主張するメモリ安全なんかも「うっせえわ!黙って言う通りにやれ!」って感じ。
あぁ、キャリー/ボローフラグが使えたら良いなあって時はあるかな。
コンパイラのエラーチェックも最小限で、チェックはlint使えって感じだし。
Rust屋の主張するメモリ安全なんかも「うっせえわ!黙って言う通りにやれ!」って感じ。
あぁ、キャリー/ボローフラグが使えたら良いなあって時はあるかな。
300ハノン ◆QZaw55cn4c
2021/10/30(土) 16:29:48.11ID:nIglmucm301デフォルトの名無しさん
2021/11/06(土) 14:48:01.13ID:b1XdA94q int と size_t がいつも混在して面倒になる
302デフォルトの名無しさん
2021/11/26(金) 11:52:34.78ID:ARqZ/fb1 勝手な整数拡張をやめてくれるある意味cより低級なcが欲しい
パフォーマンス的にワード長で扱うのが良いというのもわかるが
あえてintより小さい型で計算したい時というのはそれなりの理由があるからやるわけで
その型内でオーバーフローしたら切り詰めずに素直に落ちろ
パフォーマンス的にワード長で扱うのが良いというのもわかるが
あえてintより小さい型で計算したい時というのはそれなりの理由があるからやるわけで
その型内でオーバーフローしたら切り詰めずに素直に落ちろ
303デフォルトの名無しさん
2022/04/19(火) 01:58:13.78ID:TThcYTpA しかしそこまで低級なところに降りていくとマクロアセンブラみたいなのが使いやすい感じになっちゃうんだよね。
言語上の表現がどういう機械語に対応付くのか意識するともう直接書いた方がええわ……となる。
言語上の表現がどういう機械語に対応付くのか意識するともう直接書いた方がええわ……となる。
304デフォルトの名無しさん
2022/04/19(火) 14:30:56.58ID:1/h8QBeL 呼び出し前後のレジスタ退避と回復だけやってくれれば意外とアセンブラはほぼforthだよね
305デフォルトの名無しさん
2022/04/21(木) 17:35:30.02ID:+ZjRtsOn forthは言語とマクロ用言語が同一言語なアセンブラだな
gforthみたいなリッチ実装はコンパイル済の定義を参照するとx86の標準文法を曝け出しちゃってなんだかなぁ、と思う
gforthみたいなリッチ実装はコンパイル済の定義を参照するとx86の標準文法を曝け出しちゃってなんだかなぁ、と思う
306デフォルトの名無しさん
2022/04/21(木) 20:15:20.64ID:O4XEE7U4 >>304
forthは呼び出し規約の抽象化じゃなくて、型と引数という概念を捨てて自由になった
マシン依存性を排除するためにレジスタを抽象化した汎用dスタックに全ての命令が型と個数の解釈をモラルを守って作用することで成り立ってる
(暗黙の)引数渡しに関してはオーバーヘッドは大きくないので普通はマシンの最大スカラー型
floatはさすがにfスタックがあるけど
dスタックだけで複雑なデータ操作は厳しいから、最大スカラー型である事が保証されてるrスタック(生ハードウェアスタック)が一時領域に便利なのが闇
制御構造も戻りアドレスや添字を積むだけだから、うっかり積み残しがあると戻りアドレスやデータが添字代わりにインクリメントされ続けたり不可解な事に
あとは拡張性が売りの癖に制御構造のポータブルな拡張が難しいのがな…
もちろん制御構造と整合性のある単純な命令くらいは添えられてるのであくまで例だけど
指定回数ループをbreakするには最低で添字と戻りアドレスをpopする必要があるけど、たいてい実装拡張として積まれてるデータは不定、何回popしたらセグフォるか試すことになる
規格の制御構造には不備があるから(これは本当)うちの拡張を推奨ってのが普通の世界
制御構造すら定番がなくて、同じ言語といえるのかという疑問すら湧く
forthは呼び出し規約の抽象化じゃなくて、型と引数という概念を捨てて自由になった
マシン依存性を排除するためにレジスタを抽象化した汎用dスタックに全ての命令が型と個数の解釈をモラルを守って作用することで成り立ってる
(暗黙の)引数渡しに関してはオーバーヘッドは大きくないので普通はマシンの最大スカラー型
floatはさすがにfスタックがあるけど
dスタックだけで複雑なデータ操作は厳しいから、最大スカラー型である事が保証されてるrスタック(生ハードウェアスタック)が一時領域に便利なのが闇
制御構造も戻りアドレスや添字を積むだけだから、うっかり積み残しがあると戻りアドレスやデータが添字代わりにインクリメントされ続けたり不可解な事に
あとは拡張性が売りの癖に制御構造のポータブルな拡張が難しいのがな…
もちろん制御構造と整合性のある単純な命令くらいは添えられてるのであくまで例だけど
指定回数ループをbreakするには最低で添字と戻りアドレスをpopする必要があるけど、たいてい実装拡張として積まれてるデータは不定、何回popしたらセグフォるか試すことになる
規格の制御構造には不備があるから(これは本当)うちの拡張を推奨ってのが普通の世界
制御構造すら定番がなくて、同じ言語といえるのかという疑問すら湧く
307デフォルトの名無しさん
2022/04/21(木) 21:15:26.12ID:O4XEE7U4 >>305
コメント無くなってたり、埋め込んだ定義が等価な表現に置き換わってたりするから、seeは既存のコードを参照してるのでなくて、ブロブからforthコードへのディスアセンブラ(再構築)
ワードを渡せば' でそのワードの指すアドレスは取れるけど、そこから何バイト読むかのオフセット指定をseeは取らない、かなりヒューリスティックだと思う
seeで標準される開始-終了アドレスに、読みすぎてそうなら適当に足すか、途中で切れてるようなコードなら適当に足してaddr nbyte discloseと呼べば大体復元できると思う
dis、+disとかも入ってたっけ
まあ、具体的なレジスタやメモリの名前が分かるだけでforthコードとそんな変わらないという悲しさはあるが
コメント無くなってたり、埋め込んだ定義が等価な表現に置き換わってたりするから、seeは既存のコードを参照してるのでなくて、ブロブからforthコードへのディスアセンブラ(再構築)
ワードを渡せば' でそのワードの指すアドレスは取れるけど、そこから何バイト読むかのオフセット指定をseeは取らない、かなりヒューリスティックだと思う
seeで標準される開始-終了アドレスに、読みすぎてそうなら適当に足すか、途中で切れてるようなコードなら適当に足してaddr nbyte discloseと呼べば大体復元できると思う
dis、+disとかも入ってたっけ
まあ、具体的なレジスタやメモリの名前が分かるだけでforthコードとそんな変わらないという悲しさはあるが
308デフォルトの名無しさん
2022/07/30(土) 16:21:32.91ID:paa5jUiA Nim++
309デフォルトの名無しさん
2022/08/03(水) 08:36:38.78ID:G37dUWbH 低級言語ならx64特化して構造化アセンブラみたいな感じで
ちょっとオシャレだけどやってる事はほぼむき出しのレジスタ操作みたいな?
ちょっとオシャレだけどやってる事はほぼむき出しのレジスタ操作みたいな?
310デフォルトの名無しさん
2022/08/03(水) 11:55:01.67ID:GLMdE3Py masm64でinvokeしまくれば
311デフォルトの名無しさん
2022/08/04(木) 05:27:08.29ID:Xs8BUVRi 例えばループが多重化してループカウンタが複数必要な場合
作法としてRCXを使うけど、処理系が最適化で空いてるレジスタを割り当てたり
退避復帰をしつつRCXを使うとか
固定領域を確保してカウントに使用するとか自動でやってくれるみたいな
プログラムコードは雰囲気コーディングだけど最終出力は忖度された何かみたいな感じ
作法としてRCXを使うけど、処理系が最適化で空いてるレジスタを割り当てたり
退避復帰をしつつRCXを使うとか
固定領域を確保してカウントに使用するとか自動でやってくれるみたいな
プログラムコードは雰囲気コーディングだけど最終出力は忖度された何かみたいな感じ
312デフォルトの名無しさん
2022/08/04(木) 18:25:34.25ID:+TMVVsOn アセンブリ並みの変態低級言語作る?
313デフォルトの名無しさん
2022/08/06(土) 14:07:02.72ID:eSBCWCwI Nim++
314デフォルトの名無しさん
2023/09/21(木) 12:59:48.22ID:7twnyTUv もうそろそろ、おしで祭りや
315デフォルトの名無しさん
2023/11/01(水) 03:29:10.04ID:5z6NYMjm Nim#
316デフォルトの名無しさん
2023/11/05(日) 10:42:59.68ID:ol9bMVcc Rust++
317デフォルトの名無しさん
2023/11/05(日) 16:32:02.05ID:M+aCXIKU 最近のCPUのアセンブラはほとんどCと変わらないようだけど
318デフォルトの名無しさん
2023/11/06(月) 06:07:34.02ID:bdWb9xgB 昔のCはアセンブラとほとんど変わらなかったから
差は縮まっていない
なにも変わってない
差は縮まっていない
なにも変わってない
319デフォルトの名無しさん
2023/11/06(月) 16:20:14.87ID:cmjYyIPB 最近はむしろC標準が直接サポートしてない命令が増えてるからな
ローテイトなんていまだにないし
ローテイトなんていまだにないし
320デフォルトの名無しさん
2023/11/11(土) 12:31:46.21ID:fuGMacjx321デフォルトの名無しさん
2024/02/11(日) 03:12:32.56ID:morq3qnL >>294
Aカップが好きなアセンブラ君、食わず嫌いはいけません高級言語は恐くありませーん
Bカップが好きなBASIC君、少しは毛が生えたけどまだまだ修行が足りません関数に興味はないのですか
Cカップが好きな君は正解に限りなく近い。有象無象の言語はたくさん出てきたけれど結局Cが手ごろサイズで限りなく正解に近いです
Jカップが好きな君は煩悩に振り回されっぱなしです。たまには太陽だけでなく月にも興味を持ちなさい
Aカップが好きなアセンブラ君、食わず嫌いはいけません高級言語は恐くありませーん
Bカップが好きなBASIC君、少しは毛が生えたけどまだまだ修行が足りません関数に興味はないのですか
Cカップが好きな君は正解に限りなく近い。有象無象の言語はたくさん出てきたけれど結局Cが手ごろサイズで限りなく正解に近いです
Jカップが好きな君は煩悩に振り回されっぱなしです。たまには太陽だけでなく月にも興味を持ちなさい
322デフォルトの名無しさん
2024/04/19(金) 10:13:34.89ID:uD5nyH4z >>1
仮想アセンブラを作ることになるが、かえって誤ったハードウェアと勘違いしそうw
仮想アセンブラを作ることになるが、かえって誤ったハードウェアと勘違いしそうw
323デフォルトの名無しさん
2024/04/19(金) 10:14:46.38ID:uD5nyH4z >>317
アセンブラがわからないのに語る変なやつw
アセンブラがわからないのに語る変なやつw
324デフォルトの名無しさん
2024/05/02(木) 01:06:39.68ID:f54xPIPf >>321
どうでもいい話だけど、J が Java のことを言ってるようにも見えるので
実際には J 言語てのがあるんだけどね
J はJava や JS とは全く関係ない、APL (という言語) の派生言語で
APL と違って特殊キャラクタを使用せず ASCII のみで記述可能にしたもの
どうでもいい話だけど、J が Java のことを言ってるようにも見えるので
実際には J 言語てのがあるんだけどね
J はJava や JS とは全く関係ない、APL (という言語) の派生言語で
APL と違って特殊キャラクタを使用せず ASCII のみで記述可能にしたもの
325デフォルトの名無しさん
2024/12/11(水) 21:59:47.09ID:bqdEzJrv326デフォルトの名無しさん
2025/03/24(月) 12:24:27.59ID:tWxitKr9327デフォルトの名無しさん
2025/03/24(月) 13:15:17.83ID:a0wY9RFf >>326
https://docs.rs/bit-vec/ がいいかな
use bit_vec::BitVec;
fn main() {
// 32bit全てfalseで作成
let mut bv = BitVec::from_elem(32, false);
// 7bitおきにtrueセット
for index in (0..32).step_by(7) {
bv.set(index, true);
}
// 0, 7, 14 , 21, 28番目のbitがtrueになった
assert_eq!(bv.get(0), Some(true));
assert_eq!(bv.get(1), Some(false));
assert_eq!(bv.get(7), Some(true));
assert_eq!(bv.get(28), Some(true));
// イテレータでtrueになってる位置のリスト
let v = bv.iter().enumerate().filter_map(|(i, bit)| bit.then_some(i)).collect::<Vec<_>>();
assert_eq!(v, [0, 7, 14, 21, 28]);
// 内部構造は標準でVec<u32>を使っているのでu32が1つ分
assert_eq!(bv.storage(), [0b_10000001000000100000010000001]);
// バイト列にすると4バイト
assert_eq!(bv.to_bytes().len(), 4);
assert_eq!(bv.to_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001000]);
}
https://docs.rs/bit-vec/ がいいかな
use bit_vec::BitVec;
fn main() {
// 32bit全てfalseで作成
let mut bv = BitVec::from_elem(32, false);
// 7bitおきにtrueセット
for index in (0..32).step_by(7) {
bv.set(index, true);
}
// 0, 7, 14 , 21, 28番目のbitがtrueになった
assert_eq!(bv.get(0), Some(true));
assert_eq!(bv.get(1), Some(false));
assert_eq!(bv.get(7), Some(true));
assert_eq!(bv.get(28), Some(true));
// イテレータでtrueになってる位置のリスト
let v = bv.iter().enumerate().filter_map(|(i, bit)| bit.then_some(i)).collect::<Vec<_>>();
assert_eq!(v, [0, 7, 14, 21, 28]);
// 内部構造は標準でVec<u32>を使っているのでu32が1つ分
assert_eq!(bv.storage(), [0b_10000001000000100000010000001]);
// バイト列にすると4バイト
assert_eq!(bv.to_bytes().len(), 4);
assert_eq!(bv.to_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001000]);
}
328デフォルトの名無しさん
2025/03/24(月) 13:30:34.57ID:S5TsEiko CはPDP-11のアセンブラの高級言語化でしたっけ?
消えたアーキテクチャとは言え未だ有用ではありますが、現役アーキテクチャの8086-64やARMのソレとかの命令セットはどうなっているんでしょ?
多分基本命令そのものは大差ないと思うけど、マルチメディア拡張? MMXみたいな専用命令はCで直接記述出来ないですよね。
他にも、最近のナウいアーキテクチャは文字列をそのまま扱えるとか聞いて想像の範疇超えてます。
高級言語も楽で良いけど、そういうのは楽なアセンブラの上に構築出来ればそれで良いなあ。
消えたアーキテクチャとは言え未だ有用ではありますが、現役アーキテクチャの8086-64やARMのソレとかの命令セットはどうなっているんでしょ?
多分基本命令そのものは大差ないと思うけど、マルチメディア拡張? MMXみたいな専用命令はCで直接記述出来ないですよね。
他にも、最近のナウいアーキテクチャは文字列をそのまま扱えるとか聞いて想像の範疇超えてます。
高級言語も楽で良いけど、そういうのは楽なアセンブラの上に構築出来ればそれで良いなあ。
329デフォルトの名無しさん
2025/03/24(月) 19:01:49.54ID:/lNBwDBZ 25年位前のレスのコピペかよω
330デフォルトの名無しさん
2025/03/25(火) 03:40:11.48ID:ztarSHRB >>327
なんか左右逆で気持ち悪い(bigendian/littleendianともちょっと違う)
bv.set(31, true);
bv.set(32, true);
assert_eq!(bv.to_bytes(), [
0b_10000001, // 0-
0b_00000010,
0b_00000100,
0b_00001001,
0b_10000000]); // 32-
assert_eq!(bv.storage(), [
0b_10010000001000000100000010000001,
0b_1]);
なんか左右逆で気持ち悪い(bigendian/littleendianともちょっと違う)
bv.set(31, true);
bv.set(32, true);
assert_eq!(bv.to_bytes(), [
0b_10000001, // 0-
0b_00000010,
0b_00000100,
0b_00001001,
0b_10000000]); // 32-
assert_eq!(bv.storage(), [
0b_10010000001000000100000010000001,
0b_1]);
331デフォルトの名無しさん
2025/03/25(火) 08:18:52.12ID:viWlYIzm >>329
すまない、オッサン通り越してお爺さんだから思想も古いんだ。
すまない、オッサン通り越してお爺さんだから思想も古いんだ。
332デフォルトの名無しさん
2025/03/25(火) 08:41:39.56ID:ztarSHRB333デフォルトの名無しさん
2025/03/25(火) 09:02:37.24ID:4yBAp1pH >>330
ビットはそういうものだよ
普通にビット演算すればわかる
let mut bits: u32 = 0;
for n in [0, 7, 14, 21, 28, 31] {
bits |= 1 << n;
}
// u32に詰めているからこうなる
assert_eq!(bits, 0b_10010000_00100000_01000000_10000001);
// bit順(index=0..)にバイトで得る
assert_eq!(bits.reverse_bits().to_be_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001001]);
ビットはそういうものだよ
普通にビット演算すればわかる
let mut bits: u32 = 0;
for n in [0, 7, 14, 21, 28, 31] {
bits |= 1 << n;
}
// u32に詰めているからこうなる
assert_eq!(bits, 0b_10010000_00100000_01000000_10000001);
// bit順(index=0..)にバイトで得る
assert_eq!(bits.reverse_bits().to_be_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001001]);
334デフォルトの名無しさん
2025/03/25(火) 12:13:35.71ID:2SmtLJ6z assert_eq!(bits.storage(), [0b_10010000_00100000_01000000_10000001]);
の結果から想像するに
assert_eq!(bits.reverse_bits().to_be_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001001]);
ではなく
assert_eq!(bits.to_be_bytes(), [0b_10000001, 0b_01000000, 0b_00100000, 0b_10010000]);
の方を期待するのは可笑しいのかなー
正直びっくりエンディアンですわ
の結果から想像するに
assert_eq!(bits.reverse_bits().to_be_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001001]);
ではなく
assert_eq!(bits.to_be_bytes(), [0b_10000001, 0b_01000000, 0b_00100000, 0b_10010000]);
の方を期待するのは可笑しいのかなー
正直びっくりエンディアンですわ
335デフォルトの名無しさん
2025/03/25(火) 19:08:05.91ID:d+t8RnIb byteやword単位のリトルエンディアンじゃなくて
1bit単位のリトルエンディアンだと思えば自然
1bit単位のリトルエンディアンだと思えば自然
336デフォルトの名無しさん
2025/03/27(木) 07:21:00.91ID:vU3T1Sq/ Rustのオペレーターオーバーロードについて質問です
とりあえずtraitを使って
let a: X = X::new();
let b: X = X::new();
let c = a + b;
は出来たのですが
let a = &X::new();
let b = &X::new();
let c = a + b;
だと定義が無いと言われるのでtraitに&のバージョンを追加したら出来ました
ところが
let a = &mut X::new();
let b = &mut X::new();
let c = a + b;
だとまた出来ないのでtraitに&mutバージョンを追加したら出来ました
ところが
let a = &X::new();
let b = &mut X::new();
let c = a + b;
や
let a = X::new();
let b = &mut X::new();
let c = a + b;
や
let a = &X::new();
let b = X::new();
let c = a + b;
が全部出来ません
こういうのはすべての組み合わせをtraitで作っておく必要があるのでしょうか?
それとも一つの表現で全部定義してくれる仕組みは?
とりあえずtraitを使って
let a: X = X::new();
let b: X = X::new();
let c = a + b;
は出来たのですが
let a = &X::new();
let b = &X::new();
let c = a + b;
だと定義が無いと言われるのでtraitに&のバージョンを追加したら出来ました
ところが
let a = &mut X::new();
let b = &mut X::new();
let c = a + b;
だとまた出来ないのでtraitに&mutバージョンを追加したら出来ました
ところが
let a = &X::new();
let b = &mut X::new();
let c = a + b;
や
let a = X::new();
let b = &mut X::new();
let c = a + b;
や
let a = &X::new();
let b = X::new();
let c = a + b;
が全部出来ません
こういうのはすべての組み合わせをtraitで作っておく必要があるのでしょうか?
それとも一つの表現で全部定義してくれる仕組みは?
337デフォルトの名無しさん
2025/03/27(木) 09:14:29.90ID:vU3T1Sq/338デフォルトの名無しさん
2025/03/27(木) 09:22:10.62ID:UV4Rce1I339デフォルトの名無しさん
2025/03/27(木) 09:56:58.93ID:vU3T1Sq/ ああこれinternalなのね
macro_rules! add_impl とか
macro_rules! forward_ref_binop
(unop とか op_assign とかもあるけど)
macro_rules! add_impl とか
macro_rules! forward_ref_binop
(unop とか op_assign とかもあるけど)
340デフォルトの名無しさん
2025/03/27(木) 09:59:54.17ID:vU3T1Sq/341デフォルトの名無しさん
2025/03/27(木) 10:02:25.16ID:vU3T1Sq/342デフォルトの名無しさん
2025/03/27(木) 11:15:21.43ID:vU3T1Sq/ よさげだったけど&mutのが出来なかったorz
343デフォルトの名無しさん
2025/03/27(木) 11:35:25.37ID:vU3T1Sq/ 結局自前でmacroコピペして&mutの定義も追加したらいけたわthx
344デフォルトの名無しさん
2025/03/27(木) 11:46:57.39ID:HDQeQZ5r Copyトレイトは無闇に付けたくないな
345デフォルトの名無しさん
2025/03/27(木) 11:59:13.89ID:JG6/gkrB Trait爆発ですね判ります
346デフォルトの名無しさん
2025/03/27(木) 12:14:45.69ID:UV4Rce1I347デフォルトの名無しさん
2025/03/28(金) 09:26:28.67ID:VPiwRdmL Rust使ってても暗黙のCopyとかに無関心だと【超高速】名乗れなくない?
348デフォルトの名無しさん
2025/04/05(土) 10:41:53.71ID:wy4OM/NR 包丁も食材も上手く使えないと料理は不味い
349デフォルトの名無しさん
2025/04/06(日) 07:52:19.40ID:IvdHyMZx 料理が上手なヤツはRustは使わない
350デフォルトの名無しさん
2025/04/06(日) 23:21:04.80ID:p+WNSwb1 >>347
暗黙のコピーが発生しまくる諸言語とは異なり
RustではCopyトレイト実装型のみ暗黙のコピーが行われるので最もRustが好ましい
具体的にCopyトレイト実装型とは整数値やポインタおよび不変参照であり
それらを用いた複合型は明示的にCopyトレイト実装することもできる
ちなみに整数値などがなぜ暗黙のコピーが起きても構わないかというと
CPUにとってそれらをポインタ経由で間接的に扱う方が遅くなるからであり値をコピーして用いたほうが速いため
暗黙のコピーが発生しまくる諸言語とは異なり
RustではCopyトレイト実装型のみ暗黙のコピーが行われるので最もRustが好ましい
具体的にCopyトレイト実装型とは整数値やポインタおよび不変参照であり
それらを用いた複合型は明示的にCopyトレイト実装することもできる
ちなみに整数値などがなぜ暗黙のコピーが起きても構わないかというと
CPUにとってそれらをポインタ経由で間接的に扱う方が遅くなるからであり値をコピーして用いたほうが速いため
351デフォルトの名無しさん
2025/04/07(月) 10:58:45.39ID:fwcAlCQF はあ…
352デフォルトの名無しさん
2025/04/07(月) 12:23:44.19ID:yN1PvO54 >>349
マにだって料理が得意な奴はいるだろ
マにだって料理が得意な奴はいるだろ
353デフォルトの名無しさん
2025/04/07(月) 14:31:02.06ID:w0rhHNCz354デフォルトの名無しさん
2025/04/07(月) 14:50:26.71ID:k98JYePi355デフォルトの名無しさん
2025/05/02(金) 09:39:27.39ID:k5bGwZZ0 Rustの最大の教訓は、どんな言語でも有名になればバカ(必ずしも頭が悪いわけではなく、本来その言語が想定しない用途に使おうとする奴も含む)が使うってことだろう
Rustの仕様はそれほど効率が重要でない分野でテキトーに使おうとすると無駄なコピーが増えたりしてかえって非効率になりがちな面がある
Rustの仕様はそれほど効率が重要でない分野でテキトーに使おうとすると無駄なコピーが増えたりしてかえって非効率になりがちな面がある
356デフォルトの名無しさん
2025/05/02(金) 18:23:29.41ID:kIVCyVUc >>355
Rustは明示的にclone()を呼んだりCopy実装しないとコピーされないから大丈夫だよ
暗黙にコピーされないから無駄なことをしていればコード見るとすぐバレちゃう
まともなコードは必要な極一部を除いてほとんど参照で渡されるね
ちなみに数値や不変参照(ポインタ)はCopy実装されてるため暗黙にコピーされるけどそれが一番速いから問題なし
Rustは明示的にclone()を呼んだりCopy実装しないとコピーされないから大丈夫だよ
暗黙にコピーされないから無駄なことをしていればコード見るとすぐバレちゃう
まともなコードは必要な極一部を除いてほとんど参照で渡されるね
ちなみに数値や不変参照(ポインタ)はCopy実装されてるため暗黙にコピーされるけどそれが一番速いから問題なし
357デフォルトの名無しさん
2025/05/03(土) 12:05:28.26ID:ekVKJoF2 最適化されることを主張するなら証拠を示すべきなのは当然だが、
コピーの最適化を前提にするのなら例えば安易にCopy実装したりcloneしたりすんな、
みたいな意識高い言説は多くの場合無意味になっちゃうわけだけど、Rustおじはそれでいいのだろうか
コピーの最適化を前提にするのなら例えば安易にCopy実装したりcloneしたりすんな、
みたいな意識高い言説は多くの場合無意味になっちゃうわけだけど、Rustおじはそれでいいのだろうか
358デフォルトの名無しさん
2025/05/03(土) 13:36:23.13ID:BbjMJMxS >>357
頭悪いから違いを理解できないのか?
まずCPUのMOVE命令は全てコピーだ
だから数値や参照(アドレス)がCopy実装されていても何のペナルティも存在しない
むしろ数値や参照を参照で扱う方が間接となり遅い
次にCPUのMOVE命令は全てコピーだがコピー元が使われてなければ純粋なムーブと見なすことができる
そのため最適化が可能で例えば2回のムーブは1回に減らすことができる
これはスタック上の変数を扱う場合も同様でレジスタへMOVEした後にレジスタ間の演算で終わるならスタック上の領域は不要で最適化できる
頭悪いから違いを理解できないのか?
まずCPUのMOVE命令は全てコピーだ
だから数値や参照(アドレス)がCopy実装されていても何のペナルティも存在しない
むしろ数値や参照を参照で扱う方が間接となり遅い
次にCPUのMOVE命令は全てコピーだがコピー元が使われてなければ純粋なムーブと見なすことができる
そのため最適化が可能で例えば2回のムーブは1回に減らすことができる
これはスタック上の変数を扱う場合も同様でレジスタへMOVEした後にレジスタ間の演算で終わるならスタック上の領域は不要で最適化できる
359デフォルトの名無しさん
2025/05/03(土) 13:38:21.80ID:BbjMJMxS RustやC++のムーブも同じで一次的にはコピーをして元を使わないため最適化できる場合が多い
一方でプログラマがコピーやクローンを明示的にした場合は元が生きていて全く異なる
そもそも元も後で使いたいからコピーしているわけだ
だからムーブとは異なり最適化でコピーが消えることはない
もちろん後で使いたい場合はコピーして渡すのではなく参照を渡すのが正解だ
一方でプログラマがコピーやクローンを明示的にした場合は元が生きていて全く異なる
そもそも元も後で使いたいからコピーしているわけだ
だからムーブとは異なり最適化でコピーが消えることはない
もちろん後で使いたい場合はコピーして渡すのではなく参照を渡すのが正解だ
360デフォルトの名無しさん
2025/05/03(土) 13:39:26.21ID:BbjMJMxS したがってプログラマはコピーを可能な限り避けるべきである
暗黙のコピーが行われるプログラミング言語では意識せずコピーしてしまう
プログラムを見ただけですぐにコピーしてあることがわかる方が望ましい
RustではCopyトレイト実装した型のみ暗黙のコピーが起きる
前述のように数値などはその方が有利なので最初からCopy実装されている
ヒープを用いない型ならばプログラマは自由にCopy実装できるがコード上でそれが明示され読む側は気付ける
サイズが大きく参照で扱った方がよい型をCopy実装していればおかしいことがわかる
一方でヒープを用いていればCopy実装はできないがClone実装はできる
これはコード上でfoo.clone()とコピーすることを明示的に記述する必要がある
したがって参照を使えばよいのに無駄なコピーをしていればすぐにわかる
暗黙のコピーが行われるプログラミング言語では意識せずコピーしてしまう
プログラムを見ただけですぐにコピーしてあることがわかる方が望ましい
RustではCopyトレイト実装した型のみ暗黙のコピーが起きる
前述のように数値などはその方が有利なので最初からCopy実装されている
ヒープを用いない型ならばプログラマは自由にCopy実装できるがコード上でそれが明示され読む側は気付ける
サイズが大きく参照で扱った方がよい型をCopy実装していればおかしいことがわかる
一方でヒープを用いていればCopy実装はできないがClone実装はできる
これはコード上でfoo.clone()とコピーすることを明示的に記述する必要がある
したがって参照を使えばよいのに無駄なコピーをしていればすぐにわかる
361デフォルトの名無しさん
2025/05/04(日) 11:58:45.22ID:RkNPiBO2 区別できないバカなのか?
ムーブの時などを含めて実態がコピーになるといってもコピー元は二度と使われないのだから最適化できる
一方でclone()などはコピー元をその後も使うためにコピーしている
コピー元を二度と使わないならclone()の必要がない
そしてコピー元をその後も使うから最適化の前提さえ成立しない
ムーブの時などを含めて実態がコピーになるといってもコピー元は二度と使われないのだから最適化できる
一方でclone()などはコピー元をその後も使うためにコピーしている
コピー元を二度と使わないならclone()の必要がない
そしてコピー元をその後も使うから最適化の前提さえ成立しない
362デフォルトの名無しさん
2025/05/05(月) 10:09:59.16ID:20YqVkB+ RustはC++より描き易いけどC++からの置き換えには不適
RustはCより面倒だけどCからの置き換えには最適
RustはCより面倒だけどCからの置き換えには最適
363デフォルトの名無しさん
2025/05/06(火) 06:06:18.29ID:JTtajrxW 低レベル言語の開発だよね?
皆さんの会話が高級すぎて戸惑いを隠せない。
OS記述も十分に低レベルだけど、ハードウエア操作はもっと低レベルじゃないかな?
皆さんの会話が高級すぎて戸惑いを隠せない。
OS記述も十分に低レベルだけど、ハードウエア操作はもっと低レベルじゃないかな?
364デフォルトの名無しさん
2025/05/06(火) 10:06:47.77ID:K1Pjz07i Rustで低レベルするとunsafeだらけになる
(悪いとは言ってない面倒臭いとは思う)
(悪いとは言ってない面倒臭いとは思う)
レスを投稿する
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 食品の高騰対策、政府が交付金の「特別枠」検討 原則全ての自治体で [蚤の市★]
- 【超絶悲報】日本政府「高市さんの答弁撤回はない。政権として弱腰と映る姿勢は見せられない」これもう立憲岡田の議員辞職しかないだろ [519511584]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 台湾「高市さんが台湾人の悲願を叶えてくれた!」これじゃ高市さん発言撤回できないぢゃん😰 [523957489]
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
