Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language No, my company does not use D. 2. Does your company uses C/C++, Java, Scala, Go, Rust? C#, C++, Java - ordered by %usage 3. If yes, what the reasons to do not use D instead? - no decimal data type; - no i18n; - no GUI; - IDE support; - lack of "batteries included" experience; We are following D for long time. The initial idea was "Look, ma', there is something like C# that compiles to native". Once Tango (which looks a lot like C# standard library) was dropped and was replaced by phobos, my team lost the interest, I'm the only one right now using D for pet projects. 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice Most of the apps we develop are in the financial domain. Didn't find any use. 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount 5. What D misses to be commercially successful languages? - IDE; - IDE; - IDE; 6. Why many topnotch system projects use C programming language nowadays? I truly don't know. Thanks, Ilya
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language We don't use D. But IMO, D is the best PL with it's amazing compile time features (templates, templates everywhere and still it can be maintainable). 2. Does your company uses C/C++, Java, Scala, Go, Rust? C, C++, C#, Java 3. If yes, what the reasons to do not use D instead? 1. For algorithms: We develop biometric algorithms and create shared objects and DLLs. We need these to be used on variety of platforms interfacing with various languages like C++, C#, Java, Go. D makes it impossible to convince teams that develop algorithms. 2. For applications/solutions: An year ago we evaluated D (to replace C++) for one of our large scale distributed solution (map-reduce for biometrics). But ended up developing it in C++ for the following reasons: a) Lack of high quality libraries like Boost/Qt. With the horrible template syntax of C++, people created Boost and helped shape C++ what it is now. D is pleasant to program with and I'm wondering why there is no such comprehensive set of libraries in D. b) GC. We fill pretty much the entire RAM (>=128 GB) with data and operate on it. The end-to-end system latency must be in milliseconds and also provide high throughput. Not really an option with D's current state of GC. c) IDE support. d) We have already got used to the warts of C++, Java and we know how to avoid them. It is fair for us to ask the team to learn D, but not *ignore X and get used to it* as well. D tries to compete and satisfy all paradigms (recently trying to catch-up with Rust's safety feature) which is good from a language point of view. But it could also focus on fixing it's base. 2. Have you use one of the following Mir projects in production: No. 4. Have you use one of the following Tamedia projects in your production: No. 5. What D misses to be commercially successful languages? a) Good quality libraries b) Cross platform IDE c) Corporate backup c) Vibrant community. IMHO, the lack of good quality libraries can be directly attributed to the lack of critical mass of topnotch brains in the community. 6. Why many topnotch system projects use C programming language nowadays? a) Good quality libraries b) Small run-time c) Cross platform IDE d) People are already familiar with C/C++
Re: Questionnaire
Le 08/02/2017 à 19:27, Ilya Yaroshenko a écrit : I can answer for the product on which I am working (Home Design 3D), others are video games made with Unity which is imposed by the editor. On Home Design 3D the development teams have the choice of technologies to use, but we have to convince our boss. There is an history, any developer on previous teams knows the D language, we are now 2 on 6 that having few basics. 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language We don't use D. 2. Does your company uses C/C++, Java, Scala, Go, Rust? C++11, other languages as Java or objective-C can be used for OS specifics (Android and iOS). 3. If yes, what the reasons to do not use D instead? There is a lot of obstacles to migrate to D or at least using it partially in our product or for tools. Here is the list sorted by difficulties: 1. The team isn't enough familiar with the D language 2. It seems too hard to use it with our actual C++ dependencies (QtQuick, boost geometry, and a lot of other C/C++ libraries) 3. We don't have enough feedback on how it can be used on all our targeted platforms (Android, iOS, Windows x86 and x64, MacOS) 4. Due to some differences with the c++ major refactoring will be necessary after a translation to have the same performances (GC will impact a lot the resources management) 5. The quality of the possible integration with a complete production ecosystem is unknown. IDE : Debugging, refactoring Platforms : Compatibility with Stores (and there tools such as crash reporting,...) 6. D isn't as mature as C++, so there is fewer articles on internet that can help on particular subjects. And no body will give code examples in D, so even for test we would have to port it. This will globally impact the productivity. 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice Nop 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount 5. What D misses to be commercially successful languages? I think that it start with a bigger adoption, but it can be addressed directly, so it have to easy to take into. IMO documentation IDE friendly-ness,... will help newbie to start. After tools necessary to have stable and effective products are critical, debugger (code and memory), profiler,... On this point to IMO the ergonomic is important (not every developer want to use command line and a lot would prefer UI). I also think that it depends who is the target, because Java developers will be certainly more reticent to come to D if tools don't have good UI than C/C++ developers that works mostly under linux. Personally I develop only under Windows and having a great integration between D tools with UI is one of the most important thing. I want an IDE that is ready for use after installation, with dub integrated, unit tests UI, compilers and debuggers configured and ready for cross compilation. 6. Why many topnotch system projects use C programming language nowadays? IMO the fact that C is one of the first language helps a lot, languages that came after few or any are system languages. I find that C/C++ didn't evolve a lot for many years and it start to come better with C++11, 14 and 17. Maybe D have put some pressure. I don't know a lot of languages but I think that D have the potential to be a much better system language than C++, and it should be else nobody will migrate if the win isn't enough. = All my current D project are finished. Probably I will use other languages for production this year, Java/Go/whatever. Mir libraries are amazing and good quality. If you use them this would be a good motivation for us to improve the docs and provide regular updates. Plus, it can be enchanted during the GSoC 2017. Thanks, Ilya
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. a + d + new projects 2. C++ + Python 3. Beacause of D strength with LDC 4. Have you use one of the following Mir projects in production: No. The lack of numeric methods. To Ilya personally: if you try to realize primitive and fast Gauss you see you don't need anything from Mir. It is good work for diplom work. ... 5. What D misses to be commercially successful languages? IDE only. But I have found Visual D pretty enough. D reminds me Watcom C++. Debugging tools are for loosers :) ... Igor Shirkalin
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language A. My on the way to be legalized personal (dictatorship :) ) business is using D and vibed. I'm developing a platform like pinterest but different audience (local). I'm in Ghana (West Africa) so I bearly know any D coder. It did not use php (the short path) for long term performance and clean code base... D is just the right tool for it. I'm more of a practical coder (immediate solution) than GC, @safe, betterC advocate. 2. Does your company uses C/C++, Java, Scala, Go, Rust? Nope. Not interested 3. If yes, what the reasons to do not use D instead? 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. Not having need for any of them ATM. 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount No. You were maintaining the s3 lib which is now frozen. But that's my take. Performance is tomorrow's problem. 5. What D misses to be commercially successful languages? To me, is not the technical detail but what I can do with it. Its libs. Image and video processes, storage apis (minio, s3, swift, etc.), db libraries. Real-world everyday problems. 6. Why many topnotch system projects use C programming language nowadays? = No comment All my current D project are finished. Probably I will use other languages for production this year, Java/Go/whatever. Mir libraries are amazing and good quality. If you use them this would be a good motivation for us to improve the docs and provide regular updates. Plus, it can be enchanted during the GSoC 2017. Lack of An improved and tested s3 compatible api is much the deal breaker at the moment for me. Object storage (cloud) is the way forward. Docker, k8s, etc. are all the driving forces. S3 being the pioneer in object storage has moved most of them to support s3 apis (Minio for instance is a driving force for using Go lang in containerized storage and computing.). I rather urge community to focus [some] attention on everyday demands. And take them by storm with D. Its not a lang problem ... JavaScript is top cus its useful (not efficient). Thanks, Ilya
Re: Questionnaire
On 2/11/17 5:04 AM, bachmeier wrote: On Friday, 10 February 2017 at 23:02:38 UTC, Dmitry Olshansky wrote: Go - they value simplicity and robust run-time (Go's GC breaks news with sub-milisecond pauses on large heaps). The sheer complexity of D is enough for it to be a hard sell, D's GC is coup de grace. I have never understood the appeal of Go. With respect to the GC, there's this: https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e#.o6pxesvuw Has nothing new to say, yes GO's GC fragments heap, is slower at allocation and adds "read/write barriers from hell". But it does optimize for short pauses, which in turn avoids ugly spikes in server workloads and that is priceless. I have had the pleasure of trying to "tune away" the GC spikes of Java cluster software - it's not pleasant. With respect to "simplicity", I found it to be easy to learn a language that makes it hard to get stuff done. I've never understood the argument that programming in Go is simple. Clearly others have their own view. I agree with your view on this one. Go puts both advanced and novice programmers on the same ground - both have to write dumb code with little to no abstraction. In my limited time with Go I found it futile to abstract away even the most trivial patterns such as map-reduce with concurrency. --- Dmitry Olshansky
Re: Questionnaire
On Friday, 10 February 2017 at 23:02:38 UTC, Dmitry Olshansky wrote: Go - they value simplicity and robust run-time (Go's GC breaks news with sub-milisecond pauses on large heaps). The sheer complexity of D is enough for it to be a hard sell, D's GC is coup de grace. I have never understood the appeal of Go. With respect to the GC, there's this: https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e#.o6pxesvuw With respect to "simplicity", I found it to be easy to learn a language that makes it hard to get stuff done. I've never understood the argument that programming in Go is simple. Clearly others have their own view.
Re: Questionnaire
On 2/8/17 7:27 PM, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language Will probably stop on this question as the rest is not applicable. I do not use D at my company and the reason is that any language to get a use need to pass stringent sorting criteria that I don't even appreciate fully. The language that have green light I believe are C++, Go, Java, Python (under heavy pressure to switch to Go) Anyhow when trying to sell D to any company the only case I can make a good offer is having these attributes: 1) It's a new project, not extension of an existing behemoth code base 2) Fairly unique - i.e. cannot be just a bunch of existing libraries glued together with some business logic. 3) Needs native performance at least in some areas of the project. Now let's imagine a company considers technology X and I want to propose D instead. Let's look at possibilities: C++ - they are not afraid of creating their own stack and performance-minded. This is probably the only case where selling D is easy. However these days selling them Rust would be much easier. Rust - they value native speed, safety and afraid of GC. D's state of GC would only confirm their fears and D's safety is mostly opt-in/ relies on GC/not supported enough. Java - they love VM safety and GC, most likely invested in Java ecosystem. Here the better sell would be Scala or Kotlin etc. C# - they are probably hooked on MS technology and tooling (VisualStudio). The current state of D's IDE will make them cry like little babies, no selling here. Go - they value simplicity and robust run-time (Go's GC breaks news with sub-milisecond pauses on large heaps). The sheer complexity of D is enough for it to be a hard sell, D's GC is coup de grace. Scripting languages - they don't care for elaborate type systems and willing to trade performance for flexibility. Selling easy templates to them is like giving candies to kids with diabeties. Trying to lure with performance hits a brick wall because e.g. NodeJS/LuaJIT have fast JITs already and they don't care going beyond that level. --- Dmitry Olshansky
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? The only other real alternative (everyone using it) in my field was C++, and I have worked in a variety of C++ codebases. For me it's not a productive language and lead to inflexible programs that I don't even like. However, this is subtle enough that you don't see it while on the job. Was it risky to choose D? I don't think so, especially when the less risky choice is costing precious productivity day to day. 2. Does your company uses C/C++, Java, Scala, Go, Rust? Only D. I fear of becoming monoglot programmer. :) 3. Have you use one of the following Mir projects in production: 4. Have you use one of the following Tamedia projects in your production: Nope. 5. What D misses to be commercially successful languages? Targetting iOS or Web would be nice. Other than that, I think we need to "reframe" the competition who easily took a moral high-ground against us (not mentionning D, saying it's old, etc) and repeat our key advantages: D is productive, fast, already there (no vapor) and you _kind of already know it_(yeah, kind of). Being familiar is key to cater to C++ people - a difficult and busy audience. Rust has convinced people that they don't want a GC, it is the most common argument against D. _It does not make any goddamn sense_ considering the number of real-time systems with no GC problem. So why people don't even think they could try D? I think it really is a cool kid thing, D should present itself as evergreen, and not an "old" thing. 6. Why many topnotch system projects use C programming language nowadays? Because of when they were created? Those that haven't been replaced by topnotch systems in C++ (and in language X later, hopefully X = D).
Re: Questionnaire
1. Why your company uses D? My company does not use D. If I had the time, I really think I could integrate D into our build system, probably forcing it a bit: "Oh and by the way, that new library I wrote happens to be written in D..." (We have Vala in our build system, how worse could it be?). I use it for personal projects. 2. Does your company uses C/C++, Java, Scala, Go, Rust? We use C/C++/assembly for system stuff. And Java for Android applications. We run Linux or Android on ARM embedded systems. 3. If yes, what the reasons to do not use D instead? Nobody knows about D. Most system developers use C here, half of them don't like C++ and scorn Java. And most of them don't know about D apart from my close colleagues which probably must hate it without having even used it, just because I always bring it up in any unrelated conversation at lunch. 2. Have you use one of the following Mir projects in production: No, but it could be very useful for DSP routines. I hope Mir (and D) to have the success it deserves. 4. Have you use one of the following Tamedia projects in your production: No. 5. What D misses to be commercially successful languages? I don't know, I'm not a sales-person at all. I also like D because it's got that "made by developers for developers" thing. I'm an idealist, I'd prefer D to be successful because of its cheer intrinsic value as a programing language, rather than because we throw big money at it. 6. Why many topnotch system projects use C programming language nowadays? For history reasons. And because of its simplicity (and tooling etc), and its "system" trait. I don't buy the "C compiles bugs" argument. Every languages in the world produce bugs [1]. I noticed the hardest and most insiduous bugs could always be avoided if the software was more carefully designed upfront, especially for real-time or concurrent software. I use C a lot, it's my favorite language with D, though I'm not a proselyte. I use C++ only as "C with class". [1] http://jonathanwhiting.com/writing/blog/games_in_c/
Re: Questionnaire
On Thursday, 9 February 2017 at 17:28:47 UTC, jmh530 wrote: I would probably say libraries is most important. Mir is a great advance. I've been applauding your work all the way through. There are two things that I think Mir needs most (and we've talked about them before as things you were thinking about) and then a third is a nice-to-have 1) A higher level layer with more convenient syntax for Mir-Glas 2) Lapack support (eigenvalues, svd, & cholesky/qr decompositions) 3) D compute support (would be nice to easily offload big computations to GPU) number 3 is in the pipeline. LDC should be able to produce .ptx and .spv (the intermediate formats for CUDA and OpenCL respectively, with host code all at the same time!) RealSoon™ (I hope by the end of the month). From there it's all just plain D API bashing, which will be easily automated with .mangleof and templates. I am hoping to give a DConf talk about this.
Re: Questionnaire
On Thursday, 9 February 2017 at 18:38:32 UTC, John Colvin wrote: On Thursday, 9 February 2017 at 18:34:44 UTC, bachmeier wrote: On Thursday, 9 February 2017 at 17:28:47 UTC, jmh530 wrote: Other stuff I would find useful: 1) R integration (I know someone's done work on this, but it's hard to find and I don't remember if it works on Windows. Really just needs a champion) Me. The latest version is here: https://bitbucket.org/bachmeil/embedr It's Linux-only because that's all I know or use. Others that I work with use it on Windows and OS X trivially with Docker, but for someone that understands development on those OSes, it shouldn't take much to get it working natively. Everything is handled internally by the R package manager, and the package itself has functions to take care of all steps for compilation. I don't promote it because I don't have time to run an open source project properly. However, I am happy to help in any way if someone else wants to use it. I am flexible on the license, so that's not an issue. There's a possibility of some commercial need for R <-> D where I'm working, so hopefully we'll be able to help here. I believe you have my email address. Send me a message if something comes up. I redid everything a few months ago, so if you looked at an earlier version, this is much improved. Getting it to work on Windows/OS X or integrating Dub is something that can be done in an afternoon by someone with the appropriate background.
Re: Questionnaire
On Thursday, 9 February 2017 at 18:34:44 UTC, bachmeier wrote: On Thursday, 9 February 2017 at 17:28:47 UTC, jmh530 wrote: Other stuff I would find useful: 1) R integration (I know someone's done work on this, but it's hard to find and I don't remember if it works on Windows. Really just needs a champion) Me. The latest version is here: https://bitbucket.org/bachmeil/embedr It's Linux-only because that's all I know or use. Others that I work with use it on Windows and OS X trivially with Docker, but for someone that understands development on those OSes, it shouldn't take much to get it working natively. Everything is handled internally by the R package manager, and the package itself has functions to take care of all steps for compilation. I don't promote it because I don't have time to run an open source project properly. However, I am happy to help in any way if someone else wants to use it. I am flexible on the license, so that's not an issue. There's a possibility of some commercial need for R <-> D where I'm working, so hopefully we'll be able to help here.
Re: Questionnaire
On Thursday, 9 February 2017 at 17:28:47 UTC, jmh530 wrote: Other stuff I would find useful: 1) R integration (I know someone's done work on this, but it's hard to find and I don't remember if it works on Windows. Really just needs a champion) Me. The latest version is here: https://bitbucket.org/bachmeil/embedr It's Linux-only because that's all I know or use. Others that I work with use it on Windows and OS X trivially with Docker, but for someone that understands development on those OSes, it shouldn't take much to get it working natively. Everything is handled internally by the R package manager, and the package itself has functions to take care of all steps for compilation. I don't promote it because I don't have time to run an open source project properly. However, I am happy to help in any way if someone else wants to use it. I am flexible on the license, so that's not an issue.
Re: Questionnaire
On Thursday, 9 February 2017 at 16:33:18 UTC, bachmeier wrote: Make extensions that others can use within their current workflow, and they will use it. Leave it as a Dub package and they won't touch it. You've done a lot of good work, but it's kind of a dead end to target the standalone D program market right now. +1!
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language I'm the only person I personally know who uses D. I mainly use it for personal projects. I like it because the other languages I more often use, like R or Python, are just not sufficient for some purposes. I've tried C++, but I like D a lot more. 2. Does your company uses C/C++, Java, Scala, Go, Rust? Not my group, but I imagine other parts. 3. If yes, what the reasons to do not use D instead? 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice Not in production, but in personal projects. 5. What D misses to be commercially successful languages? I would probably say libraries is most important. Mir is a great advance. I've been applauding your work all the way through. There are two things that I think Mir needs most (and we've talked about them before as things you were thinking about) and then a third is a nice-to-have 1) A higher level layer with more convenient syntax for Mir-Glas 2) Lapack support (eigenvalues, svd, & cholesky/qr decompositions) 3) D compute support (would be nice to easily offload big computations to GPU) Other stuff I would find useful: 1) R integration (I know someone's done work on this, but it's hard to find and I don't remember if it works on Windows. Really just needs a champion) 2) Stan (http://mc-stan.org/) interface = All my current D project are finished. Probably I will use other languages for production this year, Java/Go/whatever. Mir libraries are amazing and good quality. If you use them this would be a good motivation for us to improve the docs and provide regular updates. Plus, it can be enchanted during the GSoC 2017. I agree on GSOC 2017, but you should provide some sort of guidance or support. I hope Mir gets more attention!
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice I wasn't going to comment, since I'm not part of the target group, but I have enough familiarity with commercial usage to give you an answer to this question. Why would someone in an "enterprise" situation want to use Mir? If you create a nice R package to make Mir functionality available to Rcpp users, and you provide new functionality not currently available in other R packages (with good performance to boot), you will see commercial usage. But it has to be a package they can install from CRAN/Github/Bitbucket using the R package manager. They're not going to mess around with Dub. The same is true for Matlab/Octave/Python. Make extensions that others can use within their current workflow, and they will use it. Leave it as a Dub package and they won't touch it. You've done a lot of good work, but it's kind of a dead end to target the standalone D program market right now.
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language My company doesn't use D. 2. Does your company uses C/C++, Java, Scala, Go, Rust? My company uses what the customers ask for, we don't get to choose that much. iOS projects - Objective-C, Swift Java projects - Java, Scala, Clojure Windows projects - C#, VB.NET Web Projects - JavaScript on frontend with a Java or .NET stack on backend Android projects - Java Hybrid development across iOS and Android - Cordova, Ionic Traversal to all projects, C++ as infrastructure language for performance reasons or integration of C and C++ libraries. 3. If yes, what the reasons to do not use D instead? Customers don't ask for it on their RPF to allow its use. 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice No, as they don't follow on the typical enterprise computing projects we work on. 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount No, I wasn't aware of their existence. 5. What D misses to be commercially successful languages? A GC that can compete with Java and .NET ones. The IDE tooling at the same level of the InteliJ and Visual Studio. Above all, a killer project that makes customers ask us about employees with D skils. As an example, Docker and Kubernetes success means our devops guys are slowly improving their Go skills in the newly introduced internal training. 6. Why many topnotch system projects use C programming language nowadays? Due to existing tooling, libraries and that for many companies using a managed language + C, is good enough and allows for cheaper developers. Also many developers born after memory safe system languages lost the market to UNIX + C, think that C was the first one to exist for system programming. = All my current D project are finished. Probably I will use other languages for production this year, Java/Go/whatever. Mir libraries are amazing and good quality. If you use them this would be a good motivation for us to improve the docs and provide regular updates. Plus, it can be enchanted during the GSoC 2017. Thanks, Ilya
Re: Questionnaire
On Thursday, 9 February 2017 at 10:38:11 UTC, Johannes Pfau wrote: But OTOH I'm an electrical engineer as well ;-) Haha! Then this (https://www.youtube.com/watch?v=D7Sd8A6_fYU&feature=youtu.be&t=2389) is for you ;-) "What we know is that C code will compile all sorts of bugs, more so than most languages, and C programmers know this and accept this. This is the world that they live in. So it breeds a very unfortunate mindeset which is: 'Let's just get the code to compile so we can get to the real work which is debugging.'" -- Dan Saks But you're right, C++ is a very complex language and can easily turn into a monstrosity if not done tastefully. Mike
Re: Questionnaire
Am Wed, 08 Feb 2017 21:41:24 + schrieb Mike : > On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko > wrote: > > 1. Why your company uses D? > > We don't use D. > > > 2. Does your company uses C/C++, Java, Scala, Go, Rust? > > C/C++. Currently exploring Rust. > > > 3. If yes, what the reasons to do not use D instead? > > * The powers that be in my company are the kind of C programmers > that can't understand why anyone would want to use C++ (i.e. > Electrical engineers that write software). I always felt like C is the better designed language when compared to C++. Of course C misses many features of C++ and C also has some badly designed features (preprocessor, header/include system, function pointer syntax, array [n] not attached to the type but to the variable identifier). But among some useful features C++ also adds much more noise on top of the already existing C misfeatures: ugly template syntax, iostreams/pipe syntax, operator overloading for controversial operators, c++ namespaces, multiple inheritance, ... Of course C has limited means for abstraction and therefore is not suitable for certain projects. But the language feels 'cleaner' imho, C++ sources files using templates and similar features are often hard to read. But OTOH I'm an electrical engineer as well ;-) -- Johannes
Re: Questionnaire
1. Why your company uses D? I can use D only for very small apps in my job. My own project use D because it was the best language what I found when I started developing OS from scratch 5 years ago. 2. Does your company uses C/C++, Java, Scala, Go, Rust? We use C/C++, Java 3. If yes, what the reasons to do not use D instead? Replacement as C++: There is problem to find and hire C++ programmers so how could we find D programmers... Nobody here wants to learn new programming language... Many of ours projects/libraries are already written in C/C++. Replacement as Java: Making GUI apps in D (with Qt) is pain in the a$$. We need good IDE, Drag'n'Drop GUI builder and framework with stuff like in Java or .NET first. 2. Have you use one of the following Mir projects in production: No 4. Have you use one of the following Tamedia projects in your production: No 5. What D misses to be commercially successful languages? Native GUI IDE with D'n'D interface builder Framework with all stuff in (like .NET) Maybe more understandable documentation with more examples. More syntactic sugar in D? Like maybe monad, tuples, etc. 6. Why many topnotch system projects use C programming language nowadays? Small and fast programs with no runtime.
Re: Questionnaire
On Wednesday, 8 February 2017 at 21:41:24 UTC, Mike wrote: * "Minimal Runtime" is the building block of systems programming. If this is not a core feature of a language, it will never compete with C. Systems programmers in my field need to incrementally opt-in to features in a pay-as-you-go fashion to make precise tradeoffs for their unique requirements and hardware platforms. Rust is the only modern language that I'm aware of that's getting this right. Whiley is in early stages, but I believe they have optional Rust-like memory management implemented (proof-of-concept?) to enable embedded programming situations. http://whiley.org/2016/05/28/reference-lifetimes-in-whiley/ It isn't a production ready language, but well worth following.
Re: Questionnaire
On Wed, 08 Feb 2017 18:27:57 +, Ilya Yaroshenko wrote: > 1. Why your company uses D? You might have specified that this questionnaire is only for people who use D at work. I use D for small utilities to help in development. For instance, I used vibe.d to compare performance with other frameworks when I had performance concerns. > 2. Does your company uses C/C++, Java, Scala, Go, Rust? We use Java, Kotlin, and some C/C++. > 3. If yes, what the reasons to do not use D instead? On the client side, we're building for Android. Some of it is native, and it would not be a natural fit to use D (minor modifications in Android platform code that's written in C/C++). We use Swagger and Thrift for service definitions. Thrift supports D; Swagger does not. We use AWS. There is no AWS client library for D and it would not be cost- effective to implement one. If we want people to learn a new programming language for the JVM, they probably know Java already, and the rest of the ecosystem is identical. With D, the ecosystem is entirely difficult. Java has NullPointerException, while D has a segmentation fault. It's easy to catch NPE and harder to handle a segmentation fault, even if you are just trying to log and exit. The "die on error" trend has me worried that it will be difficult to run services with reasonable uptime, and the people saying that we shouldn't even try to log anything in the face of an error worry me even more. I can't run systems in production if I'm not allowed to log errors. The runtime doesn't even promise to make an effort to let me catch an Error. > 2. Have you use one of the following Mir projects in production: No. > 4. Have you use one of the following Tamedia projects in your > production: I've never even heard of them before. Have they ever thought of going into advertising? > 5. What D misses to be commercially successful languages? The backing of a large organization. The example of Go shows me that a language can become successful despite its technical attributes with the backing of a large organization.
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language a,d 2. Does your company uses C/C++, Java, Scala, Go, Rust? We use the C++ alaso. we have C++ for writeing the Client by Qt. 3. If yes, what the reasons to do not use D instead? No reasons to use D instead. 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice No. 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount a, we use the asdf in hunt. 5. What D misses to be commercially successful languages? Not has distinct orientation。 and update slow。 6. Why many topnotch system projects use C programming language nowadays? The GC。 and if not GC , D only has a little.
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language I use D only privately so far. 2. Does your company uses C/C++, Java, Scala, Go, Rust? I've seen C, C++, and Java being used. 3. If yes, what the reasons to do not use D instead? Nobody ever heard of the language (this holds true pretty much in every discussion I have on the topic) 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice No. 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. N/A 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount I've used asdf for configuration files[1][2], it works very well for shortening development time. 5. What D misses to be commercially successful languages? My two cents: - "Name" backing by a well-known (i.e. internationally famous) corporation/foundation - Viral marketing ("spread the D") - Fix or removal of all the little things that may make someone go "ugh, wtf?". I'm looking at you, `shared`, and your missing memory barriers[5], or you, `std.parallelism.taskPool`, and your non-daemon "daemon" threads[6]. Privately I can work around them since it's my own time, but I don't expect many people in big companies (see first point) with a deadline to want to put up with that. - Tooling, though that's been getting better - Phobos without GC (where possible) - std.experimental.allocator -> std.allocator and promote it as *the* memory management interface for D. Seriously. With it I can even allocate and pass delegates to C in an intuitive way (see [3] and [4]). 6. Why many topnotch system projects use C programming language nowadays? Don't know if the premise holds, but if it does I'd wager it's because people who *do* write topnotch (system) software can do so in *any* (system) language that's asked of them - since in the end the topnotch comes from the person writing the code, not the language ("ignorance (of a language) can be remedied, stupid is forever") - and C has the de facto corporate monopoly of being asked to write in. [1] https://git.ucworks.org/UCWorks/dagobar/tree/master [2] https://git.ucworks.org/UCWorks/tunneled/tree/master [3] https://git.ucworks.org/UCWorks/dagobar/blob/master/source/libuv.d#L125 [4] https://git.ucworks.org/UCWorks/dagobar/blob/master/source/libuv.d#L159 [5] https://dlang.org/faq.html#shared_guarantees [6] https://issues.dlang.org/show_bug.cgi?id=16324
Re: Questionnaire
On Wednesday, 8 February 2017 at 22:52:36 UTC, bpr wrote: On Wednesday, 8 February 2017 at 21:41:24 UTC, Mike wrote: Suggesting D would be an exercise in futility, unless I can create a notable project in D in my spare time that demonstrates its advantages and appeal to the masses. I tried to do this 2 years ago, but D failed me, primarily due to https://issues.dlang.org/show_bug.cgi?id=14758 I read this comment from you on another thread too, and (caveat: I'm not working in such resource constrained domains as you are) it seems sensible. It seems like it may be a good GSOC project to modify dmd as you suggest elsewhere. Have you considered trying to find someone to do that? First, for that to happen, the D leadership would need to chime in with a plan on how they want to address this problem. Second, for me to allocate any more of my resources, I'd have to be convinced that their plan is a good solution to the problem. A -betterC switch is not at all attractive to me. I think the D leadership are too busy addressing broader issues with the language at the moment, so this specific case is just not a high priority. Also, if it's not a priority to the them, then anyone that does attempt to work on it will just suffer an eternity in pull request purgatory. So, I would not recommend it as a project for anyone until the D leadership decides to get involved. I'd love to see a D3, but that seems unlikely, and more unlikely if D2 languishes. It seems though that your issues are with the implementation, not the language itself, so if you got your wishes below Instead I suggest following through on things like https://issues.dlang.org/show_bug.cgi?id=12270 and considering this proposal (http://forum.dlang.org/post/psssnzurlzeqeneag...@forum.dlang.org) instead. wouldn't you be mostly satisfied with D2? Correct, my issue is not really with the language, but with its implementation. Resolving issue 12270 and implementing my proposal for decoupling the compiler and druntime would prompt me to further explore D. I'd also like to see how the recent DIP25 and DIP1000 could be leveraged. I'm looking forward to an article on the topic, or Walter's talk at DConf2017 before I dedicate any of my time to it. At first glance, however, it seems like a lot of attribute patchwork. It's become apparent to me that D just hasn't been designed with bare-metal systems programming in mind, so I'm skeptical that even if issue 12270 and my decoupling proposal were implemented, I'd still run into other disappointments. But I'd at least be willing to give it another try, and would be thrilled to be proven wrong. Mike
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: All my current D project are finished. Probably I will use other languages for production this year, Java/Go/whatever. N... I Guess I'll have to try to convince you to help with DCompute once the necessary compiler stuff gets merged into LDC.
Re: Questionnaire
On Wednesday, 8 February 2017 at 21:41:24 UTC, Mike wrote: Suggesting D would be an exercise in futility, unless I can create a notable project in D in my spare time that demonstrates its advantages and appeal to the masses. I tried to do this 2 years ago, but D failed me, primarily due to https://issues.dlang.org/show_bug.cgi?id=14758 I read this comment from you on another thread too, and (caveat: I'm not working in such resource constrained domains as you are) it seems sensible. It seems like it may be a good GSOC project to modify dmd as you suggest elsewhere. Have you considered trying to find someone to do that? I believe D has the potential to bury all other emerging languages out there, but only if it drops its historical baggage. At the moment, I'm of the opinion that D will remain an obscure language until someone forks D and takes it in a different direction (unlikely), or the D Foundation decides to "reboot" and start working on D3 with a new, updated perspective (more unlikely). I'd love to see a D3, but that seems unlikely, and more unlikely if D2 languishes. It seems though that your issues are with the implementation, not the language itself, so if you got your wishes below Instead I suggest following through on things like https://issues.dlang.org/show_bug.cgi?id=12270 and considering this proposal (http://forum.dlang.org/post/psssnzurlzeqeneag...@forum.dlang.org) instead. wouldn't you be mostly satisfied with D2?
Re: Questionnaire
On Wednesday, 8 February 2017 at 18:27:57 UTC, Ilya Yaroshenko wrote: 1. Why your company uses D? We don't use D. 2. Does your company uses C/C++, Java, Scala, Go, Rust? C/C++. Currently exploring Rust. 3. If yes, what the reasons to do not use D instead? * The powers that be in my company are the kind of C programmers that can't understand why anyone would want to use C++ (i.e. Electrical engineers that write software). Suggesting D would be an exercise in futility, unless I can create a notable project in D in my spare time that demonstrates its advantages and appeal to the masses. I tried to do this 2 years ago, but D failed me, primarily due to https://issues.dlang.org/show_bug.cgi?id=14758 * Our customers don't use D. Some of our products are libraries and tools that our customers use. It doesn't make sense to program them in D if our customers don't use D. Though, if D had a minimal runtime, we could write them in D and distribute them with bindings to other languages. * For us, binary size efficiency and minimal runtime are important features. D is not pay-as-you-go; many heavy-weight features are opt-out instead of opt-in. In contrast Rust has "minimal runtime" as one of its pillars making it a much better alternative language choice for us than D. 2. Have you use one of the following Mir projects in production: No 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. N/A 4. Have you use one of the following Tamedia projects in your production: No 5. What D misses to be commercially successful languages? I believe D has the potential to bury all other emerging languages out there, but only if it drops its historical baggage. At the moment, I'm of the opinion that D will remain an obscure language until someone forks D and takes it in a different direction (unlikely), or the D Foundation decides to "reboot" and start working on D3 with a new, updated perspective (more unlikely). 6. Why many topnotch system projects use C programming language nowadays? Which topnotch system projects? * C is the lowest common denominator. All modern languages that I'm aware of can interface with C. If one wants to write a library for mass adoption, the best way to do so is to write it in C and create bindings for other languages. D could be a good substitute for this if it had a "minimal runtime" philosophy. * C is a simple, efficient, and powerful language. Some equate language complexity and heavy runtimes to bloat and inefficiency. Some see too much language complexity as an impediment to productivity. C creates the appearance of simplicity with efficiency. * "Minimal Runtime" is the building block of systems programming. If this is not a core feature of a language, it will never compete with C. Systems programmers in my field need to incrementally opt-in to features in a pay-as-you-go fashion to make precise tradeoffs for their unique requirements and hardware platforms. Rust is the only modern language that I'm aware of that's getting this right. * You may also be interested Dan Sak's recent talk "extern c: Talking to C Programmers about C++": https://www.youtube.com/watch?v=D7Sd8A6_fYU&t=2631s
Re: Questionnaire
On 02/08/2017 01:27 PM, Ilya Yaroshenko wrote: 1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language x. Because I'm self-employed so I get to choose the best tool for the job instead of whatever some know-nothing manager thinks "must be good because its popular". Also, all of the above. 2. Does your company uses C/C++, Java, Scala, Go, Rust? Not when I can help it. 3. If yes, what the reasons to do not use D instead? If, for whatever reason, my hands are tied and it's just not a possibility. Usually platform/framework compatibility. Or somebody above me deciding "You must use language X". (But, after having had more than enough PHP/VB/Java/C++/Python/etc in my life, I'm more inclined now to simply avoid situations that would involve such restraints. Life's too short to suffer bad tools for bad reasons.) 2. Have you use one of the following Mir projects in production: No. I keep hearing about Mir, but still haven't quite wrapped my head around what it is, or how/where to use it. (and that bugs me) 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. N/A 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount First I've heard of them. I'll take a look. 5. What D misses to be commercially successful languages? A groupthink mentality and loads of bad ideas and broken reasoning. Ie, the basic requirements for anything to be popular in the computing arena. Seriously. I'm not joking. Well, that and, nobody's ever really been in a situation where they're more or less FORCED to use D. Many, heck probably most, big-name languages got big because there were enough people who didn't have much of a choice: - Earlier days of Unix/Linux dev? Hard to avoid C/C++. - Work for a company that's heavily invested in MS tools? Hard to avoid VB (90's) or C# (2000's). - Work for a non-MS-based enterprise? Hard to avoid Java, because that's what the higher-ups had already been sold on. - Need to use a relational DB? SQL, period. - Need client-side scripting on a web page? JavaScript, period (until just recently). - If you wanted an MVC web framework, for a short while Ruby was the only choice. I guarantee Ruby would be more popular today if that time period had been longer. It's undeniable nobody would've ever heard of Ruby were it not for Rails. - Need to run something on an affordable commodity server in the late 90's/2000's? PHP, period. Unless you paid an extra $5-$10/mo. and restricted your choice of providers - then you could use VBScript/ASP, which was basically the same exact thing as PHP, but just incompatible. - Need low-level hardware access, memory management or other direct control over performance and resource usage? Until recently, had to be C/C++. Then once onboard, stockholm syndrome sets in. Instant popularity. Coercion (and perceived coercion[1] for that matter) makes technologies popular far more than any other factor. The computing sector is NOT a meritocracy, not by a longshot. That right there is D's #1 biggest marketing flaw, period. If you nail that coercion part, it doesn't matter HOW badly you do on any other technical or marketing aspect. Been proven time and time again. And if you DON'T have that coercion, you face an uphill battle no matter how good you do on technical and marketing fronts. Also been proven time and time again. [1] The "I must keep up or get left behind" thought train. See also "Cover Fire" and the Fire and Motion stuff here: https://www.joelonsoftware.com/2002/01/06/fire-and-motion/ 6. Why many topnotch system projects use C programming language nowadays? Partly inertia, but also because there was a decade or two (that only ended a few years ago) where nearly all language designers obsessed over VMs and eliminating low-level capabilities, and in general dumbing down their languages to the point of uselessness for anyone but novices, hobbyists, and those who could afford to throw money/hardware at any and all performance/resource/scalability issues[2]. Because of that, for many C/C++ users, there simply was no realistic alternative, period. [2] I'm sure 90's Sun LOVED their JVM/Java - it virtually guaranteed "optimization" could only mean "rent/buy more hardware" - Everything else besides reducing algorithmic complexity was deliberately banned by both the language and the VM...as a self-proclaimed "feature" no less. That "feature" allegedly being for safety, but decades of security patches and exploits for every VM on the planet proved that to be a load of...male cow.
Re: Questionnaire
Plus, it can be enchanted during the GSoC 2017. EDIT: enhanced
Questionnaire
1. Why your company uses D? a. D is the best b. We like D c. I like D and my company allowed me to use D d. My head like D e. Because marketing reasons f. Because my company can be more efficient with D for some tasks then with any other system language 2. Does your company uses C/C++, Java, Scala, Go, Rust? 3. If yes, what the reasons to do not use D instead? 2. Have you use one of the following Mir projects in production: a. https://github.com/libmir/mir b. https://github.com/libmir/mir-algorithm c. https://github.com/libmir/mir-cpuid d. https://github.com/libmir/mir-random e. https://github.com/libmir/dcv - D Computer Vision Library f. std.experimental.ndslice 3. If Yes, can Mir community use your company's logo in a section "Used by" or similar. 4. Have you use one of the following Tamedia projects in your production: a. https://github.com/tamediadigital/asdf b. https://github.com/tamediadigital/je c. https://github.com/tamediadigital/lincount 5. What D misses to be commercially successful languages? 6. Why many topnotch system projects use C programming language nowadays? = All my current D project are finished. Probably I will use other languages for production this year, Java/Go/whatever. Mir libraries are amazing and good quality. If you use them this would be a good motivation for us to improve the docs and provide regular updates. Plus, it can be enchanted during the GSoC 2017. Thanks, Ilya