OT: Need help with translation D-faq to other languages
Eugene Wissner via Digitalmars-d
digitalmars-d at puremagic.com
Sat Feb 20 22:56:48 PST 2016
On Friday, 19 February 2016 at 04:42:12 UTC, Suliman wrote:
> On Thursday, 18 February 2016 at 18:20:48 UTC, Eugene Wissner
> wrote:
>> On Wednesday, 17 February 2016 at 18:28:08 UTC, Suliman wrote:
>>> Hello, I wrote pretty good FAQ about D on Russian language. I
>>> need help with translation it to English and Germany and
>>> possible to other languages.
>>>
>>> http://dlang.ru/Why-D-is-Better
>>>
>>> I hope it people will like it, it will help to attract more
>>> people and help noobs better understand what D is.
>>
>> It's pretty short. I can do a German translation
>
> Yes, please!
Here it is.
Warum ist D besser?
* Sollte man mit D anfangen, wenn man programmieren lernen will?
Wenn man programmieren lernen will, sollte man mit den
Algorithmen anfangen. In dem Fall je einfacher die Sprache ist,
desto besser. Wenn sie allerdings eine C-ähnliche Sprache
erlernen möchten, D ist die richtige Wahl. Die C/C++ Syntax ist
nicht einfach. Das lenkt vom Wesentlichen ab. Anstatt
programmieren zu lernen, ist man dazu gezwungen, die
Besonderheiten von C/C++ zu lernen. Das heißt, wenn Sie C/C++
lernen, lernen Sie nur C/C++ und nicht das Programmieren als
solches. Das ist das Problem.
* Was macht D besser als C#/Java
Den größten Performanzverlust verursachen virtuelle Maschinen und
die Just-In-Time-Kompilierung. Deswegen gibt es Compiler, die C#
oder Java direkt in den nativen Code übersetzen. D bietet die
vollständige Unabhängigkeit von den virtuellen Maschinen und
öfters einfachere und und für den Programmierer verständlichere
Konstrukte, die ihrer Kürze nach mit Python vergleichbar sind.
* Was macht D besser als C++
C++ hat nur zwei positive Zeichen. Die negativen konvergieren
hingegen gegen die Unendlichkeit. C++ wurde vor sehr langer Zeit
konzipiert und basierte auf dem noch älteren C (das seinerseits
viele konzeptuelle Entscheidungen enthält, die in der modernen
Welt wie Fehler aussehen), die Metaprogrammierung ist überhaupt
“zufällig” entstanden, erst später orientierte sich die Sprache
an dieser Möglichkeit (Und trotzdem gibt es dort viele im Grunde
zufälligen Entscheidungen). D hat einen großen Vorteil: Die
Fehler von C++ wurden berücksichtigt. C++ kann nicht auf die
Kompatibilität verzichten und deswegen ist dort stellenweise
alles ziemlich verkehrt und es kann nie korrigiert werden.
Darüber hinaus, wenn neue Features kommen, wird C++ schwieriger
zu erlernen, da auch die alten nicht verschwinden und man sie
kennen muss.
Auch das auf C++ auferlegte Konzept der objektorientierten
Programmierung führt zu Vererbung, Delegation und Verbreitung der
Fehler. Das trägt der “maskierenden Verschwommenheit” der Bugs
bei, deren Anzahl exponentiell wächst. Als Ergebnis entstehen
fatality Bugs, die man nur mit einer erneuten Wechsel des
Konzeptes bzw. der Plattform gut machen kann.
Was die Geschwindigkeit der Entwicklung angeht, gibt es keine
Wunder. Der unmanaged Code wird immer langsamer entwickelt als
der managed Code, selbst wenn es um eine und dieselbe Sprache
geht. Der Grund ist, dass der unmanaged Code eine Menge Arbeit an
der Fehlerbeseitigung hinzufügt. Es ist glaubwürdig, dass die
Programmierer ungefähr die gleiche Zeit brauchen, um den Code in
einer managed und einer unmanaged Sprache zu schreiben, aber dann
die Fehlerbehebung und -diagnose im Falle von unmanaged viel
zeitaufwändiger ist, schon deswegen, weil es einfach nicht so
viele Bugs bei einem Garbage Collector gibt.
Die Erfahrung zeigt, dass die Programmierer beim Umstieg von C++
auf D bis 50% Zeit beim Schreiben von Code und bis 3-4 Mal bei
der Fehlerbehebung sparen. Besonders werden diese Ersparnisse
beim Schreiben von porduction Cdoe deutlich, wo es feste
Deadlines gibt und man keine Zeit hat, wochenlang nach
Speicherlecks zu suchen.
* Was macht D besser als Python?
Wie ein Entwickler bei Yandex gesagt hat: Ich habe zu schwaches
Gedächtnis um in einer dynamisch typisierten Sprache zu
schreiben. D hat zwar eine an C angelehnte Syntax, ist aber oft
genauso einfach wie Python.
* Was macht D besser als Rust?
Es ist äußerst schwierig sich ein Projekt vorzustellen, in dem
die Programmierung in Rust ökonomisch gerechtfertigt wäre. Nur
embedded und hard real-time könnten Ausnahmen sein. Das ist aber
nur ein Tropfen im Ozean der entwickelten Software. In Rust kann
man kein einziges Programm schreiben ohne ein grundlegendes
Verständnis von Lifetime & Ownership zu haben. Das macht Rust
automatisch sehr kompliziert. D ist in dieser Hinsicht viel
einfacher und universaler.
* Was macht D besser als Go?
In Go brachte Einfachheit zum Primitivismus.
* Hat ein Garbage Collector einen negativen Einfluss auf die
Performanz?
Nein. In realen Projekten, und nicht in synthetischen Benchmarks,
führt der Garbage Collector automatische Optimisierung durch
(Sammeln, Kopieren, Objektverdichtung im Speicher), was erhöht
die Performanz, während der unmanaged Code erfordert, das
dasselbe manuell gemacht, wofür den Programmierern die
Qualifikation bzw. die Ressourcen in den meisten Fällen fehlen.
Heutzutage ist die Performanz vom Maschinencode für die 99% der
Business-Anwendungen zweitrangig: Das Lesen von der Festplatte,
das Lesen vom Netzwerk, die Arbeit mit der Datenbank, parallele
Ausführung, dead locks, schlechte Architektur - viel schlimmere
Ursachen schlechter Performanz. Es gibt Bereiche, wo manuelle
Speicherverwaltung in der Tat notwendig sein kann (Treiber,
Bibliotheken für Spiel-Engines, Datenbank-Engines). Für diese
Fälle ist es auch in D möglich, den Garbage Collector zu
deaktivieren.
* Warum D, wenn in C++ bereits Unmengen an Code geschrieben sind?
Im realen Leben werden Sie keine ernste Anwendung finden, die auf
ihrer ursprünglichen Realisierung basieren würde. Alle 5 Jahre
schreiten wir in neue Dimensionen und nur der weitsichtigste
Entwickler kann sich den Code erlauben, der in 10 Jahren nicht
verworfen wird. Deswegen muss man keine Angst vor modernen
Sprachen haben. Die ermöglichen Ihnen wirklich Ihre Zeit zu
sparen.
* Ist D für Enterprise-Anwendungen geeignet?
Zur Zeit schreiben schreiben solche Unternehmen wie Sociomantic,
EMSI, Weka.IO und andere ihre Business-Logik in D. D wird auch
aktiv in BigData-Projekten eingesetzt, unter anderem in der
Bioinformatik, da es ermöglicht den Code zu schreiben, der
effektiv mit großen und gigantischen Datenmengen zu arbeiten kann.
* Soll man in einem Projekt C++ und D mischen?
Lieber nicht. Es wäre besser, D in den neuen Projekten
einzusetzen. Das Portieren von C++-Code auf D kann sehr aufwendig
sein, auch wenn es hilft den Code einfacher und die Verwaltung
leichter zu machen.
More information about the Digitalmars-d
mailing list