Programowanie D pytania

  1. Czy ktoś wie może czy w języku D można napisać natywny kod dla androida(nie wiem czy to tak powinno zabrzmieć)

  2. W którym z kompilatorów jest takowe uzupełnianie kodu by był podobny podgląd jak tutaj 2WK4l.png

że też jest napisane ten [string server] itp. + opis funkcji.

Chciałbym też znać opinie kogoś kto programuje w tym języku. No i jak ktoś programował w tym języku na androida to chcę wiedzieć dodatkowo jakie ma plusy i minusy oraz porównując go do innych języków pod względem stabilności i szybkości.

Programuje obecnie w php(wiadomo że nie w samym php XD) ale w zawodzie jakoś siebie nie widzę jako programista mimo skończonych studiów licencjackich :slight_smile: Więc chyba na wózkach skończę :P.

To w D można w ogóle coś na Androida napisać?

Żaden kompilator na świecie nie ma możliwości uzupełniania kodu, tak samo jak żaden kompilator nie posiada graficznego interfejsu użytkownika. Chodziło Ci może o edytor lub IDE?

Tak, w D można coś napisać - hello worlda. Jak już się zdecydujesz na konkretną wersję języka (są 2, “obecna” to 2.0), konkretny kompilator (dmd, gdc, ldc) i konkretną bibliotekę standardową (Phobos i coś coś tam jeszcze).

Pod Androida? Kompilatory D kompilują głównie pod x86, potrzebny jest assembler ARM (niewiele androidów stoi pod x86). Ale teoretycznie tak - jest kompilator llvm, z którym już cuda robili - jak np. kompilacja C++ do JavaScirpt poprzez kompilację do kodu pośredniego llvm (coś w stylu bajtokodu Javy) i dekompilacja do JS, ale ile z tym kombinowania…

Jest wtyczka do Eclipse do pisania w D. Jeśli uda ci się jakoś ją zainstalować i nie rozwalisz kompa przy wyborze kompilatora, to napiszesz w tym jakiś projekt. Ale przy próbie pogodzenia D z np. GTK ucierpieć mogą wszyscy dookoła. Qt nawet się nie bawiłem, bo o ile pamiętam to było do D 1.0, a poza tym to był port portu pod Javę (QtJambi, wł. tamtejsze interfejsy C, z którymi D jest w teorii kompatybilny). Sporo bibliotek było pisanych dla D 1.0, a 2.0 jest z nim niekompatybilny (w 1.0 stosowano “in out”, w 2.0 jest “ref”, to tylko jeden przykład, który rozwiązywałem sed’em).

Sam język nie jest zły, ale jego organizacja rozwoju jest tragiczna. Spędziłem przy nim “trochę” czasu, pokładałem w nim spore nadzieje, ale zakończyło się klęską. Ostatnia nadzieja w ldc i llvm.

Stabilność - dużych testów nie robiłem, ale raczej źle nie ma. GC jest (można wyłączyć i samemu zarządzać), żadnych błędów w obliczeniach nie znalazłem (więc kompilatory spełniają swoje zadanie)…

Wydajność - coś pomiędzy C++ bez optymalizacji, a Javą przed JITem. Testowane na GDC i dmd (któryś z nich wypadał lepiej, nie pamiętam który). ldc nie widzi bibliotek standardowych (przez co nawet nic wypisać nie mogłem) i straciłem siły… Testowałem na kilku prostych algorytmach (sortowanie, mnożenie macierzy, wyznacznik macierzy, eksploracja grafów i takie tam). Ten język (wł. implementacje które testowałem) nie ma JITu, więc na poprawę wraz z tym jak długo działa program (jak to ma miejsce w Javie/.NET i innych maszynach wirtualnych) liczyć nie można. Tak więc nie warto w niego inwestować, jeśli potrzebna jest szybkość, lepiej iść wtedy w Javę, tam przynajmniej JIT działa i traci się ~20% wydajności, co aż tak nie boli, a sama wydajność nie jest aż tak potrzebna zwykle.

Zainteresuj się językami C, C++, Java, Python, C#… A jak chcesz mniej znane wynalazki: Scala (polecam!), Groovy, Ruby…

o właśnie o edytory i ide XD.

Razi dzięki za wytłumaczenie. Co do zainteresowania się językami to raczej Java będzie ale być może C++ wybiorę a póki co zostaję przy j po stronie przeglądarki i serwera XD. C# już miałem nieraz z nim problemy że aż niemiło go wspominam, potrafił mi ten visual studio zasyfić lapa tak że rozwaliła mi się w jednym lapie karta graficzna. Ruby i Python hmm jeśli można stosować nawiasy klamrowe przy pętlach czy ifach to ok ale jak nie można to ja bez klamerek nie dam rady sam się wtedy gubię :(. C nieraz miałem tak że chciałem ponownie ten sam projekt skompilować to jakiś error wyskakiwał znów. Więc albo przeglądarkowe albo java albo c++.