I probably in the minority but for me D language is already the near perfect language to replace Python and becoming very productive and useful for data science and machine learning programming purposes.

For data science and machine learning, they are two type of programmers namely A and B type, for analysis and building respectively [1]. The former are mostly analysts, scientists or mathematicians that are mainly non-programmer and the B are hardcore programmer that build engine, library, systems and sometime for real-time processing for example embedded signal processing.

For the former, their programming bias are closer to pseudo code and naturally they inclined more towards intuitive programming languages for examples Python and Matlab. For the latter, however, they are mainly library and system builders with real-time bias and their favorite tool are C, C++ and perhaps Rust.

Essentially, Type A prefer easy, low barrier and intuitive languages where real-time is not necessary, while on the other hand Type B required real-time functionality and efficiency regardless of language programming complexity.

From the beginning of programming time, none of the programming languages can really satisfy both types, and that's the main reason Fortran, C and C++ based library are still being widely used by Python, Matlab and Julia, case in point namely LAPACK/BLAS, Eigen and FTTW. D, however, is more than capable of matching and replacing these traditional powerhouse libraries since seven years ago with its Mir equivalent and D should easily satisfy the Type B crowd [3]. Heck you can even write bare metal system without OS with it [4]. Meanwhile, writing bare metal in Julia probably not a very good idea [5].

The harder is to satisfy is the type B crowd and unlike Type B they're fast becoming majority users of the programming languages and this is manifest by the increasing popularity of Python language. For further reading, I'd highly recommend this Ask HN threads on Why did Python win [6].

This is where D language come into the picture, and apparently with D you can have your cake and eat it too [7]. D creators have cleverly make the language has default GC despite extreme disagreement from Type A crowd and they will let you know every time D is mentioned anywhere in the public forum. However, they're kind of missing the big picture since they are fast becoming the vocal minority and most if not all of their requirements can be met with D as proven by Mir [3]. Not only this, D creators also banned macro from the language so D does not have the same fate as Ruby where some Rubyists considered RoR as a ghetto although it's extremely popular and probably the main reason why people is using Ruby in the first place [8].

D seems to hits the sweet spot in becoming the Goldilocks of programming language and it's already an open and mature language that's included in GCC eco-system. Ultimately D need to appeal to the Type A data scientists and this where D creators has gone out of their way to make D as intuitive and Pythonic as possible. In their paper on "Seven Deadly Sins of Introductory Programming Language Design", where these Monash university professors analyzed these popular programming languages back in the day (1996) for their suitability in introductory programming language design namely ABC, Ada, C, C++, Eiffel, Haskell, LISP, Modula 3, Pascal, Prolog, Scheme and Turing [9]. It's a shame that Python is not included because back in 1996 when the paper was written it's still in infancy and not popular as today. Personally, I'd add that not adding a GC as the 8th major or deadly sins of the introductory programming language but it's probably just me. I'm pretty sure that D language authors and designers did not read this seminal paper when they're designing D (I know I asked), but it seems to follow this natural and universal guiding principles that I hope Mojo authors and designers, and other programming languages, will heed as well.

[1] There are two types of data scientists - and two types of problems to solve:

https://medium.com/@jamesdensmore/there-are-two-types-of-dat...

[2] List of numerical libraries:

https://en.wikipedia.org/wiki/List_of_numerical_libraries

[3] Numeric age for D: Mir GLAS is faster than OpenBLAS and Eigen

http://blog.mir.dlang.io/glas/benchmark/openblas/2016/09/23/...

[4] Writing a bare-metal RISC-V application in D:

https://news.ycombinator.com/item?id=37346218

[5] Running Julia bare-metal on an Arduino:

https://news.ycombinator.com/item?id=31481895

[6] Ask HN: Why did Python win?

https://news.ycombinator.com/item?id=37308747

[7] Why I use the D programming language for scripting:

https://news.ycombinator.com/item?id=36928485

[8] Stop Designing Languages. Write Libraries Instead:

https://lbstanza.org/purpose_of_programming_languages.html

[9] Seven Deadly Sins of Introductory Programming Language Design:

https://users.monash.edu/~damian/papers/PDF/SevenDeadlySins....