22 ms·
Organizations Using the D Language
- mhh__ 6y agoOf these Companies, Symmetry Investments and Weka are probably the most prominent in the community. Symmetry seem to be perpetually hiring (The management fee alone on 6Bn must be quite a lot), so worth asking around.
- 1MachineElf 6y agoThe D-based machine learning back-end of Netflix, one of the organizations listed here, was previously discussed: https://news.ycombinator.com/item?id=14920608 https://news.ycombinator.com/item?id=14920608
- DonnyV 6y agoAt this point I'm not sure why you would used Dlang when you can use C#. Maybe if your doing really close to the metal stuff. But not sure why for anything else.
- scns 6y agoBecause you can just deploy a binary / no runtime needed?
- cameronh90 6y agohttps://docs.microsoft.com/en-us/dotnet/core/deploying/single-file https://docs.microsoft.com/en-us/dotnet/core/deploying/singl... You can do that now. Technically the binary contains an embedded runtime, but is that really much different? Full AOT is possibly coming with the next version of .NET, mainly aimed at non-JIT-capable targets, such as WASM and iPhone. Currently they only work with Mono due to lack of AOT in .NET 5.
- Shadonototro 6y ago30mb for a hello world 60mb + for a HTTP server is not what i call a single binary without runtime at best it is called packing giant runtime together with user executable hack and their AOT story is far from being perfect, it has to deal with the fact that C# is a managed language first so exit system programming needs, it's just not playing on the same field c# is aimed at webdevs and game scripters with unity
- cameronh90 6y agoAs I mentioned it is mostly just packing a runtime with the binary. But for most use cases, does it matter? It won't work well for microcontrollers, but for most other things a 60MB binary is not a big deal. It takes under 3 seconds to download on an average internet connection. The main reason I wouldn't use it for system programming is lack of good Linux libraries.
- Shadonototro 6y agoit doesn't matter how long it takes for people to download it it is plain and simple, waste of bits, and bits is money, the more you have, the more money it'll cost you to move around, process and store scale this to billion of computers, and you'll understand what i mean by waste
- cameronh90 6y agoIt's an insignificant cost. Nobody cares about it at any scale except embedded development (or occasionally due to artificial restrictions created by app stores). The money saved by shaving a few MB off your binary is going to always be like 0.00001% of your costs, and even if you're at such a massive scale where that could justify developer investment, there's going to be lower hanging fruit to worry about. If you're at such a level of optimisation that it's correct to worry about deploying a 60MB binary, you must be doing exceptionally well. Most places (including Amazon and Google) are using 200MB+ docker images and serving poorly optimised image files. And if it _really_ bothers you, you can always install the runtime separately for a sub-1MB binary, or use trimming for a sub-10MB binary.
- WalterBright 6y agoIf you're using D in betterC mode, all it needs is the C runtime library. You can build very small executables that way, as small as C can.
- destructionator 6y agoC# is a pretty good language and for some tasks, probably a better choice. But D is very versatile, so once you get into it, you can expand your use into all kinds of different areas. It can do your regular application or line of business support code reasonably well, but it can then also expand out to new platforms, new paradigms, and tie together niches under one language. As an individual programmer, it is pretty cool being able to write web apps and homebrew video games with the same language. For a company, you probably aren't going to be that varied, but it can still be good to dive into some special optimizations as needed. Many of the organizations on this list use D for some combination of its flexibility. They have two areas of interest that need to co-exist and D lets that happen with minimal friction.
- mhh__ 6y agoI'm obviously biased as I work for the D foundation, but I tried C# for a while - it's was fairly nice to use but the lack of const-correctness and purity where I wanted it made me badly miss D. D is not a simple language, but the solutions it chooses are usually very simple - for example, D has unit testing in the language, this is maybe a day's work in most compilers and yet not many others do it.
- WalterBright 6y agoBuilt in unit testing sounds like a dumb feature, but it really is transformative in how one writes code. It's so dang convenient to write unit tests, it's hard to justify not doing it. It's the same with the builtin documentation generator.
- mhh__ 6y agoA feature so useful, in fact, that some people write their unittests in D even if the other project is written in something else
- crazypython 6y ago> It's the same with the builtin documentation generator. The syntax of the documentation generator is also far more convenient than JSDoc or JavaDoc.
- WalterBright 6y agoThe documentation generator has recently acquired the ability to recognize Markdown, making it even easier. I was initially skeptical of Markdown, but after using it here and there became a fan.
- crazypython 6y agoMarkdown is like C and XML: Popular not because it's very easy to write a single-pass parser for, giving it widespread and universal use.
- p0nce 6y agoSome workloads work better in native code.
- pjmlp 6y agoC# also compiles to native code, just like D, csc isn't the only option.
- mastrsushi 6y agoIf you're referring to .NET native, I dont think it's considered industry reliable.
- pjmlp 6y agoNot only, there are others to chose from, and regarding .NET Native is reliable enough to build an whole business on top of it, Windows Store, upcoming Windows 10X, and the late Windows Phone definitely did not fail due to it.
- mastrsushi 6y agoThen why is the rest of the C# world using traditional CLR?
- pjmlp 6y agoFor the same reason plenty of people here are completely unaware of what Java and .NET are fully capable of. Many just learn the minimum to deliver something.
- p0nce 6y agoBut then you can't do reflection? Besides I'm in native space I never seen any native C#.
- pjmlp 6y ago
- p0nce 6y agoNot sure why you would use C# when you can use Dlang?
- Kranar 6y agoTo get access to a wealth of libraries, support, documentation and tools, that D is sorely lacking in. To be able to use a state of the art garbage collector that provides some degree of guarantee about runtime performance as opposed to D's very poor garbage collector that provides basically no guarantees and is known to sometimes block an application for upwards of dozens of seconds at a time [1]. And most importantly, to be able to use a platform that has pretty strong guarantees about backwards compatibility and that is able to run code from 10 years ago without modification, as opposed to D where even a minor version update can end up breaking D's own standard library. Certainly D has a niche of users who are very passionate about it and for those guys, all the power to you guys and don't bother listening to me... but for most of us, well after 20 years it really hasn't established itself as a reliable language to use beyond that niche. It's no longer 2005, a time when C++ was stagnating and there was a lot of opportunity for a new programming language to sit some where between Java and C. Instead of being released with a roadmap, some promising libraries and frameworks that establish a clear use case where D could shine, and a license that allowed broader community involvement in the implementation of the language and its standard library, it was released as a proprietary compiler that ended up quickly resulting a very fragmented community with a lot of infighting, many missteps and mismanagement made on the part of D's leadership the result of which is that D lost on the order of 5-10 years worth of progress for nothing. It's now 2021, C++ has advanced significantly since those days, there's many new languages such as Go and Rust that have taken the steam out of D and are progressing far more rapidly... and D, which at one point in time was actually innovating on language design, is now constantly trying to play catch up with other languages and implementing half-assed features. The language is often referred to as a kitchen sink of functionality and I kid you not when I say D is literally in the process of working on adding a quasi-borrow checker to the language just so it can keep up with Rust. [1] https://pointersgonewild.com/2014/09/09/ds-garbage-collector-problem/ https://pointersgonewild.com/2014/09/09/ds-garbage-collector...
- 6y ago
- Shadonototro 6y agoC# is a Java for the poor Missing: - native compilation, of course - mateprogramming, ctfe, mixin etc etc - raw performance - free c/c++ interop - optional GC - manual memory management At best it is a Java clone that tries to eat NodeJS cake at the same time, but is then eaten alive by GOLANG C# is plagued with enterprise bullshit (OOP, dependency injection, factory bullshit, one class per file bullshit, etc etc etc) Worse, it only has a JIT, no AOT native compilation (there is one compiler but AFAIK Microsoft is focusing on JIT) so it can't do system/native development at all
- cameronh90 6y agoC# has metaprogramming through generics, the Roslyn compiler API and source generators. C# supports limited manual memory management through unsafe and manual memory allocation methods, but this is primarily aimed at C/C++ interop. Newer performance oriented features like stackalloc and Span/Memory give most of the benefits of manual memory management without the dangers. Performance of .NET on Linux is on average better than Java and Go. Mono has an AOT implementation and Microsoft are expected to release one soon. C# normal coding style may not be to your preference, but it's become a lot less "enterprisey" in recent years. XML is nowhere to be seen any more, for example. But yes indeed it's not a very good language if you're wanting to directly manipulate registersand hardware addresses.
- Shadonototro 6y ago.net performance is good once fully warmed up JIT, wich never happen for most usecases, only in raw and longrunning benchmarks so no, real performance scenarios, .net don't do better than GO wich is AOT compiled mono performance is very bad actually generics isn't playing on same level as metaprogramming in D, not even close to templates in C++, even Rust do better here using roslyn compiler API is nice, but again, it is not the same as using the language itself already, the experience is different, it is on other hand much better than what GO has to offer
- pjmlp 6y ago> native compilation, of course There are plenty of AOT options for .NET, better improve your knowledge. > - mateprogramming, ctfe, mixin etc etc Attributes, reflection, compiler plugins, T4 templates, code generators > - raw performance So how does D stand in Techpower benchmarks or gRPC serialization performance? > optional GC If you know how to actually program in C# you also get some ways of doing it, even more so in C# 9. > - manual memory management Available since C# 1.0 via Marshal namespace. I like D, but lets not pretend C# in 2021 is the same when Alexandrescu wrote the D book.
- Decabytes 6y agoOnce I've gotten a better grasp on C, I plan on moving up to a language with a few more conveniences for day to day programming. It's between D, Rust, and C++. I feel like the safe bet is C++, but since I don't plan on getting hired to do it, Rust and D are also in contention. I like the idea of using D with a garbage collector and having something like GO, and then turning it off when I want to do something more performance oriented. How is the performance of D compared to other garbage collected languages when the garbage collector is turned on?
- bsaul 6y agoThe idea of having a language that can work with or without a garbage collector in different part of a code seems completely impossible to manage to me. How can this even work in practice ? Do you have twice the stdlib ? Twice the libraries ? I'm pretty sure the D guys figured it out, but i'm really curious to see what's the end result in the real world, once it reaches the dirty hands of end-product developers :))
- WalterBright 6y agoMost of my programs tend to be a mix of GC allocations and malloc allocations. They work together rather smoothly.
- Thiez 6y agoHow does that work? As I understand it the D GC scans the stack and the GC heap memory for pointers (or values looking like pointers) to determine which objects are reachable. But can the GC scan memory allocated by malloc? How does it know whether a value allocated with malloc has since been freed?
- david2ndaccount 6y agoYou call a function to register and deregister a region of memory as potentially holding pointers to Gc-allocated memory.
- deleted 6y ago[deleted]
- generichuman 6y agoIs this list up to date? It looks like Facebook stopped using it. (they archived the linked repo)
- Kranar 6y agoJudging from the Github links posted, this list looks fairly out of date. Many of these organizations no longer exist, switched away from using D and heck, one of them isn't an organization but just a guy's solo project.
- mhh__ 6y agoI will get round to updating at some point, but honestly I don't think anyone in the community cares all that much. D has made it this far basically without paid staff until extremely recently i.e. we don't have a tech company as a sugar daddy. People can be very generous in their donations, but consider that Google probably spend 10M a year on Go - of D and Go, regardless of which one you prefer, which one makes you think.
- deleted 6y ago[deleted]
- NationalPark 6y agoSo what's the five or ten year story here? It's hard to look at D as a serious systems language option when it seems like the handful of people who are actually invested in its development have no interest in expanding the community and ecosystem. With so few people involved, there's too much risk that the capricious desires of a single developer or small faction will make an unexpected change or end support.
- mhh__ 6y agoD has literally just gained 3 new staff paid for by the community (including myself). And a single developer can't change the language. There are millions and millions of lines of D in production, and we have testcases and bug tracking going back a decade or two now - you can't break stuff by yourself.
- swagonomixxx 6y agoCool to see ArabiaWeather using D, especially with a link to the talk. For someone from that region (the Levant) I rarely see any organizations in the Arab world discussing tech, simply because they usually outsource most of the work to nearby tech hubs like India.
- bdd 6y agoFacebook was using D for rather important components at the time of linked tech talk. As of today, there's only one important looking thing left implemented in D. So...
- jibbit 6y agoI'm a bit embarrassed to have to ask.. D lets you transparantly use/make native libraries with the C ABI ? Are there other/any languages that do this?
- destructionator 6y agoYes, D does it trivially. I don't think that's terribly unique though, as I understand it Rust and several others can too.