Autor Wątek: Język D  (Przeczytany 52093 razy)

Offline h3r3tic

  • Użytkownik

# Kwiecień 17, 2008, 19:33:14
JCoder:
1. Nie calkiem. Mozna to zrobic jako lib. Na windowsy jest DDL (to nie typo), na linuxy Rodin. W Deadlocku uzywalismy DDL'a do automatycznego przegladania pluginow pod katem klas implementujacych odpowiednie interfejsy; pozniej tworzone byly ich instancje, integrowane dalej z reszta engine'u.
2. Faktycznie, obecny GC w Tango / Phobos jest wolny w porownaniu do np. Javy ale nie ma to nic wspolnego z byciem zintegrowanym z jezykiem lub nie. (Bardziej np z obecnoscia unii w jezyku) GC w D jest czescia runtime'a, aby mozna bylo podmienic go na bardziej odpowiedni. Semantyka niektorych elementow jezyka zalezy od GC - np dynamiczne tablice - slicing / konkatenacja.
delete jest dla ludzi ktorzy wiedza co robia, jego istnienie w jezyku jest jak najbardziej plusem. W przeciwienstwie np. do Javy, D nie zaklada ze programista jest debilem.
3. Mozna Jave skompilowac do kodu natywnego... ale wymagania pamieciowe sa straszne a np. genericsy zwalniaja kod zamiast go potencjalnie przyspieszac, jak w wypadku szablonow.
4. Wiec co za problem? Moze w C# / Javie bedzie, ok. Ale w D jest od dawna.
5. Array bounds checking

Anyway, nie rozumiem na czym polega wymienienie kilku losowych cech jezyka / bibliotek, podanie watpliwej jakosci interpretacji i opinii, a w rezultacie skomentowanie ze to nic nowego. Prawde rzecz biorac, od czasow Lispa nie ma wiele nowego w swiecie jezykow programowania...
Co do dalszych zarzutow, wg mnie D swietnie nadaje sie do pisania gier. Byc moze toolchain nie jest obecnie na wysokim poziomie, ale mix wydajnosci kodu wynikowego, ekspresywnosci jezyka, szybkosci kompilacji i latwosci debuggowania czynia D dobrym kandydatem do szerokich zastosowan wsrod 'systems programming'.

vashpan:
Ja uzywam Entice; kumple - Entice, Visual Studio i Vima. Jak ostatnio bawilem sie Descentem, bardzo mi sie nie podobal :S

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline JCoder

  • Użytkownik

# Kwiecień 18, 2008, 13:13:09
JCoder:
1. Nie calkiem. Mozna to zrobic jako lib. Na windowsy jest DDL (to nie typo), na linuxy Rodin. W Deadlocku uzywalismy DDL'a do automatycznego przegladania pluginow pod katem klas implementujacych odpowiednie interfejsy; pozniej tworzone byly ich instancje, integrowane dalej z reszta engine'u.

Na tej zasadzie Java ma Design by Contract. Np. contract4j. Ale to nie to samo, co wsparcie ze strony języka.

Cytuj
2. delete jest dla ludzi ktorzy wiedza co robia, jego istnienie w jezyku jest jak najbardziej plusem. W przeciwienstwie np. do Javy, D nie zaklada ze programista jest debilem.
Znam dobrych programistow, ktorzy stracili całe dni na szukanie błędu spowodowanego delete na UŻYWANYM obiekcie. Może w programie na 100 linii tego typu błąd jest świadectwem debilizmu. Ale w programie na 2 mln linii kodu pisanym przez 10 osób przez 2 lata naprawdę wszystko może się zdarzyć i wtedy dodatkowa ochrona jest błogosławieństwem. Dlatego kontrakty są właśnie bardzo dobrą rzeczą w D :)

5. Ok, czyli częściowa jakaś ochrona jest. Ale gwarancji takiej jak w Java/C# nie ma.

Cytuj
Anyway, nie rozumiem na czym polega wymienienie kilku losowych cech jezyka / bibliotek, podanie watpliwej jakosci interpretacji i opinii, a w rezultacie skomentowanie ze to nic nowego. Prawde rzecz biorac, od czasow L
Ot, po prostu nie robi na mnie wrażenia. Na pewno fajnie, że jest takie ulepszone C++. Jestem jednak sceptyczny odnośnie szerszej adopcji. Może zajmie jakieś nisze. W każdym razie nie jest to "następna duża rzecz" tak jak C było po assemblerach, C++ po C i Java/C# po C++. Zauważ, że każda następna technologia wprowadzała istotne zmiany  w sposobie kodowania projektów. C dało przenośność kodu źródłowego, C++ dało możliwość programowania obiektowego i generycznego przy zachowaniu dużej wydajności, Java dała przenośność kodu wykonywalnego przy dostatecznie dużej wydajności.


Offline h3r3tic

  • Użytkownik

# Kwiecień 18, 2008, 14:59:45
Cytuj
Może w programie na 100 linii tego typu błąd jest świadectwem debilizmu. Ale w programie na 2 mln linii kodu pisanym przez 10 osób przez 2 lata naprawdę wszystko może się zdarzyć i wtedy dodatkowa ochrona jest błogosławieństwem.
Pewnie. Wtedy nie blad, lecz samo uzycie delete moze byc swiadectwem debilizmu ;) Jednak z drugiej strony brak mozliwosci recznego zarzadzania pamiecia powodowal by koszmary programistow aplikacji real-time. Sam fakt istnienia pewnego feature'a w jezyku nie zmusza programisty do jego uzycia.

Cytuj
W każdym razie nie jest to "następna duża rzecz" tak jak C było po assemblerach, C++ po C i Java/C# po C++. Zauważ, że każda następna technologia wprowadzała istotne zmiany  w sposobie kodowania projektów. C dało przenośność kodu źródłowego, C++ dało możliwość programowania obiektowego i generycznego przy zachowaniu dużej wydajności, Java dała przenośność kodu wykonywalnego przy dostatecznie dużej wydajności.
Zgodze sie, ze D nie wydaje sie miec zadnego "killer feature". Faktycznie nowi programisci D mowia ze po przejsciu na D nie musieli uczyc sie wielu nowych podejsc, jezyk wydawal sie zblizony do C++. Jednak gdy ci sami ludzie proboja po jakims czasie znow napisac cos w C++, mozna zaobserwowac roznego rodzaju zalamania psychiczne ;) Najczesiej brakuje delegatek, array slice'ingu, foreach'a, GC, krotkich czasow kompilacji oraz prostego w uzyciu systemu meta-programowania.

Offline Kos

  • Użytkownik
    • kos.gd

# Kwiecień 19, 2008, 15:40:08
Code::Blocks obsługuje GDC.

Offline nameczanin

  • Użytkownik
    • devlog

# Kwiecień 20, 2008, 15:11:41
Code::Blocks obsługuje GDC.

A także oficjalne DMD.

A co z bibliotekami? Ma ktoś jakieś info na temat dystrybuowania lib'ów? Chodzi mi o to, czy można zrobić tak jak w C++: mamy bibliotekę (plik .lib w static albo dodatkowo z DLL) oraz zero kodu źródłowego prócz headerów.

Z tego co doczytałem, to opcja -H w DMD tworzy interface'y. Na stronie oficjalnej pisze, że są podobne do headerów, ale nie są do tych samych zastosowań. Teraz nie bardzo wiem jak to rozumieć.

Da się stwarzać te lib'y w D tak jak w C? (Swoją drogą, jest jeszcze problem outputu OMF / COFF)


EDIT:
Gdzieś wyczytałem, że jedną z cech języka D jest to, iż nie zawiera samych deklaracji funkcji, zawsze od razu definicje. Dlatego też ma powyższe pytanie. Sprawdziłem jednak tą opcje -H, która "generate `header` file". Otworzyłem plik wynikowy, a tam nawet funkcja main jest przepisana tak jak była.

Jeśli dobrze rozumiem, to ten język nadaje się tylko do pisania gotowych aplikacji i bibliotek w Open Source?
« Ostatnia zmiana: Kwiecień 20, 2008, 16:05:16 wysłana przez nameczanin »

Offline krajek

  • Użytkownik

# Kwiecień 20, 2008, 16:09:22

Offline nameczanin

  • Użytkownik
    • devlog

# Kwiecień 20, 2008, 16:18:52
Mniej więcej tak :P Byłem tutaj i obczytałem. Nie do końca o to mi chodziło. Chodzi mi wyłącznie o te headery.

EDIT:
Kurcze, fakt. Nie doczytałem tego wcześniej. Wystarczy instrukcja export. Wtedy można stworzyć deklarację funkcji.
« Ostatnia zmiana: Kwiecień 20, 2008, 16:34:43 wysłana przez nameczanin »

Offline Kos

  • Użytkownik
    • kos.gd

# Marzec 29, 2009, 12:55:25

Offline Kos

  • Użytkownik
    • kos.gd

# Maj 14, 2009, 13:02:21
Znalazłem fajną prezentację jako wprowadzenie do D – całkiem treściwa. Jeśli ktoś chce "obejrzeć sobie" najistotniejsze ficzery języka i tooli na szybko, to w sam raz. :)

http://peter.modzelewski.googlepages.com/dprogramminglanguage
http://peter.modzelewski.googlepages.com/wyk1.pdf

Offline Kos

  • Użytkownik
    • kos.gd

# Maj 23, 2009, 22:41:33
Odgrzeję jeszcze raz kotleta i z radością zaanonsuję, że wyszła nowa wersja Descenta , oznaczona jako 0.5.5. Naprawdę fajne z tego już jest IDE :-).

Info:
http://www.dsource.org/projects/descent/

Offline vashpan

  • Użytkownik
    • Strona

# Maj 24, 2009, 12:13:05
Przydalaby sie jakas lista zmian :)

Poza tym z niecierpliwoscia czekam na system budowania. Owszem mozna podlaczyc jakies zewnetrzne narzedzie ale to nie to samo... :)

Offline Kos

  • Użytkownik
    • kos.gd

# Maj 24, 2009, 12:15:38
Osobiście liczę bardziej na lepszą integrację z zewnętrznym narzędziem, bo nie lubię systemów budowania zintegrowanych betonowo z IDE. :) Zwłaszcza, że DSSS sprawdza się naprawdę nieźle.

Offline Yarek

  • Użytkownik

# Maj 24, 2009, 12:49:25
A ja czekam na paczkę: IDE + kompilator + system budowania + biblioteki i wszystko instalowane  przez 2 kliknięcia myszą :/

Offline vashpan

  • Użytkownik
    • Strona

# Maj 24, 2009, 13:40:35
A ja czekam na paczkę: IDE + kompilator + system budowania + biblioteki i wszystko instalowane  przez 2 kliknięcia myszą :/

Oczywiscie to byla ironia ? :)

Ja osobiscie moge bez problemu pisac w D i z dziesiejszymi narzedziami... Aczkolwiek IMO dla nowoczesnego jezyka kilka podstawowych funkcjonalnosci jest niezbedne: edytor+podpowiadanie skladni"+system budowania+debugger. D to wszystko posiada, tylko ze porozrzucane i rozdrobnione na wiele roznych narzedzi... Brak czegos spojnego. IMO Descent moze sie w cos takiego zmienic...

Osobiście liczę bardziej na lepszą integrację z zewnętrznym narzędziem, bo nie lubię systemów budowania zintegrowanych betonowo z IDE. :) Zwłaszcza, że DSSS sprawdza się naprawdę nieźle.

Hmm, musze w takim razie sie jeszcze raz jemu przyjrzec bo mi jakos nie przypadl do gustu :) Nie lubie idei idacej za tym systemem :)

Offline Kos

  • Użytkownik
    • kos.gd

# Maj 24, 2009, 13:46:23
Nie wiem, jaka idzie za nim idea (fakt, że Scons, do którego przywykłem, miał troszkę inny sposób na configi), ale wg mnie sprawdza się całkiem nieźle. Choć nie zdążyłem go jeszcze wypróbować na dłuższą metę :).