digitalmars.D.learn - Looking for a language to hang my hat on.
- Dan (26/26) Nov 16 2015 I am a very new c++ programmer, having just learned the language
- lobo (15/41) Nov 16 2015 Start using D now. It's not all or nothing so you don't have to
- Dan (38/52) Nov 17 2015 Using both does seem like a good way to transition. I could
- bachmeier (5/16) Nov 17 2015 I meant there is no reason to abandon C++ in favor of D. The
- Chris Wright (33/37) Nov 16 2015 Your largest problem in the short term is documentation quality.
- bachmeier (13/18) Nov 17 2015 Does anyone still use htod? I thought dstep was the tool being
- Chris Wright (3/12) Nov 17 2015 dstep doesn't work out of the box. A simple `dub run dstep` results in
- Russel Winder via Digitalmars-d-learn (16/19) Nov 17 2015 Last time I looked at Code::Blocks it couldn't do a dark theme, and the
- bachmeier (6/12) Nov 17 2015 What do you plan to do with D? Learn it so you can use it for
I am a very new c++ programmer, having just learned the language this year. A few months ago I completed a course on Coursera that dealt with the security aspect of c (which I don't know, but it is similar enough): https://class.coursera.org/softwaresec-008 The course highlighted just how dangerous c/c++ can be. My reaction to the course has been an increased use of shared/weak pointers over standard pointers, more judicious use of "assert" and increased use of destructors, where class pointers are destroyed via the destructor so I don't need to worry about memory leaks as much (all of my non-vector arrays are created/destroyed via a class w/ template). Some of this slows programs down, but in reality it does not have much of an impact. But doubt will always linger that I caught every vulnerability. Therefore I am shopping for a language that codes like c++ but is safer. It sounds like D may fit that requirement. My platform of choice is 64-bit Fedora using Code::Blocks (yes, I use an IDE as a crutch). It seems that D supports this combo. I have been lurking on this site over the past few weeks trying to decide when (and if) to make the transition. Can anyone here who has already made that transition tell me how smoothly it went? Any major unexpected problems? Advice? thanks! Dan
Nov 16 2015
On Monday, 16 November 2015 at 22:39:17 UTC, Dan wrote:I am a very new c++ programmer, having just learned the language this year. A few months ago I completed a course on Coursera that dealt with the security aspect of c (which I don't know, but it is similar enough): https://class.coursera.org/softwaresec-008 The course highlighted just how dangerous c/c++ can be. My reaction to the course has been an increased use of shared/weak pointers over standard pointers, more judicious use of "assert" and increased use of destructors, where class pointers are destroyed via the destructor so I don't need to worry about memory leaks as much (all of my non-vector arrays are created/destroyed via a class w/ template). Some of this slows programs down, but in reality it does not have much of an impact. But doubt will always linger that I caught every vulnerability. Therefore I am shopping for a language that codes like c++ but is safer. It sounds like D may fit that requirement. My platform of choice is 64-bit Fedora using Code::Blocks (yes, I use an IDE as a crutch). It seems that D supports this combo. I have been lurking on this site over the past few weeks trying to decide when (and if) to make the transition. Can anyone here who has already made that transition tell me how smoothly it went? Any major unexpected problems? Advice? thanks! DanStart using D now. It's not all or nothing so you don't have to give up on C++. I have several projects that contain both C++ and D intermixed. D will make you a better C++ programmer, but especially C++ template programming. D metaprogramming is so easy to read, write and understand compared to C++ and many of the patterns still apply when you're standing knee deep in C++it. I also find the D standard library, Phobos, is a great codebase to learn from. Compared to the STL (except perhaps the original [1]) it's a great example of how performant D code can still be readable and maintainable. bye, lobo [1] http://www.stepanovpapers.com/butler.hpl.hp/stl/stl.zip
Nov 16 2015
Thanks everyone for taking the time to respond! Lobo,Start using D now. It's not all or nothing so you don't have to give up on C++. I have several projects that contain both C++ and D intermixed.Using both does seem like a good way to transition. I could combine the strengths of D with the strengths of c++. I have never mixed two programming languages in one project, all have contained one language exclusively. This is another bridge to cross.D will make you a better C++ programmer, but especially C++ template programming. D metaprogramming is so easy to read, write and understand compared to C++ and many of the patterns still apply when you're standing knee deep in C++it.I use c++ templates extensively, and if D offers a better solution that is fantastic. -------------------------------- Chris Wright,Your largest problem in the short term is documentation quality.This concerns me since it makes it very difficult for people trying to learn the language. I don't need that additional frustration.Your largest problem in the long run will be libraries.Also concerning, but if I can combine the two languages somehow as lobo suggested, there may be a solution (just need to figure out how and how difficult that is)....but you'd still have to write bindings. htod doesn't exactly work on Linux.I am not exactly sure what that means, which is probably not a good sign. --------------------------------------- Russel Windmer But doesn't code::blocks just interface with the compiler? I (naively?) thought I could just install the compiler and point code::blocks to that compiler. --------------------------------------- BachmeierWhat do you plan to do with D?Good point, I did not make that clear. Right now I just want to use it for personal projects, but someday I hope to take it further.Personally, I don't think there is a reason to transition. Instead, you should learn D and then use it when you are ready.That is troubling, but reasons to transition must exist or the language would not exist, right? I find that if I "learn" a language I forget it unless I actually start using it, at least for a short while. ---------------------------------------- January 2016 is when I should have time to experiment with D. I will attempt to install the language in Linux and kick the tires for a while. If I continuously stumble into insurmountable barriers, the experiment will end.
Nov 17 2015
On Tuesday, 17 November 2015 at 14:21:27 UTC, Dan wrote:I meant there is no reason to abandon C++ in favor of D. The lowest cost way to get started with D is to write some functions in D and call them from C++. I personally don't like the term "transition" because it implies significant cost.Personally, I don't think there is a reason to transition. Instead, you should learn D and then use it when you are ready.That is troubling, but reasons to transition must exist or the language would not exist, right? I find that if I "learn" a language I forget it unless I actually start using it, at least for a short while. ---------------------------------------- January 2016 is when I should have time to experiment with D. I will attempt to install the language in Linux and kick the tires for a while. If I continuously stumble into insurmountable barriers, the experiment will end.
Nov 17 2015
On Monday, 16 November 2015 at 22:39:17 UTC, Dan wrote:I have been lurking on this site over the past few weeks trying to decide when (and if) to make the transition. Can anyone here who has already made that transition tell me how smoothly it went? Any major unexpected problems? Advice?Your largest problem in the short term is documentation quality. It's improving, but it has a long way to go. It doesn't help that the standard library has such gems as: auto joiner(RoR, Separator)(RoR r, Separator sep) if (isInputRange!RoR && isInputRange!(ElementType!RoR) && isForwardRange!Separator && is(ElementType!Separator : ElementType!(ElementType!RoR))); Your largest problem in the long run will be libraries. I'm guessing the .NET BCL is larger than everything in the D standard library plus everything available via DUB. If you're using the language in a professional capacity, you'll eventually want libraries to help you connect to commercial stuff like Google or AWS APIs -- yeah, you're writing those yourself. Whereas with library support by default. Even Go has first-party library support for AWS. D? Not even a community version. This might change, but that's a gamble, and not one I'd take. For projects where you need specific libraries to exist already, D probably won't serve your needs. (It's definitely easier with C++ interop, but you'd still have to write bindings. htod doesn't exactly work on Linux.) Random example: I wanted an embedded document database. There are a few hanging around. Guess how many have D bindings. I ended up going with LevelDB, which is just a key/value store, and hoping that I didn't need any indices -- LevelDB already has D bindings, whereas I didn't find any real embedded document databases with D bindings. Similarly, there's a lot more choice in terms of libraries in other languages. So you know that, if the first library to do a thing doesn't quite meet your needs, the second might. I don't have that confidence in D. This is slowly getting better, and it's a lot easier with DUB than it was when I started using D.
Nov 16 2015
On Tuesday, 17 November 2015 at 00:33:44 UTC, Chris Wright wrote:This might change, but that's a gamble, and not one I'd take. For projects where you need specific libraries to exist already, D probably won't serve your needs. (It's definitely easier with C++ interop, but you'd still have to write bindings. htod doesn't exactly work on Linux.)Does anyone still use htod? I thought dstep was the tool being used to generate bindings. It depends on what OP plans to do. C interop is generally very easy, so anything available in C is also available in D, but it depends on how much of the glue code needs to be written. It has never been a big deal for me. The bigger problem is figuring out what the C library does than how to interface with it. One additional thing I've learned is that other languages might have large numbers of libraries "available" but a lot of it is low quality, undocumented/poorly documented stuff. The ability to easily write C bindings is in many cases preferable to complicated C interop but existing libraries.
Nov 17 2015
On Tue, 17 Nov 2015 10:53:04 +0000, bachmeier wrote:On Tuesday, 17 November 2015 at 00:33:44 UTC, Chris Wright wrote:dstep doesn't work out of the box. A simple `dub run dstep` results in compilation errors.This might change, but that's a gamble, and not one I'd take. For projects where you need specific libraries to exist already, D probably won't serve your needs. (It's definitely easier with C++ interop, but you'd still have to write bindings. htod doesn't exactly work on Linux.)Does anyone still use htod? I thought dstep was the tool being used to generate bindings.
Nov 17 2015
On Mon, 2015-11-16 at 22:39 +0000, Dan via Digitalmars-d-learn wrote:=20[=E2=80=A6]My platform of choice is 64-bit Fedora using Code::Blocks (yes, I=20 use an IDE as a crutch). It seems that D supports this combo.Last time I looked at Code::Blocks it couldn't do a dark theme, and the D support was for an ancient form of D. It would be good if we could get Kingsley's IntelliJ IDEA D plugin into CLion. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Nov 17 2015
On Monday, 16 November 2015 at 22:39:17 UTC, Dan wrote:I have been lurking on this site over the past few weeks trying to decide when (and if) to make the transition. Can anyone here who has already made that transition tell me how smoothly it went? Any major unexpected problems? Advice? thanks! DanWhat do you plan to do with D? Learn it so you can use it for personal projects? Write large apps for a business? Use it in a job? The answer depends on how you'll use it. Personally, I don't think there is a reason to transition. Instead, you should learn D and then use it when you are ready.
Nov 17 2015