On Friday, 21 October 2022 at 14:37:19 UTC, Erdem wrote:
> >D de eskiye göre çok gelişti ama pek sözünü etmiyoruz. Örneğin, dub da artık D ile birlikte kuruluyor ve dscanner ve dustmite da artık dub'ın alt komutları olarak kullanılabiliyor: 'dub lint' ve 'dub dscanner'.
Bunu ogrendigim cok iyi oldu. Dustmit'in ne yaptigini tam anlayamadim ama eve gidince okuyacagim.
Kodu kaynak kodunda optimize eden bir araçtı diye hatırlıyorum ama hiç kullanmadım. Çünkü bir kodu benden daha iyi optimize edecek hiçbir yazılım (makine kodunu kastetmiyorum!) olduğuna inanmıyorum 😀
Misal dün tam sayı yuvarlama koduna ihtiyacım oldu ve kendimi şablonlarla yapabileceğim (yapmalıyım!) diye kandırdıysam da şöyle basit bir şey ile bitti gitti işte (*ah, evet bir soru!)
enum : size_t
{
aLen = abece.length,
bits = bsf(aLen),
bitLength = T.sizeof * 8,
maxLength = bitLength / bits,
remainder = (bitLength % bits) * 10,
cLen = bytes.cell.length,
wMax = remainder > 4 ? maxLength + 1 : maxLength
}
Sonra vazgeçtim ve static if
bile kullanmadan basit bir enum
bloğunda her şey hallettim. Soruya gelince; yukarda kullandığım şekilde üçlü işleç de static if
gibi değil mi? Gerçi cevabı biliyorum galiba çünkü ikisi de CTFE olanağı ve misal static if
'de else satırı işletilseydi kodu üst bölümü hiç dahil edilmeyecekti bile. Neyse :)
O işlevin ilk hali de test edibilir şekilde şuydu:
auto round(T)(const int divider)
in(divider > 0) {
enum bitLength = T.sizeof * 8;
auto maxLength = bitLength / divider;
auto remainder = (bitLength % divider) * 10;
return remainder > 4 ? maxLength + 1 : maxLength;
} unittest {
import std.meta, core.bitop : bsf;
foreach(t; AliasSeq!(long, int, short))
{
foreach(n; [64, 32, 16, 8])
{
int div = n.bsf;
div.write("=> ");
div.round!t.write("/");
round!t(++div).writeln;
}
}
}
> > > Arkadaslar VisualD Visual Code'da calismiyor degilmi
Çalışıyor.
Bildiğim kadarıyla windowz için yazılmış bir geliştirme aracı ve bazı antivirüsler uygulamayı zararlı olarak işaretleyebiliyor. Kodlamayla uğraşanlar hayatında bir kere de olsa karşılaştığı şey; o kod size ait olsa da antivirüs "hayırdır, nereye!" der durur 😀
Sevgiler, saygılar...