[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/17 05:49 / Filesize : 316 KB / Number-of Response : 1054
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレ立てるまでもない質問はここで 149匹目



1 名前:デフォルトの名無しさん mailto:sage [2018/06/17(日) 10:31:28.00 .net]
質問する前にGoogleで検索しましょう。 www.google.com/
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
ワッチョイは住人が離れスレが寂れます導入禁止。

前スレ
スレ立てるまでもない質問はここで 148匹目 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1495618637/

312 名前:デフォルトの名無しさん mailto:sage [2019/05/25(土) 17:22:26.67 ID:MUGP4AlX.net]
PHP の質問は、web prog 板の方へ、書き込んでください!

313 名前:デフォルトの名無しさん [2019/05/26(日) 01:56:06.80 ID:ZtwHTv9L.net]
VisualStudioでDLLをデバッカしたいです。
ぐぐると、DLLを呼び出すexeを実行し、exeの対して「プロセスのアタッチ」を実行すればよいとありましたが、
DLLを呼び出すexeが一瞬で終わってしまうコマンドのため、アタッチできません。どうすればよいでしょうか。

試しに、exeを「ローカルWindowsデバッガー]で停止させ、別窓のVisualStudioコンソールでDLLのソリューションを開き
exeにアタッチしようとしましたが、「プロセスにアタッチできません。デバッガーは既にアタッチされています。」と表示され、アタッチできませんでした。

314 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 09:12:14.46 ID:kGcgY47H.net]
DLLのコードにブレークポイントを置いておいて、スタートアッププロジェクトのデバッグコマンドを
そのexeにしてデバッグ実行するだけでいいと思うけど。

315 名前:デフォルトの名無しさん [2019/05/26(日) 11:56:12.17 ID:PQEivHO3.net]
>>299
すみません、Visul StudioでexeとDLLを同じソリューションで定義し直し(もともとは別ソリューション)
exeを「ローカルWindowsデバッガー」で動作させたところ、DLLのコードのブレークポイントで止まるようになりました。


追加の質問ですみませんが、「ローカルWindowsデバッガー」ではなくVisual Studioのリモートデバッカでデバックしたい場合ですが、
基本的にはデバックしたいexeのプロセスにアタッチする手番と思います。
アタッチする際に「使用可能なプロセス」の一覧からデバックするプロセスを選択すると思いますが、
非常駐プロセスの場合、この一覧からプロセスを選択できません。
デバックしたいexeが非常駐プロセスである場合、どうやってアタッチすればよいのでしょうか。

316 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 14:32:07.38 ID:WMkIoFQL.net]
以下のようなWindowsプログラム(メインプログラム)のソースを書きました。

main.cpp
-------------------------------------------------


317 名前:int main()
{
int *pNumber2 = NULL;
HMODULE hMod = LoadLibrary(DLLPATH);
PTESTMALLOC ptest2 = (PTESTMALLOC)GetProcAddress(hMod, "Test_malloc");
ptest2(&pNumber2);
_CrtDumpMemoryLeaks();
return 0;
}
-------------------------------------------------
この中で、外部DLL(DLLPATH)の関数「Test_malloc」のソースは以下です。
-------------------------------------------------
void Test_malloc(int **pNumber2)
{
int *pNumber = new int[3];
pNumber[0] = 4;
pNumber[1] = 5;
pNumber[2] = 6;
*pNumber2 = pNumber;
return;
}
-------------------------------------------------

DLLPATHがdebugモジュールの場合、CrtDumpMemoryLeaksでpNumber2の解放漏れが検出できました。
しかし、DLLPATHがReleaseモジュールの場合、解放漏れが検出できませんでした。

外部DLLには上記のようにDLLの中でメモリを獲得し、呼出側で解放用の関数を呼んでメモリを解放しなければいけないものがあります。
外部DLLのdebugモジュールは一般には入手できないため、このような解放関数の呼び出し漏れによるメモリリークを検出する方法はないでしょうか。
[]
[ここ壊れてます]

318 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 16:24:24.45 ID:iIpVyaKq.net]
plsqlを.SQL形式で作って
それを読み込んでwindowsでワンボタンで実行するアプリ作りたいんだけど
手軽にやるならVBですか

319 名前:デフォルトの名無しさん [2019/05/27(月) 14:10:24.34 ID:lwWgLhFv.net]
Release 用のモジュールでは、最適化されて、デバッグ用のシンボルなども削除されているのでは?
定数・変数なども計算済みで、なくなっているかも

Release 用には、デバッグ情報が無いかも

320 名前:デフォルトの名無しさん [2019/05/29(水) 07:16:15.37 ID:D5Uzvk1s.net]
netbeansでgradle supportプラグインを入れて、
build.gradleでビルドできてるんだけど、
自分が使ってるgradleのバージョンを確認するにはどうすればいいの?
分かるのはgradle supportプラグインのバージョンだけ



321 名前:デフォルトの名無しさん mailto:sage [2019/05/29(水) 16:42:43.88 ID:GzQiC9d1.net]
(1..5)
と記述すると1から5までの値を受け取れる…みたいな書き方があったような気がするんですが
rubyかpythonだったと思うんですが
どの言語の仕様だか解りますか?
この記述の後ろに何らかの標準関数をくっつけて配列に格納できるんだったかループに使えるんだったかあったような気がします
変な質問ですみません

322 名前:デフォルトの名無しさん [2019/05/29(水) 18:22:39.44 ID:D5Uzvk1s.net]
kotlinのループ処理じゃない?

323 名前:デフォルトの名無しさん [2019/05/30(木) 08:43:37.12 ID:bb+aWtrz.net]
Ruby の範囲・range。
.. は終端を含む。... は含まない

to_a で配列にできる

p (1..3).to_a #=> [1, 2, 3]
p (1...3).to_a #=> [1, 2]

文字列でも使える

r = "ay".."bb"
r.to_a #=> ["ay", "az", "ba", "bb"]

r2 = "08".."11"
r2.to_a #=> ["08", "09", "10", "11"]

324 名前:305 mailto:sage [2019/05/30(木) 13:55:13.85 ID:3LmNBitO.net]
>>307
あ〜〜〜それです!
名称が全然解らなくて調べようがありませんでした
ありがとうございました

325 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 06:19:52.46 ID:FGVbdXzr.net]
to_aにイラッとしてしまった

326 名前:デフォルトの名無しさん mailto:sage [2019/05/31(金) 22:12:23.17 ID:4mPjmqkh.net]
*より分かりやすくていいんでない

327 名前:デフォルトの名無しさん [2019/06/06(木) 21:58:18.27 ID:zbQJx2S0.net]
カーネルとかデバドラの開発でクラス設計は有用だと思う?
クラスが使える言語で開発するとして
それともやっぱりC言語が有力?

328 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 16:36:42.56 ID:RHh4qcVs.net]
ステートフルなら、クラスにまとめてクリアとかイニシャライズとか書くと扱いやすそうではある。
ステートレスならクラスにする必要はあまりないきがす。

329 名前:デフォルトの名無しさん mailto:sage [2019/06/07(金) 22:29:25.97 ID:7Zon1Gn3.net]
GitHub上に

330 名前:開されているオープンソースのコードにエラーがあって
それを修正しようとプルリクエストを送ったんですが
送ったプログラムにもエラーがあるってことで弾かれた場合
そのプルリクってどういう扱いになるんでしょうか?
一応元のコードに不具合があるという点だけは目を通してもらえる感じですか?
[]
[ここ壊れてます]



331 名前: mailto:sage [2019/06/07(金) 22:51:50.27 ID:xDq7LtU5.net]
>>311
そもそもそんな分野は mangling すら嫌われるし this を隠すことすら嫌がられるし、で、C 以外の最近の言語は全員討ち死にのような気がします

332 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 18:45:32.23 ID:hjyhFff5.net]
数学上の数式はすべて手続き型のプログラミング言語で表すことができますか。
これはどうしてもできなかったというご経験はござますか。

333 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 23:56:58.62 ID:Z0aKnh9V.net]
アンケートです
頭の中で想像してみてください
375という数は
A) 100がみっつ + 25がみっつ
B) 5の三乗がみっつ
C) そのほか
どういうイメージを最初に持ちましたか?

334 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 23:58:16.12 ID:gBPMsvnG.net]
375という数

335 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 00:13:42.12 ID:bxm7oLYt.net]
直感的に感じるものがない場合は
わざと想像を膨らませてみてください

336 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 00:18:07.72 ID:GC4fsR6T.net]
アンケートの癖に命令するな

337 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 04:27:49.87 ID:mlkAn7XZ.net]
皆殺し(375)じゃぁ、ゲルマン民族大移動

338 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 12:46:56.64 ID:5tKK6KtT.net]
DOSコマンドで、特定ドライブ配下の*.jpgファイルを削除し、そのjpgファイルが格納されていたフォルダも削除するにはどのような記述をすれば良いでしょうか?

339 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 13:17:32.58 ID:bfQ8I+0P.net]
DOSコマンド
ディレクトリ移動
ファイル削除 ワイルドカード
ディレクトリ削除
で検索

340 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 15:28:01.64 ID:5tKK6KtT.net]
>>322
ありがとうございました



341 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 17:30:10.35 ID:o59LDmQW.net]
formatで一気に削除

342 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 17:53:55.84 ID:mJKxpoGK.net]
旦那の秘蔵のお宝画像が全消去されてしまうのだろうか((((;゚Д゚))))ガクガクブルブル

343 名前:デフォルトの名無しさん mailto:sage [2019/06/12(水) 19:11:31.78 ID:bxm7oLYt.net]
>>317 >>320
ありがとうございました

344 名前:デフォルトの名無しさん [2019/06/13(木) 04:40:29.01 ID:t9tRfwUY.net]
JavaとC++はどちらがバグ発生率が高いですか?

345 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 06:43:03.36 ID:Djxqh5DA.net]
>>327
まずあなたの頭のバグを治すべき

346 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 03:36:13.26 ID:+E0qeAkk.net]
win32APIはどれくらいC言語を勉強したら習うのが望ましいですか?
C言語入門書一冊読んですぐにAPI入門読んで理解できますかね?

347 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 06:54:04.45 ID:eMSFP3VA.net]
使いたいと思った時、使う必要になった時

348 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 10:48:59.12 ID:wlgqp4S/.net]
>>329
もうCは覚えましたか?

349 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:32:24.39 ID:iDiy+1Rd.net]
ファイル結合を普通にやると
ファイル1を読み込んで、新ファイルのバイナリとして書き出して、ファイル2を読み込んで、新ファイルのバイナリに追記して…
って感じの冗長な処理がされてしまいますよね

これをさせずに、結合させるファイルのディスク上のアドレスを合成して新しいファイルを作るという処理で
ファイルを結合させることはできないでしょうか?(結合元のファイルは消滅してもいい)

350 名前:蟻人間 mailto:sage [2019/06/15(土) 11:39:41.35 ID:mBb+t2vo.net]
>>332
追記モード("a")でオープンして、別のファイルを読み込んだ内容を追記すればいい。



351 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:39:52.88 ID:PosgiMuo.net]
>>332
セクタ長できっちりサイズが割れないときはどうすんの

352 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:45:04.72 ID:eMSFP3VA.net]
デフラグしたいのか?

353 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 11:48:52.10 ID:PosgiMuo.net]
どんな環境か知らんがファイルシステムの勉強をするべきでプログラムはその後の話だな

354 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 12:14:19.04 ID:iDiy+1Rd.net]
>>334
セクタのことは考えてませんでした
このやり方はやはり無理っぽいですね
ありがとうございました

355 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 17:51:40.28 ID:OoEP0oKH.net]
>>331
理解出来てるかどうかは別として入門書に書いてある事は覚えました
何かを作った事はないです

356 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 09:56:53.52 ID:zdQGVQX8.net]
>>338
まず、何でもいいから何か作ってみるべき

次に何かGUIアプリを作る過程でWin32APIを勉強すればいい
(GUIの操作でWin32APIが必須になる)

357 名前:デフォルトの名無しさん mailto:sage [2019/06/16(日) 20:46:15.60 ID:xlnV7xsD.net]
Win/Linux/BSDで使えてMIT/BSDライクライセンスのラスタライザがあるベクタフォーマットってありそうで見つからない
フルスペックのSVGみたいにリッチな必要はなくてテキストと基本的なプリミティブを使えて任意のピクセル数のキャンバスに
ラスタライズできれば良いんだけどな。う〜むどうしたものか

358 名前:蟻人間 mailto:sage [2019/06/16(日) 21:41:08.46 ID:KLVL0nwc.net]
>>340
Cairo

359 名前:デフォルトの名無しさん mailto:sage [2019/06/18(火) 17:09:41.83 ID:ex1at4o8.net]
昔オーストラリアでハッシュ値が証拠にならんって科学的にめちゃくちゃな判決を出した
裁判事例があったそうですが、あれはその後どうなったんですか?

360 名前:デフォルトの名無しさん [2019/06/19(水) 07:52:34.88 ID:+gD2USC8.net]
visualstudio2019でscanf関数を使うと
//戻り値が無視されましたscanf
//CL.exeはコード2を伴って終了しました
とエラーが出て実行できません。scanf_s関数を使うと
https://gyazo.com/9c36fd93f3fd6e3acdf299cf5262baf6 このようなエラーが出て上手くいきません。
ためしに SDL という項目をいいえに変えてみたのですが変化なしです。
どうすれば実行できるでしょうか?



361 名前:デフォルトの名無しさん mailto:sage [2019/06/19(水) 17:56:17.01 ID:vuazDsLb.net]
VCのスレ見つけたのでそちらで聴きます

362 名前:デフォルトの名無しさん [2019/06/23(日) 15:02:47.62 ID:6LMXkq2m.net]
この記事を解説してください。プロトタイプとは何ですか?
https://sumim.hatenablog.com/entry/20080413/p1#c1208228975
>プログラムを動かしている最中にオブジェクトが出来ること、すなわちメソッド(method)を追加したり再定義したりできるかだ。
筆者はこの説明を否定しています。そしてこう説明しています。
>オブジェクトがそれが属するクラスによらず独自のメソッドやインスタンス変数を持てること*こそ*が、「プロトタイプベース」あらため「インスタンスベース」の本質です。

独自のメソッドは実行時に追加されるんですよね?
だったら最初の説明と同じでは?

あとインスタンスベースと呼べと言っているけど、
インスタンスはクラスに対して定義される言葉では?
クラスが無い場合インスタンスという概念を用いれないのでは?

363 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 15:29:52.70 ID:NwTixeBO.net]
>>345
> 独自のメソッドは実行時に追加されるんですよね?

一方は実行時でもう一方は特に言及してない
また後者は属するクラスによらずという条件があるが前者には無い

364 名前:デフォルトの名無しさん [2019/06/23(日) 15:43:09.19 ID:6LMXkq2m.net]
実行時以外いつプロトタイプベースでオブジェクトのスロットへの設定が行われるんですか?
ソースコード中に静的に定義された定数的なオブジェクトを想定してるんですか?

属するクラスによらず、ってプロトタイプの時点でクラスが無いんだから暗黙の前提では?

というよりクラスがあるとメソッドとかを勝手に変えられちゃうと
型による安全性が機能しなく

365 名前:なるから、クラスがありつつプロトタイプってできない。 []
[ここ壊れてます]

366 名前:デフォルトの名無しさん [2019/06/23(日) 15:48:05.47 ID:6LMXkq2m.net]
あとやっぱりインスタンスベースというのはおかしくて、
クラスがある場合のみインスタンスという概念があるので、
プロトタイプベースでいいですよね?

インスタンスというだけだと、スロットの動的な設定ができることを示唆しない。
インスタンスという概念はクラスで作られたものを指すので、
その時点で好き勝手にメソッドを減らしたり増やしたりできないです。
それをすると型安全が機能しなくなるので許可する言語はありません

367 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 16:49:41.08 ID:GLd8hMPk.net]
アセンブラでもできると言ってるのと同じで、
できるできないの話をすればそりゃできるだろうけど、
人間が望んでいるのは高級言語
クラスベースを人間が望んでる

368 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 16:55:58.30 ID:NwTixeBO.net]
>>347-348

独自のメソッドやインスタンス変数を持てることが本質という主張なので
とりあえずクラス固有のメソッドを減らすという拡大解釈は無しで考えるべきでは?

369 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 17:37:38.66 ID:fwFAut7X.net]
JavaScript は、prototype 型

https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain

var car = new Car( ); // コンストラクタ

// インスタンスと、prototype の両方に、メソッドを追加する。
car.f = function( ) { }
car.__proto__.f = function( ) { return 1; }

console.log( car, car.__proto__ ); // Car { f: [λ] } Car { f: [λ] }

var car2 = new Car( ); // コンストラクタ
console.log( car2, car2.__proto__ ); // Car {} Car { f: [λ] }

console.log( car2.f( ) ); // 1

car.f, car.__proto__.f は、1階層異なる。
car.f は、そのインスタンスだけに、メソッドを追加した(Ruby の特異メソッド)

一方、car.__proto__.f は、1階層親の__proto__、つまり、Car コンストラクタにメソッドを追加したので、
別のインスタンスにも追加されている!

だから、car2.f( ) を呼んだ際、car2 には、fメソッドが無いのに、
prototype chain を遡って、Carコンストラクタに追加された、fメソッドを呼べる!

ただし、__proto__ は非推奨となった!

370 名前:351 mailto:sage [2019/06/23(日) 17:58:05.28 ID:fwFAut7X.net]
>>351
修正。
先頭に、function 文が抜けていた

function Car( ) { }

var car = new Car( ); // コンストラクタ



371 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 19:06:45.33 ID:MSRPr+EY.net]
JavaScript は、prototype 型 → 不便だから改良しましょう → クラスベース型

372 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 20:24:44.44 ID:RW2rY4dT.net]
TypeScriptやってるとclassも要らない気がするわ

373 名前:デフォルトの名無しさん [2019/06/23(日) 23:39:07.95 ID:6XN9j8Lj.net]
プロトタイプ型言語ではインスタンス化することをコンストラクタって呼ぶの?

374 名前:351 mailto:sage [2019/06/24(月) 07:00:06.78 ID:a0F4XMAJ.net]
コンストラクタとして使う、メソッドを定義する

つまり、普通のメソッドではなく、
new を付けて呼んで、インスタンスを作ることを前提とするメソッド

function Car( ) { }

コンストラクタを呼んで、インスタンスを作る

var car = new Car( );

つまり、メソッドには2種類ある

new を付けて呼んで、インスタンスを作ることを前提とするメソッドと、
new を付けずに呼んで、インスタンスを作らないメソッド(普通のメソッド)

375 名前:デフォルトの名無しさん [2019/06/24(月) 07:02:00.65 ID:218UFAwP.net]
>>350
あ、わかったかも。
「(クラス毎ではなく)オブジェクト毎に所持メソッドやメンバー変数を変えられる」
これがプロトタイプの本質だって言ってるんですね。

否定してる最初の説明でもその意味だと思うけど、
「動的にクラス定義を変更してその全インスタンスの振る舞いがまとめて変わる」
のか
「特定のオブジェクト限定で振る舞いを変えられる」
のかが紛らわしい。

まあでも当然後者の意味だと思うけど。
クラスが動的に再定義されちゃったら型安全壊れるし、
コンパイル時にバグを見つけれる事が強みなので、それをやる言語は無いはず。

376 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 07:43:03.13 ID:y1bnKJFn.net]
型安全ってC/C++みたいな言語の用語だぞ

そういう言語で、正しくない型として扱うと
不正なメモリアクセスとか無効な命令実行でプロセスが不正に落ちる

JavaScript等はどんなことをしてもプロセスが落ちることはない
正しくない型

377 名前:ナあつかっても例外が発生してトラップできる
だから動的に再定義されたとしても、型安全のまま
[]
[ここ壊れてます]

378 名前:デフォルトの名無しさん [2019/06/24(月) 08:27:58.03 ID:218UFAwP.net]
ああそうか
まあでもその存在しないメソッドを呼んでしまったとかで例外が出ちゃうから、
クラスを使用している言語はオブジェクト別の所持メソッドの変更を許可しないだろうということです。
それをやっちゃうとせっかくのクラスによる安全性を放棄してしまう

379 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 09:03:19.73 ID:Fz7q9gfG.net]
型安全ではなく「強い型付け」の恩恵の話だな
プロトタイプに限らず、ダックタイピング全般の考え方は
型付けをユルくすることで恩恵を一部手放すと同時に別のメリットを得る
トレードオフだから原理主義的に決めつける必要はなく言語次第
金型を使いたいときは使えばいいし手彫りしたいときはすればいい
そういう言語があってもいいじゃない

380 名前:デフォルトの名無しさん [2019/06/24(月) 10:51:03.90 ID:218UFAwP.net]
ダックタイピング調べてみた。

これはたぶんJavaプログラマー的に言えば
interfaceを明記しなくても自動判別してくれるということだろう。
メソッド側が期待するinterfaceとクラスが実装しているinterfaceを自動判別する。

https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
class Duck
def sound
'quack'
end
end

もしこれのsoundメソッドのとこをコメントアウトしたら
test(Duck.new)がコンパイルエラーになるんだろう。

しかしプロトタイプベースだったらコンパイル時にエラーを出すのは無理だろう。
しかしクラスのメリットは確かにコンパイル時エラーの検出のためだけではない。
プロトタイプかつクラスを使用する言語があったとしたら、
その場合クラスは単に抽象的な意味を記述するため、あるいは
クローンの連鎖の大元になるためにある。
そんな言語もあってもいいのかもしれない。



381 名前:デフォルトの名無しさん [2019/06/24(月) 11:08:38.28 ID:218UFAwP.net]
ダックタイピング良く調べてみると
このwikipediaの記事は間違いだって言ってる記事があるな
「そのオブジェクトがどんなメソッドを所持しているかを事前に知らずにとにかく呼び出してしまう」
つまり動的バインディングのような概念である、と。
プロトタイプベース系の話だな、それなら。

wikipediaの記事からは、クラスがあって、
interfaceを書かなくても多態性が実現できるinterface自動判別の仕組みだ、
という印象を受ける。

382 名前:デフォルトの名無しさん [2019/06/24(月) 11:11:04.94 ID:218UFAwP.net]
https://en.wikipedia.org/wiki/Duck_typing#Criticism_of_the_term_itself
>AttributeError: 'Whale' object has no attribute 'fly'

英語版wikipediaの記事だと、「メソッドがあるかないかを事前に気にせずにとにかく呼び出してしまう」
というプロトタイプベース的な意味でダックタイピングという言葉を使用しているようだ。

383 名前:351 mailto:sage [2019/06/24(月) 12:51:20.27 ID:a0F4XMAJ.net]
そのインスタンス固有のメソッドを、Ruby では、特異メソッドと言う

instance-specific method
singular method
singleton method, eigen method

Rubyも、Duck Typing(動的型付け), Open Class を使う

obj.print( "あ" )

Duck Typing では、インスタンスobj のクラス・型・継承関係は関係なく、振る舞いで決まる。
objが同名のメソッドで、同じ数の引数を持つだけでよい

「アヒルのように歩き,アヒルのように鳴くものは、アヒルに違いない!」

改訂2版 Ruby逆引きハンドブック、2018/8/28

この本で、みっちり学ぶと、オブジェクト指向・関数型・メタプログラミングを理解できる!

384 名前:351 mailto:sage [2019/06/24(月) 12:59:35.18 ID:a0F4XMAJ.net]
Duck Typing では、インスタンスobj のクラス・型・継承関係は関係なく、振る舞いで決まる。
objが同名のメソッドで、同じ数の引数を持つだけでよい

Java で言う、同じinterface を持つけど、特に宣言はしない。
呼び出すメソッドに、反応するかどうか

「アヒルのように歩き,アヒルのように鳴くものは、アヒルに違いない!」

ただし、Duck Typingは、クラスよりも変幻自在だから、モンキーパッチになりやすいので要注意!

385 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 13:56:33.09 ID:GG24ezzu.net]
> 「アヒルのように歩き,アヒルのように鳴くものは、アヒルに違いない!」

コードで書くと

if ( 生き物.鳴く() = "ガアガアガア" ) {
 print "アヒル"
}

386 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 13:57:16.50 ID:GG24ezzu.net]
ダックタイピングとは、メソッドの呼び出し結果で
型が決まるということを意味している。

387 名前:デフォルトの名無しさん mailto:sage [2019/06/24(月) 22:04:21.83 ID:J1mrJWpK.net]
ダックタイピングで言う「型」って意味ないよね。

388 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 00:59:08.16 ID:5X/+rI3v.net]
実際の所、アヒルのように歩いて,アヒルのように鳴いたからといって、
アヒルとは限らないんだよな。アイボが犬ではないのと同じように

389 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 02:13:42.81 ID:UDO8hU+H.net]
https://ideone.com/3vJCEw
ダックタイピングってこうだっけ。C++は進む。

390 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 05:37:18.00 ID:OfIMnEVQ.net]
>>370
継承を使うものはダックタイピングとは呼ばない。
C++ でやるなら type erasure とか使うんじゃないかな。



391 名前:デフォルトの名無しさん [2019/06/25(火) 11:44:43.82 ID:Cc6pu6kp.net]
型安全はコンパイル時にエラーを見つける事を助ける、みたいな記述があるんですが
実行時にも型情報に基づいて例外を出す事はありますよね?
例外を出して処理をキャンセルしたということをもって型安全と言えますか?
もしそうならコンパイル時エラーだけでなく実行時例外に貢献するだけでも型安全である、
つまり動的型付けでも型安全な場合がある、と言えますか?
もし型の間違いを無視して処理を続けたら、言語にもよるけど、メモリ安全を壊すかもしれない。

そもそも"安全"と言っているのは、何かを破壊から守っているという事です。
メモリ安全は分かり易いですが、型安全とメモリ安全は違うようです。

「型安全とは関係が宣言されていない無関係な型へキャストされないこと」
と定義すると間違いですか?

392 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 12:20:37.40 ID:ru6rAPvz.net]
>>372
OSのエラーダイアログが表示されてプロセスが強制終了するなら型安全ではない
言語のtry-catchなどでトラップできる例外が発生するなら型安全

393 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 12:20:53.88 ID:ru6rAPvz.net]
> 「型安全とは関係が宣言されていない無関係な型へキャストされないこと」
間違い

394 名前:351 mailto:sage [2019/06/25(火) 12:25:15.12 ID:/8kFlQVi.net]
JavaScript のjQuery は、引数の型によって、処理を変える

引数が文字列なら、文字列の処理へ、
引数が配列なら、配列の処理へ、

それら以外の型なら、エラーとか

395 名前:デフォルトの名無しさん [2019/06/25(火) 14:22:34.24 ID:vGWUuZ9A.net]
dllの作り方がわかりません
exeファイルがobjファイルをリンクするというのはわかりましたが、dllも同じですか?

396 名前:デフォルトの名無しさん [2019/06/26(水) 07:38:44.89 ID:+23jdxl3.net]
「visual studio dll 作成」で検索!

Visual Studio で、コンパイルして下さい!
その際、実行ファイル(exe)ではなく、共有ライブラリ(dll)を作成して下さい

397 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 22:25:38.02 ID:FyRR2J0k.net]
俺がときどき不思議に思うのは
>>370みたいなド素人がなぜ話題に顔突っ込んで来るのか
なぜ平気で顔突っ込んで来れるのかということ

自分の力量とみんなの力量その両方が見えてないからこそ
こういう周回遅れ野郎が迷い込んで来るのかなあ

398 名前:デフォルトの名無しさん [2019/06/27(木) 00:06:31.05 ID:xCRWMcAz.net]
こんなただの質問スレで他人の力量(笑)なんてわかるほうがおかしい

399 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 16:56:06.00 ID:mr6OcBu+.net]
>>378
いやー、タイプイレーザー書かないと認めてくれないらしいのでサンプルクレ。C++で。

400 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 21:33:47.43 ID:Qltwuv2S.net]
正の整数 a および n が与えられたとき、

a = m^n

となる整数 m が存在するかしないか判定し、存在する場合には、 m を求めるアルゴリズムはありますか?

実際にプログラミングすることを考えています。
浮動小数点数を使っても構いませんが、結果は厳密に正しい必要はあります。



401 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 21:43:43.54 ID:mr6OcBu+.net]
A^(1/n)ってだめ?
上記は数学関数のpow使えばできんでもないよ。

402 名前:蟻人間 mailto:sage [2019/06/27(木) 21:50:04.25 ID:nAZ+iPIM.net]
整数の巾乗が正確に計算できるなら、逆算で概数を求めて一番近い整数で検算できるでしょうね。

403 名前:デフォルトの名無しさん [2019/06/28(金) 02:05:53.37 ID:k4pW0x/X.net]
複数のプロセスで読み取り専用のファイルが開かれていたら
実メモリ上でそれは一元化されてるんでしょうか

例えばJavaアプリを複数実行した場合
JDKのファイルは実メモリ上で一元化されていますか?

404 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 02:16:43.48 ID:wKOen38i.net]
アプリの同一性を確保するためにハッシュなりなんなりを使うのもコストかかるので
よほど起用じゃないと同一性を保証することはないと思う
マシンパワーは余ってるので力業に行きがちだけど。

405 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 02:17:37.01 ID:wKOen38i.net]
>>384
そのメモリというのは一時メモリなのかそれともストレージそのものなのかも重要だ。

406 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 03:41:16.16 ID:fwV77rc1.net]
>>384
読み取り専用かどうかは関係ない
読み取り専用を解除して再設定することもできるんだから

読込したらキャッシュに入る。書き込みしない限りキャッシュは有効
だから何度読み込んでも同じであることが保証されるので
これはメモリを一元化(共有)される
該当メモリに書き込まない限り、メモリは共有される

407 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:49:11.63 ID:D2ExxOf/.net]
読み取り専用・更新されない部分は、メモリ上に、1つしか作らない

そのメモリに参照カウントを付けて、いくつのプロセスから参照されているか、数えている。
参照カウントが0 になったら、破棄される

書き込みで開くと、メモリを共有されない

408 名前:デフォルトの名無しさん [2019/06/28(金) 11:44:26.09 ID:k4pW0x/X.net]
https://ja.wikipedia.org/wiki/%E5%A7%94%E8%AD%B2#Java
class BがさらにメンバーCを持ったとします。
private C c = new C();
それで、aとcの依存を表現するにはやはり引数にいちいち指定するしかありませんよね?
あるいはaがBに依存している場合thisを渡すとか。

というのは、継承より委譲という話があるけど、
もし多階層の継承を委譲ベースに書き換えた場合、
親子クラスが依存していたなら、冒頭のa,b,cの相互依存性のような事をやらないといけませんよね?

そう考えると委譲ってそんな常に推奨されるほど良いもんですか?

409 名前:デフォルトの名無しさん [2019/06/28(金) 12:04:28.45 ID:k4pW0x/X.net]
補足

a.method()
とかやるときに
a.method(this)
みたいにしないと、thisや他のメンバー変数との依存関係を表現できない。
メンバー変数のオブジェクトのメソッドを呼び出すのにいちいちthisを指定する
というのもなかなか見かけない変な設計な気がします。

410 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 12:27:09.28 ID:D2ExxOf/.net]
委譲は、文字列・配列などの、標準的なクラスを継承させないため!

例えば、Stack クラスを作る場合、Array を継承して、クラスを作らないようにする。
Stackクラスの中に、Array型のインスタンス変数を作って、そこへ処理を丸投げする

例えば、Ruby なら、Array型のインスタンス変数ary に、処理を丸投げする

ただし、ary は、下の3つのメソッドしか使えません!
Arrayクラスの他のメソッドは、使えません!

Forwardable#def_delegators( :@ary, :push, :pop, empty? )



411 名前:391 mailto:sage [2019/06/28(金) 12:35:50.24 ID:D2ExxOf/.net]
継承すると、親クラスの数十ある、すべてのメソッドで、
正常に動くように作らないといけないから、非常に厄介!

だから、標準的なクラスを継承してはいけない。
継承用の親クラスは、継承用に作られた、Object みたいなメソッド数が少ないものだけを使う

でも、Array の機能も少しは、使いたい場合に、
委譲を使って、使うべきメソッドを指定して、限定する事ができる

412 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 12:58:47.04 ID:SBZ ]
[ここ壊れてます]






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<316KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef