abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 19:33 | Nová verze

Bylo vydáno OpenBSD 6.5. Opět bez oficiální písně. Nejnovější OpenBSD přináší například OpenSMTPD 6.5.0, LibreSSL 2.9.1 nebo OpenSSH 8.0.

Ladislav Hagara | Komentářů: 1
včera 11:33 | Zajímavý článek

Na oficiálním blogu Raspberry Pi byla představena kniha An Introduction to C & GUI Programming. Kniha je ke stažení zdarma (pdf). Papírovou verzi lze koupit za 10 liber.

Ladislav Hagara | Komentářů: 11
včera 10:33 | Nová verze

Byla vydána nová verze 4.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 3 100 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 0
včera 10:00 | Nová verze

Google Chrome 74 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 74.0.3729.108 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 39 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
23.4. 21:44 | Nová verze

Po roce vývoje od vydání verze 1.14.0 byla vydána nová stabilní verze 1.16.0 dle Netcraftu aktuálně nejpoužívanějšího webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.16.

Ladislav Hagara | Komentářů: 0
23.4. 13:44 | Zajímavý software

Termshark je Wireshark běžící v terminálu. Jedná se o nadstavbu nad tshark naprogramovanou v programovacím jazyce Go. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 1
23.4. 13:22 | Nová verze

Měsíc po vydání verze 1.16.0 byla vydána nová verze 1.18.0 sady nástrojů pro správu síťových připojení NetworkManager. Přehled novinek v souboru NEWS na GitLabu.

Ladislav Hagara | Komentářů: 2
23.4. 11:22 | Komunita

Linuxová distribuce Scientific Linux vycházející z Red Hat Enterprise Linuxu končí, verze 8 nebude vydána. Laboratoř Fermi (Fermi National Accelerator Laboratory), hlavní vývojáři Scientific Linuxu, přejde na CentOS 8. Scientific Linux ve verzích 6 a 7 bude nadále podporován.

Ladislav Hagara | Komentářů: 10
23.4. 11:11 | Pozvánky

Dubnový sraz spolku OpenAlt se koná ve čtvrtek 25. 4. 2019 v Pivovarském klubu od 18:00. Najdete jej kousek od metra Florenc na adrese Křižíkova 17°, Praha 8. Sejdeme se zase u dobrého piva a popovídáme si o tématech jako umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.

xkucf03 | Komentářů: 0
21.4. 22:33 | Komunita

Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL). Dnešním dnem je novým vedoucím Sam Hartman.

Ladislav Hagara | Komentářů: 11
Používáte headset pro virtuální realitu?
 (1%)
 (3%)
 (2%)
 (19%)
 (0%)
 (74%)
Celkem 230 hlasů
 Komentářů: 12, poslední 18.4. 01:19
Rozcestník
Alternativně viz také můj osobní blog v notionu (RSS).

Od určité doby jsou všechny texty které zde publikuji verzované na Githubu.

Jestliže najdete chybu, nepište mi do diskuze a rovnou jí opravte. Github má online editor, není to skoro žádná práce a podstatně mi tím usnadníte život. Taky vás čeká věčná sláva v commit logu :)


Pokud se vám líbilo něco z mé produkce, můžete svou přízeň vyjádřit v kryptoměnách:

  • BTC: 13CS7yKTcqPQUH2hrcuFsqf1AKr4gThZTD

Ne že bych je nějak potřeboval, ale patří to k věcem, které autory obecně potěší a jasně ukazují, že jsou lidi, kteří ty hodiny času stráveného psaním umí ocenit.


Víte že můžete odebírat mé blogy pomocí RSS? (Co je to RSS?)


A kdo neumí použít RSS, tak je tu twitter: @Bystroushaak.
Aktuální zápisy

Programovací jazyk D

14.3.2011 19:34 | Přečteno: 3658× | Názory | poslední úprava: 7.10.2012 20:38

Nudil jsem se, tak jsem sepsal něco o programovacím jazyku D. Není to ani tak článek o D, jako spíš můj názor na něj a ostatní programovací jazyky.

Před pár lety, když jsem ještě chodil na střední školu nám mistr na praxi vyprávěl o tom jak před dlouhou dobou dělal pro nějakou rodinu elektriku v baráku. Jelikož byl poctivý řemeslník, rozuměl své práci a odvedl jí dobře, pozvali ho na kafe a povídali si s ním. Tenkrát ho zaujalo, že měli uprostřed obýváku na zemi položený velký a dlouhý trám, který všichni přeskakovali a dělali jako kdyby tam nebyl. Nejdříve se na to ze slušnosti nechtěl zeptat, ale jelikož to byl zvídavý člověk, vrtalo mu to hlavou a nakonec neodolal a vznesl dotaz proč že to mají ten trám uprostřed obýváku, když jim tam překáží. Dostalo se mu odpovědi že už tam tak ležel když dům někdy před dvaceti lety koupili. Bylo mu to trochu divné, tak se zeptal proč ho nikdo z nich neodstranil. "My ho tam nedali," řekla mu paní domu a brala celou věc za vyřízenou.

Nevím nakolik je tenhle příběh pravdivý a nakolik si ho mistr tenkrát vymyslel, ale úplně stejné mi to přijde s programovacími jazyky. Existuje 1337 programovacích jazyků, jeden dementnější než druhý. Více/méně všechny široce používané si s sebou táhnou podivné dědictví různých trámů, které jsou navršené v obývácích a nutí programátora je podlejzat, přeskakovat a snažit se aby náhodou nějaký neshodil. Často se přitom nejedná o nic jiného, než o dementní syntaxi, kterou by šlo lehce vyřešit, kdyby se ovšem někomu chtělo daný trám odnést a poslat do prdele členy rodiny kteří si budou stěžovat že bez něj to už není ono.

Je opravdu obdivuhodné, že jednou za čas se mezi tvůrci najde někdo, kdo dokáže myslet trochu jinak než většina a odstranit většinu trámů, ba co víc, dokonce ještě vybílit zdi a přidat pohodlnou sedací soupravu, na které je vskutku radost sedět. Mezi tyto tvůrce patří kromě Guida van Rossuma (tvůrce jazyka python) i Walter Bright.

C++ fucking sucks

Na začátku jsem se naučil pascal. Byla to doba kdy jsem na programování měl jen jeden názor - fuck yeah! Později jsem nakousl PHP, naučil se python, absolvoval rok basicu, dva roky středoškolské výuky s C++, dva semestry vysokoškolských kurzů javy, semestr C/C++, semestr JavaScriptu/PHP a semestr C#. Během té doby jsem si škrtl i o různé obskurní jazyky, ale většinou se jednalo o věci které ani nemá cenu zmiňovat a už jsem je prakticky zapomněl a navíc si procvičoval dovednosti snad ve všem, kromě pascalu. Pokaždé když jsem v té době měl vytvořit nějaký kompilovaný program, připadalo mi, že cokoliv v čem bych ho dokázal napsat stojí za naprostou vyližprdel. Bylo to jako kdybych si zkoušel kabáty a žádný mi nesedl. V jednom jsem mohl nemohl roztáhnout ruce, ve druhém je zase dát k sobě a třetí se nedal dopnout.

Během té doby jsem strávil několik večerů hledáním na netu. Na IRC se mi smáli, že dokonalý jazyk neexistuje, že nemá cenu se namáhat, ale stejně jsem googlil a zkoušel. Když už jsem byl jen kousek od toho to vzdát, vzpomněl jsem si, že kdysi dávno, když jsem byl ještě totální IRC nováček, vyskytoval se na mém prvním kanálu člověk pod nickem DarkCraft, který si pochvaloval D. Trochu jsem zagooglil a zjistil jsem, že zrovna před nedávnem vyšla revoluční, druhá verze - D2.

Pustil jsem se do čtení a zjistil jsem, že Walter Bright měl podobný názor jako já - C++ smrdí. Nezískal ten názor tím že by si ho zkusil na střední/vysoké škole, ale poté co pracoval dlouhá léta jako programátor a mimo jiné si napsal vlastní, komerčně úspěšný kompilátor C++. I ten největší C++lover snad musí uznat, že nejspíš věděl o čem mluvil. Walter si uvědomil, že C++ má pošahanou syntaxi a navíc programátorovi hází trámy pod nohy, proto se rozhodl vytvořit nový, lepší jazyk. Jelikož se jeho firma jmenovala DigitalMars, pojmenoval jej Mars. S tím jak se komunita jazyka Mars rozrůstala, začali se objevovat lidé, kterým se jazyk líbil a začali ho místo Mars nazývat prostě D, aby dali najevo že se jedná o něco lepšího jak C++. Postupně se tento název ujal natolik, že i samotný Walter ho přijal za vlastní a v dnešní době už se na původní jméno prakticky zapomnělo.

D

Jazyk D je systémový, kompilovaný programovací jazyk. Je to také jediný kompilovaný jazyk ve kterém mě skutečně baví programovat, podobně jako třeba v pythonu. Žádné kreténské .h soubory, rozdíly mezi definicí metody v těle třídy a za třídou, dementní stringy, couty a ciny, makra jak ze středověku a podivné erorry při používání šablon. Naopak - spousta vychytávek jako jsou asociativní pole, pohodlné foreach, moduly, ucházející API, porovnávání polí operátorem porovnání (==), nikoliv pomocí obskurních metod z jakéhosi API, vlastní operátor pro porovnání referencí (is), operátor pro spojování polí a strigů (~), plná podpora UTF atp..

Nevím jak bych měl tento pocit z D přiblížit někomu kdo v něm nikdy nedělal, proto se prostě budete muset spokojit s tím, že o něm prohlásím že je skutečně příjemný a promyšlený, s minimem trámů které by bylo třeba přeskakovat a podlejzat. D mě baví - proto jsem o něm založil české stránky a napsal tento článek.

Pokud se mi podařilo navodit ve vás pocit že D není úplně marný, zkuste se podívat na czwiki4d, popřípadě další odkazy které jsem uvedl:

Heh, "závěr"

Na závěr bych se chci zmínit o excelentní knize The D programming Language. Dá se sehnat i v elektronické verzi (oficiálně i neoficiálně), osobně jsem si koupil k vánocům papírovou. Četl jsem už několik knih o programování a programovacích jazycích (mimo jiné třeba Programovací jazyk C od Kernighana a Ritchieho), ale žádná mě ani zdaleka nenadchla tak jako tato.

Rozdíl mezi touhle knihou a běžnými příručkami je asi takový, jako mezi čerstvě vystudovanou učitelkou češtiny která u nás ve čtvrťáku po půl roce vyhořela (prý odešla radši učit na mateřskou školku) a pánem v důchodu, který nastoupil po ní. Nejen že dokázal podat češtinu zajímavým způsobem (!!!), ale navíc to pro něj byl koníček a uměl vysvětlit i kde se to v našem jazyce vzalo, proč to vzniklo a jak se to rozšířilo..

       

Hodnocení: 90 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

14.3.2011 19:42 ocaL
Rozbalit Rozbalit vše Re: Programovací jazyk D
Až na to někdo naportuje Qt4, tak možná, ale takhle je mi to čistě prakticky úplně k hovnu :-(
Bystroushaak avatar 14.3.2011 19:45 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Teď se pustím na tenký led, ale nemá náhodou Qt4 nějaké C knihovny? Pokud ano, D umí používat C ABI a pokud se ošklivě nepletu, tak i API (jen je nutné předělat .h soubory na interface).
14.3.2011 19:48 ocaL
Rozbalit Rozbalit vše Re: Programovací jazyk D
No já jsem hlavně zřejmě trubka :-) - QtD
14.3.2011 19:58 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Je otázka, jak moc to je/není aktuální.
14.3.2011 20:01 Kemr
Rozbalit Rozbalit vše Re: Programovací jazyk D
Qt 4.5 a skoro rok na to nikdo nešáhl...
14.3.2011 20:58 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D

Qt je moc založené na C++ na to, aby se dalo exportovat do C.

14.3.2011 20:59 Polivka
Rozbalit Rozbalit vše Re: Programovací jazyk D
To by bylo odporny, vsechny ty zavislosti na tride QObject apod. poceckovat. Na cecky az moc velka abstrakce...
14.3.2011 21:01 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Viděl jsi někdy GObject, který leží pod GTK+?
14.3.2011 21:04 Polivka
Rozbalit Rozbalit vše Re: Programovací jazyk D
Právě že jo :-(
15.3.2011 07:49 pozortucnak | skóre: 21 | blog: vecny_windowsar
Rozbalit Rozbalit vše Re: Programovací jazyk D
Viděl jse zdrojové kódy qt4pas? Není to sice kompletní Qt framework...

I se svými chabými znalostmi C/C++ mám odvahu tvrdit, že je to čistý C wrapper...

http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html
Jsem mimořádně obtížný případ
15.3.2011 08:08 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
A já tvrdím, že je to mimo, protože jsem tam žádné zdrojové soubory čistě v C nepotkal.
15.3.2011 08:26 pozortucnak | skóre: 21 | blog: vecny_windowsar
Rozbalit Rozbalit vše Re: Programovací jazyk D
No dobře, tak je to C/C++ wrapper... :-D

Co asi znamená
C_EXPORT QLabelH QLabel_create(QWidgetH parent, unsigned int f)
{
	return (QLabelH) new QLabel((QWidget*)parent, (Qt::WindowFlags)f);
}
?

Myslím že tuto funkce bych teoreticky mohl použít v C, ale jak jsem již psal, mé znalosti C/C++ jsou skutečně chabé...
Jsem mimořádně obtížný případ
14.3.2011 19:46 ocaL
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jinak, nic nemá na Ruby, jeho syntakticky čisté konstrukce jako "5.times { ... }" nic nepřekoná...
Bystroushaak avatar 14.3.2011 19:52 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Hm, kdyby ruby nemělo bloky ukončené naprosto dementním klíčovým slovem end, tak bych i souhlasil že je to jazyk který stojí za to se učit, takhle jsem spíš pro python.

Jinak v pythonu to jde do jisté míry pomocí *, například print 5 * "xe", na složitější věci je podle všeho nutné používat xrange.
14.3.2011 21:24 Lumen
Rozbalit Rozbalit vše Re: Programovací jazyk D
To ukončení bloku klíč. slovem end nebo slož. závorkou } je IMHO velký plus pro vizuální orientaci v kódu. V Pythonu mě naopak to neoznačení s*re, protože se lze při víceúrovňovém vnořování snadno splést v odsazení a jinak validní kód se chová jinak než autor zamýšlel.
Jinak v pythonu to jde do jisté míry pomocí *, například print 5 * "xe", na složitější věci je podle všeho nutné používat xrange.
Tak tady jste zcela mimo mísu. Nejdřív si přečtěte co metoda Fixnum#times dělá. Ta je pythonnímu list.__mul__ na hony vzdálená.
14.3.2011 21:33 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D

Dokud v editoru nejsou vodící linky či jiná pomůcka s obdobnou funkcí, orientace je v tahu v obou případech. Mně se zase nelíbí, že explicitní ukončování bloků kód vertikálně prodlužuje a rozptyluje pozornost.

Nakonec, slyšel jste někdy něco o tom, že kód, který potřebuje více než tři úrovně odsazení, je špatně napsaný? Chcete-li, můžete si tuhle poučku rozšířit na čtyři úrovně, protože v OOP bývá ještě jedno odsazení navíc pro třídu.

14.3.2011 22:31 Lumen
Rozbalit Rozbalit vše Re: Programovací jazyk D

Dokud v editoru nejsou vodící linky či jiná pomůcka s obdobnou funkcí, orientace je v tahu v obou případech.

Nesouhlas. Když píšete nový kód, tak jsou oba případy srovnatelný. Pokud se ale ke kódu vracíte, za účelem doplnit/opravit, tak v Ruby se hned chytíte toho ukončujícího end nebo }, ale v Pythonu musíte znovu pátrat po odsazení ukončující blok jako na začátku.

Nakonec, slyšel jste někdy něco o tom, že kód, který potřebuje více než tři úrovně odsazení, je špatně napsaný? Chcete-li, můžete si tuhle poučku rozšířit na čtyři úrovně, protože v OOP bývá ještě jedno odsazení navíc pro třídu.

To nelze brát úplně doslova. Stejně jako že funkce nesmí být delší než jednu stránku v editoru. Praxe je ale trošku o něčem jiném a slepě dodržovat takové poučky může vést ke zbytečnému tříštění kódu. Tyto poučky jsou hlavně pro začátečníky, aby je vedly k určité disciplíně a nenaučili se hned prasit.
14.3.2011 23:28 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nesouhlas. Když píšete nový kód, tak jsou oba případy srovnatelný. Pokud se ale ke kódu vracíte, za účelem doplnit/opravit, tak v Ruby se hned chytíte toho ukončujícího end nebo }.

Nesouhlas. Pouze pokud editor vysvicuje přiléhající závorky nebo vyznačuje bloky (např. kate).

To nelze brát úplně doslova. Stejně jako že funkce nesmí být delší než jednu stránku v editoru. Praxe je ale trošku o něčem jiném a slepě dodržovat takové poučky může vést ke zbytečnému tříštění kódu. Tyto poučky jsou hlavně pro začátečníky, aby je vedly k určité disciplíně a nenaučili se hned prasit.

Lze to brát doslova, co by to nešlo. :) A pochybuju, že autor poučky o odsazení měl na mysli začátečníky, když v té době byli programátoři spíše okrajová sekta lidí. Jde spíše o obecně dobrou praktiku, která stojí za dodržování nezávisle od toho, jak dlouho kdo na jaké úrovni programuje.

rADOn avatar 14.3.2011 23:59 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
… Pokud se ale ke kódu vracíte, za účelem doplnit/opravit, tak v Ruby se hned chytíte toho ukončujícího end nebo }, ale v Pythonu musíte znovu pátrat po odsazení ukončující blok jako na začátku.…
Někteří nepátrají, ale prostě kouknou na #endif, #endfor etc. blok. Jak složité… Apropo, mě se líbí jak střídmost a přehlednost C, tak ukecaný ale vypovídající koncový bloky v php. Ale holý  end mi přijde jako to nejhorší z obou - víc písmenek aniž by v tom bylo víc informace :-(
Tyto poučky jsou hlavně pro začátečníky, aby je vedly k určité disciplíně a nenaučili se hned prasit.
Zlatá slova. Ale neříkej je moc nahlas, začátečník může být nablízku :-)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
14.3.2011 20:59 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Pokud to je ironie, tak ji beru.
14.3.2011 21:00 ocaL
Rozbalit Rozbalit vše Re: Programovací jazyk D
Díky za argument. Málokdo umí tolika slovy říct tak málo (resp. nic)
14.3.2011 21:04 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Mně Ruby přijde syntakticky naprosto odporné, o něco víc než Perl.
14.3.2011 21:32 Lumen
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jj, není potřeba se rozhodovat jen podle racionálních důvodů …
14.3.2011 21:34 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Dobře, ještě jinak: špatně se to čte.
xxx avatar 14.3.2011 23:25 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: Programovací jazyk D

Asi takhlen, vsechny tyhle vychytavky jsou super. Dokud programujete sam. Prusvih tehlech veci je, ze nejaky problem (i trivialni) lze vyresit prilis mnoha zpusoby. Takze v momente kdy dostanete cizi kod, tak zabijete spoustu casu tim, ze se ucite coding style vaseho predchudce.

Dlasi sranda nastava v okamziku, kdy jste program pochopili, a chcete ho modifikovat. Pokud to udelate vasim stylem, a ne tak jak vas predchudce, tak jste prave prichystal peklo pro vaseho nastupce.

Takze prvni co u tehlech nestriktnich jazyku udelate pri nutnosti spoluprace vice lidi je, ze vychytavka jako 5.times zakazete, nebo zakazate vsechny ostatni metody pro dosazeni stejneho cile.

Please rise for the Futurama theme song.
Bystroushaak avatar 14.3.2011 23:27 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
A nebo zavedete nutnost komentovat potenciálně nepochopitelné bloky projektu?
xxx avatar 14.3.2011 23:44 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: Programovací jazyk D

To nefunguje. Kazdy ma to potencionalne nepochopitelne nekde jinde. A pokud ma programator osvojenou nejakou specialitku (5.times misto for, kazdemu dojde, ale jsou mnohem zakernejsi vychytavky), tak to bude presne to, co mu prijde jako uplne jasne, a komentovat to rozhodne nebude.

Tenhle problem maji samozrejme vsechny jazyky, ale cim volnejsi jazyk je, tim vetsi tenhle problem je.

Please rise for the Futurama theme song.
16.3.2011 09:34 JS
Rozbalit Rozbalit vše Re: Programovací jazyk D
Prusvih tehlech veci je, ze nejaky problem (i trivialni) lze vyresit prilis mnoha zpusoby. Takze v momente kdy dostanete cizi kod, tak zabijete spoustu casu tim, ze se ucite coding style vaseho predchudce.
A on tenhle problem nejaky jazyk uspesne resi? Respektive, je ten problem vubec resitelny?

Mozna reknete Java. A ja reknu, ze Java jen ten problem premistila ze zabudovane syntaxe/semantiky programovaciho jazyka do patternu a frameworku.

IMHO, ten problem je v Turing-complete jazycich neresitelny.
14.3.2011 20:02 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Uznávám, že mnohé věci jsou v C++ řešeny divně, nešikovně nebo úplně chybí.
Nadruhou stranu porovnávat pole jedním operátorem mi přijde hovadina. Schovává se v tom složitost - je to jediný příkaz, ale přitom má složitost jako for. Krom toho, různé druhy polí se různě porovnávají...

Ale nejsem zas nějaký C++ fanatik a D bych klidně zkusil. Už jsem po něm párkrát pokukoval, stejně jako po Objective-C.
14.3.2011 20:51 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nadruhou stranu porovnávat pole jedním operátorem mi přijde hovadina. Schovává se v tom složitost - je to jediný příkaz, ale přitom má složitost jako for.
Složitost se schovává už v takových věcech, jako je alokace paměti. Takže na rozumných polích nevidím nic špatného.

Ostatně tenhle argument by se dal použít proti jakémukoli přetěžování operátorů, tedy i vůči C++, pravda? :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
14.3.2011 21:22 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
U alokace se přímo udává velikost, u C++-style alkoace (new typ[velikost]) to je vůbec hezky vidět, takže tam bych problém neviděl.
A přetěžování operátorů si člověk píše sám, takže taknějak ví, co dělaj...
14.3.2011 21:31 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Narážím na úplně jinou věc, totiž že alokátory paměti typicky nemají konstantní složitost. (Paradoxně neplatí pro řízená prostředí typu Java, ale to je teď vedlejší.)

No, takže tady to víš taky, není rozdíl.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
14.3.2011 21:29 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Složitost se schovává už v takových věcech, jako je alokace paměti.
Mezi složitostí za alokací paměti a složitostí při porovnávání pole je propastný principeilní rozdíl.
Takže na rozumných polích nevidím nic špatného.

Ostatně tenhle argument by se dal použít proti jakémukoli přetěžování operátorů, tedy i vůči C++, pravda? :-)
Taky na tom nevidím nic špatného, ale nebylo lepší jazyk navrhnout s dobrým mechanismem pro přetěžování operátorů a tuhle funkčnost udělat až v samotném jazyce?
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
14.3.2011 21:32 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ten propastný principielní rozdíl mi vysvětli. Skrývá se tam složitost nebo ne? To je jediný přednesený argument.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 09:23 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jednou je složitost daná algoritmem, podruhé tím, že to vede na syscall, který obsluhuje operační systém, čili jednou je to složitost algoritmu, podruhé programu. V prvním případě může programátor přmýšlet nad tím, jak a jestli vůbec operaci provést, v druhém pouze jestli ji provést nebo ne.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
15.3.2011 09:44 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ono to nevede ani tak na syscall (tedy ne přímo a zdaleka ne vždycky), jako spíš do standardní knihovny. Stejně jako to porovnání polí. Obojí se dá pro konkrétní problém, kde není potřeba obecné řešení a stačí něco specifičtějšího, reimplementovat.

A existují mimochodem modely pro analýzu složitosti, které s tím počítají, takže to rozlišení bych bral s rezervou.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 10:52 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
OK, dobře, asi ten rozdíl není tak propastný, ale pořád je v tom, že jednou ta složitost vychází z podstaty problému, podruhé z technických prostředků použitých pro realizaci programu.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
15.3.2011 11:55 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Já to beru, pokud jsi jeden z těch, kdo tvrdí, že algoritmy nejsou od toho, aby se spouštěly, ale od toho, aby se dokázala jejich správnost :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 13:16 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Myslím, že algoritmy jsou k obojímu :-)
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
14.3.2011 21:49 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jo, k těm operátorům: Přetěžování operátorů v D je a pokud teď dobře koukám do zdrojáků, tak je porovnávání polí skutečně implementováno v knihovně.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
14.3.2011 20:51 Martin Petr | Třinec/Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
C++ sice fucking sucks, to je svatá pravda, ale na rozdíl od D jej někdo používá.
14.3.2011 20:58 Polivka
Rozbalit Rozbalit vše Re: Programovací jazyk D
Konformní ovčan alert!
14.3.2011 21:42 Martin Petr | Třinec/Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Když už něco "nového", tak Haskell, Erlang, Lisp, i když i z toho už jsem vyrostl. Na D nic nekonformního nevidím, kromě té okrajovosti tedy.
Bedňa avatar 14.3.2011 21:24 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Programovací jazyk D
Keď už niečo iné ako c++, tak u++, D je fajn, ale kvalitu návrhu u++ ťažko niečo porazí.
KERNEL ULTRAS video channel >>>
14.3.2011 21:44 pc2005 | skóre: 37 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Programovací jazyk D
ad python, ono to povinné odsazování bloků zrovna programování nezrychluje.

Jinak s tím, že by stačilo upravit parser a syntaxe by se skokově zvýšila souhlasím. Takové VHDL by to potřebovalo jako sůl.

U toho jazyka D na wikipedii se mi líbí zápis funkcí pro různé typy parametrů, ale nějaký klíčový slova se mě moc nelíběj (imho bych taky pak měl problém, kdybych psal třeba v pure C :-D).

Mě osobně připadá vrchol elegance perl bez referencí. Tam jde program zapsat brutálně úsporným způsobem. Teprve u těch referencí se už začíná objevovat ne moc hezká syntaxe. Ale pořád se to ještě dá.
Bystroushaak avatar 14.3.2011 21:47 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
VHDL by potřebovalo zapomenout a znova vymyslet, tentokrát dobře..
14.3.2011 23:06 pc2005 | skóre: 37 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Programovací jazyk D
:-D +1. Nejlepší pak je když člověk píše v Xilinxáckým softu hardware i software a software má všechny výhody eclipse a hardware má tak maximálně editor na úrovni notepadu.
poky74 avatar 14.3.2011 22:05 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Programovací jazyk D

Musím souhlasit, právě dělám na jednou hodně velkém projektu, který je právě v D, návrh toho jazyka je opravdu dobrý.

Rozhodoval jsem se, jesti to napsat v C nebo D, vsadil jsem na garbage collector a času to uspoří opravdu hodně.

Dčku fandím, pokud by v budoucnu byl čas, rád bych se zasloužil o nějakou českou dokumentací, snad se někdy ozvu ohledně pomoci an té wikině :-)

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
14.3.2011 22:17 Lumen
Rozbalit Rozbalit vše Re: Programovací jazyk D
Viděl jsem budoucnost a ta patří funkcionálním jazykům typu Haskell nebo Erlang. D je jen další z nekonečné řady variant "vylepšené, zjednodušené C/C++", ale stále svázané všemi důsledky imperativního paradigmatu. Referenční transparentnost k eliminaci chyb v čím dál komplexnějším software, snadnost paralelizace s masivním nástupem vícejádrových procesorů - na to nemají imperativní jazyky odpověď.

Kdo pochybuje o "reálné praktičnosti" čistě funkcionálního jazyka jakým je třeba Haskell, ať zavítá např. na Hackage a možná změní názor.

Mimochodem implementace GHC nabízí jak interpretr pro snadné prototypování tak výkonný kompiler do nativního strojového kódu, který co do efektivity překvapivě moc nezaostává za GNU gcc (rychlost běhu i paměťové nároky - cca dvojnásobek).

Bystroushaak avatar 14.3.2011 22:18 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Sure, naprogramuj mi v tom ovladač hardware, nebo operační systém. Tj totiž to, co se v D dá pořád docela v pohodě udělat.
14.3.2011 22:31 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Programovací jazyk D
Existuje operační systém House, který je napsán v Haskellu. Dialekt Haskellu zvaný Habit se mj. zaměřuje také na systémové programování.
Bystroushaak avatar 14.3.2011 22:33 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ok.
14.3.2011 22:23 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Programovací jazyk D
a me v tom naprogramuj nasobeni matic 1000x1000...

btw. da se takova matice v haskellu vubec nejak *efektivne* representovat? (tj ne pomoci spojovyho seznamu)
The enemy of my enemy is still my enemy.
14.3.2011 22:35 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Programovací jazyk D
Haskell má pole.
15.3.2011 19:14 Lumen
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nevím co si představuješ pod efektivně, ale haskell má už celkem dlouho modifikovatelná pole, která jsou implementačně velmi podobná polím např. v C. Viz. článek o výkonných polích na haskell.org .

Mimochodem na násobení matic o 1e6 prvcích typu Double bohatě stačí ty "neefektivní" spojové seznamy. Pokud to teda není v nějaké kritické smyčce, kde záleží na každém taktu CPU.

17.3.2011 14:06 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nevím co si představuješ pod efektivně, ale haskell má už celkem dlouho modifikovatelná pole, která jsou implementačně velmi podobná polím např. v C. Viz. článek o výkonných polích na haskell.org .
zajimavy, ale pouziva to monady, takze by ses v podstate musel "prepnout z haskellu" a naprogramovat to imperativne... Ale samozrejme lepsi nez nic...
Mimochodem na násobení matic o 1e6 prvcích typu Double bohatě stačí ty "neefektivní" spojové seznamy. Pokud to teda není v nějaké kritické smyčce, kde záleží na každém taktu CPU.
no to nasobeni matic se obvykle pouziva pri simulacich a je potreba je opakovat hodnekrat... ale i kdybys mel pocitac kterej to zvladne dost rychle pri implementaci spojovym seznamem tak to neznamena ze by to nebyla mega prasarna... ;)
The enemy of my enemy is still my enemy.
17.3.2011 14:55 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Programovací jazyk D
zajimavy, ale pouziva to monady, takze by ses v podstate musel "prepnout z haskellu" a naprogramovat to imperativne... Ale samozrejme lepsi nez nic...
Při násobení matic si vystačíte s poli, která se nemění, takže monádu používat nemusíte. Ještě dodám, že lepší balíček pro pole je vector.
14.3.2011 22:23 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Viděl jsem minulost a ta říká, že lidi, kteří tvrdí, že viděli budoucnost, jsou lháři :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 00:55 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Viděl jsem budoucnost a řekl jsem si, že už je na čase přestat fetovat.
14.3.2011 22:58 petko
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ja po tom poskulujem uz dost dlho, ale v poslednej dobe ma zaujalo mono a c#. Nezere to tolko pamate ako java, aplikacie rychlo startuju+da sa zbavit JITovania pri kazdom behu aplikacie a oproti D to ma tu vyhodu, ze je okolo toho cela .net komunita (kniznice atd.).
Bystroushaak avatar 14.3.2011 23:16 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Určitě, C# má spoustu výhod, ale chce .net (mono), tedy několikasetmegabajtovou (tak tohle slovo bude skoro určitě napsaný blbě :P) obludu. Jazyky jako C/C++/D tuhle potřebu nemaj.
15.3.2011 00:30 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D

Rozhodně se nejedná o "několik set megabajtů." Koukám se na Mono v Archu, nainstalované chce 140 MiB. Kdyby se ti to zdálo hodně, připomeň si, kolik dnes stojí jeden gigabajt. Na Windows je pak .Net v současnosti prakticky standardní součástí systému, tak o velikosti ani nemá smysl rozmýšlet.

Jazyky jako C/C++/D si prozměnu tahají jiné obludy, pokud se nejedná o triviální projektíky. Jaký je v tom rozdíl? Pokud se na to podívám z určitého úhlu, .Net přináší do Windows alespoň část výhod centralizovaných balíčků. Podstatná část toho, co by programátor kdy chtěl, je uložená v rozsáhlé system-wide knihovně.

Bystroushaak avatar 15.3.2011 00:37 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Tahají si obludy (make, automake a bůh ví co), ale na straně programátora. Přijde mi poněkud blbé říct uživateli - nainstaluj si náš shit a zaser si jím systém. Operační systém si v něm taky tak nenapíšeš.

Jinak já jsem v C# dělal a dost se mi líbilo, jen je to prostě jiná kategorie, podobně jako třeba java.
15.3.2011 00:54 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D

Jestli přemýšlíš o svém software a jeho závislostech jako o sračce, bude asi něco špatně.

Částečně napíšu — Singularity. Jakmile se v něčem na nižší úrovni povede vytvořit infrastrukturu exportující nejnutnější API do chráněného prostředí vyššího jazyka, je vyhráno

15.3.2011 17:37 petko
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ano ale otazne je, co v tom D uz mas. Zakladne mono ma podla ich stranky 3.7 MB. To je skoro nic ked si zoberes, ze to je velkost jednej mensej fotky. Zober si kolko MB potrebuje taka Qt bez GUI (+vsetky zavislosti) a pamatovo nie je na tom lepsie. Ked zacnes k D zhanat nejake kniznice, tiez to bude cez niekolko mega (a mozno sa mylim, ale neverim ze nie).
14.3.2011 23:26 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Programovací jazyk D
D nevzniklo proto protoze se v C++ blbe programuje, ale proto ze se pro C++ blbe programuje kompilator. Proto vznikl jazyk D, pro ktery se dobre dela kompilator (podobny zamer ma i GO).

Hezke na tom je to ze pak je mnohem jednodussi delat komplexni optimalizace. Horsi je to obvykle s navrhem samotneho jazyka, ktery to obvykle odnese slabymi vyrazovymi prostredky nebo desnou syntaxi.

Jinak trochu mi unikaji vytky smerem k C++, vsechno co si popsal v C++ je.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
Bystroushaak avatar 14.3.2011 23:30 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Pravda. Možná jsem to nenapsal úplně jasně, uznávám že z věty
Walter si uvědomil, že C++ má pošahanou syntaxi a navíc programátorovi hází trámy pod nohy, proto se rozhodl vytvořit nový, lepší jazyk.
není úplně jasné že mu to došlo při psaní kompilátoru (který se programuje blbě hlavně kvůli té syntaxi).
Bystroushaak avatar 14.3.2011 23:35 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jinak trochu mi unikaji vytky smerem k C++, vsechno co si popsal v C++ je.
Tím myslítš ty výhody D? Ano, je to tam, ale není to pohodlné.

Jinak možná je to dané mojí nevědomostí, zkus popsat nějaké konkrétní příklady.
14.3.2011 23:59 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nejake konkretni priklady nepohodlnosti?

Kdyz z toho vytahnu napriklad to porovnavani poli tak to prece jde uplne normalne:
valarray<int> x,y; if (x == y) {}
Sice nemame is, ale ty dva znaky navic urcite nikoho nezabiji:
int x; int &y = x, &z = x; if (&y == &z) {}
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
Bystroushaak avatar 15.3.2011 00:10 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jo, v D se to dá udělat i takhle. Nedělá se to tak, protože to je pěkně na hovno - přehlednost to má jinde než

int[] x, y; if (x == y) { .. }

popřípadě

if (x is y) { .. }

O nějaké intuitivitě nejspíš taky mluvit nejde. Nechápu proč se proti tomu nebouří víc lidí. Osobně cítím silnou potřebu věci vylepšovat, nářadí si taky upravuju podle sebe aby se mi s ním pohodlně pracovalo, celý životní prostor okolo mě vylepšuju aby byl pohodlnější, praktičtější, tak proč ne programovací jazyk?
15.3.2011 00:18 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Programovací jazyk D
Však ale
if (&x == &y)
dělá přesně to, co je napsané v kódu, tedy porovnává adresy. Stejně jako
if (x is y)
ale z tohohle to není až tak zřejmé.
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
Bystroushaak avatar 15.3.2011 00:34 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
No, vždyť já tvrdím to samé. Jasné to je každému, kdo ví co dělá operátor is, tedy že porovnává reference (adresy objektů a vůbec všeho).
15.3.2011 09:28 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Stejně můžeš říct, že if (&x == &y) je jasné každému, kdo ví, co dělá operátor &.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Bystroushaak avatar 15.3.2011 10:57 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Vždyť já netvrdím opak, pouze že je to méně přehledné (různé operace nad pointery bývají občas pěkně divoké).
15.3.2011 11:06 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Zrovna tohle je IMHO otázka zvyku a vkusu.
(různé operace nad pointery bývají občas pěkně divoké).
To jo (když se přidají pointery na funkce, je to dobrej zmatek), ale to není tenhle případ.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
15.3.2011 00:19 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Programovací jazyk D
Problem je v tom, ze lide se pro svoje pohodli vzdavaji dulezitych vlastnosti.

Mozna mi neco unika, ale fakt nevidim zadny fatalni rozdil mezi valarray<int> x; a int[] x;. To same plati pro if (&x == &y) a if (x is y). is je uznavam intuitivnejsi/citelnejsi, ale rozdil je minimalni. Pokud nekdo nerozumi &x == &y tak neovlada ani zaklady Cecka.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
Bystroushaak avatar 15.3.2011 00:30 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jakých důležitých vlastností? D pointery podporuje, ale snaží se od nich programátora odstínit, pokud to není nutné. Fatální rozdíl v tom samozřejmě není, ale je to rozhodně méně přehledné.
15.3.2011 08:17 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Mně přijde zbytečné zavádět na to 2 separátní operátory. Tam, kde mi to je putna, což je většina případů, mi stačí normální porovnání objektů (a to zahrnuje i případ kdy porovnám objekt se sebou samým).
if (x == y) ...
Tam kde mi záleží na tom, jestli jsou stejné adresy v paměti tak můžu použít něco jako
if (x.getAddress() == y.getAddress()) ... 
S tímhle je ten program čitelný i bez toho abych vůbec potřeboval znát nějaké is.
In Ada the typical infinite loop would normally be terminated by detonation.
Bystroushaak avatar 15.3.2011 11:09 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nic přímo proti vám, ale co mají všichni proti is? Je to jeden operátor, jehož funkci si dokáže zapamatovat pravděpodobně i retardovaný žák základní školy pro "speciální" děti. Vážně to není tak složité jak to zde zřejmě mnohým připadá. Zvyšuje přehlednost, což se o použití operátoru reference a použití metody říct nedá.

if (x.getAddress() == y.getAddress()) ...

Tohle je přesně ten trám o kterém jsem psal - místo dvou písmen is budu psát 6x delší název metody, navíc dvakrát. Vizuálně to prostě přehlednější není.
15.3.2011 11:31 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Já to vidím asi takle - každý objekt múže mít mraky vlastností, které chceme porovnávat. Identita je jen jednou z nich. Budeme pro každou zavádět nový operátor? Mě prostě přijde zbytečný. Kdejaký editor umí automaticky doplňovat, takže s tím psaním navíc to nevidím tak strašně. Krom toho, pokud x a z jsou objekty, tak stačí přetížit operátor == a je to skoro totéž. Nebo si napsat metodu is.

C++ má mnoho trámů, ale tohle mi přijde jen jako syntactic sugar, nic zásadního.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Bystroushaak avatar 15.3.2011 11:47 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
D porovnává operátorem is libovolné reference, nikoli jen objekty. Operátor is můžete použít u polí/stringů/objektů/struktur/whatever.

Jinak syntactic sugar .. pro mě jako pro programátora je zásadní jen minimum parametrů jazyka a hlavně syntactic sugar. Kdyby na syntaxi nezáviselo, mohl bych to klidně programovat rovnou v asm, nebo třeba v C a vytvářet si tam vlastní objekty (struktury obsahující data a pointery na fce).

Syntaxe šetří můj čas a nervy. Když mám číst zdroják v D, čtu ho. Když mám číst C++, musím ho luštit.
xxx avatar 15.3.2011 14:09 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: Programovací jazyk D

Jinak syntactic sugar .. pro mě jako pro programátora je zásadní jen minimum parametrů jazyka a hlavně syntactic sugar.

Číst kód po lidech, kteří si libují v "syntactic sugar" je často dost utrpení.

Please rise for the Futurama theme song.
Bystroushaak avatar 15.3.2011 14:25 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
I pokud je syntactic sugar běžně používanou a k tomu použití vymyšlenou součástí jazyka?
15.3.2011 14:54 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
D porovnává operátorem is libovolné reference, nikoli jen objekty. Operátor is můžete použít u polí/stringů/objektů/struktur/whatever.
To ale právě dělá i zápis &x == &y, což je, stejně jako x is y, triviální výraz. Míra přehlednosti je IMHO v tomhle případě zcela subjektivní.
Jinak syntactic sugar .. pro mě jako pro programátora je zásadní jen minimum parametrů jazyka a hlavně syntactic sugar. Kdyby na syntaxi nezáviselo, mohl bych to klidně programovat rovnou v asm, nebo třeba v C a vytvářet si tam vlastní objekty (struktury obsahující data a pointery na fce).
Minimum parametrů - co to znamená? Mezi assemblerem a C je větší rozdíl než jen to, že se v C snáz píše. C poskytuje větší abstrakci. Pokud ten operátor is dělá totéž jako &x == &y, tak další abstrakci nepřináší. Podobně jako operátor pro celočíselnou mocninu nepřináší žádnou další abstrakci oproti násobení. Jen zjednodušuje zápis.

Nesnažím se hájit C++, nedostatků má dost (např. - matně si vzpomínám, že mi nešlo udělta nějakou operaci se šablonama, která mi přišla naprosto logická - nějak to souviselo s tím, že šablony jsou takový chytřejší makra, ale přesně už si to nepamatuju.). Jednoduchá syntaxe je samozřejmě přínos, ale zrovna tohle mi přijde nezajímavý. Spíš jako bys k tomu trámu jen přidal schůdky.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Bystroushaak avatar 15.3.2011 15:08 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
To ale právě dělá i zápis &x == &y, což je, stejně jako x is y, triviální výraz. Míra přehlednosti je IMHO v tomhle případě zcela subjektivní.
To na co jsem reagoval byla ta metoda getAdress - jinak souhlasím že je to subjektivní, v tomhle případě se nejedná o nic jiného než syntaktický cukr.

Tím minimem jsem myslel třeba rychlost, velikost binárky, garbage collector, objektový model a to zdali je k dispozici opensource překladač a pro jaké architektury. V podstatě nevím co dál by mě mělo na jazyku zajímat, kromě syntaxe.
15.3.2011 16:09 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Abych parafrázoval: Když si odmyslím implementační vlastnosti a sémantiku, nevím, co dál by mě mělo na jazyku zajímat kromě syntaxe. Což je samozřejmě pravda :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
Bedňa avatar 15.3.2011 16:34 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jazyk v 21storočí založený na * & je fakt hnus ;-) Čo sa mám vŕtať v pamäti a nerobiť priamo z objektami, potom žiadna správa pamäte nebude fungovať poriadne. Kód je neprehľadný, často sa robia chyby, pomalý vývoj. Každý jazyk/framework, ktorý niečo z toho odstráni je prínosom.
KERNEL ULTRAS video channel >>>
15.3.2011 16:40 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Já s tím souhlasím a v žádném případě nepodceňuju význam syntaxe (mimochodem, ta pascalská je co se ukazatelů týče asi tisíckrát lepší než ta céčkovská), ale zase není úplně úchvatný nápad vylejvat s vaničkou i dítě…
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 16:57 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
mimochodem, ta pascalská je co se ukazatelů týče asi tisíckrát lepší než ta céčkovská
To jako že ta stříška místo hvězdičky je takovým přínosem? (Krom toho, že se blbě píše) :-D
15.3.2011 16:59 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Mhm, a víš v Céčku, co znamená a*b? V Pascalu jo.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 17:04 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Mhm, a víš v Céčku, co znamená a*b?
Pokud vim, co je a a b, vim i co je a*b.
15.3.2011 17:17 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Fakt paráda, místo aby na dvě různé věci byly dvě různé syntaktické konstrukce, budu radši zjišťovat, co jsou jednotlivé operandy zač. Operátor pro zjištění adresy taky koliduje s jiným operátorem, asi aby byla větší zábava.

A že je to optimalizované pro Araby, o tom ani nemluvím. a: ^b čtu hezky zleva a je ukazatel na b. b *a čtu, no, zprava (a protože K. a R. měli hvězdičky v oblibě, když budu chtít deklarovat těch ukazatelů víc, napíšu si hvězdičku pro každý zvlášť). Ale to už se netýká jenom ukazatelů, ale vůbec celé koncepce céčkové syntaxe.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 17:29 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Fakt paráda, místo aby na dvě různé věci byly dvě různé syntaktické konstrukce, budu radši zjišťovat, co jsou jednotlivé operandy zač.
Když ten kód píšeš, tak to zjišťovat nepotřebuješ, protože to víš.
A když kód čteš (po sobě nebo po někom), tak to chceš zjišťovat tak jako tak.
Krom toho, v syntaxi a * b by hvězdička měla smysl pointeru pouze v deklaraci (čili a by byl typ), a deklaraci od výkonného kódu člověk pozná.

K tomu čtení zleva/zprava, myslim si, že to je prakticky jedno. V Pascalu zas máš tu nevýhodu, že když chceš přidat další proměnnou stejného typu, musíš to cpát kamsi doprostřed řádky. V C to připojíš celkom logicky nakonec..., ale imho to je opravdu celkem jedno...
15.3.2011 17:39 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Prostě nutný kontext je širší než by bylo potřeba. Když se do toho zamotají ukazatele na funkce, ukazatele na funkce vracející ukazatele, ukazatele na funkce vracející ukazatele na funkce atd., je z toho odporné porno, ve kterém musí člověk postupovat podle stránku dlouhého algoritmu, aby takovou deklaraci dešifroval.

A jako bonus se tím komplikuje parsování. Fuj, to jsem si zase jednou zanadával.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 17:47 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Širší kontext? V Pascalu je samotná řádka a * b taky nicneříkající. K jejímu pochopení v C o nic širší kontext nepotřebuješ. A při práci s ukazately na funkce afaik vůbec ani hvězdičku nepotřebuješ. Zanadával sis - to bezpochyby ano, jen nechápu na co :-D
15.3.2011 18:14 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ne, v Pascalu jen při pohledu na tenhle výraz vím, že jde o násobení. Tohle je, pravda, problém spíš pro autora parseru než pro programátora s rozumným IDE (nebo aspoň ctags), ale jako ukázka to poslouží.

Mimochodem, že deklarace ukazatele a dereference se zapisují stejně (*identifikátor) je taky hnusné.

Že nechápeš, na co nadávám, je pochopitelné, protože to je jenom syntaxe. O té můžeš vždycky říct, že je to jedno (a ono je, akorát že různé aspekty syntaxe v různých lidech vyvolávají různě silné nepříjemné pocity, o čemž bys zrovna ty mohl dlouze vyprávět :-) ).
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.3.2011 18:28 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Že nechápeš, na co nadávám, je pochopitelné, protože to je jenom syntaxe. O té můžeš vždycky říct, že je to jedno (a ono je, akorát že různé aspekty syntaxe v různých lidech vyvolávají různě silné nepříjemné pocity, o čemž bys zrovna ty mohl dlouze vyprávět :-) ).
Jo jo, s tím souhlasím. Je to o osobních preferencích...
15.3.2011 17:01 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jazyk v 21storočí založený na * & je fakt hnus ;-) Čo sa mám vŕtať v pamäti a nerobiť priamo z objektami, potom žiadna správa pamäte nebude fungovať poriadne.
Žádná správe paměti nefunguje pořádně. Všechno je jen určitý druh kompromisu.
Bedňa avatar 15.3.2011 18:31 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nemáš pravdu.
KERNEL ULTRAS video channel >>>
15.3.2011 18:34 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ok, která správa paměti "funguje pořádně"?
Bedňa avatar 16.3.2011 09:37 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Programovací jazyk D
elviin avatar 16.3.2011 21:41 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jazyk v 21storočí založený na * & je fakt hnus ...

Clearly, if your code has new operations, delete operations, and pointer arithmetic all over the place, you are going to mess up somewhere and get leaks, stray pointers, etc.
Bjarne Stroustrup's C++ Style and Technique FAQ

15.3.2011 16:40 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
To na co jsem reagoval byla ta metoda getAdress
Zavolat metodu objektu, nebo na objekt použít unární operátor mi přijde, z tohodle pohledu, ještě víc jedno. To že jednou to má víc pímenek hravě vyřeší automatické doplňování.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
15.3.2011 20:17 JS
Rozbalit Rozbalit vše Re: Programovací jazyk D
To že jednou to má víc pímenek hravě vyřeší automatické doplňování.
Jeste by to pak ovsem chtelo automaticke cteni. Ja ten argument, ze vic pismenek vubec nevadi, zkratka neberu.
16.3.2011 10:35 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Programovací jazyk D
Že to vůbec nevadí bych neřek, ale taky to neberu jako argument pro zavedení nového operátoru.
Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
15.3.2011 20:30 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Nic přímo proti vám, ale co mají všichni proti is? Je to jeden operátor, jehož funkci si dokáže zapamatovat pravděpodobně i retardovaný žák základní školy pro "speciální" děti.
No nevím, já bych si třeba pod "is" uměl představit "is a", tj.

if (x is Comparable) ...

Ten operátor prostě vyžaduje konkrétní znalosti, a čím víc věcí které člověk "musí" znát, tím hůř.
Tohle je přesně ten trám o kterém jsem psal - místo dvou písmen is budu psát 6x delší název metody, navíc dvakrát. Vizuálně to prostě přehlednější není.

Je to delší ale jednodušeji se to čte. Ten záměr z toho prostě čiší, což se o "is" nedá říct. Nevím, jestli znáte programming by intention, ale tohle je přímo modelový případ.

A dále: jednak normální IDE takové věci umí dovodit, takže píšete: x.gA TAB == y. TAB

A jednak jestli je to o 6 znaků delší je mi fakt putna, protože píšu to jednou a číst se to bude 100x. Důležité je jak se to rychle dá přečíst a ne napsat.

In Ada the typical infinite loop would normally be terminated by detonation.
15.3.2011 22:33 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Je to delší ale jednodušeji se to čte.
No to bych neřekl.
Když vidím &A, tak hned vím, že to je adresa A, jsou to dva znaky.
Kdežto A.getAddress() musím pečlivě zjistit, jestli to není třeba A.getAdress().

Kód v programovacím jazyku prostě není beletrie.
16.3.2011 06:19 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Když vidím &A, tak hned vím, že to je adresa A, jsou to dva znaky.
To právě hned nevíte, protože si to musíte přeložit. Děláte to rychle a často tak si to ani neuvědomujete, ale děláte to. U getAddress si nic překládat nemusíte.
Kdežto A.getAddress() musím pečlivě zjistit, jestli to není třeba A.getAdress().
To taky ne, protože ten kdo si dá práci s getAddress nebude hned vedle toho definovat getAdress - ví že by to bylo nečitelné.
Kód v programovacím jazyku prostě není beletrie.

Ale je. Čím lépe se to čte, tím lépe se tomu porozumí. Tím lépe se do toho může hrabat a tím méně je v tom chyb. Na to se přišlo už dávno.
In Ada the typical infinite loop would normally be terminated by detonation.
16.3.2011 10:39 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
To právě hned nevíte, protože si to musíte přeložit. Děláte to rychle a často tak si to ani neuvědomujete, ale děláte to.
Ten význam chápu přímo. Podobně jako operátory v matematice - tam se člověk každou chvíli setkává s novými operátory.
To taky ne, protože ten kdo si dá práci s getAddress nebude hned vedle toho definovat getAdress - ví že by to bylo nečitelné.
Řekl jsi, že to je systémově definované.
Čili v podstatě všechny objekty/typy by dědily .getAddress(), takže vedle sebe to nebude. Krom toho často člověk používá kód někoho jiného, a co já vim, co tam kdo definoval...
Btw. myslel jsem, že dědičnost nemáš rád..?
Ale je. Čím lépe se to čte, tím lépe se tomu porozumí.
Není to beletrie. Programovací kód je mnohem podobnější matematickým zápisům než beletrii. Má určité bloky, které jsou nějak strukturované, mají mezi sebou určité vztahy a dělí se na podbloky. Ty automaticky předpokládáš, že víc písmenek = lepší čitelnost. Nevím, odkud tento automatický předpoklad bereš, je to nesmysl.
Užitečné to může být tak maximálně pro někoho, kdo ten jazyk nezná. Ten, kdo s tím jazykem už chvíli pracuje, příliš písmenek překáží.
16.3.2011 17:25 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Podobně jako operátory v matematice - tam se člověk každou chvíli setkává s novými operátory.

Programování není matematika.
Čili v podstatě všechny objekty/typy by dědily .getAddress(), takže vedle sebe to nebude.

To je jedno na jaké úrovni to je, nikdo normální nedělá funkci prntf když existuje nebezpečí záměny s printf.
Krom toho často člověk používá kód někoho jiného, a co já vim, co tam kdo definoval...
Jak píšou jiní nemůžu ovlivnit, ale pokud dostanu do rukou takovej humus, kde se překlep může odkazovat na úplně jinou funkci, tak to nejprv přejmenuju na něco normálního.
Btw. myslel jsem, že dědičnost nemáš rád..?

WTF - pokud myslíš debatu o dědění implementace, tak to je poněkud jiný případ.
Programovací kód je mnohem podobnější matematickým zápisům než beletrii
Programování není matematika.
Ty automaticky předpokládáš, že víc písmenek = lepší čitelnost. Nevím, odkud tento automatický předpoklad bereš, je to nesmysl.
Víc písmenek rozhodně nestačí, je potřeba aby ty písmanka dávaly smysl, a ten smysl musí odpovídat záměru programátora. (Programming by intention - najdi si o tom něco.) A beru to ze zkušenosti svojí i jiných (kteří o tom napsali knihy).

In Ada the typical infinite loop would normally be terminated by detonation.
16.3.2011 19:14 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Programování není matematika.
Však jsem taky nic takového neřekl. Řekl jsem, že to je matematice strukturou blíž než beletrii, a za tím si stojím.
To je jedno na jaké úrovni to je, nikdo normální nedělá funkci prntf když existuje nebezpečí záměny s printf.
Čím méně možností, kde nadělat chyby, tím lépe.
(Programming by intention - najdi si o tom něco.) A beru to ze zkušenosti svojí i jiných (kteří o tom napsali knihy).
Děkuji, nechci. To, že někdo o tom napsal knihy nevypovídá vůbec nic o vhodnosti té metody. Já preferuju kód, který nemusím číst, nebo jen minimálně, kód, kde je jeho struktura vidět hned, ne až po přelouskání stránky vytržené z románu.

Ale pokud si někdo myslí, že angličtina je na programování vhodnější než programovací jazyky, tak prosím...
16.3.2011 19:30 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Čím méně možností, kde nadělat chyby, tím lépe.

S tím nelze než souhlasit.
Děkuji, nechci. To, že někdo o tom napsal knihy nevypovídá vůbec nic o vhodnosti té metody. Já preferuju kód, který nemusím číst, nebo jen minimálně, kód, kde je jeho struktura vidět hned, ne až po přelouskání stránky vytržené z románu.
Ony ty knihy jsou docela dobré, ale budiž. Co preferuješ je mi v kontextu téhle debaty jedno... (míněno bez urážky).
In Ada the typical infinite loop would normally be terminated by detonation.
16.3.2011 20:45 extremni lama | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Programovací jazyk D
Programování není matematika.

jasne ze je ;-)
The enemy of my enemy is still my enemy.
17.3.2011 09:20 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Programovací jazyk D
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
15.3.2011 12:27 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Tam kde mi záleží na tom, jestli jsou stejné adresy v paměti tak můžu použít něco jako
if (x.getAddress() == y.getAddress()) ... 
S tímhle je ten program čitelný i bez toho abych vůbec potřeboval znát nějaké is.
1) Je to nechutně dlouhé.
2) Jak by taková metoda getAddress() asi byla implementována? V C++ by to moc nemělo smysl. Nevím jak v D nebo jinde...
3) Je to funkce objektu, takže každej by si to pojmenoval jinak. Někdo by to pojmenoval getAddress(), někdo GetAddress(), někdo getAddr(), no prostě by v tom byl zmatek.
15.3.2011 20:37 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
1) viz výše

2) Může to být implementováno systémem, pojem adresa v paměti je přece systémová věc.

3) Jednak existují rozumné konvence a jednak to může být předdefinovaná metoda/atribut každého typu, takže se tím programátor nemusí vůbec zabývat.

Ostatně & v C++ je na tom úplně stejně, je to předdefinovaný atribut který implementuje systém, kdyby se to místo toho jmenovalo franta tak by to fungovalo úplně stejně.
In Ada the typical infinite loop would normally be terminated by detonation.
15.3.2011 22:36 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Jednak existují rozumné konvence a jednak to může být předdefinovaná metoda/atribut každého typu, takže se tím programátor nemusí vůbec zabývat.
No jo, to by ale znamenalo, že některé/některá jména členských funkcí jsou "zakázaná". To mně přijde vyloženě jako zmatečné řešení, když A.x je pro některá x uživatelská funkce a pro jiná x systémový operátor.
To už je mnohem šikovnější si zapamatovat jeden nebo několik operátorů, vždyť on to není vůbec problém.
15.3.2011 23:06 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Programovací jazyk D
No, když těch takových "není problém" je víc, tak to docela problém být začíná. Čím víc rozsypaného čaje, tím hůř. (Helou, Heskl!)

Ada má hezkou věc pro metadata, říká se jí atributy (viz http://en.wikibooks.org/wiki/Ada_Programming/Attributes), problém je, že se z toho nikdo nechce poučit.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
16.3.2011 06:22 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
A.x je pro některá x uživatelská funkce a pro jiná x systémový operátor
A.x je metoda, a některé x implementuje systém. To je to samé jako když printf implementuje systém a jiné funkce ne.
In Ada the typical infinite loop would normally be terminated by detonation.
16.3.2011 10:44 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
"Implementuje systém"?
Operátor adresy, tedy &, implementuje kompilátor, kdežto funkci printf() implementuje standardní knihovna. Já vůbec knihovnu libc použít nemusím, můžu použít jinou a funkci printf() něčím nahradit, což se taky v praxi děje.

Ať už by se ta getAddress() implementovala na kterékoli z těch dvou úrovní, vždy to bude mít oproti operátoru dost nevýhod.
16.3.2011 17:28 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Implementuje systém = neimplementuje programátor. Je jedno jestli to je kompilátor, nebo runtime. Proti operátoru to nemá technicky absolutně žádnou nevýhodu, protože ten princip je stejný jako u operátoru. Je to zrovna to samé jestli se píše Add(a,b) nebo a.Add(b) nebo +(a,b) nebo a+b.
In Ada the typical infinite loop would normally be terminated by detonation.
16.3.2011 19:20 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Je jedno jestli to je kompilátor, nebo runtime.
No to není jedno.
Protože knihovny jazyka si můžu volit, můžu požít alternativní, můžu si printf() zadefinovat úplně jinak. Kdežto když je to standardně v kompilátoru, tak je to v daném jazyku skutečně napevno a neměnné.
Je to zrovna to samé jestli se píše Add(a,b) nebo a.Add(b) nebo +(a,b) nebo a+b.
Pokud by a.Add(b) bylo implementováno v kompilátoru, tak by se mi nelíbil zmatek vytvořený tím, že by některá jména členských funkcí byla zakázaná. Pokud by to bylo implementováno mimo kompilátor, nelíbíl by se mi zmatek při použití jiných knihoven.
16.3.2011 19:40 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Kdežto když je to standardně v kompilátoru, tak je to v daném jazyku skutečně napevno a neměnné.

Já říkám že to implementuje systém nějak, to neznamená že to nemůže implementovat někdo jinak. Pokud si udělám vlastní alokátor tak si tu adresu můžu třeba navolit jak chci.
Pokud by a.Add(b) bylo implementováno v kompilátoru, tak by se mi nelíbil zmatek vytvořený tím, že by některá jména členských funkcí byla zakázaná. Pokud by to bylo implementováno mimo kompilátor, nelíbíl by se mi zmatek při použití jiných knihoven.

Zakázané? Nechápu. A zmatek v tom nevidím. a.Add(b) je technicky to samé jako a.+(b) neboli a+b a kde a jak se to implementuje si můžeš najít. Jediný rozdíl je to slovo místo symbolu. Myslím, že považuješ operátory za něco magického, ale ve skutečnosti jsou to jen divně pojmenované funkce / metody.
In Ada the typical infinite loop would normally be terminated by detonation.
17.3.2011 14:30 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Zakázané? Nechápu. A zmatek v tom nevidím.
Tím myslím tu situaci s tím .getAddress(). Když bude mít každý objekt by-default členskou funkci .getAddress(), tak už nemůžu definovat takovou svoji. Vem si třeba například když budeu implementovat socket, potom by člověk čekal, že socket.getAddress() vratí adresu přiřazenou k socket, a vono ne. Nebo třeba kontakt ve správě kontaktů, člověk by čekal, že ceontact.getAddress() vrátí poštovní adresu, a vono to je něco úplně jinýho. (To jsou jen příklady, existuje jistě spousta dalších). Prostě zmatek...
a.Add(b) je technicky to samé jako a.+(b) neboli a+b a kde a jak se to implementuje si můžeš najít. Jediný rozdíl je to slovo místo symbolu.
Já vim, že to je to samé a nepovažuju operátory za nic magického...
Pokud by ta implicitní členská funkce byla přetížitelné, bylo by to opravdu to samé jako s těma operátorama, no ale ono už tak je celkem úchylné, že operátor adresy jde v C++ přetížit :-D
No a nelíbí se mi to množství písmenek, ale tak to je asi věc názoru...
17.3.2011 14:31 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
eh, to jsem zas nasekal překlepů... :/
17.3.2011 21:01 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
Vem si třeba například když budeu implementovat socket, potom by člověk čekal, že socket.getAddress() vratí adresu přiřazenou k socket, a vono ne. Nebo třeba kontakt ve správě kontaktů, člověk by čekal, že ceontact.getAddress()
No ok, tak to může být matoucí - to jsem jen tak nastřelil. Můžeš si tam domyslet něco lepšího třeba socket.memoryAddress ... whatever... nebo viz jak to řeší ta Ada...
Pokud by ta implicitní členská funkce byla přetížitelné, bylo by to opravdu to samé jako s těma operátorama
Tak to může být a nemusí, zrovna u adresy bych to asi nedoporučoval, u aritmetických operací se to v jistých rozumných případech dá tolerovat.
už tak je celkem úchylné, že operátor adresy jde v C++ přetížit
Ano.

No a nelíbí se mi to množství písmenek, ale tak to je asi věc názoru...

aka. f u cn rd ths, u r gd cmp pgm

Dovolím si střelit od boku, ale "nelíbí se mi množství písmen" = "nechce se mi to psát" ? Pak jsou 2 řešení 1) nauč se psát rychleji 2) nech si od ide doplňovat slova a konstrukce.
In Ada the typical infinite loop would normally be terminated by detonation.
17.3.2011 23:18 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Dovolím si střelit od boku, ale "nelíbí se mi množství písmen" = "nechce se mi to psát" ?
To by mi ani tak nevadilo, spíš mi to pak přijde hrozně nepřehledný. Čili kvůli čtení než kvůli psaní. Samozřejmš příliš málo písmenek je druhý extrém...
15.3.2011 16:19 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Programovací jazyk D
Tak ono taky psat &other == this na zacatek kazde implementace operatoru == je docela standard.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
15.3.2011 20:32 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Programovací jazyk D
To ano, ale na tom je hezké zejména to, že mě to jako uživatele toho operátoru právě vůbec nemusí zajímat. "Hloupý" operátor to vůbec nemusí dělat, "chytrý" může ale oba budou mít stejné výsledky.
In Ada the typical infinite loop would normally be terminated by detonation.
Josef Kufner avatar 15.3.2011 01:54 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: Programovací jazyk D
A co takový Javascript? (resp. ECMA script či QtScript)

Pokud se zapomene na webové prohlížeče a jejich "krásnou" kompatibilitu, tak je to velmi pěkný funkcionální jazyk. Chce to sice jako podklad kus kódu v C++ (QtScript), ale i tak se to pro určité aplikace může velmi hodit a značně rozšířit jejich možnosti.
Hello world ! Segmentation fault (core dumped)
15.3.2011 19:15 zulu
Rozbalit Rozbalit vše Re: Programovací jazyk D
V podstatě souhlasím, v některých ohledech si mi D líbí, a C++ mě naopak se.. štve. Ale ty, když víš kulový a velkolepě to demonstruješ, budeš něco namachrovaně komentovat? Trapné.
poky74 avatar 15.3.2011 19:34 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Rozbalit Rozbalit vše Re: Programovací jazyk D

"Kecy jsou levnéUkaž mi kód."

Narozdíl od tebe, který opravdu jenom namachrovaně komentuje, autor se jal o tom jazyku informovat a pracuje na wiki. Ty jsi vrchol trapnosti.

(A já jsem asi zase nakrmil trolla :-D ).

Chcete Linuxové samolepky nebo Tuxe na klíče? ->
17.3.2011 01:57 zulu
Rozbalit Rozbalit vše Re: Programovací jazyk D
autor se jal o tom jazyku informovat
OK, ale takovým stylem, on?
A já jsem asi zase nakrmil trolla
Ne, myslel jsem to vážně.
Bystroushaak avatar 15.3.2011 19:50 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ale ty, když víš kulový a velkolepě to demonstruješ, budeš něco namachrovaně komentovat?
Když už jsem spáchal zločin namachrovaného komentování, dovolím si ještě i nějakou tu ignorantskou aroganci; Jo, protože můžu a chci. Problém?
17.3.2011 02:10 zulu
Rozbalit Rozbalit vše Re: Programovací jazyk D
protože můžu a chci
Samozřejmě můžeš a pochopitelně chceš, ale akorát se ztrapňuješ. Kdo tě ještě nezná, ten to brzy pozná.
17.3.2011 12:40 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Samozřejmě můžeš a pochopitelně chceš, ale akorát se ztrapňuješ. Kdo tě ještě nezná, ten to brzy pozná.
To je možná tak tvůj názor. A nevím, co jeho publikováním chceš dokázat...
Bystroushaak avatar 17.3.2011 12:58 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
Samozřejmě můžeš a pochopitelně chceš, ale akorát se ztrapňuješ. Kdo tě ještě nezná, ten to brzy pozná.
Blah blah. Něco jiného než prázdné kecy, třeba konstruktivní kritika, nebo návrh jak něco udělat líp by nebylo? Pokud ne, ztrácím tu s tebou čas.
15.3.2011 20:51 Senior Database Programmer
Rozbalit Rozbalit vše Re: Programovací jazyk D
Ja frcim na Groovy. Ten tu este nebol spomenuty...
15.3.2011 22:06 dejvik | skóre: 11 | blog: vysatost
Rozbalit Rozbalit vše Re: Programovací jazyk D

Jak je na tom jazyk D s rychlostí? V porovnání třeba s C++? Dal by se v tom bezbolestně napsat 3D engine nad OpenGL, který by byl rychlý?

Mohl bych to pak portout na ARM phone? (Android/iPhone/Meego)

15.3.2011 22:27 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D

gcc (gdc) a LLVM (ldc) kompilery pro D samozřejmě ARM podporují, ale jsou, co se týče podpory jazyka, oproti oficiálnímu DMD přirozeně pozadu a na D2 se dá prozatím rovnou zapomenout. Měla by u nich být rychlost v porovnání s C++ téměř identická, jelikož jde interně o stejné překladače, pouze jiné "syntaktické frontendy" a knihovny.

Jak si na tom stojí samotné DMD vám ponechám jako cvičení. Nezdá se, že by se v něm momentálně nějaká podpora pro jiné architektury než x86 nacházela.

Bystroushaak avatar 15.3.2011 22:36 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
gdc pokud vím podporuje D2, ale je nutné si ho zkompilovat ručně, v distribučních repozitářích jsou v naprosté většině případů jen balíky D1.
Bystroushaak avatar 15.3.2011 22:38 Bystroushaak | skóre: 35 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Programovací jazyk D
16.3.2011 02:01 ____ | skóre: 15 | blog: _
Rozbalit Rozbalit vše Re: Programovací jazyk D
Zrovna tak ldc, co jsem to tak procházel. Je to spíš v experimentálním stádiu.
15.3.2011 22:42 oryctolagus | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Programovací jazyk D
Dal by se v tom bezbolestně napsat 3D engine nad OpenGL, který by byl rychlý?
D má GC, takže to by mohl být potenciálně problém, ale na wiki píšou, že se dá kontrolovat/deaktivovat (nevím detaily), takže by to asi jít mělo...

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.