X



D言語 Part34©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net
垢版 |
2015/01/25(日) 12:07:29.52ID:gAd5OZDm
プログラミング言語 D (D Programming Language) について語るスレッドです。

■本家
http://dlang.org/ - 公式(英語)
http://www.kmonos.net/alang/d/ - 公式の和訳 (やや古いので注意)
https://issues.dlang.org/ - D言語バグ報告
https://github.com/D-Programming-Language - D言語開発リポジトリ

■Wiki
http://wiki.dlang.org/ - 公式Wiki
http://dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)

■プログラミング言語D (TDPL: The D Programming Language)
Andrei Alexandrescu 日本語版
http://www.shoeisha.co.jp/book/detail/9784798131108

ソース貼付サイト http://dpaste.dzfl.pl/
<$><$> https://www.bountysource.com/trackers/383571-d-programming-language

■前スレ
D言語 Part33
http://toro.2ch.net/test/read.cgi/tech/1396145538/

■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&;sf=2&all=on&view=table&shw=5000
0002デフォルトの名無しさん
垢版 |
2015/01/25(日) 12:09:12.95ID:gAd5OZDm
■DUB パッケージマネージャ
http://code.dlang.org/

■IDE
http://rainers.github.io/visuald/visuald/StartPage.html - Visual D(Visual Studioプラグイン)
https://code.google.com/p/ddt/ - DDT(Eclipseプラグイン)
http://wiki.dlang.org/Mono-D - Mono-D (MonoDevelop プラグイン)

■ライブラリ
https://github.com/d-widget-toolkit/dwt - DWT(GUIライブラリ)
https://github.com/gtkd-developers/GtkD - GtkD(GUIライブラリ)
https://github.com/Rayerd/dfl - DFL(GUIライブラリ・非公式最新版)
https://github.com/DerelictOrg - Derelict(SDL/OpenGLなどのポーティング)
http://www.vector.co.jp/soft/win95/prog/se491774.html - DXライブラリ バインディング(作者サイトメンテナンスのため Vector)
http://www.ku6.jp/keyword6/1.html - 傾き指向プログラミング(SDLなどのポーティング)

■OMF<->COFF変換ツール
http://www.agner.org/optimize/#objconv

■D言語で作られたゲーム
http://www.nicovideo.jp/mylist/4453698 - D言語で作られた芝ゲー niconico動画
http://www.asahi-net.or.jp/~cs8k-cyu/ - ABA Games
0003デフォルトの名無しさん
垢版 |
2015/01/25(日) 13:05:52.30ID:JhgO84F7
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0004デフォルトの名無しさん
垢版 |
2015/01/25(日) 15:09:19.73ID:N7hbj8cO
最新verにしたらgl3nってライブラリがコンパイル通らなくなった
破壊的変更入れる方も糞だが
製作者もカッコつけて変な機能使わずに、betterC程度で実装すべき
0005デフォルトの名無しさん
垢版 |
2015/01/25(日) 15:38:38.09ID:y+Auf1Wh
>>4
DMD2.064以降が必要っぽいね
エラー箇所を見てみたが、破壊的変更というよりコンパイラのバグだなコレ
0011デフォルトの名無しさん
垢版 |
2015/01/26(月) 23:02:12.05ID:pUuTj9VR
直そうかと思ったけどgl3nってGNU make使えないのかまじかよ
makeコマンドまで専用に置き換えることないだろJK・・・
0013デフォルトの名無しさん
垢版 |
2015/01/27(火) 18:05:27.96ID:66YrvWGd
>>11
普通に使えるんだが……
バージョンの問題なのかな? 少なくともGNU make 4.0ではコンパイルできる
0014デフォルトの名無しさん
垢版 |
2015/01/29(木) 18:20:55.08ID:zwkKAiAG
何かDの公式サイトがちょっとモダンになってるなw

…で、日本語版はいつまで放置状態なんですかね
0016デフォルトの名無しさん
垢版 |
2015/01/29(木) 20:41:25.06ID:4Rp6hoR2
言語の方はPRでなんとかなるけどライブラリの方はどうにも手が出せんな
翻訳元がどのバージョンかもわからん ソース一本一本バラバラで頭痛くなった
0019デフォルトの名無しさん
垢版 |
2015/02/01(日) 13:21:53.88ID:zYqn1tT/
ベータテストをサボってない?
2.067.0-b1とか、changelogにある変更点は一つも入ってない時のバージョンじゃないか
こりゃregression地獄だろうな
0020デフォルトの名無しさん
垢版 |
2015/02/01(日) 13:54:34.43ID:sjXjc1T+
まだβテスト始まってない
2.067.0-b1はアルファ版だけど担当者不在の状態でベータとして公開された
手違いか確信犯かは知らない
0021デフォルトの名無しさん
垢版 |
2015/02/01(日) 14:15:31.14ID:pkXhoNhP
異常な早さで出てたもんなb1
2.066と同じくらいの時期に出たんじゃなかった?
0023デフォルトの名無しさん
垢版 |
2015/02/10(火) 00:28:01.15ID:fSGdLYp2
D言語初心者なんですが教えて下さい

<プログラミング言語D 日本語版>の12Pに出てくる、テキストに含まれる
単語ごとに出現回数を数えるプログラムを打ち込んでみてるのですが、
ソース上どこにもテキストファイルを読み込むような箇所が無いような気が
するのですが、その部分は自分で実装しろって事なんですかね?

http://ideone.com/nqOOCq
0026デフォルトの名無しさん
垢版 |
2015/02/10(火) 01:03:06.19ID:fSGdLYp2
実行できました!!

有り難うございます。
0027デフォルトの名無しさん
垢版 |
2015/02/10(火) 05:06:36.82ID:fSGdLYp2
derelict3使ってらっしゃる方いますか・・?

ソースをダウンロードしてコンパイルまでは問題なくいったんですけど、
実行すると以下のようなエラーがでてしまいます。。

Building all packages.
Building DerelictPQ

../import/derelict/pq/functions.d
../import/derelict/pq/pq.d
../import/derelict/pq/types.d

dmd -lib -O -release -inline -property -w -wi -I"../import" -of"../lib/dmd/libDerelictPQ.a" "../import/derelict/pq/functions.d" "../import/derelict/pq/pq.d" "../import/derelict/pq/types.d"
/usr/src/phobos/std/stdio.d(975): Error: not a property fileno
/usr/src/phobos/std/bitmanip.d(1650): Error: not a property iota(this.dim()).filter!((i) => ptr[i])
/usr/src/phobos/std/bitmanip.d(1651): Error: not a property filter(iota(this.dim())).map!((i) => BitsSet!size_t(ptr[i], i * bitsPerSizeT))

対処法分かる方いらっしゃいますか??

バージョンはDMD64 D Compiler v2.066.1です。。

一応ぐぐってこういうページ(https://github.com/repeatedly/xxhash-d/issues/1
とかは見つけてみて、
posix.makとかいうテキストファイルをあさって中みてみたけど、
サイトの人が答えてる箇所と同じ部分は見つからないし、
何がなんだかサッパリ!
0028デフォルトの名無しさん
垢版 |
2015/02/10(火) 07:16:00.93ID:d72dCSc4
詳しい説明を省略するとコンパイルオプションに-propertyがついてるのが悪い

dmd -Isrc -m64 -w -d -property -O -release …

から -property を削って

dmd -Isrc -m64 -w -d -O -release …

にすればコンパイル通るはず。-propertyで検索するといい
0029デフォルトの名無しさん
垢版 |
2015/02/10(火) 07:23:34.59ID:d72dCSc4
あとposix.makはlinuxとかで使うメイクファイルだろうから
もしWindows使ってるなら直すべきはwin32.makとかかも
0030デフォルトの名無しさん
垢版 |
2015/02/10(火) 07:56:13.10ID:fSGdLYp2
>>28
先輩さすがっす!!
もう自分一人じゃ万策尽きてました!!

linux使いなんですがposix.makはいじらなくても平気でした。
Direlict3を落とした時についてたbuild.dの中の-propertyを全2箇所、
仰せの通り削除したら普通に通りました。

もっと勉強が必要ですね。
今日はこれでやっと寝れます。どうも有難う御座いました。
0031デフォルトの名無しさん
垢版 |
2015/02/10(火) 08:26:27.82ID:Hs3TdF+4
デレリクトIII世あやまれ
0033デフォルトの名無しさん
垢版 |
2015/02/10(火) 22:48:56.53ID:CuK7u/7x
凄い、と感動するけどハックっぽいのが…

言語機能として欲しいよね、名前付き引数
あと多返値
0035デフォルトの名無しさん
垢版 |
2015/02/11(水) 02:15:50.86ID:sEyNJ1vO
http://qiita.com/yasei_no_otoko/items/ae23b681a47d9a16f4c6
↑ここに書かれてる方法に従って進め、ソースコードのビルドを試みたのですが、
以下のようなエラーが出ました。

libDerelictSDL2.a(sdl.o):(.rodata+0x20): `_D8derelict4util6loader12__ModuleInfoZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.data+0x40): `_D8derelict4util9exception17DerelictException7__ClassZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.data+0xb0): `_D8derelict4util6loader15SharedLibLoader7__ClassZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4568): `_D8derelict4util6loader15SharedLibLoader4loadMFZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4570): `_D8derelict4util6loader15SharedLibLoader4loadMFAyaZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4578): `_D8derelict4util6loader15SharedLibLoader4loadMFAAyaZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4580): `_D8derelict4util6loader15SharedLibLoader6unloadMFZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4588): `_D8derelict4util6loader15SharedLibLoader8isLoadedMFNdZb' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4598): `_D8derelict4util6loader15SharedLibLoader10loadSymbolMFAyaZPv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x45a0): `_D8derelict4util6loader15SharedLibLoader3libMFNdZS8derelict4util9sharedlib9SharedLib' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x45a8): `_D8derelict4util6loader15SharedLibLoader8bindFuncMFPPvAyabZv' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
--- errorlevel 1

ライブラリの配置等は書かれてる通りにやったと思うのですが・・・
どういう原因が考えられますか?
0036デフォルトの名無しさん
垢版 |
2015/02/11(水) 09:32:23.09ID:DokQQA8v
>>34
組み込みのタプルが欲しいってことでしょ
DIPがあったけど、どうなったんだろう

>>35
本当にそのページ通りにやってる? libDerelictUtil.aをコンパイラの引数に指定してないのでは
もしGNU/Linuxの利用者なら、さらに -L-ldl も必要

ところで、Derelict3はもうメンテナンスされてないのでDerelictOrgを使った方が良いかもしれない(dub必須だけど) https://github.com/DerelictOrg
DerelictOrgをラップしたゲーム製作用ライブラリもあって、用途によってはこちらを使うのが便利かも https://github.com/d-gamedev-team/gfm
0038デフォルトの名無しさん
垢版 |
2015/02/11(水) 11:41:59.07ID:sEyNJ1vO
>>36
私には誤りが2つありました。
サイトの通りにやったつもりでしたが、私はlinuxユーザ
としての仕様を理解していなかったようです。
ご指摘の通り-L-ldlをつけていませんでした。
しかしそれだけではできませんでした。

最初はページの順番で最後にdlをリンクして
dmd test.d -LlibDerelictUtil.a -LlibDerelictSDL2.a -L-ldl
このように記述しましたが、これでは先ほどのようなエラーがまた出てしまい、
dmd test.d -LlibDerelictSDL2.a -LlibDerelictUtil.a -L-ldl
このように順番を変えたらうまくいきました。

しかしderelict3にしてもそうですが、当然とはいえD言語+SDLでは
日本語ドキュメントがかなり少ないですね。
貼って頂いたサイトのライブラリもとても興味がわきますが、
英語頑張らないとダメですかね・・。

にしてもやっと最初の一歩が踏み出せました!
有難う御座いました!
0042デフォルトの名無しさん
垢版 |
2015/02/11(水) 15:58:10.30ID:lWf1wIdf
>>40
構造体は値型でclassとかと違って常に実体があるから
_hogeの中の_hogeの中の_hogeの中の_hogeの中の_hogeの中の_hogeの中の…
みたいになる
0043デフォルトの名無しさん
垢版 |
2015/02/11(水) 16:54:42.71ID:29qyXWgk
>>32
めちゃくちゃやな
0047デフォルトの名無しさん
垢版 |
2015/02/11(水) 19:48:00.41ID:AEgPMJkt
>>46
それはもちろんできる。
実際にstd.container.SListとかDListはそんな感じになってる。
(正確には内部のNodeが、だけど)
0048デフォルトの名無しさん
垢版 |
2015/02/12(木) 13:29:24.84ID:4XYPAIWu
>>36さんが貼ってくれたgfmを使おうとしたんですが、
その中に書いてあったサンプルプロジェクトhttps://github.com/p0nce/aliasthis
をdubでビルドを試みたんですが、
Error executing command build: Root package aliasthis contains reference to invalid package gfm:math
って言われて、
あれ?dubって足りないパッケージ自動でダウンロードしてくれるんじゃなかったっけ?って
思いつつも、仕方ないからdub.jsonから"dependencies"の項目全部消してimportファイルを手動で配置して
実行したら、今度はsource/aliasthis/colors.d(11): Error: module hsv is in file 'gfm/image/hsv.d' which cannot be read
と怒られた。
gfmの最新リポジトリ内のimageにはhsv.dがないが、ソースにはインポートされている。
こうなったらもうこのプログラムの実行は無理かな。
0049デフォルトの名無しさん
垢版 |
2015/02/12(木) 17:37:55.21ID:q1EoFTcz
>>48
バージョン1.1.4が古すぎて、dubリポジトリから消えたのが原因
(最新30バージョンしかダウンロードできない)

dependenciesに書いてるバージョンのgfmを持ってくればいいよ
git clone (gfmのgitレポジトリ); git checkout v1.1.4してdub add-localするなり、手動でコンパイルするなり
0050デフォルトの名無しさん
垢版 |
2015/02/12(木) 19:48:39.30ID:bXvlMxGY
wxDでポトペタで開発できる環境はまだ無かったり?
そういう環境があればあっさり普及しそうなんだが
0053デフォルトの名無しさん
垢版 |
2015/02/12(木) 20:51:21.63ID:q1EoFTcz
QMLバインディングがあるから、QtCreatorとやらでGUIを作れるんじゃないか
試したことないから知らないけど
0055デフォルトの名無しさん
垢版 |
2015/02/12(木) 21:06:55.00ID:4P7uNPIb
そもそもwxDが今や死んでるという…

お願いですからwxDかQtDかのどっちかでいいから生き返ってください
C++からのポーティングはやっぱ難しいのかな
0056デフォルトの名無しさん
垢版 |
2015/02/12(木) 21:29:47.24ID:3kErsrEg
QtDは最初よかったけどなんか根が深そうなエラーが散発的に出てきて辛くなったな
開発者の人もくじけてしまったんだろうか
0059デフォルトの名無しさん
垢版 |
2015/02/12(木) 23:09:30.23ID:PfMIiKi9
QtD サポートのために traits 増やしたお というのを数年前に見て度肝を抜かれた
だがそれでも時既に遅しだったのかもしれない
0060デフォルトの名無しさん
垢版 |
2015/02/13(金) 01:55:34.54ID:Bhurw0eL
>>49
なるほど、確かに古いパッケージ見てみたら該当のソースがあった!
しかし今度はね。それだけじゃなくてね。std.loggerってのもないんだって・・w
Wikiでちょっと見た所、過去にあったimportファイルみたいなのだが、
今はstd.experimentalとやらに分類されてるようで、
それは標準添付ではなくて、リポジトリから持ってこないといけないみたい。
で、loggerというディレクトリに5つのソースファイルに分割されていた・・w
たった1年か2年前のソースをビルドするのがこんなにも大変とは、
D言語の破壊的成長力に、め・・目を見張るばかりだ!
0061デフォルトの名無しさん
垢版 |
2015/02/13(金) 08:41:05.07ID:OQXQ5SVC
互換性維持しない方向で成長するのは別に構わんけど
過去のリポジトリ消される(ライブラリ含めて)のはめっちゃ困る罠
0063デフォルトの名無しさん
垢版 |
2015/02/13(金) 10:04:02.80ID:Bhurw0eL
うーん・・
dub buildで急にエラーが出て何もできなくなった。
ソースとかまるで関係なく、どんなプロジェクトでも同じ文言を吐き出す
ようになったのだが、、

dub build
Error executing command build: Failed to invoke the compiler dmd to determine the build platform: {
"compiler": "dmd",
"frontendVersion": 2066,
"compilerVendor": "Digital Mars D",
"platform": [
"linux",
"posix"
],
"architecture": [
"x86_64"
],
}
Error: Error writing file '/tmp/dub_platform_probe.o'

dub_platform_probe.d見ても原因がさっぱり分からない助けてくれ。
0064デフォルトの名無しさん
垢版 |
2015/02/13(金) 10:44:48.60ID:GGd+ovbB
Dの破壊的変更はもっとマシになるべきだが対策することが出来る
だが半生ライブラリはダメだ 滅ぶべき
パッケージシステムは道を誤りし背教者どもの墓標
0065デフォルトの名無しさん
垢版 |
2015/02/13(金) 13:22:45.55ID:hveNpu6j
>>60
え、そっちもGitレポジトリでしょ? 過去の状態のを使えばいいのでは
(内容も変わってるかもしれないし)
0066デフォルトの名無しさん
垢版 |
2015/02/13(金) 13:33:09.45ID:hveNpu6j
>>61
dubレポジトリは個人がボランティアで運営してるっぽいから仕方ない
あそこはGithubからミラーしてるだけだから、どうしても古いバージョンが入手できないということはないしね

2015年前半に、D言語の宣伝・普及のための団体を作るとかいう計画を立ててるらしいけど
それ以前にこういうボランティア任せの部分をちゃんとしたサービスとして運営できる組織を作って欲しいなぁ
0070デフォルトの名無しさん
垢版 |
2015/02/19(木) 13:19:34.20ID:HRi6jpIR
必要なのは D言語の入門・解説ではなく D言語とのつきあい方のガイドである
0074デフォルトの名無しさん
垢版 |
2015/02/19(木) 23:05:32.06ID:/l77WhQC
1番目に学ぶべきはCかJavaかC#
2番目に学ぶべきはCかJavaかC#のまだやってないの
3番目に学ぶべきはJavaScriptかPythonかRuby
0075デフォルトの名無しさん
垢版 |
2015/02/19(木) 23:20:17.85ID:VH3d6pj7
実際の状況を考えると、CとJavaとC#が選択肢に並ぶ場面ってそうそう無いよな
0076デフォルトの名無しさん
垢版 |
2015/02/19(木) 23:22:06.59ID:VH3d6pj7
>>73
ありゃ相当古い記述なのであまり真に受けない方がいい
今は割と初心者向けのリソースがあるし(英語が読めない人間には無いも当然だけど)
0077デフォルトの名無しさん
垢版 |
2015/02/20(金) 00:33:37.66ID:0dV0e97W
D言語はまだ英語無しで学べる言語じゃない

まあレファレンス読むよりソース読んだ方が手っ取り早いかもしれないけど
(でもソースがレファレンスの代わりになるってunittestのおかげだよね)
0078デフォルトの名無しさん
垢版 |
2015/02/26(木) 23:20:00.62ID:3O66RLhf
お前らが「最近のD言語は安定しててつまらない」って言い始めたら本気出す
0079デフォルトの名無しさん
垢版 |
2015/02/27(金) 00:27:23.38ID:K5JNT6u2
本当に安定しててつまらないよ、細々とした調整ばかり
今年はDIP69含めて大幅な変更に期待
0080デフォルトの名無しさん
垢版 |
2015/02/27(金) 00:35:21.49ID:f/HlKW2K
RoRみたいなキラーフレームワークの登場が最優先だろ
変更ばっかじゃいつまでたっても出てこねえんだよお
0081デフォルトの名無しさん
垢版 |
2015/02/27(金) 16:16:04.75ID:K5JNT6u2
まさにRubyも仕様変更の多い言語なわけだし、あまり関係なさそう
キラーなんたらが出る以前に、それなりに人気が無いと始まらん
0082デフォルトの名無しさん
垢版 |
2015/02/27(金) 17:00:53.63ID:fb9Ltl2D
RubyやPythonと違ってネイティブ吐けるところがメリットだけど
Pythonで間に合ってます
0083デフォルトの名無しさん
垢版 |
2015/02/27(金) 17:16:40.06ID:K5JNT6u2
PythonとDの両方が、同時に選択肢に入ってくる状況なんてあまり無さそうだがな
0084デフォルトの名無しさん
垢版 |
2015/02/27(金) 17:23:58.74ID:iHoQTjKY
>>81
ライブラリが充実して実用的に使えるバージョンがない
複数組み合わせて使うとたちまち破綻する
比べる土俵が間違ってる
0086デフォルトの名無しさん
垢版 |
2015/02/27(金) 18:17:54.33ID:XIuqZzpl
他の言語に比べて、D言語でしかできない or ものすごくやりやすい ことってなによ?
0087デフォルトの名無しさん
垢版 |
2015/02/27(金) 19:17:07.04ID:mK3Wrb1I
自分がそうだけど継ぎはぎだらけのC++の汚さに絶望した人がやってるんだと思う
スマートなコーディングができるのにアセンブリコードが出力されるから
Javaやスクリプト系のように速度で妥協することもない
0088デフォルトの名無しさん
垢版 |
2015/02/27(金) 19:22:04.02ID:qLq7jEUd
C++で同じことできるって言われても意味ないんだよねえ。
単なる見せかけの機能だけに釣られてる奴はC++やってた方がいい。
0089デフォルトの名無しさん
垢版 |
2015/02/27(金) 19:23:14.99ID:mK3Wrb1I
ちょっと理解できてないのかな
C++よりスマートなコーディングができることに魅力を感じてるって話なんだけど
0092デフォルトの名無しさん
垢版 |
2015/02/27(金) 19:50:40.22ID:XIuqZzpl
>>87 >>89
たとえば?
C++ も 11, 14 で多少はマシになったと思うんだけど、
どの辺りが問題で、D言語ならどういうふうにスマートに書けるんだろう?
0094デフォルトの名無しさん
垢版 |
2015/02/27(金) 21:39:53.48ID:PrbBT478
テンプレート絡みだけでかなり差別化できてるんじゃね
あと今更イテレータとか触りたくないよね
0095デフォルトの名無しさん
垢版 |
2015/02/28(土) 00:25:57.89ID:eZcrJ6fq
C++の偉い人もタイムマシン手に入れたら何したいって聞かれて
C++のテンプレート周りの構文をD言語風にしたいって言ってたな
0096デフォルトの名無しさん
垢版 |
2015/02/28(土) 01:49:28.71ID:2/mdATAK
D言語は気持ちよくプログラミングできるんだ

俺にとってのD使う理由はそれで十分
0097デフォルトの名無しさん
垢版 |
2015/02/28(土) 02:14:47.96ID:OQbzO6Hu
C++は気持ち悪いからな
関数ポインタとデリゲードが別物であった時点で俺の中では終わった。
0098デフォルトの名無しさん
垢版 |
2015/02/28(土) 07:17:05.89ID:dohjXiRJ
>>97
C++で統一できるなら、std::function<...> で統一すれば済む問題だろ?
DのデリゲードはCの関数ポインタに変換できるのか? 既存のC製ライブラリを使うときはどうするんだ?
0100デフォルトの名無しさん
垢版 |
2015/02/28(土) 10:26:19.86ID:X4brU/QV
>DのデリゲートはCの関数ポインタに変換できるのか?
Dにも普通の関数ポインタがあるので、そちらを使う
まあデリゲートでも(cast(void function())dg.funcptr)とか出来る、もちろんキャプチャした変数は使えなくなるけど
0101デフォルトの名無しさん
垢版 |
2015/02/28(土) 10:31:56.76ID:X4brU/QV
訂正:dg.funcptrは既に関数ポインタなのでキャストは不要
当たり前だな、何を勘違いしてたんだろう
0103デフォルトの名無しさん
垢版 |
2015/02/28(土) 10:41:51.15ID:dohjXiRJ
>>100
C++もキャプチャ変数が無ければC関数ポインタとして渡せるから、似たようなものだね。
つまり >>97 は単に無知だったということだな。
>>102 も言葉通りだとナンセンスだが、「キャプチャ変数を明示する必要がある」という意味なら一理ある。
0104デフォルトの名無しさん
垢版 |
2015/02/28(土) 12:34:31.63ID:C0E19LHH
キャプチャ自体はなるほど、と思ったけど
キャプチャ周りの書式はもうちょっとどうにかならんかったかなと思う
初見のときはあまりの違和感に頭がしばらくぐよんぐよんした
0117デフォルトの名無しさん
垢版 |
2015/03/15(日) 12:30:14.94ID:gUpehvCT
フォーラム見てるとWalterとAndreiに対してヘイトが溜まるなぁ
なんだこいつら
0119デフォルトの名無しさん
垢版 |
2015/03/16(月) 08:22:23.11ID:rfonf8fQ
別に横暴って訳じゃないけど、なんか他人を見下してる風なんだよな
自分たちと違う意見を持つ人間ってだけで馬鹿にするような返答や皮肉を繰り返してた時はちょっと引いた
特にWalterは何かにつけて「30年間プログラマをやってきた経験」とやらで他人の意見を蹴ったり、一方で都合が悪くなると返事しないので腹立つ
0120デフォルトの名無しさん
垢版 |
2015/03/16(月) 10:32:44.07ID:r187UUhH
>自分たちと違う意見を持つ人間ってだけで馬鹿にするような返答や皮肉を繰り返してた時はちょっと引いた

あるある
こういう態度からは何も生まれない
0123デフォルトの名無しさん
垢版 |
2015/03/23(月) 09:50:52.33ID:YJLz3rN2
FacebookがD言語を開発してるみたいな誤解を与えられたの、AAの目論見通りなのかな
実際はちょいと金貰っただけだし、業務ではほぼ使われてないとAAも言ってたし
0125デフォルトの名無しさん
垢版 |
2015/03/27(金) 10:32:23.05ID:i1/0Dr4k
以前ここで見た気がするけど

dmd2.067(win32)でも、windows8.1 64bitで
以下が落ちる
---
size_t count;
scope(failure) count.writeln;
foreach (_; 0 .. 100) {
count++;
new byte[100_000_000];
}
---
13
core.exception.OutOfMemoryError@(0)
0126デフォルトの名無しさん
垢版 |
2015/03/27(金) 22:14:20.45ID:CTT/twdI
GC「それはな…ちゃうねん」


なんかGC作動オプションつけられるようになったっぽいから色々試してみたけど
どうやっても落ちるのな
0127デフォルトの名無しさん
垢版 |
2015/03/28(土) 14:05:37.34ID:1FIUchx6
PreciseGC にならないとダメ

非アドレスをはじけないから
デカいブロックを使用中と誤認したり無駄なスキャンも防げない

自前で malloc/free するか Win64使うか
0128デフォルトの名無しさん
垢版 |
2015/03/28(土) 14:54:58.16ID:1U0GdOh9
でかいJPEGファイルをロードしたくらいで引っかかる上に
外部ライブラリを使ってるから回避できなくてとても困る
やはり時代は@nogcか…
0129125
垢版 |
2015/03/28(土) 14:55:17.12ID:3c7jmW0j
いい加減、64bit環境を構築するかー
さんくす!
一応 delete で、不要と教えてあげれば落ちないけど
GCの意味ないなあとか思っていじってました

GC「要らないならいうてやー」
0130デフォルトの名無しさん
垢版 |
2015/03/28(土) 15:40:21.32ID:1FIUchx6
10-20MB以上のデカいブロックだけmalloc/freeするのがいい
GCに預けたやつを中途半端に手出しするのもあんまり
0131デフォルトの名無しさん
垢版 |
2015/03/28(土) 15:42:10.46ID:F7N+uTWP
GCの方がトータルで速いと主張してたのはなんだったんや・・・
つか、GC無しが有り環境に移行するのはまだしも、有りだったのが無しに移行するのって辛いよな
0132デフォルトの名無しさん
垢版 |
2015/03/30(月) 13:07:23.56ID:i+YJuxFC
D言語からC言語のヘッダファイルを読み込むにはどうしたらよいですか?
具体的にはwindows.hとかを読み込みたいです。
DirectXとかも使いたいのでC++用のCOMのヘッダも読み込みたいです。
D言語はライブラリが少ないし、
マイナー言語なので、ライブラリ提供者から公式なサポートが無いです。
そのため、C/C++用のライブラリをそのまま流用して使いたいです。
ヘッダファイルには、C/C++用のマクロなども定義してあるので、
D言語はC/C++の全機能をサポートする必要があります。
このために、DとC/C++を切り替えるスイッチが必要で、( 例えば extern C++{ } )
私が知りたいのはこの機能です。
0133デフォルトの名無しさん
垢版 |
2015/03/30(月) 13:45:54.48ID:yiQdteM4
原則:
・C/C++のヘッダを直接読むことはできず変換が必要
・DMDでWin32アプリを作る場合に限り、C/C++ののライブラリの変換も必要

大抵のライブラリはすでに変換済みのが用意されてるのでそれを使うだけ
Win32API -> http://www.dsource.org/projects/bindings/wiki/WindowsApi/
ゲーム用とかなら github/DerelictOrg が充実してる
0135デフォルトの名無しさん
垢版 |
2015/03/30(月) 23:00:53.68ID:QPp3Flh2
wxDを使えている人に質問です。windows上でmingwからwxDをコンパイルしようとすると、wxWidgetsのコンパイルまでは成功したのですが
、wxDのコンパイルで以下のようなエラーがでます。
export PATH=/e/D/dmd2/windows/bin:/e/D/dm/bin:$PATH
export WXDIR=/e/D/wxWidgets-2.8.12
make
dmc -D__DMD__ -mn -g -o+none -D____ -D__WXDEBUG__ -Ie:/D/wxWidgets-2.8.12\inclu de -Ie:/D/wxWidgets-2.8.12\lib\dmc_lib\mswd -w- -I. -WA -DNOPCH -HP90 -Ar -Ae -HP99 -c -oaccel.obj accel.cpp
virtual ~name() \
^
local_events.h(49) : Error: storage class is illegal in this context
{ \
^
local_events.h(50) : Error: illegal constructor or destructor or invariant decla ration
ProcessEvent(e); \
^
local_events.h(52) : Error: undefined identifier 'ProcessEvent'
}
^
local_events.h(53) : Warning 18: implied return of name at closing '}' does not return value
void RegisterDispose(Virtual_Dispose onDispose) { m_onDispose = onDispose; } \
^
local_events.h(67) : Error: undefined identifier 'm_onDispose', did you mean 'on Dispose'?
virtual ~name() { m_onDispose(this); } \
^
local_events.h(68) : Error: storage class is illegal in this context
Fatal error: too many errors
--- errorlevel 1

--- errorlevel 1

--- errorlevel 1
0136デフォルトの名無しさん
垢版 |
2015/03/30(月) 23:02:22.58ID:QPp3Flh2
dmd 2.067.0, dmd 2.054
wxWidgets-2.8.12
wxd 0.16
dmd 2.067.0, 2.054どちらでもエラー内容は同じでした。何が問題なのでしょうか?
0138デフォルトの名無しさん
垢版 |
2015/04/05(日) 02:08:57.94ID:i8c3cK/q
久しぶりにさわったらUFCSとかrangeとかイケてるやん、書いてて気持ちえ〜わ〜
0140デフォルトの名無しさん
垢版 |
2015/04/08(水) 22:47:53.09ID:bms3DTdi
http://www.kmonos.net/alang/d/overview.html
>非仮想メンバ関数。C++では、関数がvirtualになるかどうかは クラスの設計者が前もって決定します。
>メンバ関数をオーバーライドすることにしたのに、基底クラスの方で改造を忘れる… というのは、
>よくある(けれども非常に見つけにくい)コーディングミスです。
>全てのメンバはvirtualにしておき、 オーバーライドが存在しないことをコンパイラが検知して非 virtual に変える、
>というアプローチの方が信頼性があります。

と書いてありますが、実際にどこまでそんな最適化が機能しますかね。
ローカルスコープでnewされたオブジェクトなら簡単に検地できますが、
メソッドの引数で渡されたオブジェクトや、
メンバ変数で保持しているオブジェクトに対して、
オーバーライドが存在しないことを、どこまで検地できるものなのでしょうか。
D言語はモジュール単位でコンパイルするので、
自分のモジュール以外で何が行われるかわからないのでは?
0141デフォルトの名無しさん
垢版 |
2015/04/09(木) 05:18:11.14ID:uR76CfxE
詳しくないのでさっぱりなのだがこっちにも
http://www.kmonos.net/alang/d/function.html#virtual-functions
>コード生成時にDはクラス階層を全て把握していますので、
>オーバーライドされていない関数への呼び出しは全て最適化されて non-virtual になります。
って自信満々に書いてあるね。

で、なんかそんな話題どっかでみたなあと思って探してみたが
http://hibari.2ch.net/test/read.cgi/tech/1293500945/300-303
別に結論出てなかった。
まあ「finalつけると速くなる」なら(今でも同じかは確認してないが)
可能であろうと、少なくとも真面目に実装はしてないんだろうね。
0142デフォルトの名無しさん
垢版 |
2015/04/09(木) 09:23:07.96ID:BNp5TkNs
virtual がキーワードとして追加された後しばらくして撤回されたのが最近の出来事
0145デフォルトの名無しさん
垢版 |
2015/04/09(木) 21:10:41.59ID:BNp5TkNs
コンパイルが最速でプロファイルもカバレッジもちゃんと動くdmdが最善でないとな?

win32/simd とか win64/seh とか足りないのはあるけど
0149デフォルトの名無しさん
垢版 |
2015/04/11(土) 17:42:57.03ID:u+ugD/Y+
俺が思うに、Cとソースレベルの互換を切ったのが不味かったな。
Cのヘッダが読み込めないんじゃ、生産性悪すぎ。
Cのライブラリを使おうと思っても、誰かがこっそりDに移植したのを使うしかない。
そんな怪しげなものは企業じゃ使いにくいわな。
0152デフォルトの名無しさん
垢版 |
2015/04/12(日) 09:38:06.20ID:y8PA+brm
C言語にはマクロがあるから難しいだろうね。
マクロとインライン関数とじゃ微妙に動作が違うし。
それを再現するのは難しいし、再現したらしたでDの人たちが怒る
0153デフォルトの名無しさん
垢版 |
2015/04/12(日) 11:32:27.28ID:E16OManC
他の言語に比べりゃマシ。
普通はC側からもグルーコードを書かないといけない。
0156デフォルトの名無しさん
垢版 |
2015/04/12(日) 14:18:52.37ID:y8PA+brm
でも、CのライブラリはC++からだと何の改造もなく普通に読み込めるし、
殆どのライブラリはC++から使われること「も」想定して書いてあるし。
ライブラリの公式なサポートがあるってのも大きいかと。
Dの宿敵は完全にC++なわけで、ここからシェア奪うの厳しくね?
しかも最近のC++はやたら高性能になってて、Dが圧倒的に優位といえるのは、
GCが有ることぐらいか。しかしDのGCは完全じゃないので、実際には開放できる領域を
見逃すことがあるらしい。>>125-127
しかもメモリを使えば使うほど、切迫していればいるほど、誤認の確率が高くなる。
本当にGCが必要な時ほど、GCが上手く動かなくなるという・・・。これはなんかおかしい。

まー一生C++使ってろって言われそうだが。
0157デフォルトの名無しさん
垢版 |
2015/04/12(日) 17:59:43.09ID:E16OManC
京大院卒の元日立社員ですらrust,go,nimとやってきたがDは目次で投げ出すほど難しいらしい
0163デフォルトの名無しさん
垢版 |
2015/04/14(火) 22:05:11.14ID:NpitylM9
Visual D使ってる人に質問です。
Visual Dって標準ライブラリの予測変換でないんですか?
0165デフォルトの名無しさん
垢版 |
2015/04/14(火) 23:57:41.21ID:VlJAU5Jf
どうせ出てほしい時に出なくて
必要ないときに邪魔なポップアップが出るみたいな
お粗末なものにしかならないべ

言語設計レベルからそこまで考慮してないと
0168デフォルトの名無しさん
垢版 |
2015/04/15(水) 22:20:50.17ID:kuK1eeQu
https://gist.github.com/repeatedly/2470712
ここ読んで文法身につけて、
標準ライブラリは公式がそこそこわかりやすいからそれで。
(日本語訳はちょっと古いが、参考には十分なる)
んで、わからないことはここか、
最近はtwitterで#dlangのハッシュタグつけて質問するのも流行り。
自分も去年一度質問投げたら、一時間で三人から同じ解答来て震えた。
0170デフォルトの名無しさん
垢版 |
2015/04/16(木) 06:03:51.02ID:3n63vngU
以前にC++とねんごろになれるうpあったとか見た気がしたけど、あれは幻覚だったのかこの流れ見ると
0172デフォルトの名無しさん
垢版 |
2015/04/17(金) 13:06:38.13ID:n6u60MAl
>C++ヘッダを直接import出来るようにするDコンパイラも開発されてるけど結構実用的ぽい

あ、それいいね。てかそれしないと普及しないでしょ。互換性は大事。
COMとかもそもまま使えるようになるんかね。
0173デフォルトの名無しさん
垢版 |
2015/04/21(火) 22:23:29.12ID:k+lIUh1M
☆ 日本の核武装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆
0174デフォルトの名無しさん
垢版 |
2015/04/22(水) 16:58:34.80ID:w0Yyg9N7
dsource.org もいよいよ廃止に向かう模様
使ってる人ほとんどいないだろうけど
0179デフォルトの名無しさん
垢版 |
2015/04/23(木) 19:58:37.29ID:lZQ1F1hI
継承先のクラスが同一ファイル内にないか?
同一ファイル内のメンバは常にpublicだぜ
0181デフォルトの名無しさん
垢版 |
2015/04/24(金) 06:25:45.44ID:6TulMhAx
同一ファイル内にあるものは自動的にfriendだと思えばC++より便利だな
0182デフォルトの名無しさん
垢版 |
2015/04/26(日) 21:31:40.36ID:M02Af7kd
D2はまだ使用が固まってないからとうぶんの間は開発にはD1を使うことになるな
0183デフォルトの名無しさん
垢版 |
2015/04/26(日) 23:49:43.65ID:NpZzAF6y
1のことは忘れるんだ……。
2も最近は破壊的変更が少ないし、
どうしても仕様が固まってるものを求めてるなら別の言語のほうがいいよ。
少なくともD1を使っていいことは一つもないと思う。
0185デフォルトの名無しさん
垢版 |
2015/04/27(月) 03:54:29.19ID:3o/5kFDH
D1かC++かならまじでC++使えばいいと思うよ
雰囲気っていうか、まあ確かにC++使うならここで宣言する必要はないと思うけど
0189デフォルトの名無しさん
垢版 |
2015/04/27(月) 19:41:43.14ID:JZyYoAVB
>>186
それここ1ヶ月くらいのことじゃね?
まあでもそういう姿勢を公式に明確にするのはいいことだ
0190デフォルトの名無しさん
垢版 |
2015/04/30(木) 23:13:29.89ID:DC2IuzKP
PCがオワコンになって一般人はスマホやアップルウォッチしかコンピューターを持たない時代が来るのに
Dを始めとするPCアプリ専用言語に未来はあるのか
0192デフォルトの名無しさん
垢版 |
2015/05/01(金) 15:43:57.35ID:VV0Lze55
サーバーサイドでも使われないとか終わってる
0193デフォルトの名無しさん
垢版 |
2015/05/03(日) 12:05:34.37ID:frUd71C/
>>192
Goで泥アプリ開発できるようになったし、PCから移行するにつれいろんな言語が泥とかアフォン
とかでも使えるようになる。

という妄想
0194デフォルトの名無しさん
垢版 |
2015/05/11(月) 22:49:25.75ID:umG0fBs5
Tcpを用いたサーバーアプリケーションを作成しています。
一つのSocketを処理するスレッドをspawnで起動しようとしたのですが、
"Aliases to mutable thread-local data not allowed." というエラーが出てしまいます。

Socketをスレッドのコンテキストとして渡す方法はありますか?
0196デフォルトの名無しさん
垢版 |
2015/05/20(水) 14:35:43.34ID:RjQMrwaX
enumのメンバの中からランダムに1つ取り出すにはどう書いたらいいですか?
0197デフォルトの名無しさん
垢版 |
2015/05/20(水) 17:11:00.71ID:VhPE5aVV
import std.stdio, std.traits, std.random;

enum E { Hard, Normal, Easy, }
auto lv = [ EnumMembers!E ];
lv[ uniform(0, 3) ].writeln();
0199デフォルトの名無しさん
垢版 |
2015/05/20(水) 19:21:10.83ID:VhPE5aVV
あ、配列なんだからuniform(0, $)でよかった…。

タプルの配列化?みたいな

他にも関数の引数リストとか、構造体のメンバ変数を
タプルでとれたり、std.traitsは結構楽しい
0200デフォルトの名無しさん
垢版 |
2015/05/23(土) 09:46:23.34ID:LbQhEyX4
メンバにUDAを付加するだけで
文字列化やシリアライズのメソッドが自動or暗黙生成されるような
いい感じの小技はないかしら
0201デフォルトの名無しさん
垢版 |
2015/05/23(土) 20:05:33.06ID:T/VMnfch
static ifと文字列mixinを駆使すればなんでもできそう
コードはくっそ汚くなるけど…というかいくらなんでも汚すぎるので俺がなにか勘違いしてる

class Cls {
@getset(true, true) private string prop;
mixin Prop!(__traits(allMembers, typeof(this)));
}
struct getset {
bool get, set;
this (bool get, bool set) { this.get = get; this.set = set; }
}
mixin template Prop(Members...) {
static if (Members.length) {
mixin("alias Alias = " ~ Members[0] ~ ";");
static if (is(typeof(__traits(getAttributes, Alias)[0])==getset)) {
static if (__traits(getAttributes, Alias)[0].get) {
mixin("auto get_" ~ Members[0] ~ "() { return " ~ Members[0] ~ "; }");
}
static if (__traits(getAttributes, Alias)[0].set) {
mixin("void set_" ~ Members[0] ~ "(" ~ typeof(Alias).stringof ~ " value) { " ~ Members[0] ~ " = value; }");
}
}
mixin Prop!(Members[1..$]);
}
}
void main() {
import std.stdio;
auto cls = new Cls;
cls.set_prop("getset");
writeln(cls.get_prop()); // write "getset"
}
0204片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/06/17(水) 19:52:38.87ID:/OO8ry8l
Dの簡単インストーラー作るぜ。アイデア募集。
0208デフォルトの名無しさん
垢版 |
2015/08/07(金) 01:19:25.71ID:AOl5d/Q7
vote
0213212
垢版 |
2015/09/13(日) 01:16:43.63ID:6EXYsBmd
>>212 がgithub版でもおきるかなー?と思ったんだけど、github版dmdをコンパイル中にエラーが出た。
内容は、「ソースに\r\nが含まれますよ」というもの。
出してるのは、dmd -run src/checkwhitespace.d の部分。
このツールは
1. \r\n がソースに含まれている場合。
2. インデントに\tを使っている場合。
3. 行末に不要な空白文字がある場合。
にエラーを出すようなんだけど、3はともかく、これで行くことに決まったのかな。
smart-tab派なんだけどなー。
あ、github版でも212は再現しました。
0215デフォルトの名無しさん
垢版 |
2015/09/23(水) 01:15:09.12ID:c39jTuOR
おまいらこれはなんでなんだぜ
http://dpaste.dzfl.pl/7fa1a12a8c4a

1. enum をクラスインスタンスで初期化できない→わかる。構造体でラップすると通る→?
2. 1. において、ラップされたクラスが mutable。
0218デフォルトの名無しさん
垢版 |
2015/09/29(火) 09:14:53.57ID:2BMWd/g5
2.068.2 出てた

ちなみに Win32-COFF が隠しオプション(-m32mscoff)で出来るようになってるので
OMF/optlink がイケてないと思っていた諸兄は試してみるがよいよいよい
0219デフォルトの名無しさん
垢版 |
2015/10/04(日) 20:25:42.92ID:fx9NWY8o
int arr[x][y][z];
これと同じメモリレイアウトでヒープに確保するにはどうすればいいですか?
0220219
垢版 |
2015/10/04(日) 20:56:03.94ID:fx9NWY8o
new int[x*y*z]でよかった。
問題なのはint[]のメモリへのアクセスをint[x][y][z]と同じようにする方法だった。
0221219
垢版 |
2015/10/04(日) 20:59:30.10ID:fx9NWY8o
自己解決。
[0][0][0],[0][0][1]...[0][1][0],[0][1][1]...の順番で並んでるだけだった。
0223デフォルトの名無しさん
垢版 |
2015/10/09(金) 21:58:55.85ID:So4fPMkx
const class A { int a; this(int v) { a = v; } }
このクラスAを値に持つ連想配列を作りたいんだけど、

const(A)[int] hoge = [1: new const A(1)];
hoge[3] = new const A(3); // cannot modify const expression hoge[3]
みたいに、初期化はできても代入ができない。

A[int] hoge = cast(A[int])[1: new const A(1), 2: new const A(2)];
hoge[3] = cast(A)new const A(3);
てなふうにcastしたら回避できたけど、なんか美しくない。
typeof(new const A(1)).stringof == "const(A)" なのがおかしい気がするんだが。
0224223
垢版 |
2015/10/09(金) 23:28:50.19ID:So4fPMkx
書き込んでから思い出したけど、Rebindableとかできて結構経つしあきらめるしかない気がしてきた。

>>218 optlink死んでまうん?
0225デフォルトの名無しさん
垢版 |
2015/10/10(土) 00:27:09.81ID:MYHuAGIQ
const classとかscope classとかは今もまともに使おうと思えないね
普通のclass内でメンバをconstにするとかじゃないとまともに動く気しない
0226デフォルトの名無しさん
垢版 |
2015/10/15(木) 18:54:50.42ID:pJRyZOgY
nullではなく、空の連想配列で初期化するにはどうすればよいですか?
0227デフォルトの名無しさん
垢版 |
2015/10/16(金) 08:36:04.34ID:CAVKRc42
空の配列 == null なので無理

ただし空文字列 "" は例外 落とし穴になりがちなので注意
0228デフォルトの名無しさん
垢版 |
2015/10/16(金) 13:11:04.24ID:TDfNRPC3
ちょっと良くわかりませんが、D言語は空の配列すら作れないんですか?
不便ですね
0230デフォルトの名無しさん
垢版 |
2015/10/16(金) 17:54:55.90ID:MCgyDKhx
a = {};

こんなのを期待してるのかな
0231226
垢版 |
2015/10/16(金) 18:32:37.08ID:+5uWvhRc
>>227-230 レスありがとう。やりたかったのはこういうことです。

string[string] buf;
auto buf2 = buf;
buf2["hello"] = "world";
buf.writeln; // > []

これと↓

string[string] buf = ["": ""];
buf.remove("");
auto buf2 = buf;
buf2["hello"] = "world";
buf.writeln; // > ["hello":"world"]

では結果が違うわけだけど、後半の上2行を初期化1行で書きたいな。
という話でした。
0232デフォルトの名無しさん
垢版 |
2015/10/16(金) 19:36:08.03ID:TDfNRPC3
結局どういうことなんですか?
Dでは空の配列を作れないんですか?
必ず何か入っていなければダメなんですか?
int[] a; って書けば空の配列になるんじゃないんですか?
0233226
垢版 |
2015/10/16(金) 21:04:57.54ID:+5uWvhRc
>>232
int[] a; で空の配列になりますよ。
226のは「連想配列」が俺にはややこしいっていう話です。
0234デフォルトの名無しさん
垢版 |
2015/10/16(金) 21:47:10.30ID:BcAfRt/g
>>231
string[string] buf = (a => (a.remove(""), a))(["" : ""]);

ところで、コンマ演算子を廃止しようとか言ってたのは自然消滅したのか?
0235226
垢版 |
2015/10/16(金) 22:51:07.22ID:GwISFyO6
>>234 ありがとうございます。ところでもっと基本的な疑問がわいたのですが、
>>231 の後半での、bufとbuf2の中身がずっと同じであるっていうのは、仕様で保証されてるんでしょうか?
Windows版dmd2.068.2では、1000個値を追加しても同じでした。
0237デフォルトの名無しさん
垢版 |
2015/10/17(土) 09:08:29.29ID:M7lcZRBS
それに連想配列の内部実装は最近まで大きく書き換えられてて
動作の微妙な違いとかあるのでトリッキーなことは避けるべき
0238226
垢版 |
2015/10/17(土) 22:20:49.79ID:KpZ8gQf0
>>236-237 そうなんですね。書き換えます。ありがとうございます。
0241デフォルトの名無しさん
垢版 |
2015/10/28(水) 16:43:28.27ID:w9dndjrH
D言語って、Javaみたいにソースファイル名とクラス名を同じにしてしまうと、
他のソースでクラス名のつもりで記述したものがパッケージ名扱いになってしまうため
Hoge.Hoge のように同じ名前を2回書かないとクラス名と解釈してくれないと思うのですが、
これを1回だけの記述で済ましたい場合、皆さんはどのように解決されているんでしょうか?
ソースファイル名を変えるのもmodule文で別名にするのも、何か違うように感じてしまいます。
0242デフォルトの名無しさん
垢版 |
2015/10/28(水) 19:24:28.95ID:9zUX3+we
モジュール名とファイル名は小文字
クラス名は大文字始まり
それでもカブるようなケースはパッケージを作るからまず困らない
0244デフォルトの名無しさん
垢版 |
2015/10/29(木) 10:25:47.23ID:xCMI4xlR
>>242
なるほと確かにD言語の命名規則からするとモジュール名は小文字でしたね。
でも、どうしても大きなクラスは同名の一ソースにしたいのです‥すみません。

ところでパッケージで気付かせてもらったのですが、この問題って、
クラスのソースらをルート階層に置いているからこそ起きる問題なのですね。
というわけでディレクトリを一つ掘ってパッケージ下に配置することで一応解決しました!

ただ、パッケージ下にあるソースって module パッケージ名.モジュール名 の記述は必ず必要なのでしょうか?
module文の記述が無いとルートパッケージ下として格納されてしまうようで、
module文を普段省略していた身からするとちょっと面倒に感じています。
この辺りの挙動はjavaのpackage文の踏襲かなと思うのですが、
D言語ではパッケージはディレクトリに対応すると書かれているようなので、
module文を省略しても適切なパッケージに配置してくれて良いような?

>>243
おぉ‥改名選択importというやつでしょうか。確かにこれで通りました。
import _Hoge = Hoge : Hoge; という風に変換されるんですね。
import文までコンパイル時生成できるとは、D言語きm‥素晴らしいです。
ただこの書き方ではモジュール名変更リファクタリングの際にIDEが解析しにくい気がするので
(そもそもそこまでお世話してくれるIDEは現存しないようですけれど‥)、
取り敢えずは先のパッケージへの配置法でがんばってみます。
凄いものをありがとうございました。今後の困難の際に参考にします。
0246デフォルトの名無しさん
垢版 |
2015/11/06(金) 23:00:00.73ID:XSTiM1/K
Error: template std.algorithm.searching.countUntil cannot deduce function from argument types !()(int[11], int), candidates are:
こういうエラーが出たんですけど、countUntilに静的配列は使えないということでしょうか?

Error: template instance sort!((uint a, uint b)
あと、sortに無名関数を渡したらエラーが出ました。無名関数も使えないのでしょうか?
0247デフォルトの名無しさん
垢版 |
2015/11/07(土) 11:16:15.31ID:oYYknJv4
静的配列に対して popFront() が呼べない(初めて知った!)
だからレンジ系操作に対しては全滅に近い

ソートの方はそれだけじゃ分からんね
無名関数は使い方間違えた時にわかりづらい
0248デフォルトの名無しさん
垢版 |
2015/11/07(土) 15:26:06.21ID:k3hAw3NX
静的配列は要素数が変更できないからですか。
Rangeの要件を満たしてないとなると結構不便ですね。

sortはエラーメッセージがこの1行しか出ないんですよね。
シンプルな例でテストしたらコンパイルは通ったんですけど、他のコードが影響してるのかなぁ。
0249デフォルトの名無しさん
垢版 |
2015/11/07(土) 22:04:33.49ID:X4t7LIyp
固定長配列の全体のスライスを取って動的配列に見せかければ
ある程度のRange操作だったら固定長配列にもかけられるのでちょっと便利です
0252デフォルトの名無しさん
垢版 |
2015/11/14(土) 10:33:38.52ID:TuAUCuHQ
SortedRange!(R, ((a, b) => binaryFun!less(unaryFun!transform(a),
unaryFun!transform(b))))
schwartzSort(alias transform, alias less = "a < b",
SwapStrategy ss = SwapStrategy.unstable, R)(R r)
if (isRandomAccessRange!R && hasLength!R)
{ ... }

こんなの見ても揺らがないのが真のD言語er
0253デフォルトの名無しさん
垢版 |
2015/11/14(土) 12:16:16.84ID:AP01jWaC
真のD言語erはそんなに書いて(書かせて)もらえることに感謝する
0254デフォルトの名無しさん
垢版 |
2015/11/14(土) 20:42:57.89ID:uWuWWunU
デバッグ用に関数名を出力したいんですけど、関数名を取得する方法はあるでしょうか?
__FILE__や__LINE__みたいな感じのが欲しいです。
0256デフォルトの名無しさん
垢版 |
2015/11/15(日) 00:49:19.11ID:DVr3HCs9
基本的には、DではCの標準ライブラリと同等の関数をほぼそのまま薄いラッパで提供しています
0261デフォルトの名無しさん
垢版 |
2015/11/15(日) 15:01:11.74ID:4YAQhy/L
自作のプログラムを実行すると毎回同じ場所でobject.Error: Access Violationが発生します。
エラーとは関係なさそうな修正(stderr.writeln()を増やしたり減らしたり)をするとエラー発生の場所が変わったり、
InvalidMemoryOperationErrorに変わったりします。
エラーの原因がさっぱり分からないんですけど、どういうことが考えられるでしょうか?
0263デフォルトの名無しさん
垢版 |
2015/11/15(日) 16:21:30.07ID:4YAQhy/L
GCのある言語でメモリリークとなると、どういうケースがあるのか想像がつかないです。
エラー発生の場所も変わるので謎です。
0265デフォルトの名無しさん
垢版 |
2015/11/15(日) 17:07:38.68ID:lu/bgS1P
こマ?初めて聞いたその結び付け
リーク=解放処理漏れ 以外の認識ないわ
0266デフォルトの名無しさん
垢版 |
2015/11/15(日) 17:19:50.76ID:4YAQhy/L
newする前のクラスのインスタンスの関数を使ってAccess Violationが出たことは過去にありますね。
しかし、今回はちゃんとnewされているし、1回目の呼び出しでエラーが発生してるわけでもないんですよね。
そして>>261で書いたようにstderr.writeln()を追加するだけでエラー発生のタイミングが変わるので難解です。
0267デフォルトの名無しさん
垢版 |
2015/11/15(日) 18:08:15.11ID:PV6fOtMt
初期化してない変数でアクセス
0268デフォルトの名無しさん
垢版 |
2015/11/15(日) 18:39:09.01ID:ndJn5r2D
AVならばぬるぽか RangeErrorか deleteの間違い
-g -debug してないんかいな

InvalidMemoryOperationError 
ならばデストラクタの中で何か変なことしてる疑い

デストラクタの中でdeleteとかしちゃダメダメよ〜
0269デフォルトの名無しさん
垢版 |
2015/11/15(日) 18:44:09.41ID:zgz009B6
似たことなったことあるなあ。なんやったか。
templateとかmixinがらみで依存関係見落としててobjの更新忘れとか。
0270デフォルトの名無しさん
垢版 |
2015/11/15(日) 19:02:33.53ID:4YAQhy/L
すみませんReleaseビルドになってました。
DebugビルドにしたらRangeErrorになりました。
0271デフォルトの名無しさん
垢版 |
2015/11/15(日) 19:09:44.01ID:PV6fOtMt
報告乙
0272デフォルトの名無しさん
垢版 |
2015/11/19(木) 16:51:28.76ID:I2rQS35X
char *hoge[] = new char *[N];
scope(exit) free(hoge.ptr);
とするのと
char **hoge = cast(char **)(new char *[N]);
scope(exit) free(hoge);
とするのとでは同じ動作が期待出来ますか?

あとガベコレを期待するなら
scope(exit) free(hoge.ptr);

scope(exit) free(hoge);
もどちらも不要ですか?
0273デフォルトの名無しさん
垢版 |
2015/11/19(木) 23:48:30.24ID:kWkiLP1L
色々とカオス(感想)
C : malloc/free
C++: new/delete

D : new/[destroy]
GCがあるので解放は不要だが、領域が不要になったことをdestroyで明示してもよい
ただしdestroyで領域が即時解放されるわけでなく、GCが必要に応じてよしなにやる
C++のdeleteと区別するために、destroyになった(想像)
---
auto hoge = new int[][N]; // int型の動的配列をN要素もてる動的配列(二次元配列)
foreach (elem; hoge)
elem = new int[色々]; // ジャグ配列も可能
// 以下は不要(してもよい)
foreach (elem; hoge)
destroy(elem);
destroy(hoge);
---
GCを使わずmalloc/freeすることも一応可能
(今だと、std.experimental.allocatorを使うべき?)
newしたものをfreeすることに保証はないと思う、知らんけど
0275デフォルトの名無しさん
垢版 |
2015/11/20(金) 10:48:03.85ID:LnAg0HCn
ありがとうございます!!
0276デフォルトの名無しさん
垢版 |
2015/11/20(金) 22:50:35.51ID:KMWFgUCm
クラスのstaticメンバ関数で、継承先の型って見られますか?

class Base {

static T[] takusanMake(T)(int n) { //Hogeから呼んでT=Hogeがほしい
T[] ret = new T[n];
foreach (ref e; ret) {
e = new T;
}
// ... Baseのフィールドしかいじらないような設定 ...
return ret;
}

}

class Hoge : Base {
}

void main() {
//Hoge
auto hoge = Hoge.takusanMake(30);
}

内容はともかく、大体こんな感じのことをしたいです
Baseから派生したクラスで定義するとか、ちゃんと!(Hoge)してもいいんですが、
(this T)を見てから何か方法があるような気がしてきて・・・
0277デフォルトの名無しさん
垢版 |
2015/11/21(土) 13:20:00.57ID:1cOWOBSi
staticなメンバ関数からは、thisは見えないので
UFCS前提でいっそ外部に出して
===
import std.stdio;

class Base {}
class Hoge : Base {}
class Other {}

T[] takusanMake(T : Base)(lazy T d, int n) {
auto ret = new T[n];
foreach (ref e; ret) {
e = d();
}
return ret;
}

void main() {
auto hoge = (new Hoge).takusanMake(30);
typeid(hoge).writeln;
// Baseに暗黙変換できない型はNG
//auto other = (new Other).takusanMake(30);
}
===
こういうのはどうだろう
(もっといい方法ありそう。。)
0278デフォルトの名無しさん
垢版 |
2015/11/21(土) 14:42:18.71ID:8z9xCqW5
Hoge という型と Fuga という型があって

Hoge[Fuga] hage;
という連想配列は定義できるみたいなのですが

Any という任意の型があるとして
Any[Any] moge;
みたいな連想配列は作れますか?
0279デフォルトの名無しさん
垢版 |
2015/11/21(土) 14:47:56.80ID:8z9xCqW5
ちなみに
["A": "B", "C": 3, 4: "E"]
みたいなのを作りたいのです
0281デフォルトの名無しさん
垢版 |
2015/11/21(土) 22:31:38.28ID:jpeEJ7vY
import std.variant;
auto moge = [Variant("A"): Variant("B"), Variant("C"): Variant(3), Variant(4): Variant("E")];
とかいうダサい感じのしか思いつかない。
0282デフォルトの名無しさん
垢版 |
2015/11/21(土) 23:35:17.00ID:BXVotCtM
>>277
確かにもう外に出してしまう方がいいかもしれないですね
外に出すことは考えてなかったのでもうちょっと考えてみます
0284デフォルトの名無しさん
垢版 |
2015/11/22(日) 12:42:54.55ID:rXOpUu6m
>281
ダサくてよければ

Variant[Variant] constructor(T...)(T plist){
Variant[Variant] result;
foreach(ref p; plist) result[new Variant(p.keys[0])] = new Variant(p[p.keys[0]]);
return result;
}
Variant[Variant] moge = constructor(["A": "B"], ["C": 3], [4: "E"]);

試してないけど
0286デフォルトの名無しさん
垢版 |
2015/11/22(日) 18:34:22.00ID:uPJ5yBy3
import std.variant;
import std.stdio;

Variant[Variant] makeTable(T...)(T p) {
static assert(T.length%2 == 0);
Variant[Variant] t;
foreach (i, ref v; p) {
static if (i%2 == 0) {
t[Variant(p[i])] = Variant(p[i+1]);
}
}
return t;
}

void main() {
auto t = makeTable(1, 2, "hoge", 123.2);
writeln(t);
}
0291デフォルトの名無しさん
垢版 |
2015/11/24(火) 12:03:53.42ID:Dj+m8Q01
>>284>>286 ってどちらもコンパイル時に
解決された型変換のコードが生成されるのですか?
つまり前者も後者も実行時の速度パフォーマンスは同じですか?
0293デフォルトの名無しさん
垢版 |
2015/11/26(木) 17:49:18.83ID:yeqvnwwH
Dでcomのclientを書こうとして付属のサンプルソースを試したら動作しました

wshサーバーをdispatchしてEcho('hoge')みたいなポップアップを出したいのですが
サンプルをどのように書き直せばよいのですか
0294デフォルトの名無しさん
垢版 |
2015/11/26(木) 17:58:08.82ID:yeqvnwwH
途中まで書いたコードです
extern (Windows) HRESULT CLSIDFromProgID(const wchar *, CLSID *);
const string wsh = "WScript.Shell";
interface IWSH : IUnknown {
extern (Windows) int Echo();
}
DWORD dwVer = CoBuildVersion();
HRESULT hr = CoInitialize(null);
hr = CLSIDFromProgID(wsh.toUTF16z(), &clsid);
IWSH pIWSH;
hr = CoCreateInstance(&clsid, null, CLSCTX_ALL, &IID_IUnknown, &pIWSH);
// FAILED(hr)の判定コードは省略していますがここまでは動作しているようです
// pIWSHに値は入っているようですが次の場所でAccessViolationします
pIWSH.Echo();
CoUninitialize();

pIWSH.Echo(); の行をコメントアウトすると何も起きませんが正常に完了します
あと
&IID_IUnknown
のところを
&IID_IDispatch
に書き換えてもだめでした
0296デフォルトの名無しさん
垢版 |
2015/11/27(金) 08:55:22.81ID:H96QzFnR
>>294
IDLとかタイプライブラリとか見ずに静的バインディングしようとしてる
普通は中間ヘッダを入手するかツールで生成する
C++で一度やったことがないとダメ

ちなみに >>295 は動的バインディング
0298デフォルトの名無しさん
垢版 |
2015/11/27(金) 10:48:43.15ID:Og1YQ9Di
>>297
うっかり勘違いしてました

標準のinterfaceから継承する方法ですが
interface IWSH : IUnknown { // add vtbl to define as IDispatch
extern (Windows) HRESULT GetTypeInfoCount(UINT *);
extern (Windows) HRESULT GetTypeInfo(UINT, LCID, REFIID);
extern (Windows) HRESULT GetIDsOfNames(REFIID, LPOLESTR *, UINT, LCID, DISPID *);
extern (Windows) HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *);
}
にして
hr = CoCreateInstance(&clsid, null, CLSCTX_ALL, &IID_IDispatch, &pIWSH);
したら
後は >>295 さんと同じように PopUp("Hage") を Invoke 出来ました
ほんとうにありがとうございました
0299デフォルトの名無しさん
垢版 |
2015/11/27(金) 11:49:41.82ID:c/N8jVfb
質問です。
SysTime st = Clock.currTime();
writefln("%s", st.toISOExtString());
writefln("%s", st.toISOString());
の動作で末尾の小数点以下の数字 (hnsecs) が
7桁になるときと6桁になるときがあるみたいです。

先頭の 0 が表示されないケースがあると思ったのですが
通常の '年月日T114500.1234567' 以外に
'年月日T114500.0123456' は表示されました。
ところがたまに '年月日T114500.123456' と表示されることがあります。
つまり '年月日T114500.0123456' なのか '年月日T114500.1234560' なのか判りません。
hnsecs==0 のときにこのパターンがあるみたいなのですがみなさんのところはどうですか?
DMD32 D Compiler v2.063.2
です。
0300デフォルトの名無しさん
垢版 |
2015/11/27(金) 11:52:34.38ID:c/N8jVfb
ちょっと紛らわしいので一部訂正します。

x 小数点以下の数字 (hnsecs) が
o 小数点以下の数字 (total hnsecs) が

x hnsecs==0 のときにこのパターンが
o msecs==123, usecs=456, hnsecs==0 のときにこのパターンが
0302デフォルトの名無しさん
垢版 |
2015/11/27(金) 15:13:20.37ID:c/N8jVfb
なるほど小数点以下だから末尾の0は除かれるんですね。
7桁だと思って決め打ちしない方が良いですね。
0303デフォルトの名無しさん
垢版 |
2015/11/27(金) 15:16:44.79ID:c/N8jVfb
Duration d = hoge - fuga;
d.total!"msecs", d.total!"usecs", d.total!"hnsecs" を使うことにします。
0304デフォルトの名無しさん
垢版 |
2015/11/28(土) 10:52:50.96ID:BU0Z8dtz
python の __getattr__
ruby の method_missing
javascript の __noSuchMethod__
みたいなものを期待して
D で同じようなものが有るかどうか検索したら
http://forum.dlang.org/post/op.usipp0mij5j59l@my-tomato
というやりとりが見つかりました
そこのサンプルをコンパイルしようとしたのですがエラーになります
D で opDotExp ってどう使うんですか?
0305デフォルトの名無しさん
垢版 |
2015/11/28(土) 11:37:36.45ID:3W8Apw0w
opDispatch()

ただし型のコントロールは引数とか名前付けとか工夫して自前で面倒を見る必要がある
0308デフォルトの名無しさん
垢版 |
2015/11/30(月) 20:34:23.05ID:SJumDZBl
有賀d
0309デフォルトの名無しさん
垢版 |
2015/11/30(月) 20:43:06.11ID:SiMJvgO4
IDispatch で
auto xl = Dispatch("Excel.Application");
xl.Visible = true;
auto workbooks = xl.Workbooks;
まではうまく逝くのに
auto book = workbooks.Add();
で Access Violation してしまう
何が間違ってるんだろう
0311デフォルトの名無しさん
垢版 |
2015/12/01(火) 08:39:45.47ID:yW8K+bhB
Add がデフォルト引数を持ってるけど引数明示したらどうなるかな
ぐぐったら xlFileFormat 列挙型 とか出てくる
0312デフォルトの名無しさん
垢版 |
2015/12/01(火) 20:10:30.52ID:9BYkXgQy
a.unknownproperty = hoge;
みたいなのも opDispatch!"unknownproperty"(Args args...) で書けますか?
0315デフォルトの名無しさん
垢版 |
2015/12/02(水) 05:34:41.55ID:53wnCEvY
さっきから変な現象になりました
windows10 なのですが
import std.stdio;
int main(string[] args)
{
writefln("@");
return 0;
}
だけのファイルを d_opDispatch.d というファイル名で保存して
dmd -run d_opDispatch.d を実行しても何も表示されないので
dmd d_opDispatch.d を実行して出来た d_opDispatch.exe を
cmd.exe から実行すると UAC のポップアップが出ていることがわかりました
そのまま許可すると別の cmd.exe が開かれてその中で @ が出力されています
また d_opDispatch.exe を test.exe に rename したら UAC は出なくなりましたω
それで test_opDispatch.exe にするとまた UAC が出たので
test_op_Dispatch.exe とか op_Dis_patch.exe とか試したのですが
この二つも UAC が出てきますω
また test.exe に戻したら普通に動くようになりました
ソースのときのファイル名は関係ないみたいなので
dmd -oftest.exe -run d_opDispatch.d
でとりあえず解決は出来てるんですけど何なんですかねこれ
windows10 のブラックリストに登録されちゃってるんですか?ω
それともうちだけですか?
0321デフォルトの名無しさん
垢版 |
2015/12/03(木) 01:25:39.08ID:y1qNQeGi
名前付きenumが普通に想像するようなenum
名前なしenumは常時インライン展開されてデータセクションに出力されないconstもどき、じゃなかったっけ

その上で 型.メンバ の形で使えるプロパティは 変数(定数).メンバ の形でも使えるというだけのような気がする
0322デフォルトの名無しさん
垢版 |
2015/12/03(木) 01:51:22.50ID:2XsySS+x
>>321
なるほど、(名前付き)enumが型という認識が不足してたのか
それなら各要素自体はprivateじゃないからアクセスもできて当然なのかな
ありがとう
0323デフォルトの名無しさん
垢版 |
2015/12/04(金) 09:37:05.62ID:prxSfFNA
auto hoge(T...)(T args){ return args[0] ; }
みたいな関数があるとき

呼び出し側で
auto fuga = hoge();
で呼ばれたか
auto fuga = hoge;
で呼ばれたか
どちらなのかを呼ばれた側で区別出来ますか?
0324デフォルトの名無しさん
垢版 |
2015/12/04(金) 11:41:34.38ID:qnfnKzej
たぶん無理
それにその辺りの仕様はふらついているので
今の仕様で組んでも後でダメになる可能性がある
0325デフォルトの名無しさん
垢版 |
2015/12/04(金) 15:12:03.13ID:prxSfFNA
call と get と set を実装して dispatch する目論見だったんですが
PyObject だと get と call の区別が微妙なんです
0326デフォルトの名無しさん
垢版 |
2015/12/04(金) 15:29:35.37ID:eLJR6e6w
DWT(https://github.com/d-widget-toolkit/dwt)を試しているのですが
Drag and Drop のサンプル(snippetxx.d)が全く見つからないので
SWT(http://www.eclipse.org/swt/snippets/#dnd)を取ってきて試すも
cannot cast expression event.data of type object.Object to string
のコンパイルエラー、cast じゃダメなので何がしかの変換が必要らしい

で、DWT の Drag and Drop はこんな感じで
動かしてるよ〜という情報をお持ちの方おしえてくださいませm(_ _)m
0328デフォルトの名無しさん
垢版 |
2015/12/04(金) 18:01:46.27ID:5R2qZuA/
2.069.2でDelimited Strings内にASCII以外があると怒られるよぅ
q"EOS
日本語 ← Error: character 0xa5 is not a valid token
EOS"
0330デフォルトの名無しさん
垢版 |
2015/12/05(土) 11:43:03.20ID:pK0sc289
>>324
とりあえず呼び出し側で
auto fuga = hoge.unknownmethodcall([]);

auto fuga = hoge.unknownproperty;
で区別することにしたらうまく別けられました
ところが今度は
hoge.unknownproperty = hage;
で代入しようと hoge class 内で
void opDispatch(string propertyname, T)(T arg){
}
と setter を定義したのですが
hoge.unknownmethodcall([]);
の方まで setter に奪われるようになってしまいました
0332デフォルトの名無しさん
垢版 |
2015/12/06(日) 13:00:28.84ID:OHUYOsyJ
ああテンプレートで呼び分けるんじゃなくて
全部まとめて一ヶ所で受けて if で分けるんですね
参考になります
ありがとうございます
0333デフォルトの名無しさん
垢版 |
2015/12/07(月) 22:12:53.36ID:yUJmRPdi
import std.process;
で pipeProcess とか spawnProcess とか使えるのは判ったのですが
windows で win32api の CreateProcessAsUser とか CreateProcessWithLogonW
に相当することが実行可能なモジュールはありますか?
0334デフォルトの名無しさん
垢版 |
2015/12/07(月) 22:30:26.17ID:ka6hrItk
標準では最低限のAPIしかないので
自分でポーティングするか拾ってくるかしましょう
0336デフォルトの名無しさん
垢版 |
2015/12/09(水) 01:01:38.90ID:Iqk5klbT
linuxで7zip.soのbindingを書こうとしています。7zipのC++側のIUnknownが
struct IUnknown
{
STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
STDMETHOD_(ULONG, AddRef)() PURE;
STDMETHOD_(ULONG, Release)() PURE;
#ifndef _WIN32
virtual ~IUnknown() {}
#endif
};
このように宣言されているのですが、Dのinterfaceでデストラクタを宣言できなくて困っています。
超その場しのぎとして、DのIUnknownの宣言のReleaseの後にダミーのメソッドを、
・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、
・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、
それぞれできたのですが、とてもまともな解決策とは思えません。
どうすべきでしょうか。
0339デフォルトの名無しさん
垢版 |
2015/12/09(水) 10:05:46.43ID:IXqPU77s
winじゃなくてlinuxでやりたいみたいよ
一晩寝たら 空のデストラクタなんていらなかったんや
って気づくかもしれない
0340336
垢版 |
2015/12/09(水) 18:59:13.67ID:bSTrBSEY
>>337-339 クソして寝ましたが、仮に空(とはいえvirtual)のデストラクタがまるで無意味だったとしても、
bindingの体をとっているのでp7zip側のコードを変えるのはちょっと。
むしろvtblのズレが336程度の単純さならばソレで行くかと。
気になるのはDから呼ぶ場合とC++から呼ぶ場合の非対称性ですが、こういうもんなんですか?
0341デフォルトの名無しさん
垢版 |
2015/12/09(水) 19:32:29.57ID:sRhtlXMa
C++ネイティブの呼び出しっていつから「ちゃんと」できるようになったんですか?(小声)
0342336
垢版 |
2015/12/09(水) 20:30:12.63ID:bSTrBSEY
あ、非対称っていうのは勘違いだったかもごめ。
http://dpaste.dzfl.pl/4e7956f36a47
これで解決や!どうもありがとう!
>>341 WindowsでCOMを使った7zipのbindingはもっとすんなりいきましたよ。
0344デフォルトの名無しさん
垢版 |
2015/12/11(金) 10:36:51.24ID:Q/bqtNpc
振りかな?
0347名無しさん@そうだ選挙に行こう
垢版 |
2015/12/14(月) 11:06:28.62ID:baKxaSGv
自分のクラス(Fuga)を定義していて string へ変換するときに
Fuga f("hage");
string hoge = f;
みたいな書き方をしたいのですが
どんなメソッドを作っておけば良いのですか?
0350名無しさん@そうだ選挙に行こう
垢版 |
2015/12/14(月) 14:30:09.48ID:baKxaSGv
alias s_ this; とは驚きですが

Fuga f = new Fuga("123");
int i = f;
としたときでも i に 123 が入るようになりますか?

条件後出しですみません
0351名無しさん@そうだ選挙に行こう
垢版 |
2015/12/14(月) 14:33:32.26ID:baKxaSGv
ちなみに

Fuga f = new Fuga("123");
string s = f; // なら s = "123"; と同じ
int i = f; // なら i = 123; と同じ

という意味です
これも alias だけで出来てしまうんでしょうか?
0352名無しさん@そうだ選挙に行こう
垢版 |
2015/12/14(月) 15:09:08.43ID:2JSVZtRY
そういうのはたいてい変数に移して終わりじゃなくて、その先があるでしょ
例えば関数に渡すならその関数をテンプレートでうまくまとめるのが D流
単に出力するだけなら writeln(f)
0353名無しさん@そうだ選挙に行こう
垢版 |
2015/12/14(月) 17:11:34.59ID:reTGASBb
ここを参考に
http://www.kmonos.net/alang/wnd/topics/winapi.ja.html
Win32API を使って drag & drop を実装してみたところ
case WM_DROPFILES: の中で

HDROP dr = cast(HDROP)wp;
TCHAR[] buf = new TCHAR[MAX_PATH];
int l = DragQueryFile(dr, 0, buf.ptr, buf.length);
if(l < buf.length) buf[l] = 0;
string bs = to!string(buf[0..l]);
version(Unicode){
writefln("0: %s", to!string(bs.toMBSz()));
string name = bs;
}else{
writefln("0: %s", bs);
string name = fromMBSz(bs.toStringz());
}
writefln("1: %s", name);

とすると
drag & drop したファイル名が 「森鷗(環境依存文字2)外��(環境依存文字3)る.ext」 のとき
最後の name の表示が -version=Unicode したときとしないときで結果が違います
toMBSz と fromMBSz とで不可逆なのは判るのですが
MBSz -> UTF8 するときも結果が違うのは何故でしょうか?
(ただし表示は違うのですが同じファイルが対象になってちゃんと動作します)
0354名無しさん@そうだ選挙に行こう
垢版 |
2015/12/14(月) 17:23:00.56ID:reTGASBb
文字化けしてるので補足

環境依存しない方の文字はこちらです
森鴎外叱る

2 鷗外

3 ��る

がそれぞれ環境依存文字です
この辺が関係ありそうなのですが fromMBSz のバグなのか何なのかよく判りませんでした
https://msdn.microsoft.com/ja-jp/library/cc419800.aspx
http://download.microsoft.com/download/B/0/9/B09F266D-8D54-4476-A3EC-E974CA5F61F8/BS_303.pdf
0355デフォルトの名無しさん
垢版 |
2015/12/14(月) 21:06:28.36ID:uspa+zNB
>>351
Multiple AliasThisを使えば可能
もちろんコンストラクタ内で変換して保持とかする必要はあるけど



……なので実装されるのを楽しみに待っててくれよな!
0356デフォルトの名無しさん
垢版 |
2015/12/15(火) 04:33:41.61ID:iPeNyqfl
>>353 SHIFT-JISに含まれてない文字だから仕方ないとおもわれ。
DragQueryFileAの方ではかわりに 63(ASCIIのハテナマーク)が送られてきてる。
A付関数のことなんて早く忘れるんだ!
0360デフォルトの名無しさん
垢版 |
2015/12/18(金) 01:01:03.51ID:fYXmJuMp
>>358
A版の内部処理でことごとく文字化けしてるから
文字化けしたファイル名がマッチするせい
0361デフォルトの名無しさん
垢版 |
2015/12/18(金) 17:04:11.83ID:mbvyIjbK
>>360
わたしもそう思ったんですが
出来上がった hoge.7z ファイルの中の
ファイル名は文字化けしておらず正常なんです
0365デフォルトの名無しさん
垢版 |
2015/12/21(月) 12:10:28.67ID:ayhLnjzU
宣言はできるけど使えない
左辺値から型推論とかしてくれると嬉しいんだけどね
0376デフォルトの名無しさん
垢版 |
2016/01/04(月) 18:59:05.97ID:uh/Y4MEw
BASICは害悪
0377デフォルトの名無しさん
垢版 |
2016/01/04(月) 19:11:18.78ID:SQWKaGiq
まあ妥当と思う。Basicって括りがざっぱだけど、
(N-88とかそういう)BASIC → まあやらんでええやろ。行番号とか。ねえ?
VB → PowerShellが出てシリスボミ感がある。
Python → 個人的にはtkinterの存在がでかい。
JavaScript → すぐ遊べる。すぐ自慢できる(←重要
あとは英才教育的な観点からならプログラミンとか?
0383デフォルトの名無しさん
垢版 |
2016/01/16(土) 10:21:44.91ID:CPZavs1f
64bitのWin32対応DLL作りたいんだけど?
0388デフォルトの名無しさん
垢版 |
2016/01/16(土) 16:31:09.62ID:eTAXMCcj
DMD で単純な x64 バイナリを作るところまでは行けてるんでしょ?
Win32 DLL も作れるんでしょ?
x64 で Win32 App と結合できるかって話でしょ?
出来ないと思うけど
0390デフォルトの名無しさん
垢版 |
2016/01/22(金) 17:45:10.29ID:tiw7VxmH
>>336
> DのIUnknownの宣言のReleaseの後にダミーのメソッドを、
> ・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、
> ・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、
> それぞれできたのですが、とてもまともな解決策とは思えません。

https://issues.dlang.org/show_bug.cgi?id=15589#comment_text_0
やっぱりダミーを追加するしかないらしい
0391336
垢版 |
2016/01/22(金) 20:16:27.79ID:6NMzASC5
わぁ!どうもありがとう!まだ書きかけ&お粗末ですが、その時の成果物です。
https://github.com/garlic-flavor/D7z
ツッコミ/プルリクお待ちしております。m(_ _)m
0392デフォルトの名無しさん
垢版 |
2016/01/22(金) 22:46:33.96ID:ph7VTr94
いつのまにか公式が改装してた
なんかすごくプログラミング言語の公式ページっぽい
0393デフォルトの名無しさん
垢版 |
2016/01/25(月) 22:17:17.47ID:bhSAv5/D
/r/programming 見てるとほぼ毎日Dの記事があって、ついに時代がきたか感がある
0394デフォルトの名無しさん
垢版 |
2016/01/27(水) 00:28:20.96ID:KSmE0N2z
scope(exit)はスコープ抜けるときに実行されるけどさ、
呼び出し元のスコープ抜けるときに実行されるような処理を書く方法って存在しないのかな

例えば
foo(){
  hoge();
}
で、hoge()の定義内に書いてfoo()の最後に実行されるようなやつ
0397デフォルトの名無しさん
垢版 |
2016/01/27(水) 01:46:23.73ID:KSmE0N2z
事故解決。mixinという道具があったではないか
0405デフォルトの名無しさん
垢版 |
2016/02/01(月) 11:49:31.71ID:C4njzqYk
もしかしてdmcって64bitのコンパイルオプションないの?
0406デフォルトの名無しさん
垢版 |
2016/02/01(月) 12:03:33.19ID:gmWomOLn
ないっしょ
16bit ならまだあるかもしれない
それに optlink まで含めると 32 ですら騙し騙し使ってる状況
0407デフォルトの名無しさん
垢版 |
2016/02/02(火) 23:16:29.97ID:N0vbs9wX
今さらだけどD用のお勧めのGUIライブラリある?
マルチプラットフォームで。
0410デフォルトの名無しさん
垢版 |
2016/02/03(水) 13:07:25.53ID:uEOUJl1K
自分でメンテする気があれば正直どれでもいいし
そうじゃなければ D でGUIなんて考えないほうがいい
0412デフォルトの名無しさん
垢版 |
2016/02/03(水) 15:49:20.75ID:5/pxQ4tU
時代は io.js + Electron ですねわかります
0413デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:08:22.05ID:JdStCQ++
ぜんぜんわからない

D普及のために、できるだけわかりやすく情報を提供してください。切に望みます
0414デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:10:01.79ID:JdStCQ++
Cのインタフェースがていきょうされていれば、利用できる
これが鍵なんだろうけど、初心者むけではない
0415デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:11:50.36ID:JdStCQ++
DWTは、マルチプラットフォームではないのでは?
0416デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:15:47.11ID:JdStCQ++
わからんわからんわからんわからんわからんわからんわからんわからん
0417デフォルトの名無しさん
垢版 |
2016/02/03(水) 20:44:42.00ID:NLGo/bvc
自分は何がしたいのか、何ができなかったのか
情報がなければ答えようもなかろう
0420デフォルトの名無しさん
垢版 |
2016/02/04(木) 15:18:46.80ID:wiwVjChn
>>408
dクス
やっぱDWTが定番かー
DlangUI、最初のmixinが美しくないなぁ・・・・・・(笑)

>>409
あれ、Dの利点あんまりないですやん><
0423デフォルトの名無しさん
垢版 |
2016/02/05(金) 21:20:24.44ID:hmTKeVMY
どうしてもマルチプラットフォームが必要なら
HTML5 でどうにかする方が現実的
0424デフォルトの名無しさん
垢版 |
2016/02/06(土) 20:54:27.15ID:2Uy/PFwr
もう仕様固まってきて大きな動きないのにサードパーティのライブラリが整備されないのは
Dが今まで積んできた業かな
0425デフォルトの名無しさん
垢版 |
2016/02/07(日) 18:20:11.44ID:eIUfmNby
これからに期待します
0426デフォルトの名無しさん
垢版 |
2016/02/08(月) 17:21:11.18ID:LpGg46bP
Oh my
0429デフォルトの名無しさん
垢版 |
2016/02/13(土) 20:34:35.13ID:OlzkmTVA
ライブラリが整備されないのはなぜ? ユーザーが少ないから
ユーザーが少ないのはなぜ? ライブラリが整備されないから
0431デフォルトの名無しさん
垢版 |
2016/02/15(月) 18:05:56.16ID:+caJiYS4
コンパイル時にテキスト読み込んでさ、
行数の数だけ文字列mixinして関数作りたいんだけど
任意回数の文字列ミックスインのループってどう書くんだろう・・・・・・。
0437デフォルトの名無しさん
垢版 |
2016/02/15(月) 21:17:10.53ID:NUVEFX4y
>>436
過去に仕様変更し過ぎたせいでD言語=仕様変更っていう認識が一般に広まったせいじゃね?
0439デフォルトの名無しさん
垢版 |
2016/02/16(火) 16:56:10.74ID:qagv5yy3
信用は一度失うと取り戻すのは困難ってことさね

D言語について少しでも調べてもらえば今そうでないのはわかることだから、
D言語を知らない人がD言語に触れる機会を増やす・・・
つまりD言語で書かれた一般向けアプリがもっと出ればいいわけだ

よし!あとはまかせたぞ!
0451デフォルトの名無しさん
垢版 |
2016/02/27(土) 03:16:45.72ID:GUJ5wO/X
iota(-10,1)やrecurrence!(q{ -n })(0)がintになるのに
sequence!(q{ -n })だけuintで負の値を使えないんですがこれって何か理由があるんですかね?
0452デフォルトの名無しさん
垢版 |
2016/02/29(月) 00:18:12.07ID:zsA7yhFD
>>451 ソース見た感じ、
recurrence!(q{-n})(0) は 0 の型とってる→int
sequence!(q{-n}) は -n の型とってる、ここで n の型は size_t → size_t
ってことみたい。
0453デフォルトの名無しさん
垢版 |
2016/02/29(月) 07:53:56.99ID:9aTNra24
 alias compute = binaryFun!(fun, "a", "n");
 alias ElementType = typeof(compute(State.init, cast(size_t) 1));
で、nにcast(size_t)1を入れてsize_tになってるんですね
単に気になっただけなんですけど
0454デフォルトの名無しさん
垢版 |
2016/02/29(月) 15:44:30.93ID:iGEmA67j
配列の中の最大値を探すときって普通どうやるんでしょうか

enum arr = [3, 1, 4, 1, 5, 9, 2];

aliasSeqOf!arr.max.writeln; // 要std.metaなのと定数でないとダメ
arr.minPos!
0459デフォルトの名無しさん
垢版 |
2016/03/01(火) 21:04:14.81ID:s5WMaGjg
void hoge(T)(out T t) {...}

uint x;
hoge(x); // コンパイル通る
int[] arr;
hoge(arr.length); // コンパイルエラー(Error: template hoge cannot deduce function from argument types !()(uint), candidates are:)

arr.lengthでエラーが出るのはどういう理屈なんですか?
0462デフォルトの名無しさん
垢版 |
2016/03/01(火) 21:26:20.10ID:CYOvNsDD
いや、ひょっとして length のセッターを呼んで欲しい…?
流石に無理なんじゃ
0463459
垢版 |
2016/03/01(火) 22:02:04.13ID:s5WMaGjg
arr.length = 0とかできるから普通の変数と同じように考えてました。
hogeに渡す時に、ただの右辺値のuintとして評価されるってことですね。
0465デフォルトの名無しさん
垢版 |
2016/03/02(水) 03:05:50.56ID:S8FWiipj
もしlengthをいじりたいなら深く考えず
void nobasu(T)(ref T[] arr) {
 arr.length ++;
}
とかでいいんじゃ?
0466459
垢版 |
2016/03/02(水) 21:10:33.37ID:Py15QFNz
lengthをいじりたいというより、out引数を持つ関数を使いたかったんですよね。
なのでこうしました。
uint lenght;
hoge(length);
arr.length = length;
0467454
垢版 |
2016/03/07(月) 16:09:07.92ID:KpyO6Zd7
>>456
reduce!maxか!
遅くなりましたが、ありがとうございました。
0469デフォルトの名無しさん
垢版 |
2016/03/07(月) 17:38:25.23ID:hzTv2Fg2
とはいえまだマージされただけでリリースはされてないし
内部でreduce使ってるから無くなることはないだろうけどな
0470デフォルトの名無しさん
垢版 |
2016/03/07(月) 21:13:14.18ID:ZACCB8Ww
struct S { int[] arr; }
S s1;
...
S s2 = s1;

構造体のデフォのコピーコンストラクトを使った場合、メンバarrはシャローコピーされますよね?
ディープコピーしたい場合、コピーコンストラクタを書き換えるか、ディープコピー用のメンバ関数を書く方法が思いつきますけど、
もっと手軽な方法はないでしょうか?
0471デフォルトの名無しさん
垢版 |
2016/03/07(月) 22:22:23.50ID:hzTv2Fg2
前者はpostblitを指してるんだと思うけど、すでに十分手軽じゃね?
this(this){arr=arr.dup;}

ところでマニュアルによればpostblitは初期化時の話らしいけど、代入時にも呼ばれるのは何故だ
0472デフォルトの名無しさん
垢版 |
2016/03/07(月) 22:31:36.23ID:ZACCB8Ww
>>471
構造体なのでコピーコンストラクタじゃなくてpostblitでしたね。
this(this){arr=arr.dup;}を構造体ごとに書いていかないといけないのが面倒くさく感じました。
0473デフォルトの名無しさん
垢版 |
2016/03/07(月) 22:49:33.64ID:hzTv2Fg2
>>472
つまり1回書くだけで全ての構造体に一括して適用されるような方法を期待してる?
さすがに無い気がするし、むしろあったら怖い
せいぜいmixinして文字数削る程度じゃね
0474デフォルトの名無しさん
垢版 |
2016/03/08(火) 00:13:35.69ID:P+r5NzGC
>>473
自分で書くならtupleofとtraitでdupテンプレートを書いて
S s2 = s1.dup;
っていうのを思いつきました。
0477デフォルトの名無しさん
垢版 |
2016/03/12(土) 05:14:08.80ID:/9wKb/bF
>>433
今更だけどありがとう、
そんなアタリマエのことを全然思いつかなかったw
CTFEすげー(今更)
0478デフォルトの名無しさん
垢版 |
2016/03/15(火) 00:58:06.47ID:sgjiEx6Z
VS2013とLDCでビルドしたら、
LINK : fatal error LNK1104: cannot open file 'legacy_stdio_definitions.lib'
というエラーが出たんですけど、原因は何が考えられますか?
0480デフォルトの名無しさん
垢版 |
2016/03/15(火) 02:36:06.05ID:sgjiEx6Z
>>479
うーん、わからないです。
legacy_stdio_definitions.libがHDDの中にないし、ぐぐってもなんなのかよくわからない。
0481デフォルトの名無しさん
垢版 |
2016/03/15(火) 07:36:35.68ID:vxrFHeSb
>>478
デフォルトは VS2015 の設定だから
etc/ldc2.conf の該当行 を書き換えてくれってどっかに書いてあった

"-Llegacy_stdio_definitions.lib" とその前の行のカンマを消せばいい
0482デフォルトの名無しさん
垢版 |
2016/03/15(火) 15:54:15.40ID:sgjiEx6Z
>>481
ldc.confにlegacy_stdio_definitions.libはありませんでした。

色々、調べてて気づいたんですけど、LDCを使うにはLLVMもインストールしないといけないですか?
LLVMのバイナリは公開されていないみたいだし、ビルドしないといけないとなると面倒ですね。
日本語の解説サイトもなさそうだし難易度が高い。
0483デフォルトの名無しさん
垢版 |
2016/03/15(火) 19:09:38.41ID:vxrFHeSb
忘れてた VS2015 以外のバージョンで動かすには
LDC をその設定で再構築してくれと書いてあった
今探してもどこだったか見当たらないけど…

たぶん VS2015 入れるのが一番簡単
0485デフォルトの名無しさん
垢版 |
2016/03/18(金) 15:04:55.64ID:adG1WSEK
D言語でGCが動かなせない環境(組み込み環境)で
クラスを使ったコードを走らせるために手動でメモリ管理をする(配置new)
みたいなC++的な使い方できますのん?

もっと具体的に言うと、
メモリ管理クラスをD言語で書きたいんだけど・・・
できれば、ほかの言語(C/C++)を混ぜたくない。

Dでこの望みは叶えられる?
GCが完璧な言語で何を言ってるんだって話だけど
C言語とABI互換バイナリが吐ける言語でかつ、きれいな構文のDはかなり魅力だから、つい。
0487デフォルトの名無しさん
垢版 |
2016/03/19(土) 16:46:55.65ID:pnhuGA3J
>>486
あざます!!!!
ちとググってみましたけど
WikiにExplicit Class Instance Allocationっておもいっきり書いてありました・・・

手元の環境でもそれ書いたら動いたので
組み込み先の環境でもコレができるか試してみます!
0488デフォルトの名無しさん
垢版 |
2016/03/19(土) 17:36:21.89ID:emjvs9Sn
foldとかHaskellみたい
いいぞもっとやれ
実行時のパターンマッチとかどんどんやって
0489デフォルトの名無しさん
垢版 |
2016/03/19(土) 17:51:51.55ID:szPk7uBU
パターンマッチは本当に欲しい
castSwitchは型で分岐するだけで不満が残る
ついでにAlgebraicもいい感じにしてほしい
0490デフォルトの名無しさん
垢版 |
2016/03/19(土) 19:52:53.93ID:fGh+hC5f
Cライクな構文でパターンマッチをどう表現するか?
dropThree :: [a] -> [a]
dropThree (_:_:_:xs) = xs
dropThree _ = []
0492デフォルトの名無しさん
垢版 |
2016/03/19(土) 23:58:06.13ID:fGh+hC5f
>>491 を読んで、>>489 に必要なのは490ではなくて
if (auto a = cast(A)x) if (0 < a.b) {...}
の省略表記みたいのなのかなと思った。
0493デフォルトの名無しさん
垢版 |
2016/03/20(日) 00:15:59.18ID:sW9GrChn
今試してて気づいた
if (auto a = 0 < (cast(A)x).b, cast(A)x) {...}
は通るんだね。キャスト2回いるけど。
0495デフォルトの名無しさん
垢版 |
2016/03/20(日) 01:02:17.46ID:sW9GrChn
あ、バグですらないや。結果を使わないからカンマの前半が評価されてないだけだ。
スレ汚しでしたorz
0496489
垢版 |
2016/03/20(日) 04:59:55.44ID:270cchqR
>>492
考え直してみたら、俺が欲しいのは、クラス以外にも対応したcastSwitchと多重代入かなと思った
最初に欲しかったのは定数もパターンとして扱えるようなものだけど、それ自体は条件分岐で事足りる
0498デフォルトの名無しさん
垢版 |
2016/03/22(火) 18:21:28.75ID:9L67FCyK
new int[][](10,10)
なんてあったんだな・・・今の今まで律儀にループしてたわ・・・
恥ずかしい
0499デフォルトの名無しさん
垢版 |
2016/03/24(木) 06:29:39.15ID:JYtPWttv
レスポンシブなウェブページになってるね
https://dlang.org/
0504デフォルトの名無しさん
垢版 |
2016/04/17(日) 20:07:45.76ID:jaxl7tJu
Dってエルミート行列の固有値と固有ベクトルを下か上の三角行列から出してくれるライブラリある?
0505デフォルトの名無しさん
垢版 |
2016/04/17(日) 23:05:34.24ID:Rgu4hbC0
知らないが、
「Cでそれ扱ってるライブラリ」→「Dのバインディング」の順番で探すと見つかるかもしれない。
0506デフォルトの名無しさん
垢版 |
2016/04/18(月) 14:54:59.76ID:AtRZD2WH
そんな劣化バインディングの出てくる場面じゃないと思う

Dよお前の力はその程度かッ
0507デフォルトの名無しさん
垢版 |
2016/04/18(月) 15:40:47.97ID:NxXedIF3
バインディングに劣化とそうじゃないものの区別方法を教えれ
0513デフォルトの名無しさん
垢版 |
2016/04/27(水) 10:07:10.53ID:h7nUlsO3
writeにクラスを渡した時クラス名だけじゃなくて中身も表示させたいんだが何に手を加えればいいんだろか?
0515デフォルトの名無しさん
垢版 |
2016/04/27(水) 10:27:53.40ID:KQtnTftA
>>514
即座に返事くれてすごい助かった
ありがとうございます
0516デフォルトの名無しさん
垢版 |
2016/04/30(土) 12:14:38.56ID:XHbnmWX8
D言語でクラスを使って dmd -c Dソース でコンパイルだけして
GCC(mingw)でWindows用dllをクロスコンパイルする時、リンカが参照できないエラー吐くけども

参照できないメソッドはこれ
_D9invariant12_d_invariantFC6ObjectZv
_d_assert_msg

この参照できないメソッドが入ってるライブラリとその依存関係にあるライブラリって
どのファイルか分かります?
0517デフォルトの名無しさん
垢版 |
2016/04/30(土) 12:48:14.66ID:RhLYi0Bf
そうやって混ぜてコンパイルするのは無理…で普通は済む問題なんだけど
何がしたいのかしら
0518デフォルトの名無しさん
垢版 |
2016/04/30(土) 14:53:50.70ID:XHbnmWX8
>>517
https://github.com/kubasz/uefi-d
これを参考に、UEFI AppをD言語で作りたいんだけども、
クラスを使うとリンクエラーでてしまい と言う話で、>>516
やっぱり、Dのクラスの仕組み上、こういう変な使い方するのは厳しいかな
0520デフォルトの名無しさん
垢版 |
2016/04/30(土) 17:06:09.96ID:XHbnmWX8
>>519
サンプル自体ビルドは通ってQEMUで動作確認済みです。

確認済みのサンプルソースに、追加で適当なクラス
(プリミティブ型(検証時はintのみ)のメンバ1つとコンストラクタ、セッタ、ゲッタのみ)とか
プリミティブ型(同上)メンバのみ構造体を定義すると
リンクしないといけない何かが足りなくなるらしいと言うところです
0521デフォルトの名無しさん
垢版 |
2016/04/30(土) 17:18:34.76ID:RhLYi0Bf
それなら
-debug -release のオプションの不一致かな
druntime の debugあり/なし バージョンが分かれてるのかな
0522デフォルトの名無しさん
垢版 |
2016/05/01(日) 11:23:20.12ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0523デフォルトの名無しさん
垢版 |
2016/05/01(日) 12:30:45.52ID:5H9PV7Hp
年収いくら?
パナマに振り込み可能?
0525デフォルトの名無しさん
垢版 |
2016/05/02(月) 12:22:10.19ID:IEVsN46J
>>521
とりあえず、Objectのスタブを見つけたので、試しにコンパイルだけしてみました。
https://github.com/JinShil/D_Runtime_ARM_Cortex-M_study/wiki/1.3-Structs
これをそのままobject.dにコピペして、コンパイルだけ通そうとしたんですが
dmd -v -c object.d
binary dmd
version v2.070.2
config /etc/dmd.conf
parse object
importall object
semantic object
semantic2 object
semantic3 object
Error: undefined identifier 'Error'
Error: undefined identifier 'Error'

ってことなので、
class Error{
this(string){}
}

こんな感じのを作って、再度ビルドしたら、DMDが保護例外で落ちたんですが
D言語わからないですけど、多分CTFEが動いたんですかね?

Errorクラスの最小実装ってどうすればいいかわかります?
0526デフォルトの名無しさん
垢版 |
2016/05/02(月) 15:11:51.74ID:aR8AOrvI
どつぼにそれてるパターン?
0527デフォルトの名無しさん
垢版 |
2016/05/02(月) 17:55:15.75ID:IEVsN46J
ごめんなさい、話が飛んでた。(ドツボにはまってました)
>>516は一旦解決しました。ありがとうです。

-releaseオプションつけたら、一先ずassert関連の
リンクエラーは出なくなりました。
0530デフォルトの名無しさん
垢版 |
2016/05/04(水) 18:15:35.48ID:cRuVDbfJ
GJ
0532デフォルトの名無しさん
垢版 |
2016/05/06(金) 20:12:27.55ID:7fiYERlP
Dって長方形配列を動的に確保するにはどうするのがベストなんでしょう?
0534デフォルトの名無しさん
垢版 |
2016/05/07(土) 12:22:21.49ID:w1sNmh/I
>>533
おお、この記法でギザギザ配列回避できるのか!ありがとうございます
0536デフォルトの名無しさん
垢版 |
2016/05/12(木) 09:37:33.44ID:3GMYNf4t
>>535
これがまさに求めていたものだった
日本語のページではこれ全然見つからないし教えてくれなかったらこれに気付かず過ごすところだった
ありがとうございます!
0538デフォルトの名無しさん
垢版 |
2016/05/12(木) 15:10:26.64ID:9ZRvi6Dg
それまだ入ってから半年も経ってないし
experimental な上に注目度高いからガンガン変わるよ
0539デフォルトの名無しさん
垢版 |
2016/05/13(金) 09:27:38.80ID:XXFnZH8x
DerelictAllegro用のdllファイルがAllegro公式漁ってもみつからねぇ
いっそ同封してくれりゃいいのに
0541デフォルトの名無しさん
垢版 |
2016/05/14(土) 11:24:42.35ID:r8zKr16p
>>538
0542デフォルトの名無しさん
垢版 |
2016/05/15(日) 12:10:35.85ID:5BLNb8Jh
dってpythonでやれるように関数の引数としてクラスをとることは出来ますか?
0543デフォルトの名無しさん
垢版 |
2016/05/15(日) 13:23:09.57ID:0JYIjYbN
型と値は別物なので、Pythonのtypeクラスみたいなものは無いはず
テンプレートでは型を引数に取れるからそれで大概足りるしな
0544デフォルトの名無しさん
垢版 |
2016/05/15(日) 13:26:52.30ID:/LAeaQVK
そのままのものはなくても
__traits/std.traits を隅々まで見るとだいたいのことは出来る
0545デフォルトの名無しさん
垢版 |
2016/05/15(日) 16:23:19.03ID:5BLNb8Jh
なるほどdでは型を引数にしたかったらテンプレートを使うんですね
わかりましたありがとうございます
0546デフォルトの名無しさん
垢版 |
2016/05/16(月) 18:01:26.97ID:SzBm3KOG
すいません、>>535のndsliceを包含したクラスでnumpyのように動的にshapeを変えられるクラスを作ることは可能でしょうか?
slicedの引数が動的配列ではいけないせいでスライスの形をメンバ変数として持てず、Sliceの次元がコンパイル時に決定されていないといけないせいでslicedの結果をメンバ変数として持てなくて困っております。
0548デフォルトの名無しさん
垢版 |
2016/05/17(火) 08:13:05.26ID:8mvnsosn
>>547
やっぱり無理でしたか……
コードの例まで載せてくれてありがとうございます。参考になりました
0549デフォルトの名無しさん
垢版 |
2016/05/18(水) 07:28:31.57ID:tzs1T2aJ
テキストファイルをstringに読み込んでstd.string.indexOfを使うと
Invalid UTF sequence: e5x a3x - Attempted to decode past the end of string (at index 2)
という実行エラーが出ます。
テキストファイル自体は、TeraPadで開くとUTF-8として自動認識されているのですが、
D言語の標準ライブラリが認識してくれない原因は何が考えられますか?
0550デフォルトの名無しさん
垢版 |
2016/05/18(水) 13:02:57.20ID:yAlr13Jm
エラーメッセージそのまま
文字列が中途半端なところで終わってる
読み込むサイズが足りないか、元々ファイルがおかしくてTeraPadが開く時に自動で直してくれてるのか
0552デフォルトの名無しさん
垢版 |
2016/05/22(日) 07:52:01.31ID:vou34ySW
D言語の複素数ってなんか組み込みのとライブラリのがあってしかも行き来が不自由なんだけどどうなってんだこれ
0554デフォルトの名無しさん
垢版 |
2016/05/22(日) 08:10:54.35ID:AqdMtFt7
組み込みで使えるの便利だったのに……
0555デフォルトの名無しさん
垢版 |
2016/05/22(日) 09:20:35.38ID:KneT9rID
「ライブラリで実現できる」「言語仕様を小さくする」とかで
機能追加が却下されたり言語の機能が削られたりしてるが
「できる」じゃなくて本当にライブラリ側でやった方が良いのかどうか検討してからにして欲しい

言語仕様の大きさなんてユーザには関係ないよ、必要な部分しか使わないんだから
0556デフォルトの名無しさん
垢版 |
2016/05/22(日) 10:51:13.93ID:cWYsuk0t
言語仕様が小さくなってフットワークが軽くなる(== 破壊的変更が増える)
ならそれはユーザ体験の向上であろう。
さあはやく俺のstd.math.expi多用したコードをはじくのだ!
0557デフォルトの名無しさん
垢版 |
2016/05/22(日) 11:23:25.91ID:7hG4VCWt
>>555
つまりどういうことです?
0558デフォルトの名無しさん
垢版 |
2016/05/22(日) 14:41:12.39ID:P1iBYgIC
ライブラリでやるより言語仕様充実して欲しい
0559デフォルトの名無しさん
垢版 |
2016/05/22(日) 15:55:15.13ID:/FrpjXvP
初期の頃は、ライブラリより構文側でやった方が最適化できるというスタンスだったのに
いつの間に方針転換したんだろな
0560デフォルトの名無しさん
垢版 |
2016/05/22(日) 19:14:04.72ID:6Zib/w67
少なくとも>>553読む限りでは、需要がないと判断されただけに見えるけど
http://dlang.org/builtin.html でも最初に挙げられてる理由は「よく使われる」だし

8年間futureのままだったが、今月ようやく警告を出すPRが出たんだな
0561デフォルトの名無しさん
垢版 |
2016/05/24(火) 11:51:00.77ID:ng4V60az
>>559
CTFE が充実したとかLDCにぬかれたとかありそう
それに PreciseGC が未だにないのにビルトイン型だけ充実してますと言われても困る
0562デフォルトの名無しさん
垢版 |
2016/05/24(火) 23:39:58.92ID:mrDJwu+1
Pythonでいうところの
np.array([[[i,j] for i in range(3)] for j in range(5)])

np.array([[i,j] for i in range(3) for j in range(5)])
はDではrangeやndsliceを使って一行くらいで表現できますか?
0563デフォルトの名無しさん
垢版 |
2016/05/25(水) 02:32:41.24ID:ywcZQvWe
>>562
import std.algorithm, std.range;
3.iota.map!(a=>5.iota.map!(b=>[a,b])).join
ndslice使ってないけどこんなんですか
0564デフォルトの名無しさん
垢版 |
2016/05/25(水) 13:31:47.54ID:7HlacyyV
>>563
おお、綺麗だ……
まさかpythonより短く書けるとはびっくりしました。
ありがとうございます
0565デフォルトの名無しさん
垢版 |
2016/05/25(水) 14:49:41.33ID:JMqhkYJX
Dとpythonは相性良い感じ
0566デフォルトの名無しさん
垢版 |
2016/05/27(金) 18:54:45.88ID:a5zDK+Zd
dmcの質問なんですけど
a->b(a);
みたいなオブジェクトaに対するインスタンスメソッドbの呼び出しを
#define M(x, y) x->y(x)
みたいに定義して
M(a, b);
と書きたいのですが
エラーになります
どうマクロを書くのが正しいのですか
0568デフォルトの名無しさん
垢版 |
2016/05/27(金) 23:53:06.16ID:0lBzfo5D
>>567
ここD言語のスレやで
0569デフォルトの名無しさん
垢版 |
2016/05/28(土) 11:08:25.75ID:YkPoIoOS
現象がdmc限定っぽかったのでここで質問しました
実際のコードはメソッドにいくつかパラメータ(可変長)があって
a->b(a);
のケース以外に
a->b(a, c, d, e);
でも呼ぶケースがあるので
#define M(x, y, ...) x->y(x, ## __VA_ARGS__)
みたいに定義して
M(a, b);
するとエラーになります
条件後出しで済みませんでした
0571デフォルトの名無しさん
垢版 |
2016/05/28(土) 12:45:14.86ID:YkPoIoOS
「##」 を無くしてもエラーになるんです

#define M(x, y, ...) x->y(x, __VA_ARGS__)
M(a, b);
0574デフォルトの名無しさん
垢版 |
2016/05/28(土) 22:37:06.78ID:/97ybqru
mixin templateでopIndex(size_t I)を定義した後mixinなしでopIndex(size_t i, size_t j)を定義するとopIndex(size_t I)が無効になりますが、これは何が起こっているのでしょうか?
0576デフォルトの名無しさん
垢版 |
2016/05/29(日) 09:19:07.17ID:xui0wAEZ
>>575
これって引数の型や数が違っててもオーバーライドするんですか……
0577デフォルトの名無しさん
垢版 |
2016/05/29(日) 18:01:34.33ID:TAOnosGl
575のリンク先の下のほうにあるけど、aliasでオーバーロードに含めることができます。
0578デフォルトの名無しさん
垢版 |
2016/05/29(日) 19:40:16.20ID:Ai+IvVh7
オーバーロード集合はちゃんと使えないとハマることがあるのに
説明が不十分だと思う
0579デフォルトの名無しさん
垢版 |
2016/05/31(火) 22:06:56.78ID:RGgOwYh0
FreeStandingな環境向けのD2向けRTTIの実装って有ったりするです?
0580デフォルトの名無しさん
垢版 |
2016/06/02(木) 12:17:10.24ID:kBgl6uD2
5月31日 5時10分

http://www3.nhk.or.jp/news/html/20160531/K10010540551_1605310509_1605310510_01_03.jpg

31日、火星が地球に最接近します。「スーパーマーズ」とも言われ、今回は最近10年間で最も近い距離となり、都市部でも肉眼で見ることができることから、身近な天体ショーとして気軽に楽しめそうです。

太陽系で地球の1つ外側の軌道を回る火星は、太陽の周りを687日かけて1周しながら、およそ2年2か月に1回、地球に接近しています。ただ、地球の軌道がほぼ円形なのに対して、火星の軌道がだ円になっていることから、火星と地球との距離は接近するたびに変わります。

国立天文台によりますと、火星は31日に地球に最接近し、今回はおよそ7500万キロまで近づいて、この10年間では最も近い距離になります。
火星の明るさは1等星のおよそ15倍の「マイナス2等星」くらいになるとみられ、地球から見える火星の見かけの大きさも、ことしの最も小さいときと比べて直径がおよそ3倍になります。

(続きや関連情報はリンク先でご覧ください)
引用元:NHKニュース http://www3.nhk.or.jp/news/html/20160531/k10010540551000.html


※関連板 http://wc2014.2ch.net/galileo/ 宇宙
0582デフォルトの名無しさん
垢版 |
2016/06/02(木) 18:38:00.61ID:e6XwNe8R
配列が提供するインターフェイスを揃えたクラスを簡単に作るには何のインターフェイスを継承して何にalias thisすればいいのでしょうか?
0585デフォルトの名無しさん
垢版 |
2016/06/04(土) 22:54:34.68ID:tpsKxr6y
>>583
rangeのいずれかのインターフェイスを継承させてやりたいです……

複数種類のクラス(全て配列のインターフェイスを持っている)を引数として取れる関数を定義したいんです

voidポインタなんて久々に見ました
0586デフォルトの名無しさん
垢版 |
2016/06/04(土) 22:57:19.79ID:/ZaYqJqz
std.mathとstd.complexをimportしたらexpiが競合した……
まさか毎回どっちのを使うか指定しないといけないのか?
0588デフォルトの名無しさん
垢版 |
2016/06/05(日) 11:27:16.05ID:NUUYuMig
インターフェイスAとBがあって、関数fはインターフェイスAとBの両方を継承したクラスを引数に取る
こんな関数fの引数の記述方法はありますか?
0590デフォルトの名無しさん
垢版 |
2016/06/06(月) 18:47:18.37ID:Ed/7rB97
>>589
なるほどtemplate+ifでやればいいのですか
こんなに汎用性のあるものとは知りませんでした
ありがとうございます!



D使いもWindowsユーザーの方がやっぱり多いんだろか……
0591デフォルトの名無しさん
垢版 |
2016/06/07(火) 11:54:47.42ID:Fo09osKo
dmcの質問なんですけど、
wchar_t *hoge = L"あ";
としてファイルを UTF-8 で保存&コンパイルして実行したとき、
hoge の中の値は \u3042 を期待していたのですが、
なぜか \xe3\x81\x82 になるみたいなのですが、
なぜでしょうか?
0592デフォルトの名無しさん
垢版 |
2016/06/07(火) 13:35:54.18ID:dYQbvyOv
入力がUTF-8と思われてないんじゃね
Windowsなら普通はSJISかLatin-1かが仮定されてるはずだから、オプションを付ける必要があると思う
dmcのことは知らん
0593デフォルトの名無しさん
垢版 |
2016/06/07(火) 14:58:01.24ID:wTM17UsZ
core.simdのfloat4って、要素を移動させるのにシフト演算って使えないでしょうか?
例えば[1.0, 2.0, 3.0, 4.0]のベクトルを[2.0, 3.0, 4.0, 4.0]にしたいです。
0594デフォルトの名無しさん
垢版 |
2016/06/08(水) 07:59:41.76ID:51dlGdh/
iotaからの一連の流れで好きな配列つくれるのホント便利だわ
0597デフォルトの名無しさん
垢版 |
2016/06/09(木) 20:51:27.58ID:jEie4NkL
>>595
もしかしてそのままシフト演算子が使えたりします?
http://www.kmonos.net/alang/d/simd.html
ここに書いてないので、単純にそのままできるとは思いませんでした。

で、試そうと思ったらError: undefined identifier 'float4'というエラーが。
core.simdはimportしてるんですけど、なぜでしょう?
0598デフォルトの名無しさん
垢版 |
2016/06/09(木) 21:09:40.20ID:4WAQK3bH
>>583
castは型のキャストって意味?

もしそうなら意図が伝わってなくて申し訳ない。
Freestandingな環境だとlibc.soはもちろん存在しないし
動的リンクなんて仕組みもないので
既存のdruntimeは使えないって思い込んでるんだけど
(合ってる?もしかして、この辺りで勘違いしてる?)

最低限、そういう環境で構造体は使えるようにObject.TypeInfo_Structクラスが
実装されてるもの無いのかな・・・と。
dmd ver2.071.0でObjectクラスを自作するとErrorクラスの実装でコケるので
既存で最小限(RTTIのみ?)の機能を持つライブラリがあればそれを使いたいなと言うことで。
0599デフォルトの名無しさん
垢版 |
2016/06/11(土) 08:53:33.73ID:CU/y+sw+
std.rangeに入ってるRandomAccessFinitを継承してクラスを作ったら、メンバの配列にalias thisしてもなお実装すべきものがいっぱい残ってるんですが、
これは全て自分で一つ一つ書いていくのですか?

もしくは配列と同じ操作を提供するインターフェイスを作るにはどうすれば楽でしょうか?
0600デフォルトの名無しさん
垢版 |
2016/06/11(土) 09:15:16.03ID:sZRxwhEp
あそこの一連のインターフェイスは「こんなん作ってみたんだけど〜」程度のもので
ほとんど使われてない

構造体テンプレートにしてコンパイルエラーが出ない程度に既定プロパティを補うのが主流
そのやり方なら alias this の転送でほとんど足りるはず
ただしどのプロパティを再定義すべきかはインターフェイスを見るのがいい
0601デフォルトの名無しさん
垢版 |
2016/06/11(土) 09:41:32.26ID:j5Azp1YN
>>600
ええっとすみません。間違っていたら申し訳ないのですが、もしかしてinterfaceとclassを使うよりstructを使うのが主流なのですか?
0602デフォルトの名無しさん
垢版 |
2016/06/11(土) 10:36:32.51ID:sZRxwhEp
D言語のファンはオーバーヘッドとかGCとか嫌う声が大きい
実際のところ GC の実装がチープでそれほどあてにならないし

構造体とメタプログラミング乱舞で読みにくいライブラリが人気

でもインターフェイスでやりたければやればいいのよ
>>599 の 大半のメソッドは1行関数で済むはず
双方向とか明らかにいらなそうなのを省くなら std.typecons.WhiteHole が使えるかも
0603デフォルトの名無しさん
垢版 |
2016/06/11(土) 11:30:53.78ID:awsUhPf2
>>602
Whiteholeは知らなかったし参考になります。
人気のライブラリとかってどこを見ればわかるんでしょうか?
0605デフォルトの名無しさん
垢版 |
2016/06/13(月) 05:06:45.55ID:PElmNHhw
>>604
あ、すみません。人気のライブラリって標準ライブラリ中でも人気な奴という意味からと思ってました。
そういうことでしたか。ありがとうございます。

ところで、ひとつ聞きたいのですが、dではpureやimmutableが使えますが、これらを使うと実際どの程度最適化されるのでしょうか?
0606デフォルトの名無しさん
垢版 |
2016/06/13(月) 15:35:28.75ID:iihvfQlB
InterfaceにopBinaryなどのテンプレート関数を持たせるにはどうするのですか?
0607デフォルトの名無しさん
垢版 |
2016/06/13(月) 16:12:58.29ID:+zMNrpMB
すいません
>>606
これ自己解決しました
finalにすれば良いのですね
0608デフォルトの名無しさん
垢版 |
2016/06/14(火) 14:11:58.45ID:JvVSF706
GCの性能は連想配列とかクロージャとかクラスの性能に直結するので、
「できるだけGCが動かないように」じゃない方向に進んでGC性能うpしてほしいな・・・
0612デフォルトの名無しさん
垢版 |
2016/06/25(土) 11:45:41.24ID:M9L0G4Rl
Dって多重代入なかったっけ?
0614デフォルトの名無しさん
垢版 |
2016/06/25(土) 22:16:23.10ID:hxA5cJiF
残念
0615デフォルトの名無しさん
垢版 |
2016/06/26(日) 11:50:32.74ID:YRduG3pc
速い行列演算したいんだけどIntel mklのblasを読み込む方法がよくわからん……

あとScidってなんか開発止まってるっぽいけどどうなんだろ?
0616デフォルトの名無しさん
垢版 |
2016/06/26(日) 12:08:12.61ID:Hr+drjlN
ネイティブも吐けるJuliaと比べて
どっちが速いん?
どっちが書きやすいん?
0617デフォルトの名無しさん
垢版 |
2016/06/26(日) 13:03:10.20ID:0+Or/a+e
C系に慣れてればこっちが書きやすい

どっちが速いかは用途によるんじゃないの

ベンチマーク取った!→チューニングが足りん!
てのがいつもの流れ
0618デフォルトの名無しさん
垢版 |
2016/06/26(日) 14:45:48.76ID:Hr+drjlN
なるほどthx!
0619デフォルトの名無しさん
垢版 |
2016/06/28(火) 14:04:24.39ID:MNOhqMou
ってかDで線形代数する時のスタンダードってなんだ?
0621デフォルトの名無しさん
垢版 |
2016/06/28(火) 21:33:02.21ID:NXkyNPDs
Scidもdepricated放置されてるし科学方面弱いな
0622デフォルトの名無しさん
垢版 |
2016/06/29(水) 20:56:03.25ID:6Q9/xyGV
std.experimental.ndsliceはどうなんだろう
experimentalだし俺は使ってないからわからんけど
0623デフォルトの名無しさん
垢版 |
2016/06/29(水) 21:52:28.61ID:AXw9t+Ft
ndsliceは行列演算ついてなかったはず多分
0624デフォルトの名無しさん
垢版 |
2016/06/29(水) 22:24:24.36ID:9iO2eMNn
多分ね
0626デフォルトの名無しさん
垢版 |
2016/07/06(水) 11:02:58.90ID:X105+0ra
import std.stdio;
// 例えばこういう interface に対して、
interface Iinc{
final int opUnary(string OP : "++")(){ return opInc; }
int opInc();
}
// こんな mixin template 使う場合に、
mixin template incImpl(alias target){
int opInc(){ return ++target; }
}

class A : Iinc {
int a;
// ↓これはまあいいとして、
mixin incImpl!a;
}

class B : A {
int b;
// ↓ ここに override って書いて動くってはじめて知りました。
override mixin incImpl!b;
}

void main(){
Iinc c = new B;
++c;
(cast(A)c).a.writeln;
(cast(B)c).b.writeln;
}
0627デフォルトの名無しさん
垢版 |
2016/07/08(金) 07:42:04.17ID:0UOH05eF
テンプレート制約で複素数とか、複素数または実数にヒットさせるにはどうすりゃええんや……
組み込み複素数は__traitで簡単にヒットさせれるけど
0628デフォルトの名無しさん
垢版 |
2016/07/08(金) 22:01:04.69ID:7n1yPXzP
>>627 こう?
is(T == Complex!U, U) // T が std.complex.Complex の場合に true
std.traits.isNumeric!T // T が組み込みの数値型の場合に true
0629デフォルトの名無しさん
垢版 |
2016/07/09(土) 22:27:59.54ID:lSFNvjJ5
>>628
こんなis の使い方あったのか
勉強不足でしたすいませんありがとうございます
0630デフォルトの名無しさん
垢版 |
2016/07/10(日) 00:27:46.10ID:PefByr9S
やべえndsliceのライブラリstatic if多すぎて何が起こってるのか全然わかんねえ
0631デフォルトの名無しさん
垢版 |
2016/07/16(土) 14:39:39.16ID:9Y22Kipm
Julia(女) に浮気中
0632デフォルトの名無しさん
垢版 |
2016/07/18(月) 09:14:41.70ID:V9a/Rv5f
Juliaは線形代数得意だもんな
0633デフォルトの名無しさん
垢版 |
2016/07/19(火) 16:01:58.15ID:U82S7i4O
1、dub.exeを実行すると、コマンドプロンプトが一瞬立ち上げってすぐに消えます。
2、コマンドプロンプトからdub init
0634デフォルトの名無しさん
垢版 |
2016/07/19(火) 16:02:38.07ID:U82S7i4O
1、dub.exeを実行すると、コマンドプロンプトが一瞬立ち上げってすぐに消えます。
2、コマンドプロンプトからdub init"プロジェクト名"でプロジェクト制作すると、
  プロジェクト名のフォルダーが制作され、フォルダー内には、以下の階層ができる
   1./source/
   2./source/app.d
3、ここで、"dub.jsonを記述する"とありますが、そのファイルが何処にも有りません。
  
dubの設定及び使用方法教えてもらえませんか。
Win10、dmd.2.071.1.windowsです。よろしくお願いします。
0635デフォルトの名無しさん
垢版 |
2016/07/19(火) 17:26:50.31ID:Ez5hwRqa
実行するとコマンドプロンプトが一瞬立ち上がってすぐに消えるのって
dub.exeをエクスプローラからダブルクリックした時とかの挙動じゃね?

ちゃんとコマンドプロンプトからdub init
0637デフォルトの名無しさん
垢版 |
2016/07/19(火) 17:45:43.54ID:o21q4Wh2
まず、Windowsのロゴがあるキー( 田 )を押しながら、Rを押してください。「ファイル名を指定して実行」ウィンドウが開きます。
次に、cmdを入力して、Enterを押してください。
0638デフォルトの名無しさん
垢版 |
2016/07/19(火) 19:18:09.42ID:3sf6xm4M
>>633 が一瞬書き込んですぐに消えました
0639633
垢版 |
2016/07/19(火) 19:38:28.66ID:U82S7i4O
1、コマンドプロンプトからdub init"プロジェクト名"Enter
2、Package recipe format (sdl/json) [json]:このようになり、
  Package recipe format (sdl/json) [json]:json
                       ↑これ入力
3、Enterキー連打していくと、
  Name [test]:
  Description [A minimal D application.]:
  Author name [user]:
  License [proprietary]:
  Copyright string [Copyright ツゥ 2016, user]:
  Add dependency (leave empty to skip) []:
  Successfully created an empty project in 'C:\Users\user\test'.
  Package sucessfully created in test
  ↑このようになり、プロジェクト名のフォルダー内に"dub.json"が制作されました。
4、しかしながら、"dub.json"に"dependencies"が無く、ぼちぼち格闘中です。
  プログラム歴0の初心者には敷居が高いですね^^;
0640633
垢版 |
2016/07/19(火) 19:44:14.42ID:U82S7i4O
↑これ入力←この位置が少しずれていますので、書き直しました。
Package recipe format (sdl/json) [json]:json ←これ入力
0641デフォルトの名無しさん
垢版 |
2016/07/19(火) 19:58:45.99ID:fscdSyYa
いやいやいや プログラム歴0の初心者が dub init 使うってどんな状況よ
最初の一歩から間違ってるとしか
0642デフォルトの名無しさん
垢版 |
2016/07/19(火) 20:05:03.34ID:fscdSyYa
あれ、今は普通のアプリ開発でもビルドツールに dub 使うんだっけ?
やったことないな
0643デフォルトの名無しさん
垢版 |
2016/07/19(火) 20:20:26.23ID:555Vvc50
たしかにD言語ってコマンドラインの文化に慣れてないと厳しいな。ってか大体の言語がそうだが

dependencyは最初はdub.jsonに書いてないけど、手入力したら認識してくれるから、>>636を参考に自分で手入力するといいよ
コマンドラインの文化に慣れてないと違和感感じるかも知れないけど、この手の設定ファイルは最初は何も書かれてないから項目を自分で書いていくのが定石

ってかdubのライブラリ使わないならdependencies 書かなくていいから最初はdependencies 書かなくていいよ
0644633
垢版 |
2016/07/19(火) 21:06:11.43ID:U82S7i4O
>>641
  某イクサゲームをやっていまして、10万円金くじ引いても天なるものが1枚しかでなくてwww
  自分でゲーム作ったほうがいいんじゃね!っと思い立ったのが吉日でして。
>>643
  ゲーム用のライブライ追加してぼちぼちやってみようかと思ったのですが、
  ズッコケすぎて全然前に進みません。^^;
  dmdダウンロードして4日目くらいですがw
  ちなみに、"プログラミング言語D"とゲーム開発関係書籍2冊ほど手元に置いてますけど
  最初の一歩目で迷子になってます、、、。
0645633
垢版 |
2016/07/19(火) 22:42:44.72ID:U82S7i4O
1、"dub.json"に下記を追記しました。
   
   "dependencies": { "dgame": "~>0.6.4" }

2、C:\Users\user>dub build Enterキー

   Neither a package description file, nor source/app.d was found in
   
   ↑このようになります。
   app.dに何のために、どんなソースを書くのかわかりません><
   よろしくお願いします。
0646デフォルトの名無しさん
垢版 |
2016/07/20(水) 07:03:39.83ID:/Ye1vbG1
dlangerの人口減らしたくないし取っ掛かりの部分だけナビゲートしちゃる

dub initによって作られたsource/app.dには
コンソールに文字列を出力するコードが最初から書かれてるから
そっから自分で動かしたいように書き換えるのが通例

dependenciesは https://code.dlang.org/ のリストにあるパッケージが必要な時に書く
これで何言ってんだか分かんなかったらdub.jsonは弄らないで最初のままでおけ
てか dub(ビルドツール)の前にdmd(コンパイラ)の使い方を覚えるほうが先だね

そもそも言語仕様も標準ライブラリ(phobos)も知らん段階だろうから

main.dを新規作成してエディタで開いて
std.stdioをimportしてmain関数内でwriteln関数を使って
HelloWorldをコンソールに出力するコードをmain.dに記述して
コマンド
0647デフォルトの名無しさん
垢版 |
2016/07/20(水) 07:06:09.24ID:/Ye1vbG1
レス本文にダブルクォーテーションが入ると文章途切れるのか

>>646の途切れた部分)
main.dを新規作成してエディタで開いて
std.stdioをimportしてmain関数内でwriteln関数を使って
HelloWorldをコンソールに出力するコードをmain.dに記述して
コマンド dmd main.d でコンパイルするとこからはじめようか

新しいプログラミング言語に触れるなら↑が本来の最初のステップになる
0648633
垢版 |
2016/07/20(水) 09:29:26.81ID:Oo0kZypL
>>646
助言ありがとうございます。
HelloWorldの門は一番最初にくぐりました。
レス文見てたら、dubの使い方を勘違いしてたみたいでした。
最初は任意のライブラリを勝手にダウンロードし、dmdにサインイン。 
その後自由にライブラリが使えるものだと思っていました。
違う方法でライブラリが使える方法を探ってみたいと思います。
レスをくれた皆さんありがとうございました。
0649デフォルトの名無しさん
垢版 |
2016/07/20(水) 13:49:05.59ID:S0wpPWZM
test "hoge D" hage
0650デフォルトの名無しさん
垢版 |
2016/07/21(木) 02:31:14.62ID:+htOPDkp
「D言語は2番目に覚えるべき言語」とか言うけど、「ゲーム作りたい」という動機だと、もっと、かなり順位下がる気がする。
ABA GamesさんからD言語入った身で言えたギリじゃないけど。
短い期間で出力を得たいならJavaScript(かそのトランスパイラ)おすすめ。
コントローラからの入力がまだ標準化されてないかもしれないけど。
というか俺が思ってる某IXAゲームもクライアントサイドはJS+WebGLなのでは?
7〜8年前だったらActionScript推したけどなー。
あ、やる気に冷や水かけるつもりじゃないですよ。言語の習得は平行してできるので、どっちもやるとイイよ!
0651デフォルトの名無しさん
垢版 |
2016/07/21(木) 18:46:26.48ID:Vj/xPVWN
いまならUnityじゃね
0652デフォルトの名無しさん
垢版 |
2016/07/25(月) 00:17:46.47ID:XTQ4vcgC
D言語にも深層学習用のライブラリがあればなあ
0653デフォルトの名無しさん
垢版 |
2016/08/05(金) 01:29:38.10ID:yG1Q1Zfx
DMDScriptってこの先生きのこれるの?
例えばreadme.txtのMain Goalのリストにも載ってない64bit対応とかする目あるのだろうか?
0655デフォルトの名無しさん
垢版 |
2016/08/16(火) 18:52:17.71ID:D9Aqh5ca
Releaseビルドで作られたexeファイルには、開発環境由来の個人情報は含まれますか?
0656デフォルトの名無しさん
垢版 |
2016/08/16(火) 23:45:49.73ID:aXbZPgJ2
hello, worldをダンプしてみたけどPhobosのシンボルが読めるからまあ
D言語が使われているであろうこととか>>655がマゾ豚であることとかがわかる。
幼女>犯罪に使おうとかキモいこと考えてないでさっさとDちゃんの抱き枕相手に腰振る練習してなさいよ!このブタッ!
0657デフォルトの名無しさん
垢版 |
2016/08/17(水) 00:15:35.35ID:lwRSgBSO
>>656
犯罪なんて考えてないです><
ネットで公開したとき、特定につながる情報が入ってないか気になっただけですよ。
あと、マゾ豚でもないです><
0659デフォルトの名無しさん
垢版 |
2016/08/17(水) 19:59:59.49ID:BDOXQSJ7
My Documents以下で開発してて、デバッグ情報にあるフルパスからアカウント名が……って話だな
0661デフォルトの名無しさん
垢版 |
2016/09/12(月) 21:07:12.99ID:g/2ERTf6
templateを使ってループをunrollしたいと思ってるんですけど、うまい方法はないでしょうか?
static ifならぬstatic foreach的なものが欲しいです。
0663デフォルトの名無しさん
垢版 |
2016/09/12(月) 21:59:01.32ID:g/2ERTf6
>>662
レンジの先読みっていうのは、1ループで例えば4要素ずつ回すとかするやつですか?
saveはよくわかりませんでした。

templateでは無理なんですかね?
0664デフォルトの名無しさん
垢版 |
2016/09/13(火) 07:27:24.17ID:kzljWn49
タプルをforeachするときは静的に展開されるよ
import std.stdio;
template T(P...){ alias P T; }
alias MetaArr = T!("a", "b", "c");
void main() {
foreach (v; T!(0, 1, 1, 2)) { writeln(MetaArr[v]); }
//foreach (v; [0, 1, 1, 2]) { writeln(MetaArr[v]); } // error
}
テンプレート再帰を使って便利なやつ(iotaとか)を作るとよし。
std.metaにタプル操作テンプレート群がある
0667デフォルトの名無しさん
垢版 |
2016/09/13(火) 16:52:26.00ID:Sk3FDaZ1
>>664
なるほど、タプルを使うとstatic foreachみたいなことができるんですね。
>>665
型タプルの名称が変わってたんですね。
0670デフォルトの名無しさん
垢版 |
2016/10/08(土) 15:24:34.36ID:lyDMzk0a
質問です
C# なんかだとジェネリクスの変性を指定できて、たとえば Base <- Derived のとき List<Base> <- List<Derived> になる、つまり
List<object> a = new List<string>();
ってできたと思うんですが、こういうのって D言語だとどう書けばいいんでしょうか
opCast を使う?
0671デフォルトの名無しさん
垢版 |
2016/10/10(月) 03:02:58.71ID:XeSbllOL
>>670
テンプレートの範囲を拡大させることで実現する。
しばしばmain直下まで汚染されるが気にしない。

import std.container, std.traits;
void foo(A)(A a) if (is(A : Array!B, B : long)){}
void bar(A)(A a) if (isInstanceOf!(Array, A)){}
void main()
{
auto a = Array!int();
foo(a);
bar(a);
}
0675デフォルトの名無しさん
垢版 |
2016/10/12(水) 13:44:19.71ID:kYS44Rbd
ついでに拾いもの

>ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ

cmd で UTF-8 使える方法 (chcp 65001 について)

http://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty
http://dogmap.jp/2011/11/15/mintty/
mintty
http://tanakh.jp/posts/2011-11-15-windows-terminal.html


色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/
0676デフォルトの名無しさん
垢版 |
2016/10/12(水) 13:46:35.25ID:CGbCriuU
どうみてもスレチ
っつーか板違い
0678デフォルトの名無しさん
垢版 |
2016/10/13(木) 16:55:38.03ID:L+oZkHrx
そういや最近ハマったんだけど
auto x = (int a) => a;
auto y = (int a) => { return a; };
この二つって型が違うのね
初めて知ったわい
0679デフォルトの名無しさん
垢版 |
2016/10/13(木) 18:51:22.75ID:DlV3jQX5
>>678
2つの記法を混同してたのかな
(int a)=>a に対応するのは (int a){return a;}
(int a)=>{return a;} は (int a){return {return a;};}
0684デフォルトの名無しさん
垢版 |
2016/11/01(火) 23:37:35.22ID:wR5ZjNoq
>>683 まじかよ朗報
---
std.datetime.benchmark!func(10_000)[0].to!Duration.writeln;
---
>136 ホシs and 8 hnsecs
∴Windowsはクソ
0685デフォルトの名無しさん
垢版 |
2016/11/01(火) 23:54:18.23ID:872/MYpu
μ(マイクロ)がマルチバイトになってて化けるやつだな
俺も前から変えてほしいと思ってるけど
0686デフォルトの名無しさん
垢版 |
2016/12/03(土) 01:09:21.23ID:999B/Ieu
クリスマスプレゼントにこういうのが欲しい。
struct FatStruct
{
Object obj;
void opAssign(headconst ref FatStruct rvalue) { obj = rvalue.obj; }
}
1. refで修飾された引数専用のオプション修飾子で、
2. mutableな変数にcastなしで代入可能で、
3. 「参照とってるけど、このメソッド内では変更を加えないよ。」ということをcallerに伝える。
ものクレクレ
0687デフォルトの名無しさん
垢版 |
2016/12/04(日) 12:43:36.67ID:ijuOYWzP
なんかRustがやけに元気だけど、D言語って消えていくの?
0688デフォルトの名無しさん
垢版 |
2016/12/04(日) 15:19:42.11ID:Kly2fP6x
線形代数充実したら使ってやってもいい
0692デフォルトの名無しさん
垢版 |
2016/12/04(日) 21:16:16.33ID:0HU6vOnR
mir…
0697デフォルトの名無しさん
垢版 |
2017/01/24(火) 08:07:50.10ID:tjYeiy24
リリースサイクルが合わないから dub repo に移すと言ってた
dub もほぼ公式だから問題あるまい
0698デフォルトの名無しさん
垢版 |
2017/01/24(火) 10:09:07.65ID:9yrS8iWN
にしてもなあ……
0699デフォルトの名無しさん
垢版 |
2017/01/25(水) 01:36:00.78ID:NBMLgLD+
もうちょっとdubで成熟させてからexperimentalにぶち込んでもよかったよね、ってことだと思ってる
0700デフォルトの名無しさん
垢版 |
2017/01/30(月) 12:11:48.76ID:zgepKMXO
メタプログラミングが必要な複雑さで高速なバイナリが欲しくてベクトルの計算が必要ならDって良い感じな気がしてきた
0701デフォルトの名無しさん
垢版 |
2017/02/04(土) 09:23:54.50ID:cCtqcbdk
>>684
いつの間にか直ってる!? と喜びかけたが
std.datetime と core.time で不揃いというタチの悪い結果ががが
0702デフォルトの名無しさん
垢版 |
2017/04/11(火) 10:21:14.88ID:DoKLA85e
2.074.0

それと入れ違いに DMD バックエンドの権利問題が解決して
オープンソースになった
0703デフォルトの名無しさん
垢版 |
2017/04/11(火) 19:01:24.54ID:+8we66Ry
おめでとう
0704デフォルトの名無しさん
垢版 |
2017/04/12(水) 13:30:03.81ID:1yYBiMsB
やったな
これでやりたい放題だ
0706デフォルトの名無しさん
垢版 |
2017/04/27(木) 13:39:04.16ID:3SqGR9rs
ウェブスクレイピングがしたいんですけど、おすすめのライブラリはありますか?
0707デフォルトの名無しさん
垢版 |
2017/04/27(木) 13:47:16.44ID:R6dFUrFW
curl
0709デフォルトの名無しさん
垢版 |
2017/04/27(木) 18:53:26.24ID:tG7qJtaK
もしかしてVisualDのプロジェクトはリソースエディタ使えない感じ?
0710デフォルトの名無しさん
垢版 |
2017/05/02(火) 22:43:12.96ID:FexDPfOP
クラスのメンバ変数をファイルに保存する一番手軽な方法は何になりますか?
0711710
垢版 |
2017/05/02(火) 22:49:15.71ID:FexDPfOP
自己解決。
std.csvとかstd.jsonあたりか。
0712710
垢版 |
2017/05/03(水) 00:01:58.26ID:V/UCIUww
しかしどちらも手軽ではなかったようだ。
0713デフォルトの名無しさん
垢版 |
2017/06/03(土) 19:51:28.68ID:+wJRfmD9
std.xmlはいつまで非推奨なんだよ
作り直すならはやくやれ
kxmlいつのまにか通らなくなるし
0714デフォルトの名無しさん
垢版 |
2017/06/04(日) 05:43:43.21ID:KL8jQ9cr
xmlはガチで実装しようとすると仕様のデカさ半端じゃないしな
周辺仕様(xsd,xslt,xpathくらいはほしいな)までやる気なのかもしれん。そうなったらかなり使えるはずだな!
0715デフォルトの名無しさん
垢版 |
2017/06/13(火) 19:44:03.10ID:XqHeJ85F
std.net.curlを使ってサーバーと通信しています。
サーバー側は、エラーが発生した場合、エラーの詳細がJSONで返信される仕様なのですが、
std.net.curl.CurlException@[中略]\phobos\std\net\curl.d(1014): HTTP request returned status code 404 (NOT_FOUND)
という例外が発生してしまい、JSONが受け取れません。
どうすればいいのでしょうか?
0717デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:32:37.88ID:0OdP20aK
thx!
0719デフォルトの名無しさん
垢版 |
2017/06/26(月) 11:17:46.96ID:H+izVTcm
GDCのことか
0722デフォルトの名無しさん
垢版 |
2017/06/30(金) 19:38:06.35ID:ZAjr7zY1
std.json.JSONValueの値がたまたま整数(1.0のことを1と表記されてた)場合にfloatingを呼び出すと例外が発生するんですけど、
何か回避方法はありますか?
0723722
垢版 |
2017/06/30(金) 19:39:19.23ID:ZAjr7zY1
すぐ気が付きましたけど、stringにしてからconvでいいか・・・
0725デフォルトの名無しさん
垢版 |
2017/07/11(火) 20:58:21.48ID:aZj0SKJK
>>724
総当たりクラッキング
0726デフォルトの名無しさん
垢版 |
2017/08/06(日) 21:34:49.71ID:SpPX6zkH
VSCodeにcode-dじゃないほうのD Language拡張入れてみたけど補完とかもろもろが効かない・・・
誰か使っている人いたら助けて
settings.jsonは以下の通りです
{
"d.dub": "/usr/local/bin/dub",
"d.tools.dcd.client": "/usr/local/bin/dcd-client",
"d.tools.dcd.server": "/usr/local/bin/dcd-server",
"d.tools.dfmt": "/usr/local/bin/dfmt",
"d.tools.dscanner": "/usr/local/bin/dscanner",
"d.tools.dfix": "/usr/local/bin/dfix"
}
0727デフォルトの名無しさん
垢版 |
2017/08/29(火) 21:52:17.20ID:N4IWVrAv
2.076.0 beta で static foreach が試せるぞい
0729デフォルトの名無しさん
垢版 |
2017/09/06(水) 13:06:00.40ID:ssAzmuiR
もう、Dオワコン?
0733デフォルトの名無しさん
垢版 |
2017/09/07(木) 16:06:46.74ID:TZTdPVsA
ちょっとしたexe作るにはDが楽で

Pythonも楽だけどexe化するとデカイし
0739デフォルトの名無しさん
垢版 |
2017/09/09(土) 06:57:36.64ID:0rsRu7Ke
ちょっとしたexeならC#じゃね?
monoは触ったことないからLinuxでの事情は知らんけど、Winに限ればあれほど楽なのはない
0741デフォルトの名無しさん
垢版 |
2017/09/09(土) 11:40:51.62ID:kUd/qIXg
exerb
0742デフォルトの名無しさん
垢版 |
2017/09/09(土) 18:11:01.86ID:lkyt770O
ちょっとしたexeならVB6が楽です
0745デフォルトの名無しさん
垢版 |
2017/09/10(日) 01:30:18.91ID:W8hQWR/l
いやDに興味ないのが冷やかしてるだけ
0746デフォルトの名無しさん
垢版 |
2017/09/10(日) 02:08:35.60ID:mLTl9fJv
ちょっとしたexeで.NETとかないわーと思ったけど、GUIならまあしょうがないのか
人によってちょっとしたexeの範囲も違うんだな
0748デフォルトの名無しさん
垢版 |
2017/09/10(日) 19:24:57.70ID:mFLa2LdI
VisualD残念過ぎるな
エクスプローラからのフォルダやファイルの管理がゴミすぎる
見た目通りにフォルダが出来てないし、どこにファイルが作られるのかもわからんのがやばい。
まずはこういう基本的なことからまともに作ってけよ。
0749733
垢版 |
2017/09/11(月) 09:24:09.55ID:8q7HHnzx
ちょっとしたってのは
メモ帳やviで書けるレベルの100行にも満たないって
レベルだったんだけど・・・

IDEを使うレベルは
ちょっとしたじゃないイメージ
0751デフォルトの名無しさん
垢版 |
2017/09/11(月) 14:36:04.39ID:1yyZGwgJ
基本的にWindowsユーザーは作業用VisualStudioを常時開いてるからな。
ちょっとした作業は適当にC#で書いてそのままVisualStudioから実行してる。
実際にはexeを作ってすらいない。スクリプトを書いてるような感覚で使てる。
0752デフォルトの名無しさん
垢版 |
2017/09/11(月) 14:37:29.12ID:TGeCtRBC
>>751
前提がおかしいw
0753デフォルトの名無しさん
垢版 |
2017/09/12(火) 06:45:11.40ID:LkwWIzb9
いや結構そういう感じだわ俺
実行するとたまに結果が微妙に違うなと思ったら、普段VS上からデバッグバージョン実行してて、リリース版上書きするの忘れてるだけだったり
0756デフォルトの名無しさん
垢版 |
2017/09/16(土) 11:49:32.20ID:d6C/wUJg
質問はここでいいですか?

Windows で DLL を作ろうとしています。
https://wiki.dlang.org/Win32_DLLs_in_D
を見てやってみましたが、コンパイルできず、LNK1561 になります。

dmd -m32mscoff -ofx86\test.dll dllmain.d test.def
dmd -m64 -ofx64\test.dll dllmain.d test.def

リンカが MS のものを使っているためこのエラーが出ると思うのですが、
エントリーポイントをどのように指定すればよいのかわかりません。
わかる方ご教示いただけませんでしょうか。

DMD のバージョンは 2.076.0、VS のバージョンは 15.3.4 です。
0758756
垢版 |
2017/09/16(土) 15:35:04.87ID:d6C/wUJg
defなしでも同じ結果になりました:

LINK : fatal error LNK1561: エントリー ポイントを定義しなければなりません。
0759デフォルトの名無しさん
垢版 |
2017/09/16(土) 16:45:47.46ID:Gd+302E1
-shared
0760756
垢版 |
2017/09/16(土) 18:38:55.20ID:d6C/wUJg
-shared で 32bit、64bit とも作成できました。
ありがとうございました。
0762デフォルトの名無しさん
垢版 |
2017/09/18(月) 11:04:32.91ID:ej1qDtIX
馬鹿には無理
0763デフォルトの名無しさん
垢版 |
2017/09/18(月) 12:13:58.30ID:XoyPNJhq
dmd2\samples\d\mydll\build.bat
には入ってなかった(戦慄)

-shared って割と最近の変更だしな
0764デフォルトの名無しさん
垢版 |
2017/09/18(月) 20:04:52.92ID:O+NhZEIY
これでGUIアプリ作るならウィジェットはナニを使えば良いんだー
0768デフォルトの名無しさん
垢版 |
2017/09/19(火) 12:37:25.75ID:NEmvstRb
ファイル、フォルダの命名規則がクソすぎる
別に無視してもかまわんだろうけど
0771デフォルトの名無しさん
垢版 |
2017/09/29(金) 03:59:12.25ID:4agIphwV
private this()
だけでコンパイル通るのが糞だわ。
{}が無いのに。

ライブラリ作った時点では何もないのに
リンク時にエラーとして出てくるとかやめれ。
0772デフォルトの名無しさん
垢版 |
2017/09/29(金) 21:47:52.84ID:sJSvcHfp
単体テスト書いてそれを通すまでがライブラリ作成ですよ
0774デフォルトの名無しさん
垢版 |
2017/10/01(日) 13:05:24.17ID:Uy9r/fJ2
連想配列に環境依存のバグがありそう
使ってるクソライブラリが端末によってエラーになるし糞かよ
0775デフォルトの名無しさん
垢版 |
2017/10/01(日) 15:25:00.88ID:dZZybuoZ
おま環境ω
0777デフォルトの名無しさん
垢版 |
2017/10/03(火) 09:12:29.54ID:nH2BZkoP
gjgj
0778デフォルトの名無しさん
垢版 |
2017/11/05(日) 23:15:29.42ID:Of1Ymqlf
2.077.0

テンプレート使うと修飾名がありえないほど長くなるという昔からの問題が改善された
ライブラリとか一通り注意すべし
0780デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:47:25.08ID:TxT/hKw1
あれはGC使いたくない&ランタイムのデカさが気にならない巨大アプリ特化みたいなところある
Dの対抗はgoとかnim
0781デフォルトの名無しさん
垢版 |
2017/11/06(月) 21:26:53.62ID:PRkrHOts
システムプログラミング言語なのでアプリ特化ってことは無いよ
下層も上層も両方いける
0782デフォルトの名無しさん
垢版 |
2017/11/06(月) 22:26:18.14ID:FBpfr6Qh
スレ違いかも知れないが、D言語初心者だけど質問しても良い?
0785デフォルトの名無しさん
垢版 |
2017/11/06(月) 22:57:58.79ID:FBpfr6Qh
いきなり質問して荒れたらやだし....
0787デフォルトの名無しさん
垢版 |
2017/11/07(火) 03:59:26.23ID:zRpLERto
D言語の質問はここでしるな
0788デフォルトの名無しさん
垢版 |
2017/11/07(火) 04:59:58.50ID:uzn/nrN5
>>781
rustは巨大なランタイムとツールチェインがネックになって
ガチのシステムプログラミングには使えないと踏んでる
あと小物にも向かない。lsやechoみたいなコマンドが何MBもあったら嫌だろう
0792デフォルトの名無しさん
垢版 |
2017/11/07(火) 22:01:57.06ID:ige9lhQ8
実際のとこは知らんがしばらくRust追っててランタイムが巨大とか初めて聞いたわ
試しにいくつかreleaseでビルドしてみたが大量のcrate使ってるやつは10MB超えてて
少なめの奴は300KBくらいだった
まあそりゃライブラリコミコミなら大きくなるわな
0794デフォルトの名無しさん
垢版 |
2017/11/08(水) 06:55:17.36ID:ZWKv78KM
>>792
C#をdisるなω
0797デフォルトの名無しさん
垢版 |
2017/12/08(金) 21:55:28.01ID:TcYdv7Hd
.obj 互換オプションあればなー
0798デフォルトの名無しさん
垢版 |
2017/12/08(金) 22:08:41.01ID:tFBuW21G
標準ライブラリの関数の名前の付け方がJavaっぽくて嫌なところ以外は好きだよDくん
0799デフォルトの名無しさん
垢版 |
2017/12/09(土) 12:21:32.98ID:nuTX+Pqx
初期に仕様リセットし過ぎて愛想尽かされた
0804デフォルトの名無しさん
垢版 |
2018/03/04(日) 17:14:17.99ID:DD94zM8O
>>802
Tour のインストールしましょー!のページで 2.074 にリンクされてるのを見てしまった
(ノ∀`)アチャー
0806デフォルトの名無しさん
垢版 |
2018/03/08(木) 04:35:22.50ID:0VTxSBk2
始まりかけのときに壮絶な自爆
0808デフォルトの名無しさん
垢版 |
2018/03/10(土) 05:15:45.70ID:/6tM+FAO
個人的に00年代前半の頃はC/C++後継として期待してたんだけどな
なにやっとんねんと言いたい
勿体無い
0809デフォルトの名無しさん
垢版 |
2018/03/10(土) 06:22:25.09ID:L0iyZELB
>>808
ほんそれ
0811デフォルトの名無しさん
垢版 |
2018/03/10(土) 12:35:03.41ID:TTti/WSS
また増やすんか
0812デフォルトの名無しさん
垢版 |
2018/03/10(土) 13:38:23.67ID:kYhzAC0A
Rustやったことないけど
どうせ綺麗なメタプログラミングパズル解いてホルホルしてるだけで終わるだけの
実用的じゃない言語だと思う。
Caml書いてた俺だからわかる。
0814デフォルトの名無しさん
垢版 |
2018/03/10(土) 20:28:50.44ID:pNLClb7o
C/C++の後継は完全にGoにもってかれたね
うぉるたんはどう考えてるのか知らないけど
0815デフォルトの名無しさん
垢版 |
2018/03/11(日) 03:27:33.77ID:fQarczMf
goroutineが有効な用途ならともかく
それ以外はD言語のほうが遥かにいいと思うんだけどなあ。何が命運を分けたのか
0817デフォルトの名無しさん
垢版 |
2018/03/11(日) 08:35:05.74ID:Vr9GQpPg
>>815
頻繁に変わる言語仕様も問題と言えば問題だけど
やっぱ一番はライブラリっつーか周辺やろ…
0819デフォルトの名無しさん
垢版 |
2018/03/11(日) 10:09:42.46ID:zWe+i43K
>>815
同意
0821デフォルトの名無しさん
垢版 |
2018/03/11(日) 12:13:49.32ID:8JC0BCod
Dは関数型マクロωでコンパイル時に全て決定推奨
0822デフォルトの名無しさん
垢版 |
2018/03/11(日) 12:26:01.28ID:PDfY//r3
きんたま?
0823デフォルトの名無しさん
垢版 |
2018/03/12(月) 22:18:01.25ID:pqiyCWN9
>>820
推奨ってことはない
俺はほとんどクラスしか使わないしGC上等

まあクラスの派生とか皆無だし
vtable も邪魔に思えてきたけどw
0825デフォルトの名無しさん
垢版 |
2018/03/13(火) 14:18:12.30ID:DeaEY/ek
それを言うならD言語だってC++の後継にはなんないわけで
そしてDとgoは割と被ってる。方向性は逆を向いててもターゲットとしている領域が
0826デフォルトの名無しさん
垢版 |
2018/03/13(火) 15:20:28.05ID:MHQfuTqc
きんきホーム
たまホーム
0827デフォルトの名無しさん
垢版 |
2018/03/13(火) 15:46:47.07ID:uPfPL/GN
goって他のVM使わない静的言語と何が違うんだよ。
実行速度が早いと言われているOCamlと何が違う?
0828デフォルトの名無しさん
垢版 |
2018/03/17(土) 09:22:57.34ID:dunQcKnu
Cとの競合をはっきり掲げる Zig とかいう LLVM 言語が出てきてるな
https://ziglang.org/

Cのヘッダをそのまま読み込む?とかすげーこと書いてる…
まだ情報少ないし俺は調べないけど興味ある人よろ
0829デフォルトの名無しさん
垢版 |
2018/03/17(土) 10:52:20.29ID:zK+A43YX
LLVMを吐くCで充分では?
0830デフォルトの名無しさん
垢版 |
2018/03/18(日) 11:21:51.01ID:2szVz2pj
いい言語ですね!
前に進めてください!!
(感涙)
0832デフォルトの名無しさん
垢版 |
2018/04/20(金) 14:04:35.16ID:H1yQYpwW
いつの間にやら契約プログラミングのbody使う場面でdoを使えって話になってるな
0835デフォルトの名無しさん
垢版 |
2018/04/22(日) 13:31:55.46ID:/2pIZVDm
所詮はコミュニティベースの開発だからな
GoogleやMozillaみたいな企業ベースに対抗するのはコアメンバーのモチベーションや運に依存する

そういう意味ではRubyやPythonってすげーな
0836デフォルトの名無しさん
垢版 |
2018/04/22(日) 17:38:45.67ID:tG1AxaFx
うむ
0837デフォルトの名無しさん
垢版 |
2018/04/26(木) 09:05:31.10ID:JKdk44sF
Dで作ったWindowsコンソールアプリで標準出力に文字列が流れ続けてるところに
例:while ( true ) { writeln( "hoge" ); }
クリックで文字列選択したあと右クリックすると
Access Violationで落ちる現象どうにかならんもんか

writeだろうがlogger.logだろうがprintfだろうがputsだろうが落ちる
VCのCコンソールで作ったコンソールアプリだとこんな事起きないのに

これの対策がtry-catchでErrorクラスをトラップとか馬鹿げてる
0838デフォルトの名無しさん
垢版 |
2018/04/26(木) 16:07:08.57ID:obVS20md
バッファの問題なんかね
0839デフォルトの名無しさん
垢版 |
2018/04/26(木) 18:27:38.60ID:JKdk44sF
落ちない場合もあったんで最小コードを探ってみたところ
これ↓だと>>837の操作をしても落ちなかった

import core.sys.windows.windows;
import std.stdio;

void main()
{
   SetConsoleOutputCP( CP_UTF8 );
   while ( true ) writeln( "ほげ" );
}

出力が"hoge"だとSetConsoleOutputCP呼び出しの有無に拘わらず落ちる
SetConsoleOutputCPを呼んでいない場合は出力の内容に拘わらず落ちる
SetConsoleOutputCPを呼んでいる場合は出力が"ほげ"だと落ちないが"ほげhoge"だと落ちる

どうしてそんな事になるのかワケワカメ
0840デフォルトの名無しさん
垢版 |
2018/04/27(金) 15:42:00.69ID:ash3pEtl
カルノー図を描くんだ
0842デフォルトの名無しさん
垢版 |
2018/04/29(日) 01:54:00.18ID:q/RtCgaj
>>837>>839
再現しませんでした
Windows7(32bit)
DMD32 D Compiler v2.074.1
LDC - the LLVM D compiler (1.3.0): based on DMD v2.073.2 and LLVM 3.9.1

試したコンパイルコマンド
dmd -w -m32 main.d
dmd -w -m32 -debug main.d
dmd -w -m32 -O main.d
ldc2 -w -m32 main.d
ldc2 -w -m32 -O main.d

試したコード
import std.stdio;

void main() {
while (true) {
writeln("hoge");
}
}
0844デフォルトの名無しさん
垢版 |
2018/04/29(日) 03:37:46.18ID:I3o29iby
>>842
すまん、こっちの環境はWindows10(64bit) 、DMD32 D Compiler v2.079.1 だわ
でも俺の環境だと2.074.1でコンパイルしても落ちたわ

-g -debugオプション付けて>>842と同様のコードで例の手順やって出るエラーログが以下↓

object.Error@(0): Access Violation
----------------
0x00425935 in write
0x00421A6D in fflush
0x004028A0 in @safe void std.stdio.File.LockingTextWriter.put!(char).put(char) at D:\develop\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(2788)
0x00402263 in @safe void std.stdio.writeln!(immutable(char)[]).writeln(immutable(char)[]) at D:\develop\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(3582)
0x004021EC in _Dmain at D:\library\projects\d\d_error_test\main.d(6)
0x00402C5B in D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFNlZv
0x00402C1F in scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()
0x00402B20 in _d_run_main
0x00402908 in main at D:\library\projects\d\d_error_test\main.d(7)
0x00420775 in mainCRTStartup
0x75538654 in BaseThreadInitThunk
0x774E4B17 in RtlGetAppContainerNamedObjectPath
0x774E4AE7 in RtlGetAppContainerNamedObjectPath
0845デフォルトの名無しさん
垢版 |
2018/04/29(日) 09:46:06.44ID:GU4PXxiP
少々遅くなってもいいなら
writeln() のたびに stdout.flush() してやるのが簡単

以前から終了時のバッファ排出でバグがあったけど
去年くらいに Writer 系内部処理を何度も"改善"してたと思う
0846デフォルトの名無しさん
垢版 |
2018/04/29(日) 13:12:23.84ID:I3o29iby
stdout.flush();で問題は解決しなかったけど
-m64オプション付けてコンパイルしたら落ちないようになった
WOW64を過信し過ぎてたわ
0851デフォルトの名無しさん
垢版 |
2018/05/05(土) 09:38:05.15ID:fc3S9c8B
wxD
0852デフォルトの名無しさん
垢版 |
2018/05/06(日) 08:25:54.57ID:HIB9nax/
ポトペタどころか
バージョンアップにしっかり追随して安心して使えるGUIライブラリないよ
0853デフォルトの名無しさん
垢版 |
2018/05/08(火) 03:20:35.99ID:ypr7siab
インスタンス作るまでオーバーライドしてない抽象メソッドがあってもエラーにならないってわけわからん
さっさと教えろよ
0854デフォルトの名無しさん
垢版 |
2018/05/08(火) 16:24:19.12ID:75TKeVia
使うまではエラー出ない方がいいやん
0855デフォルトの名無しさん
垢版 |
2018/05/09(水) 00:52:11.39ID:urtq8In6
-betterC が使えるようになってから出来ることが格段に増えたな
組み込み周りはもちろんのこと、DのコードからWebAssembly吐ける日が来るとは思ってなかった
0856デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:31:17.51ID:DadRmw9B
最初からやっとけばよかった
方向性を間違えていた
0857デフォルトの名無しさん
垢版 |
2018/05/10(木) 20:31:51.52ID:pG/0Qta8
D言語も大分落ち着いてきた頃合いだしそろそろ見直される時代が来てもいいのよ?
(なんか最近deleteが非推奨になったような気もするが)
0858デフォルトの名無しさん
垢版 |
2018/05/13(日) 23:12:24.94ID:l20zYg8v
競プロでD言語を使いまくってD言語を宣伝だ!
0860デフォルトの名無しさん
垢版 |
2018/05/17(木) 00:25:08.63ID:AoIdJqgi
変数への再代入禁止を意味するfinalがいつの間にか使えなくなっとるやん
コンパイラに促された通りconst付けてもnot callable using a `const` objectって怒られるし
ちゃうねん、Javascriptのconstみたいに事故防止に再代入のみを禁止したいねん

廃止要素に関してはどうも知識のアップデートが追いつかん
0861デフォルトの名無しさん
垢版 |
2018/05/17(木) 12:42:43.82ID:HY+Xmele
umu
0864860
垢版 |
2018/05/17(木) 22:42:36.00ID:AoIdJqgi
final変数がいつの間にか廃止してた問題は
scope変数への再代入がいつの間にかコンパイルエラー出るようになってたことで解決したわ
スコープ内限定で再代入禁止でスコープを抜ければ変数の寿命が来る、ってことでscope変数で要件を満たせる
0865デフォルトの名無しさん
垢版 |
2018/05/18(金) 17:47:42.29ID:0IKxFX6d
>>862
流産というか仕様変えすぎて育つ前に首切ってる感じ
0867デフォルトの名無しさん
垢版 |
2018/05/20(日) 23:02:17.61ID:qH56GQyK
aliasがいつの間にか構文変わってたのは知ってたけど
typedefもいつの間にか消えて使えなくなってるのかよ
しかも従来のやり方と比べて代替手段がクソ面倒
0868デフォルトの名無しさん
垢版 |
2018/05/20(日) 23:08:04.29ID:qH56GQyK
MDN並みに日本語ドキュメントが最新に追いついていて
現行仕様、廃止仕様がきちんと整理されていないとツライな
ちょっと離れてるだけで記憶に残ってるD言語とはまるで別言語になってる
0869デフォルトの名無しさん
垢版 |
2018/05/21(月) 10:14:37.88ID:6DKDYwaD
うむ
0870デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:08:02.45ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

KUKID
0871デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:20:31.33ID:HAh7S+Yv
change log は見やすくなってるよ
時々重要な変更がすっぽり抜けてるけどな

言語レベルの廃止も一応リスト化されてるよ
https://dlang.org/deprecate.html

今気づいたが2ヶ月毎のリリースって明言されてるな
minor release とかふざけたこと書いてるけど
0874デフォルトの名無しさん
垢版 |
2018/05/24(木) 09:58:50.53ID:fftgGS82
色々と残念になっていくな
0875デフォルトの名無しさん
垢版 |
2018/05/24(木) 19:20:19.04ID:19Fz0o1F
文句あるならチミたちがD言語開発に直接関わりなさいな
0876デフォルトの名無しさん
垢版 |
2018/05/25(金) 12:29:53.89ID:llbJVLc1
いつの間にか使えなくなってて
しかも廃止仕様リストにも載ってなきゃ
どこに消えたんだってのは普通に抱く感想だよ
0877デフォルトの名無しさん
垢版 |
2018/05/25(金) 16:14:50.43ID:XO9fqtgP
そういうの大事だよね
0880デフォルトの名無しさん
垢版 |
2018/05/26(土) 17:33:25.22ID:VmZ0B+DV
終わっていくってこういうことなんだな
0881デフォルトの名無しさん
垢版 |
2018/05/26(土) 21:43:43.26ID:Yg2bLXCl
次バージョンから来る契約構文の追加は楽しみだ

int fun(ref int a, int b)
   in(a > 0)
   in(b >= 0, "b cannot be negative")
   out(r; r > 0, "return must be positive")
   out(; a != 0)
{
// ...
}
0882デフォルトの名無しさん
垢版 |
2018/05/27(日) 10:51:50.80ID:K2zIueyC
Dってnull安全性の機能は今のところ標準では用意されてないカンジ?
template使って実現すること自体は簡単そうだけど
0883デフォルトの名無しさん
垢版 |
2018/06/10(日) 18:04:56.72ID:arddwNhh
std.conv.to!intでstringからintに変換しようと思ったんですけど、
stringで表現される数字が全角でした。
こういう場合、どうすればいいですか?
0884デフォルトの名無しさん
垢版 |
2018/06/10(日) 22:54:43.49ID:LYbFojL+
要素に対し'0'引くだけでint値を得られるし
'0'引いて'0'足せば半角数字の文字コード得られるし
あとは煮るなり焼くなり
0886デフォルトの名無しさん
垢版 |
2018/06/11(月) 10:45:31.47ID:tK3aH3wF
漢数字はテーブル用意するのかそれともi18nされてるのか
0887デフォルトの名無しさん
垢版 |
2018/06/11(月) 20:26:30.57ID:xf3num2h
意味的に連続する文字の文字コードが連続してる保証ってないって話ではなかったっけ
0888デフォルトの名無しさん
垢版 |
2018/06/12(火) 16:49:06.21ID:bLF3+6cr
二支とか十干だな
0889デフォルトの名無しさん
垢版 |
2018/06/12(火) 16:49:34.78ID:bLF3+6cr
変なとこで切れた
十二支と十干で干支
0890デフォルトの名無しさん
垢版 |
2018/06/12(火) 17:10:31.20ID:eeJGE1xP
tr関数でASCIIに変換すればいいんじゃね。
と思ったらハイフン'-'が厄介だった。tr(s, "0123456789+−", "0123456789+-");
0892デフォルトの名無しさん
垢版 |
2018/06/18(月) 19:48:03.22ID:UtQrM811
おかえり
0893デフォルトの名無しさん
垢版 |
2018/06/18(月) 21:11:21.63ID:w1ISs/TA
むしろ更新が落ち着いた今こそ復権のタイミングじゃないか
というか他の言語だって追加に廃止に非推奨と仕様コロコロ変わってて
Dのこと言えないじゃないか
0894デフォルトの名無しさん
垢版 |
2018/06/19(火) 11:25:39.55ID:tjlbsfDK
D->LLVM->ネイティブとかさ
アプリのフレームワークで共通の鰌で
Windows,Android,OSX,iOSとかで動くようにならないかな
0897デフォルトの名無しさん
垢版 |
2018/06/27(水) 11:58:51.27ID:qKnsPtkx
CGIならサーバーの設定次第で勝手にコマンドライン引数なり標準入力なりに入ってくるはずだろ
D側で考えることは特にない
0898デフォルトの名無しさん
垢版 |
2018/06/27(水) 20:33:43.97ID:+T+Up6NP
むしろPOSTは普通に取れてた
取れないのはGETの方だった
まぁ結局getenv("QUERY_STRING")で取れたけど
DってCみたいにポイントをそのまま配列としては使えないんですね
0899デフォルトの名無しさん
垢版 |
2018/06/28(木) 01:40:10.19ID:FdbC2U6h
unicode1バイト目が
\0
というオチ
0900デフォルトの名無しさん
垢版 |
2018/06/28(木) 22:29:21.28ID:lMLAd/CT
>DってCみたいにポイントをそのまま配列としては使えないんですね
試してみたら普通に配列のように使えたけどどゆこと?

import std.stdio : writeln;
import core.stdc.stdio : putchar;

char[] text = "Hello World".dup;

char* pHello = text.ptr;
char* pWorld = &text[6];

// 添え字アクセス
for ( int i = 0; i < 5; i++ ) putchar( pHello[i] );

// 長さ付与
writeln( pWorld[0..5] );

出力結果:
HelloWorld
0902デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:05:22.52ID:gFgZc5FG
PDR
0905デフォルトの名無しさん
垢版 |
2018/07/21(土) 11:01:32.26ID:JzufiDOi
将来性は微妙
損はない
0911デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:59:29.12ID:l6qIS0xn
別にD言語に限った話でもないけど
DelphiやQt DesignerやXcodeのリソースファイルを読み込む部分だけ書けば
どんなGUIライブラリでもポトペタモドキはできると思うんだ
実例は見たことない
0912デフォルトの名無しさん
垢版 |
2018/09/01(土) 11:14:11.93ID:QmQOTtaG
今日本で最もアツいD言語コミュニティって何処なん?
15年前はここだったけど
0913デフォルトの名無しさん
垢版 |
2018/09/01(土) 13:47:55.16ID:i/jVHK5F
過疎ってるけどここ
0914デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:03:13.23ID:ZleIwKxc
競プロで流行らせて盛り上げようぜ
0917デフォルトの名無しさん
垢版 |
2018/09/02(日) 01:33:02.61ID:YXkmV9AS
>>915
ほんそれ
0921デフォルトの名無しさん
垢版 |
2018/09/22(土) 15:13:01.38ID:xOVRbYWf
Nim いいね
0923デフォルトの名無しさん
垢版 |
2018/11/05(月) 13:41:51.79ID:o5QGnfIr
いつの話よ
0926デフォルトの名無しさん
垢版 |
2018/11/06(火) 11:34:12.15ID:vyXuaWzf
遅すぎた春🎊
0927デフォルトの名無しさん
垢版 |
2018/11/06(火) 13:39:43.26ID:e09+EfP6
gcjが外れたからgc付き言語が無くなってチャンスではあったのだけれども
goが先に入っちゃって時節を逃した感はどうしても
0928デフォルトの名無しさん
垢版 |
2018/11/08(木) 23:12:51.64ID:IsYSfhKR
ついに入ったのか
しかしGDCはバージョンアップが遅れに遅れてほとんど相手にされないレベルだったけどどうなったのかしら
0931デフォルトの名無しさん
垢版 |
2018/11/10(土) 16:33:56.24ID:yzCMB8/E
でもその「D言語」はマナー屋の造語なんですよ
ですからこのスレとは関係ないんです。だってここのD言語はうぉるたん作ですもの
0933デフォルトの名無しさん
垢版 |
2018/11/21(水) 17:48:45.86ID:hwLUtClc
CPUとメモリをたっぷり使うプログラムを書いたんですけど、実行中、下記のエラーが発生してしまうことがあります。
core.exception.OutOfMemoryError@src\core\exception.d(693): Memory allocation failed

タスクマネージャを見ながら実行してみると、多い時でメモリを1700MBぐらい使っていて、上記のエラーが出たときは1100MB程度でした。
PCのメモリは8GB積んでいて、プログラム実行中も2〜3GBぐらいは空いていました。
未使用のメモリがまだ残っているのにアロケーションに失敗するのはどうしてなんでしょうか?
そして、何か回避方法はありますか?
0934デフォルトの名無しさん
垢版 |
2018/11/21(水) 21:37:17.53ID:SmkNBI+1
大きな領域を一度に確保しようとして
空き容量には余裕があるけどその領域を確保できる隙間がないから失敗したとか?
0935デフォルトの名無しさん
垢版 |
2018/11/21(水) 22:16:34.40ID:z3Is5rCO
たぶん 32bit やろ 64 bit でいいならそっちにしたほうが無難
GC も肝心なときにコケる印象

まさか無いとは思うけど仮想メモリ無効にしたりしてないよね
0937933
垢版 |
2018/11/21(水) 23:21:11.93ID:hwLUtClc
>>934
なるほど、そういう可能性もあるんですね。

>>935
32bitのdmdを使っていました。
4GBより大きいメモリを積んでる場合、32bitだと使えない場合があるということですね。
64bitを試してみます。
0938デフォルトの名無しさん
垢版 |
2018/11/23(金) 17:30:19.97ID:WNoH6qHd
>>929のDLang Tourっての見たらVibe.dの事も普通に載ってるのな
興味はあったけど今まで拾い読みする程度の情報くらいしか知らなかったけど
これを機にやってみようかな
0939デフォルトの名無しさん
垢版 |
2018/11/23(金) 18:07:04.87ID:ZtWiRdZy
>>937
32bitプロセスならプロセスが使える仮想メモリの上限は2GBだからね
これはOSの制限なので、しょうがない
0940デフォルトの名無しさん
垢版 |
2018/11/23(金) 18:54:10.07ID:tTn5D6Z9
コンパイラを変えるんじゃなくてビルドモードを変えるんやで ( -m64 )
デフォルトの GC はゴミだが 64bit ならまぁまぁ使えると言ってるんやで
0941デフォルトの名無しさん
垢版 |
2018/11/25(日) 23:30:27.63ID:kJa4tJwN
他のGC付言語と比べてもDのGCはゴミ?
0942デフォルトの名無しさん
垢版 |
2018/11/26(月) 13:35:29.96ID:M4lkR7sD
JSよりまし
0943デフォルトの名無しさん
垢版 |
2018/11/26(月) 16:41:04.95ID:E028bwsj
インストール版でインストールしたdmd2.083で適当なコードをビルドすると"Access Violation"とだけエラーが出て、
ビルドが完了しないんですが、原因は何なんでしょうか?

上記のエラーはDebugモードの時のみで、Releaseモードの時は正常にビルドできます。
またこのコードはdmd2.071ではDebug、Releaseともに正常にビルドできました。
0944デフォルトの名無しさん
垢版 |
2018/11/26(月) 16:46:42.83ID:M4lkR7sD
「適当なコード」

再現する最小限のものを貼れ
0946デフォルトの名無しさん
垢版 |
2018/11/26(月) 18:08:49.61ID:E028bwsj
>>944
import std.stdio;
void main()
{
  writeln("Hello World!");
}
これをビルドすると例のエラーになります。

>>945
win10です。
IDEはVS2013を使いました。
0947デフォルトの名無しさん
垢版 |
2018/11/27(火) 20:08:46.24ID:F5dyxMID
OSからインスコやり直し
0948943
垢版 |
2018/11/27(火) 22:40:25.69ID:9c7HJkqh
>>947
厳しいですね。

https://qiita.com/sfujita/items/55dfd9203dffe05598c6
一番下のsc.iniで上書きして、hello.dとBuild.batをコピペして、
Build.batを実行したら、正常に動作しました。
VSの方で何か問題があるのかもしれないです。
0949デフォルトの名無しさん
垢版 |
2018/11/27(火) 22:53:19.06ID:pagiDKMJ
去年くらいから VS のインストール情報を検索してリンカやSDKを自動選択する機能がついた
VS2013 は古すぎてマズイ気がする
0950943
垢版 |
2018/11/28(水) 16:57:45.65ID:lzMMCZH4
VS2017のインストールとdmd2.083インストーラ版のインストールを行い、Hello World!をビルドしてみましたが、
hoge.pdb: cannot add symbols to module, probably msobj140.dll missing
というエラーが出ました。
$(VCINSTALLDIR)binと$(VSINSTALLDIR)Common7\IDEをエクスプローラで確認してみましたが、
どちらともmsobj140.dllはありました。
なぜエラーが出るのか全く分かりません。
0951デフォルトの名無しさん
垢版 |
2018/11/28(水) 18:22:14.14ID:hLCjBKjM
x64の方にはあるけどx86の方には無いな
0952943
垢版 |
2018/11/28(水) 20:00:53.65ID:lzMMCZH4
私の環境では、Program Files (x86)\Microsoft Visual Studio 14.0にはありましたが、
Program Files\Microsoft Visual Studio 14.0にはありませんでした(全部で64KB程度しかない)。
sc.iniはProgram Files (x86)の方を参照するようになっていますが、32bit版のVSじゃ使えないんでしょうか?
0953943
垢版 |
2018/11/29(木) 13:56:17.42ID:9E8r92ip
>>948のサイトの手順をやり直したら解決しました。
VSのインストール時に、VisualC++に関するオプションをいじった(5GBぐらい大きくなった)のが影響したのかなぁ。
0955デフォルトの名無しさん
垢版 |
2018/11/29(木) 20:54:07.49ID:eyw2ItTx
llvm のツールチェーンが使えるようになったんだっけ
でも本格的にやるにはデバッガがあったほうがいい
0956デフォルトの名無しさん
垢版 |
2018/11/29(木) 22:53:22.13ID:OLmOFAf+
12月1日のQita Advent Calendarが何かしらの参考になるかもしれないね
まだ内容は当然わからないけど
0957デフォルトの名無しさん
垢版 |
2018/12/02(日) 18:19:15.04ID:r/YV3Hmh
無事1日が終わりました
本当にありがとうございました
0959デフォルトの名無しさん
垢版 |
2019/03/09(土) 18:08:15.48ID:1edG4e+S
2.085 で Precise GC の試験実装が始まったのにお前らときたら

>>958
公式でいいんじゃね
ldc の追随も凄まじいけど
0960デフォルトの名無しさん
垢版 |
2019/03/21(木) 00:18:56.75ID:oV/wBHSs
std.conv.toから投げられた例外をThrowableでcatchしてtoStringとwritelnでエラーメッセージを書き出すと、
関数呼び出しの経路とかソース上の行番号が表示されますよね。
それが、いろいろ改修してるうちに途中で途切れたようなエラーメッセージしかでなくなってしまいました。
原因わかる方いますか?
0961デフォルトの名無しさん
垢版 |
2019/03/21(木) 00:27:04.55ID:7qm1Whlz
ascii以外の字が混ざってないか
multibyteの不正な文字(1byte目だけあって2byte目が現れずに次のascii文字が並ぶとか)
0962デフォルトの名無しさん
垢版 |
2019/03/21(木) 02:27:46.51ID:oV/wBHSs
>>961
main関数の中でto!uint("a")とやってみましたが、同じように途切れたエラーメッセージになりました。

std.conv.ConvException@***\src\phobos\std\conv.d(2267): Unexpected 'a' when converting from type string to type uint
----------------
0x00007FF77B85E400 in std.string.representation!(immutable(char)).representation at ***\src\phobos\std\conv.d(2271)
0x00000207C32A3000
0963デフォルトの名無しさん
垢版 |
2019/03/21(木) 08:16:53.81ID:Ai8cDmsG
スタックトレースは結構雑で何年もバグが放置されてる感ありあり
そのへんを気にする人はデバッガを使うから

OSやコンパイラ実装でも違う処理してるからそのへん書かないとだめよ
Windows は新しめのバージョンで改善があったはずだけど
0964デフォルトの名無しさん
垢版 |
2019/03/21(木) 08:48:24.57ID:Ai8cDmsG
Win + 64bit (MSVC) と思っていろいろやってみたけど再現しない
llvm 実装は動かしたことないからわからんちん

>Windows は新しめのバージョンで改善があったはず
これは関係なかったぽい
0965デフォルトの名無しさん
垢版 |
2019/03/21(木) 10:59:19.34ID:/Eg7TqPx
windows は git bash を cmd の代わりに使ってる
快適すぎる
0968デフォルトの名無しさん
垢版 |
2019/04/18(木) 03:00:23.27ID:6Z/jOLC9
0970デフォルトの名無しさん
垢版 |
2019/05/06(月) 18:39:56.75ID:o0+2Jvom
今更感
0971デフォルトの名無しさん
垢版 |
2019/05/07(火) 21:39:34.26ID:8L3IENLQ
そういう楽する系の機能はバグの温床
0976デフォルトの名無しさん
垢版 |
2019/07/04(木) 15:04:12.18ID:7idq17x4
char[]をstd.algorithm.sorting.sortでソートしようするとコンパイルエラーになるんですけど、
辞書順にソートしたい場合、どうやればいいですか?
0977デフォルトの名無しさん
垢版 |
2019/07/04(木) 17:59:32.86ID:VpXpLSzf
string[]
0981デフォルトの名無しさん
垢版 |
2019/08/09(金) 23:44:03.55ID:FZatNxGm
なるほどその手があったか
全く使わないから存在そのものを忘れてた(一応 wchar までは試した
0985デフォルトの名無しさん
垢版 |
2019/10/07(月) 14:28:14.46ID:nnDn0jE7
dmc ってもう更新されないの?
0988デフォルトの名無しさん
垢版 |
2019/10/20(日) 10:00:15.38ID:Xl2t0ZNf
Dはもう死んでしまったの?
0991デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:02:30.03ID:c9dhXgWB
C
C++
D
Go
それぞれのメリットデメリットを教えてください
0993デフォルトの名無しさん
垢版 |
2019/10/22(火) 10:51:03.05ID:F+STirlY
俺は案外gccに入ったからDはそのうち人気出るんじゃないのかなと思ってる。使わないけど。他の言語より明かに素直でとっつきやすいと思うから。
0994デフォルトの名無しさん
垢版 |
2019/10/22(火) 10:59:35.52ID:fxbuxtP/
知らんけど/メリット/デメリット
C/小さい・速い・枯れている・ライブラリ豊富/古い・手間掛かる
C++/betterthanC/カオス・遅い
D/小さい・速い・素直・ガベコレ/利用者少ない?
Go/ガベコレ/でかい・癖強い
0996デフォルトの名無しさん
垢版 |
2019/10/23(水) 00:34:53.79ID:JxOFlXnS
Dみたいな変態構文の言語が流行るわけないだろ
0998デフォルトの名無しさん
垢版 |
2019/10/24(木) 13:27:01.47ID:PdyZnCeq
Rust > D > Go > C > C++
こんな感じか
1000デフォルトの名無しさん
垢版 |
2019/10/24(木) 22:56:28.84ID:ADhpIzNi
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1733日 10時間 49分 0秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況