From bd8bcc4ec557ef9a98af2492ba99fa2fe30eb9aa Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Fri, 17 Jun 2016 13:43:13 +0000 Subject: [PATCH] areas-of-d-usage: Proofread text --- areas-of-d-usage.dd | 157 ++++++++++++++++++++++---------------------- 1 file changed, 78 insertions(+), 79 deletions(-) diff --git a/areas-of-d-usage.dd b/areas-of-d-usage.dd index 272c86a75d..6e8c5ac957 100644 --- a/areas-of-d-usage.dd +++ b/areas-of-d-usage.dd @@ -37,7 +37,7 @@ $(DIVC start-icons, $(DIV, $(P This list highlights a selection of applications written in D from various areas. - For an overview of of D's differentiating features, have a look at the + For an overview of D's differentiating features, have a look at the $(LINK2 $(ROOT_DIR)overview.html, D Overview page). ) @@ -49,75 +49,78 @@ $(SECTION2 $(LNAME2 industry, Industry), $(SECTION_FA_ICON building) $(DIVC area-section2, $(P - Companies usually have codebases that are far larger than regular - hobby projects, hence one of their major aims is to write elegant code - that is easy to understand and hence to maintain. In comparison to other languages - like Java and C++, D has many features that help to keep a codebase clean and - boilerplate-free - thus allowing one to be $(LINK2 $(ROOT_DIR)overview.html#productivity, productive). - For example have a look at D's simple and yet powerful + Companies usually have codebases that are considerably larger than most + hobbyist projects, thus an important goal is to write elegant code + that is easy to understand, and therefore maintain. In comparison to other languages, + D has many features that help keep a codebase clean and + boilerplate-free - thus increasing $(LINK2 $(ROOT_DIR)overview.html#productivity, productivity). + Some examples of simple and yet powerful D features are $(LINK2 https://dlang.org/spec/template.html, templates) - or at D's $(LINK2 https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax, Uniform - Function Call Syntax) that allows any function to be called using the syntax - for method calls. + and $(LINK2 https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax, Uniform + Function Call Syntax). ) - $(P Moreover $(LINK2 https://dlang.org/spec/function.html#pure-functions, pure functions), + $(P $(LINK2 https://dlang.org/spec/function.html#pure-functions, Pure functions), the memory-safe subset $(LINK2 $(ROOT_DIR)safed.html, SafeD), $(LINK2 $(ROOT_DIR)spec/unittest.html, special unittest blocks), $(LINK2 $(ROOT_DIR)spec/contracts.html, contracts) and a sane approach to - $(LINK2 $(ROOT_DIR)spec/errors.html, error handling) help - shipping a bug-free program. + $(LINK2 $(ROOT_DIR)spec/errors.html, error handling) aid in + shipping a bug-free product. If at the end of the day $(LINK2 $(ROOT_DIR)overview.html#performance, performance) matters $(MDASH) D has you covered! - You can tune your program with various tools starting from + You can tune your code with tools starting from $(LINK2 https://dlang.org/spec/version.html, conditional compilation) over $(LINK2 https://dlang.org/spec/simd.html, SIMD vector optimizations) to - to $(LINK2 https://dlang.org/spec/iasm.html, Inline Assembler) and many more. + $(LINK2 https://dlang.org/spec/iasm.html, inline assembler), + and $(LINK2 https://wiki.dlang.org/Development_tools#Profiling, many more). ) - $(P D has been used in many, diverse domains. A short selection will be presented below. - For a full overview you can browse the list of reported - $(LINK2 $(ROOT_DIR)orgs-using-d.html, organizations which use the D Language). + $(P D has been used in numerous diverse domains. A short selection is presented below. + For a complete overview, see the list of + $(LINK2 $(ROOT_DIR)orgs-using-d.html, organizations using the D Language). ) ) $(AREA_SECTION3 $(LNAME2 games, Games), $(ARTICLE_FA_ICON gamepad), - Binary compatibility to existing libraries is important in large-scale + Binary compatibility with existing libraries is important in large-scale projects. Remedy Entertainment has successfully shipped the first $(HTTP www.quantumbreak.com, AAA game) to use D code for XBox One and Windows 10. - For more details see Ethan Watson's + For more details, see Ethan Watson's $(HTTP dconf.org/2016/talks/watson.html, presentation). - There exist many pure D open source projects that show the rising popularity + Many pure-D open source projects show the rising popularity of D among game developers. - For example have a look at the cross-platform 3D game engine - $(HTTP dash.circularstudios.com, Dash) or at the D game development toolkit + Examples are the cross-platform 3D game engine + $(HTTP dash.circularstudios.com, Dash) and the D game development toolkit $(HTTPS github.com/d-gamedev-team/gfm, gfm). ) $(AREA_SECTION3 $(LNAME2 web, Web applications), $(ARTICLE_FA_ICON cloud), D's ability to combine low and high-level code in one language, asynchronous - features like Fibers and compile-time function execution makes it well suited - for high-performance asynchronous I/O, concurrency and web applications like - $(HTTPS github.com/rejectedsoftware/vibe.d, vibe.d). - - As an example, have a look at this talk about a - $(HTTPS www.youtube.com/watch?v=_gCFpHxAJRc, mobile game server backend in D) + features like Fibers, and compile-time function execution, makes it well suited + for high-performance asynchronous I/O, concurrency and web applications. + The $(HTTPS github.com/rejectedsoftware/vibe.d, vibe.d) framework is D's + flagship solution for all needs pertaining to networking and asynchronous + event handling. + + For an example success story, see the DConf presentation + $(HTTPS www.youtube.com/watch?v=_gCFpHxAJRc, Mobile Game Server Backend in D). ) $(AREA_SECTION3 $(LNAME2 gui, GUI Applications), $(ARTICLE_FA_ICON desktop), D's high productivity is also beneficial when creating GUI applications. - For example a popular application under Linux is the tiling terminal emulator + Some examples are the Linux tiling terminal emulator $(HTTP github.com/gnunn1/terminix, terminix), - another good example is the D development environment - $(HTTPS github.com/buggins/dlangide, DLangIDE) which is based + the D development environment + $(HTTPS github.com/buggins/dlangide, DLangIDE), which is itself based on the cross-platform D library $(HTTPS github.com/buggins/dlangui, dlangui). - Due to binary compatibility all existing GUI libraries can still be + Thanks to binary compatibility, all existing GUI libraries written in C, C++, + and other languages can be $(HTTPS wiki.dlang.org/GUI_Libraries, easily accessed). )) @@ -126,10 +129,10 @@ $(SECTION2 $(LNAME2 system-programming, Systems Programming), $(AREA_SECTION3 $(LNAME2 compilers, Compilers), $(ARTICLE_FA_ICON code), - $(P D has been used to write the D reference compiler dmd itself, Facebook's fast C/C++ preprocessor + $(P D is used in the reference DMD compiler itself, Facebook's fast C/C++ preprocessor $(HTTPS github.com/facebookarchive/warp, warp), the $(HTTPS github.com/higgsjs/Higgs, - Higgs Javascript Virtual Machine) and many more. - Moreover D's compile time function execution allows to generate custom grammar parsers + Higgs JavaScript Virtual Machine), and more. + D's compile time function execution allows generating custom grammar parsers at compile time - see e.g. $(HTTPS github.com/PhilippeSigaud/Pegged, Pegged) as an example. ) @@ -138,9 +141,9 @@ $(AREA_SECTION3 $(LNAME2 compilers, Compilers), $(ARTICLE_FA_ICON code), $(AREA_SECTION3 $(LNAME2 operating_systems, Operating systems), $(ARTICLE_FA_ICON linux), $(DIV, - D is a systems programming language and well suited for bare metal - or kernel development. It's easy to write an Operating System in D and many - project have proven so $(COMMA) to name a few: + D is a systems programming language and is well suited for bare metal + or kernel development. It's easy to write an Operating System in D, and many + project have proven so. To name a few: $(UL $(LI $(HTTPS github.com/xomboverlord/xomb/tree/unborn, XOmB) - Exokernel operating system) @@ -152,27 +155,26 @@ $(AREA_SECTION3 $(LNAME2 operating_systems, Operating systems), $(ARTICLE_FA_ICO $(AREA_SECTION3 $(LNAME2 embedded, Embedded applications), $(ARTICLE_FA_ICON gears), - Using $(HTTPS github.com/ldc-developers/ldc, LDC) (with LLVM as backend) - enables one to target many CPU architectures, - ranging from ARM and MIPS-based embedded systems and smartphones - over server systems based on POWER and Sparc up to the "big iron" z System. + Using $(HTTPS github.com/ldc-developers/ldc, LDC) (the LLVM D compiler) + enables targeting most popular CPU architectures, + starting from ARM and MIPS-based embedded systems and smartphones, + ranging to server systems based on POWER and Sparc, and up to the "big iron" z Systems. )) $(SECTION2 $(LNAME2 cutting-edge, Cutting-edge research), $(SECTION_FA_ICON space-shuttle) $(DIVC area-section2, - D is similar to popular scientific languages like Python as it provides - the conveniences of a modern language with a friendly syntax and is - garbage collected by default, allowing you to worry about writing your program, - rather than handling memory issues that few scientific programmers need to worry about. - However it is is a compiled, statically typed language that can produce code as fast as C, - allows to easily parallelize your algorithm and pipelines, - and as a system language it gives complete control (including manual memory management) - if you need to squeeze the last few cycles out of your processor to make your program - even faster. - - We now spotlight a few specific areas: + D is similar to popular scientific languages like Python, as it provides + the conveniences of a modern language with a friendly syntax, and is + garbage collected by default. Convenience features allow spending time on rapid prototyping, + rather than fighting memory issues that few scientific programmers need to worry about. + However, it is also a compiled, statically typed language that can produce code as fast as C, + allows easily parallelizing algorithms and pipelines, + and, as a system language, provides complete control (including manual memory management) + to get those last few extra cycles. + + A few specific spotlight areas: ) $(AREA_SECTION3 $(LNAME2 numerical, Numerical computing), $(ARTICLE_FA_ICON calculator), @@ -180,12 +182,12 @@ $(AREA_SECTION3 $(LNAME2 numerical, Numerical computing), $(ARTICLE_FA_ICON calc Like NumPy, D is convenient and offers the ability to bind to existing C libraries. Unlike NumPy, D does not become slow for computations not covered by preexisting libraries, and does not force its user to escape into another language. - Additionally due to D's introspection at compile-time it enables + Additionally, due to its compile-time introspection capabilities, D enables further optimizations for superior performance. See Andrei's talk $(HTTPS www.youtube.com/watch?v=AxnotgLql0k, Fastware) on this topic. - D's standard library includes support for $(LINK2 $(ROOT_DIR)phobos/std_experimental_ndslice.html, multidimensional arrays) - with supplemental third-party libraries like $(HTTPS github.com/libmir/mir, mir). + D's standard library includes support for $(LINK2 $(ROOT_DIR)phobos/std_experimental_ndslice.html, multidimensional arrays), + with supplemental third-party libraries such as $(HTTPS github.com/libmir/mir, mir). ) $(AREA_SECTION3 $(LNAME2 gpu, GPU Programming), $(ARTICLE_FA_ICON flash), @@ -194,7 +196,7 @@ $(AREA_SECTION3 $(LNAME2 gpu, GPU Programming), $(ARTICLE_FA_ICON flash), working with GPUs for general purpose computation can appear daunting and laborious. Even seasoned users will admit that the performance improvements are often not worth the extra effort. - Thanks to the power the power of D’s type system and static introspection, + Thanks to the power of D’s type system and static introspection, $(HTTP dconf.org/2016/talks/colvin.html, GPU Programming) is safer and easier to use than traditional APIs with no compromise in performance. @@ -202,17 +204,17 @@ $(AREA_SECTION3 $(LNAME2 gpu, GPU Programming), $(ARTICLE_FA_ICON flash), $(AREA_SECTION3 $(LNAME2 data_science, Data science), $(ARTICLE_FA_ICON area-chart), - D's high-level abstraction and fast runtime make it well-suited for scientific - analysis. For example $(LINK2 http://ddili.org/ders/d.en/ranges.html, D's ranges) + D's high-level abstraction and fast execution make it well-suited for scientific + analysis. For example, $(LINK2 http://ddili.org/ders/d.en/ranges.html, D's ranges) are a natural fit for pipes and data streams. - One can start from a small D script with a small subset to test - some analysis and easily switch to the full set by enabling optimizations + One can start from a small D script with a small subset of data for + an analysis, and easily switch to the full set by enabling optimizations for superior performance. - Read Adroll's (Big data marketing company) testimonial + Read Adroll's testimonial $(HTTP tech.adroll.com/blog/data/2014/11/17/d-is-for-data-science.html, "D is for Data Science") - which explains why D is a keystone language for their critical infrastructure. + on why D is a keystone language for their critical infrastructure. eBay recently open-sourced their internal $(HTTPS github.com/eBay/tsv-utils-dlang, data processing utilities) - that are used in their large-scale data mining environment. + used in their large-scale data mining environment. )) $(SECTION2 $(LNAME2 academia, Academia), @@ -220,25 +222,22 @@ $(SECTION2 $(LNAME2 academia, Academia), $(AREA_SECTION3 $(LNAME2 teaching, Teaching), $(ARTICLE_FA_ICON graduation-cap), $(P D's multi-paradigm (imperative, structured, object oriented, generic, functional programming - purity, and even assembly) approach allows to teach in one language and gradually - explain new features without needing to switch to a different language. + purity, and even assembly) approach allows teaching in one language and gradually + explaining new features without needing to switch to a different language. ) - $(P At universities Java is commonly taught because of its memory safety. - D has a memory-safe subset $(I $(LINK2 $(ROOT_DIR)/safed.html, SafeD)) - which safety and ease of use is comparable to Java while still being efficient. - Beginners will also highly profit from the Garbage Collection in D which helps - them to write simple code without any memory management knowledge. - However more sophisticated memory management can easily be done in an advanced + $(P At universities, Java is commonly taught because of its memory safety. + $(LINK2 $(ROOT_DIR)safed.html, SafeD), a memory-safe subset of D, provides + safety and ease of use comparable to Java while remaining efficient. + Beginners will also benefit from garbage collection, which helps + write simple code without requiring any knowledge of explicit memory management. + $(LINK2 $(ROOT_DIR)phobos/std_experimental_allocator.html, More sophisticated memory management) can be introduced in an advanced learning stage. ) - $(P Moreover D's blazingly fast runtime allows it to be used as a high level, + $(P D's blazingly fast compilation allows it to be used as a high level, productive scripting language - just like Python, but with the - advantage of getting $(I static) type checking. - - This also means instead of using a toy language, students can use a real language - that provides all the advantages of multiple languages and enjoy playing with it. + advantages $(I static) type checking. ) - $(P Last but not least there are $(LINK2 http://ddili.org/ders/d.en/index.html, + $(P Last but not least, there are $(LINK2 http://ddili.org/ders/d.en/index.html, books) and $(LINK2 http://tour.dlang.org/, tutorials) freely available online which can be used as resources. )