6 ms·
Good news indeed. Switched to D 4 years ago, and have never looked back. I wager that you can sit down a C++/Java/C# veteran, and say write some D code. He
by iamNumber4 10y ago
Good news indeed.
Switched to D 4 years ago, and have never looked back. I wager that you can sit down a C++/Java/C# veteran, and say write some D code. Here's the manual, have fun. They will with in a few hours be comfortable with the language, and be fairly competent D programmer. Very little FUD surrounding the switching to yet another language with D.
D's only issue is that it does not have general adoption, which I'm willing to assert is only because it's not on the forefront of the cool kids language of the week. Which is a good thing. New does not always Mean, improved. D has a historical nod to languages of the past, and is trying to improve the on strengths of C/C++ and smooth out the rough edges, and adopt more modern programming concepts. Especially with trying to be ABI compatible, it's a passing of the torch from the old guard to the new.
Regardless of your thoughts on D; My opinion is I'm sold on D, It's here to stay. In 10 years D will still be in use, where as the fad languages will just be foot notes in Computer Science history as nice experiments that brought in new idea's but were just too out there in the fringes limiting themselves to the "thing/fad" of that language.
- coding123 10y agoI think a lot of languages that get popular have to have a thing. Like a thing they do well, and hopefully change the world a little... Python had math and has lots more maths now. R also has math and started to kill Python, but now Python has Tensorflow and PyTorch. Scala has Spark. Java has Tomcat, and everything that followed, which is probably 20% of the world's mass by volume. Go has Docker Ruby has/had a railroad or something? JS has well, f... I don't know where to start here. Does D have a thing?
- WalterBright 10y ago> Does D have a thing? Probably its most useful feature is rather subtle. It's very easy to express diverse ideas in code in D without having to resort to contortions. It's something people realize after having worked with D for a while. It is not the result of having feature X (you can always find feature X in other languages or a way to make X work), it's the combination of various X's. For example, some algorithms express naturally in a functional manner, some imperative, some OOP, etc. It isn't necessary to buy into a manner for the whole program, just use the manner that fits the particular part of the program. You might like to use FP here and there, but don't want to deal with monads. You can use OOP for the AST, but don't want to box integers into an OOP class. You like dynamic typing for one type, but it's a bad fit for another. You can garbage collect for a quick prototype or a seldom used part of the code, and carefully manage memory for the release or the hot spots. (The Warp preprocessor I wrote did that. https://github.com/facebookarchive/warp https://github.com/facebookarchive/warp) There's a lot less time hammering square pegs into round holes. I've seen more than enough presentations on "How To Do Technique X In Language Y" and everyone says how clever that is but the contortions are just too awful to contemplate. The flip side is that D won't be satisfying to a purist adherent of any of those paradigms.
- jordigh 10y agoI really like how purity in D is so... practical. I like that a for loop is totally allowed in pure code as long as it modifies no data outside the pure block. One of the most annoying things in Haskell was to translate some algorithm that looks very natural in a for loop into some other sort of combination of map or reduce or something even more complicated. (Yes, I know Haskell can also fake for loops more cleanly with monads, but they still feel awkward and unnatural.)
- buzzybee 10y agoMy recollection from the last time I worked with D was that pure could be more complicated and strict than expected when using standard libraries functions, e.g. using trigonometry sets hardware global state, thus impure. I don't remember if there was a good workaround to convey intent of purity despite that.
- p0nce 10y agoIn D "pure" means "referentially transparent".
- milesrout 10y agoPython was not popular because of maths. Python was very popular long before the scientific computing stuff. Python was chosen for that for two reasons: ease of extension using C, and being extremely easy to read and write. There's a reason that Python is commonly referred to as 'executable pseudocode'. But yes, Ruby had Rails, JS had web browsers, Perl made string handling easy, Java was appealing to managers (don't let your moron employees write undefined behaviour: CHOOSE JAVA!), etc.
- kahnpro 10y agoI'm pretty sure Java's feature is that it has java.lang.NullPointerException
- pekk 10y agoR is old. R always had math. That's not new. Python always had a lot of other things. Strange depiction.
- lazzlazzlazz 10y agoI think you're a new engineer - R has always been math, from the bottom up. Python is the relative newcomer to math. Go was exciting before Docker existed. JS has the browser, and then had Node. Scala has functional programming and the JVM. Spark is not really a "Scala thing" (although it is written in Scala). You can use other languages with Spark. Tomcat is hardly the first thing that comes to mind with Java. What a bizarre perspective you have!
- tracker1 9y agoJS has an actual write once run anywhere with an above-average async story.
- oblio 10y agoWhat do you consider as "fad languages"?
- iamNumber4 10y agoNot going to start a flame war. Everyone has their opinions, However there are languages that come and go, and then are swift to become popular, but then are left to rust, because people stopped having smalltalk about them.
- oconnor663 10y ago> languageS that Come and go, And then are swift to become popuLar, but then Are > languageS Come And popuLar Are > S C A L A Did I do that right?
- iamNumber4 10y agoI think you hit that Node, with a ruby of a pun, and are on the right railroad tracks my friend.
- hackbinary 10y agoWhitespace? https://en.wikipedia.org/wiki/Whitespace_(programming_language) https://en.wikipedia.org/wiki/Whitespace_(programming_langua...
- vram22 10y agoYes, he's certainly Going Forth.
- senorjazz 10y ago;)
- turbohedgehog 10y agoThat's a brainfuck
- 10y ago
- lomnakkus 10y agoI'm not sure that "it's going to stay", as you say, but at the very least it's been hugely influential on C++ (if constexpr, anyone?) and even for just that it is and has been valuable for everyone working in C++ land.
- mhh__ 10y agoI think D will hit some sort of critical mass soon, probably through the form of a corporate sponsor ( a la google and Go). Obviously, it's entirely possible that D will indeed fade away, but that would be a real shame. The way D is designed is very holistic: the combination of ranges, UFCS and CTFE (and modules) all made me really hate using C++. I've ended up being more productive (even with toys that I never touch again) in D than with that dynamically typed languages like python and js.
- milesrout 10y agoIf constexpr is not inspired by static if. In fact, proposals of static if and things like it were explicitly rejected by the committee.
- eco 10y agoWalter, Andrei, and Herb proposed "static if" in N3329 (after it's big success in D) which was ultimately rejected. Ville Voutilainen explicitly revived it in N4461 with changes. Ville then iterated on that proposal a few times (P0128R0 and P0128R1). Finally, Jens Maurer took that and made some syntax changes with commitee input resulting in P0292R1 which was the accepted proposal. "static if" from D absolutely was the inspiration for "constexpr if". Each proposal references the last in a chain going back to Walter, Andrei, and Herb's proposal.
- lomnakkus 10y agoAFAICT, yes it was. Obviously, it wasn't accepted as-is, but it was certainly motivated (i.e. "inspired") by the success of "static if" in D.
- milesrout 10y ago
- TTPrograms 10y agoHow well does Dub work? That could be another issue preventing widespread adoption.
- qznc 10y agoI use it for various smaller protects and have no issues with it. Looks good to me.
- giancarlostoro 10y agoI want to say it's somewhat good, but sometimes it just doesn't work out too well, and experience may vary between developers. But I totally agree, if some of it's quirks were sorted out... Sidenote: I'm really sorry I can't mention any off the top of my head, it's been a year or more since I last touched it. I did enjoy using dub, but ran into some odd issues from time to time. If it breaks, you can't use it properly basically.
- p0nce 10y agoWorks well for me, I use a subset though. I like dub.
- adamnemecek 10y ago> D's only issue is that it does not have general adoption, which I'm willing to assert is only because it's not on the forefront of the cool kids language of the week. Which is a good thing. The reference compiler not being open source makes a language not cool with the cool kids. (Not that I'm blaming anyone).
- ASalazarMX 10y agoI think you answered yourself why D is not more popular with the "cool kids". C++/Java/C# are overengineered, verbose, horrible languages to use. Java is a bastard of C++, and C# is the better looking bastard. Yes we use them, and even like them in a weird Stockholm Syndrome way, but they're not fun to work with. We use them because we need them, not because we enjoy them. Disclaimer: the personal pronoun "we" as used here means the author plus zero or more people.
- jnordwick 10y agoJava is very simple and has, hands down, the best tooling of any major language out today. That is why it is the most popular. Java isn't my favorite language, but even I can remove my blinders enough to see its strengths.
- TylerE 10y agoSay what? The words that come to mind when I think of Java tooling is certainly not "best". More like "Bloated, slow, too-fscking-much-XML"
- koko775 10y agoMaybe you're a better programmer than you are a configure-r. But its tooling is insanely, insanely good.
- jnordwick 10y agoXML? That's probable Spring. I hate that thing. But Java's tooling for monitoring is crazy good. The benchmarking harness that gives back the assembly code generated for hot code, unmatched on any other non-native language. The editors and how good hinting and auto-complete are, I don't know of another language that integrates so well. Java really raised the bar on tooling and other languages/platforms have really had to drive hard to get just a close comparable place.
- homarp 10y ago
- Tagore 10y agoInteresting. I prefer to write in high-level strongly dynamically typed garbage-collected languages when I can. But of course I can't always do so and get the performance I want. My approach is generally to prototype in languages like Python, but implement in C89. See: https://www.youtube.com/watch?v=WNTOpl30MIQ https://www.youtube.com/watch?v=WNTOpl30MIQ . That's 10s of thousands of times faster than our initial prototype and... We profiled all sorts of things in order to make it that fast. Right down to cache misses, branch mis-prediction, etc, how concurrency on the CPU interacts with I/O.