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

Offline vashpan

  • Użytkownik
    • Strona

# Luty 18, 2008, 16:52:56
Jezeli ktos chce jezyk dynamiczny to sie rzuca na Pythona i Ruby a nie na C# czy Jave moim zdaniem...

D nie mial byc jezykiem dynamicznym i taki nie jest. W zalozeniach nie jest tez jezykiem do tych samych zastosowan co Java czy C#.... Nie jest dla nich bezposrednim konkurentem, jest nim raczej dla C++ i C.

Offline Mr. Spam

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

Offline vashpan

  • Użytkownik
    • Strona

# Kwiecień 13, 2008, 10:24:48
Jakos niedawno wyszla ksiazka ( jedna z pierwszych jezeli nie pierwsza ) o jezyku D, wprawdzie po angielsku, ale to chyba zrozumiale ;) Ciekawe czy ktos ja kiedys wyda w Polsce.

http://www.amazon.com/gp/product/1590599608?ie=UTF8&tag=classicempire&linkCode=as2&camp=1789&creative=9325&creativeASIN=1590599608

Ksiazka nie jest do nauki programowania od podstaw, pokazuje zwiezle elementy jezyka D i opisuje biblioteke standardowa Tango ( ta od community ). Zawsze cos lepszego niz surowa specyfikacja jezyka ;) ( ktora tez nie jest taka zla )

Offline h3r3tic

  • Użytkownik

# Kwiecień 14, 2008, 23:19:59
... A jesli ktos studiuje na WMiI UMK w Toruniu to moze sobie te ksiazke wypozyczyc z biblioteki i zapisac sie na wyklad+laby z D ^^

Offline vashpan

  • Użytkownik
    • Strona

# Kwiecień 16, 2008, 14:11:13
Hm, a to czasem nie wasz team pisze tego FPS w D ? :]

Bo ogladalem i filmik i zdjecia i naprawde dobra robota...

Offline Elwis

  • Użytkownik

# Kwiecień 16, 2008, 14:39:57
Ja piszę interfejs dla SDL pod D :)

Offline h3r3tic

  • Użytkownik

# Kwiecień 16, 2008, 15:14:36
vashpan: Dzieki :D Faktycznie, nasz team. Upolowalem ten watek i przy okazji postanowilem przypomniec sobie o warsztacie/gamedev.pl ::)
Generalnie u siebie na uni propagujemy D ile sie da. Prowadzilismy tez warsztaty D, z ktorych materialy mozna obejrzec pod adresem: http://workshop.team0xf.com/index.php?n=Main.Zajecia
Obecnie przy pisaniu samej gierki mamy troche przerwe z powodu natloku roboty na uni, ale np magisterki bedziemy pisali pod katem integracji z enginem (system renderingu, animacji, particli) :)

Elwis: Jesli jakis interfejs wysokiego poziomu, to spoko. Jesli wrapper niskiego, to obawiam sie ze niepotrzebnie, gdyz jest np Derelict.

Offline Elwis

  • Użytkownik

# Kwiecień 16, 2008, 15:17:34
Oczywiście, że wysokiego. Co do Derelicta, IMHO trochę ssie, bo nawet porządnego skryptu instalacyjnego nie ma :/

Offline h3r3tic

  • Użytkownik

# Kwiecień 16, 2008, 15:22:58
Fakt... Ja zazwyczaj wyrywam pokatalogi 'derelict' z katalogow DerelictGL, DerelictAL, ..., wrzucam do katalogu swojego projektu, a pozniej juz Rebuild / Bu[il]d robi swoje. Byc moze ten (juz troche podstarzaly) tekst bedzie pomocny: http://dmedia.dprogramming.com/?n=Tutorials.SdlGlTutorial1

Offline Elwis

  • Użytkownik

# Kwiecień 16, 2008, 16:25:33
Nie trzeba. Wystarczy zwykły kurs SDLa, przepisać parę nagłówków to żaden problem, a chyba przytym nieco bardziej oszczędny

Offline h3r3tic

  • Użytkownik

# Kwiecień 16, 2008, 18:11:44
Nie sugerowalem ze potrzebny bedzie kurs obslugi SDL'a ;) Po prostu tam w tutorialu napisalem jak ja zawsze instaluje i uzywam Derelicta. Jesli nie do SDL'a, to Derelict moze przydac sie np do FreeType.
BTW, czemu kolegow piszacych w D nie ma na #d na freenode? Jeszcze troche Polakow to przejmiemy ten kanal :P

Offline vashpan

  • Użytkownik
    • Strona

# Kwiecień 16, 2008, 19:25:06
Mnie nie ma na zadnym kanale ;), ale warto wiedziec i pewnie sie zglosze bo powolutku zaczynam pisac maly hobbystyczny systemik operacyjny w D ( lepiej jednak przy takim projekcie nie zapeszac ), i tutaj problemow moze byc nieco.

Hmm... ja z Derelict nie mialem wiekszych problemow, ale rzeczywiscie troche jest rozbuchany. Jak napiszesz juz prosty wrapper to tez go pokaz, bo mi nigdy sie nie chcialo przepisywac tych naglowkow ;)

Offline h3r3tic

  • Użytkownik

# Kwiecień 16, 2008, 19:32:25
Aha, jeszcze jedno. jesli ktos korzysta z DSSS, Derelicta mozna zainstalowac komenda "dsss net install derelict". Osobiscie go nie uzywam, ale np w Defend'zie (RTS w D) zdaje sie dzialac.
PS. Powodzenia z tym OS'em vashpan :P

Offline JCoder

  • Użytkownik

# Kwiecień 17, 2008, 13:09:52
1. Brakuje dynamicznego ładowania klas/modułów. Czyli podobnie jak C++ do aplikacji korporacyjnych nadaje się słabo (nie da się np. napisać kontenera IoC). Podobnie realizacja pluginów jest mocno utrudniona.

2. GC, które jest tylko opcjonalnym dodatkiem do języka natywnie kompilowanego nigdy nie będzie tak wydajne jak GC maszyny wirtualnej. W C++ też mogę mieć podobne GC poprzez doinstalowanie odp. bibliotek np. BDW. Dodatkowo umożliwienie programistom uzywania delete ręcznie powoduje całą masę potencjalnych błędów znanych z C++. Czyli połowa efektu GC idzie na marne - zostaje jedynie ochrona przed przeciekami.

3. Javę też można kompilować natywnie przez GCJ (kiepskie bo kiepskie, ale czasem działa) lub JET (dobre, ale płatne).

4. Design by contract - nie ma żadnego problemu by dodać to w Javie/C# i są duże szanse, że w którejś wersji będzie. Na razie są zwykłe asercje.

5. Brak jakiejkolwiek ochrony przed buffer overflow, off by one itp. Do aplikacji sieciowych teoretycznie odpada.

Ogólnie dla mnie nie jest to jakaś nowa jakość. Dlatego raczej ma małe szanse na szerszą adopcję. Moim zdaniem w biznesie nie ma szans z Javą i C#, w grach na razie z C i C++, w aplikacjach webowych z Javą, PHP, Ruby, w AI z LISPem i Prologiem, a w obliczeniach numerycznych z C, C++, Fortranem i (ostatnio) Javą. Żeby sie przebić musi być w jakiejś dziedzinie świetne lub bardzo oryginalne.

Offline vashpan

  • Użytkownik
    • Strona

# Kwiecień 17, 2008, 18:47:23
@JCoder: < twoja propaganda nawet tutaj dotarla ? ;) >

1. To jezyk kompilowalny wiec z zalozenia nie moze byc czegos takiego. Zreszta nie rozumiem do konca tego o co ci dokladnie chodzi :)

2. Czy swoje twierdzenie opierasz na jakichs testach ? Owszem w C++ mozna tak miec, ale tutaj masz "od zaraz". Jaka masa bledow powstaje w wyniku uzywania delete ? Ja widze tutaj tylko plusy - GC jest ale nieobowizakowy ( bo GC to nie jest idealne rozwiazanie "na zawsze" ), mamy wieksza kontrole nad pamiecia... W Javie wykonuje sie jakies akrobacje zeby zoptymalizowac GC, wywolywac trzeba specjalne metody zwalniajace "nie pamieciowe" metody... Nigdy nie wiesz co sie gdzie znajduje. W programowniu systemowym, do czego tworzony byl D, te rzeczy sa istotne.

4. Moze bedzie ale narazie nie ma... Nie ma w Javie tez wbudowanych unittestow - w D piszesz w module: unittest { <testy> }, albo w klasie: invariant { <testy> }  i po klopocie -> niebo a ziemia w porownaniu z JUnit. Programowanie kontraktowe naprawde daje duze mozliwosci kontroli jakosci oprogramowania.

5. Jezyk D nie byl tworzony z mysla o zastosowaniach sieciowych.

Nowosc jest w tym sensie ze to narazie jedyny kompilowalny i tak wydajny jezyk posiadajacy nowoczesna skladnie i metodyke, bioracy to co najlepsze z C++ i wygode programowania z Javy i C#.  W zalozeniu ma byc konkurencja dla C i C++, Jave rowniez moze wygryzc z niektorych zastosowan... Nadawalby tez sie doskonale do RAD, ale to potrzeba powaznej firmy ktora by stworzyla odpowiednie srodowisko. Znaczacym plusem w porownaniu do C++ jest tez czas kompilacji - o rzedy szybszy niz porownalnej ilosci kodu C++, mniej wiecej na poziomie Javy czy C#

@h3r3tic:

Tak z ciekowosci - Uzywacie jakiegos IDE do swojego projektu ? Czy tak na waleta lecicie ? Bo jak narazie, poki Descent sie nie ustabilizuje nie ma za duzo opcji i to mnie najbardziej boli :(

Offline Elwis

  • Użytkownik

# Kwiecień 17, 2008, 19:21:04
Tak z ciekowosci - Uzywacie jakiegos IDE do swojego projektu ? Czy tak na waleta lecicie ? Bo jak narazie, poki Descent sie nie ustabilizuje nie ma za duzo opcji i to mnie najbardziej boli :(
Ja używam Vima ;)