BIWAK to nazwa cyklu wykładów dotyczących ciekawostek informatycznych. Na najbliższym spotkaniu zostanie poruszony temat języka programistycznego D.
BIWAK (Bitowy Intensywny Wysoko Atrakcyjny Kurs) to nazwa cyklu wykładów prowadzonych przez studentów, w bieżącym roku akademickim odbywający się co wtorek o godzinie 18:30 w sali 224 budynku C2 Akademii Górniczo-Hutniczej. Organizacją tego cyklu zajmuje się Koło Naukowe BIT.
Język D to wieloparadygmatowy język oprogramowania będący następcą języka C. Jest on ciekawą propozycją dla osób zainteresowanych programowaniem aplikacji natywnych, na które – wbrew pozorom – wciąż jest zapotrzebowanie. D jest językiem nowoczesnym, powstałym w 2007 roku, ale dającym programiście dużo swobody np. umożliwiającym wykorzystanie wstawek asemblerowych.
Wykład na temat języka D zostanie poprowadzony przez Tomasza Jędrzejewskiego dnia 16 listopada.


„następcą języka C” kolejny?;)
nikt jeszcze flejma nie zaczal? ze kolejny bezuzyteczny jezyk?
„Bezużyteczny” to może nie.
Ale jest z nim kilka problemów: brak dobrej „standardowej” specyfikacji (specyfikacją jest kompilator – chyba), jeden proprietary kompilator od Marsa (chyba zamknięty), jakieś nieoficjalne patche na gcc ale na ogół lagujące za obecnymi gccami, jakieś mgliste plany związane z LLVMem ale mało konkretne.
A szkoda, bo niektóre pomysły całkiem fajne.
Kilka sprostowań: dmd jest otwarty, gdc już za bardzo nie laguje, odkąd przejęli go inni ludzie :). Język mnie się nie bardzo podoba i tak ;).
od marsa sa 2 kompilatory (do 2 dosc roznych wersji jezyka), od gcc masz gdc – wiec prosze zanim zaczniesz sie wypowiadac na temat w ktorym brakuje Ci wiedzy, zweryfikuj ja…
btw. d jest dosc stary, a mimo tego przez lata nie przebil sie.
mimo iz bardziej podoba mi sie vala, chetnie bym zobaczyl film z owego wykladu…
Obawiam się że różnimy się po prostu w ocenie co powinien mieć sensowny język. Dla mnie standard i szczegółowa semantyka to podstawa, bez tego język nie istnieje jako taki. A z tego co wiem do D nie ma nawet wyczerpującego i oficjalnego zestawu testów!
W takiej sytuacji kto mi odpowie na pytanie „jak zachowa się konstrukcja X w sytuacji Y?” – kompilator? Chyba żartujesz… Kompilatorów jak sam piszesz jest kilka. Poza tym mogą równie dobrze uznać że X w Y to jest wewnętrzna sprawa implementacyjna i zmienić to w następnej małej wersji. I nie, to nie są problemy wyssane z palca, jak się programuje prawdziwe systemy to takich problemów jest od groma, szczególnie gdy wchodzi wieloprocesorowość, wielowątkowość, trzeba programować unikając locków i tak dalej.
Co do kompilatorów to napisałem zgodnie z prawdą więc nie wiem gdzie mi tej wiedzy brakuje:
1. jest sobie dmd tyle że z tego co wiem nie jest w całości open-source (backend) a kod generuje raczej słaby (tak, testowałem) nawet w porównaniu z gcc, przenośność wersji 2.0 jest słaba (BSD i inne),
2. jest gcd (czyli patche na gcc) – _jeśli_ są na daną wersję gcc to nawet działają choć kilka padów w testach zaliczyły, jak jest ze zgodnością z językiem to nie wiadomo bo dobrej specyfikacji języka brak,
3. jest ldc tyle że do D 1.0 i działa tak-sobie, poza tym wciąż – nie wiadomo na ile zgodny z językiem.
Podsumowując: fajne pomysły, brak specyfikacji i testów, brak otwartego, porządnego, przenośnego i stabilnego kompilatora generującego dobry kod, który działa dobrze i wszędzie. Też bym chętnie zobaczył film z wykładu.
wlasnie D ma jeden standard. w porownaniu do C/C++ i jeden kompilator z agresywnymi optymalizacjami
I gdzie jest ten jeden standard?
Który to ten jeden kompilator? I czemu jeden to lepiej niż kilka – konkurencja Ci przeszkadza?
I gdzie do diaska są te „agresywne optymalizacje”??? Bo z moim skromnych testów wynika że dmd radzi sobie słabiutko, nawet prosty kod z wykrywaniem widoczności zmiennych i alokacją rejestrów (który nawet gcc ogarnia prawidłowo, nie mówiąc o LLVM) potrafi sknocić…
@gk: standard to nie zawsze oznacza otwarty standard ;p, A standard ustala właśnie kompilator digital mars (czyli mamy przynajmniej jeden zgodny z językiem kompilator… czego nie można powiedzieć o C++, gdzie jeszcze nie istnieje kompilator zgodny ze standardem ISO z roku 1998, a teraz dojdzie jeszcze C++0x to już zupełnie będzie, specyfikacja swoje, kompilator swoje).
Otwarty standard to zarówno zaleta jak i wada – zaleta, bo wszyscy mają dostęp do specyfikacji i mogą rozwijać swoje kompilatory i narzędzia (inaczej jest z językami takimi jak Java, D czy C#), dużą wadą jest to, że rozwój otwartego standardu jest problematyczny (nie tak jak w wypadku języków które są zależne od jednej firmy i ich implementacja staje się od razu standardem), co bardzo dokucza twórcy języka C++ (Stroustrup) przy standaryzacji C++0x gdzie nie przeszło kilka rzeczy, które były dla niego bardzo ważne.
Język D jest bardzo fajnym językiem, z bardzo przyjemnymi featurami… ale nie widzę przed nim przyszłości – raczej nie dogoni optymalizacjami kompilatorów GCC czy ICC, nie ma szans mieć takiej bogatej bazy narzędzi, bibliotek, ani wsparcia producentów sprzętu który wymusi programowanie w tym języku na jakieś urządzenie (apple i przymusowa popularyzacja obj-c)… to sprawia, że ten język popularny się nie stanie.
Jest gdzieś jakieś udane wdrożenie tego D? Jakaś aplikacja sensowna jest w tym napisana?
A ja chciałbym, żeby ten język się rozpowszechnił. Zainteresowałem się nim jakiś rok temu. Jestem początkującym programistą, więc nie wypowiem się w kwestiach dopracowania samego kompilatora. Ale język jest skonstruowany dobrze, jest wygodny i zawiera sporo usprawnień w stosunku do C.
Killavus – napisałem już prosty edytor kodu źródłowego z pomocą bindingu do GTK+ (ale nie wiem, czy uznasz go za sensowny program), a teraz piszę komunikator internetowy używając z kolei QT. Fakt, że zarówno zam język, jak i binding do Qt (którego rozwój dodatkowo został wstrzymany) mają pewne braki, ale komunikator na pewno uda się napisać.
Jeżeli chodzi o bindingi do bibliotek graficznych, to GtkD działa dobrze, podczas pisania nie natknąłem się na żadne błędy. Z Qt nie jest idealnie, ale daje radę.
Chodziło mi raczej o jakieś większe wdrożenia, być może za którymi stoją jakieś firmy / znane organizacje lub są jako-tako znanymi aplikacjami. To, że napisałeś program jest oczywiście bardzo chwalebne ;)…
Kilka sprostowań:
– oficjalna specyfikacja języka jest dostępna na stronie Digital Mars i zawiera ona także pełne informacje odnośnie gramatyki.
– D posiada zestaw testów zgodności ze specyfikacją o nazwie DStress.
– Szybkość języka zależy od tego, jakiego kompilatora się używa. Do C/C++ też są kompilatory generujące bardziej optymalny i mniej optymalny kod.
– DMD jest średnio udany i z tym się nikt specjalnie nie kryje, ale pozostałe dwa kompilatory są dużo lepsze. Mimo iż LDC jest w wersji beta, działa bardzo dobrze.
– Nikt nie mówi o przepisywaniu wszystkiego na D – język z założenia ma być binarnie kompatybilny z C, dzięki czemu może wykorzystywać wszystkie biblioteki napisane dla tego języka.
Główne problemy:
– Sama firma Digital Mars, która nie idzie za ciosem i nawet nie stara się zrobić porządnych narzędzi.
– Wciąż słabe wsparcie dla wieloplatformowości.
Język tworzą ludzie. To od nich i od ich pomysłowości zależy czy się on przebije czy nie. Pokazuje to choćby przykład Rubiego, który przez pierwsze 10 lat istnienia był praktycznie nieznany i dopiero dzięki jednej firmie, która stworzyła w nim framework do tworzenia stron WWW, nagle stał się bardzo popularny.
Oo – napisali mu wreszcie porządną specyfikację? Możesz podać URL bo jak ostatnio szukałem to nie znalazłem. Może ja jestem ślepy albo oni ją dobrze ukryli… 🙂
Co do testów to słyszałem, że są trochę słabe ale sam tego nie sprawdziłem więc nie będę się definitywnie wypowiadał.