Slashdot Mirror


Are GUI Dev Tools More Advanced than CLI Counterparts?

JohnG inputs: "I just got into quite a long argument over on the Yahoo! message boards over the power of command line dev tools. Basically the guy told me that it is impossible to create 'state of the art' programs with command-line tools. But when I asked him to give me reasons why he just called me stupid and 'behind the times'. Considering he was an avid supporter of anything Microsoft, I take what he says with a grain of salt. But what I want to know is how many of you developers have switched from command line work to KDevelop or CodeWarrior? And what advantages you think it offers? Certainly there are many 'state of the art' apps created with command line tools, but I'm open to anything that can increase productivity. I've just never seen a compelling reason to make the switch from what I am used to and comfortable with." Personally, I feel the best development environment to work in would be one that ignores neither the GUI, or the command line.

501 comments

  1. Neither by Biff+Grande · · Score: 3, Insightful

    I don't think either is really more powerful. It is just a matter of personal preference. A GUI tool might help to visualize your application's structure, but that is about it.

    1. Re:Neither by daviddennis · · Score: 2

      Nice try. Don't bother clicking on the link, folks; it's goatse.cx time.

      D

    2. Re:Neither by Anonymous Coward · · Score: 0

      Nice try? You obviously clicked without thinking. Good work, dipshit.

    3. Re:Neither by swright · · Score: 1

      ok I know this is kinda continuing an offtopic thread here...

      but does everyone just click on links blindly? Dunnoy why but I _always_ check what it says in the status bar first; thats saved me many a fright in the past :)

    4. Re:Neither by Anonymous Coward · · Score: 0

      I am not certain so much a preference but an application. Most books have words and pictures. Ultimaltey however the CLI wins. Why? ask me why I am typing inside a box? The European languages have proven quite a boon because of their efficiency and abilty to communicate with under 30 symbols. Would you have liked to have been a printer in Europe or China?

      Bottom line is Roman numerals sucked and hindu-arabic is much better. Pictographic languages suck and pheonetic languages are much better. Their are places for the GUI like road signs and pictures in a book but they should always lead to the heart of the matter.

      The trap is sweet. You can teach your child to hold up a picture of a glass of milk to ask for it quickly but it won't scale to 50,000 words or abstact concepts. We need GUIs when the investment does not pay off to learn a more efficient interface but on a daily task the CLI user and the book worm will have your job.

      So my position is GUIs are the pictographic languages of computers and the CLI is the phonetic language of computer. But cheer up there is always a place for pop up books.

    5. Re:Neither by daviddennis · · Score: 2

      In this case, he was using an IP address to conceal that it was Goatse. Thus my warning.

      D

    6. Re:Neither by Anonymous Coward · · Score: 0

      Don't you mean that it prevented several embarassing erections?

  2. I believe you're correct. by W1BMW · · Score: 2, Interesting

    For any kind of programming in the languages I'm familiar with (PHP, PERL, C++), I prefer a good old fashinioned text editor. I do find using tools like dreamweaver and such helpful in HTML, but I would go nuts if I had to rely on them totally. I say if you can't use either GUI or CLI, you've got problems - jst the same as if you can only write one language or for one OS.

    1. Re:I believe you're correct. by smeg168 · · Score: 1

      "tools like dreamweaver and such helpful in HTML"
      i dont, personally i find the most efficient way,being as i do it everyday as a job, is simply to do it with notepad, useing programs like dreamweaver jsut complicate things.

    2. Re:I believe you're correct. by nite_warrior · · Score: 1

      I've found dreamweaver is pretty helpfull, but just to create the whole graphic part of a site. When doing some real programing, like perl, I will just take the template from dreamweaver and do all my work in that, it is defenetly faster to copy and paste the structure of the site, but when connecting to db's and pulling data from in, formating in a table in a way u like or need, is only done on XEmacs, for me is just the best tool I have when coding, and not only for web development but on any thing i got to do... (well, sometimes vi is a lot faster hehehe ;)

    3. Re:I believe you're correct. by Sherloch+Hemloch · · Score: 1

      I regard dreamweaver as 'the lazy man's editor' personally. And I am a lazy man-and also a busy man. It's alot quicker on the front end. i could sit there and hammer it out in notepad or something...or I could use that time to get a soda, clean belly button lint,etc. Props to the purists, but I don't get paid that much and I'd like to use my mind accordingly.

      --
      Never trust a bald barber; he has no respect for your hair
    4. Re:I believe you're correct. by Anonymous Coward · · Score: 0

      exactly, computer programs are here to make life easier, not as a proving ground for retarded people who can only be 'hardcore' at coding a website.

  3. Square peg in a square hole by DahGhostfacedFiddlah · · Score: 0, Troll

    It depends on what you're doing. I've found generally that if I'm writing a GUI app, it's nice to have all of the tools that Visual C++ offers, but if I'm writing a quick CL app, I'd prefer to just use a Makefile and be done with it.

  4. GUI-CLI? Where's Emacs? by jmerelo · · Score: 2, Interesting

    I get the most out of XEmacs, which is an almot-GUI tool that drives CL utilities. I use it for everything, from C++ to Perl to Javascript to HTML.



    Probably the best is to stick to what you know most. DDD is probably much better that gdb embedded in XEmacs, but, well...

    1. Re:GUI-CLI? Where's Emacs? by Anonymous Coward · · Score: 0

      > gdb embedded in XEmacs

      since when? moron.

    2. Re:GUI-CLI? Where's Emacs? by nite_warrior · · Score: 1

      I also use XEmacs all the time, I will consider it more a CLI tool, I think that GUI development tools are those that save u typing most of the code, while CLI tools are those where u have to type from #!/usr/bin/perl -w everytime u start a new thing...

      I agree that u should stick to what you know most, but anyway I think that anybody who is good with a CLI tool can be pretty efficient with a GUI too cause CLI tools force u to know what u are doing...

    3. Re:GUI-CLI? Where's Emacs? by SylentBobb · · Score: 1

      Emacs, xemacs, and vi, it's all good. But I gotta give props to some of the gui tools out there. Take for example Netbeans. It's an opensource java ide available at netbeans.org. I used to use emacs for everything java, until I took a look at netbeans. Not only does it make gui development a cinch, but it also adds a lot of nice extras that you don't find in emacs. I'm not going to describe them now, simply because you can find it all at the website.

      So, in the end I guess I'm just saying that you gotta find the right tool for the job. If I'm not doing anything graphical I may just fire up emacs and wing it with nothing more than speedbar. But why trouble myself with writing a lot of graphical code when I don't have to?

      --
      SylentBobb
  5. Your choice by WildBeast · · Score: 1

    Personnally, I'm not confortable working with a GUI dev tool, I find it complicated, but that's just me.

    1. Re:Your choice by MCRocker · · Score: 1

      That's because most of the GUI tools out there are just fancy editors with a suite of tools built into them. There are tools (the one the company I work for produces being one of them) that can really make writing code easier, faster and more accurate.

      Of course, I am a little biased since I work for a company that makes a RAD tool, but I'll spare you the advertisment here... see my bio for the link ;)

      --
      Signatures are a waste of bandwi (buffering...)
    2. Re:Your choice by Anonymous Coward · · Score: 0

      Are you a beginning programmer or something?

    3. Re:Your choice by Anonymous Coward · · Score: 0

      I like GUI. I like to point, and also click. It is fun to make software. Point, then click. Fun !

  6. GUI cvs Command by OmegaDan · · Score: 5, Insightful
    GUI apps are impossible to automate, run from crond, pipe information in and out of ... this is why they will always be needed in unix, this is why they ARE needed in widnows ...

    Window's answer to crond is every program that needs to schedule something includes its own task bar scheduler that eats 5 megs of ram. And you'll notice those programs execute command lines as well (ie. nav /scanall), because a command line interface is the *ONLY* conveniant way for one program to manipulate another.

    1. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      Windows' answer to Crond is the Scheduled Tasks folder. It's not Microsoft's fault that nobody uses it. Unix programs could install their own daemons to do scheduling, but they don't because Crond is accepted. Given time, app developers will probably accept Scheduled Tasks.

    2. Re:GUI cvs Command by OmegaDan · · Score: 1

      The reason its not accepted was because it wasn't there in the first version of windows 95 ... so if you want people to be able to use your app on win95 you still have to install your own scheduler ...

    3. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      GUI apps are impossible to automate

      Have you ever heard of COM automation?

      Don't get me wrong, the in/out stream metaphor and piping are very useful and all... but there are alternatives.

    4. Re:GUI cvs Command by keesh · · Score: 3, Insightful

      Seen what you get with Delphi (and Kylix for that matter)? There's the nice cute GUI, sure, but you still get commandline compilers, resource builders, linkers and so on as separate apps. You can, of course, pipe and so on...

      This gives you the best of both worlds -- use the GUI when you want to design interfaces, ignore the gui and just stick to the commandline tools when you want automation.

      Borland's C++Builder also has separate commandline tools (and pretty primitive grep and make...) (which, incidentally, are free for download but not quite Free).

    5. Re:GUI cvs Command by sjames · · Score: 2

      Windows' answer to Crond is the Scheduled Tasks folder. It's not Microsoft's fault that nobody uses it.



      In order to effectively launch an app from a scheduler, it must have a way to accept options from the scheduler. Thus, it will end up parsing a command line. I suppose an expect like framework for queueing windows events could help there, but I haven't seen such a thing.



    6. Re:GUI cvs Command by Ummite · · Score: 1, Insightful

      Automation, DDE, pipe DCOM interface, anything else you want to do?

      I'm still using command prompt in windows 2000, and using it since dos 2.0. I don't say it's perfect using automation, dde or any other technology, but DOS is not the perfect way to communicate either. It's ALWAYS a summation of considerations that will tell you wich technology use, not simply "it's the best, let's use it"...

    7. Re:GUI cvs Command by Anonymous Coward · · Score: 1, Interesting

      GUI apps are impossible to automate, run from crond, pipe information in and out of...

      BeOS had a prebuilt messaging system that allowed to control GUI application from command line. Launched it, messaged it, and here was the ability to script it.

      Now, the fact that stdout and stdin doesn't mean anything when it comes to GUI is rather annoying.

      Personnaly, my choice will be either to build the GUI application as if it were a cli one (providing command line parameter and std* support), to create a cli application onto which you could stack a control GUI, or in case of complexity a collection of cli tools controlled and sequenced by a well thought GUI.

      This way, you keep the power of cli, without sacrifying the so called userfriendliness for end user.


      That's my two cents, and their mine!

    8. Re:GUI cvs Command by uid8472 · · Score: 1

      NeXT/Apple's ProjectBuilder does this too: There's a GUI, but all the compiling and linking and dependency stuff and even debugging is done by calling out to command-line tools.

    9. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      "GUI apps are impossible to automate, run from crond, pipe information in and out of ... this is why they will always be needed in unix, this is why they ARE needed in widnows ... "

      What nonsense is this? You can *always* run such a program from a scheduler, and use command line arguments, shared memory, interprocess messages, COM, etc to pass arguments to it.

    10. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      Visual Studio also contains a complete command-line compilation system, including full makefile support. I wouldn't think of writing a medium to large size windows app by relying on Visual Studio's "automatic" make system.

    11. Re:GUI cvs Command by be-fan · · Score: 1, Flamebait

      So this stuff doesn't actually exist?

      Neither does AppleScript?

      And BeOS can't really be scripted.

      Also, Framemaker scripting is just a figment of my imagination.

      As for piping information, you've obviously never used Cortex.

      Your comments are totally devoid of any basis in reality. Its just like saying "CLI apps are automatically hard!"

      --
      A deep unwavering belief is a sure sign you're missing something...
    12. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      Win2000/XP have a very advanced "Task Scheduler", well beyond the old crond/at.

      There is a good scriptable/COM api, runas user, etc, error logging, etc.

    13. Re:GUI cvs Command by sahala · · Score: 3, Interesting
      Window's answer to crond is every program that needs to schedule something includes its own task bar scheduler that eats 5 megs of ram.


      Maybe this is the case for Windows 95/98/ME, but with NT and 2K you can have services, the at util (cron-wannabe, but not nearly as robust), and the for-dummies Task Scheduler (a pretty interface for AT). You don't need to be throwing things in the task bar.


      You're right about the power of automation and scriptability that command line provides -- this is an age-old plus for the *nixs. Personally, I'm all for the software build and testing to be command line driven. It can be automated and the output stuffed wherever the hell you want it. Hell, even have it page you when shit happens.
      As for the coding, unit compiling, etc I believe people should be able to use anything they want, whether it be Emacs, VI, Visual Studio, Codewarrior, or whatever, so long as it conforms to the build requirements. I really couldn't give a shit whether a java class was made in J++ or assembler, so long as it compiles and tests under the build system.

    14. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      At work, I automated some complex gui scripting with VB. The process for any gui app is simple. First put the program in a known state (.ini/.reg files). Start the program and an event loop looking for known windows, and send keys or grab screen shots as needed. Finaly, tune the scripts over time(for different errors and the like); I recomend two months before a script can be run alone. Obviously it is not as nice as a CL script, but this is the state that MS left us in.

    15. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      You should take a look at Project Builder. It interacts perfectly with gcc, make, etc, and also has the ability to customize your own build phases, for example a perl script generating some C code before compiling.

      It doesn't spew out all these intermediate files all over the place either, so working in parallel on a project with vim or emacs works great too.

      Regarding the user interface, it blows Visual C++ and CodeWarrior away. Everything you use frequently are where you expects it, and the rest you can finetune manually.

      Sadly it's only available for MacOSX and Open/NeXTStep

    16. Re:GUI cvs Command by Trepidity · · Score: 2

      And what's wrong with a GUI app parsing the command line? That way you get the best of both worlds - GUI when it's more convenient, and CLI when it's more convenient.

      I don't see why you'd want to hobble yourself by doing things 100% GUI (Visual Basic) or 100% CLI (gcc and gdb and nothing else).

    17. Re:GUI cvs Command by Anonymous Coward · · Score: 1, Funny

      Despite what people are saying about MCSEs, the NT Scheduler service is widely known among NT admins.

      As in AT 11:59PM /every:Sunday "SHUTDOWN.EXE /R"

    18. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      And don't forget KDE/dcop or Gnome/bonobo. That may be automated.. maybe not as seamless as pipes and commands on the command prompt, but that's just syntax.. ;)

    19. Re:GUI cvs Command by spudnic · · Score: 1

      You may not HAVE to put things in the tray, but most applications do it automatically. They don't take advantage of the resources available because they are programmed for the lowest common denominator.

      Why is it that almost every program installed these days either puts an icon on the quick launch bar, the tray, the desktop, or all three?

      --
      load "linux",8,1
    20. Re:GUI cvs Command by jonnydigital · · Score: 0
      I take it nobody's never heard of ARexx either? ^__^

      ARexx is a scripting language on the Amiga that allows a GUI program to be controlled entirely using a script. Legend has it that NASA uses - or used - ARexx to automate the downloading of images from satellites.

      Output from one program could also be piped to another program or a virtual device - say, straight from a text program to the printer or modem port, or to/from a file on disk...

      Not to mention that the Amiga's CLI was so groin-grabbingly kick-assingly good that most GUI software could be run just as easily via command-line. Wanna use GUI? Fine, load up the program by double-clicking on the icon and using the menus, newbie style. Wanna use CLI? Bring up a CLI window, enter your command (more s:startup-sequence, for example, displayed the PC's eqivalent of autoexec.bat).

      Compared to the Amiga, even Windows scripting sucks.

      --

      jd

    21. Re:GUI cvs Command by Da+Masta · · Score: 1

      Well for one thing, when you start a gui app from the command line, you can't just wait for it to exit automatically after it's done its job.

    22. Re:GUI cvs Command by he-sk · · Score: 1

      Because, those icons in the tray and the desktop give the software visibility. The user will click on those pretty icons and play around with the software.

      <OT>This is way Microsoft doesn't want to have icons from competing software preinstalled on the desktop; so the competing software doesn't get visibilty before the user is accustomed (sp?) to MS' software.</OT>

      --
      Free Manning, jail Obama.
    23. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      Windows has a task scheduler built into it, so programs do not need to implement their own.

    24. Re:GUI cvs Command by Eccles · · Score: 1

      So this stuff doesn't actually exist? [microsoft.com]

      Not really, no. I work with Visual C++ 5 days a week, and there are real limitations in its scripting. I haven't explored it that fully simply because of those limitations, but as I recall, you can't do anything else (like edit a file) while a script is running. So you can't script a build unless you don't need to do anything else. Oh, and to run a build at low priority, there's a binary hack of vcspawn.exe one needs to do. Otherwise, you can't do a multi-file search during a build, it'll take about as long as your build.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    25. Re:GUI cvs Command by Thatman311 · · Score: 0

      BS! Your app doesn't have to popup a GUI if it is reacting to some command line options. As aprevious posted said..."The best of both worlds"

      --
      Silly Rabbit...Sig's are for kids.
    26. Re:GUI cvs Command by be-fan · · Score: 2

      OS/2's REXX is also pretty famous. Sorry I forgot to mention those!

      --
      A deep unwavering belief is a sure sign you're missing something...
    27. Re:GUI cvs Command by be-fan · · Score: 1

      Actually, the page pointed to *all* of Microsoft's scripting technologies. The implementations of various ones are dependant on the app, of course. However, Visual C++'s scripting (I don't use it though) seems pretty good from the docs. What exactly are you trying to do with it?

      --
      A deep unwavering belief is a sure sign you're missing something...
    28. Re:GUI cvs Command by acq3 · · Score: 1

      Only the 'broke ass' (as one of my friends would call them) Win32 programs use CLI to manipulate one another. There are far better ways, and if one put in even a little effort they are convenient.

      I'd love to here a hardcore Win32 programmer on this topic as opposed to MS haters who read the first chapter of some o'reilly book and burned it in disgust.

      Anyone?

    29. Re:GUI cvs Command by Anonymous Coward · · Score: 0

      Now anyone remember the good old Amiga Workbench OS... When you added arexx support(standard with 2.0 and above I beleive) then you could script and automate gui apps. The only problem being that you might have to buy a hardware real time clock(most of the Amiga's didnt have a battery backed-up clock on board - made up for it with good sound and video hardware).
      That was a nice mixing of Gui and CLI tools... Even if the amiga version of Emacs(MEmacs) wasnt up to scratch(at least I didnt think so)..
      Ahh for the good old Amiga coding days....

  7. cli by Lord+Omlette · · Score: 1

    Visual Studio (6 or .NET) includes CLI tools. You use them when you want to automate builds or not use the IDE just to check on something.

    And anyway, it's nice of you to try checking facts before you offer a retort to this guy, but come on, it's just a flame war. Next someone will be asking who writes better software, people who use Emacs or people who use VI? (the answer is neither, it's the people who use Pico, duh)

    --
    [o]_O
  8. GUI by Anonymous Coward · · Score: 1, Insightful

    All that a GUI does for you is 'wrap' the command line so the user doesn't have to be bothered with remembering the 'make' syntax for example. Whether or not a GUI is used to compile the project makes no difference to whether or not the project is good. That depends on the code, and whether you use vi or Microsoft (eeek!) Visual Studio to write your code, it is still the actual code that makes a great program, not the development environment.

    1. Re:GUI by Mr.+Slippery · · Score: 2
      All that a GUI does for you is 'wrap' the command line so the user doesn't have to be bothered with remembering the 'make' syntax for example.

      Sometimes, yes. For example, there are tools that provide a GUI frontend to CVS (e.g., tkCVS), or to the MH mail software (e.g., exmh). That's a great approach, because you can still use the underlying CLI programs in scripts, or over a telnet/ssh session, or whatever.

      However, the usual GUI way of things is that there is no CLI program under the GUI - the only interface to the software is the GUI. Suck.

      I've never been in a shop that used GUI tools for programming; but then, I've been doing lower level stuff like operating systems, firewalls, spacecraft ground systems, and telephony. If I were putting together pretty GUI apps for end users, I might have a use for a GUI GUI-builder tool.

      But for what I'm doing now, I want and need nothing but GNU emacs, gdb, and the C++ compliler. (Which is IBM's "Visual Age", though none of us use any of it's "Visual" features!)

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    2. Re:GUI by jmccay · · Score: 1

      Navigating files can be easier in a GUI environment if there is something like a class browser. You simple click on the function you was to edit and the GUI editor goes there. Other wise you have to do some sort of search.

      --
      At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
  9. Does it matter? by Anonymous Coward · · Score: 0

    Personally I find it easier to create projects with CodeWarrior than to write MakeFiles, but I really like vi and I enjoy the syntax highlighting and other features found in CodeWarrior's Editor. As far as the complexity of the applications you can create with commandline tools such as vi, gcc, and make it matches those of graphical tools such as CodeWarrior, Code Crusader, etc. One thing that I am very fond of are graphical debugers like DDD and CodeMedic. I just think they make life a lot easier.

    1. Re:Does it matter? by Anonymous Coward · · Score: 0

      vi does not have syntax highlighting.

    2. Re:Does it matter? by ghostdancer · · Score: 1

      He is not talk about vi having syntax highlighting, he is talking
      about CodeWorrier has syntax highlighting.

      Sure, vi don't have, but viM has!

      --
      I rather be free in hell than a slave in heaven.
    3. Re:Does it matter? by Anonymous Coward · · Score: 0

      Vim. But then, you knew that.

  10. Text Editors by Captain+Pooh · · Score: 1

    I'm fine using text editors to write code especially now since it adds color to your code yeee.

    1. Re:Text Editors by MCRocker · · Score: 1

      Some would argue that features like fontifying MAKE your text editor a visual tool! Furthermore, additions like keyword completion, code folding and compiling from within the editor really means that you're not using a plain text editor... you're using a visual tool that merely lacks a GUI layout tool. So, it really depends on your definition of a GUI Dev Tool.



      Of course, this isn't a complaint. I've been a huge fan of XEmacs for many years and have recently switched to using JEdit for most of my development work. These GUI Dev tools really speed up my work. On the other hand, for quick projects and any GUI development, I use the RAD tool that my company produces (see bio) because it's much faster and more accurate than doing it by hand using a hopped up text editor.

      --
      Signatures are a waste of bandwi (buffering...)
    2. Re:Text Editors by gimpboy · · Score: 1

      so really anytime you use your eyes you are using a visual tool. i guess only blind people can say they are true hackers. really though, i believe the visual tools the original poster was refering to were ide's like kdevelop, visual studio, code warrior, etc.

      --
      -- john
    3. Re:Text Editors by Anonymous Coward · · Score: 0
      You're correct about the GUI thing. Anything graphical is a graphical user interface, from CLI to WIMP to Unreal.

      Though it's generally regarded that when people say GUI they mean WIMP GUI.

      CLI = 1 dimensional

      WIMP = 2 dimensional.

      Unreal = 3 dimensional

  11. What about a voice-oriented development tool? by frleong · · Score: 1

    If you have something like Star Trek in the future, where you "develop" programs using voice commands, do you consider it more advanced? I don't because Mr. Data still uses CLI!

    It's simply a matter of preference. GUI tools are more suitable for developing visual stuff. Usually, they tend to downplay (but not fully) the "batch processing" concept - this will lead to a certain kind of unmanageability and you probably need third-party tools to help. For example, it is hard to use directly a GUI IDE to discern whether two forms are identical or not, but a CLI diff will do the job cleanly.

    In any case, the answer is simple: just choose the right tool for the right job. Nothing is 100% better than any other tool!

    --
    ¦ ©® ±
  12. It depends on your preference... by Anonymous Coward · · Score: 0

    If you prefer to be a clueful programmer, you do everything from the command line. If you prefer to be a pansy, you use a GUI.

    1. Re:It depends on your preference... by Quasar1999 · · Score: 1

      What? Good programming is about writing GOOD CODE! Whether or not I choose to remember all the command line switches, or if I entrust a GUI to do it for me, the GUI isn't going to write my code for me... it is simply a tool to help the build process, much like a batch file... do you call people who use a batch file pansy too?

      --

      ---
      Programming is like sex... Make one mistake and support it the rest of your life.
    2. Re:It depends on your preference... by Anonymous Coward · · Score: 0

      do you call people who use a batch file pansy too?

      Well that depends, was the batch file created using command line or GUI tools?

  13. Thing is.... by MxTxL · · Score: 1, Informative
    You can do anything with command line that you can do with GUI. BUT, with CLI or line by line programming you can't design other GUIs as nicely. You can still do it, piece of cake... but to make a really good GUI with standard programming, takes a LOT of time and a LOT of effort. With a tool like Visual Basic(ugh! VB sucks!) your GUIs and forms are easy to design and manipulate. You can make the same forms and GUIs with C++ or Java but it will take you longer, it's much harder to do complex things and lots of times your design will LOOK awkward.

    You wouldn't make a complex 3d model of anything programming polygons... you could. Java3D and OpenGL have ways for this. But to get something that LOOKS decent takes a program like 3DS MAX. You can then use THOSE models in your OpenGL app.

    In the same vein, making a GUI would be better suited to a GUI programming tool, with the backend being designed with real code.

    1. Re:Thing is.... by Anonymous Coward · · Score: 0

      VB as a language may suck, but don't forget that VBX was the first viable component market, components rock; COM, EJB, CCM etc.

    2. Re:Thing is.... by mughi · · Score: 2, Insightful
      You can do anything with command line that you can do with GUI. BUT, with CLI or line by line programming you can't design other GUIs as nicely. You can still do it, piece of cake... but to make a really good GUI with standard programming, takes a LOT of time and a LOT of effort.

      Well, since you use "You", I can answer directly that you are incorrect. I personally can whip out Java GUI apps much more quickly and with much better functionality than with using a GUI tool to do so. For many other people it's the same. Especially with Java and it's layout managers, your GUI is much more that "stick a button this big over here". It's quite easy to program a UI that will scale up to the needed component sizes, even if you change the language on the fly (or just on startup). On the other hand, internationalization is a pain in VB and such.

      With a tool like Visual Basic(ugh! VB sucks!) your GUIs and forms are easy to design and manipulate. You can make the same forms and GUIs with C++ or Java but it will take you longer, it's much harder to do complex things and lots of times your design will LOOK awkward.

      Again, for me I personally can make professionall looking UI's quite quickly in Java with pure code. Plus my code is smaller, faster, and has fewer bugs. And as far as complex, when was the last time you had a UI change from English to French or Japanese with no problems at all?

      You wouldn't make a complex 3d model of anything programming polygons... you could.

      Actually.... I could. Depending on the subject matter, for many 3D models I can get something nicer done more quickly by 'coding' it directly in POV-Ray script. This of course depends on the subject matter, but just because one person finds one way faster doesn't mean that another person won't be faster a different way. Just sometimes I'd go with 3DS or Strata, other's I'd just code by hand. And sometimes I'd write a custom C program to make the model. It just all depends.

      And just in case it's a factor, I've programmed multimedia products before for many platforms, and have done 3D artist work for Interplay.

    3. Re:Thing is.... by Anonymous Coward · · Score: 0

      Yeah, it's like writing a version of GIMP that runs on the command line. Which is easier, designing graphics from a GUI or a CLI application? I prefer to avoid IDE's myself, but I don't design GUI applications either.

    4. Re:Thing is.... by mimbleton · · Score: 1

      For prototyping nothing works as fast as quick VB form or even Access one.
      I refuse to believe that you can code custom dialog with 20 controls faster than I can put it together using some visual tool ( remember we are talking about visual prototyping and NOT working design with events etc ...)

    5. Re:Thing is.... by MxTxL · · Score: 3, Insightful
      Actually.... I could. Depending on the subject matter, for many 3D models I can get something nicer done more quickly by 'coding' it directly in POV-Ray [povray.org] script. This of course depends on the subject matter, but just because one person finds one way faster doesn't mean that another person won't be faster a different way. Just sometimes I'd go with 3DS or Strata, other's I'd just code by hand. And sometimes I'd write a custom C program to make the model. It just all depends.

      My point exactly, some people CAN do it, and prefer to. Some physicists can also do advanced calculus in their heads, some pilots can fly around the country without using any navigational aids. It's easier and more convenient for these people, like you claim. The real point is not whether it can be done or not, but rather WHO can do it. You will find that the vast majority of people prefer to use the tools that are available to solve a problem.

      When I mentioned that you would not program a complex model (i'm thinking along the line of the chick from Final Fantasy, or even just the SIGGRAPH teakettle, anything more complex than several boxes and triangles and quads) using code I was bringing up the use of tools. You would not use a sharpened stone to cut something if you had a knife lying around. You would not use a stone to drive a nail when there is a hammer, would you? Of course not.

      Actually.... I could. Depending on the subject matter

      You could, I could too... if I put the thought into it. There is a right tool for the right job. Any physist is smart enough to do the calculus in his head, but the vast majority of them are also humble enough to know that actually breaking out the old calculator once in a while isn't a sign of weakness.

      My main realm of endeavor is web programming, I've done some stuff with some websites that I can't believe I was able to pull off. PHP, PERL, ASP, whatever, I can do it and well. When it comes to the HTML output of my scripts, I can code HTML like it was english. I can make tables, forms, anything. Does that mean that I'm too elite to whip out the trusty old Dreamweaver? No, I'll still break it out for fragments of what I need. Why? I could do it by hand. Probably just as fast, but messing with that crap while making it look right distracts from my real purpose of scripting. I use the tools that are available. Some tools are better suited for certain jobs. Thet people that say I will never use a GUI development tool because I can do it all in Vi are missing the big picture.

    6. Re:Thing is.... by Anonymous Coward · · Score: 0

      though let's see :

      class MainForm inherits JFrame
      {
      MainForm(){

      }

      }

    7. Re:Thing is.... by mughi · · Score: 1
      When I mentioned that you would not program a complex model (i'm thinking along the line of the chick from Final Fantasy, or even just the SIGGRAPH teakettle, anything more complex than several boxes and triangles and quads) using code I was bringing up the use of tools. You would not use a sharpened stone to cut something if you had a knife lying around. You would not use a stone to drive a nail when there is a hammer, would you? Of course not.


      Well, for a Female, I might use 3DS or some other tool. For the Utah teapot, however, I could whip it out more quickly in code. Same for just about anything archetectural or mechanical. Even some biological things I can code things quite well. Anything that has interconnecting parts is also quite easy. It's amazing how well tentacles can be modeled and animated in code. My point is that for many things, coding is the hammer, and WYSIWYG is the stone.

    8. Re:Thing is.... by Anonymous Coward · · Score: 0

      VBX is a totally different "component" concept than EJB.
      VBXs were used as gui components for vb. Some had fucntionality that didnt necessarily have a gui representation, but you could drop them on forms in the vb IDE.
      Simple JavaBeans are closer to that definition of component.

      EJBs on the other hand mainly represent a persistent entity or a session, with the added benefits of automation, scalability, and failover. Although they can be accessed from a fat client, they have nothing to do with GUI construction.

    9. Re:Thing is.... by ..p · · Score: 1
      You can make the same forms and GUIs with C++ or Java but it will take you longer, it's much harder to do complex things and lots of times your design will LOOK awkward.

      er.. there are plenty of IDEs out there that make building GUIs simple. to name a few: Borland C++Builder, Microsoft Visual C++, Borland JBuilder, WebGain Visual Cafe.

      funny, all the windows apps i use that were written with C++ look just fine to me too

      In the same vein, making a GUI would be better suited to a GUI programming tool, with the backend being designed with real code.

      ahh, i see. i better not tell my manager about all this fake code i've been using for my GUIs.

      --
      ..p
    10. Re:Thing is.... by alangmead · · Score: 1

      Sometimes form painting software helps lay out controls better, but most tools tend to skew the programming logic in certain ways. Some tools make it hard to create an array of data structures that contain GUI components.

      Using CLI tools to build GUI interfaces can be hard, but it is possible to make an interface that looks exactly like a CLI one. On the other hand, if the code generation of the GUI form building tool doesn't create code the way you have done it yourself, its impossible to fix.

      Sometimes the best thing that you can do is to use the GUI tools to lay out the interface, check the placement of the components and build it again from scratch.

  14. hrmph. by egomaniac · · Score: 2

    I keep trying GUI tools every few years and I continually find that they make my life more difficult.

    Perhaps I've just been using text editors and command line compilers for too long to successfully make the switch, but I always find that GUI tools are great for simple, brain-dead stuff but the second you want to do anything the least bit interesting the tool fights you every step of the way.

    I refuse to stop doing interesting things in my programs, so until these tools stop fighting me I won't use them. I think the Microsoft crowd is (in general) a lot happier to say "Ooh, the tool doesn't want me to do that. Oh well" than I am.

    I hold out hope, since the idea of being able to drag-and-drop my way to a user interface is pretty compelling, but I've never found the reality of the situation to be even remotely close.

    --
    ZFS: because love is never having to say fsck
    1. Re:hrmph. by sbeitzel · · Score: 2

      I guess I'm just confused...what have you wanted to do with, say, MS Dev Studio or KDevelop, that these tools wouldn't let you do? Or maybe I'm missing the point. I like having an IDE manage the makefile. I would much rather not have to edit the damned thing with vi. And really, when it comes to designing a window or a dialog, having a graphical tool to do that layout is really nice. And being able to click a tab in the IDE to switch back to the .cpp file that implements the handlers associated with that window, well I like that, too.

      But maybe the question isn't about IDEs, but about purely graphical development environments. If that's so, then the editor's comment is out of line -- because KDevelop and Codewarrior both involve typing; a great deal of typing. The only completely graphical development environment I've seen is a weird language for the Mac, called prograph, and even that is more like flowcharting than drawing.

      --
      Oh, go on, check out my job.
    2. Re:hrmph. by tzanger · · Score: 2

      but the second you want to do anything the least bit interesting the tool fights you every step of the way.

      I refuse to stop doing interesting things in my programs, so until these tools stop fighting me I won't use them.

      Can you give some specific examples? I'm no app programmer but last year I was called in to turn around a wholly-mismanaged software project. It's there I learned about Borland C++ Builder.

      Now, I generally dislike app programming -- I am an embedded systems designer by trade -- but I can learn very quickly and seem to have a sense of how a user interface should work, hence my involvement in this project.

      Anyway, I learned the basics of C++ (I'm a fluent C/asm [many platforms] programmer), DCOM and Borland's VCL in a few weeks and managed to get this project turned around and at least releasing stable, usable releases. But when learning to use C++ Builder I occassionally butted heads with it with respect to form design and so on but it was because of my lack of experience with the software, not the software itself, which was the cause.

      Examples: tabbed forms. You actually use the tabs in the form designer to switch to another "pane" and put objects on it. That seemed weird to me -- You literally stacked form elements on top of the correct pane, swapped panes and continued stacking. Neat trick, but in my mind it wasn't "right". Raised panes worked the same way. I would have done it with some kind of selector but the end result is that C++B wasn't restricting what I wanted to do; it just wanted me to do it differently. I could have hit F12 and typed out the information and have it appear that way if I wanted as well.

      Generally speaking, if you are trying to do "cool" stuff in your UI or your GUI forms designer is making your life rough, you are probably breaking the UI rules for the platform you're working for. Palm has some very strict rules but after working with it for a while you learn how it should be done to work and play "nice" with the user.

    3. Re:hrmph. by egomaniac · · Score: 2

      Well, it's been six years since I've used a language other than Java, so your comments re. makefiles and specific IDEs don't really apply (or rather it's been so long that I can't remember the specifics).

      As far as "cool" things I'm doing, I'm referring to pretty much anything but creating forms. Forms are easy, all the tools are designed to do that. Try doing anything sophisticated like, say, a table which has an embedded tree and expands/contracts rows as the tree elements are expanded/contracted. This is really easy to do with code (at least in Java) but unbelievably nightmarish to do in an IDE.

      Any time I end up trying to do stuff like that and have it work right, the IDE ends up putting so many obstacles in my way that I wish I had just coded the thing from scratch. (And it's not just that the IDE makes me hand-code this behavior, it's that hand-coding it is really tough because of the way the IDE expects/wants everything to behave).

      It's probably just because my GUIs aren't primarily form-based, but whatever...

      --
      ZFS: because love is never having to say fsck
    4. Re:hrmph. by elflord · · Score: 1
      I guess I'm just confused...what have you wanted to do with, say, MS Dev Studio or KDevelop, that these tools wouldn't let you do?


      Create and use dl-modules. Almost impossible to get this right with automake, let-alone from KDevelop.



      Or maybe I'm missing the point. I like having an IDE manage the makefile.


      autoconf/automake takes care of a lot of this. Automation doesn't require a GUI.



      And really, when it comes to designing a window or a dialog, having a graphical tool to do that layout is really nice.


      Depends on what you're doing. The trivial stuff (ie anything where you know the layout at compile time) is
      very easy to do with a GUI builder. But it's also very easy to code by hand. I've found most of my time in GUI programming is spent coding dynamically generated widgets.

    5. Re:hrmph. by funcan · · Score: 1

      > Try doing anything sophisticated like, say, a
      > table which has an embedded tree and
      > expands/contracts rows as the tree elements are
      > expanded/contracted. This is really easy to do
      > with code (at least in Java) but unbelievably
      > nightmarish to do in an IDE.

      Would you mind knocking up a quick example of this then please? I'll like to do more advanced GUI stuff in java, but I really haven't got my head around how to do it tidily; all my code that uses more than a simple gui ends up looking like the hacked up mess it is...

      (Email address *is* valid)

      Cheers

  15. Can we mod the original post down? by Bistronaut · · Score: 0, Offtopic

    -1 Flaimbait, I say.

  16. Ummm... by Purple_Walrus · · Score: 1

    Why were you arguing on the internet anyway? That's just pretty stupid...

    Anyway, personally I prefer a good ol' text editor for most things.

    Maybe the only text editor that guy has ever seen was the one that is brought up by the `edit ` command in DOS?

    --
    ------
    Sig
  17. When They Started by mbrod · · Score: 1

    I have found that many people who started programming post DOS, using Win95 seem to be the ones really afraid of the command line. I mean _really_ afraid of it. Many of the people I work with that fit into that category would answer your question just like your collegue did.

    These people think they cannot function without visual this and visual that. It really hurts what they can learn because in turn they are afraid of many handy command line tools and programming languages that don't have the visual training wheels they are used to.

  18. Interesting Question. by ledow · · Score: 1

    I personally have never understood many people's devotion to GUI's in general, whether using them for development or for operating systems or applications. Certainly a GUI can make developing some elements of graphical-based programs easier, i.e. those designed to operate on a visible level, but the majority of most programming is "behind-the-scenes" of the real application. There a GUI can get in the way.

    I've done quite a bit of Visual Basic, which I loved as a beginner as it was my first "development environment" but now I find, after the initial setting up, most development is done in a maximised code window, no matter what the language.

    It can be nice to have debugging options such as real-time variable inspection alongside the application under development, and there a GUI can help, but it's no better than having seperate monochrome STDERR monitors like people used to "in the old days" (and may still use for all I know).

    I suppose it all depends on the user. Personally, I'm of the school of belief that if it looks pretty it probably doesn't work as well as something that doesn't. Or maybe I just like to look good as thousands of lines of code zoom past on my screen, in the style of many "hollywood hackers". :-)

    I believe it's a similar question to ask if a GUI is better than a simple text menu for many business applications. What's easier to use? A complete Windows / X-Windows environment with all it's bells and whistles or a simple text menu containing just those options necessary for each user? You don't need "training" to press 1,2,3 or 4. :-)

  19. Ask Slashdot: Who Cares? by bk1e · · Score: 0, Offtopic

    Great. I filter out "Ask Slashdot" so I don't have to put up with deliberate flamebait and lazy students asking for help with their homework, and what do I get? Slashdot starts posting stupid reader-response polls in "Developers". Time to filter that out too.

  20. old addage by arakis · · Score: 1

    a poor programmer always blames his tools

    1. Re:old addage by Anonymous Coward · · Score: 0


      Yeah yeah yeah. It's an art, not a science. Bullshit. A programmer is a keyboard monkey. We used to call them "data entry clerks." Get off that high horse bullshit. There's maybe 3 or 4 programmers in the world that actually do something creative. The rest follow a set process laid out by them. So cut that shit out or I'll rape your ass with a baseball bat, you whiney cunt. Cripes, are you a fucking retard on a short bus with a padded helmet on. I'll kick your teeth in and let you suck my cock and then I'll pull it out and cum all over your mom's face, who happens to be driving the bus that day.

      Thanks!

      Nastard

    2. Re:old addage by Anonymous Coward · · Score: 0

      A carpenter is only as good as his tools.

      That said, the best programmers will make their
      own tools as needed.

    3. Re:old addage by skt · · Score: 1

      Yeah right, I just started an advanced Java programming class in school. OO experience required and all of that stuff.. But anyway the first day they told us that we would be programming on win2k machines using the standard Sun CLI tools + notepad.exe! Yikes, I can still use that, but using a real text editor will increase productivity tremendously. I'll probably just use gvim.exe whether they like it or not. What kind of 'advanced programming' class would advocate the use of notepad?? You can't do any real work with that POS..

      example:
      c:\> javac MyClass.java
      error line 503

      How am I supposed to find line 503 with notepad?

    4. Re:old addage by Bob+McCown · · Score: 1

      [down] one
      [down] two
      [down] three...

    5. Re:old addage by Anonymous Coward · · Score: 0

      Not that I'm a notepad defender, but there is an Edit+Goto Line Number command.

    6. Re:old addage by Anonymous Coward · · Score: 0

      You can count to 503, can't you?

  21. The IDE's just wrap command line tools still by joshtimmons · · Score: 3, Interesting

    If I understand the claim correctly, it's that one needs a GUI development tool to produce a modern application. I've worked for quite a while with various IDEs as well as plain makefiles and have never noticed a productivity difference.

    One of the reasons the claim confuses me, though, is that tools like KDevelop and, even MSVC, do still run a command line compiler. All that they do is manage the "makefile" or whatever underlying build engine the IDE is using. So, it follows that anything built on such a system can be built with both command line tools and from the IDE. This is true of all the java, C, and C++ IDE's that I have used.

    There are some places where IDE's have enhanced my productivity, but they tend to be editor related and aren't really applicable to the command-line tool vs GUI. They are:

    1. Automatic completion of symbol names and displaying parameter lists for functions as I write code to call them.

    2. It's been several years since I have hand-coded a static form or dialog box. For this activity, I find a form builder quite handy. (Dynamically built forms are another matter).

    But, as I said, these features don't require a GUI development environment. Just because I don't have a C++ editor under unix that does these things doesn't mean that command line tools aren't capable of producing serious apps.

    Anyway, I ramble. The bottom line is that the tools you mentioned are all wrappers around those command line tools that supposedly can't do the job. The project management is nice, but a well-designed makefile is just as quick to work with.

    1. Re:The IDE's just wrap command line tools still by dachshund · · Score: 5, Insightful
      One of the reasons the claim confuses me, though, is that tools like KDevelop and, even MSVC, do still run a command line compiler

      Amen. Many of the modern development environments are just wrappers. Although there are IDEs out there-- Metrowerks, for instance-- that don't rely on this crutch, even those environments rarely have significant added functionality vs. CLI tools (though the fully integrated tools at least seem more carefully put together than the wrappers like MSVC++). One of the worst things about these wrapper tools is that the GUI generally lacks a complete interface for controlling the really esoteric options; MSVC++ just punts the problem and forces you to enter them into a text box. Big improvement over CLI there.

      While it's possible that GUI tools are potentially capable of doing more than CLI tools, none of the tools in common usage today really make this case. I admit that it may be easier to learn to manage a project using a visual tool, but that's not what this debate is about. I'll wager that somebody with good CLI experience can do everything an equally experienced GUI-tool user can do, in the same amount of time. They might even find that they have more flexibility at their fingertips.

      Now, when it comes to interface design, GUI tools can be very helpful. But in most "IDE"s, even the UI design features tend to be poorly integrated. Often they're implemented in clumsy, inflexible ways that make them little more useful than their standalone counterparts. And the fact that so many people use the IDE seriously handicaps the development of better tools by third parties.

    2. Re:The IDE's just wrap command line tools still by TheEnigma · · Score: 1

      Go check out Interface Builder for OS X. IT does way more than that!

      --

      Stand back. I've got a brain and I'm not afraid to use it.

    3. Re:The IDE's just wrap command line tools still by MCRocker · · Score: 2, Interesting

      Although there are IDEs out there-- Metrowerks, for instance-- that don't rely on this crutch, even those environments rarely have significant added functionality vs. CLI tools



      The RAD tool that my company makes (see bio for a link) adds significant functionality that you can't get with CLI tools. For example you don't need to recompile to see your results! The application runs as you're creating it... that whole edit, compile, test sequence just becomes modify, glance-to-test, modify some more etc...



      Also, building the GUI front-end with our tool is dramatically faster than doing it by hand. Since it's functioning as you build it, you get immediate feedback about what works and what doesn't work. Even if you don't want to use the Code Sourcerer(TM) to generate code and all of the other extra features we provide, the ability to create and test a GUI so quickly makes the tool worth while.



      On the other hand, I will admit that we still use CLI's to do some of our work. For example, when you finally finish your application and it's time to ship it off to your customer, our tool uses javac to compile it and jar to package it, but this is when you're all done with development. You don't actually need to compile till the very end.



      We also improve the way that existing CLI's work. jdb is really unpleasant to use from the command line. Most people don't bother because it's so awkward. This means that most users are doing the old 1960's style debugging via println's and completely miss out on the advantages of more modern debugging techniques (though with the Execution-On-The-Fly(TM) feature mentioned earlier, our users don't have as much need for a debugger). However, by automating the use of jdb and organizing the output in a more useful way, we make it much more compelling to actually use the debugger.



      One final point that's worth considering is that the fact that a GUI tool uses CLI is actually an advantage. It means, among other things, that if there are any limiations of your GUI tool, then you still have real source code that you can manipulate with CLI tools that can provide extra flexibilty. It also makes it easier to integrate with third-party tools such as source archive tools.


      --
      Signatures are a waste of bandwi (buffering...)
    4. Re:The IDE's just wrap command line tools still by Anonymous Coward · · Score: 0

      Why would you need a graphical tool to modify code during debugging?? I do that all the time by simply having the program and debugger in another process, connected by pipes to the editor.

  22. GUI tools help debugging by CrimsonHat · · Score: 1
    To a good extent, it probably is a matter of personal preference if you like to do most of your development at the command line or not. However, I love IDEs for their ability to debug in the same environment that I'm writing code in. I also prefer an IDE so I don't have to type so damn much at the command line. As if my coding doesn't kill my hands enough as it is.

    The main part of my job is writing device drivers, so I really can't use the IDE to debug with anyway. In this case, it's just a matter of convenience that I use the same environment for all of my development.

    Additionally, there are some very good tools for creating GUI apps which are included in CodeWarrior and MSVC. I personally suck at creating GUIs, so I can use all the help that the tools give me.

  23. Seriously by spankfish · · Score: 1

    I love debugging kernel modules as much as the next slashdot reading Linux nut, but seriously, when it comes to debugging applications, a nice GUI-based step/trace utility in the language of my choice is a bloody nice thing to have. Why?

    Because it means I can spend less time debugging, and more time actually coding. And this makes me happy.

    --

    NO TOUCH MONKEY!
  24. Same old stuff by Microsift · · Score: 1

    The arguments presented are the same as one might see when comparing GUI to CLI based OS. Obviously the CL has some place in the world, even Apple is bringing it back, but for most typical uses, the GUI is sufficient. In the end, in a new program, a GUI helps you learn how to use it. As you become more sophisticated, the CLI lets you do more.

    --
    My other sig is extremely clever...
  25. Depends... by mberman · · Score: 1

    I run linux full-time, and am facile with gcc and the like. For smallish apps, I stand by my CLIs, and for anything in any language other than C/++, I wouldn't consider anything else. However, when I'm dealing with enormous programs with hundreds of different classes, dependent on large numbers of even larger libraries, all of which I need to compile myself, MS Visual is really far superior to any of the CLIs available to linux users. It's faster, it's much easier to debug (since it effectively interprets the C++, allowing you to do all those cool things like executing code in arbitrary order at debugtime, and even changing code and rerunning the new version, without a recompile), and being able to look through a list of classes and all of their members instantly is invaluable. The last benefit is that if I'm designing a GUI, I'd always rather do it in a GUI. If I know what my program should look like, it's much simpler to say "The big FOO button goes here." Than fiddling with coordinates, or, even worse, packers, for 20 minutes making it look exactly right. Most of these sound like they're things that could actually be done on a command-line program, so maybe the solution isn't to develop GUI IDEs for linux, but to create more robust CLIs. On the other hand, for some things, a GUI will always be better. (Note that I have yet to develop any HTML document in anything other than windows notepad.exe or console emacs, so I still stand by the old ways for some graphical applications.)

    --

    This is a self-referential sig

  26. Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2

    I'd love a good one. I can handle makefiles. I tried the borland free compiler, but can't get even a simple app under 100K (thanks to the forced runtime). LCC is great, but I need C++, not just C. I need one with the Win32 include files, and I need to be able to NOT use the runtime. I own a copy of VC++, but I'd prefer a another compiler so I can at least get my dev environment out from under MS. I would be willing to pay for one; has anyone used the Intel compiler? Of course I'd prefer free. Suggestions anyone?

    1. Re:Know any good Win32 CLI C++ compilers? by Gottjager · · Score: 2, Informative

      http://www.mingw.org/

      Win32 ported gcc that has all the win32 headers and compiles win32 native binaries that don't require additional DLLs to run anywhere (like Cygwin).

      Also makes it easy to compile linux/unix sources on win32 with ususally slight modifications (esp. socket code) but not as easy as Cygwin is for porting.

    2. Re:Know any good Win32 CLI C++ compilers? by BitwizeGHC · · Score: 2

      http://www.mingw.org

      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    3. Re:Know any good Win32 CLI C++ compilers? by keesh · · Score: 2

      Borland's free C++ compiler which is here. All the MS includes, Borland's VCL stuff... Very powerful commandline.

    4. Re:Know any good Win32 CLI C++ compilers? by Anonymous Coward · · Score: 0

      you will be much happier with cygwin than mingwn...

      www.cygwin.com

      its basically a bash shell in windows that has almost everything you would want from a linux console(gcc, ld, gdb, and the list continues)....hell you can even run ddd out of it(you have to install the xwindows stuff and recompile it but it DOES work)

    5. Re:Know any good Win32 CLI C++ compilers? by psykocrime · · Score: 1

      You might check the Watcom compiler. I think it can be used from the command line. And, as a bonus, they're in the process of open-sourcing it.

      There are some other C++ compilers for Windows as well, or at least there used to be. I'm just having trouble remembering their names. Ummmm. Microsoft, Borland, Watcom, Metaware, Oh, yeah.. Metaware. I think they make a product called High C++ that might be of interest too ya.

      And what about good ole GCC? Isn't there a port to Windows that supports the M$ includes and libraries? I thought that I read once that there was.

      --
      // TODO: Insert Cool Sig
    6. Re:Know any good Win32 CLI C++ compilers? by Anonymous Coward · · Score: 0

      Check out http://digitalmars.com/. Free C/C++ compiler, based on the venerable Zortech and Symantec systems I think.

    7. Re:Know any good Win32 CLI C++ compilers? by Shoeboy · · Score: 1

      Um, last time I checked, VC++ was a command line utility. It's called cl.exe and works perfectly well from within a console window. The version of make for it is nmake.exe. There are countless examples of how to use MS VC++ from the command line.

      Of course, there's always Borland, but you don't seem to like them.

      The next option is GCC which you can get as part of cygwin32 and can produce native win32 binaries without linking to the cygwin libraries. The drawback is that you don't have the Win32 headers files as there were licensing issues. The work around was to write their own win32 headers.

      Finally, the intel compiler doesn't ship with microsofts headers either. Intel assumes that you already have vc++.

      Anyway, all these tools are completely functional from the command line, as you'd know if you'd bother to actually read some fucking documentation.

      --Shoeboy

    8. Re:Know any good Win32 CLI C++ compilers? by BigLinuxGuy · · Score: 1

      Maybe I'm missing something, but what's the beef with a 100K program?

    9. Re:Know any good Win32 CLI C++ compilers? by ishmalius · · Score: 1

      Compiling statically, I have gotten programs down to around 50k, even with the Borland suite. The .exe is larger, but you don't need to add the runtime DLL.

    10. Re:Know any good Win32 CLI C++ compilers? by yecrom · · Score: 1

      We use the Visual C++ compiler from the command line ( or makefile as the case may be.) It's not very hard to write a makefile that is portable and uses whatever compiler you use on a platform. I also use gcc/g++ for cygwin.

      I like having individual #include-dependency files for each of the source files, which is trivial with gcc, but was a bit of a chore with CL.EXE. It's amazing what you can do with the complete pre-processor output, sed, grep, and a real make utility (gmake).

      I haven't tried the borland compiler, or any of the others, but we will probably look at them.

      matt

    11. Re:Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2
      Anyway, all these tools are completely functional from the command line, as you'd know if you'd bother to actually read some fucking documentation.

      I do use nmake and cl already. I clearly stated I wanted to get away from the MS toolkit. I appreciate that at least you did make a useful comment in addition to the insult. I also explained why I don't like the Borland compiler. I didn't know that the Intel compiler didn't come with headers.

    12. Re:Know any good Win32 CLI C++ compilers? by mimbleton · · Score: 1

      Yeah , you did but without any logical reason.
      Do you just "hate" MS ?

    13. Re:Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2
      Maybe I'm missing something, but what's the beef with a 100K program?

      It's bigger than necessary. I detest large distributions. My goal is precise functionality, neatly-done code, tiny executable. For a particular program I've done that I use as a test project (with a basic GUI and performs some network functions), I've got the distributable size down to 18K in x86 ASM, 22K in PB/DLL, 24K with LCC, 28K with VC++, and WHAM! 132K with borland's free C++ compiler (which, as best as I can tell after searching for hours and hours for an explanation, force links the runtime whether or not you explicitely call runtime functions because they embedded the entries in the runtime). It's a personal goal in my software that they never use external files (with very rare exceptions), and use as little disk space and memory as possible. I do balance that with development time, though, and I'm not fast enough working in ASM to do everything that way. Of course, all these beat the hell out of the equivalent VB project at 1.5M.

    14. Re:Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2
      Yeah , you did but without any logical reason. Do you just "hate" MS ?

      Well, if I hated MS, I wouldn't be working in Win32 would I? :)

      I was trying to keep the original question short, and didn't explain all my reasons. Here are some of them:

      • I don't like the direction MS is headed with their development tools. I know that doesn't affect those they've already released, but it is a minor protest on my part.
      • The disk space required to install MS' development tools is beyond what I consider acceptable. I know this because no one else's take up that much space (except Borland's, and I don't want or need VCL, either).
      • I don't like Dev Studio (I could go on for hours about this one, but it's basically an editor flame). I work from Visual Slickedit, so other than using nmake and cl, I have no reason to bother with their tools any more.
      • I'm tired of running into true compiler bugs and errors in their implementation of C++ and the STL. (I know I can use a third-party STL, but if I have to keep using third-party stuff in an environment I don't like, what's the point of using the environment to start with, you know?) If they did actual updates more often, this might not be as big a problem.
      • I detest MFC for the same reason I detest VB and other large library-based tools. I'm straight Win32, so there's no need for all the extra stuff that comes with VC++.
      • In a nutshell, I want a compact set of tools for which I can build and keep option files and other settings the way I want to work. VC++ is configurable enough, and works from the command line, but since I'm using less, I want less on hand to do it. I'm a minimalist in my coding style, and want a less bulky toolset.

      This isn't some anti-MS rant I'm on. I happen to like Windows NT and 2000 as end-user OSes. I just want a compiler and toolset that works how I like to work, and doesn't weigh me down with stuff I don't need or want.

    15. Re:Know any good Win32 CLI C++ compilers? by Anonymous+Brave+Guy · · Score: 3, Informative

      No-one seems to have mentioned Comeau C++ yet.

      Greg Comeau is a regular contributor to C++ newsgroups, and I've had some personal communication with him in the past. He obviously takes some pride in his product. From what I hear, it's justified; the output it produces is good, and its compliance with standard C++ is, and always has been, at the head of the field. For example, it gets a credit in Alexandrescu's "Modern C++ Design" for being sufficiently up to speed that it can use the Loki library's template tricks, and they're predicting the all-important "export" support by the end of this year. Perhaps most important, Greg seems open to comments, and willing to proactively improve the product.

      The big problem used to be lack of a standard library implementation, but I believe it now ships with the latest Dinkumware libraries (as used in VC++, but a much more recent version without the irritating flaws). It should also be noted that this is a commercial product, although Comeau Computing provide a free "try it out" facility on their web site.

      I have no association with Greg Comeau or Comeau Computing other than having spoken to Greg in the past and found him to be a good guy.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    16. Re:Know any good Win32 CLI C++ compilers? by mimbleton · · Score: 1

      Sure, I do think Visal Slickedit is better editor ( I use it under Linux ) but your complain about MFC seems a bit contrived.
      You don't need to use MFC and ,well, 90% of people coding for Win32 use either MFC or VB so one can hardly blame MS for including it.
      Sorry but you are an exception here, just about everyone I know who used to code in Win32 switched to MFC.
      If you think MS tools are too bloated there are other choices but you will find that no development system supports latest MS APIs as well as VC ++.
      About 5 years ago I used to work with Watcom compiler doing pure Win32 stuff in C and even then one had to use some workarounds to support things that VC++ did out of the box.
      Seems to me like you are suffering because you hardly fit stereotype of typical developer as seen by folks at MS ( or even at other companies.)

    17. Re:Know any good Win32 CLI C++ compilers? by Teferi · · Score: 2

      nmake isn't an especially good make utility. it lacks a lot of the niceties of GNU or BSD make, and isn't quite as flexible.

      --
      -- Veni, vidi, dormivi
    18. Re:Know any good Win32 CLI C++ compilers? by archen · · Score: 1

      Think I'd add that their "Development Studio Help" sucks ass. First of all, I'm not a great programmer, but I have to do VB every now and then. So I need a function to do something, but I can't recall what it's called or what parameters I'd need to give it (we all know how consistant VB is, so guessing isn't going to work well either). Call up the MSDN (CD 1 of 341) and try to do a search. You might get something relavent, you might not - but it's like a big roulette wheel with MS "help". I'm programming in VB, I have the VB development studio open, so why is the "help" giving me information on everything from FoxPro to visual Fortran? Small wonder I prefer Perl.

    19. Re:Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2

      I agree. I'm not typical. I also figured there may be a couple other die-hards like myself around, and that they may read slashdot. :) I've actually tried all the compilers listed so far (other than Comeau), but I've been very glad that some people have offered suggestions.

    20. Re:Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2

      Oh man, no shit! I am with you, brutha. That screwed-up all-in-one helpfile of theirs is the absolute most difficult-to-use thing they've ever released. I also hate how the WinCE calls all have the same names, and you have to scan to the bottom of a doc to see if you got the CE or the Win32 version of the function when you clicked the item in the list of 15 identically-named items.

    21. Re:Know any good Win32 CLI C++ compilers? by Katravax · · Score: 2

      Please, please, please email me and tell me how you've gotten rid of the runtime! I don't use any runtime functions in my apps, yet still the thing links in the runtime! Can you send me a makefile with the switches you use?

      I would actually be quite happy with the Borland compiler if I could figure out the right combination of switches to use to eliminate the runtime.

    22. Re:Know any good Win32 CLI C++ compilers? by lars · · Score: 2

      Err... I certainly hope you are just writing these programs for fun, and that someone is not actually paying you to waste time needlessly minimizing executable size.

    23. Re:Know any good Win32 CLI C++ compilers? by Anonymous Coward · · Score: 0

      Hi Greg!

    24. Re:Know any good Win32 CLI C++ compilers? by Anonymous+Brave+Guy · · Score: 1
      Hi Greg!

      Sorry, wrong guess. :-)

      I have spoken with Greg in the past, but like I said, I have no other connection to either Greg or Comeau Computing. I'm simply aware of his product and its reputation, and mentioning it since it's relevant to the question asked.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    25. Re:Know any good Win32 CLI C++ compilers? by spongman · · Score: 2

      you can install Microsoft's C++ compiler, linker and headers without any of the visual C++ stuff for free as part of the Platform SDK (look for the 'build' environment).

    26. Re:Know any good Win32 CLI C++ compilers? by Gumpu · · Score: 1

      You can run the VC++ compiler from the commmand line. Just type

      cl helloworld.cpp

      In a dos box, this links and compiles, you program. Try a cl /? for a list of all options. The only thing you have to do is run vcvars32 before you start. This sets up all the right paths.

      This way you can use all the development tools you like (I use gvim and nmake).

    27. Re:Know any good Win32 CLI C++ compilers? by Anonymous Coward · · Score: 0

      Weren't you paying attention? In the first line he mentions trying the Borland free compiler and why it isn't a good CLI compiler.

    28. Re:Know any good Win32 CLI C++ compilers? by mimbleton · · Score: 1

      Long time ago they used to have pure Win Help file for all Win32 APIs with usefull index capabilities.

      It was a thing of beauty ...

    29. Re:Know any good Win32 CLI C++ compilers? by charfles · · Score: 1

      djgpp: http://www.delorie.com/

    30. Re:Know any good Win32 CLI C++ compilers? by allanj · · Score: 1

      My thoughts exactly. Especially since Windows NT/2000 loads on demand (through demand paging). Disk space issues are - for all practical purposes - moot. Run-time image sizes ARE important, but only those parts needed are ever loaded, meaning that it makes little difference for run-time memory usage whether you use a 100 or 20 Kb standard library, since the parts that the (dumb) linker includes unnecessarily are just never loaded. Sloppily written linker, though...

      --
      Black holes are where God divided by zero
    31. Re:Know any good Win32 CLI C++ compilers? by Anonymous Coward · · Score: 0

      Can you elaborate on this?
      I checked the page and it uses ActiveX to check your PCs installed components and gives you a list of products you can choose from... I can't see anything I can get without already having it installed.

  27. What exactly is "CLI" and what is "GUI"? by mughi · · Score: 1

    This is probably a major question to get answered first. For example, Emacs with JDE for doing Java work has just about everything VJ++ has (except for a WYSIWYG UI editor that only creates layouts for the proprietary MS Windows only classes). It has menus, integrated debugging, tags support, speedbar...

    So, what is this person pushing as a "GUI" tool? One specifically, or many?

    Also, given what Emacs does and looks like (except for those pretty buttons on the toolbars), does it count as a CLI tool or as a GUI tool? The line is often blurred, but I know of many people who in discussions vehemently deny that Emacs is an IDE of any form.

  28. It Depends on the Team by quakeaddict · · Score: 3, Insightful

    Lets face it some people like to click buttons that are poorly documented and others like command line switches that are poorly documented. :)

    At some point someone is in charge of the builds, and whatever that person likes we all get. If that person does their job right its easy regardless of what your preference is.

    One thing is for certain, it doesn't make sense anymore to build GUI's without the help of a drawing tool that automates that tediousness.

    --
    I'm still working on a clever footer.
  29. Command line really becomes complex by kanishka · · Score: 1

    IMHO command line tools are good but only for simple tools. Its not so straight forward to use zillions of command line options. The GUI makes it easier to navigate through the different possible options.
    A combination of GUI and command lines is the best. For example, tools like imageMagick provide both options of GUI based manipulation and command line options. So, complex command line options doesn't scare away a newbie :)

  30. GUI's don't do very much by uchian · · Score: 1

    I used to use Visual Studio when I programmed in Windows, simply because it had a project window allowing me to easily select between files, had syntax highlighting and an integrated debugger.

    When I switched to Linux, I made up the same functionality using Kate and the Kdbg.

    So to be honest, for me I don't see any point in extra GUI stuff - when you realise how many command line options for each compiler and linker tool, all a GUI does is change -c to a checkbox with "compile but do not link" next to it. It's nicer to be able to see all the options, but when you know exactly what options you want (i.e. you've learned them), it's easier to type them in on a CLI.

    The only exception I can think of is tools which build GUI's which is quite often easier than coding them (but even so, not so powerful - you can code a GUI to do lots more than a GUI designer does, particularly dynamic GUI's).

  31. Just likes OSes by Anonymous Coward · · Score: 0

    Use whichever development environment makes you the most productive (which is probably the environment you're most comfortable and familiar with).

  32. Keeping it simple? by DrkOvrLrd · · Score: 1

    I'll qualify myself in saying, I'm not a programmer yet, but, I'm learning Perl. Now, for my humble opinion, probably from indoctorination of a Unix environment; I feel that windows applications are rarely simple. Take a look at defrag in windows, there are two versions, one windows based for 95 - ME. And the old command line version. I prefer the command line version. I'm under the impression that if you build a gui version of a command line tool, it's gets piggish. That feels like a step back. However, software like Word, is neccesarily complex, which is fine. I hope I use good judgement, when writing software in my future, that I can keep simple tools on the command line, and complex tools and apps using a gui. To be honest, I've played with a few gui based dev tools and I think I'll need them to keep track of the structure of my app.

  33. A Variety of Programs vs. the SuperApp of Doom by khog · · Score: 1

    The thing I've noticed about using command-line development tools is that you have to learn more than one tool. Gdb, gcc, lint, xemacs, manpages, and texinfo only begin to have the functionality that is found in Microsoft Visual C++. IDEs, I find, speed up the development and debugging process -- I spend less time reading (and rereading) manpages and more time writing and debugging code. I'm at the "newbie" level for all of the aforementioned tools (gdb, etc.) and am simply unable to do some things that I could do in MSVC++. I predict, however, that I'll be able to more than I could in MSVC++ once I know how to use all of the development tools I have on my *NIX machines.

    In short, a variety of programs can do a lot more than the SuperApp of Doom, but the SuperApp of Doom puts it all into one place.


    Mike.
    --
    http://www.yourmothernaked.com
  34. Depends on what you want them for by samael · · Score: 5, Insightful

    For what I do, which is production of front ends onto databases, GUI is invaluable.

    Being able to drag and drop items onto a form, set a few properties, add in a few bits and pieces of code for unusual circumstances and validation, and just run it, is great.

    For device drivers and command line programs, it may not be nearly as useful.

    Of course, I find some facilities (like syntax highlighting, procedure finding, and multiple debugging windows) absolutely essential too, and would probably miss those if I didn't have a decent IDE.

    1. Re:Depends on what you want them for by Skapare · · Score: 2

      Maybe that's why so many web forms (I don't know that you meant web forms ... maybe you meant app forms, but I feel like picking on web forms right now) I see out on the internet suck so much. What happens is that when people use some application that build the site, the page, or the form, for them, they are assuming it will build it correctly and portably. In reality I find that to be far from the case. For example a certain well known web page builder application from a very large and controversial software monop^h^h^h^h^hcompany consistently produces broken HTML. That's probably by design. But the end result is that people think they are saving themselves a lot of time by using ... and trusting ... it, but in reality they often build a lot of resentment, and end up having to do more work just to fix it up. And when these kinds of apps use Javascript to do everything like hyperlinks (instead of using an <a href="whatever"> tag) and forms, it's even worse.

      --
      now we need to go OSS in diesel cars
    2. Re:Depends on what you want them for by Anonymous Coward · · Score: 0
      Of course, I find some facilities (like syntax highlighting, procedure finding, and multiple debugging windows) absolutely essential too, and would probably miss those if I didn't have a decent IDE.

      Ahh. Thats why *I* use emacs... Font-locking/auto-indenting, with or without customizations. Gud for debugging. Tags for procedure/macro/whatever searching.

      I'm unwilling to give all this up for some weird-ass gui.

  35. Programming Style by Anonymous Coward · · Score: 0

    In my experience i have seen that people little understand what they are programming when they write code.

    People program by trial and error and copy + paste. They never fully understand the code they are writing until they running it, nor can they understand how it will react to circumstances they did not originally plant. Once it is "working", they never go back to try and fully understand the underlying mechanisms that make it "work".

    People are unable to debug code, or locate the area of the problem without actually stepping through the code.

    This is why i think programs like visual basic are a bad thing. Without a stiff learning curves it enables anyone to say they know visual basic. This invalidates the skill of anyone with a strong background in it, making it harder for employers to Gage the skillset of the prospective employer.

    Proficiency with command line tools generally require a larger amount of experience in the environment being used, therefore to me it demonstrates a strong understanding of the system that is in place.

  36. GUI vs. CLI by SirKron · · Score: 1

    Everytime my wife cannot get Frontpage to do what she wants it to do I have to come and fix it by editing the code directly.

    So as long as Microsoft sticks to producing GUI only tools, CLI competent people will still be able to outperform their GUI counterparts.

    1. Re:GUI vs. CLI by mimbleton · · Score: 1

      That is not MS problem that your wife does not know HTML.
      Frontpage is a tool to be used for certain tasks and if you find it limiting then there are other options.
      MS does produce GUI only tools because that is what market wants.
      If there is a huge demand for CLI tools why there are no other companies trying to fill that niche ?

    2. Re:GUI vs. CLI by SirKron · · Score: 1

      "That is not MS problem that your wife does not know HTML. Frontpage is a tool to be used for certain tasks and if you find it limiting then there are other options. MS does produce GUI only tools because that is what market wants."

      My point here is that Microsoft is writing their applications to be mostly wizard-driven to make their applications functional to the lower skilled public. Unfortunately, this process makes their applications harder to automate except if you use their tools (wscript, Win API, ASDI, etc.).

      If there is a huge demand for CLI tools why there are no other companies trying to fill that niche?"

      Microsoft does not care if users want CLI tools, they are only going to deploy tools that fit into their .NET strategy. One of the only contradictions I can think of is the addition of a telnet server on Windows 2000. Of course we all know the telnet server is useless and that they should have included an ssh server/client instead, but at least it is a start.

    3. Re:GUI vs. CLI by mimbleton · · Score: 1

      "this process makes their applications harder to automate except if you use their tools (wscript, Win API, ASDI, etc.). "

      That does not make much sense.
      Any application is hard to automate unless you try to do it using methods provided by the developers of that application.
      MS apps ( or should we say Windows apps) have amazing automation capabilities far beyond simple in/out available on Unix.
      You just don't know enough about them.

  37. Personal preference by jchristopher · · Score: 1
    Whichever development environment you are most comfortable with will be the most efficient for you - regardless of whether it is CLI or GUI.

    CLI people need to understand something, though. If you know NOTHING about either environment, you can find your way around the GUI by clicking various things (what does this do?), whereas with a CLI newbies are stuck, because you can't just type random commands, you'll have to read the docs. Which is one reason why newbies like GUIs and feel frustrated on a command line.

  38. How much is your time worth? by Henry+V+.009 · · Score: 1

    The ideal GUI dev tool gives you all the command-line functionality you could want, while at the same time intelligently automating some of the more mind-numbing activities. If you have ever cut and pasted, then you have already taken your first step down the long, long, road of GUI-dom. And if you haven't, someone is paying you a lot more money than they need to be. Me, I think we should go back to the real command-lines -- typewriters! Finding a complier might be a pain, though.

    1. Re:How much is your time worth? by Anonymous Coward · · Score: 0

      If you have ever cut and pasted, then you have already taken your first step down the long, long, road of GUI-dom. And if you haven't, someone is paying you a lot more money than they need to be.

      Well I am a fairly competent vim http://www.vim.org user. I have to strongly disagree that their is a direct correlation between cutting and pasting and a GUI. I will out cut/copy and past anyone in a GUI based editor/IDE. I will also gaurantee that I can get to my files and compile quicker with the help of :make and :buffers. Also, I can't count the number of times the ease of macro writing and regular expression search and replaces have helped me and the syntax highlighting is exquisite.

    2. Re:How much is your time worth? by Henry+V+.009 · · Score: 0

      Well I am a fairly competent vim http://www.vim.org user. I have to strongly disagree that their is a direct correlation between cutting and pasting and a GUI. Are you using a mouse to cut and paste, or is it all keystrokes? It's a simple GUI, but it's still GUI.

    3. Re:How much is your time worth? by Grimmtooth · · Score: 1

      The ideal GUI dev tool gives you all the command-line functionality you could want, while at the same time intelligently automating some of the more mind-numbing activities


      That's great. Problem is, I've never seen an ideal GUI dev tool. Not to be flip about it, but even the mega-expensive ones are lacking in one area or another. About the best that can be done for some languages / environments is find a comfortable editor and press on.
      --
      /* .sigs are irrelevant */
  39. GUI Tools by EarTrumpet · · Score: 2, Insightful
    My experience with gui tools is having to clean up after one of my programmers writes an application with them. Take a coder that doesn't know a language, add a gui design tool to the mix, and you've got yourself a mess. The latest incident involved some Java IDE...everything looks nice on the developers machine...but when the application was ported to the customer site, it became clear that the IDE used absolute spacing to place all the widgets. The differences in fonts between our development environment and the production environment made the application unusable. Every screen had to be reworked using proper layout managers.

    I've banned IDEs for now...perhaps if my developers use a text editor to code they may actually learn something.

  40. The much-maligned command line by Xpilot · · Score: 3, Insightful
    I've observed something over the years, and that is the command line is hated beyond measure by mainstream trade press and MS fans. For MS, removal of DOS was a good thing because it removed the command line, which is evil (DOS sucks,of course, but not because of its command line interface).

    I've been using a CLI to program and generally do OS stuff for years and years, and I've found some Windows-lovers attitudes more than just a bit annoying.

    "Command line??? How primitive! Look at all the colorful and pretty pictures I have on my desktop, you dirty UNIX user!"

    I hear comments like that a lot. From CS undergrads too. What brought about this attitude? I put the blame squarely on MS. Even Apple has a decent CLI shell now with OS X. MS is so busy harping its wonderful pointy clicky interface and the clueless world follows suit.

    UNIX will always exist, but Windows runs the IT world. At least where I live.

    --
    "Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it." -- Linus Torvalds
    1. Re:The much-maligned command line by dangermouse · · Score: 2
      (DOS sucks,of course, but not because of its command line interface).

      IMHO, DOS sucks at least in part because of its horrible command line interface. When I discovered UNIX shells, I was astounded at how much easier it was to Get Things Done on the commandline.

    2. Re:The much-maligned command line by daviddennis · · Score: 3, Interesting

      They didn't get rid of it, not even in XP. You have to look to find it, but it's in there, buried.

      Actually, just check out the properties of a pretty Windows icon, or even an ugly one, and you'll find a command line right there. CMD.EXE isn't going away any time soon.

      D

    3. Re:The much-maligned command line by Xpilot · · Score: 1

      Yeah, I know it's not going away, but all the same, it's the principle of the thing. It's almost as if they didn't *want* you to use the command line.

      --
      "Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it." -- Linus Torvalds
    4. Re:The much-maligned command line by scrytch · · Score: 2

      "Command line??? How primitive! Look at all the colorful and pretty pictures I have on my desktop, you dirty UNIX user!"

      Show me one single usenet or mail list archive post with this sentiment from someone who shouldn't have been canned as a troll anyway. In other words, show me an example of this sentiment used as serious argument. Whereas I see attacks like "point and drool" taken as serious argument every day. As usual, those that can do, do, those that can't argue about it on slashdot (I guess I just indicted myself)

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    5. Re:The much-maligned command line by mimbleton · · Score: 1

      Because 90% of computer users don't need to use any sort of command line.
      They simply don't.
      If you, as a power user or developer, have a need for it then there it is waiting for you.
      What is wrong with this approach ?
      Hell, Mac folks got along just fine without any sort of cmd and you are here claiming that this is evil.

    6. Re:The much-maligned command line by Anonymous Coward · · Score: 0

      bash and countless GNU utils run just fine under any version of Windows.

    7. Re:The much-maligned command line by Steeltoe · · Score: 1

      GUIs today are too cumbersome to produce and too little flexible compared to a CLI. However, Unix CLIs are vastly cryptic and diverse. Rendering both to an unstandard pile of dogshit.

      So all in all, a future, better system needs to advance both of these to a state where they are truly usable by all. I mean, why should I care if my strings that are being piped got some special characters? Or wether my first parameter doesn't say "*", but just *. There's too much magic going on in both the GUI and CLI-world.

      - Steeltoe

    8. Re:The much-maligned command line by daviddennis · · Score: 2

      Getting rid of the command line isn't evil, it just blocks out a lot of useful stuff. I use a Mac with both 9.x and MacOS X. Curiously, in OS9 I rarely (but sometimes) miss the command line, but in X, I use it for everything. Part of the reason is that the new Finder is still a bit slug-like, but even in Windows I use the command line for most things.

      D

    9. Re:The much-maligned command line by dgrb · · Score: 1

      I agree that the unix CLI is over-cryptic.

      Unfortunately the finest example of a CLI I've ever encountered is no more - it was called Multics.

    10. Re:The much-maligned command line by MrBogus · · Score: 2

      For MS, removal of DOS was a good thing because it removed the command line

      Back in the late 80s and early 90s, there was a huge PC user war between the commandline gurus and their Novell login scripts (FIRE PHASERS) and batch files, and the GUI-friendly userbase that liked the Macintosh and even saw some value in Windows or OS/2. The DOS&Novell guys ruled the roost and routinely berated GUIs as "cartoony" and "toy computers" and did everything in their power to supress Windows 3.

      Then businesses realized that GUI environments would save them $Money and the DOS/Novell fanatics were purged in a huge pogrom. They either were reeducated to think "GUI is great! Windows is great! Down with the command line!" or they retreated to using UNIX.

      The unspoken legacy of this war is the main reason that CMD.EXE is downplayed in the MS crowd. Microsoft of course is of two minds about the subject - on one hand shipping many advanced admin tools as commandline only, and on the other not shipping what should be standard commandline stuff on the OS media but instead forcing you to install the Resoure Kit.

      --

      When I hear the word 'innovation', I reach for my pistol.
    11. Re:The much-maligned command line by DGolden · · Score: 1

      They don't want you to use the command line. They want to maintain their relationship with the customers with them the developers and the customers the users.

      They don't want those lines all blurry, like on Linux/BSD, or the way it used to be on AmigaOS - that would means the users are less dependent on "professional developers"

      When I've used MS platforms, I'm always struck by how difficult it is to learn anything beyond a certain basic level compared to other systems - you end up having to pay for this, pay for that. There's also lack of freely available information where it really counts (MSDN is silent on huge swathes of interesting stuff) and powerful development tools. People don't even become interested in programming, because it's actively made more difficult for them to program for themselves than pay someone else to do it.

      When I were a lad in the 8-bit days, computers ALWAYS came with a full language interpreter of one form or another, that always allowed access to the full power of the machine (however puny that power was :-). One of the main reasons people had computers was to write their own programs to do things only they had imagined. That creative power is concealed by default installs of microsoft OSes.

      These days, many PCs have been perverted into some sort of click-and-drool substitute for TV, rather than a tool to augment human's thought processes.

      --
      Choice of masters is not freedom.
    12. Re:The much-maligned command line by Dahan · · Score: 1

      Well, seeing that MS added some new CLI utilities and enhanced some existing ones in XP, I think they don't mind you using the CLI at all. (But only if you're a "professional"; XP Home doesn't include any of the cool utils.)

    13. Re:The much-maligned command line by Anonymous Coward · · Score: 0

      What brought about this attitude? I put the blame squarely on MS. Even Apple has a decent CLI shell now with OS X

      So because Apple has finally reverted to a CLI they are out of the blame loop?

    14. Re:The much-maligned command line by Keeper · · Score: 2

      You've never spent any real time around people who program Windoze apps have you? I've always got 2 or 3 copyies of cmd open for performing various tasks ...

      kill the menu, start the menue, register the typelibs, delete the corrupted obj files, etc... using the GUI to perform those tasks is annoying.

    15. Re:The much-maligned command line by Admiral+Burrito · · Score: 3, Interesting

      I've observed something over the years, and that is the command line is hated beyond measure by mainstream trade press and MS fans. For MS, removal of DOS was a good thing because it removed the command line, which is evil (DOS sucks,of course, but not because of its command line interface).


      I disagree here. A significant amount of DOS's suckage comes from its primative command line interface. "Back in the day" most people didn't care about multitasking, but the annoying C:\> prompt was dreaded by most users.


      Consider:

      • Command-line editing sucked. The arrow keys did not work like in a real editor. All you could do was backspace to your typo, fix it, then re-type everything you missed.
      • Limited command history. Press F3 to bring back the previous line, then use backspace as described above. Alternatively, there is a way to bring back the line one character at a time, then you can type onwards, or press the Insert key exactly the correct number of times to match the number of new characters you want to insert before bringing back the remainder of the line.
      • Doskey fixed the above two issues, but on most systems it was not loaded (probably due to ignorance). It also came around about the time of Windows 3, by which time hatred of the command line was firmly entrenched and many people were using menu-based shells to escape the torment.
      • Filename globbing is handled by the command, not the shell. And most commands were not very smart. In unix shells, you can do "cp *.foo *.bar /some/directory" because the cp command just wants a list of files with a destination as the last argument. The DOS copy command, on the other hand, only accepts two arguments. So you have to go "copy *.foo \some\directory" then "copy *.bar \some\directory". The more complex globbing and substitution commands availble in unix shells were totally absent in command.com.
      • Scripting sucked. All you could really do was concatenate a few static commands into a .bat file. Looping and conditional operations existed, but making them do anything useful required ugly/clever hacks that were beyond the ability of the average user and even most technical users.


      Given those issues, and the fact that most PC users at the time were running MS-DOS and forced to endure the torment I have described, is it any wonder that CLIs are considered "primative" by the majority of the population?


      Add to this the Mac. Most offices were PC based due to compatability requirements and investments in PC software, but many people could stop by schools or computer shops and have brief experiences with Macintoshes and be wowed by the pretty GUI and how easy it was to use compared to DOS. Those who couldn't, could hear stories from those who could. Is it any wonder the majority of the population considers GUIs to be the best way to interact with a computer?


      So it is my theory that the 100% GUI / 0% CLI attitude, rather than a more balanced "right tool for the job" approach, is the consequence of historical Mac envy.


      But it's just a theory.

    16. Re:The much-maligned command line by spongman · · Score: 2

      yes, CMD.exe is still there, but more important is the presence of the much more powerful, and sadly ovrlooked cscript.exe

      Being able to automate COM objects (i.e. most windows functionality is now automatable) from script is huge.

    17. Re:The much-maligned command line by Anonymous Coward · · Score: 0
      "Command line??? How primitive! Look at all the colorful and pretty pictures I have on my desktop, you dirty UNIX user!"

      I hear comments like that a lot. From CS undergrads too. What brought about this attitude?

      Maybe comments like, "Real programmers use emacs. GUI's are for looser VB developers. Here's a nickel, kid, go buy yourself a real computer."

      That's just an eerily accurate guess, though.

  41. Revision Control by TornSheetMetal · · Score: 2, Insightful

    Assuming you are doing some form of Revision Control (which you should be ;) ), I find it most important to have the revision control system built into the editor I'm using. I also want a difference engine built into the editor that works with the revision control system. Emacs and Xemacs has these features among other full IDEs. It is useful to look at the differences between your current code and code that has been checked in, in a graphical manner so that the differences are within context. Command line diffs remove the context

    It's also nice to have color highlighting of code and smart indention. This can help you know if you spelled things, forgot a ";". A nice feature that some IDE's have which I haven't seen implemented in emacs yet (which I'm sure is possible), is the ability to know the current valid function names and variables and highlight them appropriately.

    1. Re:Revision Control by Anonymous Coward · · Score: 0

      Huh? Have you tried:

      M-x font-lock-mode

      Full syntax coloring and auto-indent. (Not M means "meta", which on PC's is ESC or ALT or both).

      I use vim, which has these things too. Slightly steeper learning curve, but much faster once you learn it.

  42. Irrelevant. by rjh · · Score: 2

    For one project of mine (a GNOME-based network app), I prototyped in Glade and spent the rest of my time in gIDE tweaking it until it was in a semistable form. It took a helluva lot of time, due to the code's complexity and the tremendously intolerant attitude C takes toward even the slightest failing.

    A few weeks later, I decided to learn Python and figured to port this app to Python and PyGNOME as my own sort of final exam; i.e., did I now understand Python well enough to write real apps? Using no tool more sophisticated than xemacs, I had the app running in Python/PyGNOME in under three days.

    Part of this is undoubtedly due to the fact that I'd already hammered out the program logic by writing it in C the first time. Part of it is due to the fact Python is a more appropriate tool for GUI construction.

    But in the end, a shift in programming language (C to Python) made a tremendous difference in development time and brain-pain. The ``downshift'' from an IDE to a traditional editor made pretty much no difference at all.

    The question ``[a]re GUI dev tools more advanced than CLI counterparts?'' is, in some ways, a foolish one. The most advanced tool any hacker has is what's between his ears, and the experience he's accumulated over his years.

    1. Re:Irrelevant. by Mike+McTernan · · Score: 1

      > tremendously intolerant attitude C takes toward even the slightest failing.

      This is a good thing, it finds bugs.

      I compile with gcc -Wall. Maybe you should go back to Basic?

      --
      -- Mike
    2. Re:Irrelevant. by PurpleBob · · Score: 2

      That is flamebait of the worst sort.

      What's wrong with using the programming language which is best for the job, which he seems to have found is Python? Does it threaten your existence as a great l33t C programmer (Look at me, I use -Wall, I'm BETTER THAN ALL OF YOU) that Python might have an advantage over C?

      --
      Win dain a lotica, en vai tu ri silota
    3. Re:Irrelevant. by mimbleton · · Score: 1

      Hell, think how much time you would save if you had equivalent of Glade for Python.
      Of course GUI prototyping tools help.
      Anything that offloads some work to the computer ( which was designed for this in the first place) is a good thing.

    4. Re:Irrelevant. by rjh · · Score: 2

      This is a good thing, it finds bugs.

      Close; it creates bugs. Dynamic memory management is much more reliable when it's left to automated tools; when was the last time you saw LISP or Scheme code dump core on a segmentation fault?

      I compile with gcc -Wall. Maybe you should go back to Basic?

      Funny. I write code in Ada95, in LISP, in Scheme, in OCaml, in C, in C++, in Python, and in half a dozen other languages too esoteric to mention here.

      If you feel that you're a 31337 haX0r because you know C, buddy... think again. There's an entire world of languages out there, and some of them are very, very good.

      Free your mind and your code will follow.

    5. Re:Irrelevant. by Mike+McTernan · · Score: 1

      > That is flamebait of the worst sort.

      So flame me....

      > What's wrong with using the programming
      > language which is best for the job, which he

      No, chosing language for task this is good. Nothing to do with my comment. I was merely defending C against his criticism that it is very pedantic/difficult. The comment about -Wall supports my view that the compiler is _good_ to be so pedantic - hey it's a tool, might as well use it to its best!!!

      > seems to have found is Python? Does it threaten
      > your existence as a great l33t C programmer
      > (Look at me, I use -Wall, I'm BETTER THAN ALL
      > OF YOU) that Python might have an advantage
      > over C?

      Don't care if Python is better or whatever... as you said, depends on the task.

      Just seemed to me that the original poster didn't really understand why C is pedantic and obviously shouldn't be using it...

      And anyway, as I'm sure you know I AM BETTER THAN ALL OF YOU

      Wahaaarahahhhaahaahaahaaaa!!!!
      [Now that *is* flamebait ;) ]

      --
      -- Mike
  43. Re:Thing is.... (OT) by uchian · · Score: 1

    With a tool like Visual Basic(ugh! VB sucks!) your GUIs and forms are easy to design

    I agree, but I don't know if you've noticed but VB programs always tend to look... VBish - they stand out a mile away. I haven't figured out why exactly, it's just that they always look amaturish, no matter who designs using them.

  44. GUI's are easy to learn, but never efficient. by MongooseCN · · Score: 5, Insightful

    GUI's are easier to learn because all the options are laid out in front of you. You can click through menus and scroll bars and see all the options available. This makes it very easy to learn. Eventually though you will know all the capabilities of your editor, but you will still have to click and move through menus and graphics to get to what you want.

    CLI tools are the opposite. They are hard to learn, but once you know them, they are fast and efficient. Vim is a perfect example of this. The editor is simply amazing. It has a keyboard interface to do nearly anything you want to do. The only problem is, it's very very difficult to learn. You don't know what all your options are. You have to goto :help and start searching for something simliar to what you want to do. But once you know the basic commands, it becomes easy to find other commands for something you want to do.

    Here's a nice cryptic example. What's a fast way to find the include file for a function? Browsing through help files, searching for the command and cutting and pasting the include in? Or this:
    :r! man ntohl | grep "\#include"
    Ya, I thought so too. =)

    1. Re:GUI's are easy to learn, but never efficient. by Kingu · · Score: 1

      Hmm, in both the Java and C++ IDEs I use, all I have to do is right click on the function and select "Go to definition" or something like that. That opens the file containing the definition and puts the cursor on the function in question.
      But usually I don't need to see the actual source file. Since I do mostly OO programming, my IDEs lets me see any methods available to a given object as well as their signatures.

    2. Re:GUI's are easy to learn, but never efficient. by Anonymous Coward · · Score: 0

      How's code completion in vim?

    3. Re:GUI's are easy to learn, but never efficient. by Webz · · Score: 3, Insightful

      I agree with you, but you should revise the title. It isn't a matter of GUIs never being efficient, since it depends more on how familiar an interface is. Keep in mind that keyboard accessible GUIs can operate much faster with a keyboard than with a mouse. Unlike Apple, Microsoft has done a great job making nearly every aspect of the operating system accessible via keyboard. Once you memorize all of the shortcuts and such, its just as good and as cryptic as a CLI, sometimes.

    4. Re:GUI's are easy to learn, but never efficient. by cpt+kangarooski · · Score: 3, Informative

      Don't make incorrect absolute statements like this; it's annoying.

      CLI's are quite inefficient when you need to do a lot of typing. E.g. if you were moving files to a path that was very long; where you have to perform operations on files that can't be selected through grep b/c there's no common rules that are applicable.

      Besides which, in the real world, the time you waste trying to remember some cryptic argument and how to use it IS a factor to be weighed.

      CLI's have their uses, as do GUI's. Far better for them to augment each other (e.g. right-clicking on a CLI command to select from a list of argument options with their full names; selecting files spacially with the mouse and renaming them with wildcards) than to persist in maintaining a wall.

      As for the comment below re: keyboard shortcuts, testing reveals that they are for the most part slower than using the mouse. People don't consciously realize it, but unless the command is incredibly common and ingrained as only a few are, they pause and try to remember it. It's objective testing has revealed this - not people's subjective senses of time.

      --
      -- This and all my posts are in the public domain. I am a lawyer. I am not your lawyer, and this is not legal advice.
    5. Re:GUI's are easy to learn, but never efficient. by dSV3Hl · · Score: 1

      Uh, with most shells you can use filename completion, so all you'd have to type of that long directory name is the first few letters...

      As far as cryptic command line arguments, and keyboard shortcuts... If you use it for a few days you know them. Besides, alot of programs share the same keyboard shortcuts, arguments.

      Of course, you sound like your saying this: "Studies have shown that people who don't know how to type can type faster with 2 fingers then with 10"

      --
      -- [ta]
    6. Re:GUI's are easy to learn, but never efficient. by Anonymous+Brave+Guy · · Score: 2
      Here's a nice cryptic example. What's a fast way to find the include file for a function? Browsing through help files, searching for the command and cutting and pasting the include in? Or this:
      :r! man ntohl | grep "\#include"
      • Right-click and choose "Go To Definition".
      • Click on a "load matching .h file" icon on the toolbar, if it's a function in your own class.

      Alternatively, for full docs on a library function, how about clicking on the name and hitting F1?

      These are all routine things I do several times a day at work in my "inefficient" IDE.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    7. Re:GUI's are easy to learn, but never efficient. by Anonymous Coward · · Score: 0

      Fast way in MSVC with MSDN installed....

      -type function name
      -press F1
      -look at the bottom of the page for the include
      -alt-tab back to editor

      Even if I don't like MS a lot, they actually have good documentation.

    8. Re:GUI's are easy to learn, but never efficient. by Anonymous Coward · · Score: 0

      PLEASE, it's "a lot", not "alot".

    9. Re:GUI's are easy to learn, but never efficient. by scrytch · · Score: 2

      Here's a nice cryptic example. What's a fast way to find the include file for a function?

      Right-clicking on it in turbo-C++.

      Or let's get radical, how about an environment that looks for headers in your include path, then puts them in a suggested list you can then edit, so you don't have to bother with finding the damn header in the first place unless it's ambiguous. Could probably program it in vim if you really want to deny that the 'v' (and the 'i') in vi stand for anything but "visual". Unless you're using a keypunch to enter your code, you're using a GUI of some sort.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    10. Re:GUI's are easy to learn, but never efficient. by ivan256 · · Score: 2

      I once had a Professor that had a "nifty" little script that included all the .h files in his include path. He never could understand why it took so long to compile simple little programs.

      Better to understand how your libraries work. Then you'll already know what to include and you'll write a better program too.

    11. Re:GUI's are easy to learn, but never efficient. by scrytch · · Score: 2

      I once had a Professor that had a "nifty" little script that included all the .h files in his include path. He never could understand why it took so long to compile simple little programs.

      Better to understand how your libraries work. Then you'll already know what to include and you'll write a better program too.


      Was it out of some desperate desire to be right and superior and put me in my place that caused you to ignore what the hell I said and post that unrelated anecdote? I'm talking about something that finds declarations, not something that blindly includes every header. Doesn't anyone have reading skills anymore?

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    12. Re:GUI's are easy to learn, but never efficient. by kubalaa · · Score: 1

      GUI's speed doesn't come from using the keyboard; it comes from having grammars that are more stateless. As the example given by another poster shows, you can essentially program a command line on the fly by doing things like "rm `find ./ -type f -ctime -1 | grep -v 'foo'`". Trying to express these things in a graphical interface is like trying to hold a real conversation by playing pictionary.

      --

      "If you look 'round the table and can't tell who the sucker is, it's you." -- Quiz Show

    13. Re:GUI's are easy to learn, but never efficient. by Tachys · · Score: 2

      Many GUI's have keybinds for most if not all of the menu commands.

      So the menus can act as built in reference cards

    14. Re:GUI's are easy to learn, but never efficient. by cpt+kangarooski · · Score: 1

      No, most shells (that I've seen) use crappy filename completion. Compare how it does it to something better, like a good web browser's address field.

      Shells make you guess if you have enough characters for the completion, and force you to hit the tab key to trigger it. Browsers bring up a most likely choice (which could be based on a variety of factors - alphabetic order, frequency of use, explicit preference, etc. as you like) as soon as they've got one, often with other choices immediately available, and selectable, but let you keep typing, overwriting the choice, refining it if you like, skipping to a relevant portion away from the current cursor location if you like, etc.

      There is a FUNDEMENTAL difference between having a command line - that is, having the ability to textually describe some command or system object or whatever - and having to suffer with a half-baked virtual teletype machine to use it. Terminals make CLIs look bad, and the shells don't do much to help the situation. (it took forever for things like histories to come along, and that only mimics actual tty's!)

      It is entirely possible to embrace GUI elements in a shell, provided that they are assistive in permitting you to textually describe things.

      Regarding the rest of your post, your approach to HCI is all wrong. No one is perfect; no one remembers everything; and many people who might love to use CLI features are put off by this moronic insistance that they spend time learning how to use them down to their depths before they can do thing one. Even expert power users often, often find conveniences put in place for newbies to be useful. (examples: undo buffers, oxo kitchenware, consistant naming conventions)

      --
      -- This and all my posts are in the public domain. I am a lawyer. I am not your lawyer, and this is not legal advice.
    15. Re:GUI's are easy to learn, but never efficient. by Ronin+Developer · · Score: 2
      Here's a nice cryptic example. What's a fast way to find the include file for a function? Browsing through help files, searching for the command and cutting and pasting the include in? Or this: :r! man ntohl | grep "\#include" Ya, I thought so too. =)

      Borland Delphi. Click on function. F1. Brings up help which tells you where the function is located and its syntax. Ya, I thought so too. :-)

      I'm an advid user and proponent of GUI IDEs and am highly proficient in its use. Like any decent tool, there are short cuts and commands that speed you along the way. But, I don't have to switch tools to compile, run the program in the debugger, and then reload my editor...the tools handle this seemlessly.

      In the same vein, I have friend who absolutely can't stand GUI tools. He's extremely proficient using the CLI. I find the CLI tools difficult, but not impossible to master...I just want to get the job done.

      Kylix allows me to do this. I code in Delphi 6, copy the code over, and recompile and run under Kylix or vice versa. The IDE command set and operations are the same. This means productivity to me. Others, may care more for the CLI. But, when you go cross platforms and have to deal with library includes and such, often having a tool manage that complexity is a Godsend as it leaves you to concentrate on the task at hand and not symantics.

      Cheers, RD

    16. Re:GUI's are easy to learn, but never efficient. by Error27 · · Score: 2

      In my experience helping CS 1 students, command line tools are easier to learn.

      With a command line tool you simple create a text file and you use gcc to compile it.

      With the borland or vc++ you have to go through a long process outlined here. The sad part about it is that people will have problems manipulating the compiler throughout the entire CS 1 course. They'll do something like include header files as source files or they'll try to reopen they're source by clicking on a source file instead of a project file...

    17. Re:GUI's are easy to learn, but never efficient. by Atlas · · Score: 1

      I agree completely. Let me make a quick analogy by telling a story from my past. I was a graduate student in physics. I of course had worked with equations and physics for many years. While teaching the low level physics courses I found a common theme. Most students had to use their $200 calculators or they couldn't do anything. I basically equate these to fancy IDE's. I of course had a shitty ten year old calculator that worked just fine. Time and time again I would watch these poor fools attempt to use the fancy calculators, not bothering to actually think about the problem or further develop the base skills necessary to solve problems in general. Eventually I would whip out the shitty calculator I had and solve the problems within seconds.
      Clearly my calculator did not possess superior functionality, however I did posses much better skills from years of not having the fancy tools to use. I feel that elaborate tools can be useful but not until a person has mastered the subject without any assistance. I am now a programmer and I see the situation to be very much the same. I see the MS monkeys slaving away with Visual Studio and such programs and I just have to laugh. Providing a crutch just produces a cripple.
      I agree that command line tools take a significant increase in time to learn however the payoff is immense. Call me oldschool if you will but I view GUI IDE's a lazy person's choice. Then again most people are lazy so the popularity of these packages is not suprising.

      Later
      --

      --
      --------------------------------------------------
      "All paid jobs absorb and degrade the mind."
    18. Re:GUI's are easy to learn, but never efficient. by leifw · · Score: 2, Informative

      You're right, there are easy ways to do that in Visual Studio as you describe. However, the same functionality that you and the original poster described could easily be had by a single key mapping in an non IDE editor worth its salt.

      Example from vim:

      nmap <f1> yiw:r!man <c-r>"|grep \#include<cr>

      So after sticking in that mapping, hit f1 on a command that's not yours and you'll have the info you were seeking.

      Oh, and of course, you could already jump to the definitions of any of your own symbols (in nearly any language, not just the one that your parochial bloated IDE supports ;-) ) by pressing CTRL-].

      Yes, most good non-IDE editors can easily have more convenience features than an IDE; it simply requieres a little time spent configuring the editor.

    19. Re:GUI's are easy to learn, but never efficient. by Anonymous Coward · · Score: 0

      So you still live in a cave cause you saw some dumbass burn down his house?

      Just because a tool allows an idiot to do dumb things faster doesn't means that everyone using the tool is dumb.
      In high school I taught myself how to program with my fancy calculator. In calc I wrote a few programs (Newton's method, etc...) to quickly double check my work I was doing by hand

      I find it odd that some people seem to freeze themselves at some level of technology. You can use the calculator, but anyone using anything more complex has inferior skills. I'd be willing to bet that many moons ago when calculators first became popular a bunch of old timers were sitting around bitching about how dumb people were by using those fancy new machines as a crutch

      hmmm, reminds me of the Amish :)

    20. Re:GUI's are easy to learn, but never efficient. by ivan256 · · Score: 1

      Yup, that's it, I had a desire to be superior. No, wait, it was that "right" thing, yeah. My opinion is better then yours. And I really told you...

      Or maybe you said that you had "an environment that looks for headers in your include path, then puts them in a suggested list". Sounds like you have a script that pulls all the header files out of your include path and then lets you choose from them. But I didn't say anything like that so of course my comment is unrelated.

      If you want me to read into your comment that it selectively chooses include files for you based on definitions then why don't you say that in the fucking comment?

    21. Re:GUI's are easy to learn, but never efficient. by Atlas · · Score: 1

      Obviously you did not read my post. I did not say that tools are a bad thing, I claim that they are a bad thing for beginners as they don't teach the necessary skills to truly understand the problem. After one has obtained a decent grasp on a subject, using more sophisticated tools is fine. Usually people who do know understand the most choose to use the most efficient tools. This usually also turns out to be command line tools from my experience.
      As usual I get a response from an Anonymous Coward. Quite fitting I suppose considering my previous point about laziness. Try registering an account or having the balls to use it if you wish to reply further.

      --
      --------------------------------------------------
      "All paid jobs absorb and degrade the mind."
    22. Re:GUI's are easy to learn, but never efficient. by Barlo_Mung_42 · · Score: 1

      But with a GUI you get both. There is almost always a keyboard shortcut for the menu items.

    23. Re:GUI's are easy to learn, but never efficient. by Anonymous Coward · · Score: 0

      Dude, have you ever heard of hotkeys before?

    24. Re:GUI's are easy to learn, but never efficient. by Anonymous Coward · · Score: 0

      em

      First of all, me posting as Anonymous Coward has nothing to do with the conversation. Sure I can be a good little boy and after X number of Microsoft bashes get the magical rating of 5 and all the other slashdotters will be in awe of my wisdom.
      I could if I really freaking cared. But I don't :)

      Anyway, I never said that you said that tools are bad. My point is that your argument seems off because you seem to be trapped at some level of technology.
      As you were going through school you became proficient in the use of the simple calculator and (I assume) command line computing. To you now, those are not tools, but "the basics", the foundation of knowledge. You see any later technology as something that hides the basics and makes it easier for the unknowing.
      If you go back in time to the origin of the calculator I'd bet my left nut that the exact same argument you're using for simple calculator vs complex calculator was used for pen and paper vs simple calculator. I bet people were screaming and yelling about how the simple calculator made people dumber because they used it as a crutch.

      Fast forward 1000 years. I bet the simple calculator and the command line interface will be filler for history books. Does that mean that no-one in that time will have an understanding of mathematics or computing? Does that mean that the people just getting started 1010 years from now will be even dumber than them because they are using the next generation of tools?

      A tool is a tool. If someone misuses it, that's the fault of the user, not the tool. If the user doesn't truely understand what the tool is doing, again, not the fault of the tool. And if you think about it, is it always necessary to fully understand what's going on?
      How many people do you think can actually write in machine language nowadays?

    25. Re:GUI's are easy to learn, but never efficient. by crealf · · Score: 1
      No, most shells (that I've seen) use crappy filename completion. Compare how it does it to something better, like a good web browser's address field.

      Which shell do you use ? bash (both on Unix and Windows) is pretty decent.

      Shells make you guess if you have enough characters for the completion, and force you to hit the tab key to trigger it.

      Remember that 10-15 keystrokes are worth a click. I often double-tab right at the beginning to see the list of files. I hate clicking to select, especially since I run usually in maximal resolution (1600x1200) and mouse control is harder.

      Browsers bring up a most likely choice (which could be based on a variety of factors - alphabetic order, frequency of use, explicit preference, etc. as you like)

      You need to separate file display and file selection. First issue a ls command: "ls -lS" sorted by decreasing size, "ls -ltr" sorted by inverse time, "find . -cmin -10", ...

      A bash expert can do "Ctrl-r" in bash allow to search a string in a previous command in the history, then cut with "Ctrl-k", then "Esc->" and paste with "Ctrl-y" at the end of the line, all this with an amazing speed.

      BTW, it is almost unthinkable to use bash without using the Ctrl-r feature, which is a search in your previous history.

      Also a classic is to use "find . -cmin -10", for finding the files that were changed less than 10 minutes ago ; handy when you extracted an archive in the wrong directory, and everything is messed: "find . -cmin -10 | xargs rm -rf".

      The filters such as "*.c", "*.h" are useful, also.

      In some rare cases, I need to select manually many files, in a non-obvious way: then it's easy: "ls > /tmp/s && emacs /tmp/s", and the right amount of "Ctrl-k" does the job, faster than clicks. Then I can directly do a "tar czvpf //mybackupmachine/backup/another.tar.gz $(cat /tmp/s)", instead of clicking a billion of aggravating times on menus, buttons, confirmations, etc...

      The key of shells is first that you can combine commands, second that you have full history (with the mandatory Ctrl-r) that you can cut and paste in your new commands.

      No one is perfect; no one remembers everything; and many people who might love to use CLI features are put off by this moronic insistance that they spend time learning how to use them down to their depths before they can do thing one

      I think that's not the point. Maybe 99% of the users will never have the (costly) time to learn CLI ; the same way I don't have the time to learn properly MS Word, and use it in a crappy way. But saying that, even for the remaining 1%, CLI are inefficient is plain wrong.

      As for the comment below re: keyboard shortcuts, testing reveals that they are for the most part slower than using the mouse. People don't consciously realize it, but unless the command is incredibly common and ingrained as only a few are, they pause and try to remember it.

      When keyboard shortcuts are a matter of life or death, not only you learn them, but you learn to learn them so that to remember them efficiently. A example of GUI with many shortcuts (it was 100% keyboard shortcuts before newer version) is Blender. I spent a few hours learning the modeler and the keys, and never used it after, but I'm amazed when I come back to it, 2 years later, that I still remember most the keys. Of course, for a big system like Emacs, it's harder, that's why there is Meta-x with long names, apropos with "Ctrl-h a", and a 4+ page dense "reference card", all with the keyshort cuts, not to mention search in the index of the big emacs help ("Ctrl-h i", "Ctrl-s emacs:", "enter", "i", )

    26. Re:GUI's are easy to learn, but never efficient. by Anonymous+Brave+Guy · · Score: 2
      You're right, there are easy ways to do that in Visual Studio as you describe. However, the same functionality that you and the original poster described could easily be had by a single key mapping in an non IDE editor worth its salt.

      But if you start customising your editor to hook in the convenient compiler/help/whatever, then aren't you really just working in your own IDE?

      Yes, most good non-IDE editors can easily have more convenience features than an IDE; it simply requieres a little time spent configuring the editor.

      Sorry, I'm not sure I buy that. The editor in Visual Studio is already highly customisable, as are the editors of most other good IDEs I've used. With these things, you can often customise keyboard shortcuts, menus and toolbars to your heart's content. They also tend to provide decent macro facilities these days. In other words, they provide much the same "convenience features" as most editors.

      Many also now have full-blown automation interfaces. There is a whole market for Visual Studio add-ins, and we use a couple regularly at work. The only real problem I can see is that it isn't a ten second job to set up this automation -- it's great for significant extensions, but not (yet) the sort of tool you'd use to replace your build scripts.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    27. Re:GUI's are easy to learn, but never efficient. by n3m6 · · Score: 1

      i was developing some php pages and i'm used to creating all pages by hand using vim.. but after using visual basic for a while( yes .. go ahead flame me ) .. i juss wish i could draw the input boxes on the php page and go ahead with my coding.. i mean.. why waste time doing it by hand when u are a point and click away ? and ofcourse .. when your ide draws it for you .. you are sure that it doesnt' have any spelling mistakes.. we should learn to use both modes of programming.. i'd hate it if i don't have sed and awk for quick changes to the source..

    28. Re:GUI's are easy to learn, but never efficient. by BJC · · Score: 1

      You can get keyword completion using CTRL-P or CTRL-N, and various other completions (word, filename, line) in similar ways. How do I do this in Visual C?

    29. Re:GUI's are easy to learn, but never efficient. by ebbe11 · · Score: 1
      Here's a nice cryptic example. What's a fast way to find the include file for a function? Browsing through help files, searching for the command and cutting and pasting the include in? Or this:
      :r! man ntohl | grep "\#include"

      • Visual SlickEdit: Right click on the function name, select go to definition, select prototype.
      • SNiFF+: Right click on function name in the function list, select "Show declaration".
      In both cases the editor opens the relevant header file and places the cursor on the function definition. GUI's aren't just editors with an integrated debugger. Any decent GUI (or at least the ones I would want to use) include extensive source code browsing facilities.

      --

      My opinion? See above.
    30. Re:GUI's are easy to learn, but never efficient. by bored · · Score: 1

      Any decent macro recorder will do the same thing in windows with about 5 keystrokes and mouse events. Now try saving your results into a html table for viewing on the web. It turns out to be an ugly perl or sed script. Its just a couple more clicks and keystrokes to fire up a html editor, create a table and paste the results in and save as html. Then if you do it enough you just tie the macro to a hotkey. In the end you can do it in either the CLI or the GUI with one keystroke. It makes no diffrence in the end. The goals of GUI's are to make it eaiser to do things you don't know how to do. Everyone here is just arguing the same thing from two diffrent perspectives.

  45. What about Slashcode? by Anonymous Coward · · Score: 0


    I don't think it was written with either a GUI or cmd line. I was written by smearing used toilet paper all over a disk drive. "Here ya go! Not to sure what the hell works and what doesn't, but it's shit and it's binary so it oughta do somthin'!"

  46. The Hell, You Say... by Greyfox · · Score: 2
    I've done GUI work with visual design tools and I've done it with EMACS and I find that EMACS tends to be less limiting. It also forces you to understand the underlying model of how your GUI works (Admittedly not something you want to do as a Windows programmer.) Better understanding promotes better programming and better use of the GUI features. While it's true that a beginning GUI programmer can more quickly produce a GUI using a visual design tool, he will take more time to improve as a GUI programmer in the long run.

    AND, I've seen stunning complex 3D models of a lot of things that were generated using ray tracing programs in which you describe the scene using the ray tracer's programming language. Many of these ray tracings were done before the advent of 3D accelerated video cards and 3D modelling programs. Some of them were done before the widespread advent of the GUI. While a 3D modelling program might get you most of the way to a good look, I'd be willing to bet that your best 3D people still go in and tweak the generated files by hand to get the final look. Knowing how to do that can be the edge between a good 3D artist and a great one.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:The Hell, You Say... by mimbleton · · Score: 1

      "Admittedly not something you want to do as a Windows programmer"

      Underlying model of GUI on windows very similar to what you have in X or most other toolkits.
      A message loop, events, basic primitives (lines , filed polygons, fonts etc)
      There is nothing particularly nasty about Win32 subsystem.

      As to your main point, granted it helps a lot if developers known innards of given system but it is not necessary unless requirements specifically call for it ( like creating custom widgets etc )

    2. Re:The Hell, You Say... by Anonymous Coward · · Score: 0

      ARGH!!!!!!

      Please restrain from making such statement (about the 3D thing), since you obviously have no idea what gives an edge to a 3D artist.

    3. Re:The Hell, You Say... by Anonymous Coward · · Score: 0

      Well, with windows you have to deal with all sorts of wierdness like pascal callng conventions and other random crap. Basically, anyone who calls X bloated has never seen the layer upon layer of crap that MS keeps around in dark, hidden corners of win32 GDI....

    4. Re:The Hell, You Say... by mimbleton · · Score: 1

      These are not layers.
      MS has tendency of introducing new calls like CreateWindowEx etc ...
      It makes system DLLs bigger but does not affect performance like layering system does.

  47. The BEST interface by Anonymous Coward · · Score: 0


    The best interface is a simple one. Sometimes that may be command line, other times GUI.

    Anyway, here is the simplest computer around, and the interface is perfect because we are all born with it - the interface is human DRIVE. The computer works like this: I stick my pee sprout in your mom's poop chute for 1, and I stick it in her pee hole for 0.

    poop chute = 1
    pee hole = 0

    Sometimes I stick it in her mouth, but that is for parity.

    Sometimes complex operations can take a long time to complete, but that's okay! We're looking for simplicity here, not speed. And waiting for this interface isn't that bad.

    This simple computer is very susceptable to visuses. In fact, it comes pre-loaded with several.

    For review:

    poop chute = 1
    pee hole = 0

    This computer also fits into Microsoft's .Net strategy - namely, pay per use. It costs $10 per computation, or 15 minutes, whichever comes first.

    poop chute = 1
    pee hole = 0

  48. GUI is terrible for less skilled programmers by ColGraff · · Score: 2

    I'm coming out of the closet - I am not a good programmer. I can do some basic database apps, basic second-year-programming DOS stuff, but that's about it. I can't write games, I don't know assembly, and I have never written a complex program with a real GUI.

    That said, I find that GUI development environments are terrrible for me. To get any work done at all, I need to be staring at the code, and nothing but the code. I don't want to click through little dialog boxes to get to parts of my program, and I don't trust the way VB and Delphi hide my code from me. Without not just the ability, but the neccessity to step through my code line by line the old-fashioned way, I'm just lost.

    --
    I'm the stranger...posting to /.
    1. Re:GUI is terrible for less skilled programmers by Anonymous Coward · · Score: 0

      i'd love to see this code delphi "hides from you". i work in delphi on a daily basis, both as a career and a hobby, and, although delphi *does* have a very OO nature from the ground up, and a huge collection of components (VCL), all of the source for these components come with delphi. i can drop a button on my form, go to the source editor, and follow the heirarchy of the button class (TButton) all the way down to the base object class (TObject), from which all other objects are derived. So where, exactly, is it hiding code?

    2. Re:GUI is terrible for less skilled programmers by Lacutis · · Score: 1

      I think this is actually a valid point, and even though it was made by an AC, it should be modded up to at least 1.

      Delphi (And C++ Builder) don't hide code from you, you can always toggle to the source and all your event code and functions you have written are right there for you to look at.

    3. Re:GUI is terrible for less skilled programmers by AtomicBomb · · Score: 1
      GUI development environment hides a lot of work behind the scene. The good thing is it reduces a lot of work load (eg create a SDI framework in both MSVC and kDevelop is just a few clicks)... If you know what you are doing, that's fine and fast.

      But, I agree that's disaterous for the beginners who havent touched a GUI toolkit before. I am in an EE grad school. A number of ME students around us doing not have real programming background (eg doing control, circuit design). When they need to program, they turn to those "hot" programs (eg VC++ or kDevelop, depending on their supervisors' preference). I have seen at least two cases that ppl use SDI for what should really be dialog box app. All the buttons or menu options, including even "File Open/Save", are undefined. Only one button in the program works, which consist of a massive dialog box.... Even worse, people tend to include all their code into the "OnOk" function.... It should not be like that.

      My suggestion is when start GUI programming, one should start from CLI. He/she may just start with a few simple buttons/dialog/scrol bar etc. Keep concepts can be grasped from one or two programs. They will be fine afterwards.

  49. English to E Translator by Shoeboy · · Score: 5, Funny

    My undying passion for the lovely Heidi Wall has made me quite the perl hacker. I've gone so far as to develop a little program I call e2e.pl, the English to English Translator. This nifty app lets me translate what people say into what they mean. Let's apply it to this article:

    I just got into quite a long argument over on the Yahoo! message boards over the power of command line dev tools.

    Translation: Traffic at the helpdesk was pretty slow, so I was wasting time bragging about my 1337 coding skills and Lunix prowess on Yahoo.

    Basically the guy told me that it is impossible to create 'state of the art' programs with command-line tools. But when I asked him to give me reasons why he just called me stupid and 'behind the times'.

    Translation: Another helpdesk monkey pretending to be a 1337 programmer started flaming me. I flamed back, but I was outflamed and couldn't match his fluent profanity.

    Considering he was an avid supporter of anything Microsoft, I take what he says with a grain of salt.

    Translation: I called him an "asslicking Micro$oft whore," made some cracks about VB programmers and impotence and retreated.

    But what I want to know is how many of you developers have switched from command line work to KDevelop or CodeWarrior? And what advantages you think it offers? Certainly there are many 'state of the art' apps created with command line tools, but I'm open to anything that can increase productivity.

    Translation: I know that slashdot is packed with gifted flamers and CLI enthusiasts, so I was hoping you could give me some good ammunition before I rejoin the fight.

    I've just never seen a compelling reason to make the switch from what I am used to and comfortable with." Personally, I feel the best development environment to work in would be one that ignores neither the GUI, or the command line.

    Translation: But I'm not honest enough to admit that I'm looking for ammo so I'll wind up with some lame ramblings about productivity to make it more palatable to the /. editors.

    Well, I think that clears that up.
    --Shoeboy

    1. Re:English to E Translator by Anonymous Coward · · Score: 0

      Hey! Welcome back... BTW, have you been trolling on ticalc.org in the past few days? Or is there just someone with a similar writing style?

    2. Re:English to E Translator by Anonymous Coward · · Score: 0

      Shoeboy, is that e2e.pl code under the GPL?
      Want to share it?

      If you ever get tired of coding there will be a great future for you on Saturday Nite Live! :)

    3. Re:English to E Translator by Anonymous Coward · · Score: 0

      There's hope for slashdot yet.

  50. They're the same thing by Farrax · · Score: 1

    A command-line interface is graphical since you see it on your screen ;) I think what we really need to be discussing is black box development...

    Really, though, a graphical interface adds so much to a design environment. So does a command line. What the debate stems from is the tendency to assume that a programming environment must either be a graphical or a cmd line interface, not some sort of hybrid.

    It's a stupid carpenter who only uses nails because he thinks screws are for wussies, the converse also being true, blah blah blah.

  51. Bigotry makes for sub-optimal programmers by ben_tarval · · Score: 5, Insightful

    There are times when CLI tools are superiour And there are times when GUI's
    are superiour. If you don't know when each is best used, and how, you are
    not up to your full potential as a programmer.

    Personally, I believe in keeping an open mind, and using the best tool
    for the job. This allows me to do the best job possible.

    Now then, ask your bigoted friend if he does anything less. If this doesn't
    shut him/her up, then his reply will be most amusing.

    1. Re:Bigotry makes for sub-optimal programmers by gowen · · Score: 2
      There are times when CLI tools are superiour And there are times when GUI's are superiour. If you don't know when each is best used, and how, you are not up to your full potential as a programmer.


      How true. I'd like to add the following though. Many people, often with respect to KDE v. Gnome v. plain-old-window-managers or Windows v. Unix talk about how usability is enhanced by common look and feel. Well, for me, an unashamed luddite, Makefiles provide that look and feel. Yes, they work for code, but a good template Makefile for LaTeX gives handy commands for (say) making and previewing in GV, printing, printing reduced to 4x4, converting to a PDF file or HTML and many other useful things.


      The same goes for automating validation of SGML or so on. The only trouble is, if I'm ever caught without my Makefiles, I've found I'm completely useless :(

      --
      Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    2. Re:Bigotry makes for sub-optimal programmers by mgkimsal2 · · Score: 2

      But - what defines 'best'? If 'best' is measured in time to complete the project, and someone has only EVER used one type (GUI or CLI) learning the other way will (considerable) time to the project, meaning it takes longer, and is therefore not 'best'. "Best tool for the job" is often misused and staying with one tool only becomes a self-fulfilling prophecy.

    3. Re:Bigotry makes for sub-optimal programmers by ben_tarval · · Score: 1

      Yes, the word "best" is a general term, and often misused. It really does depend on the job being done, of course.

      The point here is that if you keep a closed mind, either for CLI's or GUI's, you may be ignoring a better solution for the task at hand. And only by keeping an open mind, thereby knowing your options and tools, can you choose the right tool for what you have to do.

  52. GUI helps, but ain't a brain replacement... by DeepMind · · Score: 0

    I use both command line tools and GUI equivalents. I think GUI can help a lot, providing graphical tools for designing (UML modeler, inheritance charts, etc.) and for coding (words completion, syntax highlightning, inline error checking, etc.). However, command line tools are often more flexible. I would say it depends on the target's environment: if you're developping a server for some *n*x platform then command line tools may be more efficient (vim has syntax highlightning, after all :p), but if you're targeting a Win32 platform with hundreds of resources files, etc. Visual Studio stays the best choice. I've never used KDevelop nor CodeWarrior (except on BeOS, but it was just a poor shitty IDE with not so much features), but I don't see anything valuable currently in unix IDEs that are more source editors than true design platforms. Julien.

  53. It's the editor and debugger... by Anonymous Coward · · Score: 0

    I don't know if its really GUI vs. CLI. It is what do you like for your editor? What do you like in a debugger?

    It's all personal style, but I have to say that things like drop down method & property names, and drop down function prototypes can be pretty handy. Tooltip type evaluation of variables in a debugger window is also pretty slick.

    On the other hand, if you are used to something that works for you... I don't see how anyone can argue.

  54. i guess this guy has never programed before.... by LWolenczak · · Score: 1

    The compiler in visual studio can be run from the command line... Infact, you have more control over the compiler that way. I have had to use it on more than one occassion, and found it much easyer to compile code.. than try and find the proper check boxes in the properties.

  55. Horses for courses, by RojCowles · · Score: 1

    Well I've developed some pretty powerful apps using vi, cc, dbx, CLI index/search tools and make, on the other hand when doing Java development the IDE I use, Netbeans 3.2, is a big help, partly as jdb is such a lousy debugger, but also as the text editor's integration with the database of classes in the system makes it much easier to look up objects/methods in mid-edit that would be a huge pain to look up using grep/awk, or having to hold several hundred classes in my own memory so this certainly speeds development.

    This came home when I was doing some work on a C++ system that I was new to, without IDE or class browser support, and I was surprised how much time I spent in another xterm looking up available methods and how to use them.

    Of course even Visual C++ eventually just ends up executing cl.exe and link.exe to compile and link the code you've just typed in in the end and also lets you export nmake files so you can build you projects using command line tools too.

    If I was developing a GUI based application from scratch I think I'd prefer to do it all in an IDE, then again using Glade to build the GUI and hacking the callback code in using the older steam driven tools, vim/gcc/gdb/gmake, works pretty well too. This was part of a small test program using CORBA with a C++ and a Java GUI based client/server programs. The Java program was done entirely in the IDE, the C++ in a mix of the glade UI builder and the CLI stuff.

    Having said that I have met people who have become dependent on flashy GUI tools, and who measure their worth by the sophistication of the tools they use, as opposed to the quality of the code they write. I've even had to cover for people who've refused to fix bugs on certain platforms just because they didn't have access to a GUI based debugger and would be forced to actually read and understand the code, use dbx/xdb/gdb/ladebug/etc or (horrors !) printf() ...

  56. GUI is not mutually exclusive to automation! by Anonymous Coward · · Score: 0

    How did the parent get moderated to 4 insightful? GUI components can be automated in Windows using COM. You can write a program to do anything a user can: create a spread sheet, enter values, change font sizes, and save it. Granted, scriptability for Linux GUI components is rather shoddy, but there's nothing stopping you from automating a GUI component.

    1. Re:GUI is not mutually exclusive to automation! by Anonymous Coward · · Score: 0


      I say give me a +4 insightful lip lock on my anal ring and suck hot steaming fecal sludge across your tounge down your throat.

      That's what I say.

    2. Re:GUI is not mutually exclusive to automation! by Skapare · · Score: 2

      Show me what a script that automates a GUI app in Windows using COM looks like. I just want to see if how they do it makes it all a POS (e.g. too complex) or if there's something real that the X Windows world forgot to do. You can put one up on a web page or ftp server and reply with a link, or if no such access, email it to me and I will (you'll have to find a rot13 app to decode my email).

      --
      now we need to go OSS in diesel cars
    3. Re:GUI is not mutually exclusive to automation! by TomV · · Score: 1
      Show me what a script that automates a GUI app in Windows using COM looks like


      Here's a VB script which uses Word to convert UNIX-style line breaks in text files dragged'n'dropped onto its icon into Windows-style ANSI 13 + ANSI 10 CRLF's. It's about the simplest example I could find here, but apart from what's here you basically just need to know the COM object model for the app you're automating.



      'REM create an instance of Word
      set objWord=createobject("word.application")

      'REM next bit handlesthe drag'n'drop
      Set objArgs = WScript.Arguments
      For I = 0 to objArgs.Count - 1
      fileToProcess= objArgs(I)

      'REM now we get Word to open the file and save it into another format.
      'REM in this example we're using numeric values
      'REM rather than constant names, - they're all
      'REM in the COM Type Library for word but doing
      'REM it this way saves a reference to another file
      with objWord
      .Documents.Open fileToProcess, 0, 0, 0, "", "", 0, "", "", 0
      .ActiveDocument.SaveAs fileToProcess, 5, 0, "", 0, "", 0, 0, 0, 0, 0
      .ActiveDocument.Close
      end with

      Next

      msgbox "completed"

      'REM tell Word to quit
      objWord.quit

      'REM get rid of reference to Word
      set objWord=nothing

      'REM comments include REM for clarity to non-VB ppl


      Although this is a VB script example, the same result is achievable from, at least, C, C++, JavaScript, ActiveState Perl, well, basically any language that can talk COM on the windows platform.

    4. Re:GUI is not mutually exclusive to automation! by markbthomas · · Score: 1
      I suggest you take a look at Automated QA's website. Their program, AQtest, allows you to write things like this:

      Sys.Process("myprogram").Form1.Button1.Click

      Not that I like M$ or anything, but I do think X sucks.

  57. Different, not more advanced by proxima · · Score: 5, Insightful

    The difference between GUI development tools and command line development tools is fairly minor. In many cases, the IDE (Integrated Development Environment) simply brings together a large collection of individual utilities for convenience. This happens in the Windows world with Borland's C++ compiler and their IDE. In the *nix world gcc (and other compilers), as well as debuggers, possibly code-completion (usually only found within the IDE), class browsers, etc, are brought together into one package that allow for faster development of applications.

    KDevelop and KDE Studio are two examples of this. The "tools" are really the same - they just offer a GUI interface to several command line utilities. I cannot speak for KDE Studio, but I believe KDevelop is working on good cvs support for a complete approach to shared development. To my knowledge some of these features are already implemented. Also, a GUI based IDE will almost ceretainly have good syntax highlighting.

    However, one does not need to use a GUI to get colored code - vim and Emacs/XEmacs offer this from the command line.

    In my opinion, development can take place faster and debugging more easily with an integrated environment compared to ed+gcc, but this should be rather obvious. This does not make IDE's (both GUI and terminal based ones - IMO Emacs is an IDE once you configure it properly) more advanced - just more convenient.

    The nice part about developing with *nix is that you can use a wide variety of tools, even on the same project. Use what you are comfortable with, and ignore those who say your technique is flawed - everybody has their own way of doing things efficiently. With MS Visual C++, you are basically stuck with their IDE and you better like it.

    Choice is good, use what you like.

    --
    "The universe seems neither benign nor hostile, merely indifferent." --Carl Sagan
    1. Re:Different, not more advanced by NSG · · Score: 2, Informative

      >With MS Visual C++, you are basically stuck with their IDE and you better like it

      Huh? Am I the only persson that realizes that MSDev is a GUI interface to the command line tools that it runs? You can still execute cl.exe and link.exe from the command line - after all, thats what MSDev does, and pipes it's output to the Output Window.

    2. Re:Different, not more advanced by Bren · · Score: 1
      In my opinion, development can take place faster and debugging more easily with an integrated environment compared to ed+gcc, but this should be rather obvious©

      If you're using ed and gcc, you problably won't get much work done at all! I mean, despite being the standard text editor, ed really sucks to write code in©

      Or maybe it's just me, because I *still* can't figure out how to use ed© Oh well©

      ¥yep, I know you were actually just abbreviating editor© Or at least I hope so©©© :

      Bren©

    3. Re:Different, not more advanced by proxima · · Score: 2

      Thanks, I was under a false impression.

      I stand corrected.

      --
      "The universe seems neither benign nor hostile, merely indifferent." --Carl Sagan
    4. Re:Different, not more advanced by rmull · · Score: 1
      To some extent, you're right - the compiler and linker are indeed external programs. You can generate a Makefile and compile the whole thing outside the IDE, if you're so inclined.

      But the real reason that windows programmers swear by MSDev is its wizard system. MFC, the Win32 API wrapper with which most C++ GUI apps are built, requires a great deal of black magic. It uses obscure, undocumented macros to implement critical functionality. The only way to really use MFC is through the wizards, which take care of the macros for you.

      Another reason: the Win32 API and MFC are both far to complex to remember. Without MSDev's annoying-as-all-hell code completion, you'd spend even more time reading MSDocs(tm) than already.

      Oh, how I wish I never had the occasion to learn these things.

      --
      See you, space cowboy...
    5. Re:Different, not more advanced by DCheesi · · Score: 1

      There are several other code editors/IDEs for Windows that will integrate with VC++. Codewright, for example; although I use it for straight C with a cross-compiler, anyway. Of course, I don't know if it does the "pretty pictures" like in VB or not.

    6. Re:Different, not more advanced by Faux_Pseudo · · Score: 2

      GNU emacs version 20.x amd under does not support color syntext highlighting on the command line as of yet.
      Version 21 will do so. If you have a nntp server with a long post life you can find a copy of gnu emacs 21 that i posted to alt.binaries.test about a week ago.
      If I get a few requests by email I will post it again.
      Or you can do a search on google.

    7. Re:Different, not more advanced by Malor · · Score: 1

      Anyone who would install a binary off USENET is too stupid to live. :-)

    8. Re:Different, not more advanced by zoftie · · Score: 1

      Thats the trouble. I call the problem, mixing
      impedances. When you take many different software
      pieces and try to make them stick together well,
      you have to drop some cool features, that
      either of the packages provide to match the
      other 'common' tools available. With GUIs,
      that built from ground up, you are able to offer
      some more nice features. However developing one
      bloatware package is very expensive for everybody,
      so there are only few success stories for the
      bringing a package that really has advantages
      over CLI tools, and helps get the job done better.

      Often too, people who develop such tools, they
      concentrate on programmers'(customer) comfort,
      and not on the final quality of the code compiler produces, later play catch up on that, often
      too late.
      So yes it is more different.

    9. Re:Different, not more advanced by Faux_Pseudo · · Score: 2

      You must be new to the open source idea. The binarie in question is a tar.gz of the source code.

    10. Re:Different, not more advanced by Skapare · · Score: 2

      I'd rather have boxed code instead of colored code. I find boxes easier to read (with thin lines, of course). I'd want to have the loops boxed. Keywords can be colored, and that helps some, as long as I can control the colors (I have a certain vision problem that requires me to control the colors to be able to see).

      --
      now we need to go OSS in diesel cars
    11. Re:Different, not more advanced by doug363 · · Score: 2, Informative
      I generally don't like MFC, and prefer Borland's VCL (and CLX libraries). It is better thought out and addresses the points you brought up, and many other annoyances:
      • It uses obscure, undocumented macros to implement critical functionality. The only way to really use MFC is through the wizards, which take care of the macros for you. The VCL uses no macros, as Delphi doesn't have them. This makes the source code far more readable. Further, it's well commented, clean code, and also documented in the help files for the most part.
      • Another reason: the Win32 API and MFC are both far to complex to remember. The VCL uses a consistent and logical approach to objects. For instance, list boxes, combo boxes, and listviews all have an "Items" property which acts consistently, and can all be used as base classes in a fully OO system at many points along the chain. You can program in it without remembering things like, "now, does this function return zero or -1 for failure?" and the like.
      • Without MSDev's annoying-as-all-hell code completion, you'd spend even more time reading MSDocs(tm) than already. This is a UI issue, but again I prefer Borland's UIs. The Code completion is actually very intelligent, and you don't have to compile your code first.
      Some other reasons why it's better IMHO:
      • The VCL and CLX uses properties! I know this is a small thing, and not compiler-portable, but code looks so much nicer.
      • The CLX library (kindof the successor to the VCL) is cross-platform. It compiles on Linux (x86) as well as Windows.
      • MFC doesn't abstract controls away enough compared to the VCL. Most controls have only very basic wrappers around the Win32 API, and using MFC isn't that much better than the API. (I really find it hard to believe that the Dev Studio people couldn't think of many major improvements to the API when they're in a fully OO environment.)
      • The VCL/CLX streaming and loading system puts MFC to shame. MFC is still using dialog templates, which were passable for Windows 3.0, but aren't suitable for modern visual programming styles.
      • It adds internal messages for component writers that fill out the gaps in the API. For example, there are messages before and after important property changes, so you can veto the change if necessary.
      • You can create controls which integrate into the IDE much more cleanly than in Visual Studio, using property editor classes and the like.
      • You get waaaayyyy more components in Delphi/Kylix/C++ Builder/JBuilder than in most other similar products. (As in, over 150 components in Delphi 6 Pro that do everything from GUI stuff to your flavour of database API to pre-built base classes for SMTP servers.) You can use visual development when you want it, or program these components like Database objects if you'd prefer.
      All in all, I'd suggest that you give these tools a look if you can. I think C++ Builder opens and compiles many Visual C++/MFC projects (but I'm not sure), so you can keep some degree of compatibility if you're tied to Microsoft code.
    12. Re:Different, not more advanced by damiam · · Score: 1
      You must also be new to the open source idea. If it's source code, it's not a binary. Binaries are the stuff without source that you get from MS. But even if it does have source, do you think he'll do a full audit of the code before compiling it? That would take weeks! The emacs code is large and complicated, and malicious code can be inserted almost anywhere.

      Besides, I don't know how emacs is developed, but you must be able to get development versions from CVS without relying on Usenet. This isn't commercial software, where you only get to see a few screenshots before the release.

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    13. Re:Different, not more advanced by Dwonis · · Score: 2

      Depends of your definition of a "binary". If you equate "binary" with "executable machine-language instructions and data", then you are correct. If you define "binary" as "not ASCII text", then tarballs fall easily into the "binary" category.

    14. Re:Different, not more advanced by damiam · · Score: 1

      Yes, but in the open-source world, the word binary is usually used to describe a precompiled program. And what the tarball is doesn't matter as much as what it contains - in this case, ASCII-encoded source code.

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    15. Re:Different, not more advanced by Anonymous Coward · · Score: 0

      And on USENET BINARY == non-text content! Who gives a flying f*ck about your sissy arguement! Please go back and get slaped by a raped fish as your arguement is nonsensical and totally irrelevant! Your ego stressing is SO PASSE!

      Dumb fuck.

    16. Re:Different, not more advanced by armb · · Score: 1

      > You can generate a Makefile and compile the whole thing outside the IDE, if you're so inclined.

      You can use GNU make and cygwin to use the same Makefiles (with some relatively small platform dependent bits) as you use to compile the code (give or take a few relatively small platform dependent bits) on Unix :-)

      Not suitable for all development environments of course, but it beats maintaining two completely different sets of Makefiles where it is.

      --
      rant
  58. Have been working with VS.net for some time by Anonymous Coward · · Score: 0
    And it's pretty neat. I would hate going back to anything with less features!
    • Whenever I type the "." (or "->" depending on the language) it shows the available methods/properties/members.
    • When I select a method, it displays the prototype and a small comment attached to the method (yes, your own methods can have the comments that will be displayed as well).
    • When I'm typing the arguments, it shows which argument I'm in now (kind of helps when a function takes 20 arguments).
    • Many basic mistakes are identified by the background compiler and highlighted directly in the editor (the famous wave line from Word of course) - you see it when you make the mistake, not when you happen to hit the compile button.

    I have never programmed faster and most of those stupid errors you get when you make typos or simply remember a name or argument order wrong are almost gone.

    Add to this the fast debugging where it automatically displays active variables and stuff, and there is no way I'll go back to CLI (the actual compile can still be done by CLI, so we can have our nightly builds).

    Currently I am programming Windows only, but will probably end up doing some Linux/Unix code again in the near future - I just hope there will be something similar available at that time, else I'll start calling Linux all the bad words I normally reserve for NT. :)
    1. Re:Have been working with VS.net for some time by spaanoft · · Score: 1

      Hey, that sounds like what borland started doing a few years ago starting with Delphi 3. I'm pretty sure they got it worked into C++Builder 4 too. I do have to admit it is VERY useful when doing such things as windows programs where you have functions like CreateFont() which have, like, 14 arguements and I could never remember which was supposed to be which all the time or having some crazy remote, rarely used structure to fill out for a function and not remembering each member.

      I know when I'm programming command line programs though, I can't see this as nearly as useful. Input and output I can just use stdin and stdout and most functions I create for the program I can remember for myself and most stuff like strcmp is easy to remember. I doubt I'd use a lot of those types of things when doing that.

      I guess GUI tools are good for GUI programming and CLI tools are good for CLI programming.

      Me, I think I'll be sticking with less fancy stuff, since I'm doing less and less GUI programming lately.

  59. It's all the same, really by trentfoley · · Score: 3, Funny

    Personally, I write my programs in various flavors of assembly on paper with pencil. I then hand assemble, again on paper, but I use pen instead of pencil. Then, I use a machine-language monitor to directly enter the op-codes to ram, either in hex or octal (binary is just too primitive!). This is the only way I truly know what the processor is doing.

    And, if you believe that, I have several priceless family heirlooms to sell you.

    1. Re:It's all the same, really by motyl · · Score: 1

      I was in fact doing it when I was 14 years old. I wrote hex codes in one column and mnemonics as a comments in the other. And then entered the data through the monitor or with a simple BASIC program.

    2. Re:It's all the same, really by Anonymous Coward · · Score: 0

      funny *and* insightful!

      I was gonna post something similar, but you've done much better than I would have.

  60. Depends on the needs by DarkDust · · Score: 1

    I think GUI-based development tools are very good for beginners and if the tool is good even for pro's, but commmand line is more flexible. How many of you started with Borland's Turbo * series ? I've used Turbo Basic, Turbo Assembler and Turbo Pascal in my youth (which is not that far away :-), and they were very simple to use which made them so successful. At the same time, they were very powerful, especially because of those great debugger support combined with a good online reference.

    Now, since I left the Microsoft world three years ago I don't know about todays Borland tools, or Microsoft's Visual tools. But I'd bet these tools are good, because of the programmers use them. Command line tools are found mostly in the UNIX world, maybe because there is no good command shell in Windows ;-)

    But if you understand more things 'behind the scenes' and start building larger projects with several dozen to hundred files, one sometimes needs more flexibility than a GUI tool can offer. I personally prefer a KDE Konsole with three to five terminals plus Midnight Commander. It makes working very fast, at least for me it's faster than KDevelop or Sniff+ or any other GUI tool that I tried. For me, the main problem with GUI dev tools is simply the lack of good Makefile support. I've found no GUI tools yet, which makes it easy to write a system which uses plug-ins which in turn use 3rd party libraries... plus the necessary directory structure to keep the source maintainable. Maybe there are, but one needs time to learn how to use a specific GUI tool, and I'm too lazy for that ;-)

  61. Re:GUI cvs Command where it's AT by simetra · · Score: 1

    Actually NT has the "at" stuff... equivalent of cron. Oddly enough, my MCSE friend has never heard of it.

    --

    "Would it kill you to put down the toilet seat?" -- Maya Angelou
  62. I'd say it depends on how people think. by daviddennis · · Score: 2

    I wrote a Visual Basic application some years back, and kept on struggling with getting the user interface right. Even something as simple as getting all the buttons to line up consumed amazing amounts of time.

    Now I write C code that spits out HTML tables, and the alignment is perfect every time. If there's a problem, it's usually easy to fix - usually as simple as forgetting "<td valign = top>".

    And if I'm asked to, say, change the background colour of the page, or switch a whole bunch of elements from the left side of the screen to the right, I can do it, easily.

    The only development tools I need are emacs, gcc, and a dose or two of common sense. Not bad, not bad at all.

    If you think text, as I do, you are way better off writing programs that spit out text, instead of programs that manually position every pixel on the screen. In my experience, I'm far more productive and create much more attractive applications by spitting out HTML and letting the web browser worry about the pixel by pixel stuff you do with a GUI.

    But if you think visually, as I think most people do, the GUI's probably going to work better. It's certainly mind-numbingly difficult to translate a bunch of numbers into a page prototype in my head. But, perhaps, not yours - and that's why we all need different tools.

    D

    1. Re:I'd say it depends on how people think. by scrytch · · Score: 2

      Even something as simple as getting all the buttons to line up consumed amazing amounts of time.

      Ever thought of using the "align" tool? Or snap to grid? Or hilighting all the elements you want to hand-align and entering the appropriate value for the x/y/top/etc values in the inspector? In the Borland editors, you could even edit the form language directly. Any tool is a waste of time if you don't bother to learn it.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
  63. GUI V. Non GUI by jellomizer · · Score: 1

    Basicly I think the main difference between the two is the level of patiance the user has and how in depth they want to get. I view the difference as a Graph where the Y access is the Time it takes to learn and the X is the Level of complexity you can acheave in the program. On this Chart I see GUI developing tools like a linear curve (A straight line) And non-Gui a Logrithmic Curve. (Well I did have a graph in text that represented it but the Lameness filter didn't like it) Sience most porgrams that are out there are fairly simple so GUI can do the job but when it comes to a point where you need a really complex program command line program can do the work a lot faster and easer because you dont have to fight the GUI and its restriction to get it to work.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  64. VisualStudio.NET Intellisense Rocks by Jan · · Score: 1

    If you're trying to learn an unfamiliar set of libraries (such as the .NET Framework), the Intellisense feature, and also so-called (context sensitive) DynamicHelp are, well, very helpful.

    For example, you declare a variable
    Type type;
    You type
    type.
    and Intellisense prompts you with a list of methods on a 'Type'. You *pick* (not type) GetCustomAttributes. You see
    type.GetCustomAttributes
    You type
    (
    You get a list of the overloaded methods of Type.GetCustomAttributes, each with return types, parameter lists, and summary descriptions of each overloaded method. You pick the first variant, and it prompts you for args as you go.

    Very productive -- no hunting about, and you would have to go out of your way to make an error. The same features work for your code as you write it. Declare some methods, write some summary comments, and sure enough you're prompted with these as you write calls on your own methods. (Apparently) no compile required.

    (This feature, while very well done, is not new to VisualStudio.NET, of course. For example, Looking Glass Software's Alice Pascal (1985) had the same type, function, and argument prompting, and context sensitive identifier completion, even for user-defined types.)

    That said, when I am writing small amounts of quick and dirty C or Python code I invariably bring up a vi or two.

    1. Re:VisualStudio.NET Intellisense Rocks by eidechse · · Score: 1

      If you're trying to learn an unfamiliar set of libraries (such as the .NET Framework), the Intellisense feature, and also so-called (context sensitive) DynamicHelp are, well, very helpful.

      cheerleading_mode = ON

      This functionality is also available in MicroEdge's Visual SlickEdit. It's parameter info and auto-completion tend to be more reliable than Intellisense's (VC++ 6 anyway...) and are user configurable.

      That (and about a bunch of other stuff) makes for a cool GUI programming environment that you can use with just about any CLI compiler. On multiple platforms even...

      cheerleading_mode = OFF

    2. Re:VisualStudio.NET Intellisense Rocks by fleck_99_99 · · Score: 1

      I worked in Visual Studio 6 for a couple years, and I think it has IntelliSense, too.

      --
      seven two six five
      seven four six one seven
      two six four two e
  65. Experience and Power are the Key by ssclift · · Score: 1

    What is a GUI really but a flexible visual analogue of a keyboard and selector system? These days they even have virtual pop-up sticky notes as little non-graphical reminders of what the tiny picture means in case you're not from the U.S. west coast. Many GUI-bound systems don't have a non-graphical representation, though, making the underlying functions impossible to manipulate non-graphically. GUIs are usually oriented towards a particular style of work and a particular set of expectations; they use a language that usually has to obscure the real operation in favour of a metaphor.

    We are visual creatures, a computer is quite definitely not. Fundamentally the command line is closer to the Turing Machine nature of what a computer truly is, and with less abstraction comes more sophistication and potential. As a programmer becomes more expert this becomes extremely useful, since the programmer has grown to truly understand the nature of the machine and abstractions get in the way. The programmer masters the machine itself, not an approximation.

    For example, in a current project I need Perl, Java, Ada, C/C++ and Python programs written on NT, Unix and VMS to communicate with a system over sockets, ACMS and various species of CORBA. Visual-Foo++ isn't going to handle the single representation of the workflow that I wrote in language X that gets translated and compiled into the interface for the various legacy components. It probably could be forced to, but why when make, lex and yacc can make quick work of the problem? On the other hand, if my application is of the "fill in a form, save, edit, delete data in a database" type then a GUI-based tool is going to be fine for developing it. Some semi-GUI tools like visual debuggers can produce visual representations of data that often help comprehension, but even these often fail when the going gets genuinely tough.

    GUI dev env's will be with us for a long time; my favourite ones are those that disappear when it's time to get hard work done...

  66. Somewhere in between. by cygnus93 · · Score: 2, Informative

    For most of this year I have been developing command line programs as well as linux kernel device driver code, and I primarily use a graphical development environment. I use an editor/project management program called Visual SlickEdit. Granted, it's not OSS, but it was provided by my employer, so I'm not complaining too much. It has features that simply would not work with a non-graphical editor, such as an easy file management interface, advanced searching mechanisms, and automatic code cross referencing tools. Being able to trace execution flow through the kernel by just clicking on variables and function names can save tons of time.

    On the debugging side of things, ddd is a must. This is GNU's graphical front end to gdb, and I honestly believe my testing would be about 10 times harder without it. Being able to graphically display huge chains of data structures (especially in the kernel) is completely invaluable. I can't imagine how much longer it would take me to find all of the subtle bugs that crop up if I was just using gdb on the command line.

    On the other hand, though, I still do a lot of my work with command-line scripts that I've written. Stuff like kernel builds and installations on a remote test box, rebuilding and installing my admin tools, setting up test cases, and opening debugging sessions are all done through simple scripts. When I need to run these, I simply tab to an xterm and run them.

    So I don't think this situation is completely black and white. I see both methods co-existing quite nicely.

  67. Use the appropriate tool for the job. by w3woody · · Score: 2

    The upside of GUI tools, and why I use the CodeWarrior IDE, is that they streamline a number of tasks, making it fast and easy to create a simple application. They also integrate a number of tools which I find quite useful for building a simple application, such as class browsers. The CodeWarrior IDE is excellent for building an application which may consist of a few hundred C++ files, all compiled and linked to a single executable.

    However, sometimes you're not building an application. Sometimes you need the power of a Makefile to do something more complicated than "compile everything, and link everything into a single .exe". And that's where something like the CodeWarrior IDE falls down.

    GUI tools work extremely well in the problem space they were designed. The CodeWarrior IDE was designed for building large Macintosh applications, such as a word processor or a drawing program: something which largly consists of a single executable program built from several dozen or several hundred source files. The CodeWarrior IDE contains a number of tools which help manage the complexity of all of those source files: file grouping in the project window, class browsing--all geared towards managing a single executable with a ton of classes and sources.

    Building a Macintosh printer driver with the Codewarrior IDE (which consists of a half-dozen separately linked code resources) is a pain in the neck, but doable. The last game I worked on, which consisted of a very simple engine running an ad-hoc compiled scripting language was a royal pain in the ass: first, build the compiler. Then, outside of the compiler environment run the compiler on the half-dozen scripts. Then, in the compiler environment, build the game. With a makefile this would have been reduced to one step. And I could have prevented errors where the compiled scripts were built with the wrong version of the script compiler.

    I think the short answer is you use the right tools for the job.

    1. Re:Use the appropriate tool for the job. by Anonymous Coward · · Score: 0

      Agreed, use the appropriate tool for the job. Doing otherwise is a waste.

      As an aside, I'd like to point out that most CodeWarrior products include command-line versions of their compilers allowing you to choose the compiler form you prefer to use.

      In addition, you can script the CodeWarrior IDE using any COM-based scripting language (Perl, VBScript, etc) and some of the newest releases now include Tcl support to automate debugging.

      I use a GUI because I don't have time to memorize all the different options. Others probably can, but I'm more interested in a result, not scratching my head trying to remember a specific option (is it -H or -h). Instead, I just select it's more verbose form from a panel and call it done.

      It works for me, but your mileage may vary.

  68. IT Depends what your project is.... by MrCawfee · · Score: 1

    It really depends what your project is, if you are developing a very large GUI Interface then RAD Programs such as Delphi Kylix VB or C++Builder (note 3/4 are from borland and not microsoft =)) (btw Bornald C++Builder has a command line compiler in it's package).

    Anyways, i have grown to really like how much less time it takes to create guis with C++Builder.., But after you have created the guis it really doesn't matter, it just makes debugging easier when you have the line of code you are breaking at highlighed and don't have to search for it. So overall i acually prefer the GUI Based compilers but there is still a big need for command line compilers for things like cron compilation.

    Anyways, i think i have made my point. OH another point while i am on the subject is if you have to develop for windows use Bornald C++Builder, you will not regret it, i hate the interface of VC, okay i am done now.

    Ben

  69. more info for OOP with Gui tools by bobalu · · Score: 1

    i don't want to disagree with all the "command lines rule" guys here, but if you're doing any kind of UI or OOP work gui tools give you much more info to work with. For straighforward procedural 'C' or system work it may be a wash, but i fail to see the intellectual superiority of setting an object property via text in a file vs entering the same text in an edit box. or selecting a menu item to set it. the intelligence is in knowing what to do, not how you do it.

    personally i had nothing BUT command line stuff to work with for oh, about the first 13 years i wrote code and have used both for the last 10 or 11 years. i think it's kinda funny that programmers don't want to make use of the same kind of technology we build for other people.

    --
    The revolution will NOT be televised.
  70. Cut and paste -- you said it by Anonymous Coward · · Score: 0

    You perceived it right: cut and paste is the first step toward an GUI code generation tool. That also explains why GUI tools are probably dangerous.

    Why cut and paste? It creates code forks that become a nightmare to support because you need to support every reincarnation of the code, and of course they begin to diverge right away.

    Instead of cut and paste, you should be building classes to capture the useful common functionality. The question is, do you build your software top down or bottom up. My brain is trained to function in the latter way, but I have noticed I'm in the minority.

    Marko

    1. Re:Cut and paste -- you said it by Anonymous Coward · · Score: 0

      I just wanna say that I DID NOT post this. I don't know who this joker pretending to be me is, but he's obviously a moron.

      -The REAL Anonymous Coward

  71. More powerful? No. More helpful? Maybe... by Xentax · · Score: 1

    Personally, I can't imagine any software engineering problem that couldn't be solved with either a CLI-based or a GUI-based tool.

    However, _debugging_ code generally seems easier when you have an interactive GUI debugger...compare VC++'s interactive debugger against dbx, for example. Even ddd on top of dbx usually adds a lot compared to just dbx.

    So I submit that developing isn't necessarily "better" with a GUI -- some people DO think in code, and the gui doesn't really help unless you're doing GUI layout or the like. But having a GUI front-end to an interactive debugger makes testing and integration a LOT easier, IMHO.

    --
    You shouldn't verb words.
  72. Re:Thing is.... (OT) by Anonymous Coward · · Score: 0

    I've noticed that part of that look is it's a real bear to get your program to grab the colors the user has chosen and use them for the program..i.e. the VB grey for panels is different than the default windows gray by a small amount. I tried doing this in VC++, and well, no docs told me how. I figured out how to make it work in VC++, though.

  73. [The Great Anonymous French Calembour] by Anonymous Coward · · Score: 0

    Counterparts: Quand le compteur part t'sais pas quand ça s'arrête.

  74. Re:Stephen King, author, dead at 54 by Anonymous Coward · · Score: 0

    You do realize, that if he is eventually found dead, you will be the prime suspect.

  75. Interface doesn't make a tool "advanced" or not. by amohr · · Score: 1

    The point is, there are lots of tools out there for development and it's wisest to use those that work best for you/your project.

    Maybe you really like CLIs, so you prefer and are more productive with those kinds of tools. On the other hand, you may prefer GUIs and be more productive that way. I (and I think many people) prefer a mix.

    I do most of my development (C code) in Visual Studio (even for platforms other than Windows), because I am more productive in that environment than the other things I've tried, like traditional UNIX dev environments.

    However, a significant portion of my build process is perl script, because it makes some things easier. I also use command-line CVS for source control because I like it.

    Just use what is best for you. Arguments about whether CLIs are better than GUIs and whatnot are juvenile and miss the point.

  76. An advantage that GUI tools have is... by iplayfast · · Score: 1

    They can give you hints about the data structure you are using. This is a function of the editor in the Integrated Development Environment(IDE).
    To give an example if you have a class foo.

    foo bar;
    bar.
    when you hit the period, a list of the possible things you can do with this class is given. Borland's even go so far as to elimate things that you can't do, so for example an assignement to and integer will only show functions or data that return an integer.

    Also for visual applications gui's definititly speed up the process. Pop a few buttons down, and the IDE puts the stubs to handle the code into the class. If it wasn't for Delphi and C builder I'm not sure I could have overcome the learning curve of windows programming. (No I'm not a newbie, I just wouldn't have bothered).
    On the other hand I like and appriciate the command line tools, and use both on a regular basis.

  77. at work: gui vs cli by willhelm · · Score: 1

    I worked on a project with some 12 other developers and I think we all had our own different environments. Some were running Visual SlickEdit, some had Sun's Forte, some Kawa, and I (all by my little self) was running Cygwin, bash, make, ant, and vim (I'm not boasting or anything, just telling it like it was).

    On the one hand, I had a lot more programming experience than those people so I could move around my environment faster than they could move in theirs. Including checking out files from Clear Case and running diffs and such. I would say that on average I could find a bug, diagnose the problem, and fix it in a quarter the time that it took most of my co-workers. I can move through a file in vim faster than they can with their GUI editors.

    Given that, I would say that GUI tools help you start projects faster because they have templates and wizards and things that give you a decent skeleton. They also have better help systems--so you start typing in a Class name and it pops up a box with members and such.

    CLIs are great for folks who know what they're doing because they're more easily customized and can be more efficient. But it does take time to script the infrasctructure.

  78. Aren't MS GUI Dev tools just frontend? by Anonymous Coward · · Score: 0

    MS VB and VC++ just call CLI compilers in the background anyway. The only thig that they offer is the ability to (obviously) design the GUI (ie., draw buttons and textboxes etc.).
    So, it is all a matter of preference as to whether you want to call them commandline apps yourself or let the MS Visual Studio IDE do it for you.

  79. Here's the deal... by Anonymous Coward · · Score: 0

    GUI tools /do/ have a place -- to save me from
    typing prototypes of GUI elements in my apps. Once
    this is done, I invariably must make that (static)
    prototype an active element. Also, I have _never_
    used a GUI tool that would layout GUI elements as
    well as I can by hand (remember, that I /start/
    with the code from the GUI tool).

    b

  80. GUI's hide too much! by ronys · · Score: 1

    As a programmer who cut his teeth on Unix, and now manages (sorry) programmers that are only familiar with "visual" environments, I'm amazed by the lack of understanding of the basics of the compilation-link-load-execute model.

    Such things as: declaration vs definition, preprocessing, the "#ifndef foo_h #define foo_h #endif" cliche, library search path vs include search path, etc.

    It looks like the visual environment hides the details, which is fine when everything compiles, and when you're building a framework along the lines that the tool builders envisioned (simple forms, etc.). But the minute you try to do something different, or if you misunderstand the designer's paradigm - good luck! In these cases, understanding the mechanics of program building helps, while those who don't start hitting the mailing lists...

    --
    Ubi dubium ibi libertas: Where there is doubt, there is freedom.
  81. real shells? by anshil · · Score: 2, Offtopic

    A lot of people who grew up and are used to windows prefere the mouse and clicks over keyboard and strokes. They tend to say that with the mouse they can do faster then with their shell.

    Sure it's because the command line interface windows ships with is the DOS-Box, actually a very bad and lausy shell. Sure you're faster with explorers cut&paste than typing things into the DOS box.

    But most of these people never touched a bash shell. Those who learned to use a 'real' shell (bash) will most likely always prefer to use it against point+click tools, since the shell allows you to write powerfull commands very fast, through technics like tab completion. And for the advandaced user he can even enter commands to be executed in loops.

    Try to write apply the program X against all n files ending with .x, In the Dos box? Impossible but entering n times the command, in windows explorer? possible but nasty, since it requires you to select all .x files seperatly, in a bash shell? No problem just write
    for i in *.d; X $I; done

    finished! It might take once here and there an hour to study the advantaged features a real shell might offer, but for people having to work 8 hours each they with a computer they pay easily of in the long run.

    It's like a cashier, in his profession an expert. No cashier wants to use a point&click interface, it would take them indefintly to enter a more compilicated invoice. owever a secreaty having to write just one invoice each day, she will not want to spend a weak to learn the real cashiers interface with all it's short cuts, she will like to click on a menu, look what it offers, drag down to a submenu, look again what it offers, select a item, and fill out a popup box. This takes her say 1 minute. Fine since she has to do it only say once a day. However a cashier working on a line having to enter 1000 entries each day this is unacceptable, however he knows his interface designed for the professional very well, he hits in example CTLR+R, A, 15, Enter and is finished, took him 5 seconds.

    Same is it for programmers, shell's. makefiles etc. all take their time to learn, and a hobby programmer will prefer a point&click interface. While one working heavily with these tools day, day out, will prefer a makefile far over the project settings dialog, since it allows him to write more powerful commands in shorter times, but in contrast to the dialog it requires knowledge/training to understand the makefile language.

    --

    --
    Karma 50, and all I got was this lousy T-Shirt.
    1. Re:real shells? by 10am-bedtime · · Score: 1
      close. try instead:

      for i in *.d ; do X $i ; done

    2. Re:real shells? by Webz · · Score: 1

      Well what you're saying is basically like, "Why don't Americans like Latin? It's so much more succinct, why use all those words for nothing..." Most Americans don't know Latin! If a user grew up with Windows, he would more likely be used to the mouse and GUI and not even know of the shell. You have to keep in mind that these people might be slower on the shell because they don't know how to use it. Thus, that's an unfair comparison in speed.

      (oh btw, i'm not a gui zealot. i like the cli sometimes. just trying to make friendly debate over ui issues...)

      The advantage to point-n-click is that the options are most likely laid out for you in the open, thus not requiring the memorization of commands. With a CLI, you have to know exactly what you want do to. Some people don't have the convenience of time, memorizing and learning the syntax of the shell. For a GUI, there is no syntax. It clearly shows (well it should...) what you can and cannot do, as opposed to a shell which leaves you commandless until you type something. You sound as if a GUI is capable of nothing. Maybe that's because you've used a CLI for so long, you don't know all of the little tricks of a GUI. You know, an OS like Windows has nearly every menu accessible via keyboard so don't complain that the mouse is the only option.

      As for the DOS thing... If a program can handle wildcards, you can just do
      program *.x
      just like UNIX, since DOS is a UNIX copy cat.

      I think a GUI is also good for people who like to visualize their work or make quick and simple decisions. Let's say I wanted to delete all of the directories that start with a, I could do that in UNIX very fast. With a GUI, I'd probably have to hunt and peck. Although there *is* a file find command in Windows, so I can use that and wildcards, press CTRL A to select everything in the window, and be off with it with delete. Another thing I like about an explorer type interface is picking and choosing what files I want to manipulate as opposed to typing them out. I know there's tab completition, but sometimes the file names are too long or too similar to use a CLI. Again, a CLI will show nothing until told while a GUI will lay out nearly everything needed.

      Again, its just a matter of whats appropriate and who knows what best. You're making the secretary sound completely ignorant of the keyboard while accessing the menus and that's not fair. By the way, I don't recall cashier's boxes ever having CTRL keys (unless they're PC boxen turned cash registers).

      So please get off your high horse and realize that these are different tools for different purposes. As fast as a CLI can be and as old as it is, don't make it the end all be all of UI. Have you even considered an audio interface? That may be a viable possibility for the masses in the near future.

    3. Re:real shells? by Antitorgo · · Score: 1

      Just a quick note. I think that Windows command-line has gotten more and more "bash"-like. In Win2k, I just wrote:

      for %i in (*.d) do X %i

      which is equivalent to your example above... I'm a bit confused as to your Windows bashing (excuse the pun)

    4. Re:real shells? by Anonymous Coward · · Score: 0

      Well, my MS-DOS 6.2 helpfile has "FOR ... IN" command, so this is nothing new.

      Considering NT's CMD.EXE is mostly a stagnant port from OS/2 1.x, my guess is that this command was also in DOS 5.0. I can't say for earlier versions of DOS, but you are right, bashing on information that's been incorrect since the 1980s is a little lame.

    5. Re:real shells? by anshil · · Score: 2

      I think you explained in another words what I was trying to say.

      The advantage to point-n-click is that the options are most likely laid out for you in the open, thus not requiring the memorization of commands. With a CLI, you have to know exactly what you want do to.

      It's exactly that, for doing a task the first time a GUI is definitly faster in hours. For doing a task 8 hours a day, a deticated interface is doing faster. Since the time used to learn it once is compensated in future uses.

      Just look at the supermarket, imagine the chasier would have PC keyboard, and even a mourse, I wouldn't want to wait in the queue.

      I took the secretary as an example, since normaly secretaries have a huge bantwith of tasks to do, but again normally they learn typing
      fast with 10 fingers, a lot of programmers don't work on especially. Okay that's a value dated a little more back into time. Today you value people by their ability to solve tasks themselfs, and having a wide spread spectrum of tasks it is effectivier to have user interface for each one which are more intuativee compared to more effective interface you've to be especially trained.

      Again the 'project settings' dialog for MFVC. Somebody looking the very first time at can very quickly understand how to turn on and off diverse compile options, while learing how to use makefiles takes up a weekend.


      So please get off your high horse and realize that these are different tools for different purposes.


      Didn't I say that? However for people that program day and day out, having to learn an dedicated interface pays off. I agree that implementing GUI software with a GUI possiblity to click components on a form. However in example I disliked in example Kdevelop because last time I looked at it, it didn't allow me to use my makefiles, it inseted to use it's autogenerated ones.

      Okay the for loop was a bad one :/ Espeically I must confess, I use them very seldom sensefully directly at command line (shell scripts are something different, but this is not a CLI then per se).

      I will try to take another example 'vi'. Imagine you're used to windows only (as I was). During the first time you use a unix system you'll sooner or later dump against the editor vi. Accidently it will pop open, and you think fuck what's that for a stupid, ugly thing. And how the hell to I get it away? Well after reading some minutes a man page you discover that :q will do, and you thank haven that it's gone. However as time passes by, you don't always want to use in example kwrite, because you're currently hacking on your installation and x-windows doesn't yet boot up, so you read and learn how at least to edit, and to save a file, so you use vi as a emergency backup, it will always run, even if everything else fails. One time you'll have some minutes free you decide to look how copy&paste is done, since in some config files you feel stupid repeating every line, character by character. And so you slipped into using it. Once nearly unnoticed you'll start to edit your c source files, and you think, hey that thing has syntax coloring, not bad after all. So you use it here and there. From using it and having free minutes you'll slowely start looking for command after command. And suddendly you think, wow 'vim' is a really cool editor, I allows me to do things fast and efficient, the interface is stale and looks like hell, but it's possiblities seem to be nearly without limimts. I guess today I know 10% of it commands and it's allows me seamless editing. I used all these editors before the DOS-Borland-IDE, MSVC, ED4W, UltraEdit, KWrite, SourceNavigator, all of them were graphically more appealing, easier to learn&understand, but today I personally prefer 'vim' over all of them. Thats how an applcation you hated and wanted to go away slowly turned into one of you're most beloved tools.

      However yes, as a programmer I edit plain text files all day long, hour for hour. I agree that somebody having only to edit one config file once in a weak, having to learn vi block command is over kill.

      Just like I want a GUI to be able to add some numbers, I don't want to learn the interface a cashier has to use and will prefer. I don't care if it takes me 20 seconds or 3 minutes, I do it only once in a month.

      That's my opinion for CLI vs. GUI

      -
      And please if you don't agree with click reply, don't moderate me 'OffTopic' that's definitly false since this is on the topic the thread was started.

      --

      --
      Karma 50, and all I got was this lousy T-Shirt.
    6. Re:real shells? by Darren.Moffat · · Score: 1

      As for the DOS thing... If a program can handle wildcards, you can just do
      program *.x
      just like UNIX, since DOS is a UNIX copy cat.


      Not quite true. In UNIX systems the expansion of
      the wildcard is performed by the shell before
      executing the program.

      In DOS the program does the interpretation of
      the wildcard itself.

      Quite a fundamental difference since most UNIX programs don't understand wildcards at all but it looks like they do because the shell is powerful.

      Personally I prefer zsh over any other shell ;-)

  82. What is a "command line tool?" by Anonymous Coward · · Score: 0

    What is considered a "command line tool?"

    $ echo "printf(\"Hello World\\n\")"

    Instead of using vi/emacs?

    gcc can compile lots of things, but if you're designing a gui I would think using a gui would be something of a prerequisite. If you're not designing a gui then there's no reason to need a gui.

    1. Re:What is a "command line tool?" by Skapare · · Score: 2

      When you find a bug in your program, your best command line tool is the "rm" command. :-)

      --
      now we need to go OSS in diesel cars
  83. GUI dev tools are necessary by glassware · · Score: 2, Interesting
    Are you serious? GUI tools are incredible nowadays.

    I can run the program and step through the source code in another window.

    The editor highlights my code in color, and I can expand or contract each class definition.

    In a project window, I can see all the files available and check them in or out of source code control.

    When I move my mouse over a function call, I get a popup with the list of arguments.

    I can standardize my comments and have the development tool create new classes for me with my comment scheme already in place.

    If I forget a constant's name, I can call up a separate window where I can browse or search through constants defined in many modules.

    Make scripts are generated for me automatically.

    But probably the best part is that I don't have to give up any of my command line tools in order to get these benefits. If I want to run it from the command line, or do a make from a batch script, that option is still there.

    I want to stress that not all of these advantages are Visual Studio or Codewarrior related - some of them come from the revered Turbo Pascal. None of these development environments require you to give up the command line.

    1. Re:GUI dev tools are necessary by stripes · · Score: 3, Interesting
      I can run the program and step through the source code in another window.

      I do that with command line tools all the time. One xterm for vi, and another for gdb. I admit it is nicer to use a GUI tool to set breakpoints by clicking on lines of code, and to have a whole window of variables with current values (which GUI IDEs like Visual Studio do), on the other hand gdb hasn't ever harf'ed on my code and taken out my editor killing some unsaved changes. Visual Studio has, so has Code Warrior, and two different Symentic Java dev tools.

      Oh, wait I see what you mean. You can do that as well, with gdb's attach PID. I tend not to bother, except when debugging a daemon. Normally having my debug session in the same output stream doesn't matter. Partly because I'm either debugging a server type process, or a GUI program. If I were debugging a curses type program it would be more of an issue and I would use attach (or a GUI)

      The editor highlights my code in color, and I can expand or contract each class definition.

      EMACS, and some vi clones (vim) can do the color thing (I find it distracting and useless for code, I do use it for HTML editing though). I think EMACS can do the class collapse and expand thing. That would be kinda nice, but not enough to make me leave vi.

      In a project window, I can see all the files available and check them in or out of source code control.

      I'm unconvinced that that is really better then using ls directly, but whatever floats your boat.

      When I move my mouse over a function call, I get a popup with the list of arguments.

      That is useful. I have to use ^] to get vi to search for the tag, or use another xterm to bring up a man page. It would be nice to have them unified. It would also be nice if vi could figure out what class x is so it can go to the right place when I do a tag search from x.foo()...

      I can standardize my comments and have the development tool create new classes for me with my comment scheme already in place

      Is that really simpler then typing :r ~/t/class to read in a class template? You could shorten that to a keystroke if you use :map...

      If I forget a constant's name, I can call up a separate window where I can browse or search through constants defined in many modules

      Did something prevent you from opening anew xterm window to search from things in a CLI?

      Make scripts are generated for me automatically

      That is nice, unfortunately it is frequently also a curse. I had a yacc-like program for Java that made java source, but the Java IDEs I used had no way for me to ask for it to be run on the .cup files. The vender had no idea why I would want such a thing, and after much tech support time finally bounced me to someone who did, but told me that it wasn't possible. For C++ I have a similar tool I use to generate lex files (it has simpler rules for generating "trivial" tokens)

      But probably the best part is that I don't have to give up any of my command line tools in order to get these benefits. If I want to run it from the command line, or do a make from a batch script, that option is still there.

      You do seem to give up the ability to make meta languages and have the make file apply them for you. That is a very powerful programming paradigm to be cut off from. I don't see why the IDEs have to cut you off from it, but the ones I have looked at either do, or have no obvious way to do it. If you know of any that do, please let me know. Or even good work arounds...

      You did leave out the GUI bit that I do find very helpful, and have found no CLI equivalent. Layouts of GUI panels and dialogs. It is far easier to do that in a GUI environment then a CLI one. I know, I have done it both ways. The Apple Builder (based off NeXTs) is extremely nice, but even less capable ones like the Symantic Java Studio, or MegaMax's Atari ST GUI are very very helpful. Doing hand layout of widgets sucks. Even if it is a tad bit simpler to make sure resizes don't suck as much, the rest of the ease of using a GUI layout tool far offsets that one bit where GUI tools are a bit weak. GUI layout tools also get harder to use effectively as you get more and more custom widgets (the Java layout tool could let you make live custom widgets, but then bugs in your widget code can bring down the layout tool...and the rest of the IDE! Which sucks, esp. since exception handling should have let them limit that problem...)

      Depending on what you are doing GUI dev tools can be more powerful, or less powerful then CLI ones.

    2. Re:GUI dev tools are necessary by anshil · · Score: 2

      Let me guess, you use MSVC, right? :)

      However that's all not necessarly GUI releated.

      I can run the program and step through the source code in another window.
      gdb can do this without graphics, altough I admit for debugging I also prefer a graphic interface like ddd.

      The editor highlights my code in color, and I can expand or contract each class definition.
      Nearly every editor can today do syntax coloring, that includes emacs and vi, which are non GUI.

      In a project window, I can see all the files available and check them in or out of source code control.
      > cvs -n upd | grep ?\
      will in example do the same, list all files which are not in source control.

      When I move my mouse over a function call, I get a popup with the list of arguments.
      btw. CTRL+Space will do the same, without having to wait 5 seconds. well vi can also use tags, well yes it doesn't pop, but you can let it open another windows showing the class interface definition.

      I can standardize my comments and have the development tool create new classes for me with my comment scheme already in place.
      Standarize you comments has nothing to do with GUI, also creation of classes from a temple has also nothing to do with GUIs. You reverted only to list MSVC features :o)

      If I forget a constant's name, I can call up a separate window where I can browse or search through constants defined in many modules.
      Yes code browsing is a matter of GUI, but having it in the same application is a matter of IDE, if I forgot a constants name but know it's value I type:
      > grep -r VALUE

      Make scripts are generated for me automatically.
      Again what does that have to do with <Gaphic <U>ser <I>nterfaces?
      Automake or autoconf also generate very nice scripts automacilly.

      --

      --
      Karma 50, and all I got was this lousy T-Shirt.
    3. Re:GUI dev tools are necessary by glassware · · Score: 2, Interesting
      I appreciate your thoughtful reply to my post.

      Overall, the items I listed are the distinct benefits that came to mind thinking of the difference between CLI and GUI tools. However, I also concluded that Turbo Pascal was also a GUI tool: my answers compared integrated development environments to CLI tools, not GUI tools vs CLI tools.

      Also, I am not a hardcore programmer in the sense that you have described. I don't like editing makefiles. I don't like meta-languages. I don't like switching back and forth between an editor and a set of development tools. My tastes in development are towards the simplest possible solution for the problem at hand; I'm no good when a refined, elegant application is called for.

      Perhaps this is also why I've never grown fond of sending man pages through grep filters: developing a comfort level with CLI tools requires effort, but it often pays off if you use the tools frequently. I like the way I can pick up a GUI tool after leaving it alone for six months and still know how to use it. If I left grep alone for six months, I'd forget what all of the command line options were, and then I'd have to read through the man file again.

      I have no doubt that if I was required to use CLI tools daily, I would grow to appreciate them as you have.

    4. Re:GUI dev tools are necessary by stripes · · Score: 2
      I don't like editing makefiles. I don't like meta-languages. I don't like switching back and forth between an editor and a set of development tools. My tastes in development are towards the simplest possible solution for the problem at hand; I'm no good when a refined, elegant application is called for.

      Other then the dislike of meta-languages, that's all fine. After all none of that will significantly lower your productivity as long as a decent IDE is available.

      However meta-languages are extremely useful, if you ever do anything in their problem domain. I first had to use lex and yacc in collage. I never used them before that, I didn't really pay much mind to them. The first time I was forced to use them lex seemed clumsy, and inefficient. Yacc on the other hand, even the first time I used it saved me a ton of effort. Now that I have used lex once or twice it saves me a lot of time as well.

      Of corse if your program never turns text into tokens, parses the tokens into something like statements....well then you won't gain anything form lex and yacc. Of corse now that I'm use to them I use them for things like config files where they can do far more then I need, but what little they are called on for they do with far more ease then writing the code myself.

      So if you will ever do anything like that more then, say, once, you should go out and try them. Enjoy.

      Perhaps this is also why I've never grown fond of sending man pages through grep filters: developing a comfort level with CLI tools requires effort, but it often pays off if you use the tools frequently. I like the way I can pick up a GUI tool after leaving it alone for six months and still know how to use it.

      You really remember what all those little icons on the tool bar are? I have to scrub the thing with the mouse to find out. Esp. next vs. step. Of corse I only remember what three grep options are -v (show non-matching lines), -E (regex), -l (show matching files not lines). I hardly use most of those, but I practically never use the others. So I have to skim the man pages once in a while too (more frequently for cvs, for things like making branches, or getting a revision by date).

      I have no doubt that if I was required to use CLI tools daily, I would grow to appreciate them as you have

      You might, they have a few advantages. But other then meta-programming they are not earth shatteringly large, and GUI IDEs have their own advantages. I just don't think they are worlds apart like many people do.

      I may even stumble across and IDE I like as much as the Unix CLI some day. This year I'm giving Apple's a try. IBuilder at least seems worth some time :-)

  84. AutoCAD is cool... right? by Webz · · Score: 1

    I know the above was refering to software development, but I think an environment like AutoCAD is extremely cool. It welcomes people who like point and click, and yet a lump sum of the features interact with the user from the command line as well. I wonder if that kind of setup can be applied elsewhere...

    By the way, my experience with CLI vs GUI has been... GUI does complex tasks faster than a CLI can, but for the basics, CLI can be used at a blazing speed for fast typists. The point-n-click strategy isn't cool when speed is a priority... But again, a hybrid is truly interesting.

  85. GUI by Recolada · · Score: 1

    Anything that can be done on the on the command line can be replicated with a GUI. But from the command line, you can't even get close to matching the productivity boost you get with a GUI. Setting breakpoints, opening files, watching certain variables becomes a matter of a half second mouse point and clicks.

  86. VISUAL STUDIO SUCKS... by tjuricek · · Score: 2, Interesting

    OK, now that I got _that_ out of the way, let me explain...

    First off, there are two things I like about Visual Studio, which tends to typify IDEs, and those are the dialog editor and the debugger. The rest of the bells and whistles really don't give me much. But I see this sentiment echoed earlier - most people like some kind of GUI tool for developing the actual GUI interface, and a debugger with lots of information at once capabilities. These things are not unique to Visual Studio, but here's one thing that is:

    Project Files.

    I've overheard that internally, the boys at M$ regard Visual Studio as more of a toy. Supposedly, instead they use a modified version of nmake. (Hopefully one that doesn't just inline files... man that's annoying.) I completely agree with this sentiment. While Visual Studio can import nmake files yet, nmake is about the only other option you have. And what's the other option?

    Project Files.

    If you have to generate any kind of sizable project, the Project File setup is about as irritating as it gets. For large projects, you want to specify 99% of the build rules necessary in one place, then when you want to create a new library, just specify what kind of target it is and let your build system fly. Project Files instead center most of their rules around the leaft projects. This just causes integration headaches like you wouldn't believe unless your developer staff is really disciplined.

    Not to mention, you're also choosing a build solution that is 100% not compatable with any other platform solution. NMake even doesn't port very sensibly to a GNUmake setup, mostly because it's really old version of GNUmake.

    Now, admittedly, you can reset the custom commands in Visual Studio, but then, it becomes a hassle if you want to provide more than just two targets (typically all, and clean). For instance, we like to remove the MIDL step from the generic sequence, so we now have an includes target on top of all and clean. All of a sudden, the folks at my job who are still using visual studio have to find a new button to map.

    On the other hand, most IDEs aren't as relagated like VS to a crappy build environment. Most can be edited, but personally, I'd still like to be able run a command line like XEmacs from the IDE. This is because we tend to create more targets (like test) and add components that aren't necessarily written in a compiled language. Make is just a handy tool for automating pretty much anything. I have yet to have an IDE that was extensible like this, and personally, this saves me way more time than having to use the integrated debugger or dialog editor. (WinDBG, anyone? And it's still fairly easy to whip out a dialog when necessary - and c'mon what percentage of your time is used writing dialogs?)

    So, in the end, I think that VS, which I would be willing to bet is the main IDE in use out there, does not save time at all in a large project. I've even heard that projects using VS don't even run baselines (which is probably because they're using VSS which doesn't allow you to retrieve whole projects set to a tag... what was M$ thinking?...) On my personal experience, projects that don't run baselines hit massive integration problems. Thus, I'm at the point of banning VS inside my company.

    On the other hand, if the IDE was designed to thinly wrap a make system, essentially being a powerful editor like Emacs with a integrated debugger, command shell, and dialog editor, I'd probably use it. But I have yet to find this tool.

    ... whew, that was one kind of rant...

    1. Re:VISUAL STUDIO SUCKS... by tjuricek · · Score: 0, Redundant

      OK, so a couple of statements were a little out of wack. Here's at least one correction:

      Yeah, NMAKE is not a earlier version of GNUmake, but most of it's features are at a state where GNUmake was a while ago - for instance, NMAKE has to inline files whereas GNUmake can include them.

  87. If you're implementing a lot of GUI... by osgeek · · Score: 2

    Take a look at the development tools for MacOSX (the ones they got from NeXT: Project Builder and Interface Builder). The way that Interface Builder allow you to almost completely separate the GUI of your program from your data modeling code is beyond amazing.

    I can't believe that the computer industry has been so slow in copying it.

    1. Re:If you're implementing a lot of GUI... by n1tr0g3n · · Score: 0

      Glade is similar in performance and separation, and is more portable (due to its use of Gtk+).

  88. Still having slow news days here? by scrytch · · Score: 1, Flamebait

    From the "i-dunno-better-beat-that-horse-til-it's-disassoci ated-atoms" department...

    Basically the guy told me that it is impossible to create 'state of the art' programs with command-line tools. ...

    But when I asked him to give me reasons why he just called me stupid and 'behind the times'.

    I would simply call you insecure. He finds it impossible to create state of the art tools with CLI, you interpret it as a direct personal attack.

    Considering he was an avid supporter of anything Microsoft, I take what he says with a grain of salt.

    We all know any argument that comes from a supporter of Microsoft is instantly void of logic or or any merit whatsoever.

    [snip]

    I am personally writing code for Soar (a symbolic AI language) in xemacs then importing it into a Tcl-based environment where I type things into the console like "print somerule" that dumps out a rule, then right-clicking on operators to generate more print statements, at which time i hilight some of these print statements and copy and paste them into a notepad window. And on windows, so process that, CLI boy.

    --
    I've finally had it: until slashdot gets article moderation, I am not coming back.
  89. In the land of Macs... by Anonymous Coward · · Score: 0

    In the land of macs, where they originally tried to banish all things not GUI driven, even there, in the 80's revolution, the primary development environment was MPW, made by Apple itself, which, of course, was the command line environment for doing Macintosh development; an embarresement to some in the Mac community that felt it inelligent and somehow not fitting of the GUI vision, but it proved essential to get any serious development work done on the platform.

    If even there, where in all other things, command line driven interfaces were banished, it proved nessisary, essential even, to do development work, then I say the CLI has a long future ahead...

  90. depends what you are doing by josepha48 · · Score: 2
    It really depends on what you are doing. For anything server side, there really are few GUI tools that can optimize the code to make it fast. How many server side GUI tools do you know of that output kernel code? How about clean readable C?

    If you are doing GUI develoipment like a user interface, then maybe this is true. If you are using something like PowerBuilder, Symantic Visual Crape oh I mean Cafe, Visual C++ or Visual Basic or something like that. Few GUI tools output optimized readable code. When the GUI screwes up it can be a real pain to debug. Trust me I have been there done that.

    CLI can be effective for somethings as well especially in the case where the server is remote and you are using telnet or ssh to get to the server. There are editors that will open telnet/ftp for you and allow you to edit remotely.

    Personally I like to use a program that does syntax higlightening with code completion. Outside of that the GUI's are pretty crappy IMHO. This to me gives me a somewhat happy medium. I get readable code with code completion and can limit the bloat. I can use the GUI help (many tools seem to lack that) to tell me the syntax of commands I don't know, which is very useful.

    --

    Only 'flamers' flame!

    1. Re:depends what you are doing by n1tr0g3n · · Score: 0

      vim can open up the man page for any key word under the cursor, if it exists (not sure of the key sequence, though). It can also find the include or source file where the word under the cursor first occurs (which is usually the function definition, although sometimes it mistakenly finds comments) by pressing ^w, i.

      OT: Let me guess? It's a Score:0 post! Apparently I've got on the bad side of the auto moderation system. Must've been that comment I made about RasterMan...

  91. I once used a text editor that sucked... by Anonymous Coward · · Score: 0

    ...therefore I have sworn off all text editors.

  92. CLI and GUI can be used at the same time by melted · · Score: 1

    That's like most of Windows software companies do: they use GUI tools for developers and CLI for nightly builds. GUI tools are invaluable when you program, just because most of them contain something like IntelliSense, so you have no need to memorize thousands of methods and API calls, you don't need to type them fully, you don't need to memorize the list of arguments. More advanced GUI tools (like Visual Studio.NET IDE) will even highlight some of syntax errors for you AS YOU TYPE. After compilation you have direct access to the places where errors were found from TODO window. I'm not even talking about integrated debugger and MSDN - these two are life-savers. Many people don't know, but in Visual Studio integrated debugger you can change the text of your program as you debug it, and, after performing minimal recompilation, you can CONTINUE debugging it without shutting debugger down and repeating all the steps. I'm not even talking about server browser and integrates SQL utilities. I see clearly, that developer doubles his productivity just by using GUI tools. But when it comes to nightly builds... Man you have to build them on 4-proc server and this is where you need make utility and CLI. Fortunately all GUI tools I'm familiar with offer command line builds. Literally, you get the best of both worlds.

  93. Demoscene thinks otherwise by yerricde · · Score: 1

    Maybe I'm missing something, but what's the beef with a 100K program?

    You can't enter a 100 KB program in a 64 KB demo competition. However, you can enter a well-written 64 KB demo in an 8 MB demo competition.

    --
    Will I retire or break 10K?
  94. Have to get away from the command line... by TastyWheat · · Score: 1

    The fact is that command line programs can't take as much information in in as much time as a GUI interface. Making windows and graphics is notoriously easy compared with trying to type out a GUI like file for the description of that graphic. We need to be able to intuitively communicate a high bandwidth of information to the computer and the command line is archaic in this. I have written an AI program that will track objects. Its very complicated, so the best way to present the interface is thru a GUI. Command line would drive you nuts. The next step in GUI is a virtual 3d GUI where you can turn in 360 degrees and grab your documents with your hands. Point with your hands, etc... This type of interface will present an order of magnitude more information to the user in a smaller time period.

  95. How about the reverse? by mattro · · Score: 1

    Chalk up one more developer (me) who has gone the other direction--giving up gui devel tools for command line versions.

    Bash + vim + make >= GUI+ IDE (IMHO :)

    1. Re:How about the reverse? by Drizzt+Do'Urden · · Score: 1

      As to reverse.. there is one GUI tool that really improve productivity (talk to OmniGroup for that ;) ).

      It's InterfaceBuilder.

      Mix it with the hole Developper Tools from Apple.. and you have a "free" and easy to use Developper Kit.

      As Steve jobs said in the demo back in '97... The line of code the easier to maintain and debug is the line of code the developper dever had to write!

  96. Programmmers create code, Clickers Push a Mouse by Anonymous Coward · · Score: 0

    >>'why the hell would I do it in vi, when I can click on a few menu items and have an editor write all the code for me'

    Because you might have enough pride in your work to actually want to write your own code, rather than letting a machine do it for you?

    1. Re:Programmmers create code, Clickers Push a Mouse by Anonymous Coward · · Score: 0

      I too like having some code generated for me. For example, when developing a gui app, it is easier to "draw" the interface. The meat of the program is always in the code, the generated interface is never(in my experience) buggy, and I can do the interface in a third of the time.

    2. Re:Programmmers create code, Clickers Push a Mouse by Billly+Gates · · Score: 2

      John Carmack, creator of doom, and quake1, 2, 3 and probably one the best programmers in the world prefers ide's over editors like emacs or vi. So I do not think its code creation per say that programmers like but its nice to have class views of your c++ project files as well as msdn which comes with visual studio. This is what alot of programmers like about them. I am sure quake is huge and these ide's are great for organizing lots of different files and viewing multiple classes.

      However, I see alot of so called programmers who know dick. They like to edit, cut, and paste code and use tools to create it for them. I agree this is a bad practice that makes poor programmers. If you do not know how to code something you need to learn how to do it yourself. Or if not, take a look at some code and retype it yourself and learn it and not cut and paste it.

      When I wanted to learn Java, I tried Sun's Forte. I hated it because it kept generated code to do things. I then switched to VIM and got a few good java books instead and learned how to do them maunually. My ideal gui would be one which had a cli editor in it but was integrated with things like online documentation and class views. Kdevelop is the closest thing to this. I would nix the automantic code generation though. It does not take alot of code to generate some buttons anyway and would increase long term productivity if the programmer had to learn some essential functions himself.

    3. Re:Programmmers create code, Clickers Push a Mouse by Hast · · Score: 1

      Just FYI the original Quake, and 2 and 3 as well I think, are ANSI C. Not C++. But the general idea is the same though I guess. I personally also think it's easier to code when I have a mental image of how everything is hooked up together. GUI's are generally good for this.

      However, I have found that it's often easier to jot diagrams like this down by hand. None of the tools I've used have been good enough to give me the views I wanted and at the same time stayed out of the way when I wanted to get some work done.

      Personally I don't like programs like Visual neither. That is, when you are more or less dependent on the GUI to get any work done. That annoys me immensely.

  97. Only real difference: the debugger by orange7 · · Score: 1
    As others have pointed out, it's a horses for courses thing. GUI IDEs have tended to get new features like syntax highlighting and symbol lookup completion/browsing first, but hell, even versions of vi have syntax highlighting these days. Plus symbol browsing in MSVC just breaks on large projects -- it's best to force it off. Doxygen has made more of a difference to my ability to quickly navigate a large code base than any IDE ever did.

    The one exception is this: almost all graphical IDEs come with a kick-arse visual debugger. It is so much easier to track down a bug by stepping through code with a decent variable-watch window and all the other bells and whistles you get that it's not even funny. Unix command-line debuggers are back in the stone ages by comparison. You get forced back into debugging-by-printf/cout hell.

    When I'm doing Linux dev work, I use makefiles and a simple text editor, but for debugging I fire up kdbg (used to be DDD), just because it's so hard to go back to command-line debuggers.

    Oh, and veering wildly OT: Good lord, are we *ever* going to get precompiled headers for g++? It's pretty much useless for large projects without.

    A.

    1. Re:Only real difference: the debugger by Anonymous Coward · · Score: 0

      Yes, precompiled headers are coming. They sort of work already (in the 3.1 CVS tree), and they do indeed give significant speedups for C++ code. Expect them in 3.1; if not then, they'll come sometime, because we need something like them (but different in some respects) to get `export' working. (And no, that's not even on the drawing board yet.)

  98. A Case for GUI Interfaces by Cr3d3nd0 · · Score: 2, Insightful

    For all our defense of command line interfaces and general disdain of Visual Basic, it must be said that almost always, a GUI interface is easier for a non-geek to use. Something that I feel is often neglected by coders and other techie types is the fact that not everyone can understand the concept of computer use. I spent a the majority of my freshman year in college working as a lab assistant in a community college Open computer lab. Every day I would see people of all ages come in and try to undertstand how to do even the easiest tasks on a computer like typing a paper, sending e-mail and even getting rid of the screen saver. Those of you in the tech support field know what I'm talking about, because when something goes wrong, they react with fear and often anger (How many people have YOU had call up to scream and yell at you, and THEN ask how to fix the problem?) Command line is fine, and for those of us who KNOW how to use a computer without having to think about each step, often better because it offers much more flexability, but often we are not the ones using these programs. Those that do need to have access to all the available features, in plain English, at the push of a button. I now run a little database design company, and yes, I use VB to get the interface to look as much like a Microsoft product as I can, not because think that Microsoft's products are supperior (After all I HAVE used Access *shudder*), but because everyone knows these interfaces. Standards don't develop because they are the best or the most stable, they develop because it's what everyone knows.

    --
    This is not a sig
  99. It all depends... by HiThere · · Score: 2

    If you just want to do what the designer of the IDE (N.B.: GUI or not, unimportant) wanted you to do, then the IDE will be faster and easier.

    If you are designing a GUI interface, then a GUI tool will save you untold amounts of grief.

    In other cases, it doesn't seem to matter. A well designed IDE will make it easy to get help on various features, and may be language, and even, to and extent, library aware. And certainly syntax highlighting is a real bonus.

    On my current project (development on Win95):
    Language: SmallEiffel
    I am using the tools:
    GWD Editor: This is where I do the coding
    SEED IDE: This knows about what classes are available, what their features are, etc.
    SmallEiffel: This is the compiler
    CygWin: This is the execution environment. (Because it allows me to re-direct standard error to a text file, for picking up with GWD Editor)

    But I'm not doing GUI design. If I were I'd be using Object-Tools VisualEiffel or ISE Eiffel. ISE would drive the cost up by about $1,000, but would probably be easier to use. Visual Eiffel would entail figuring out how to use their dialog builder. None of these would be portable. Portable would require using Glade on Linux, and figuring out how to make the code work on Windows.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  100. It's often all about code generation by dmorin · · Score: 2

    Think of it this way -- if 90% of my time I generate the same 100 lines of code, and a GUI gives me a button that will generate those lines for me, then it is faster for me to do it that way then to type it into a text editor every time. However, I think that's where the mistake likes -- GUI people tend to think that us CLI people are always typing shit into Emacs. They don't realize that most of your editors can do the same kind of code generation that a GUI can do. I think the only thing the GUIs have ever been better at is situations where you want to visualize what you're building without lots of compiling loops in between - such as screen painting, in the Java world. It's very hard to get a layout manager just right when you have to compile and run every time just to see it.

  101. Bad example by DVega · · Score: 1
    Try to write apply the program X against all n files ending with .x, In the Dos box? Impossible but entering n times the command, in windows explorer? possible but nasty, since it requires you to select all .x files seperatly, in a bash shell? No problem just write
    for i in *.d; X $I; done
    for i in (*.d) do X %i%

    I know a bash shell is orders of magnitude superior to a DOS command prompt. But your example was inappropiate

    --
    MOD THE CHILD UP!
  102. Coding for Chips by Jecker · · Score: 1

    I am an IC design engineer and we use all CLI for design and verification. The most GUI we use is for signal waveform veiwing after simulation. There are the occassional gui interfaces for configurations for some tools but for code creation command line interfaces are better for us. Such editors like VI and emacs are still holding strong where I work. No one has even mentioned bringing in a IDE of any sort.

    -J

    1. Re:Coding for Chips by Anonymous Coward · · Score: 0

      Um....dude, I told you not to blow off that meeting Thursday morning. Let's just say "hope you like surprises" ;)

  103. GUI tools simplify debugging and GUI building by esnible · · Score: 2, Informative

    GUI tools are wonderful for tasks like creating user interfaces. Most GUI tools don't scale very well, though. When I build user interfaces in Java I code all of the layout manager stuff by hand rather than using the tool in Symantec's expensive environment -- it isn't good enough. Glade http://glade.gnome.org/ is good enough. It's wonderful. Does anyone write libglade XML by hand?

    I also like having an editor that respects my breakpoints and adjusts them when I move code around. I learned how to program in assembly language and it seems natural to me to inspect registers/variables and change code while it is running.

    Color syntax highlighting, dialogs to set compiler options, integrated icon editing, these features I don't *need* but I don't mind a pretty environment as long as it is designed as a view into the command line tools rather than a replacement.

  104. hmm...State of the Art... by Zard+Biomatrix · · Score: 1

    oh,i don't know... let's think about this one.

    in order to create State of the Art(tm) code, i need State of the Art(tm) tools with fancy buttons and little blinking lights.

    but wait...

    Uh oh...

    where did these State of the Art(tm) development tools come from?
    conclusion: State of the Art(tm) programs do not exist, because they require State of the Art(tm) development tools. this is a paradox. please reboot now.

    seriously, though, i think the issue comes down to TIME. Fancy development tools are supposed to save TIME. but you know, i use command line development tools, and hitting the (up) arrow takes about as long as it does to click on a button.

    you know, forget all that. Fancy development tools suck. Command line Rules. yeah.

    /zard

  105. It Depends on the customer by battjt · · Score: 1

    I disagree.

    The customers on my last 5 GUI projects, ok all the GUI projects in my professional career, had such demanding GUI requirements that we couldn't build the app with a screen painter anyway. We built some prototypes with RAD tools, but then had to hand code MFC, OWL, AWT or Swing interfaces.

    I've used VisualAge, VisualC++, VisualCafe, BorlandC++, Delphi, C++ Builder, and JBuilder and found this to b true in all of them. My most productive tools are API docs, emacs (but any complete editor like jEdit or vi would do), and a comand line compiler (debuggers and profilers are nice, but optional).

    Joe

    --
    Joe Batt Solid Design
  106. Visual SlickEdit is great... by Anonymous Coward · · Score: 0

    Flexible & distributed in *nix/Win environs. I've payed for many upgrades under both Linux and Windows. Quality tool...

  107. Different strengths by Anonymous+Brave+Guy · · Score: 2

    This is a very odd discussion. Some people seem to be thinking of their favourite IDE compiler vs. their favourite CLI compiler, for example.

    I think the merits of the IDE vs. the command line are actually quite simple. A good IDE will provide useful tools to help find your way around your code. This may not be necessary for a typical /. hacker, but it's essential to working on large-scale projects in a team of more than one. For example, IMHO Microsoft's Visual C++ shines in this area. It provides quick and easy-to-use tools to jump around a long file, or between files in a project; I can find definitions of things, references to things, or a list of base classes or derived classes for the class I'm working on with a couple of mouse clicks. I also find things like syntax highlighting to be useful. I don't much care for the v6.0 compiler itself, but the IDE is undeniably useful in my line of work.

    Of course, you could argue that a nice Emacs set-up or some such could also do these things. But the fact is that with a proper IDE, they're already done. By the time you've programmed this all into your favourite highly-customisable editors, aren't you just working in your own IDE anyway?

    On the other hand, when we build our MLOC project with VC++, we use our own script files to do it, calling good ol' CL.EXE to do the compilation. Why? Because it gives us the level of control we need, and is easily changed. The project/workspace system used by VC++ isn't up to the complexities of our project when it comes to getting builds done safely and efficiently.

    And here we see the key difference. IDEs can be very helpful for reading and writing code: good tools in an IDE can make everyday tasks easier than any CLI toolset I've ever seen could even dream of. But no IDE I've yet seen matches CLI for its scripting abilities and fine control over the build process. Both are important. In today's world, a compiler that provides both an IDE and a CLI is a good solution. In an ideal world, I'd like to see an IDE that allows the build process control of a CLI without the need to drop into independent scripting. Surely such a tool can't be far away.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  108. Most IDEs are stupid (shameless plug) by brianstoler · · Score: 1

    The problem with these discussions of IDEs vs. CLI tools is that most IDEs contain so many features (most of which no real programmer wants to use) that the tool ends up getting in the way more than it helps.

    <shameless plug>
    This is the motivation behind the research project I'm a part of, DrJava, to create a simple but powerful Java IDE. (I don't want to hear about Java vs. other languages, we are only targeting Java.) DrJava is targetted most specifically at beginners, but it's pretty useful even for experience developers. It's also in active development and getting new features every day. (See the link for more info, including an academic paper describing DrJava's rationale for teaching students.)
    </shameless plug>

  109. IBM Visual Age products... by RGreene · · Score: 5, Interesting

    We've been using Visual Age for Java (VAJ) at work for nearly two years now -- and it's really awesome. I hate to say it, but I'd prefer to stay within Visual Age instead of the command line. I was/still am a command-line jockey, obviously in Unix, but also in Windows.

    From my quick skimming of the responses, people miss an important point: most tools (visual or otherwise) seem to require a compile to identify and fix errors - just general typos. VAJ not only does incremental compile of whatever method you are working on, but it also keeps all classes in synch. Huh? As I code, I'll code a method I know won't be correct. It'll show a funky red 'X' next to the method. As the methods and attributes get finished off, the 'X's go away. Not too much of a big deal, since that is within one .java file. However, that is working across all classes that are loaded in the workspace. Realtime. As you type it. Wanna rename a class? Not a big deal - I save, look at the errors tab, and I can edit right there, change the name. Actually, the tool will do the rename also. But, anytime a class is restructured (renamed, moved, split, combined, removed, etc) you just pop to the errors pane and fix. Not a big deal. You know the impact immediately.

    Every piece of code is versioned. Down to the method - really cool if you've messed up a method and need retrieve a prior edition. You can compare different classes, different editions of the same class or method. Locate all references of a method or of a class or all implementations of an interface.

    This tool was originally developed for Smalltalk, so it's geared for those of us doing OO. But, it's extremely useful. There are versions for C++, Java, Smalltalk, ... even RPG (ug). Unfortunately, the only trial edition available is for Java -- I use it at home I love the tool so much. It's also available for Linux, but unfortunately, that version is behind the Windows tool. The Entry edition (aka trial edition) is not time-bombed or anything - just limited to 750 classes that you add. That's quite a few, to be honest. And, as projects complete, I think you can just drop them off of the workspace and that resets the 750... although the basic edition costs less than $200.

    Oh yeah, I'm not doing GUI development. Web development - a lot of it is framework (persistence, control, etc). Other developers are building messaging components (MQSeries). Just as an FYI that I'm not doing GUI drag and drop development. Not at all!

    For those of you doing Java - bounce to IBM's site and try it! Give yourself some time to adjust... the big difference is that all code is housed in the repository. It doesn't sit in the filesystem. This is not a bad thing -- it enables all the cool features that make VAJ unique. You can export or import Java code - JAR or file system - when you need the Java source. You can connect to many types of version control software if you want or need to (I use CS-RCS).

    The next version of VAJ will be called WebSphere Studio Application Developer. This will work from the filesystem - this will probably be good for the general acceptance of the tool (IBM kept getting clobbered in reviews because of the repository). However, I have a slight fear that this may end up removing a lot of the features that make Visual Age for Java such a strong development tool.

    IIRC, Visual Age for Java won the Jolt award in 2000 and WebSphere Studio won it in 2001.

    1. Re:IBM Visual Age products... by Salsaman · · Score: 2
      Yeah, VAJ is a wonderful IDE. And the beauty of it is, it looks and feels *exactly* the same on Linux and on AIX (probably NT too).

    2. Re:IBM Visual Age products... by jsrodrigues · · Score: 1

      I have just begun to work on VAJ, coming from a UNIX command line environment. I have done a lot of Java development using the JDK and command line tools.

      VAJ is quite frustrating for me presently. It gives me the kind of feeling you get when you switch from driving a stick shift to an automatic. Loss of control.

      The IDE generates a ton of code and presents a visual information overload... ALso getting rid of stuff is tedious... you have to delete from the workspace, then the repository and then compact the repository to get rid of stuff..

      Then there is the concept of the repository, and their justification for it is that files are troublesome to deal with... DUH?? I have written tons of C++ code.. and used make... never had a problem... also should your repository on Windoze get corrupted, you are screwed.. repositor backup is all or nothing.. you cannot fine grain it...such as limit it to a few files... And then there's the workspace vs. repository concept.. and try doing remote development over a dialup and try downloading a remote repository.... you will be screaming for files...

      Ok.., I'm done bitchin...

    3. Re:IBM Visual Age products... by PhiRatE · · Score: 2

      I would try it, but the only release for linux appears to be 3.02, and they've released v4.0 now, not to mention the next generation Studio product. Whats with that?

      --
      You can't win a fight.
    4. Re:IBM Visual Age products... by Spiritwalker · · Score: 1
      Check out www.eclipse.org or for one supported product using the universal tool platform check out WebSphere Studio Workbench. or the source OTI .

      [self contents apply: Disclaimers standard] fork.

    5. Re:IBM Visual Age products... by leifw · · Score: 2, Informative

      Last fall I and 2 other guys participated in an ACM programming competition. The allowed editors were VAJ, VAC, vim, and emacs (oh and notepad if you were horribly sad) (oh and you could use Delphi, too). For the small quick algorithm intense work we were doing, using vim configured to compile and debug java was incredibly quick and was certainly an edge in helping us to win. VAJ/VAC is just too bulky for just trying to whip something out and runs alltogther too slowly on a typically underpowered university lab computer, in my experience.

      Caveat: Of course most development doesn't happen under the conditions that I described above.

    6. Re:IBM Visual Age products... by chris_7d0h · · Score: 1

      >The IDE generates a ton of code..
      The IDE does not produce one line of code if you don't instruct it to do so (ie. by using wizards, the GUI composition editor, the automatic class or method wizards etc.).

      You have 100% control over what code is produced in your classes.

      >..and presents a visual information overload...

      Information overload? I feel it presents just the information one needs.

      >ALso getting rid of stuff is tedious... you have to delete from the workspace, then the repository and then compact the repository to get rid of stuff..

      I do wonder what you are doing to see this as a problem. Are you importing millions of lines of code and throwing them out each day?
      The repository is not much unlike in esscance that of for ex. Rational ClearCase / CVS / RCS. You can add and subtract (delete) things from your view (workspace) as you see fit. The point of the having a repository is to be able to backtrack to earlier revisions and help manage team development. None of the current VCS that I know of deletes a corresponding object from a repository when you delete it from your work area.

      > Then there is the concept of the repository, and their justification for it is that files are troublesome to deal with... DUH?? I have written tons of C++ code.. and used make...

      You don't need make when using VAJ. you can simply export complete JAR files instead!?

      > This is true, but for ex. should your CVSROOT files in your CVS repository get corrupted, you are just as scr*wed without a backup.

      > And then there's the workspace vs. repository concept.. and try doing remote development over a dialup and try downloading a remote repository.... you will be screaming for files.

      This is not a problem. Simply tell VAJ that you will be using a shared repository and give it the IP/servername to the server hosting it. If you need, say 200 classes from the repository, it would take just as long downloading them in file form as it does from the remote Team Connect repository.

      --
      In a society that believes in nothing, fear becomes the only agenda ~ Bill Durodié
    7. Re:IBM Visual Age products... by Bodrius · · Score: 2, Interesting

      I had the unfortunate experience of depending on IBM Visual Age for Java for a while.

      While I agree that some of the features you mention were very convenient (the way it synchronizes the classes in the workspace and the export features particularly), very frequently Visual Age was a real nightmare.

      The main issue I have with the system is its very vague (if not plain incompetent) "error checking" features when writing code on the class editor.

      It's quite annoying to spend some time writing hundreds of lines of code just to be unable to save the class because I missed a semicolon or parenthesis SOMEWHERE, with no clue as to where it could be. "Unable to compile class because end of statement missing" is not a complete description of a problem. Even the CLI compiler gives more information than this.

      I also don't understand the lack of syntax completion for the classes. Not that it's vital to write good code, but it could save some of us a lot of typos (length() vs length(), ridiculous but it happens a lot when typing quickly) and time, particularly with Java's verbosity (ArrayOutOfBoundsException anyone?).

      Also because there is no reason for it to be missing on a product like Visual Age.

      I ended up having two IDEs open: Visual Age for managing the projects and their packages, and JCreator to actually write the code.
      BTW, I recommend JCreator to anyone who has to code Java in a Windows workstation.
      http://www.jcreator.com

      Fighting to import a repository after changing machines was a waste of time (export to/import from .java works fine, but it shouldn't be the way to go).

      Having your development IDE run with the amazingly hasty speed of StarOffice unless you have a top-of-the-line machine gets irritating as well.

      Unless new versions have changed dramatically since I tried that thing, I'd recommend against using it.

      --
      Freedom is the freedom to say 2+2=4, everything else follows...
    8. Re:IBM Visual Age products... by chris.bitmead · · Score: 1

      I'm glad you like Visual Age, and I admit there is
      some cool technology in it. But at the end of the
      day I found it to be closer to junk than a jewel.
      When I found out about JBuilder and switched over
      I heaved a sigh of relief. Far and away better
      than Visual Age, which drove me crazy. Even after
      using it for a few years I never did like it.

    9. Re:IBM Visual Age products... by Skapare · · Score: 2

      You'd be surprised. Managers do seem to have the concept of negative numbers when it comes to deciding how long it will take to get a project done. "We promised this to the customer the last thursday before the last monday three weeks ago, so this needs to be delivered on time."

      --
      now we need to go OSS in diesel cars
    10. Re:IBM Visual Age products... by Anonymous Coward · · Score: 0

      I also don't understand the lack of syntax completion for the classes. Not that it's vital to write good code, but it could save some of us a lot of typos (length() vs length(), ridiculous but it happens a lot when typing quickly) and time, particularly with Java's verbosity (ArrayOutOfBoundsException anyone?).

      I've been using VAJ for the past three years, and it has always had this. C-space.

  110. GUI cvs Command. Why not have both? by robinjo · · Score: 3, Informative

    I've spent a fair share of time programming with CLI tools. One time I even wrote PC software remotely on Amiga complete with handcoding all the graphics. While you can automate a lot the question still is, why bother?

    As someone already pointed out in this thread, Delphi gives you both GUI and CLI tools. The GUI is just great when you're developing. Draw your graphics, set properties and doubleclick controls to write code. Especially debugging is fast as you are automatically sent to the error place. I just can't see why this would be a bad idea?

    The GUI sucks when you have to automate something, though. Like compiling customized executables from a set of patches. Visual Basic sucks especially bad here but Delphi shines again as it's command line compiler is excellent.

    So don't argue which one is better. Have both and use the right tool for the right job.

  111. Depends on the Tools by herbierobinson · · Score: 1

    I think it depends on the tools a lot and also on what you are doing.. For example, Codewarrior is really good and really fast. It's nice not to have to manually edit dependency lists in makefiles... The windowing debugger is cool -- very fast for debugging simple things, but I miss being able to script breakpoints (i.e., it's not so good at going after the really nasty bugs). For C++, the class browswer is a real time saver.

    ProjectBuilder (the OS X GUI development tools) is not quite as good. For starters, it's build on top of CLI stuff. The down side of that is that it's a lot slower and (as others have pointed out) not everything is implemented in the GUI and it has not provisions for getting at the CLI from the GUI. For example, you must stop debugging the program from GUI and run GDB from the command line if you want to use breakpoint scripts (or numerous other things).

    There isn't even a clear cut distinction between the two environments. Even CLI people use full screen text editors (which is a GUI of sorts). I don't see anybody using "ed" to edit files these days (I remember using UNIX when that was the ONLY editor..).

    --
    An engineer who ran for Congress. http://herbrobinson.us
  112. Graphical editors by MikeBabcock · · Score: 2

    I use gvim, fwiw, as a GUI development environment. One of the featurs of MS Visual Studio I'd love to have though is pop-up arguments assistance. If you enter, for example:

    if ((buf = malloc(

    then all of a sudden, "size_t" will pop up in a smaller font right above your cursor, to tell you malloc expects a size_t argument now. This is just one example of the fast assistance I've enjoyed when using VC++.

    --
    - Michael T. Babcock (Yes, I blog)
    1. Re:Graphical editors by AndyS · · Score: 1

      Except of course, that it only works about 40-50% of the time. At least for me.

      And it doesn't always want to show subclasses for me.

      Maybe I've done something drastically wrong, and I'd love to be corrected.

      Visual Basic does this nigh on perfectly, it must be said. Shame the language is so horrible, the editor is lovely.

  113. What I miss from Visual C++ when on a 'Nix by Trelane · · Score: 1
    • The Object Browser (mmm. May definitely be extended, though, and an independent program.
    • Autocomplete (It isn't required, but is sometimes verreh nice) I can definitely forsee this being implemented in Emacs, though.
    --

    --
    Given enough personal experience, all stereotypes are shallow.
  114. not this kid by Kalani · · Score: 1

    But the real reason that windows programmers swear by MSDev is its wizard system. MFC, the Win32 API wrapper with which most C++ GUI apps are built, requires a great deal of black magic. It uses obscure, undocumented macros to implement critical functionality. The only way to really use MFC is through the wizards, which take care of the macros for you.

    I use the VC++ IDE all of the time and none of the applications I've produced for work have been touched by a "wizard." I don't use the MFC (except in a couple of cases when people asked me questions about it -- and then I just consulted their documentation for the macros that were necessary to create a scriptable component.) All of the applications that I write are built on top of my own wrapper of the Win32 programming interface.

    I think that if you think that man beats the MSDN Library, you can't possibly be sane. :)

    --
    ___
    The ends are ape-chosen, only the means are man's. -- Aldous Huxley
  115. If your doing a gui app by gruhnj · · Score: 1

    A gui development enviroment is only as helpful as the code is visual. For a RAD enviroment, having a gui is esential, otherwise you miss the point of RAD. RAD lets you speed up by alot your development time by just draging and dropping your parts into place. Much better than spending alot of time developing a gui that really is not the point of your app -- the algorithim really need that time. Keep in mind though that if your compiler does not make good code, all the gui effort is wasted. MS VC++ can be an ok development enviroment, but the compiler in it sucks as its no ANSI complient and probably never will be thanks to MFC. Oracle Jdeveloper on the other hand lets you use and installed JDK on your system to compile the code, so you get the best of both worlds. If it's a command line app you dont really get much out of the gui other than not having to fire up a new shell.

  116. GDB-Insight by PrestoChango · · Score: 2, Insightful

    I'm a big fan of commandline tools, but every-so-often a GUI is needed. GDB is a prime example. It's a very powerful debugger, but lacks a few of the features that the Insight GUI gave me. I could look at the flat code (without prompts inbetween statements) and also click through some of the complex datastructures inside my program. This was invaluable. I don't even want to think of how hard it would have been to debug on the commandline.

    Bottom line: The power is in how you use the tools, not the tools themselves. People who argue about which is better have lost sight of the real goal to programming. Productivity.

    Use what works.

  117. Silly question by Ironpoint · · Score: 1

    haxor: I don't use a gui for my programming all I use is emacs, a file manager, and a makefile.

    emacs = macros + syntax highlighting + editing
    file manager = workspace view
    makefile = workspace file


    IDEs build upon the CLI. Its not correct to compare an IDE to a CLI since they do different things. The IDE takes the place of the above things and ads functionality, so you can't correctly say its more advanced. That said IDEs allow much more productivity and ease of use. If you train yourself to navigate the fileystem quickly by memorizing your source tree, then you can gain some of the usefulness of an IDE, but lets face it. In a project with several thousand source files being modified by a dozen people, this isn't going to cut it. A colleague might have added a new directory structure that you can't effectively navigate.

    In addition, IDEs provide language specific advantages. Visual Basic does syntax checking while you're editing. Visual C++ does autocomplete and has an oft overlooked feature called WizardBar. I hit control-n and it adds a new function to my object in both the .h(pp) and .cpp files. Then theres the tooltips that show me what the return type is and arguments for a function.

    No one can argue that ides add significant functionality to the programming environment. The question of CLI vs IDE is moot since they don't provide the same functionality. One compliments the other. A better question would be: editor+CLI+makefile vs IDE. In that case I would say that IDEs will always provide more features with less pain.

    Unless you program with edlin or debug or something similar then you're not doing true command line development.

  118. Having used both... by awol · · Score: 1

    I have worked with two applications both in excess of 600,000 lines of code. One the C++ (GUI developed) front end to the other, a C (CLI developed) transaction engine.

    No GUI I have ever seen helps with the development of the transaction engine, however a GUI layer over the top of GDB (al la ddd) makes life much eaiser when debugging.

    Make and Makefiles (well gmake at least) are the only way that I have used that comes close to managing projects of that size even remotely effectively. There is some talk of alternative "make" tools that use a different logical basis but whilst interesting I have never used them and so feel unqualified to comment.

    I despise the GUI approach to "configuring" ones build environment, dialogs and the like are not the way to accomplish this. But the ability (via keyboard or mouse) to jump around in the codebase is a feature that makes GUIS almost worthwhile

    What does this mean. Well I thnk there are several implications. First the GUI approach does not lend itself to the engineering of software. And by this I mean the creation of a resuable infrastructure of software tools that can be used and reused on an ongoing series of large scale projects over the lifetime of a software development organisation. Second, access to an intuitive code navigator is a cricital feature of software analysis and a GUI IDE is a relatively elegant way of achieving this. Finally that major projects will best be built using a non graphical process since the GUI is designed for Us and not for processes. This last point is best illustrated by thinking about how even microsoft builds their nightly versions of Win???, i cannot imagine that they have someone who hits build on a copy of Visual studio before they woalk out the door for the evening. So even in the hallowed halls of redmond does the CLI approach most likely ring loud.

    Just a few thoughts :-)

    --
    "The first thing to do when you find yourself in a hole is stop digging."
  119. so few get it by madmaxx · · Score: 1

    cli apps provide two basic constructs:

    1. a componentization model and interface
    2. a user interface

    the power of cli apps is the fact that both the programatic interface to the component model and the user interface are the same thing! the user interface mecanism provides a 'quasi' natural language interface (which can be quite productive), and the programatic interface provides a convinient way of putting components together for solving problems.

    what i don't get is how gui-centric ppl can't see the simple advantage of cli (at least for server/backend components). the same interface gives you a programatic interface (in all languages), and a simple user interface. what a bonus ... you learn the user interface, and you know the programatic interface. few component models are so easy to interact with.

    are clis the end-all of user interfaces? of course not ... but they are a useful tool, and a powerful paradigm for componentizing software.

    --
    mx
  120. Nothing Beats CLI for Java Development by Anonymous Coward · · Score: 0

    I've tried Cafe, Visual Age, JBuilder, and Forte for Java development, but nothing beats Visual SlickEdit and Ant as my development choice for Java.

  121. My 2 Cents... by Anonymous Coward · · Score: 0

    I have learned through experience that using a GUI can be VERY helpful when building a GUI. For instance, VisualAge for Java automatically produces GUI code within a fraction of the time that it would have taken me had I wrote it myself. I was sceptical when I first tried it since I don't like having "automated" code in my projects, but most of the time we are all pressured by release dates etc. But for non GUI work, give me any text editor and a big cup of coffee!

    SF

  122. GUI in Unix? by Anonymous Coward · · Score: 0

    As I understand here are that some people advocate a GUI development tool when you're writing GUI apps and a command tool developing something without a visual interface. ???

    Nothing is more difficult than writing a good complex GUI app, almost you could call it an art form. And as I never ever seen any good graphical GUI app in Unix/Linux in all my life I think the people in Slashdot are not qualified to have any opinion about this whatsoever.

  123. A few issues by Matthew+Weigel · · Score: 2

    There are quite a few issues bound up in GUI/CLI development wars, and here's my take on a few of them:

    • IDE, versus separate command line tools: In general, an IDE is essentially an interface designed with the programmer in mind - it accelerates common tasks that a programmer might want to do. In general, the command line is an interface that put some thought into shell programming, but not (e.g.) C programming. Debugging and compiling is nicer in an IDE (and this includes emacs in cc-mode), and a good IDE will handle context-sensitive hypertext in a useful manner (providing the function signature of the function name you're typing in, for example), which will make you more productive in the programming phase. The problem is, a GUI can generally accelerate tasks for which it accounts but can do very little to let you do tasks for which it does not account. So programming with an IDE will probably make you more productive, but the command line can never be too far away. Contrariwise, half a dozen xterms is a very powerful, generic interface that lets you be quite productive in activities surrounding typing in code. Depending upon one's familiarity with the command line, either one is very good.
    • Developing a GUI through a RAD tool, versus building it programmatically: quite simply, if you're trying to develop a GUI, then use a GUI. NeXTStep/OS X's Interface Builder is the top of the line for this, but most tools are good enough that you will be far more productive putting the interface together through a RAD tool than you will be trying to describe the interface in code. Here's a simple test: how do you design the GUI? Hopefully, with a pencil and paper - if the GUI accounts for Fitt's Law, information prioritization, etc., it's just a lot easier to figure out how things should look by drawing it. Now, which is easier - dragging interface objects around to create a usable representation of that GUI, or specifying the layout piece-by-piece in your code? There's simply no comparison, a GUI-building application should be considered necessary for building GUIs.

    My general solution? I use whatever editor is accessible in xterms (or Terminal.app windows) for most of my programming, I use emacs, joe or Project Builder for compiling and debugging, and I use Interface Builder for building the GUI. I can do everything but building the GUI anywhere I find myself, at any computer (and I hop around quite a bit so it's a definite gain over restricting myself to a GUI IDE), and I am able to leverage my knowledge of text editors (held over from writing a lot of non-code documents) in writing code.

    --
    --Matthew
  124. gui=text mode by perler · · Score: 1

    as far as programming is concerned, the question is a no brainer:

    why should i limit my field of editing to a 80x25 character display when i can have the same functionality /and/ some information to the right, the left, top and bottom of my editor window?

    question is if you have the same keyboard comfort in kdevelop as you have in emacs (for instance) - but you can't dispute that all modern IDE's have customizable keyboard shortcuts and even (imperfect most of the time) emulations of other editors...

    so what, take a GUI...

    regards,

    PAT

  125. Good GUI tools are better for productivity by awl · · Score: 1

    ...and a good CLI environment will beat bad GUI tools.

    Of course, it depends exactly where you draw the line. Emacs, for instance, is a GUI tool by my definition (e.g. it has menus), but it has been referred to in this thread as a CLI tool. Even vi is somewhere inbetween (surely a CLI purist would use a line editor like ex ;-)

    I really don't think many people would argue that visual editors and graphical debuggers haven't improved productivity. I've used purify with and without a GUI, and with is better.

    For IDE's, I think it is less clear cut. For projects that fall into the shape the IDE designers envisaged they can be quite cool, but command line tools have wider boundaries and are easier to extend (e.g. incorporating your own script based code generation tools into the project build systems.

    Finally, tools that offer both options generally allow you to choose the right tool for the job - I still want to be able to type debugging commands in at the command line in my graphical debugger.

  126. What about UML modeling tools? by Mindbridge · · Score: 3, Informative
    Most of the people here seem to equate GUI development environments with RAD tools for fast building of UI forms (dialogs, etc). [I do not mention the "IDE aspect" here, since few would call Emacs a GUI tool, but it can be a full featured IDE nevertheless]

    There is another class of GUI tools, however, that allow you to incorporate UML diagrams within your design and development process. I guess that the two programs that best represent this class of "modeling tools" are RationalRose and Together.

    RationalRose is more popular, since it was out first, and essentially set the standard, but it supports only a one-directional process (unless that has changed recently) -- design your UML diagrams, and generate code from them (some OO people actually see this as an advantage, but that's another discussion).

    Together, on the other hand, is bi-directional -- it constantly updates the UML diagrams to keep them in sync with the code you are writing. As a result it has the neat property that you can actually write your code w/o going through the UML modeling/design stage, and yet you get complete UML diagrams of the code when you are done.

    Personally, I am ambivalent about the utility of RAD tools for building GUIs -- they can be great for quick prototyping, but on the other hand they tend to produce code that is not very maintainable and thus not too suitable for large commercial application (although a lot of people are so used to them, that it is hard for them to see the alternatives).

    On the other hand, UML modeling tools can be tremendously useful, especially in team environments. A picture is worth a thousand words, and that is very true even in programming. Even if you do not use UML for design, Together's ability to generate diagrams representing the code is invaluable when you have to take over or maintain someone else's code. It is much easier to see how classes relate to each other at a first glance, than to try to figure that out by going through the code manually.

  127. There is a glade for python by Ukab+the+Great · · Score: 2

    There is a glade for python. Many languages with Gnome/Gtk bindings have tie-ins to Glade. Though I'll take perl glade over python glade any day of the week.

  128. I bent my wookie by Graymalkin · · Score: 2

    One thing I haven't seen mentioned so far is that a good IDE will not only help you navigate your own complex code but it will also help you navigate other people's complex code. I've seen some well documented source before (usually CIS student's work) but for the most part I've found commenting VERY lacking on alot of projects. A good IDE with an object browser is great for browsing functions that aren't very well documented or commented.

    --
    I'm a loner Dottie, a Rebel.
    1. Re:I bent my wookie by Anonymous Coward · · Score: 0

      What sort of fuckin moron are you ? If the source is available, why wouldn't the IDE or Compiler pick it up ?

    2. Re:I bent my wookie by Graymalkin · · Score: 2

      That's exactly what I said you dumb piece of shit. Your mom must have shit the best part of you out during a contraction. An object browser lets you browse the functions in the code (especially big libraries of source files) very easily so you can quickly accustome yourself to the functions in question. The sort of questions that are important like what sort of value the function returns and what arguments it expects. Far too many times have the bugs I've run into in other people's code are where a second programmer didn't call the first programmer's functions correctly so shit died unexpectedly when some special case came up that some obscure boolean argument would have handled (is device0 active, if none given assume true sort of situations) but was not required by the function. It's anonymous cowards like you that make me dislike anonymous cowards in general.

      --
      I'm a loner Dottie, a Rebel.
  129. Let's ask some of the state-of-the-art programmers by jelle · · Score: 2, Insightful

    How do you think Torvalds created the linux kernel?

    What is used/needed to develop on apache?

    How did CmdrTaco make Slash?

    What development tools do you need for mozilla

    Impossible without GUI? Yeah, right. End of discussion.

    --
    --- Hindsight is 20/20, but walking backwards is not the answer.
  130. GUI? Get real by NitsujTPU · · Score: 2

    GUI environment tools don't offer ANYTHING above what the command line offers. Have you EVER done anything serious in a "visual" language that couldn't be done better in raw code? Higher layers of abstraction don't mean better code. It all gets translated down to machine code in the end anyway, or linked against something else.

    However, who gives a shit? It's not the quality of the user interface, it's the quality of the end product. All of this has very little to do with your IDE anyway.

  131. Pointy and Clicky is good by Ukab+the+Great · · Score: 2

    If and only if you know what you're doing and understand essential principles of interface design. Unfortunately, this last sentace really doesn't describe most of the folks at Microsoft, or for that matter most of the people in the windows development community (actually, it doesn't describe most of the *nix community, either). Saying that all GUI's suck and pointing to M$ designs is like with like saying that all tires suck and pointing to Firestone. I love GUI's and pointy-clicky things, and because of this, I have a hatred of the Windows that even the most die-hard linux zealot cannot begin to fathom.

  132. pointless war by macpeep · · Score: 2

    This is a completely pointless war about something that everyone can just decide for themselves. Use whatever works best for you and you find most comfortable. That goes for operating system, development tools and everything else.

    Personally, I code Java with nothing but a couple of command line shells, a bunch of scripts and a good text editor. I write even GUI code much faster that way and I have much more fine grained control over it. I have or less memorized the whole Java core API so I have no problems with doing it all by hand.

    Then.. there's C++ and in particular, Windows (Win32 and WinCE/PocketPC) programming with Visual C++ and Embedded Visual C++. Here, I prefer the Visual C++ IDE because of a few things:

    - When I write code, the IDE shows me what parameters each method takes. It shows me what methods and properties classes have as I'm writing, etc. When I write foo->, up pops a window where I can select and tab-complete the rest. When you learn to use this, you code MUCH faster. Also, you don't have to memorize the entire API with parameters and all, since the IDE helps you out.

    - Debugging. You see the source code right there on the screen. You can step through it line at a time, step into methods that will automatically bring up that file and jump to the correct line.. Put the cursor over a variable and it shows its value. A good stack trace that you can click on to jump to that piece of code.. Drag and drop watches that allow you to write expressions right there in the watch window to figure out fixed point numbers to integers without a separate calculator.. etc. etc. etc.. For serious debugging, you can't beat a GUI imho.

    - You still have cl, nmake, cvs etc. in the command line so if you want to work from a shell, just go ahead and continue from the project from there.

    One more thing.. A lot of people under estimate the NT command line. I've seen people that are totally surprised that I have grep, tab completion, Perl etc. under NT / Windows 2000.

    My advice is to not knock things until you've seriously tried it out and used it enough that you can actually form an objective opinion on it. I bet most people here who think Visual C++ / Visual Studio sucks have never even used it or just used it for something very very simple.

    It's not a war. It's not about UNIX vs. Microsoft and all the political bullshit. Just pick the right tool for the right job and use whatever you find yourself most productive with.

  133. It's the editor that matters by Jetson · · Score: 1

    I am a strong Linux advocate but when it comes to programming I much prefer using Microsoft Visual Studio. The point and click compile/debug environment is nice but not really important. What really makes the difference for me is the context-sensitive editor that pops up object methods/members and function/method arguments when I'm typing. There are several Linux-based editors that can do colour coding but few that even attempt to help with name completion. I really hate having to dig through the man pages and books on every other line of my program to get the list of function/method arguments-- with Visual Studio I can write programs faster.

    1. Re:It's the editor that matters by Anonymous Coward · · Score: 0

      Then you will love Kylix. It has 'Intellisense' too.

      But, within MVS the most powerful GUI-RAD-CLI tool is Visual FoxPro. It is nice to know that VFP7 and subsequent releases won't be part of Visual .NET Studio.

      The command line box is very useful, and compliments the WYSIWYG form design nicely. The true OOP nature of VFP code adds to the power and beauty.

    2. Re:It's the editor that matters by damiam · · Score: 1
      There are several Linux-based editors that can do colour coding but few that even attempt to help with name completion.

      Try Anjuta.

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
  134. Re:pointless war - one more thing by macpeep · · Score: 2

    One more thing about debugging in Visual C++.. When you have a complex inheritance chain for some object, you get an expandable tree right there in the watch window, that you can expand to see the values of member variables for each of the inherited object. Absolutely brilliant. It's hard to provide something this visual and intuitive in a command line.

  135. GUI's have been scientically proven to be faster by Ukab+the+Great · · Score: 3, Interesting

    Usability labs have shown that it's faster to access a menu than use a keyboard command. Especially when the menu bar is at the top of the screen (like on a mac) as opposed to on each window (like in Windows), because you can't overshoot the top menu item (exploiting a principle known as Fitt's Law).

  136. All that's pretty easily done textually... by SuperKendall · · Score: 2, Insightful

    I do similar things, and really I find a textual iterface into these systems just as easy to use and in some ways more powerful and flexible.

    Generally text editors like Emacs and Vim are an order of magnitude more configurable than editors built into most IDE's, thus I find it faster to create helper macros in an Editor like Emacs than use a GUI tool that drags and drops form elements. As an example, it would be pretty easy to whip together a macro to take a set of table columns (drom a "desc table" in SQL), then automatically generate a Bean with getters/setters and also generate form elements elsewhere.

    I'll admit that for debugging I think a GUI is generally better, from the sapect of examining multiple threads and keeping track of numerous variables.

    I do have a particular beef with GUI editors in terms of resizable applications - how many millions of times do I have a program that even when I expand the window doesn't expand form elements to help me view more, or even worse simply makes some portion of what I want to view totally non-accessible? I blame the supposedly easy to use GUI builders for creating apps where designers never had to think about different resolutions and elements are set to exact pixel locations. That whole situation has definatly gotten better but even now I find way too many examples where people fix an app (or web app) to run in a particular sized screen and don't alow me to make use of what space I have.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:All that's pretty easily done textually... by CAVE^MAN · · Score: 1

      this is one of my favorite reasons,as a user, for using GTK, the programmer/s know as little as possible about sizes and placements.

  137. Re:Thing is.... (OT) by Anonymous Coward · · Score: 0

    They stand out becuase they lack any kind of decent layout managers.
    Most VB GUIs can't be re-sized, so they look like crap at resolutions other than what the VB user was using when he created the forms
    And many vb programs use the default ugly icons for cancel and ok buttons that came with visual studio.

  138. Re: use gvim to learn vi by Sentry21 · · Score: 1

    CLI tools are the opposite. They are hard to learn, but once you know them, they are fast and efficient. Vim is a perfect example of this. The editor is simply amazing. It has a keyboard interface to do nearly anything you want to do. The only problem is, it's very very difficult to learn. You don't know what all your options are. You have to goto :help and start searching for something simliar to what you want to do.

    Simple solution to simple problem. Install gvim (apt-get install vim-gtk for debian users, or vim.org for the rest of ye), and use that. It's pretty, it's fast, it's vim with menus. Nothing stops you from treating it like command-line vim, but if you don't know the standard vi commands, you can use the menus - which, incidentally, have the shortcuts on them. That's how I learned that I can use :wq to save and quit, :e to open a file, and so on - and now I use them instead of the menus.

    I couldn't possibly have learned vi without gvim, since I'd have spent more time in the help than in my files. Now that I've used it though, I can go into most any copy of vi and get around pretty well (except that the original vi sucked pretty bad compared to vim).

    Very sweet, very nice.

    --Dan

  139. GUI aginst CLI by fidros · · Score: 2, Insightful


    How do you write: "sleep 50 && killall pppd" using a GUI?

    This has nothing to do with Dev tools. a CLI presents a verbal language interface, something like English, Hebrew or French, just specilized. A GUI present a visual language interface like ... well, cave drawings.

    Sure, cave drawings are easy to understand, and if Corporate America (think Disney) will have it's way that's what we'd be left with, but I don't know any good poetry written in cave drawing language, verbal language do have a few none the less.

    You may think that programming is nothing like potery, but if that's what you think, you've missed some very subtle thing about programming.

    --
    Gilad.
  140. RAD tools are okay for mockups, NOT for real apps by ewestra · · Score: 4, Insightful
    I've been an application developer for over ten years, writing some very GUI-intensive apps, and I've yet to find a single RAD tool (which is really what this topic is about, not things like syntax highlighting, automatic project management, etc) which can do the job properly. The problem is that they all seem to (a) make it very hard, if not downright impossible, to include dynamic layouts, and (b) rely on hardwired pixel positions to lay out widgets.

    In the work I do, less than half of the GUI windows I develop are simple fixed input forms where all the elements are known beforehand. A RAD tool is fine if your window is a simple dialog box with nothing but fixed elements, but as soon as you need a dynamically laid out window you're sunk. Even something as simple as an input form with a variable number of rows of data is beyond all the RAD tools I've found (unless you use an ugly-looking table widget which in most cases means that the end product looks amateurish) -- and if you're talking about something like having a database schema driving the layout of your input forms, you can forget about RAD tools completely. As soon as you need this type of dynamic layout, the RAD tools become your enemy rather than your friend -- and the last thing I want to do is fight the development tools I use, or have to add contortions to my source code just so that the RAD tools will accept them.

    But the lack of support for dynamic layouts isn't the main reason I avoid RAD tools -- the fact is, almost all RAD tools I've seen rely on absolutely x,y coordinate placement (and sizing) for each widget. This is a terrible way to lay out your windows, because as soon as your program runs on a different platform, or even on a machine with, for example, a different set of installed fonts, or a different video resolution, suddenly all your nice-looking GUIs turns to custard. At best, your GUI windows look cramped or have widgets that don't line up -- at worst, your widgets overlap or are cropped. Talk about amateurish-looking GUIs! And if your GUI looks messy, your users will assume the code lying behind the GUI is a mess as well -- which is why I'm so fanatical about creating professional-looking GUIs.

    Anyway, that's why I've abandoned RAD tools, and hand-code everything. Sure, it sometimes takes a little longer to create a simple dialog box, but I more than make up for that by saving time when creating dynamic layouts and not having to redo everything when I want to run my app on a different machine or platform...

    Mind you, it has been years since I've looked at RAD tools -- it may be that some of them now do support dynamic layouts better, and maybe even use logical positioning (eg, sizers and other layout tools) rather than rely on absolute positioning and sizing. If there was such a tool (preferably for wxPython, which is what I'm coding in now), I'd love to hear about it!

    - Erik.

  141. The Best of Both Worlds.. by swdunlop · · Score: 2

    When I'm doing C, or Python, I use KDE's Kate, since it provides me CVS control, and an interactive terminal, all in the same window. It's simple, unobtrusive, and doesn't require a massive investment in time to learn, unlike KDevelop, CodeForge, et al.

    When I'm coding for my own personal enjoyment, I do so in Smalltalk, using Squeak. If I had an IDE nearly as powerful as the classic Smalltalk-80 systems, I might actually use them. Some of the features I use heavily is the class browser, which, instead of being just an afterthought and an add on, is tightly integrated into the cycle of development, the object inspector, which provides an excellent way to snoop inside your instances, and even allows you to invoke their methods using a little command window, and, finally, the fact that the every object in the system is categorized in that browser, makes it very easy for me to determine exactly what each method does.

    I just wish Smalltalk VMs weren't so focussed on maintaining the entire virtual machine in one monolithic image. While it does have a certain conceptual grace, it makes it a little thorny distributing applications, although Squeak's newer package distribution mechanism is changing that for the better.

  142. CLI all the way by n1tr0g3n · · Score: 1, Interesting
    Actually NT has the "at" stuff... equivalent of cron. Oddly enough, my MCSE friend has never heard of it.

    Linux has "at" also. I believe it's the UNIX predecessor to the cron daemon. At any rate, IIRC it's very insecure, at least on some systems.

    As for GUI vs. CLI, I prefer the CLI for 90% of development work. I came to Linux from Windows, where I used Visual C++ for Windows development and RHIDE for DOS development (DJGPP gcc). I have come to love vim, what with all the pretty colors and all (IMO vim has the best syntax highlighting of any editor. kdevelop is pretty good, but I like vim the best). Makefiles are extremely easy to write (all: \n gcc file.c -o file), and autoconf isn't much harder. I especially like the way I can do "cvs -z3 update" to refresh my source tree. Much faster than navigating through a bunch of menus with the mouse. I use CLI for OpenGL, SDL, framebuffer (libfbx), and CLI development. The only thing I use a graphical IDE for is resource editing, i.e. laying out menus and stuff, but I don't do much standard X11/Windows GUI stuff. I mostly work in OpenGL.

    In conclusion, I guess what it all comes down to is how fast you can type more than what application style you're developing. If you suck, GUI is better. If you can type fast (I, for example, can type 140 wpm in a burst, avg. 100+ wpm sustained), the command line is better. Vim rules for fast typists, especially because of its moded interface. If you type slower than 60 or 70 WPM, you need to spend more time away from your mouse and get a typing tutor or something, if you want to be a programmer. I'd hate to code at 40 WPM... I can't stand watching my friend code. He uses an IDE because he types at 50 or so WPM. Whoa! I really strayed from my topic!


    --
    experience euphoria

  143. X11 with shells is an IDE by one_who_uses_unix · · Score: 1

    After 14 years as a developer, my favorite IDE is X11. I can launch as many GVIM sessions as I need to (syntax highlighting etc., fastest editor - period), I can launch debuggers at will (dbx, gdb, ddd if needed) and have a FULL toolbox at my disposal for anything that might need to be done. There is a web browser or xman for on-line help. Proprietary IDEs feel like a straight jacket to me.

    --
    KK4SFV
  144. Every tool has its ups and downs by Zzz · · Score: 2, Insightful

    Where I work, we make software that needs to run on both windows and unices. I have a win2k desktop with DevStudio, and a suse with (guess...) gcc. I develop on both, and both configurations sometimes bug me.

    - find in files (visual): of course, you can make a script that greps your source dirs, but having it one click away is really more convenient than having your own custom grep script

    - makefiles (nix) vs. projectfiles (visual): whoever designed the gui for the projectfile settings was a complete idiot. Any program of reasonable size uses libraries, or is divided in libraries itself. Why have only a 80(?)-character field in which to specify those libs? There's lots of such stupid things in that single window... Our makefiles handle linux{i386,ppc,alpha},{open,free}bsd,solaris,irix. .. and you never have to wonder whether they will live after cvs is done with them (projectfiles are really allergic for unix-returns)

    {flamebait}
    - editors: Once you use Emacs (or Vi, for that matter) for any appreciable amount of time, you feel _really_ handicapped when you have to edit in the Visual editor. Yes, you can plugin an editor of your choice in Visual. But Visual's default is pretty ascetic.
    {/flamebait}

    - debuggers: when you have to dig into dynamic libraries, Visual really kicks gdb-ass (shutup you ddd wimps!). And gprof doesn't really cut it if you can have Rational Quantify. AFAIK, Purify is slowly being phased out for unices, which is a shame. And edit-and-continue (Visual) is also really nice. The commands-command (gdb) is a life saver!

    And so on and so on. If you use both on a regular basis, and use them seriously, you run into the limits of the tools. Not a problem. I find myself switching back and forth, and using the strongpoints of whatever tool is needed at whatever moment. Use the right tool for the right job. Sometimes a gui is better. Sometimes a cli is better.

  145. Comic Books or Reference Manuals by Veteran · · Score: 2
    Many more people read comic books than read the Handbook of Physics and Chemistry. That does not make comic books correct while the handbook is wrong. Gui IDE's and CLI tools have about the same relationship.

    If you are doing something light with a GUI - which is most programming these days - an IDE is a good way to do it. If you are doing an asteroid orbit research tool - upon which the fate of humanity might depend - a CLI with a Fortran compiler is the correct way to write it.

    People who write light weight apps - a database for a secretary to use - need to understand that they are not the best developers in the world, and that perhaps their opinions on how to write code are not exactly profound.

    Most developers who use the Microsoft IDE tools believe that Microsoft uses those tools to develop code for Windows itself or to write programs like Word or Excel. They don't; the tools which they do use are not for sale. That is part of the reason that you can't compete with Microsoft; they have a lot better tools than the ones that they will sell to you. The only Microsoft app I know of that was written with one of their IDE tools was Microsoft Money ( written in Visual Basic). The last time that I checked Microsoft Money was not one of their core money makers.

  146. dev guis by snillocneb · · Score: 2, Informative

    I have two different opinions regarding GUI-based dev environments. First of all, when I use Linux / Solaris, I find that KDevleop is pretty nice, but it's just not good enough (to me) to warrant using it over emacs/vi and gcc. I've heard that CodeWarrior is better, but I haven't ever used it much, and when I have seen it I wasn't impressed. On the flipside, when I develop in Windows, I use Visual Studio.NET (I used to work for MS, so I have a copy of the Beta 2). It comes with lots of cmd line tools, but the visual ide is very, very good. I definitely use VS when I'm using windows. However, if you really wanted to, the cmd line tools can accomplish everything that the IDE does in terms of settings, compilation, project management, etc. I'm still a linux fan, but I've got to give proper credit to VS.NET. At any rate, I don't think one or the other determines whether or not you can create "state of the art" software. That has a lot more to do with the skill of the engineer.

  147. GVIM in NT land by ForsakenRegex · · Score: 1

    I write java for a large corporation. We're forced to use NT/2K and the only sanctioned editor is Visual SlickEdit. All I ever use to write any code is GVIM or VIM, whether on the NT desktop or the Solaris servers we use. I find the use of GUI tools as more of a hinderance than a benefit, since the learning curve is usually high in order to understand how to take full advantage of the tool. However, I do like the Borland tools for C++ and OO Pascal (Delphi). I don't write any code for MS Windows, though, so I rarely have any reason to use them. What I'd really like to see, no matter how unreallistic it may be, is a GUI like Delphi but using Perl as the language and having the ability to produce compiled binaries that don't embed the entire interpreter. That would be the ideal tool for me.

    --
    "A man talking sense to himself is no madder than a man talking nonsense not to himself."
  148. GUIs have one thing going for them.... by Anthony+Boyd · · Score: 1

    ...and that is, the old make things visible rule. Supposedly, if people have to remember a switch, it is less usable than an application that displays the switch.

  149. Re:pointless war - one more thing by AndyS · · Score: 1

    you can use print in gdb, it's not that horrendous. ddd can also show you structs and so on, but I've not used it on really complex objects.

    A question about Visual C++ - I've been using it, and the debugger has it's useful features, but two things have been erking me, and I can't honestly believe that they don't exist.

    Firstly, how do you view the contents of an array in Visual C++? I can see the top element (this is using things like CArrays and vectors). And secondly, how the hell do I call a function from the debugger? (I know I could theorectically break it, modify the code, rerun it, then remove the code, and recompile it, but this sounds very very fiddly)

  150. Amen! by Mindbridge · · Score: 1

    I agree with you completely. The X-Y method for laying out forms is an abomination. It breaks down spectacularly when i18n, l10n, and/or UI customization (e.g. font selection) are introduced. In Windows you can eliminate some of these by designing each dialog separately for each locale -- it works, but... yuck!

    Since Java provides a flexible layout manager mechanism, there are some RAD tools in the Java world that provide dynamic layouts -- JBuilder is one, for example. [Nevertheless, I personally find the RAD generated code to be rather unmaintainable, so I prefer not to use it if I can help it. If you have the proper layout tools, doing it by hand is actually faster and cleaner.]

    I find it really hard to understand why MS resists the dynamic layouts idea so much. Even when they copied Java, they omitted this feature in .Net. It's very strange and rather sad...

  151. GUI tools means that I don't to remember all that by crovira · · Score: 2

    crappy ideosyncratic syntax cobbled together before the industry ever hear of writing specs, QA or who the fuck is actually using the boxes.

    It ain't the geeks. It ain't the dweebs and it ain't people with progidious memory capacity.

    Its people who are trying to get something done and having to memorise all this crap (what directory did this make file put the modules into, and why is this called that and who are all the users, real or virtual, with accounts on this machine?)

    I end up writing code in Squeak! to work on my Linux box (and my Macs,) because I can FIND the damn code, its ORGANIZED, its EVIDENT and I don't get fuckin' tripped up trying to do things only to be stymied by some idiots lousy sense of spelling or lack of QA or their pathetic punsterish humor.

    I'm trying to USE the tools not be a toolsmith but man pages are illegible and explain nothing and every fuckin' dialect and distro seems to think its their God given right to fuck with the directory tree.

    I just want to get what I need to happen, to happen. Me and the majority of people stuck with Windows.

    Got a problem with that?

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  152. GUI only improves productivity - CLI is necessary by dybdahl · · Score: 1

    Even a RAD/GUI tool like Borland Delphi (and Kylix) come with a CLI compiler. Without a CLI compiler, you cannot script a release process - but the GUI part is also necessary to deliver development performance. Just like using Emacs to edit C++ files instead of vi.

    Lars.

  153. Re:GUI's have been scientically proven to be faste by MobyDisk · · Score: 2

    That is not true. I spent a semester studying this phenomena, and as a matter-of-fact everything I raid concluded that the keyboard was faster.

    This comes back to what application you are talking about. For a paint program where the user's hand is on the mouse, menus are faster. For a data entry program keyboard input is faster.

  154. Command line exists well in Windows by dybdahl · · Score: 1

    There are certain things in Windows NT/2000, you cannot do without the command line - like synchronizing the time via NTP...

    Lars.

  155. The only editor you need. by vaxtor · · Score: 1

    emacs.

  156. Easy to Learn is not the same as Easy To Use by dmaxwell · · Score: 1

    I've found that GUI interfaces can be learned very quickly on Mac, Unix, and MS apps. It's easy because most or all of an apps capabilities are exposed to the user with menus, buttons, checkboxes, form etc. Everything is there to see. A very good GUI will even disallow options if they conflict with other options.

    The problem is that once a GUI interface is learned, one is locked into that way of working. What if one wants to script actions that are being done all of the time? What if I want something to happen automatically at threee in the morning? It can also be quicker to bang out small command line or script then it is to drill down through several sets of menus. CLIs are excellent for those of us who can do our jobs in our sleep. Like the parent poster said, an expert cashier does not want an obtuse GUI in the way. Punch THIS set of buttons in order (quickly) done...next...done...next..done.

    I love bad analogies so here's one: Most GUIs are like a Honda Goldwing with ALL of the options.....and training wheels attached. I'm thinking of the ones that even have air conditioning and six speaker stereos. A good CLI is like a Harley with a couple of saddlebags at most. A Goldwing with training wheels is definitely easy to learn to ride but which one would you want to take on a curvy two-lane mountain road.

    I think the best solution is good GUI frontends to command line tools. Everyone can work the way they want to. Good functionality libraries are excellent as well. XMMS and mpg123 use the same code to play MP3s. I love XMMS on my desktop but mpg123 would be better if I'm trying to roll my own MP3 stereo component.

  157. Ask Microsoft... by MSG · · Score: 2

    As it's been pointed out, pretty much all base dev tools are CLI. Most IDE's provide an editor (which really *has* to be GUI), a form editor (which is usually faster than designing forms from scratch, but usually gets tweaked afterward), and a debugger (about as GUI as an editor...). The differentiation between MS tools and old UNIX tools isn't so much GUI vs. CLI, but GUI vs. terminal. The GUI is just a prettier terminal, really. When you realize that, you can stop comparing the tools based on whether or not it has some superficial icons and menus, and compare the *individual tools* for their qualities. I certainly think that Emacs in X is very GUI, and a great IDE. I can accomplish things much faster with Emacs than I ever could with MS VC++.

    However, if that doesn't satisfy you... If you're really looking for ammo against the GUI users, then here it is: Microsoft uses Perl, a couple of UNIX tools under DOS, and their CLI compiler to build their software. Does that qualify for "state of the art"?

  158. GUI based developent tools are old, but C++ sucks. by SimHacker · · Score: 1

    First of all, it's foolish to automatically dismiss someone's opinion because you say they "like all things microsoft". Get over it. To take it even further and dismiss all GUI based interfaces, just because one of them comes from Microsoft, is completely close minded, and that kind of self-defeating attitude only helps Bill Gates take over the world. Microsoft did not get where they did by pooh-poohing good technology because it was written by somebody the choose to demonize. Second of all, GUI based software development tools have been around for a long time, at least since the 70's. Microsoft did not invent them, therefore Linux Political Correctness does not require you to hate them and reject them out of hand. The Lisp Machines from MIT, Symbolics and Xerox, and Smalltalk and Cedar from Xerox all had extremely rich, well developed graphical programming environments, many years ago. Lisp (and Python) are excellent languages for implementing and programming graphical user interfaces, meta-programming tools and integrated development environments. But C++ (and Perl) absolutely unequivocally sucks as a language design, and that's why Visual C++ and all other C++ development environments are so horribly crippled, brittle, inefficient and useless compared to their counterparts designed more than 20 years ago. It's not the GUI that's the problem, it's the language, which does not lend itself to being efficiently understood or debugged by humans or computers. Remember Saber C? Or Lucid's Emacs based C++ Energize development environment? They failed because of the ill-conceived, ambiguous design of C++, which made the problem of tracking and understanding symbolic debugging information so complex that it was too much for workstations at that time. But now that we have 1.5 Gigahertz processors with gigs more of ram and disk, we can finally run "modern" development environments like Visual C++ just about as fast as the venerable Lisp Machine development environment ran 20 years ago, but it still takes a hell of a lot more effort to understand and debug programs using C++ templates instead of Lisp macros, and it always will. The bottleneck is not in the computer, it's in your mind's capacity to take in, understand and manipulate all that information. C++ (and Perl) spend all of their "complexity pollution credits" on the syntax, and there's none left over for the programmer to apply to solving the problem. So of course the development environments have a hard time communicating and allowing you to manipulate all that information. -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  159. A shameless attempt to get this article read by Travoltus · · Score: 2, Insightful


    My opinion of this is, the ultimate perfect set up between the GUI and the CLI, is one in which the fully functional CLI version is made first; where all of its features are DNA encoded into libraries, not executables; and where the GUI takes the libraries, and implements the features with point and click efficiency.

    This, to me, is the perfect way to maintain a harmonious balance between the CLI and the GUI - and the people who prefer one over the other.

    --
    --- Grow a pair, liberals... stop letting the Republicans bully you!
  160. I went the other way by MrResistor · · Score: 1
    I learned to program on MS and Borland IDEs and I much prefer the vi/gcc/gdb combo. I find the command line tools much easier to use because I have much more control, and therefore much better understanding of what's going on. Not that I don't use a GUI; I find it useful to have multiple terminals visible on the screen at one time.

    Of course, I'm not really much of a programmer, and I haven't worked on any large projects, but I honestly can't see why I would want to go back to GUI based IDEs

    --
    Under capitalism man exploits man. Under communism it's the other way around.
  161. GUI Dev Tools? No, thanks. by Anonymous Coward · · Score: 0


    I do low-level programming - mostly crypto and mathematics - and GUI-based development tools are pretty much useless, as far as I am concerned. They are intrusive big time, and have a way of constraining your margin of manoeuvering. I used GUI-based debuggers at some point, but I dropped them when I noticed I could do things faster using the command line inside EMACS.

    I'm sure that GUI-based development tools are very useful for some applicationss but, for what I do, they are just a hindrance.

  162. CLI tools and GUI tools have different purposes. by BladeMelbourne · · Score: 1

    As a Windows expert/Linux newbie with some Human Computer Interaction study under my belt, I have to say the CLI has the following features/requirements:
    * High information load required for operation.
    * Medium levels of feedback given.
    * High levels of efficiency.
    * Low levels of flexibility.
    * High levels of consistency.

    GUI (Direct Manipulation) has the following features/requirements:
    * Low-Medium information load required for operation.
    * High levels of feedback given.
    * Low levels of efficiency.
    * High levels of flexibility.
    * Low levels of consistency.

    While these are generalisations, I think CLIs are more powerful for the user who is prepared to learn the syntax, whereas GUIs are ideal for the less experienced user and for prolonged use of the interface.
    Most GUI designs are shocking, but they are improving slowly. CLI and GUI have different purposes and different requirements, with a small overlap in between.

  163. Re:pointless war - one more thing by macpeep · · Score: 2

    "Firstly, how do you view the contents of an array in Visual C++?"

    Well, you can write in foo[5] in the watch window. :)

    "And secondly, how the hell do I call a function from the debugger?"

    Why would you want to do it while running the app?

  164. Debuggers by forgoil · · Score: 1

    I guess I am fairly late into the fray, but if I may add my humble opinion, I think it's in the field of debugging that graphical environments make more of a difference.

    Most text editors gives you a way to start a shell command, which often is make or similar. It's all about giving you the tools you need, and my personal taste is that I don't want to know everything about the command line options, I want the gui to give me what I need.

  165. CLI This by Anonymous Coward · · Score: 0

    This is probably stupid, but try for a second to 'clear' all the GUI from your reality. For example, try telnet to slashdot, port 80 of course, and 'render' the html code in real time, with your imagination. Now you'll see why for *some* tasks, GUIs are way better suited than CLI.

  166. MY $0.02 by ClubPetey · · Score: 1

    I code almost 100% in Java with a smattering of Delphi. In the case of Delphi, I cannot see using command-line tools. It would be a mess (though possible). Generally, GUI apps require a GUI to design. otherwise you spend a lot of time fiddling with variouos parameters to get the window to look right. (or you end up with interfaces like those nasty Java 1.1 applets... ICK!)

    In the case of java, which for me is mostly server apps. A GUI is not as important I used VIM for 4 years to write java. However, I have since changed to Forte and can confirm that my productivity has increased. I find the GUI IDE to be faster to perform tasks across mulitple files, faster to compile and re-run applications and easier to use than text-based editors.

    On the other hand, one has to be careful to not rely on and IDE too much. If you become so attached to a particular IDE such that you cannot debug an app or run a program without it, you become less useful as a programmer, esp. in the open source arena where some things you didn't write just won't work under an IDE. I see this a lot with HTML developers, many of them cannot write HTML, they NEED FrontPage or Visual InterDEV just to work. I see this a serious flaw in their experience.

    For me, all my HTML is written in TextPad or Forte. I've found by not relying on IDE tools my code comes out cleaner and smaller. and has less problems with the various different browsers.

    --
    Si hoc legere scis nimium eruditionis habes
  167. X is a GUI dev environment by walt-sjc · · Score: 1

    With X, you get multiple source code windows, the ability to recompile / test by hitting up-arrow, Enteri, etc. All navigation is done with the keyboard so no annoying mouse clicks...

    IMHO, normal tools like Make, CVS, Vim / Emacs are VERY productive / easy to use if you take the time to learn them.

    You won't have good code or be productive with any language / tool if you don't learn them inside and out.

    Frankly, the advantage of being able to make wholesale changes in projects (sourcefiles, makefiles, etc.) with the standard tools available in most linux distributions so far outweighs the "any moron can use me" GUI tools favored by MS clones which require 3,561,992 mouse clicks to open a file....

    I was the lead on a fairly large dual Sun / Windows application, and the amount of time dealing with the problems caused by "deeply hidden in a forest of menus" options / settings on VC++ casued the windows side to require twice as much time spent with build management than the UNIX side.

    The "quality of life / job satisfaction" working on UNIX code is SOO much better than windows dreck (including better pay), that I find no reason to work on that cruft (windows) anymore.

  168. Dylan IDE above them all by SideshowBob · · Score: 1

    Apple's Dylan IDE was the only IDE that I've ever used that was both quantitatively and qualitatively better than other IDEs or command line tools. Qualitative because of the amazingly unique features and quantitative because of the immense boost to productivity.

    Dylan stored all of your source code in a database and had this completely trippy multipane editor to work in. Grab the pane splitter control on any pane and split one pane into 2. Panes could contain views of a number of different types of data in the database - classes, methods, data members, call graphs, etc. etc. (I think there were about 15 or 16 different pane types) - and any pane could be hooked up to another so that one became the input to the next, i.e. hook a class pane up to a method pane, and hook that up to a source code pane and you get the classic SmallTalk browser. Add and delete panes to your hearts desire and the whole thing becomes nearly infinitely customizable.

    Debugging was done in the context of the IDE - set a breakpoint in any of the panes and when the program hits a breakpoint you can edit the source code and recompile on the fly - while the program was running. Essentially you could work for hours and only ever launch the program once if you wanted to.

    All other developer tools that I've ever used seem like stone age tools compared to what you could do in that thing..

    The sad thing is except for the recompile on the fly thing you could do any of the above with C++ or any other language. Yet we're still stuck with source code stored in clumsy files and the tired edit-compile-debug cycle.

  169. my problem with GUIs by Erastus · · Score: 1
    After reading Neal Stephenson's "In The Beginning.. Was The Command Line", and after some reflection, I came to a conclusion that was before just a fuzzy unsupported notion:

    That GUIs do not allow the flexibility of using a language that command lines do. The buttons just don't offer that kind of rich control.

  170. Depends on the design of the tool by John+Whitley · · Score: 2

    The CLI vs. GUI argument is hollow. The real issue of how well a tool meets the needs of the users (in this case, developers). Good GUI tools have been designed, and good CLI tools abound. But just making a CLI tool a GUI tool does not necessarily improve it in any way, and can make it significantly less powerful.

    First, I'll cheat, then offer specific examples. 8-) Just how useful would the *nix "cut" utility be in a GUI form? Answer: not at all! cut is essentially a function, designed for the functional programming environment of the Unix command line. The synergy of applications that can use the command line, be scripted in various manners, and communicate with one another is powerful.

    One case study/gripe: At work, our C/C++ vendor's toolset uses the CodeWarrior IDE as the front end for build management. I can now categorically state that as a build tool this IDE is MUCH more limited than good old fashioned Makefiles. When I'm PO'ed at the tools, I often say things like: "great IDE for toys!" These limitations are both functional (e.g. the outright ability to accomplish the desired build structure) or simply awful UI design. It almost seems to have been an IDE not designed or written by people who actually develop software!

    Another bit of GUI software: Visual SourceSafe (yes, MS's source control software). VSS' source control model basically sucks, which is why we're transitioning to CVS. Nevertheless, the GUI does have a few good ideas in enabling developers to manipulate and visualize the code database. For this very reason, tools like {Win,Lin}CVS are available to provide a convenient visualization front end. Excluding the source control model, which is better VSS or CVS? CVS wins, because it provides scriptable functionality AND the advantages of GUI-based visualization and interaction. The right tool for the right need.

    1. Re:Depends on the design of the tool by Anonymous Coward · · Score: 0

      You obviously don't know what functional programming is.

      Yes, please mark me -1 irrelevant.

  171. GUI + CLI, need the best of both. by Anonymous Coward · · Score: 0

    Having a graphical class-browser for C++ work is truly an incredible time saver. The problem is, if you want to use one, it usually means sacrificing truly incredible editors like vim/emacs for GUI editing widgets that are quite featureless and waste your time. I've yet to see a 'best of both worlds' application.

    There's a lot of interest in making a KPart for vim though, so maybe soon we'll have a KDevelop that lets us have the best of both worlds.

  172. Re:Thing is.... (OT) by Anonymous Coward · · Score: 0

    The same is true for TCL/TK apps as well, IMHO. I can't guess why other than perhaps because you're using higher-level pre-fab "parts" wich you cannot fine-tune (as easily, at least) the way that you can fine tune C/C++ apps.

    I might be wrong about the reason for the similarity; but it's still there (compare tkdesk to any other xfilemanager that you like, and you'll see what I mean.)

    Oh, by the way; just to live up to being an AC: go here for a screenshot that illustrates my point. ;)

  173. Most of the anti-GUI comments seem shallow by Junks+Jerzey · · Score: 3, Insightful

    Is it just me or do most of the anti-GUI comments sound like they're coming from people who have a general dislike for Windows and Microsoft, and therefore don't want Linux clogged up with "none of that sissy crap"? Think about things for a second. A GUI development environment doesn't automatically make you a bad coder. We're still talking about languages like C++ and Java here. If you're not sharp enough to be working in C++, then some magic environment with windows and dialog boxes is not going to suddenly make you capable. Someone who chooses such an environment does so because he or she finds some other benefit to it.

    I work in the game business, and it is rare to come across a PC game developer that doesn't use a GUI environment like Visual C++. Now we're not talking about slacker wannabe coders here; we're talking about Tim Sweeney and John Carmack and everyone who used to be at Looking Glass. So most people in this thread would write them off because they use an environment designed for infantile programming? These are sharp people; please give them some credit.

  174. Interruptions and distractions slow you down by xant · · Score: 3
    Think context switches. The reason why people hate the animated paper clip is not that he's cute, or that he's bloatware. My mom hates the paper clip even though the cuteness appeals to her and she does not know what the word 'bloatware' means. She hates him because he interrupts her when she's working. She learned how to turn him off.

    In the same way, GUI tools can interrupt your work process. Going to the mouse to select something from a menu is ok when you have never found the option before. It's unquestionably faster than looking up an option in a man page for many operations that GUI dev tools support. But taking your hands off the keyboard to put them on the mouse is an interruption. If that's the only way you can get to the option (other than switching to your xterm, which entails an even more egregious context switch), or, if that's the only way you've learned how to access the option—which it frequently will be, because that's how the GUI teaches you to do it—you waste cycles. You get distracted. Concentration is broken, and you have to do hand overhead, brain overhead, and searching-for-the-right-spot-to-click overhead.

    The keyboard, on the other hand, is under your fingertips. No context switching necessary.

    You might think I'm arguing against GUI dev tools. You would be wrong. GUIs are a faster way to learn what tools are available, and even to show you some tools that you might never have found when faced with the black hole of the command line and no prior knowledge. RTFM is fine, but most people read only enough to solve the problem they think they have. A GUI presents lots of options in an easily-digestible and memorizable hierarchical format (if designed with a minimum of care). You'll see a lot more of the tools and options available to you, and that alone can save development time.

    This has been said many times before me: context switching slows you down; so does a steep learning curve. One is better for beginners, the other better for experts. But I still believe there is a best-of-both-worlds solution out there. How about these two things:
    • Every time you switch to the mouse to do something, you get an entry in a history file for that GUI. For example, I just picked Tasks->Tools->History to get to the history window in Mozilla. How about keeping a record of that action around? How about a small menu history listbox on the right edge of the menu. That list box would now contain "Tasks->Tools->History (Ctrl-H)" and if I picked it from that list box, I would again get the History window. If I then did View->Apply Theme->Modern I would get yet another entry in that listbox. This helps you memorize where the things are that you use. It also helps you pick them faster by flattening the choices available and paring down the options to those most likely to be picked again.

      The same principle could be applied to toolbar buttons. The listbox could instead say "Button pressed" and display an image of the button and the keyboard shortcut to get to it.
    • Notice that I included the (Ctrl-H). The keyboard shortcut is still the fastest way to get to that menu item: Leave fingers on keyboard, don't use mouse. That keyboard shortcut ought to burn itself into your brain every time you look at it. How? Make it more important. When you stick something into that menu listbox I just talked about, the keyboard shortcut should appear bright, bold, colorful, and then slowly fade to the same emphasis as the text next to it. You will notice it, but it doesn't interrupt you. You will learn it, and you're more likely to try it next time.

    Here I used mozilla as my example of a GUI dev tool, which it clearly is not; in a browser your hand is on the mouse most of the time anyway. You can still see how this would be applied to a GUI IDE though.
    --
    It's rare that you're presented with a knob whose only two positions are Make History and Flee Your Glorious Destiny.
  175. Re:RAD tools are okay for mockups, NOT for real ap by update() · · Score: 2
    Mind you, it has been years since I've looked at RAD tools -- it may be that some of them now do support dynamic layouts better, and maybe even use logical positioning (eg, sizers and other layout tools) rather than rely on absolute positioning and sizing.

    Have you looked at Qt Designer? It does exactly what I think you're talking about.

  176. OK, my take by Chris+Johnson · · Score: 2
    I do this: Mastering Tools Pro

    I do it in a slow-ish heavily GUI 'toy language' with its own memory management and elaborate, pre-made objects, because there's only so much I _can_ do, and I have goals. There are particular things I want the software to do. I choose a weird interface (very text oriented!) for the program, but within that interface if I need to shuffle the positions of the parameters for high frequency sidechain compression, I want to select pictures of the things and drag them to the new places and build the app and have it run, just like that.

    If I decide that the delay lines, measured in feet or millisecond of delay, must have the control's background a shade of gray that relates to how 'far' the echo is, for quick visual appraisal of the state of the app, I want to type in a quick me.color = rgb(255-HowFar, 255-HowFar, 255-HowFar). Yes, to some extent this is OOP- but where do I find the place to type that code? In the environment I'm using, I look at the mocked-up app and doubleclick the box and a code browser pops up, open to the _wrong_ event of the _right_ control. It's not perfect, but it gets me there...

    GUI isn't about making Super-Genius-Coding-Man more effective. SGCM is already effective, the closer to the raw words and letters and symbols of code the better. It's all in SGCM's head. GUI is about making _me_ effective.

    And if you're SGCM, you are perfectly free to feel totally superior to me, but you know what? I can hardly code, but what I'm trying to do is push the boundaries of digital audio mastering and wordlength reduction, and this is very specialized stuff.

    If you are SuperGeniusCodingMan, are you programming something original- or are you strutting because you can use raw C and hand-hacked makefiles to produce... an IRC client? >:)

  177. Good IDEs do exist. by chris_7d0h · · Score: 1

    First off, speaking of GUI, I can't imagine anyone coding anything without a GUI today. Even Emacs or vi have all the characteristics of a GUI, having different graphical elements placed on different parts of the screen and being able to switch the code window's representation by issuing "commands".

    From a user's standpoint, the difference between a graphical application run in console mode (like vim, pine, Borland Turbo C ...) and a MS Windows / KDE ... application is mainly the enhanced graphics.

    If this discussion is about MS Windows /X Windowing like applications, then I have in the last couple of years had very good experience with IBM's Visual Age for Java IDE. (I might add that this is the only IDE in a "windowing" environment I have really liked).

    This tool is simply amazing when you have gotten the hang of it. The threshold for becoming proficient with it is also relatively low. In my last few projects, we have had many new Java programmers on board. These people became proficient with the tool in just a few hours and after a few weeks, they wondered how they had ever managed using vi / ultraedit, jdb or what not.

    The strengths of this particular IDE is not it's ability to do frame composition graphically (a feature I have not seen anyone use anyway), but the overview of the project code and development help it gives you. The debugger for example is simply the best I have seen for any language. Having the ability to modify code on the fly (while executing) simply blew me away the first time I saw it. There are too many things about this IDE which have helped save time to list here. The point was to show that there is at least one "GUI" tool which I have found beats the old text editor compiler/linker debugger combination.

    For those of you coding java, I recommend taking a look at VAJ. The standard edition is free for evaluation (with a limit of a thousand classes or something). it's available somewhere here, in the download section.

    In the end, saving time and effort is what it's all about in a project. If a tool can help you do that, then it's a good tool, no matter what the tool might be (perl,sed,awk,vi...)

    --
    In a society that believes in nothing, fear becomes the only agenda ~ Bill Durodié
  178. Next step - AUTO-CODING by 3seas · · Score: 1

    Yep, auto-coding. where you mix command line with GUI.

    but before that there was the first user interface of the Command line,
    then there was the second, the GUI. The GUI was easier to use but more
    limited than the Command Line interface.

    Then there is the Third user interface, the one that completes the primary
    triplet of user interfaces. That interface is the side door port to
    applications and other functionality of the OS. The port that the user can
    use to tie functionality together, to themselves automate.

    In this process of automation, auto-coding comes into play.

    http://www.mindspring.com/~timrue/KNMVIC.html

    There is also a python start of the function set.

  179. More than just a pretty face by Anonymous Coward · · Score: 0

    The differences between a CLI and GUI IDE is far from just maybe syntax highlighting. Various GUI IDEs provide tools that are just an incredible convenience to the programmer. For example, Visual C++ 6.0 has Intellisense, which will pop up a tooltip window when you type out a function name which will provide you with the parameters available for each overload. It also will provide a list of methods available for a class when you use the dot operator. In Visual Studio .NET, compilation also occurs in the background, so a compilation error is immediately greeted with a Word-style grammer error underline that will provide a tooltip with the description of the error. On top of all of this, for GUI development, you have various form designers, some which provide prototypes for classes that represent the GUI that you can edit, and some which are fully featured that you can edit between both the graphic designer and the code seemlessly.

    Okay, I've droned long enough. Are either of these better? Well, arguably, a GUI IDE that provides contextual aid will decrease the learning curve required (make it easier? blasphemous!) But neither method is inherently better, nor does either method produce better applications. Choose the method best suited to the job, and the method that you will be more productive with.

    One thing that vastly annoys me about programmers is that they think that there is only one real way to do anything (which is typically the only way that they know.) They don't realize that development tools and languages are just tools on the toolbelt of programming. I can't imagine programmers of this nature being very productive as, say, carpenters, as they attempt to use a hammer to saw a board in half.

  180. Re:GUI's have been scientically proven to be faste by leifw · · Score: 1

    Honestly, will you (or anyone else) please provide a link to such a study?

  181. I use both by CondorDes · · Score: 1

    I use both KDevelop and the command-line tools. I recently switched to KDevelop, and while I find it very convenient and easy to use, I still find myself going back to the command line for some things. KDevelop is easier to use than Emacs, but it isn't as powerful for me as the command-line.

    I really like the fact that they added a konsole feature in 2.0...I use that a lot now. I just wish I could do file management in KDevelop too.

    --
    "I haven't lost my mind -- it's just backed up on tape somewhere."
  182. Screwdrivers by Saint+Stephen · · Score: 1

    So, which is more advanced, a philips-head or a flat-head screwdriver?

  183. depends on what you mean by 'state of the art' by ummit · · Score: 1
    If a "state of the art" application is one that's bloated and buggy, then yes, a "state of the art" IDE is indispensible for creating it: old-fashioned tools are simply incapable of churning out vast swaths of buggy code at the rates which current fashion seems to demand.

    Now, if what you want to churn out is high-quality, error-free, maintainable programs, then I'd say it's the CLI tools that are indispensible. If you want to get clever, and invent new tricks no one has tried before for, say, having the code write and test itself (using your own special-purpose table-driven code and test case generators and the like), you're going to have an easy time integrating your brand-new tools and automated build procedures into a good, old, utterly general-purpose make-based build procedure, whereas you're likely to have an arbitrarily hard time integrating it into some hyperfancy all-in-one IDE which, like any graphical tool, makes it slick'n'easy to perform those tasks the tool's designer thought of and designed for, but impossible to do anything else.

    I could go on, but since I'm in the middle of reading The Pragmatic Programmer (which is not where I got these ideas, but it presents them well), I'll just refer you to it. See especially section 42, "Ubiquitous Automation".

    Don't get me wrong, there are some tasks that IDE's (like any graphical tools) are quite good for. But saying "it is impossible to create 'state of the art' programs with command-line tools" (with the implication that IDE's are infinitely superior) is simply infantile; it's as bogus an argument as claiming that vi is infinitely superior to emacs (or ed). As always, use the right tool for the job, and don't try to claim that one tool or set of tools is either perfect or unequivocably superior to its counterpart from the other side of the tracks.

  184. Mac OS X by resistor2004 · · Score: 1

    In Apple's Mac OS X, they include a GUI IDE called Project Builder, which is used for most OS X development out there. However, on close examination, one finds that Project Builder is merely an interface stuck on a slightly modified copy of GCC. It creates its own makefiles which include directives to link against the directives to link against the MacOS libraries, and the executes a gnumake command. So Project Builder is really little more than a spiffed-up text editor (it even 'features' being able to use the same keyboard shortcuts as Emacs) with the ability to execute a few commandline statements. But with it one is able to write anything from OpenGL games to SCSI drivers.

    1. Re:Mac OS X by Drizzt+Do'Urden · · Score: 1

      And Interface Builder can create your hole interface without a line of code...

      More again.. you can almost creat a Text Editor only using it ;)

  185. I'd like to switch back... by Anonymous Coward · · Score: 0

    ...since VC++ 6 SP5 crashes when I try to debug. MSFT's response? "We've fixed it in VC7, you'll have to upgrade." Yeah, like work is going to upgrade all of us so I can debug. WinDbg it is...tmake and emacs is damn tempting.

    I think somebody who says it's "impossible" to create complex, modern software is talking out their ass and has never created complex, modern software...especially nothing on the server-side.

  186. Re:GUI's have been scientically proven to be faste by rabidcow · · Score: 1

    Does http://www.asktog.com/TOI/toi06KeyboardVMouse1.htm ldo any good?

    I suspect the results would be different with Windows' less efficient menu system. (Yes, I use windows) And personally, it sometimes takes me a minute to *locate* my mouse, let alone move my hand to it ;)

  187. Re:GUI's have been scientically proven to be faste by rabidcow · · Score: 1

    Actually, http://www.asktog.com/TOI/toi22KeyboardVMouse2.htm l is probably better.

    Still not really a *study*...

  188. Microsoft Development of NT by Anonymous Coward · · Score: 0
    For people that thing that M$ dev means visual tools, think again. I have friends at M$ working on the Win2K backend and one of them said "I can't stand that graphical crap. It makes me code 10 times slower. Most of us there just use the command line tools."


    It obviously comes down to what it always has come down to: personal preference. Vi or Emacs?

  189. Re:RAD tools are okay for mockups, NOT for real ap by Pete · · Score: 2
    Mind you, it has been years since I've looked at RAD tools -- it may be that some of them now do support dynamic layouts better, and maybe even use logical positioning (eg, sizers and other layout tools) rather than rely on absolute positioning and sizing. If there was such a tool (preferably for wxPython, which is what I'm coding in now), I'd love to hear about it!

    Ah, another wx fan :).

    I'm guessing you're a fairly recent wxPython convert, otherwise you would have already heard of this, but anyway - wxDesigner will almost certainly fit your needs. The author is one of the primary developers of wxWindows and he sells wxDesigner (quite cheaply - student license US$19, single-user license US$89, 10-user license US$299) as a closed-source extra.

    It can be used with C++, Python or Perl code.

    Pete.

  190. I know a good program by Thatman311 · · Score: 0

    It is called Visual SlickEdit. All of the functionality is available via command shortcuts and you still have a GUI for those who want to use it. Best of both worlds in my mind.

    --
    Silly Rabbit...Sig's are for kids.
  191. I hope this isn't a "me too" comment, but.. by Cymbaline · · Score: 1

    You gotta do what you gotta do, based on what the environment is.

    (Statement - not a disclaimer: I don't program in Microsoft technology, period. Against my religion).

    Back when I actively programmed on a daily basis - Pascal, C, a crapload of REXX (mostly on OS/2 - did an entire site with flatfiles), some C++, some Java; none of my interfaces were "platform-oriented"; even the Pascal stuff was ment to be ported to other platforms. Granted, that was back in the days of the BBS, but if you wanted exposure, you appealed to the masses.

    Strange, but my last comment sounds eerily familiar... Perhaps I should of registered it as a trademark. But then, somebody(ies) else already did, it would seem.

    Bottom line - in todays' world, it's not HOW you are programming, it's WHO you are trying to present your creation TO! Doesn't matter if it's a flat file RPG query, a Java GUI, or a frickin' DOS batch. If it gets the job done, that's fine. My problem is that most of todays' programs try to comb your hair while petting your cat - oh! you wanted me to perform the REAL function, too? Function is creative as long as it's functional.

    I feer too many folx/companies/writers have forgotten/forsaken the meaning in my prior sentence.

  192. UML Modeling Tools by CrazyBob · · Score: 1

    I am a huge fan of command line development when it comes to getting down and coding, however there is no CLI substitute for UML modeling. A good model and design is essential to success and maintainability on a large scale, distributed project.

  193. Dynamic forms and HTML by Skapare · · Score: 2

    Virtually every form, and most pages, I've built are really dynamic. There are lots of static pieces, but overall it's dynamic. I've done this in C and PHP. One example is http://linuxhomepage.com/ done in PHP on the front end and C on the back end. I'm not sure how anyone would build that using all GUI tools. That's not to say that GUI tools couldn't be used for at least some of it. But being more familiar with CLI tools, I found it easier to build that site originally in half a day using CLI tools alone. And I did it in text console mode (not xterm) switching to X, or my Win98 box, to test the rendition via a few different browsers. You can peek at the PHP source here. I'm thinking out the plans for the next version of the site now, and it will be more dynamic than the first, allowing you to choose your own boxes, number of stories in each, where to lay them out, and maybe even a display theme.

    --
    now we need to go OSS in diesel cars
  194. There is a gray area by Skapare · · Score: 2

    There is a gray area where the benefit of one over the other is not as pronounced as what you happen to have more experience with. If you are equally experienced with both, you'd probably see the gray area as extremely thin. If you are more (or exclusively) experienced with one or the other, you'll probably see the gray area as an extreme case.

    One factor, but not the only factor (have to weigh these things carefully, but don't dwell away the day worrying about it) in chosing the tools is to choose what you know best, especially if time is a constraint. But do try to find some time to learn something new occaisionally, or else you'll find your world is made of nails just because you're leet with hammers.

    --
    now we need to go OSS in diesel cars
  195. Where do you draw the line? by Tord · · Score: 2

    I think the whole question sounds a bit silly, because where do you draw the line between commandline tools and GUI tools?

    If I use Glade for designing user interfaces and gEdit as my code editor and compile the program by writing "make" in a console. Am I using commandline or GUI development tools?

    What if I use a texteditor with some project management abilities (for example listing of files in a leftside pane) and that automatically runs make when I press a certain button combination and pipes the make output into a window. Is that GUI or commandline based development?

    What if we agree that the above mentioned example is GUI based and I simply replace the editor with emacs running from a console? Am I then suddenly running a commandline based environment just because I changed the editor?

    As allready stated in other comments, most GUI-based development environments are only wrappers for commandline tools. Both MSVC and KDevelop (to an even greater extent) works that way. Personally I think that KDevelop's solution is great. I can write my project in KDevelop and send it off, with project files and everything, to somebody who only uses make and vi from a commandline and he can still edit the code and compile without a problem.

    I guess my point is that commandline based and GUI based development isn't so different. When you get into designing and implementing complex systems (either in group or alone) you will have good use of some tools for helping you with project layout and management that for example automatically keeps your makefiles up-to-date when you add or remove includes and a multi-source editor that easily lets you jump between function call, the functions definition and documentation. Nearly all GUI environments have that built in, but you can also achieve it in a commandline based environment through a smorgasbord of small and specialised utilities.

    That said, I still think that too many programmers just goes on working in the environment and with the tools they settled on like 5 years ago without taking any look at the new modern (and mostly GUI based) tools and environments that might be very useful and speed up and simplify their work once they have managed the transition. Personally I think that both KDevelop and MSVC are great integrated development environments and they have turned me into a much more efficient programmer.

  196. Will IBM Visual Age work with ... gcj? by Skapare · · Score: 2

    Will IBM Visual Age work with development of Java code to be compiled with gcj or some other direct (not class file) compiler? Or is it dependent on the JVM and class files? And will the resultant source package compile on most major UNIX platforms (I'm into distributing the source code and getting tight compiles, not messing around with the JVM environment)?

    --
    now we need to go OSS in diesel cars
  197. Delphi & Kylix by kilogram · · Score: 1
    I have been using Borland Delphi for some years now, and this has to be the ultimate programming language available.

    It allows both the creation of command-line tools, as well as full-blown GUI applications. Borland also has a version of Delphi for Linux, called Kylix, and programs written using Delphi should port seamlessly to Kylix.

  198. No wonder so many web sites suck by Skapare · · Score: 2

    Gee, and I thought much of the blame was on so many artists coming from the world of print media (e.g. paper brochure layout) to the web (e.g. electronic brochure layout) and not having a clue about basic concepts of adaptable layout (not dynamic, necessarily, just the ability to adapt to different window sizes, different fonts, different widgets, etc). But it has become clear that much of the blame, if not most, is on the part of the programmers (and more likely their managers) for producing crap that doesn't even have the capability to do the right thing.

    I've found many a GUI app that had really good graphical layout, sometimes awesomely cool stuff, and did shit when it came to what the coded logic was. But then again, you shouldn't expect protein and vitamins in candy.

    Tell me how well linuxhomepage.com does on your web browser in your preferred window size (as long as it's not itsy bitsy) on your desktop with your fonts and widgets.

    --
    now we need to go OSS in diesel cars
    1. Re:No wonder so many web sites suck by Anonymous Coward · · Score: 0

      Truth is, most IDE's that support graphical layout for GUI design don't support dynamic layouts well at all.

  199. Re:GUI's have been scientically proven to be faste by o_kenway · · Score: 1

    Not for me anyway... I find that a single common menu bar is the most annoying part of the MacOS interface since with Windows and indeed Unix apps I can click on the menu bar of any application I have open (and pring it to focus at the same time depending on the window manager, on the mac you have to select the correct widow and then move the mouse to the top of the screen....

  200. Depends on application... by Karellen · · Score: 2

    If you're writing a GUI, IMO you _need_ a graphical dev tool. You can't create graphical art on the command line. It just doesn't work. So, yes, for writing GUIs, GUI dev tools are a hell of a lot more advanced an neccessary.

    But for writing back-end code, I don't think is makes a bit of difference. I'm just as productive with a bunch of rxvts running vim and `gdb -nw` as I am with anything like MS Dev Studio or Borland C++ builder, or anything like that.

    The fact that command line tools are `small tools that do one thing and do it well' allow you much more control over what you're trying to do that these large behemoths that try and anticipate your needs and do loads of stuff for you that you don't want to get involved with.

    --
    Why doesn't the gene pool have a life guard?
  201. Development type by Adam+Wiggins · · Score: 2

    It depends heavily upon the type of development you're doing. Quite simply: if you're creating an end-user application such as a word processor or a game, an IDE like KDevelop is definitely the way to go. The app itself is highly visual, so creating it with visual tools makes sense. More importantly, with most apps, there's just a single program that you're writing and debugging, which the IDE can handle quite neatly.

    Server tasks, on the other hand, are an entirely different story. Here you have something that is probably not terribly visual; most of the code runs in a place that the user will never see or have access to. You've got many little helper scripts, processes, client/server applications, processes communicating across many different machines, processes running automatically in the middle of the night - managing all of this with an IDE is probably impossible.

    I do both types of programming at my place of employment. The core of our business is a payment gateway, which is hugely complex, and involves dozens of servers spread out across the United States communicating with each other, as well as internally, with a hundred and one small programs passing data off to one another. We do all our work on this part of our business with ssh, bash, vi, Perl, SQL, and occasionally some C.

    On the other hand, I've worked on a few end-user applications (point of sale apps, install programs, reporting frontends) and KDevelop is great for them. Designing your widget layout in QDesigner is a breeze, and then integrating that back into your C++ code in KDevelop is drop-down simple. The embedded debugger is wonderful, as well.

    Moral of the story: Choose the best tool for the job.

  202. GUI tools *generate* code by nut · · Score: 1

    To a large extent what GUI tools, visual application builders etc. do is GENERATE code. This means they allow you to generate a lot of working code quickly, but it WILL be of a particular style, and aimed at a certain problem space. I would say they are better for MOST of the problems we solve but not all. I think it's also probable that they encourage us to write a certain type of application, simply by making it easier to write that type of application.

    ALWAYS learn to program using CL tools, but don't be scared to use GUI tools, because they can make life so much easier for run-of-the-mill, bread-and-butter programming.

    I realise GUI tools do other things as well as generate code, they often incorporate really useful debugging tools etc. But my argument is that a lot of the productivity increase comes from the code generation aspect.

    --
    Never trust a man in a blue trench coat, Never drive a car when you're dead
  203. save often, do you? by bobalu · · Score: 1

    spend some time writing hundreds of lines of code just to be unable to save the class

    Are you kidding? You write hundreds of lines of code before you do a save?

    --
    The revolution will NOT be televised.
    1. Re:save often, do you? by Bodrius · · Score: 1

      Not normally. But as you may see in my previous comment, Visual Age will NOT let you save if you're missing a comma, parenthesis, semicolon or whatever.

      So, between writing a skeleton of a class, compiling ("analyzing" if we use VAJ terminology), reloading, write the implementation of a method, repeat ad absurdum, yes, you end up writing the full implementation and clicking save.

      Or you do the rational thing: load a decent editor to write the code with compulsory saving, good error checking features, compile, cut, paste, save.

      That is, of course, if you REALLY have to use VAJ. I had to because it was not my choice. It has great features I can live without, and lack basic features I would be hard pressed to.

      --
      Freedom is the freedom to say 2+2=4, everything else follows...
  204. JBuilder looks good by bobalu · · Score: 1

    I've been playing with it for a few days and I'm pretty impressed.

    --
    The revolution will NOT be televised.
  205. GUI tools matter, by Anonymous Coward · · Score: 0

    Though most of the guys here stick with emacs or vi, the rest of the world finds such tools uacceptable, the vast majority of people used to e.g. Visual Studio, will never find themselves workin with those unix development tools. And thats to bad , cause developers are much needed....
    Wether the standard unix development tools are better or not matters jack if only a small group of developers want to use them.

  206. What You Use by radsoft · · Score: 1

    What you use to get your job done is probably going to be fastest for you. GUI IDEs can quickly take you to a line in your code where the compiler jumped ship. That's about it. Point and drool has always been point and drool. Case in point: MS builds their OS with command line tools, and not GUIs.
    But as soon as you leave the command line and the "garden hose" you revert back to the Multics way of thinking, with GUIDs and all that junk, as opposed to the Unix way of thinking with "tools", and look where that has got us - in a mess that's absolutely no fun to romp around in.
    GUIs are fun, but they also consume about 60% of the code. And when you need to get the job done, command lines are the way to go.
    Rick Downes

    --
    radsoft.net
  207. Check out Eclipse.org by Spiritwalker · · Score: 1

    Check out www.eclipse.org. Or for one supported product using the universal tool platform check out WebSphere Studio Workbench. or the source OTI .


    [self contents apply: Disclaimers standard] fork.

  208. Emacs users know the answer by Per+Abrahamsen · · Score: 2

    Emacs can be invoked as both a GUI and CLI[1] tool, and certainly qualifies as an IDE, even if it is not for everyone.

    The answer is pretty simple. Emacs in GUI mode can do everything Emacs in CLI mode, and often has several ways to do stuff that are missing in CLI mode. These alternative ways are sometimes useful, and when not, one just use the CLI way that is still available. So a GUI is preferable to a CLI, given the same basic featureset.

    It is as simple as that. The reason some people can make an issue of it, is that they are comparing radically different environments, with radically different features. With Emacs, one can isolate the CLI/GUI factor.

    BTW: Some people (often people who haven't used a recent or properly configured Emacs) claim Emacs isn't a "real" GUI tool. Objectively, they are wrong, it uses the native window system and has (at least in some versions) all the features traditionally expected from a GUI tool. However, these relatively new GUI features aren't always fully utilized by the various Emacs subsystems. The advantages of GUI Emacs is only going to grow as these subsystems utilize the new fascilities.

    [1] Provided we allow full screen tools like vi, and doesn't restrict CLI to pure line oriented tools like ed.

  209. Re:I switched from VA to Forte by icoloma · · Score: 1

    I was working with VAJ for 6 months, and was terribly happy with it (I compared it with other 3 GUIs before deciding). I think you can get results very fast, and found very useful the incremental compilation.

    Afterwards I tried Forte for Java CE. It has the same useful things, if you learn to combine it with ant you can work twice as fast, and - the best - you don't have to wait for as much as 10 months to have the next JVM implemented! It's also more flexible in other ways.

    Oh, it also have more bugs than VA and is a bit slower, but it's still worth the pain. By far.

  210. Re:pointless war - one more thing by AndyS · · Score: 1

    ahhh. That makes life a little easier - I was thinking I might have to repeatedly code useless loops forever.

    As regards to functions

    Sometimes it's handy to have a function to say, write out important parts of a structure, or to obtain a sanitised structure you might have a function call etc.

    gdb (much maligned) can do this, it's very very nice in those respects.

    The only thing I would love in emacs from Visual C++ is the Visual Basic style hints anyway.. Is anybody working on this?

  211. Adding new tools to an IDE. by os2fan · · Score: 1
    Amipro is a IDE wordprocessor, made up of an integrated editor, spell checker, printer, &c. TeX is just a page markup thing, which you add other tools to.

    In Amipro, it is easy to use, and all the supplied tools are there in the menu. I can see what I get, and so forth. But once I exceed its limits, I need to invest heavily in its macro language or other dodgy fixes. I can not add functionality to its menus.

    TeX is a markup compiler. I supply it a source file, and it makes up neatly polished pages. I can add all sorts of tools to the front, and add all sorts of tweaks to it. The interface is really not easy to use, but I can replace the editor, the spell checker, &c.

    And come to think of it, most of the unix command line filters and tools were designed to handle specific problems with text data: sort, change, do this, do that ...

    How many of these would have come had the IDE always been there? Enough said.

    --
    OS/2 - because choice is a terrible thing to waste.
  212. Stallman wrote about this. by crucini · · Score: 3, Interesting
    I work with Visual C++ 5 days a week, and there are real limitations in its scripting.


    Interesting. Stallman wrote an essay describing the design logic of Emacs. One thing he pointed out is that a scripting language tacked onto the side of an application as a 'feature' will always suck. It won't be a very high priority for the application's creators and maintainers.

    The proper approach is to write the upper layers of the application in the scripting language. So Visual C++ should be made with the compiler, linker, metadata-store etc. in C/C++ and the control/GUI in VB. Or something.

    The obvious side effect is that Microsoft's programmers would have felt the pain of an inadequate scripting interface/language and enhanced it.
  213. Look at the final interface and then decide. by ahfoo · · Score: 1

    If you're doing a device driver or something that interacts with conditions within the machine without a lot of user interaction then a text editor may be all you need because there's an implicit degree of organization within that environment.
    It seems to me that where the GUI can come in handy is in dealing with the human interface. This becomes truer and truer as the interaction becomes more and more meta --that is, as you have to account for more potential courses of action based on user input. If you don't have a development GUI here to help you hold all your conceptual place holders, you're fighting against yourself and will probably become frustrated with your work or develop your own GUI to save your project. Gee, maybe that's where these IDEs come from.
    So, the question is weak as usual, hardly more than flame bait. Meaningless debates about which is BETTER just get the kids all excited and start a few pissin contests at best. After all, most GUI dev tools have command line interfaces built in, so the distinction only appears clear to those who don't know any better.

  214. Best of both worlds by ddubois · · Score: 1

    Very nice to read the comments!

    I think that the best is learning everybody that behind the GUI world there is something else. Here in Europe new developers know a lot about GUIs (generally ONLY one). They can do a lot of amaying things usings tricks with them. Very impressive. The Drawbacks is when the have to use an other GUI, or even have to use a different tool they are not used to (Tuxedo, MSQueries,...) Usually we have to spend a lot of time with them teaching the "real world"!

  215. Best of both worlds by ddubois · · Score: 1
    Very nice to read the comments!

    I think that the best is learning everybody that behind the GUI world there is something else. Here in Europe new developers know a lot about GUIs (generally ONLY one). They can do a lot of amaying things usings tricks with them. Very impressive.
    The Drawbacks is when the have to use an other GUI, or even have to use a different tool they are not used to (Tuxedo, MSQueries,...)
    Usually we have to spend a lot of time with them teaching the "real world"!

    But what is funny is that after some times, we observe GUI gurus begining to use CLI. I think one should know about the both world: know how to use a GUI efficiently (I mean with kb shortcuts), and know how to use the CLI ofr automated tasks and other tricks.

    As sayed previously by other:

    Try to imagine an automated world only with a GUI...

    Try to imagine to pipe commands in a GUI world

    Try to imagine to put all the possible commands in the GUI of vi/XEmacs
    On the other hand:

    Try to imagine teaching the tricks of a grep piped with find to newbies

    I feel that GUI are good for intrductions, but evry body should know (learn) about the CLI world.

  216. Command Line? GUI? IDE? by cburley · · Score: 1
    A Command-Line Interface (CLI) and a Graphic User Interface (GUI) are both simply interfaces, which, theoretically, should be treated as orthagonal to an Integrated Development Environment (IDE).

    MS-DOS, for example, has a CLI, but is not an IDE. But while I can't think of any "GUI" that is an IDE, UNIX, which is CLI-based, is indeed an IDE.

    Now, I don't think of UNIX (e.g. Linux) as an ideal, out-of-the-box IDE, but it certainly includes the low-level functions necessary to make it into one, as well as some high-level functions.

    Certain things that a good IDE would offer programmers happen to map better to the modern ideal of a GUI than to the modern ideal of a CLI.

    For example, picking something from a displayed list is, in a typical GUI, a fairly natural thing to do, but not in a CLI.

    That is, when you "open" a directory/folder in a GUI, you not only see what is presently there, you can directly select an item for some other action.

    Whereas, with CLI's, it's generally assumed that when you enter the "ls" (or "dir") command, what you want is just a scroll-style listing of a snapshot of what is in the directory you've just "opened".

    There's no inherent reason a selection couldn't be made directly from that command's output, or that the output itself couldn't be made dynamic (change as the directory contents changes a la MacOS)...

    ...just as there's no inherent reason a GUI's "open" function couldn't be designed to generate just a single static snapshot of a directory for viewing.

    But with the GUI, there's not an obvious way to automate a use of such a viewing, since the rendering is done at such a low level (bitmapped graphics), and since we don't have commonly accepted models, or interactions, for directing such a viewing to be used in some different fashion (e.g. don't display it, pipe it into the GUI equivalent of 'grep' instead), the designers of what could be a conceptually simple function had to make it more complex, by having the display be "live", that is, somewhat real-time and directly manipulatable (is that a word?) by the user.

    Whereas, with the CLI, especially a UNIX-like one (which even MS-DOS somewhat copied, unlike some other early DOS-like systems), it's built in that, if a selection is desired, the output of 'ls' can be piped into some selector script; or, if dynamic update is desired, the command can be automatically re-run every few seconds; and so on.

    Personally, though "infected" with the delightful experience of having developed a smallish C app using Think C on the Mac around 10-12 years ago, I don't generally look forward to using GUI-based systems to develop code.

    Chief among the reasons is the fact that the quality and flexibility of GUI-based apps tends to be noticeably lower than than of CLI-based apps. And I can't have my IDE (however I effectively "define" it via usage) crashing or misbehaving on me while I do my work.

    E.g. I'm currently, on this particular notebook, getting "Error saving bookmarks file!" dialogs from Netscape (RH Linux 7.1), though I have no idea why, because there's no error code, no diagnostic message, and endless mucking with bookmark "open", "import", and "save as" menu items doesn't fix anything. (So each time I start up Netscape, I have to manually import my real bookmarks, and must save them manually whenever I add new ones.)

    With a CLI, this kind of stupid bug might well be less likely, because instead of mucking about writing code to create a dialog box, a simple "fprintf (stderr, ...);" might do, in which case the programmer might have bothered actually reporting the error code, maybe even the corresponding diagnostic message, file name, etc.

    That's just one trivial example of the general impression I have, namely, that GUI-based systems are inherently more complex, larger (in terms of memory usage), monolithic, and persistent (hang around when you don't want them to, e.g. when benchmarking or profiling) than their CLI-based counterparts.

    Further, I find GUI-based systems tend to be "behind the curve" with respect to CLI-based ones. Journaling or even periodically saving to a temp file of an edit buffer in case of system/app crash? That's been in various versions of Emacs (admittedly a bit of a cross between a CLI and a GUI, but it isn't mouse-dependent after all) for what seems like decades, but, sheesh, Netscape 4.x still doesn't do that for this "comment" box it lets me type this stuff into! (I've lost a few comments-in-progress that way.)

    So, aside from not having some state-of-the-art capabilities CLI's tend to, especially those relating to robustness and recoverability, GUI's tend to be less stable, crash more often, etc. (That is, I've lost more "work" due to Netscape crashes than I've ever had to recover due to Emacs crashes. I've been using Emacs variants for some 20 years now, Netscape for maybe two, and pretty much all I've used Netscape for in this sense is entering /. comments.)

    Okay, maybe I shouldn't pick on Netscape, since "everyone knows it's buggy", but isn't it somewhat illustrative that one of the most popular, smash-hit GUI-based apps of the 20th century still, in 2001, can't avoid crashing, won't automatically journal edited text, and so on?

    (And, yes, I've used IE, it's more stable, until it crashes, which, though comparatively rare, tends to crash the whole Windows environment...another effect of the tightly-integrated-GUI syndrome, as far as I can tell.)

    So GUI-based systems are prettier and let me do some things that are awkward under vanilla CLI's, but, for "real work", they're just too much more complicated, less flexible, less robust, and, by the way, less portable than CLI's, and that looks like it'll be the case for at least another 10 years. So while it's nice, in theory, to use an IDE that already has a button, dialog box, or menu item for every combination of two or three CLI-based commands, that doesn't make up for the losses in other areas. After all, if I really want those buttons, I can "bind" function and other keys to each of those combinations myself, in that CLI. And I can easily write other "special" items (scripts and such) to do things like dynamic display of arbitrary text, offer CLI-based selection of arbitrary items in a displayed list, and so on. These binding and scripts might have bugs, of course, but if they crash, they aren't likely to render inoperable the rest of "my" IDE. And when they're not actually in use, they won't necessarily take up system memory and time the way a typical GUI-based IDE does.

    Ideally, both CLI and GUI would be so well-designed that there'd be little difference. (E.g. an "echo $?" might make sense in the context of a CLI-based Netscape-like browser, to at least see the error status of trying to save bookmarks -- maybe that'd be a distinct process running in its own subshell, a sort of mini-daemon.)

    So, to me, the ability to use the mouse to point, click, draw, drag, and pop up is wonderful, but, given that I currently can't choose both simultaneously without greatly increasing complexity (what I have to memorize plus the complexity, including crashability and likely bugginess, of the software on which I'm depending), and that the features today's CLI's offer are critical, I'm not likely to commit to learning any GUI-based IDE in the near future.

    (Naturally, I've been thinking about how to best design "the ultimate CLI" upon which an IDE might be more ideally built, ditto for "the ultimate GUI", and, naturally, it'd be great if the system could be so well-engineered that most of it didn't care whether the interface being used at a given moment was a CLI, a GUI, or some arbitrary interface, such as one designed for use by the blind. But I've been dreaming about all that for well over 10 years now, and about the CLI part of it, well, ever since first using ITS back in the mid-'70s, so it's unlikely I'll actually design my own IDE to replace Unix, whether CLI- or GUI-based, anytime soon. I've got some pretty cool ideas, though! ;-)

    --
    Practice random senselessness and act kind of beautiful.
  217. winbatch by bored · · Score: 1

    The other posters have noted scripting languages. You should also look at winbatch, its more a GUI solution to a GUI problem. Basically its like an advanced macro recorder. I think it also has a script language you can use. You can just tell it to record and then do stuff in the GUI and it will capture the events for repeated playback. VC++ also has this type of stuff built in to a certain extent as long as you stay in VC.

    1. Re:winbatch by Skapare · · Score: 2

      Simply recording what I do in one GUI session won't really describe how I might want those actions to vary on the basis of varying conditions, either inside or outside the application, or even between multiple applications if the script is driving 2 or more (for example to extract data from one and put it into another in some special way that simple cut and paste won't accomplish).

      If the COM interface from a script to an application is truly complete and flexible, then it should be possible for the "script" (probably better done in C/C++/Java for this) to run an application on one machine, and present a GUI on another, and "replicate" the application that way, or even make it available to another script there via the same COM interface rules. If COM integrates network access, then it could already do this. Apparently the way Windows makes everything be a DLL has some power (but also security risks) to it.

      I have advocated separating user interface presentation from programming logic, as have many others. Unlike COM, my advocacy is to connect the separation via a protocol rather than a mere API (but there should be a standard API, too). Properly done, one program on the client end would be all you'd need for all applications, where the app logic runs on a separate server, in much the same way as one browser is all you need for quite a number of documents (but HTTP and HTML don't really do it well beyond documents).

      I'd also like to know how you got your posting to be on Wednesday December 31, @06:00. Maybe a billennium bug at /. ?

      --
      now we need to go OSS in diesel cars
  218. Hand code by bored · · Score: 1

    Of, course you still have to do real work! lol. I can't really imagine to many project though where a significant part of the GUI couldn't be handed by something like Borland C++ Builder. In the more recent version of BCB they have a Tframe component that removed nearly all my dependence on hand coded GUI components. There are just so many component libraries available that you can buy a component for just about any GUI widget behavior that can be thought of. About the only time I have to hand code a GUI anymore is for complex graphical rendering. Which is the real part of the application anyway. I can believe though with MFC you ended up recoding everything because its a beast and no one I know has ever managed to write much of their application using it. When the GUI's get more complicated than dialog boxes with push buttons MFC blows.

    I had a friend though that ended up writing massive amounts of GUI code because he refused to write a table link or ODBC front-end to his proprietary database. In the end he just ended up rewriting nearly all the database management components included with delphi just to save a two or three day leaning curve to learn how to interface his database to the existing components. Some things cannot be forgiven... lol


    1. Re:Hand code by battjt · · Score: 1

      OK, I'll give you that the MFC stuff we didn't completely rewrite, just modified stuff that the screen painter built. All the rest of the projects had hand coded GUIs.

      I think we have a misunderstanding though. We didn't rewrite any provided components, we used the components in code that we wrote. we used the screen painter for prototypes, but the final code was hand coded, and much smaller, faster and easier to maintain than the screen painter stuff. The handcoded app was also portable across IDEs while the screen painter stuff often isn't.

      Joe

      --
      Joe Batt Solid Design
  219. GUI vs CLI and IDE vs Loosly coupled, confusion by bored · · Score: 1

    Everyone seems to be failing to make a distinction between loosely coupled development environments and IDE's vs GUI's and CLI's. Probably because most of the IDE's are GUI.

    Frankly the GUI/CLI argument is an old one. I think the answer is more a case of personal preference and what kind of job is being done. Modern GUI's, macro recorders and script languages are as powerful a method of expression as CLI's with their multitude of scripting languages.


    IDE's vs Loosely coupled should be a no brainier. Its a lot nicer to be able to use a single environment that is tied together. A lot of people are arguing their emacs->make->gdb configuration is better than the assorted IDE's listed. In truth they are just reinventing the wheel with a group of CLI tools. Instead of accepting a pre packaged IDE sitting on top of command line tools like VC++ they are creating their own IDE using their favorite editor and a bunch of scripts. At that point its pretty much a no brainier that a custom environment designed for their particular project is better. Of course it probably took them three weeks to build a bunch of scripts to tie their resource editor, text editor, code browser, object browser, compiler, debugger, profiler, source control, packaging, etc tools together in a manner that is functional.


    So, the real question should have been is it better to use a prebuilt IDE or build your own? The answer to this is probably that it depends on the person. Personally I prefer using VC++ but I also have a large collection of scripts that I load into Xemacs when I'm using a Unix environment that allows me to things like checkout the current module from source control and check everything back in with a keystroke, or build the project and highlight any errors in a widow smart enough to open the offending modules so that I can edit the source line with a keystroke or two. I like to use a nice source browser that allows me to instantly open a new window and go to the module where the function I'm looking at is declared. All of these things require and IDE to be optimal, its just VC++ is preconfigured and I have to remember F12 is 'goto reference' and F7 is build (unless I change the keybindings). While I have about 2k worth of scripts I wrote to do it in emacs.



    So what exactly was the point again?

  220. Reduction to Equivalent by 4of12 · · Score: 2

    The GUI vs command line argument has raged on all fronts for years. And the gist of those arguments, including personal feelings, are telling. The proper choice depends on the user context.

    In essence, I'd say the GUI vs command line debate reduces to an internal evaluation of just how important are the tradeoffs between:

    • control
    • convenience
    where by "control" I'm referring to the command line flexibility that allows you to twiddle a Makefile so that one particular source file gets compiled with a special set of DEFINES and INCLUDE directory path specifications and compiler optimization levels. And that's without having to learn some IDE's Preference sub-sub-sub menu navigation in order to accomplish the task.

    Convenience is chosen when I'm willing to suffer some loss of control for the sake of rolling faster through a typical development cycle of automatically popping up to the next error, etc. An IDE is great for this kind of work (even IDE's in disguise like emacs with compile, grep and gdb modes.)

    Another poster had the right idea suggesting that command line and GUI should be interconvertible. Ideally, the IDEs should be able to let you wander out of the loop as you wish without having to climb and IDE-specific learning curve to do so.

    Interconvertability is especially important because software development projects move through different phases, where either approach may be appropriate to the task at hand and the user that is doing the task. (Eg, setting up automated regression tests, etc.)

    --
    "Provided by the management for your protection."
  221. Re:The IDE's just wrap command line - "Just"? by james(honest) · · Score: 1
    Potentially MSVC is little different than emacs or visual slick edit in providing a fancy editor over the top of command line tools. Indeed in managing a large project I find MSVC restrictive, and I'm contemplating moving to a bash script.

    However, take Together, from togethersoft.com. Sure, this wraps the java compilers, but its hardly just that. It does what only GUIs can do: talk to my visual brain in things it can understand. Literally, it augments my thinking, by doing what my brain cant: converting textual code into visual representations.

    One day, all development tools will be this way.

  222. AutoCAD by xmda · · Score: 1

    AutoCAD is a very good example of how to ingegrate both CLI and GUI. You can either type the commands or point and click on them in some toolbar or menu. Usually you learn the CLI variants of the commands after you have used it for a while. It would be nice if more applications worked like this. The problem is to make it logical enough (this maybe would not work that good in a word processor). The GUI versions of Emacs and VI should be good examples too.

  223. Depends on the user by rfisher · · Score: 1

    A colleague and I had a long debate on this topic. We both used to be Mac users/developers. He now uses Windows and Visual C++. I'm using Linux, vi, g++, etc. more these days.

    In the end, we had to agree that both GUI development tools and CLI development tools are about equal when you consider everything. For everything the GUI does well, there's a CLI alternative. For everything the CLI does well, there's a GUI alternative.

    He can't type, and even if he ever does Linux development, he's going to need a GUI environment to be productive. I, on the other hand, find myself more productive in a CLI environment.

  224. No, BC++ MUST be able to do better; I *know* that! by CRConrad · · Score: 1
    "Katravax" complains:
    ...and WHAM! 132K with borland's free C++ compiler (which, as best as I can tell after searching for hours and hours for an explanation, force links the runtime whether or not you explicitely call runtime functions because they embedded the entries in the runtime)
    Naah, that can't be -- *you* must be including it somehow, without noticing. I know Delphi doesn't do that: I've compiled and run a "pure-API" do-nothing "Hello World" demo[*], and that came to something like 12 KB in Delphi 3 and 16 KB in Delphi 5. (Or maybe it was 15 and 18 KB, respectively -- something like that, I can't remember.) And the compiler back-end behind Delphi and Borland C++ is the same one, so it can't be worse in C++ than in Object Pascal.

    Were you using the C++ Builder IDE to do this? If so, and if the IDE behaves like Delphi's (which I think it does), then maybe you haven't checked out the "View Project Source" menu option? (Under the 'View' or 'Project' menu; in Delphi, it's been moved around between them.) If you use *that* file, and not the "Main" one, then it'll work, I think.

    Hope this helps! If not, mail me -- the address is slightly munged, but I'm sure you can figure it out.

    [*]: From a Charlie Calvert book, IIRC; should also be available on his Web site. Basically, it was a straight translation into (Object-, but without using any OO) Pascal syntax of Petzold's / Schildt's C "Hello World" programs, with winMain and message loop and resource file and whatnot. (And you work that way all the time? VOLUNTARILY??? Well, it takes all sorts, I guess... :-)
    --

    Christian R. Conrad
    mail me at iki.fi ; same user ID as here
  225. Menu bars suck. Always. by Peter+Harris · · Score: 1

    Whether global at the top of the screen, or one-per-window, menu bars are a really horrible idea.

    They take up screen space all the time, and you have to go away from the place where you are working (the window contents) to go and look for the command you want.

    I prefer context menus every time, even (maybe especially) for my root window, rather than a task bar and "start menu" arrangement borrowed from Windows.

    The only justification for menu bars is as a reminder for newbies that there are menus. People not used to clicking the right mouse button to get a menu might otherwise assume your application doesn't do much.

    --

    -- What do you need?
    -- Gnus. Lots of Gnus.