Czy język D jest wiarygodną alternatywą dla Java i C ++? Czego potrzeba, aby stać się wiarygodną alternatywą? Czy powinienem się tego nauczyć? Czy zasługuje na ewangelizację?
Głównym powodem, dla którego pytam, jest to, że dzięki nowemu standardowi C ++ (c ++ 0x) prawie tutaj, jest dla mnie jasne, że język znacznie przekroczył punkt, z którego nie ma powrotu w odniesieniu do każdego, kto go kiedykolwiek zrozumiał. Wiem, że C / C ++ nigdy nie umrze, ale w pewnym momencie musimy przejść dalej. Nawet COBOL miał swój dzień, a Java pod wieloma względami cofnęła C ++. Więc, co dalej? Czy D wypełnia rachunek?
Odpowiedzi:
To, co decyduje o sukcesie i popularności języka programowania do tworzenia oprogramowania w świecie rzeczywistym, jest tylko częściowo związane z jakością samego języka. Jako czysty język, D prawdopodobnie ma wiele zalet w porównaniu z C ++ i Javą. Przynajmniej jest to wiarygodna alternatywa jako czysty język, przy czym wszystkie inne rzeczy są równe.
Jednak inne rzeczy mają znaczenie dla tworzenia oprogramowania - prawie więcej niż sam język: przenośność (na ilu platformach działa), obsługa debuggera, obsługa IDE, standardowa jakość bibliotek, obsługa bibliotek dynamicznych, powiązania dla wspólnych interfejsów API, dokumentacja, programista społeczność, rozmach i wsparcie komercyjne, żeby wymienić tylko kilka. Pod każdym względem D jest beznadziejnie za Javą, C ++ i C #. W rzeczywistości, argumentowałbym, że pod tym względem stoi on nawet za tak zwanymi językami „skryptowymi”, takimi jak Python, Perl, PHP, Ruby, a nawet JavaScript.
Mówiąc szczerze, po prostu nie możesz zbudować wieloplatformowej aplikacji na dużą skalę przy użyciu D.Z niedojrzałą standardową biblioteką,
brak wsparcia w żadnym nowoczesnym IDE(istnieją wtyczki zarówno dla Visual Studio, jak i Xamarin Studio / MonoDevelop), ograniczone Obsługa bibliotek dynamicznych / współdzielonych i kilka powiązań z innymi językami, D po prostu nie jest dziś opcją.Jeśli podoba Ci się to, co widzisz w D, naucz się tego - nie powinno to zająć dużo czasu, jeśli znasz już Javę i C ++. Nie sądzę, żeby ewangelizacja była pomocna - w tym momencie, jeśli D ma odnieść sukces, to, czego naprawdę potrzebuje, to więcej ludzi cicho z niego korzystających i zajmujących się jego głównymi niedociągnięciami, takimi jak obsługa biblioteki standardowej i IDE.
Wreszcie, podobnie jak w przypadku C ++, chociaż większość zgadza się, że język jest zbyt złożony, tysiące firm z powodzeniem używają C ++ jako części zdrowej mieszanki języków, zezwalając tylko na mniejszy, dobrze zdefiniowany podzbiór języka. Nadal trudno jest pokonać C ++, gdy wymagana jest zarówno surowa wydajność, jak i niewielkie zużycie pamięci.
źródło
Aby dodać do tego moje własne doświadczenia:
Około rok temu pracowałem nad małym projektem gry (3 programistów) trwającym 3 miesiące, w którym używaliśmy D jako naszego podstawowego języka. Wybraliśmy go częściowo jako eksperyment, częściowo dlatego, że miał już powiązania dla SDL i niektórych innych narzędzi, których używaliśmy, a głównie ze względu na korzyści, które wydaje się mieć w porównaniu z C ++.
Uwielbialiśmy go używać. Szybka nauka i łatwa do napisania. Wiele z jego funkcji okazało się nieocenionych i tęsknię za nimi po powrocie do C ++.
Jednak następujące kwestie utrudniły nam życie:
Ogólnie uwielbialiśmy pisać D. Dzięki temu pisanie kodu było łatwe i szybko się uczyliśmy. Kwestie, o których wspomniałem, odzwierciedlają odpowiedź, która została przyjęta na to pytanie - to „dodatkowe” bity, które wymagają adresowania w D, rdzeń jest solidny.
źródło
Zgadzam się, że C ++ staje się językiem ślepej uliczki - i boli mnie to powiedzieć po tym, jak używałem go przez ostatnie 17 lat.
Myślę, że D jest prawowitym następcą C ++. Z punktu widzenia języka „robi wszystko, co należy” (nawet jeśli nie zgadzam się z każdą minutą decyzji). Myślę, że wraz z upadkiem C i C ++ nie ma innego języka na poziomie systemów, który naprawdę mógłby robić to, co robią, jednocześnie utrzymując się w świecie języków współczesnych - z wyjątkiem D! D nie tylko spełnia tę rolę - jest w niej doskonały! Rzut oka na D1.x powinien cię o tym przekonać - ale kiedy spojrzysz na D2.0, to cię powala. Uważam, że nie ma obecnie innego języka, który działałby tak dobrze, jak D2.0 w łączeniu imperatywnych i funkcjonalnych paradygmatów programowania - co tylko nabierze większego znaczenia w nadchodzących latach.
Brak akceptacji głównego nurtu - czy nawet widoczności - jak również dużą skalę, dojrzały, bibliotek - są przeszkodą oczywiście. Jednak myślę, że nie można tego odpisać z tego powodu. Jestem przekonany, że w ciągu najbliższych kilku lat język D stanie się jednym z najważniejszych języków - a ci, którzy teraz traktują go poważnie, będą dobrze przygotowani, aby przejąć inicjatywę, gdy nadejdzie czas.
Myślę, że różnica nastąpi, w dużej mierze, dzięki zaangażowaniu Andrieja Alexandrescu. Nie chodzi o to, aby w żaden sposób zdyskredytować Waltera Brighta, który wykonał doniosłą pracę, aby sprowadzić D na świat. Ale Alexandrescu jest ważną i fascynującą postacią w społeczności C ++ - i stamtąd pochodzi większość potencjalnych przełączników D. Wniósł także znaczący i ważny wkład w rozwój D2.0, wspierając programowanie funkcjonalne.
Nadal może się okazać, że D jest skazany na bycie Betamaxem języków na poziomie systemowym - ale moje pieniądze będą się obracać w ciągu najbliższych dwóch lat.
źródło
Podoba mi się, że D jest dziełem geniusza, przede wszystkim jednego umysłu - Waltera Brighta, którego kompilator Zortech był fantastyczny w swoich czasach.
W przeciwieństwie do tego C ++ to zbyt wiele projektów komitetów, nawet jeśli Bjarne ma na to wpływ. Zbyt wiele dodatkowych funkcji i dziwna nowa składnia. Ta różnica odzwierciedla łatwość uczenia się i łatwość codziennego użytkowania, mniej błędów.
Bardziej spójne języki prowadzą do lepszej produktywności i radości programisty - ale to jest subiektywne i dyskusyjne! (chyba powinienem zagłosować na własną odpowiedź)
źródło
D to dobry język i przyzwoicie popularny , ale jak wszystkie języki, to tylko kolejne narzędzie. To, jakiego narzędzia użyć, zależy od rodzaju osoby, którą myślisz, środowiska, w którym pracujesz, jakie ograniczenia językowe obowiązują w programie, a co najważniejsze, od samego programu. Jeśli masz czas, zdecydowanie polecam naukę D. W najgorszym przypadku nigdy z niego nie skorzystasz. Bardziej prawdopodobne jest, że dowiesz się, które jego aspekty lubisz najbardziej iw jakich warunkach świeci najjaśniej, i wykorzystasz to przy tworzeniu nowych programów.
Poleciłbym spojrzeć na tabelę porównawczą D, aby zobaczyć, jakie funkcje są dla tego języka i sprawdzić, czy brzmi to dobrze dla Ciebie.
źródło
Język D jest nowoczesny. Żaden język nie jest doskonały i nie ma co do tego wątpliwości. Ale języki rodzą się, aby ułatwić życie. Gdzie język D w porównaniu do C ++ ma wiele dobrych funkcji pod względem złożoności. W grę wchodzi wiele innych specjalizacji w zakresie kombinacji języków, co pomaga programistom szybciej kodować, z NAJLEPSZYMI funkcjami wprowadzonymi przez inne języki. Zobacz także: aby uzyskać więcej informacji o D i innych językach
D vs C ++, to kompatybilność, w której zaangażowane są ogromne języki C ++ i wymaga zgodności z D. D pozwala już na 100% zgodność z C, co nadal jest dobrym wynikiem.
D vs C ++, C ++ to moim zdaniem bardzo fajny język, ale jest trudny do kodowania i czasochłonny, wymaga coraz większego doświadczenia, aby osiągnąć sukces, ale D pozwala zrobić to samo z prostotą
D vs C ++, nie jestem pewien, czy C ++ tak, ale D nie zezwala na przypisywanie zmiennych ograniczających żadne typy przy użyciu „auto”, co dobrze jest mieć zmienną dynamiczną, gdy jest to wymagane, można utworzyć ścisły typ
D vs C ++, jeśli masz inne doświadczenie językowe, możesz od razu zacząć z nim korzystać, ma łatwy do nauczenia mapę drogową i jest zaprojektowany przez silny, doświadczony zespół i wsparcie firmy
D vs C ++, bardzo fajna rzecz, jaką znalazłem w D, to styl kodu, wygląda dokładnie tak samo jak C / C ++, podczas gdy kodowanie przypomina, że robię naprawdę nowoczesne C / C ++, które nazywało się D
Jest o wiele więcej dobrych powodów dla języka D, nie ma powodu, aby lekceważyć jakikolwiek język, zawsze jest to wybór użytkownika.
źródło
To naprawdę zależy od tego jakie są Twoje potrzeby - aplikacje komercyjne wielkogabarytowe napisane D robić istnieje na stronie serwera, a do tego D (zazwyczaj przy użyciu Tango / Mango) to idealne dopasowanie, i jest prawdopodobne, aby być w stanie obsłużyć więcej żądań niż w jakimkolwiek innym języku / platformie.
W przypadku bardziej wyspecjalizowanych rozwiązań pod względem protokołów i interaktywności (których jest wiele), będziesz mieć więcej problemów ze znalezieniem potrzebnych bibliotek, a brak narzędzi prawdopodobnie będzie miał na Ciebie większy wpływ.
źródło
D robi wrażenie, a książka Andrieja o tym jest dobrze napisana. Ale jak powiedzieli inni, potrzebujesz narzędzi i wsparcia platformy. GDC może z czasem być odpowiedzią na jedno i drugie.
Widziałeś to?
„Debugger GNU dodaje obsługę języka D”: http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support
Ponadto witryna digitalmars zawiera strony omawiające interfejsy do C i C ++ (dla tych bibliotek, bez których nie możesz żyć). Zastanawiam się, czy są jakieś narzędzia, które mając plik nagłówkowy C, podejmą próbę napisania prototypów D.
Osobiście nie chciałbym w tym momencie naciskać na zrobienie dużego projektu w D, ale użyłbym D do narzędzi wewnętrznych, zdobywania doświadczenia i wprowadzania do niego innych.
Pierwotne pytanie dotyczyło tego, czy D jest wiarygodną alternatywą dla Javy i C ++. Nie sądzę, żeby D i Java naprawdę ze sobą konkurowały w praktyce; D konkuruje z C ++ i teraz Go. Inne pytania dotyczą różnic między D i Go, ale Go jest ogólnie uważane za łatwiejsze w użyciu. Podejrzewam więc, że przyszłość D zależy w dużej mierze od tego, ile jest miejsca na oddychanie między C ++, obecnym królem wzgórza, a Go, znacznie łatwiejszą alternatywą, która ma wsparcie Google.
AKTUALIZACJA: Właśnie odkryłem, że mój ulubiony rozdział książki Andrieja , ten o współbieżności, jest dostępny bezpłatnie online. Zdecydowanie warte przeczytania!
A oto loooong dyskusja o zaletach / celów / podejść idź i D .
źródło
Wygląda na to, że udzielono odpowiedzi na pytanie. D to lepszy język w porównaniu z C ++.
Pytanie, czy ze względów praktycznych D ma wokół lepszą infrastrukturę, jest drugorzędne.
Krótko mówiąc, jeśli oba są zupełnie nowymi językami bez żadnego wsparcia wokół nich, D jest lepszym językiem, a więc lepszym językiem.
źródło
Jako język zawsze uważałem, że D jest bliżej C # niż C ++. Nie w funkcjach i bibliotekach, ale w „odczuwaniu”. Jest o wiele czystszy, przyjemniejszy ... zabawny (niż C ++). IMHO największą przeszkodą w staniu się wiarygodną alternatywą są narzędzia, IDE i debugger. Jeśli D pokona pewne przeszkody w powszechnym użyciu / przyjęciu, pojawi się więcej narzędzi i bibliotek. (Sam wrócę do D, jeśli będzie użyteczne IDE i debugger).
źródło
Świetnie sprawdza się w przypadku moich własnych projektów domowych. Używałbym go w projektach pracodawców, ale nie wiedząc, jak trudno byłoby im znaleźć kogoś, kto przejmie źródło, gdy przejdę dalej. Nie ma technicznych powodów, aby tego unikać, przynajmniej na obsługiwanych platformach. (odpukać)
źródło
Jednym ze sposobów jest szukanie pracy w Twojej okolicy. Znajdź pracę, którą chciałbyś wykonywać i zobacz, o jakie umiejętności proszą. Jeśli proszą o C ++, Ruby, Oracle lub D, to jest to umiejętność, która głównie pomoże ci znaleźć pracę, którą chcesz.
źródło
Wygląda na bardzo dobrze zaprojektowany język; znacznie lepiej niż C - C ++ - Objective C. Mogę żyć przez chwilę bez IDE lub debuggera, ale nie bez dobrej, udokumentowanej biblioteki dla D 2.0.
Wrócę za 6 miesięcy ...
źródło