digitalmars.D - About whether D / rust / golang can be popular.
- zoujiaqing (26/26) Nov 25 2020 Whether a programming language can be popular depends on what?
- Daniel Kozak (17/32) Nov 26 2020 I agree. Google uses golang quite a lot, so it makes sense google helped
- IGotD- (6/7) Nov 26 2020 This definitely. When I program C++ I kind of avoid meta
- Dibyendu Majumdar (21/22) Nov 26 2020 I think many factors:
- Andre Pany (15/42) Nov 26 2020 I assume every developer has another opinion what is the most
- ddcovery (28/36) Nov 26 2020 About GC, I use D as scripting language mainly, and never noticed
- Ola Fosheim Grostad (5/11) Nov 26 2020 Isnt await just syntactic sugar for a promise/future?
- Jacob Carlborg (64/68) Nov 26 2020 No, not really, but it's used together with promises or they're
- Ola Fosheim Grostad (10/24) Nov 26 2020 Ok, we need something that respects shared/nonshared. If
- Jacob Carlborg (16/23) Nov 26 2020 That varies between implementations. You can either do single threading....
- Ola Fosheim Grostad (6/8) Nov 26 2020 Interestingly they chose to not implement a ready-made version of
- JohnT (26/26) Nov 26 2020 ...
- Ola Fosheim Grostad (8/12) Nov 26 2020 I think it would be better if the goals come from the community,
- JohnT (6/7) Nov 26 2020 Yes I agree. Atleast they come up with defined goals. Not sure if
- Ola Fosheim Grostad (6/12) Nov 26 2020 I don't really think being a replacement language should be a
- Ola Fosheim Grostad (5/10) Nov 26 2020 Also, remove outdated stuff. Like, don't link to abandonware from
- Ola Fosheim Grostad (7/14) Nov 27 2020 Ok Jacob, so I got this idea: maybe it would be possible to have
- zoujiaqing (3/73) Dec 06 2020 Yes! await is very good.
- Guillaume Piolat (7/11) Nov 26 2020 The _one_ factor that made C++ win against its competition -
- Dukc (6/13) Nov 26 2020 This could also be the killer feature for D, as Atila has said.
- Jacob Carlborg (6/10) Nov 26 2020 Swift is going for C++ interoperability as well [1]. I assume
- Daniel Kozak (3/13) Nov 26 2020 https://wiki.dlang.org/Calypso
- =?UTF-8?B?Um9iZXJ0IE0uIE3DvG5jaA==?= (28/49) Nov 26 2020 * Stability with minimum breaking changes over a long time
- Ola Fosheim Grostad (9/18) Nov 26 2020 Really? My take is that it is too small and makes C++ frameworks
- IGotD- (16/23) Nov 26 2020 If I would be a manager and to decide which language and tools to
- Ola Fosheim Grostad (3/9) Nov 26 2020 I dont think this is the case. You are just reading the general
- IGotD- (3/5) Nov 26 2020 I read both but the activity in the learn forum is pretty low.
- rikki cattermole (2/8) Nov 26 2020 Of the many places I monitor for questions, Discord is the most active.
- aberba (4/14) Nov 27 2020 That's due to the kind of people olin the Discord vs the Dlang
- solidstate1991 (68/82) Nov 26 2020 It has four main advantages:
- aberba (51/60) Nov 27 2020 Its soo funny though 😂. D be like "Why you do me that?"
Whether a programming language can be popular depends on what? I think there are two important points, that is, killing skills and availability. At the same time pay attention to shortcomings. I'll talk about my opinion today. Must kill skill: Goroutine Availability: the standard library is powerful. IDE powerful. High GC efficiency. friendly debugging tracking tool. It is convenient to realize various functions based on standard library. Have practical pprof and other tools. But language features are too few. Must kill skill: Memory Security Availability: The standard library is very general. IDE powerful. friendly debugging tracking tool. A variety of language features, and will be based on popularity of new features, such as await. Have practical pprof and other tools. Development efficiency of using rust is relatively low. Must kill skill: It looks good? Availability: standard library is poor. Bad IDE. GC efficiency is low. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. Although the language features many but can not add popular practical features, such as await. D language must improve usability if it is to become popular!
Nov 25 2020
On Thu, Nov 26, 2020 at 6:50 AM zoujiaqing via Digitalmars-d < digitalmars-d puremagic.com> wrote:... Must kill skill: Goroutine Availability: the standard library is powerful. IDE powerful. High GC efficiency. friendly debugging tracking tool. It is convenient to realize various functions based on standard library. Have practical pprof and other tools. But language features are too few.I agree. Google uses golang quite a lot, so it makes sense google helped with tooling for it. What IDE do you mean? (GoLand?)Must kill skill: It looks good?Maybe metaprograming?Availability: standard library is poor. Bad IDE. GC efficiency is low. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. Although the language features many but can not add popular practical features, such as await.Standard library is very general and good enought. Bad IDE (thats true). GC efficiency is OK in almost all cases so I woud not say low here because it is not true. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. I do not use these much so can say if thats true or not, but I would think they are similar with rust Although the language features many but can not add popular practical features, such as await. There is not need for await as a language feature maybe have it as a libraryD language must improve usability if it is to become popular!
Nov 26 2020
On Thursday, 26 November 2020 at 08:57:18 UTC, Daniel Kozak wrote:Maybe metaprograming?This definitely. When I program C++ I kind of avoid meta programming because I know I will run into trouble or don't exactly know how to do it. In D it's more like "hey I can do this with meta programming" and then I just do it, this while I'm an amateur when it comes to D.
Nov 26 2020
On Thursday, 26 November 2020 at 05:46:59 UTC, zoujiaqing wrote:Whether a programming language can be popular depends on what?I think many factors: 1. Timing and luck. 2. Highly innovative new feature - C was portable assembler, Java was safe and Java programs could run on multiple platforms, Go had goroutines, Rust has static memory analysis, D has easy to use templates and CTFE. 3. Backing by commercial organizations that are able to pump money and resources at it - JavaScript is an example, but Go without Google backing would not have succeeded, C++ has had enormous resources put on its development, Python has had 4. Support that programmers need in the real world - such as IDEs, debuggers, libraries etc. D and Lua are perhaps two successful languages (i.e. sizeable users) that do not have proper financial support and resources. So development is dependent on few individuals spending unpaid time on it. In my humble opinion, D had got it right as language before Rust and Go came along. Go did GC better. And Rust does systems programming better.
Nov 26 2020
On Thursday, 26 November 2020 at 05:46:59 UTC, zoujiaqing wrote:Whether a programming language can be popular depends on what? I think there are two important points, that is, killing skills and availability. At the same time pay attention to shortcomings. I'll talk about my opinion today. Must kill skill: Goroutine Availability: the standard library is powerful. IDE powerful. High GC efficiency. friendly debugging tracking tool. It is convenient to realize various functions based on standard library. Have practical pprof and other tools. But language features are too few. Must kill skill: Memory Security Availability: The standard library is very general. IDE powerful. friendly debugging tracking tool. A variety of language features, and will be based on popularity of new features, such as await. Have practical pprof and other tools. Development efficiency of using rust is relatively low. Must kill skill: It looks good? Availability: standard library is poor. Bad IDE. GC efficiency is low. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. Although the language features many but can not add popular practical features, such as await. D language must improve usability if it is to become popular!I assume every developer has another opinion what is the most import thing missing in D. (I never ever faced any performance issues with GC and I am super satisfied with Visual Studio Code. As I also not used async/await in other languages a lot, I also do not miss it in D). But I see and understand from your view these points are high import. From my point of view the most important thing is to get the community (all of us) to speak more loud about D. Advertise D, create more blogs, try to get D in the company's they are working... (And if I have a wish free, RSA digital signature verification natively implemented in phobos would be really great :) ). Kind regards Andre
Nov 26 2020
On Thursday, 26 November 2020 at 09:19:48 UTC, Andre Pany wrote:I assume every developer has another opinion what is the most import thing missing in D. (I never ever faced any performance issues with GC and I am super satisfied with Visual Studio Code.About GC, I use D as scripting language mainly, and never noticed GC problems. GC is, indeed, a must for scripting (Thanks D for GC) Integration in VSCode : - "reflection/autocomplete": This is one of the most appreciated features in development IDEs and a really good way to learn about the language and it's existing libraries (learn on demand :-) ). This is a must because the competence with other "similar" productive languages that offer a powerful tool chain (Not only Rust or Go, I consider Python and Typescript natural D competitors). - Debugging support: how can I inspect structured data/objects friendly? printing to the console or assigning properties to temporal vars is not a productive way: may be a good tutorial about how to inspect in D using VSCode will be appreciated from experienced D developers (Linux, pls :-) )... in my opinion, this is a next DConf must!!! (Like the one in 2014). I know I'm very reiterative with this features (you can find me in other forum posts arguing about the same)... In my very personal opinion, D usage will grow as soon as it will integrate on VSCode IDE as well as typescript does. I wish I had the time and experience to help on this particular point.From my point of view the most important thing is to get the community (all of us) to speak more loud about D. Advertise D, create more blogs, try to get D in the company's they are working...I agree Personally, I add references to D using any excuse :-) (in spanish, sorry) i.e.: https://es.quora.com/Por-qu%C3%A9-la-mayor%C3%ADa-de-los-desarrolladores-estudian-solo-lenguajes-muy-simples-como-JavaScript-y-Python-en-lugar-de-aprender-un-lenguaje-verdadero-como-C-2/answer/Antonio-Cabrera-52
Nov 26 2020
On Thursday, 26 November 2020 at 05:46:59 UTC, zoujiaqing wrote:Must kill skill: It looks good? Availability: standard library is poor. Bad IDE. GC efficiency is low. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. Although the language features many but can not add popular practical features, such as await.Isnt await just syntactic sugar for a promise/future? If you can provide an example of what await should expand into then I might be able to add it to my experimental D compiler and you could then write a DIP.
Nov 26 2020
On Thursday, 26 November 2020 at 09:49:51 UTC, Ola Fosheim Grostad wrote:Isnt await just syntactic sugar for a promise/future?No, not really, but it's used together with promises or they're used under the hood.If you can provide an example of what await should expand into then I might be able to add it to my experimental D compiler and you could then write a DIP.Async/await is basically a coroutine. It allows a function to be suspended and resumed. Here's an example of how the code could look like in D: async int foo() { await sleep(1.seconds); // simulate work that takes long time writeln("foo"); return 1; } async int bar() { writeln("bar"); return 2; } async void main() { auto a = foo(); auto b = bar(); writeln("main"); writeln(await a + await b); } The output of the above would be: bar main foo 3 The control flow is something like this: 1. `foo` is called 2. `foo` is awaiting for `sleep` 3. `sleep` returns a promise which is not fulfilled 4. This causes `foo` to suspend (return) and control comes back to `main` 5. `bar` is called 6. `bar` has no suspension points (awaits) so this is more or less a synchronous function 7. "bar" is printed 8. `bar` returns a fulfilled promise with the value `2` 9. Control comes back to `main` 10. "main" is printed 11. `main` awaits `a`. If the `a` promise is not fulfilled at this point `main` is suspended 12. `foo` is resumed at some point in the future 13. "foo" is printed 14. `foo` returns a fulfilled promise with the value `1` 15. `main` is now resumed since `a` has been fulfilled 16. `main` awaits `b` 17. `b` is already fulfilled, which means `main` doesn't have to suspend 18. The addition is performed 19. "3" is printed I'm not entirely sure on when `foo` will be resumed. Probably decided by a scheduler in the runtime. To have the full experience of async/await, an event loop in the runtime is necessary and non-blocking IO. When a function is suspended, all its state (stack and registers) need to be saved. When it's later resumed, the state need to be restored. I'm not entirely sure how async/await functions are different from fibers, which already exists in the D runtime. -- /Jacob Carlborg
Nov 26 2020
On Thursday, 26 November 2020 at 14:18:55 UTC, Jacob Carlborg wrote:On Thursday, 26 November 2020 at 09:49:51 UTC, Ola Fosheim Grostad wrote:Ok, we need something that respects shared/nonshared. If aync/await involves multiple threads then we need something principled. Maybe some runtime level thing that can offload computations but is as easy to use as await. Perhaps even offload to the GPU. But I guess people want it for I/O. Clearly a case where a library solution has to come first.Isnt await just syntactic sugar for a promise/future?No, not really, but it's used together with promises or they're used under the hood.If you can provide an example of what await should expand into then I might be able to add it to my experimental D compiler and you could then write a DIP.Async/await is basically a coroutine. It allows a function to be suspended and resumed. Here's an example of how the code could look like in D:When a function is suspended, all its state (stack and registers) need to be saved. When it's later resumed, the state need to be restored.This should be possible with LLVM stop points.
Nov 26 2020
On 2020-11-26 15:55, Ola Fosheim Grostad wrote:Ok, we need something that respects shared/nonshared. If aync/await involves multiple threads then we need something principled.That varies between implementations. You can either do single threading. Or have multiple threads (as many as the computer has cores) with one event loop per thread. Each async function can only be executed on a single thread. Or multiple threads with a single event loop and the async functions can run on multiple threads. That is, run on one thread, be suspended and be resumed on another thread. For example, Erlang was initially only single threaded. In 2006 it started to take advantage of multi-core. Go will automatically create a new thread if calling a C function or a blocking system call.Maybe some runtime level thing that can offload computations but is as easy to use as await. Perhaps even offload to the GPU. But I guess people want it for I/O.Yes, that's the main reason. If you don't have anything to wait for, there's not much point in suspending a function.This should be possible with LLVM stop points.Yes. C++20 got support for coroutines, which also means support in LLVM. -- /Jacob Carlborg
Nov 26 2020
On Thursday, 26 November 2020 at 18:27:25 UTC, Jacob Carlborg wrote:Yes. C++20 got support for coroutines, which also means support in LLVM.Interestingly they chose to not implement a ready-made version of coroutines, but the building blocks to do so. At least that is my understanding. Looks intriguing. It will be interesting to see what kind of libraries people build with it.
Nov 26 2020
... I already raised similar sentiments. There are lot of posts where community is asking the D maintainers. They might not be interested and keep silent. I wonder why a. why other upcoming langugages like crystal/nim/even zig has more contributors.(i meant they are good languages but they are more welcoming and have more news) b. I thought after walter's talk on memory corruption, there will be a big buzz on D as a safe and easy alternative to rust. I didnt see a single post on HN/reddit. c. AFAIK the fastest file system in world is written in D. Isnt this enought for everyone to convince(am not sure if its a mix of c++ and D). d. I wish andrei/walter/others bring the community together and create a goal. e. There is no other way other than challenging Rust/Go with features and benchmarks. Since we dont have corporate funds, we have to do haka dance. I wonder why Facebook didnt adopt it more when Andrei was there. Not sure what all issues they saw. There is lot of selflishness here. I cant wait for 15-20m of build for every single line of C++ code change I make. I want a better language. Hope the maintainers come out of their feature parity race, frog in well attitude and make D a big success. Without community there is nothing. You can have a dogmatic goal like go, but you need one. Hope I dont have to start liking rust. https://forum.dlang.org/thread/wkzwturzlnnhfpuplyrr forum.dlang.org
Nov 26 2020
On Thursday, 26 November 2020 at 19:17:25 UTC, JohnT wrote:d. I wish andrei/walter/others bring the community together and create a goal.I think it would be better if the goals come from the community, bottom up builds a better social fabric. If it is top down everything falls on one person, and that is not as efficient. Could be ARC, could be async/await, but it has to be something that can be completed within 6 months. Too ambitious goals tend to fizzle out,e. There is no other way other than challenging Rust/Go with features and benchmarkThe better way is to find goals that are different from Rust/Go.
Nov 26 2020
The better way is to find goals that are different from Rust/Go.Yes I agree. Atleast they come up with defined goals. Not sure if Andrei itself is actively involved. Btw, why cant weka sponsor D. They seem to be making money. Whether D suceeds or not thats not in our hands, but we should do everything to make it possible. https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why?share=1
Nov 26 2020
On Thursday, 26 November 2020 at 20:21:21 UTC, JohnT wrote:Yes I agree. Atleast they come up with defined goals. Not sure if Andrei itself is actively involved. Btw, why cant weka sponsor D. They seem to be making money. Whether D suceeds or not thats not in our hands, but we should do everything to make it d . https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why?share=1I don't really think being a replacement language should be a goal, people generally just look for the best option for a specific use case. But there seems to be some motion towards being better for soft realtime. So basically, build consensus around that, and identify the missing pieces...
Nov 26 2020
On Thursday, 26 November 2020 at 21:04:05 UTC, Ola Fosheim Grostad wrote:I don't really think being a replacement language should be a goal, people generally just look for the best option for a specific use case. But there seems to be some motion towards being better for soft realtime. So basically, build consensus around that, and identify the missing pieces...Also, remove outdated stuff. Like, don't link to abandonware from dlang.org, it gives a graveyard feeling. Are anyone dveloping Dash? It is listed as games sofware that use D.
Nov 26 2020
On Thursday, 26 November 2020 at 18:27:25 UTC, Jacob Carlborg wrote:That varies between implementations. You can either do single threading. Or have multiple threads (as many as the computer has cores) with one event loop per thread. Each async function can only be executed on a single thread. Or multiple threads with a single event loop and the async functions can run on multiple threads. That is, run on one thread, be suspended and be resumed on another thread.Ok Jacob, so I got this idea: maybe it would be possible to have something like await as a gateway for temporary sharing of memory? Basically a multithreaded version of scope? Just an idle thought, but maybe D could do something interesting with it.
Nov 27 2020
On Thursday, 26 November 2020 at 14:18:55 UTC, Jacob Carlborg wrote:On Thursday, 26 November 2020 at 09:49:51 UTC, Ola Fosheim Grostad wrote:Yes! await is very good.Isnt await just syntactic sugar for a promise/future?No, not really, but it's used together with promises or they're used under the hood.If you can provide an example of what await should expand into then I might be able to add it to my experimental D compiler and you could then write a DIP.Async/await is basically a coroutine. It allows a function to be suspended and resumed. Here's an example of how the code could look like in D: async int foo() { await sleep(1.seconds); // simulate work that takes long time writeln("foo"); return 1; } async int bar() { writeln("bar"); return 2; } async void main() { auto a = foo(); auto b = bar(); writeln("main"); writeln(await a + await b); } The output of the above would be: bar main foo 3 The control flow is something like this: 1. `foo` is called 2. `foo` is awaiting for `sleep` 3. `sleep` returns a promise which is not fulfilled 4. This causes `foo` to suspend (return) and control comes back to `main` 5. `bar` is called 6. `bar` has no suspension points (awaits) so this is more or less a synchronous function 7. "bar" is printed 8. `bar` returns a fulfilled promise with the value `2` 9. Control comes back to `main` 10. "main" is printed 11. `main` awaits `a`. If the `a` promise is not fulfilled at this point `main` is suspended 12. `foo` is resumed at some point in the future 13. "foo" is printed 14. `foo` returns a fulfilled promise with the value `1` 15. `main` is now resumed since `a` has been fulfilled 16. `main` awaits `b` 17. `b` is already fulfilled, which means `main` doesn't have to suspend 18. The addition is performed 19. "3" is printed I'm not entirely sure on when `foo` will be resumed. Probably decided by a scheduler in the runtime. To have the full experience of async/await, an event loop in the runtime is necessary and non-blocking IO. When a function is suspended, all its state (stack and registers) need to be saved. When it's later resumed, the state need to be restored. I'm not entirely sure how async/await functions are different from fibers, which already exists in the D runtime. -- /Jacob Carlborg
Dec 06 2020
On Thursday, 26 November 2020 at 05:46:59 UTC, zoujiaqing wrote:Whether a programming language can be popular depends on what? I think there are two important points, that is, killing skills and availability. At the same time pay attention to shortcomings.The _one_ factor that made C++ win against its competition - despite its shortcomings - is by far that it could already compile your C code. So it's an easier sell if you can just change the compiler. You can't convince to change language someone who has already an existing codebase, it would just make life worse in most of cases.
Nov 26 2020
On Thursday, 26 November 2020 at 11:06:11 UTC, Guillaume Piolat wrote:The _one_ factor that made C++ win against its competition - despite its shortcomings - is by far that it could already compile your C code. So it's an easier sell if you can just change the compiler. You can't convince to change language someone who has already an existing codebase, it would just make life worse in most of cases.This could also be the killer feature for D, as Atila has said. While one can't yet automatically generate D headers for an arbitrary CPP codebase, I don't think that either Rust or Go are as far in C++ interop as D currently is.
Nov 26 2020
On Thursday, 26 November 2020 at 13:01:28 UTC, Dukc wrote:This could also be the killer feature for D, as Atila has said. While one can't yet automatically generate D headers for an arbitrary CPP codebase, I don't think that either Rust or Go are as far in C++ interop as D currently is.Swift is going for C++ interoperability as well [1]. I assume they're going to do it the same way as the C interoperability, by using the Clang compiler. [1] https://github.com/apple/swift/blob/main/docs/CppInteroperabilityManifesto.md
Nov 26 2020
On Thu, Nov 26, 2020 at 2:15 PM Jacob Carlborg via Digitalmars-d < digitalmars-d puremagic.com> wrote:On Thursday, 26 November 2020 at 13:01:28 UTC, Dukc wrote:https://wiki.dlang.org/CalypsoThis could also be the killer feature for D, as Atila has said. While one can't yet automatically generate D headers for an arbitrary CPP codebase, I don't think that either Rust or Go are as far in C++ interop as D currently is.Swift is going for C++ interoperability as well [1]. I assume they're going to do it the same way as the C interoperability, by using the Clang compiler. [1] https://github.com/apple/swift/blob/main/docs/CppInteroperabilityManifesto.md
Nov 26 2020
On 26 Nov 2020 at 06:46:59 CET, "zoujiaqing" <zoujiaqing gmail.com> wrote:Whether a programming language can be popular depends on what?Mostly non-technical aspects...Must kill skill: Goroutine* Stability with minimum breaking changes over a long time * Development in the large and long-term maintainabilityAvailability: the standard library is powerful. IDE powerful. High GC efficiency. friendly debugging tracking tool. It is convenient to realize various functions based on standard library.* Big eco-system * Super simple setup and out-of-the-box experience * Cross-compilationBut language features are too few.That's a big plus, if not the biggest. There are not X ways to do thing, but mostly one way. Go code is totally boring and that's good. We considered D for our next big project but will not use it, even I like many the technical aspects. We will use Go, because you just get a lot of stuff done right and straight forward.Must kill skill: Memory Security* Super pedantic compiler * Super pedantic standard library * Big eco-system * Super simple setup and out-of-the-box experienceAvailability: The standard library is very general. IDE powerful. friendly debugging tracking tool. A variety of language features, and will be based on popularity of new features, such as await. Have practical pprof and other tools. Development efficiency of using rust is relatively low.I wouldn't second that. If you want to go for systems programming, IMO Rust is the way to go.Must kill skill: It looks good? Availability: standard library is poor. Bad IDE. GC efficiency is low. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. Although the language features many but can not add popular practical features, such as await.With limited resources focus becomes key. Focusing a volunteer group on some goal is very hard and requires good community management. D is too fragmented and unpredictable, which is a No-Go if you want to use it for anything serious. It was a hard way to come to this conclusion, because I really like many aspects of it. And, D is a huge language, it's far from simple. -- Robert M. Münch http://www.saphirion.com smarter | better | faster
Nov 26 2020
On Thursday, 26 November 2020 at 11:16:09 UTC, Robert M. MünchReally? My take is that it is too small and makes C++ frameworks ou of reach.Must kill skill: Memory Security* Super pedantic compiler * Super pedantic standard library * Big eco-systemWith limited resources focus becomes key. Focusing a volunteer group on some goal is very hard and requires good community management.It is important to attract developers with a shared focus, then you need less management and can build on consensus. All this talk of attracting more random developers is worrisome, more is worse if it prevents formation of consensus...And, D is a huge language, it's far from simple.It is large because it has many overlapping features, the core functionality is not so big.
Nov 26 2020
On Thursday, 26 November 2020 at 11:16:09 UTC, Robert M. Münch wrote:With limited resources focus becomes key. Focusing a volunteer group on some goal is very hard and requires good community management. D is too fragmented and unpredictable, which is a No-Go if you want to use it for anything serious. It was a hard way to come to this conclusion, because I really like many aspects of it. And, D is a huge language, it's far from simple.If I would be a manager and to decide which language and tools to use in a project, I would look at D and think it is nice but what would scared me off is how the project is managed and many uncertainties for the future. The D project is in particular bad at communicating to the audience what to expect from the language in the near future. This makes D look more like a research language than a language that is ready for being used in real products. Without enough feedback from actual commercial applications, the D project doesn't really know what programmers are looking for and instead it becomes some kind of pseudo scientific project which is obvious reading this forum. A lot of talk about compilers in general and different technology but little "how do I do X in D".
Nov 26 2020
On Thursday, 26 November 2020 at 11:56:15 UTC, IGotD- wrote:Without enough feedback from actual commercial applications, the D project doesn't really know what programmers are looking for and instead it becomes some kind of pseudo scientific project which is obvious reading this forum. A lot of talk about compilers in general and different technology but little "how do I do X in D".I dont think this is the case. You are just reading the general forum and not the learn forum :).
Nov 26 2020
On Thursday, 26 November 2020 at 12:01:57 UTC, Ola Fosheim Grostad wrote:I dont think this is the case. You are just reading the general forum and not the learn forum :).I read both but the activity in the learn forum is pretty low.
Nov 26 2020
On 27/11/2020 3:45 AM, IGotD- wrote:On Thursday, 26 November 2020 at 12:01:57 UTC, Ola Fosheim Grostad wrote:Of the many places I monitor for questions, Discord is the most active.I dont think this is the case. You are just reading the general forum and not the learn forum :).I read both but the activity in the learn forum is pretty low.
Nov 26 2020
On Thursday, 26 November 2020 at 15:27:22 UTC, rikki cattermole wrote:On 27/11/2020 3:45 AM, IGotD- wrote:That's due to the kind of people olin the Discord vs the Dlang Slack...the discord is like Macau...if you know what I mean 😜On Thursday, 26 November 2020 at 12:01:57 UTC, Ola Fosheim Grostad wrote:Of the many places I monitor for questions, Discord is the most active.I dont think this is the case. You are just reading the general forum and not the learn forum :).I read both but the activity in the learn forum is pretty low.
Nov 27 2020
On Thursday, 26 November 2020 at 05:46:59 UTC, zoujiaqing wrote:Whether a programming language can be popular depends on what? I think there are two important points, that is, killing skills and availability. At the same time pay attention to shortcomings. I'll talk about my opinion today. Must kill skill: It looks good?It has four main advantages: - Metaprogramming. In C/C++ you're limited to what the precompiler can do, but D's metaprogramming capabilities are almost other worldly, save for a few small stuff. D currently doesn't have metaprogramming support for attributes, which could solve the issue of attribute hell, especially with containers. - Fast compile times with the performance of C/C++. Even with DMD and using the GC, it not only outclasses most scripting languages, but while compiling faster than C/C++. Once someone takes the time to optimize the D code by reducing GC use and using some compiler that has better optimization like LDC, it becomes nearly indistinguishable from C/C++. This, alongside its super-easy interoperability with other languages, makes the language a good candidate for a low-level scripting language. - Interoperability. It's mostly binary compatible with C and C++, almost seamlessly can load their libraries, etc. I don't know what's the current state of D's DLL support, if anything this is a point where it must get better. D's main advantage should be either integration into other projects, or integrating preexisting ones into a D project. - Multiple supported paradigms. Single paradigm programming is a pitfall, which leads to forcing the same solution to every problem, which in turn will lead to over-complicated codes, like how "enterprise" devs often do object orientation on everything. While functional programming is very promising, in itself can't solve all the programming problems, and can lead to performance issues from frequent data copying.Availability: standard library is poor.It actually starts to get better, and since the language easily interoperates with others, anybody can port C or C++ headers to D. My current gripe is the mediocre XML support currently on D. The current one in the standard libraryBad IDE.It's okayish, but there's a lot of potential to growth. - For the code-d team: Do something about the lack of refactoring support! It's super annoying to rename each thing individually, since VSCode's "change all" feature is too overboard and only works within a single file. - For the Visual-D team: Please, add some integrated dub support! It's the default package manager of D, and without it you're destined to deal with dependency hell. Due to the sheer power of the metaprogramming feature, any IDE plugin must at one point integrate the DMD frontend. That's probably the only way to get the whole metaprogramming fully cooperating with IDEs.GC efficiency is low.Not anymore, as the GC is now multi-threaded. ` nogc` and `nothrow` attributes are must haves at functions that are time-critical and where they're applicable. Reducing memory allocations is a good practice, no `malloc` will speed up your application if you need to allocate memory thousands of times in a short time, while you could work on the same preallocated memory location.Lack of friendly debugging tracking tools.Visual Studio works well as a debugger, but memory access violations are a bit hard to trace down sometimes. Breakpoints do work however.Lack of pprof and other practical tools.It is in a dire need of a GUI editing tool, but I've made one for my own graphics engine. I'm planning on making another one, might be a VSCode plugin, if not it'll be a standalone app. That will be a pretty big breakthrough, however I don't know yet what GUI framework should I target. Maybe I can even add D export functions to a preexisting one.D language must improve usability if it is to become popular!D must become even stronger in fields it's already strong, and the community must fix the stuff where it's currently weaker. I've outsourced many of the components of my game engine to external libraries, both to allow easier unit testing (which ultimately killed the integrated collections - it was quite difficult) and to allow others to use them. Currently most of D's issues can be traced back to a weaker community, but this is slowly changing.
Nov 26 2020
On Thursday, 26 November 2020 at 05:46:59 UTC, zoujiaqing wrote:Whether a programming language can be popular depends on what?Must kill skill: It looks good? Availability: standard library is poor. Bad IDE. GC efficiency is low. Lack of friendly debugging tracking tools. Lack of pprof and other practical tools. Although the language features many but can not add popular practical features, such as await.D language must improve usability if it is to become popular!Its soo funny though 😂. D be like "Why you do me that?" Personally I think D is great for most stuff... I can't personally point anything blocking my use case for D at its current state (not to say that things shouldn't be improved)... except embedded programming which is being worked on. You can to look at the community from these three: 1. The C/C++/?? veterans. They know their stuff and tooling. They most likely use emacs or vim and are happy with pointing Cli tools like gdb at the binary to debug stuff. It so happens that most of the core contributors belong in this group. To them, work on the compiler, memory safety, nogc, technical correctness, deep metaprogramming wizardry, and related areas are more important. They're not the type to develop dub packages or ecosystem tools (motivation??)...and might not know how even if they want to...cus they don't use those tools. They're not the people to write D blog posts, articles, videos, or appear in podcasts, etc. They are not?? the community "cheer leaders". Remember, they're the core contributors and very short of manpower because D is a large language with many new ideas. One reason why they might be under staffed could be how its not easy to contribute to D due to the unpolished and undocumented process, workflow, project direction, etc. They're very technical but not enough time (or motivation) to do those soft tasks. If you read some of the phobos docs, you'll understand they're the folks doing the work. 2. Is the intermediate. They're the folks who can move between 1 and attend to 3. They answer most of the technical questions cus they have come to know where to find what. My guess is there's not a lot of such people...or at least enough active in the community day by day. And they're probably working so their free time isn't enough to do more. They're the contributors of most packages on dub... bindings, ports, etc. They may not be core contributors but they contribute to the core language too. They're generalist. Not enough time means undocumented packages?? 3. Is the rest... coming from JavaScript, Java, python, etc where the ecosystem is effortlessly polished... mostly. They're used to IDEs, packages, tutorials, videos, great docs (those that don't read like memory dump of implementation details), example projects,... that kind of stuff. They sometimes find it hard to settle with the absence certain tools or under-development or maybe unique position?? of D ecosystem like they're used to. They're hooked by how nice D code feels and can't accept why D isn't all hot and popular..HN, reddit and stuff. They may feel like D needs more marketing, promotion and stuff. Or that D needs needs x&y features which has made T lang popular. Popularity can mean more users (including engineers from other companies who might fund D or offer developer time), more contributors, more packages, improved docs, more tools, etc. Of course its not a perfect categorization cus the community is more diverse than that. But that's some observations I've made. Also, there are so many people also using D quietly.
Nov 27 2020