www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Just starting out

reply J Arrizza <cppgent0 gmail.com> writes:
Hi,

I'm just starting out in D, read the book, tried a Hello World, and wrote a
few unit tests. I'm ready for the next step.

I'd like to begin writing some more complex D code which I want to use not
only as a test bed to investigate D itself to a deeper level but if it's
successful to eventually use it as the beginnings of a toolkit for our
internal use.

I'm looking for some recommendations from folks with lots of experience in
D:

1) Which to use: Phobos, Tango, or Tangobos? It makes sense for us to use D2
so this seems to preclude Tango for now. Correct?

Are there plans to merge or standardize on one of these? Phobos and Tango
seem to be incompatible with each other at this point.

My worry here is if we choose the wrong underlying library we end up having
to re-write a lot of code later on.

2) Which compiler? DMD, GDC or something else?  We use Ubuntu 10.04, 64 bit
as our development platform. I'm assuming the gc is in all the D compilers.

3) DDT (eclipse plugin) seems relatively green. Any other suggestions for an
IDE. Not a big deal for us, but it's nice to have source formatting. The DDT
folks indicated that that feature is a long way off for them.

Thanks,
John
Oct 12 2011
next sibling parent "Nick Sabalausky" <a a.a> writes:
"J Arrizza" <cppgent0 gmail.com> wrote in message 
news:mailman.74.1318463031.24802.digitalmars-d puremagic.com...
 1) Which to use: Phobos, Tango, or Tangobos? It makes sense for us to use 
 D2
 so this seems to preclude Tango for now. Correct?
Yes.
 Are there plans to merge or standardize on one of these?
Phobos *is* the std lib for D2. Period. It is never going away. The main reason Tango ever even happened in the first place was years ago back in the pre-D2 days, Phobos was still junk, and wasn't very open, so it didn't get much attention (so people came along and made Tango). But with D2, that's all changed.
 Phobos and Tango
 seem to be incompatible with each other at this point.
No. Only for D1. If Tango ever does end up going D2, it'll be usable side-by-side with Phobos (and it would *have* to be simply for the sake of it's own adoption.)
 My worry here is if we choose the wrong underlying library we end up 
 having
 to re-write a lot of code later on.
If you're going with D2, then there *isn't* any "choosing the wrong underlying library". It's Phobos. Period. And nobody who truly is knowledgeable about D is ever going to tell you otherwise. The "Phobos vs Tango" matter is long since dead and buried for years, but the ghost of it still seems to haunt us.
 2) Which compiler? DMD, GDC or something else?  We use Ubuntu 10.04, 64 
 bit
 as our development platform. I'm assuming the gc is in all the D 
 compilers.
The main choices are DMD, GDC and LDC. They all have their pros and cons. Most people use DMD, DMD has the most support from D users, and DMD is always the most up-to-date (simply by virtue of being the official compiler where all the main D development happens). If in doubt, it's probably the best place to start. Although I've never used them myself, I've heard that GDC and LDC are good, too, and that they've both gotten to the point where they're never far behind DMD. If you think you might want to support Windows, forget LDC (at least for now). If you might want to target some CPU other than x86 and x64, then DMD is out. OTOH, If you think you might want to rebuild the compiler itself, it takes hours to build GCC (and, I assume, GDC as well), while it only takes minutes to build DMD (no idea how long it takes to build LDC).
 3) DDT (eclipse plugin) seems relatively green. Any other suggestions for 
 an
 IDE. Not a big deal for us, but it's nice to have source formatting. The 
 DDT
 folks indicated that that feature is a long way off for them.
Eclipse is an enormous resource hog. Don't mean to be a total ass about it, but it's one of the biggest pieces of bloatware I've ever seen (YMMV). It's also *very* Java-centric. I know it supports many other languages but Eclipse really is still designed around Java, and the other langauges are just kind of crammed into that mold. If you do want to use Eclipse, an alternate to DDT is Descent. Descent is older and no longer maintained (AIUI), but last I heard it was still more advances and more mature than DDT (I don't know if thet's still true, though). Personally, I like to use Programmer's Notepad 2. Lean, speedy, configurable, and supports all the basics like syntax highlighting, code folding, etc... Main downsides IMO are that it's Windows-only (That's going to be a real pain when I switch to Linux) and that, being based on Scintilla, there's no Elastic Tab(stop)s support. Some people like Code::Blocks, too, and I used to use it a lot myself, but as of the last time I used it (~2-3 years ago) it wasn't quite as lean, clean or robust as PN2 (still worlds better than Eclipse, though).
Oct 12 2011
prev sibling next sibling parent reply Jesse Phillips <jessekphillips+d gmail.com> writes:
On Wed, 12 Oct 2011 16:43:41 -0700, J Arrizza wrote:

 Hi,
 
 I'm just starting out in D, read the book, tried a Hello World, and
 wrote a few unit tests. I'm ready for the next step.
Great, hello 2.7? I hear it adds a --version option.
 I'd like to begin writing some more complex D code which I want to use
 not only as a test bed to investigate D itself to a deeper level but if
 it's successful to eventually use it as the beginnings of a toolkit for
 our internal use.
Personally I've used it internally for scripting, especially when needing to verify things. Its nice to use a compiled language for this, as you don't need an interpreter to use it and it isn't crap (batch). I created a cmdln library to help with user interaction, which some seem to like. https://github.com/he-the-great/JPDLibs/tree/cmdln
 I'm looking for some recommendations from folks with lots of experience
 in D:
 
 1) Which to use: Phobos, Tango, or Tangobos? It makes sense for us to
 use D2 so this seems to preclude Tango for now. Correct?
Well since you probably read TDPL, you'll likely find D1 restrictive, which eliminates Tango and Tangobos. D2 will still require some maintenance as the compiler is updated. And sometimes in bigger chunks than others. There is a little better information on what will happen, but still not perfect so you'll have to keep an eye out. www.prowiki.org/wiki4d/wiki.cgi?LanguageDevel#StandardLibraryDevelopment
 Are there plans to merge or standardize on one of these? Phobos and
 Tango seem to be incompatible with each other at this point.
Someone started a port of Tango for D2, it completely done and I don't know how well the two would work together, but at least there shouldn't be an need to pull out the runtime.
 My worry here is if we choose the wrong underlying library we end up
 having to re-write a lot of code later on.
As said, D2 will require some maintenance as you update the compiler. Depending on what you need the library selection can be slimmer than D1, but it can also be better. A needed library is more likely to get created for D2 than D1. I chose D2.
 2) Which compiler? DMD, GDC or something else?  We use Ubuntu 10.04, 64
 bit as our development platform. I'm assuming the gc is in all the D
 compilers.
I use dmd, it is pretty easy to install. But GDC is making headway to get into GCC, so that is damn awesome. My understanding is GDC is just as Usable a DMD.
 3) DDT (eclipse plugin) seems relatively green. Any other suggestions
 for an IDE. Not a big deal for us, but it's nice to have source
 formatting. The DDT folks indicated that that feature is a long way off
 for them.
Derelict is not maintained anymore, but it was fairly feature rich. VisualD sounds really nice. Personally I use Vim.
 
 Thanks,
 John Hi,
Important things I think one should understand are * Ranges: These guy's are a major part of Phobos and are so nice to work with and create. * Templates: D makes these so easy to use/create and understand. While not required they appear in documentation and are part of things like operator overloading. * Template Constraints: Since you'll be calling a templated function, you'll want to understand the error message when it complains the template cannot be instantiated. * Don't design around a cool feature: There are things I would stay away from while the community works some things out. Stick with what you know and slowly test the waters. I would avoid std.concurrency in my design since I don't really know how to and it hasn't had a good trial by those that do (or maybe it has and I don't know about).
Oct 12 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jesse Phillips" <jessekphillips+d gmail.com> wrote in message 
news:j75t0k$2q6m$3 digitalmars.com...
 I created a cmdln library to help with user interaction, which some seem
 to like.

 https://github.com/he-the-great/JPDLibs/tree/cmdln
Looks very nice. I have a similar (but probably more basic) thing, too (just one function: "prompt"): http://www.dsource.org/projects/semitwist/browser/trunk/src/semitwist/cmd/plain.d#L216 // -- Basic string prompt ------ string input1 = prompt("Type some stuff: "); // -- String prompt with validation ------ // (failureMsg is optional) string promptMsg = "Do you want 'coffee' or 'tea'? "; string failureMsg = "Please enter 'coffee' or 'tea', not '%s'"; bool accept(string input) { return ["coffee", "tea"].contains(tolower(input)); } // This will *not* return until the user enters a valid choice, // so we don't need to do any more validation. string input2 = prompt(promptMsg, &accept, failureMsg);
Oct 12 2011
parent reply Jesse Phillips <jessekphillips+D gmail.com> writes:
Nick Sabalausky Wrote:

 "Jesse Phillips" <jessekphillips+d gmail.com> wrote in message 
 news:j75t0k$2q6m$3 digitalmars.com...
 I created a cmdln library to help with user interaction, which some seem
 to like.

 https://github.com/he-the-great/JPDLibs/tree/cmdln
Looks very nice. I have a similar (but probably more basic) thing, too (just one function: "prompt"): http://www.dsource.org/projects/semitwist/browser/trunk/src/semitwist/cmd/plain.d#L216 // -- Basic string prompt ------ string input1 = prompt("Type some stuff: "); // -- String prompt with validation ------ // (failureMsg is optional) string promptMsg = "Do you want 'coffee' or 'tea'? "; string failureMsg = "Please enter 'coffee' or 'tea', not '%s'"; bool accept(string input) { return ["coffee", "tea"].contains(tolower(input)); } // This will *not* return until the user enters a valid choice, // so we don't need to do any more validation. string input2 = prompt(promptMsg, &accept, failureMsg);
Interesting the similarities. I do provide more specialized functions for some of those: auto input2 = menu(promptMsg, ["coffee", "tea"]); auto input = require!(string, accept)(promptMsg); I haven't provide the option of displaying an error message, but it could go in the delegate you use in require. And I suppose prompt is a better name than userInput. On thing I've been kind of interested in is getting something set up that would allow providing the needed information via a config, args, or at runtime. but haven't done anything with that idea.
Oct 13 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jesse Phillips" <jessekphillips+D gmail.com> wrote in message 
news:j77s69$1j3d$1 digitalmars.com...
 Nick Sabalausky Wrote:

 "Jesse Phillips" <jessekphillips+d gmail.com> wrote in message
 news:j75t0k$2q6m$3 digitalmars.com...
 I created a cmdln library to help with user interaction, which some 
 seem
 to like.

 https://github.com/he-the-great/JPDLibs/tree/cmdln
Looks very nice. I have a similar (but probably more basic) thing, too (just one function: "prompt"): http://www.dsource.org/projects/semitwist/browser/trunk/src/semitwist/cmd/plain.d#L216 // -- Basic string prompt ------ string input1 = prompt("Type some stuff: "); // -- String prompt with validation ------ // (failureMsg is optional) string promptMsg = "Do you want 'coffee' or 'tea'? "; string failureMsg = "Please enter 'coffee' or 'tea', not '%s'"; bool accept(string input) { return ["coffee", "tea"].contains(tolower(input)); } // This will *not* return until the user enters a valid choice, // so we don't need to do any more validation. string input2 = prompt(promptMsg, &accept, failureMsg);
Interesting the similarities. I do provide more specialized functions for some of those: auto input2 = menu(promptMsg, ["coffee", "tea"]); auto input = require!(string, accept)(promptMsg); I haven't provide the option of displaying an error message, but it could go in the delegate you use in require. And I suppose prompt is a better name than userInput.
Yea. I think mine is more customizable and generalized, but yours is more batteries-included and ready-to-go (which makes yours very enticing). Maybe we could merge our designs and come up with something suitable for Phobos? I think this is the exactly the sort of thing that's a perfect fit for inclusion in a std lib: Very handy, but for many people not big enough to justify adding an external dependency.
 On thing I've been kind of interested in is getting something set up that 
 would allow providing the needed information via a config, args, or at 
 runtime. but haven't done anything with that idea.
That would be neat. One thing I'd been thinking of adding to mine was an alternate function that just waited for a single keystroke (rather than a line of text + Enter). I think I once had it working on Tango, IIRC, but then I switched to D2/Phobos and couldn't figure out how to use Phobos to wait for a single keystroke w/o then waiting for Enter.
Oct 13 2011
next sibling parent reply Jesse Phillips <jessekphillips+d gmail.com> writes:
On Thu, 13 Oct 2011 20:49:01 -0400, Nick Sabalausky wrote:

 auto input2 = menu(promptMsg, ["coffee", "tea"]);

 auto input = require!(string, accept)(promptMsg);

 I haven't provide the option of displaying an error message, but it
 could go in the delegate you use in require. And I suppose prompt is a
 better name than userInput.
Yea. I think mine is more customizable and generalized, but yours is more batteries-included and ready-to-go (which makes yours very enticing).
Hmm, maybe I made mine look more complicated. the two lines for input2 and input accomplish the same thing. Both ask for and only accept input of coffee or tea. The only added customization I see is an error message which I think is hard to get right and why I built a menu and expect a good question.
 Maybe we could merge our designs and come up with something
 suitable for Phobos? I think this is the exactly the sort of thing
 that's a perfect fit for inclusion in a std lib: Very handy, but for
 many people not big enough to justify adding an external dependency.
Well I did bring up the idea in the Phobos group and the only comment I got was from Andrei saying that he doesn't think it is a good fit. But now with a proper review process I could see good discussion and input on if such should be included (that's what voting is for).
 On thing I've been kind of interested in is getting something set up
 that would allow providing the needed information via a config, args,
 or at runtime. but haven't done anything with that idea.
That would be neat. One thing I'd been thinking of adding to mine was an alternate function that just waited for a single keystroke (rather than a line of text + Enter). I think I once had it working on Tango, IIRC, but then I switched to D2/Phobos and couldn't figure out how to use Phobos to wait for a single keystroke w/o then waiting for Enter.
There isn't a C call to do something like this. In windows you can make a call to system("pause"), but that doesn't provide custom text, isn't cross platform, and apparently if you close the terminal it will start executing code for the time it takes to shut down (i.e. unpause). Linux you have to pull out an curses trick to manipulate the terminal I believe, also not cross platform. It would be nice to get.
Oct 13 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Jesse Phillips" <jessekphillips+d gmail.com> wrote in message 
news:j78djv$1sr3$1 digitalmars.com...
 On Thu, 13 Oct 2011 20:49:01 -0400, Nick Sabalausky wrote:

 One thing I'd been thinking of adding to mine was an alternate function
 that just waited for a single keystroke (rather than a line of text +
 Enter). I think I once had it working on Tango, IIRC, but then I
 switched to D2/Phobos and couldn't figure out how to use Phobos to wait
 for a single keystroke w/o then waiting for Enter.
There isn't a C call to do something like this. In windows you can make a call to system("pause"), but that doesn't provide custom text, isn't cross platform, and apparently if you close the terminal it will start executing code for the time it takes to shut down (i.e. unpause). Linux you have to pull out an curses trick to manipulate the terminal I believe, also not cross platform. It would be nice to get.
What I meant was to also retreive the key pressed. But it sounds like that would still have the same problem.
Oct 17 2011
parent reply Sean Kelly <sean invisibleduck.org> writes:
There's a call like this but it's nonstandard. getch() maybe?

Sent from my iPhone

On Oct 17, 2011, at 2:54 PM, "Nick Sabalausky" <a a.a> wrote:

 "Jesse Phillips" <jessekphillips+d gmail.com> wrote in message 
 news:j78djv$1sr3$1 digitalmars.com...
 On Thu, 13 Oct 2011 20:49:01 -0400, Nick Sabalausky wrote:
 
 
 One thing I'd been thinking of adding to mine was an alternate function
 that just waited for a single keystroke (rather than a line of text +
 Enter). I think I once had it working on Tango, IIRC, but then I
 switched to D2/Phobos and couldn't figure out how to use Phobos to wait
 for a single keystroke w/o then waiting for Enter.
There isn't a C call to do something like this. In windows you can make a call to system("pause"), but that doesn't provide custom text, isn't cross platform, and apparently if you close the terminal it will start executing code for the time it takes to shut down (i.e. unpause). Linux you have to pull out an curses trick to manipulate the terminal I believe, also not cross platform. It would be nice to get.
What I meant was to also retreive the key pressed. But it sounds like that would still have the same problem.
Oct 17 2011
parent reply "Nick Sabalausky" <a a.a> writes:
"Sean Kelly" <sean invisibleduck.org> wrote in message 
news:mailman.151.1318889150.24802.digitalmars-d puremagic.com...
 There's a call like this but it's nonstandard. getch() maybe?

 Sent from my iPhone
IIRC, I think I tried that but there was some problem. Either it still waited for Enter, or it didn't wait at all, or something like that. ------------------------------- Not sent from an iPhone.
Oct 17 2011
next sibling parent Sean Kelly <sean invisibleduck.org> writes:
It should block until a key is pressed. I used to use it for "press any key t=
o continue" functionality in console apps.=20

Sent from my iPhone

On Oct 17, 2011, at 5:54 PM, "Nick Sabalausky" <a a.a> wrote:

 "Sean Kelly" <sean invisibleduck.org> wrote in message=20
 news:mailman.151.1318889150.24802.digitalmars-d puremagic.com...
 There's a call like this but it's nonstandard. getch() maybe?
=20
 Sent from my iPhone
=20
=20 IIRC, I think I tried that but there was some problem. Either it still=20 waited for Enter, or it didn't wait at all, or something like that. =20 ------------------------------- Not sent from an iPhone. =20 =20
Oct 18 2011
prev sibling next sibling parent Sean Kelly <sean invisibleduck.org> writes:
Games too. If all else fails, maybe look at ncurses?

Sent from my iPhone

On Oct 18, 2011, at 8:41 AM, Sean Kelly <sean invisibleduck.org> wrote:

 It should block until a key is pressed. I used to use it for "press any ke=
y to continue" functionality in console apps.=20
=20
 Sent from my iPhone
=20
 On Oct 17, 2011, at 5:54 PM, "Nick Sabalausky" <a a.a> wrote:
=20
 "Sean Kelly" <sean invisibleduck.org> wrote in message=20
 news:mailman.151.1318889150.24802.digitalmars-d puremagic.com...
 There's a call like this but it's nonstandard. getch() maybe?
=20
 Sent from my iPhone
=20
=20 IIRC, I think I tried that but there was some problem. Either it still=20=
 waited for Enter, or it didn't wait at all, or something like that.
=20
 -------------------------------
 Not sent from an iPhone.
=20
=20
Oct 18 2011
prev sibling parent "Daniel Murphy" <yebblies nospamgmail.com> writes:
getch (or one of the variants) does do this, but you may need to disable 
buffering in the console first.

"Nick Sabalausky" <a a.a> wrote in message 
news:j7iip8$23qb$1 digitalmars.com...
 "Sean Kelly" <sean invisibleduck.org> wrote in message 
 news:mailman.151.1318889150.24802.digitalmars-d puremagic.com...
 There's a call like this but it's nonstandard. getch() maybe?

 Sent from my iPhone
IIRC, I think I tried that but there was some problem. Either it still waited for Enter, or it didn't wait at all, or something like that. ------------------------------- Not sent from an iPhone.
Oct 18 2011
prev sibling parent Dmitry Olshansky <dmitry.olsh gmail.com> writes:
On 14.10.2011 4:49, Nick Sabalausky wrote:
<snip>

 That would be neat.

 One thing I'd been thinking of adding to mine was an alternate function that
 just waited for a single keystroke (rather than a line of text + Enter). I
 think I once had it working on Tango, IIRC, but then I switched to D2/Phobos
 and couldn't figure out how to use Phobos to wait for a single keystroke w/o
 then waiting for Enter.
I used the following trick on Linux, and I think it should work on any posix: call select on stdin i.e. fd_set with one descriptor for reading - 0 and timeout of 0. This way you'd get something close to a test for keypress. However that will check if there is a data in stream, so it's quite possible to hit any number of "press any key" in advance, so some flushing of input in the "wait till keypress" function is needed. -- Dmitry Olshansky
Oct 18 2011
prev sibling next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2011-10-13 01:43, J Arrizza wrote:
 Hi,

 I'm just starting out in D, read the book, tried a Hello World, and
 wrote a few unit tests. I'm ready for the next step.

 I'd like to begin writing some more complex D code which I want to use
 not only as a test bed to investigate D itself to a deeper level but if
 it's successful to eventually use it as the beginnings of a toolkit for
 our internal use.

 I'm looking for some recommendations from folks with lots of experience
 in D:

 1) Which to use: Phobos, Tango, or Tangobos? It makes sense for us to
 use D2 so this seems to preclude Tango for now. Correct?
Most people will definitely say D2 and Phobos. I still think Tango is better and for the time being that means D1. I also think that some parts of D2 is not quite ready yet.
 Are there plans to merge or standardize on one of these? Phobos and
 Tango seem to be incompatible with each other at this point.
Yes, Tango and Phobos are incompatible. There are someone/a couple of people working on porting Tango to D2. I think that port will use druntime, meaning it will be compatible with Phobos.
 My worry here is if we choose the wrong underlying library we end up
 having to re-write a lot of code later on.

 2) Which compiler? DMD, GDC or something else?  We use Ubuntu 10.04, 64
 bit as our development platform. I'm assuming the gc is in all the D
 compilers.
DMD is a good compiler for development. It's the fastest available D compiler (as far as I know). It's always up to date, LDC and GDC can be a release behind DMD. I don't know what's best for production. I usually hear people saying that LDC and GDC is better than DMD but I haven't done any benchmarking myself.
 3) DDT (eclipse plugin) seems relatively green. Any other suggestions
 for an IDE. Not a big deal for us, but it's nice to have source
 formatting. The DDT folks indicated that that feature is a long way off
 for them.
There's an older plugin for Eclipse called Descent. It has source formatting and a couple of more nice and interesting features, like compile time debugging. I also shows both syntax and semantic errors (semantic errors are disable by default). I still uses this plugin but I can be quite slow and unfortunate it's not maintained anymore. I still recommend you take a look at it. http://dsource.org/projects/descent Otherwise I use TextMate on Mac OS X. There's also a similar application called E (text editor) available on Windows (in the works for Linux too). It's compatible with TextMate's bundles.
 Thanks,
 John
-- /Jacob Carlborg
Oct 12 2011
parent reply J Arrizza <cppgent0 gmail.com> writes:
Thanks for all the replies. Seems straightforward enough:

1) Phobos is it.
2) DMD is the clear winner
3) Eclipse is a hog - knew that. I really only like a couple of things in
it. A big one for me is the source formatting. For some reason, having to
hit the space bar 4,000 times every hour just isn't my cup of tea.

The formatter for java set a nice high standard for configurability that I
was hoping a D plug-in would also have. I had issues with installing descent
on Linux (worked ok in windows for some reason), but I'll give it another
shot on Indigo. If that doesn't play, I'll stick with UltraEdit (great
editor, got a life-time license for it).

John



On Wed, Oct 12, 2011 at 11:42 PM, Jacob Carlborg <doob me.com> wrote:

 On 2011-10-13 01:43, J Arrizza wrote:

 Hi,

 I'm just starting out in D, read the book, tried a Hello World, and
 wrote a few unit tests. I'm ready for the next step.

 I'd like to begin writing some more complex D code which I want to use
 not only as a test bed to investigate D itself to a deeper level but if
 it's successful to eventually use it as the beginnings of a toolkit for
 our internal use.

 I'm looking for some recommendations from folks with lots of experience
 in D:

 1) Which to use: Phobos, Tango, or Tangobos? It makes sense for us to
 use D2 so this seems to preclude Tango for now. Correct?
Most people will definitely say D2 and Phobos. I still think Tango is better and for the time being that means D1. I also think that some parts of D2 is not quite ready yet. Are there plans to merge or standardize on one of these? Phobos and
 Tango seem to be incompatible with each other at this point.
Yes, Tango and Phobos are incompatible. There are someone/a couple of people working on porting Tango to D2. I think that port will use druntime, meaning it will be compatible with Phobos. My worry here is if we choose the wrong underlying library we end up
 having to re-write a lot of code later on.

 2) Which compiler? DMD, GDC or something else?  We use Ubuntu 10.04, 64
 bit as our development platform. I'm assuming the gc is in all the D
 compilers.
DMD is a good compiler for development. It's the fastest available D compiler (as far as I know). It's always up to date, LDC and GDC can be a release behind DMD. I don't know what's best for production. I usually hear people saying that LDC and GDC is better than DMD but I haven't done any benchmarking myself. 3) DDT (eclipse plugin) seems relatively green. Any other suggestions
 for an IDE. Not a big deal for us, but it's nice to have source
 formatting. The DDT folks indicated that that feature is a long way off
 for them.
There's an older plugin for Eclipse called Descent. It has source formatting and a couple of more nice and interesting features, like compile time debugging. I also shows both syntax and semantic errors (semantic errors are disable by default). I still uses this plugin but I can be quite slow and unfortunate it's not maintained anymore. I still recommend you take a look at it. http://dsource.org/projects/**descent<http://dsource.org/projects/descent> Otherwise I use TextMate on Mac OS X. There's also a similar application called E (text editor) available on Windows (in the works for Linux too). It's compatible with TextMate's bundles. Thanks,
 John
-- /Jacob Carlborg
-- John blog: http://arrizza.blogspot.com/ web: http://www.arrizza.com/
Oct 13 2011
next sibling parent Kagamin <spam here.lot> writes:
J Arrizza Wrote:

  My worry here is if we choose the wrong underlying library we end up
 having to re-write a lot of code later on.
That depends on what you need from it.
Oct 13 2011
prev sibling next sibling parent Jussi Jumppanen <jussij zeusedit.com> writes:
J Arrizza Wrote:

 If that doesn't play, I'll stick with UltraEdit 
FWIW, Zeus is another Windows based editor and it is D language aware. It does syntax highlighting, class browsing, code folding etc. http://www.zeusedit.com/d.html It is also pretty easy to setup Zeus to run the DMD compiler inside the Zeus IDE. http://www.zeusedit.com/zforum/viewtopic.php?t=2645 Cheers Jussi
Oct 13 2011
prev sibling parent Kai Meyer <kai unixlords.com> writes:
On 10/13/2011 01:37 AM, J Arrizza wrote:
 Thanks for all the replies. Seems straightforward enough:

 1) Phobos is it.
 2) DMD is the clear winner
 3) Eclipse is a hog - knew that. I really only like a couple of things
 in it. A big one for me is the source formatting. For some reason,
 having to hit the space bar 4,000 times every hour just isn't my cup of
 tea.

 The formatter for java set a nice high standard for configurability that
 I was hoping a D plug-in would also have. I had issues with installing
 descent on Linux (worked ok in windows for some reason), but I'll give
 it another shot on Indigo. If that doesn't play, I'll stick with
 UltraEdit (great editor, got a life-time license for it).

 John



 On Wed, Oct 12, 2011 at 11:42 PM, Jacob Carlborg <doob me.com
 <mailto:doob me.com>> wrote:

     On 2011-10-13 01:43, J Arrizza wrote:

         Hi,

         I'm just starting out in D, read the book, tried a Hello World, and
         wrote a few unit tests. I'm ready for the next step.

         I'd like to begin writing some more complex D code which I want
         to use
         not only as a test bed to investigate D itself to a deeper level
         but if
         it's successful to eventually use it as the beginnings of a
         toolkit for
         our internal use.

         I'm looking for some recommendations from folks with lots of
         experience
         in D:

         1) Which to use: Phobos, Tango, or Tangobos? It makes sense for
         us to
         use D2 so this seems to preclude Tango for now. Correct?


     Most people will definitely say D2 and Phobos. I still think Tango
     is better and for the time being that means D1. I also think that
     some parts of D2 is not quite ready yet.


         Are there plans to merge or standardize on one of these? Phobos and
         Tango seem to be incompatible with each other at this point.


     Yes, Tango and Phobos are incompatible. There are someone/a couple
     of people working on porting Tango to D2. I think that port will use
     druntime, meaning it will be compatible with Phobos.

         My worry here is if we choose the wrong underlying library we end up
         having to re-write a lot of code later on.

         2) Which compiler? DMD, GDC or something else?  We use Ubuntu
         10.04, 64
         bit as our development platform. I'm assuming the gc is in all the D
         compilers.


     DMD is a good compiler for development. It's the fastest available D
     compiler (as far as I know). It's always up to date, LDC and GDC can
     be a release behind DMD. I don't know what's best for production. I
     usually hear people saying that LDC and GDC is better than DMD but I
     haven't done any benchmarking myself.


         3) DDT (eclipse plugin) seems relatively green. Any other
         suggestions
         for an IDE. Not a big deal for us, but it's nice to have source
         formatting. The DDT folks indicated that that feature is a long
         way off
         for them.


     There's an older plugin for Eclipse called Descent. It has source
     formatting and a couple of more nice and interesting features, like
     compile time debugging. I also shows both syntax and semantic errors
     (semantic errors are disable by default). I still uses this plugin
     but I can be quite slow and unfortunate it's not maintained anymore.
     I still recommend you take a look at it.

     http://dsource.org/projects/__descent
     <http://dsource.org/projects/descent>

     Otherwise I use TextMate on Mac OS X. There's also a similar
     application called E (text editor) available on Windows (in the
     works for Linux too). It's compatible with TextMate's bundles.

         Thanks,
         John



     --
     /Jacob Carlborg




 --
 John
 blog: http://arrizza.blogspot.com/
 web: http://www.arrizza.com/
VIM + gnu make has done everything I've needed it to do so far, but the biggest project I've done so far was only ~10k lines long.
Oct 18 2011
prev sibling parent reply Trass3r <un known.com> writes:
 1) Which to use: Phobos, Tango, or Tangobos? It makes sense for us to  
 use D2 so this seems to preclude Tango for now. Correct?
D1 is quite restricting. No struct ctors/dtors, compile-time introspection or TLS, etc. I think using D2 is fine and it's making good progress.
 Are there plans to merge or standardize on one of these? Phobos and Tango
 seem to be incompatible with each other at this point.
Phobos is the standard library for D2.
 2) Which compiler? DMD, GDC or something else?  We use Ubuntu 10.04, 64  
 bit as our development platform. I'm assuming the gc is in all the D  
 compilers.
DMD is the easiest compiler to use cause its frontend is always up-to-date and a precompiled package is available. If you need real performance or platforms other than x86 you have to use GDC or LDC though. They produce really good code comparable to C++ but you have to compile them yourself (which has been painless, at least for me). btw, currently LDC is the only way to get LTO (though you still have to do it manually with the llvm tools).
 3) DDT (eclipse plugin) seems relatively green. Any other suggestions  
 for an IDE. Not a big deal for us, but it's nice to have source  
 formatting. The DDT folks indicated that that feature is a long way off  
 for them.
Descent was really good but unfortunately it's abandoned. DDT has some nice features but lacks others.
Oct 13 2011
parent mta`chrono <chrono mta-international.net> writes:
Feel free to help us porting tango to D2. We've already done a lot and
some parts are quite usable. But don't expect to much.
https://github.com/SiegeLord/Tango-D2
Oct 18 2011