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

Offline Estelhof

  • Użytkownik

# Styczeń 14, 2008, 22:19:55
Co myślicie o następcy c++, czyli o jęzku D. Nie wiem czy następca to dobre słowo, bo D nie dobudowany na c++ tak jak to było przy przejściu z c na c++, ale to nowy język. Trochę o nim czytałem i wydaje mi się interesujący, ale nie ma za sobą bazy takiej jak pierwowzór. Egzystencja czy hegemonia dla D? :)

Offline Mr. Spam

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

RageX

  • Gość
# Styczeń 14, 2008, 22:23:34
Co myślicie o następcy c++, czyli o jęzku D. Nie wiem czy następca to dobre słowo, bo D nie dobudowany na c++ tak jak to było przy przejściu z c na c++, ale to nowy język. Trochę o nim czytałem i wydaje mi się interesujący, ale nie ma za sobą bazy takiej jak pierwowzór. Egzystencja czy hegemonia dla D? :)

D nie jest następcą C++. Jest raczej inną obiektową odmianą C, jak Objective C.

Egzystencja czy hegemonia? ;P. Zawsze fajniej jest jak jest większy wybór.. ;]. Także raczej egzystencja..

Offline eMul

  • Użytkownik

# Styczeń 14, 2008, 22:33:09
hegemonia :)
Dlaczego? Bo mamy Javę i .NET. Połączenie C i Javy nie jest nam potrzebne, bo i tak ma mniejsze możliwości od Javy. No chyba, że ktoś chce pisać system operacyjny, ale tego się chyba na codzień nie programuje...

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Styczeń 14, 2008, 22:36:31
D nie jest następcą C++.

Nie jest i raczej nie będzie. Popatrzmy: kto tego używa? W zasadzie wszystkie ważniejsze nowości wprowadzone w D są już w C#, który ma nieporównanie większe "plecy" za sobą (Microsoft chociażby). A jeśli ograniczymy rozważania do gamedev-u, to tutaj wciąż niepodzielnie króluje C++ :).

Offline Anton Chigurh

  • Użytkownik

# Styczeń 14, 2008, 23:00:07
Swego czasu bardzo mnie zainteresował ten język. zacząłem nawet robić na tym mały projekcik w opengl. Na podstawie tych doświadczeń stwierdziłem jednak, że zasób bibliotek w D jest ubogi. Co więcej to, co jest dostępne to najczęściej bardziej lub mniej udolne wrappery na istniejące biblioteki skompilowane w C. Z wielkim trudem udało mi się użyć jakiejś przeportowanej wersji SDL. Dalej przyznam, że programowało się nieźle. Bez rewelacji, ale przypuszczam, że korzystając z tego języka w pełni, można sporo wycisnąć.

Z tego co wyczytałem (dodatkowo) istniały w owym czasie (kiedy się interesowałem ;-) ) problemy z biblioteką standardową (możliwe, że nadal jest to na rzeczy), mianowicie domyślny i zalecany phobos został przez społeczność uznany, za nieoptymalny, skażony nawykami c++-owymi i ogólnie słaby; w momencie, gdy interesowałem się tym językiem był on wypierany przez niby lepsze, ale wciąż świeże Tango. Zobaczywszy taką burzę spakowałem walizeczkę i sobie poszedłem z powrotem do c++.

W skrócie: uważam, że warto się temu od czasu do czasu przyjrzeć. D odrzuca wiele niepotrzebnych elementów zaznych z c++ (dla mnie np. koszmarnie rozwiązane jest definiowanie metod nie-inline), rozszerza podstawowe elementy (najzwyklejsze tablice mają już charakter obiektowy i np. członka (;) ) .size).

Ponad to, i tutaj uważam, że mamy największą zaletę - język jest kompilowany do kodu natywnego. Nikt nie potraktuje Twojego programu reflectorem, wirtualna maszyna javy nie zje Ci połowy pamięci ram na odpalenie arkanoida itp.

Kolejna (chyba ostatnia) sprawa. Język ten jest stworzony przez ludzi zajmujących się wcześniej tworzeniem kompilatora (z tego co widziałem niezłego) a nie idealistów, czy za ledwie rzemieślników szarego, codziennego c++'a. Ma to dobre i złe strony. Dobre - aplikacje będą ładnie optymalizowane, na prawdę małe i szybkie. Złe - język jest bardzo pragmatyczny. Jest obiektowy, ale nie w 100%(jak Java/C#). Nie zniechęca do używania skótów haków itp. Dla mnie to minus.
W praktyce (imo) nie wiele różni się od c++'a wspartego dobrze zrozumianym std::x.

Offline vashpan

  • Użytkownik
    • Strona

# Styczeń 15, 2008, 00:37:34
Hehm rok temu pisalem o D i nawet spory watek sie z tego zrobil:

http://forum.warsztat.gd/index.php/topic,2509.0.html -> moze zintegrowac ?

Co sie od tamtego czasu zmienilo ? Hmmm raczej niewiele.

Najwiekszym problemem nadal jest brak dedykowanego IDE z prawdziwego zdarzenia. Jest projekt pluginu pod Eclipse ( jak ja nie lubie tego ide :/ ) ktory dostarcza naprawde dobrego uzupelniania kodu i integracje z GDB. Ja jednak uzywam i tak Code::Blocks narazie.

Spatchowany GDB + Code::Blocks pod Windowsem dzialaja bardzo dobrze jako debugger, wiec ten problem zniknal nieco. Brak uzupelniania skladni jest moze meczacy ale powiedzmy sobie szczerze - to jest tylko ulatwienie, a wielu z nas juz nie moze sie bez tego obejsc ;p Ale sie da.

Uzylem D w paru mniejszych, konsolowych programach uzytkowych ;p Pisalo mi sie naprawde wygodnie, no ale to male projekty... Chcialem napisac jakas niewieka gre i dac ja na GPL, tak zeby moze ludzi przekonac ze gamedev rowniez sie da w nim robic, ale mam juz tyle tych planow ze nie wiem czy znajde czas.

Porownywac z C# czy Javy nie ma co, bo to jezyki do innych z zalozenia zastosowan niz D, bardziej "nakierowane" na biznes i RAD. Owszem, pewne rozwiazania skladniowe z Javy czy C# sa, ale to naturalne, bo po prostu upraszcza to skladnie, ktora w C++ jest nieco przerosnieta, choc rowniez logiczna oczywiscie.

D nie jest rozszerzeniem C, tylko zupelnie nowym jezykiem o naprawde sporych mozliwosciach ( radze poczytac ), a to wszystko bez potrzeby posiadania maszyny wirtualnej czy jakiegokolwiek srodowiska uruchomieniowego.

Ja sam nie mialem problemow z podlaczeniem SDL. Oczywiste jest ze nie ma wielu bibliotek, ale fakt ze jezyk jest na poziomie binarnym zgodny z C daje tutaj ogromne pole do popisu w robieniu prostych bindingow ( jedynie "naglowki" funkcji - w cudzyslowiu bo jako tako naglowkow nie ma ;) ). Ponoc w przyszlej wersji ma wspolpracowac takze z klasami z C++ - zobaczymy.

Ja sam widze ten jezyk w Gamedevie. Potrzebne sa jednak narzedzia na dobrym poziomie :/ Widzialem projekty silnikow pisane w calosci w tym jezyku.

Sami tworcy przyznaja ze nie jest to jezyk dla poczatkujacych. Nie jest moze trudny, ale wlasnie ze wzgledu na pewne myki warto przedtem miec pewna wiedze. Ale o C++ tez tak mowia, a jakos na nim sie nauczylem programowac ( moze nie "nauczylem", bo czlowiek tego sie cale zycie uczy, ale wiadomo o co chodzi :D )

Wedlug mnie:

+ Kompilowalny, szybki kod wynikowy
+ Nowoczesna, intuicyjna skladnia, [prostsza niz C++
+ Wszystkie mozliwosci C++ ( poza wielokrotnym dziedziczeniem oczywiscie, za to interfejsy ) i wiele wiecej
+ Garbage Collector - ale opcjonalny ! Nawet podczas jego dzialania pamiec mozna zwalniac bezposrednio, a poza tym mozna go po prostu wylaczyc ;]
+ Nieprawdopodobna szybkosc kompilacji w porownaniu do C++ a nawet do C. Niewielkie programy mozna praktycznie kompilowac "w locie" przed uruchomieniem. Pamietam ze program zlozony ze 150 tys linijek skompilowal sie u mnie na kompie w 30 sekund... A to wszystko dlatego ze skladnia D jest o wiele prostsza i brak naglowkow.

= Wieloparadygmatowy - dla niektorych to minus, ale wedlug mnie dobrze jest miec dowolnosc. Raza mnie mikre programiki w C# albo w Javie posiadajace jedna klasa i pare statycznych metod. Wyglada to sztucznie.

- brak wsparcja wielkich firm - i nie zanosi sie zeby to sie mialo zmienic :/ Microsoft brnie w .NET ( ciekawe jak to sie skonczy ? )
- nadal brak porzadnego IDE, aby mozna bylo bezstresowo pisac programy
- kurde nie wiem juz :) To naprawde dobry jezyk zarowno z punktu widzenia programisty ( wygodny ) jak i uzytkownika ( brak runtime'u )
« Ostatnia zmiana: Styczeń 15, 2008, 00:40:17 wysłana przez vashpan »

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Styczeń 15, 2008, 12:00:16
Przeglądałem ogólne informacje na temat języka D i myślę, że to po prostu język doskonały. Dokładnie taki, jak powinien wyglądać C++, gdyby się rozwijał, szedł z duchem czasu i we właściwym kierunku. Szczególnie dobry do programowania gier - kompilowany do natywnego kodu, dostatecznie niskopoziomowy a równocześnie wygodny. Dlatego bardzo ubolewam, że nie jest popularny i nie ma dobrego wsparcia ze strony narzędzi i bibliotek :( :( :(

Offline Anton Chigurh

  • Użytkownik

# Styczeń 15, 2008, 13:21:03
To może dodaćby to do warsztatowej dystrybucji linuksa wraz z popularniejszymi wrapperami? Nie powinno zająć dużo miejsca, a byłoby "dobrym uczynkiem" nagradzającym dobre chęci digital mars-ów. I jaknajbardziej jest a'propos gamedev'u.

Jakby ktośjeszcze nie znał to tu : http://www.asahi-net.or.jp/~cs8k-cyu/ jest trochę fajnych gier pisanych w D (chyba w niektórych/wszystkich można też znaleźć źródła)

RageX

  • Gość
# Styczeń 15, 2008, 13:39:52
Spoko.. A jak się nazywa kompilator D? Może nazwę paczki pod Debiana znasz, bo mi się szukać nie chce :P.

Offline albireo

  • Użytkownik

# Styczeń 15, 2008, 13:47:05
Zdaje się że są dwa dmd i gdc (ten drugi to chyba tylko frontend do gcc), ale sprawdź na oficjalnej stronie języka: http://www.digitalmars.com/

RageX

  • Gość
# Styczeń 15, 2008, 13:59:23
Zdaje się że są dwa dmd i gdc (ten drugi to chyba tylko frontend do gcc), ale sprawdź na oficjalnej stronie języka: http://www.digitalmars.com/

Ooo.. Dzięki bardzo.. Użyję GDC, bo tak jak mówiłeś, to frontend do GCC, a zależy mi na jak najmniejszym rozmiarze obrazu ;].

Offline vashpan

  • Użytkownik
    • Strona

# Styczeń 15, 2008, 14:15:19
Frontend do GDC to bardzo dobre rozwiazanie, nawet skompilowalem swoj crosscompiler GDC, dla mojego blizej nieokreslonego projektu malego OS'a ;p Ktory wlasnie mam zamiar pisac w calosci w D. Ciekawe co z tego wyjdzie... No ale to po sesji najwczesniej :/

Eh.. gdyby tylko bylo jakies IDE w pelni dobre. Mysle ze Code::Blocks jako baza by sie swientnie do tego nadawal. Ma dobry system pluginow, jest przenosny i szybki nie jak Eclipse... Infrastruktura zwiazana z systemem budowania juz jest, debugger tez, wystarczyloby tylko uzupelniania kodu... Nawet chcialem sie sam za to zabrac :D Ale eh za duzo rzeczy chce a czasu nie ma wiele :(

Moze z tego pluginu do Eclipse cos wyjdzie ( gdyby ktos byl zainteresowany: Descent ) juz od biedy moglbym pod tym molochem pracowac :)

Offline vashpan

  • Użytkownik
    • Strona

# Luty 14, 2008, 12:31:08
Jezyk D nadal nie daje mi spokoju ;)

Ostatnio cos sie ruszylo. Wyszla nowa wersja tego pluginu do Eclipse - Descent. I musze powiedziec ze jestem pod wrazeniem. Uzupelnianie kodu dziala bardzo dobrze, lacznie z podkreslaniem niektorych bledow skladniowych ( jak w C# czy w Javie ). Malo tego, wyswietla takze dokumentacje, zarowno do naszych funkcji jak i do funkcji z biblioteki standardowej. Mozna tez uzywac debuggera z poziomu Eclipse ( np. GDB, ktory sprawuje sie bardzo dobrze. )

Niestety, autorzy nadal pracuja nad systemem budowania programow, wiec tymczasowo trzeba korzystac z jakiegos zewnetrznego narzedza, Make, albo jakiegos sytemu przeznaczonego specjalnie dla D, np. Rebuild, ktory swoja droga naprawde robi wrazenie ( kompiluje pliki z zgodnie z dyrektywami 'import', nie potrzeba wiec zadnego pliku konfiguracyjnego )

Mam nadzieje ze Descent niedlugo stanie sie porzadnym IDE dla D, szkoda tylko ze jest pod Eclipse :(

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

***

Inna rzecza ktora znalazlem jest projekt gry FPS pisanej calkiem w jezyku D, w bardzo zaawansowanym stadium... pisanej przez Polakow. ( A moze sa tez na warsztacie ? )

http://deadlock.team0xf.com/index.php

Offline Elwis

  • Użytkownik

# Luty 16, 2008, 11:25:13
Język bardzo fajny. Duże możliwości. Używam go w moim małym projekciku. Puki co jeszcze nie wyszedłem z konsoli, więc jest raj. Zobaczymy co będzie potem, choć myślę, jakoś sobie poradzę, w końcu mogę użyć bibliotek C

RageX

  • Gość
# Luty 16, 2008, 14:50:17
A jak tak patrzę że ten D to odpowiedź na Javke i C#, czyli żadna rewolucja. Teraz jak się uczyć czegoś nowego to jakiegoś dynamicznego języka. Najlepiej żeby się dawał interpretować i mozliwie kompilowac na wezwanie. Sam na czekam na jeszcze taki który będzie się poruszał między wszystkimi warstwami abstrakcji, będzie dawał manipulować każdą w wygodny sposób (np. opcode'y wyrażane funkcjami i enumami) dynamicznie . Ale to takie małe marzenie, idea na przyszłość. :)