Posted: Sat Jul 16, 2005 1:56 pm Post subject: The Advantages of Eschewing IDEs for Learning
Integrated Development Environments can be very handy, but for the most part, they are designed for programmers building large complex programs, rather than students learning the most basic aspects of programming.
What's a project?
When a student sits down to write his or her first program, that program won't be anything large enough to even remotely be classified a project.
Yet most IDEs will at least encourage a user to create a project. Yes, single source code files are often an option, but why present the choice at first? Offering students choices at this point in their education is just unnecessary confusion.
Using a text editor and command-line compiler this is not a problem.
Where does the compiled file go?
So you set the location of the compiled program in a dialog. Well, you have to know how to find that dialog, but that's not even the primary problem. Once you've set that, you can forget about it.
Beginning programmers should always think about what's going on: what they're creating and what they're changing.
But I have to know how to use the command-line...
Get over it.
No, seriously. Suck it up and learn. It's an incredibly valuable skill, and it gives one additional insight into the nature of directories and files.
What is source code?
IDE users may be tempted to think of source code as something magical. Some special data format.
Source code is plain text. Using a plain text editor to write a program will make that apparent.
Automatic API docs are bad
They're handy later on, but knowing how to manually search for information on the API you're using is vitally important.
Google is your friend.
IDEs aren't forever
IDEs get updated, replaced, rearranged... and one's knowledge about how to use a particular IDE is quickly outdated. The underlying programming languages, though, are typically much slower to change. Invest your time in learning the language.
IDEs have specialized tools...
Command-lines have general purpose tools.
Think in the abstract. You have tools for processing plain text at the command-line. You have source code that is plain text. Therefore, you have tools for dealing with source code.
Sponsor Sponsor
Delos
Posted: Sat Jul 16, 2005 2:32 pm Post subject: (No subject)
Good way of looking at it, I'd say. Now, since we the masses are hardly ever satisfied, would you be able to provide some examples (perhaps in Ruby) that show how using command-line has advantages over IDE? I have a funny feeling that this is a lot easier said than done...but you're creative!
1of42
Posted: Sat Jul 16, 2005 3:37 pm Post subject: (No subject)
While I'm starting to see what wtd means by pitfalls, I honestly think a lot of these issues are very contrived. The last time I saw someone who thought a .java or .cpp file was some magic format was... never. Honestly, if you're smart enough to write a program, these things should be blatantly obvious.
wtd
Posted: Sat Jul 16, 2005 4:14 pm Post subject: (No subject)
1of42 wrote:
While I'm starting to see what wtd means by pitfalls, I honestly think a lot of these issues are very contrived. The last time I saw someone who thought a .java or .cpp file was some magic format was... never. Honestly, if you're smart enough to write a program, these things should be blatantly obvious.
You'd think so. Don't worry, that just means you're a naive optimist. There are worse things to be.
Sit in a community college 100 level CS course sometime.
wtd
Posted: Sat Jul 16, 2005 4:35 pm Post subject: (No subject)
Delos wrote:
Good way of looking at it, I'd say. Now, since we the masses are hardly ever satisfied, would you be able to provide some examples (perhaps in Ruby) that show how using command-line has advantages over IDE? I have a funny feeling that this is a lot easier said than done...but you're creative!
Well, Ruby is a great one to use from the command-line, since there's no compilation step.
The first thing to emphasize with Ruby is that you can use the irb program to run code interactively. I mean, why create a file just to write a "Hello world" program.
And of course we can use this for multi-line code.
code:
irb(main):002:0> def hello
irb(main):003:1> puts "Hello world"
irb(main):004:1> end
=> nil
irb(main):005:0> hello
Hello world
=> nil
irb(main):006:0>
Of course, at some point you'll want to create a program and run it all at once. That's simple. Just put your code in a text file with a ".rb" extension. Running it is then as simple as:
code:
$ ruby my_program.rb
At some point, too you're going to wonder: can I syntax check my file? Well, that's easily accomplished.
code:
$ ruby -c my_program.rb
And we can quickly run single lines of code without even going into irb.
code:
$ ruby -e'puts "Hello world"'
Hello world
$
We can pair this up with the "-p" option to create a very quick tool for manipulating files.
code:
$ cat > foo
hello world
foo bar baz
$ ruby -p -i.bak -e'gsub /[aeiou]/ do |vowel| vowel.upcase * 2 end' foo
$ cat foo
hEEllO wOOrld
fOOOO bAAr bAAz
$ cat foo.bak
hello world
foo bar baz
$
[Gandalf]
Posted: Sat Jul 16, 2005 5:37 pm Post subject: (No subject)
Yep, now I see why interactive interpreting is useful - its pretty much like changing your program, then compiling it to test it, but much more convenient.
Learning command line is not only useful to programming, but it also allows you to do some things that otherwise you couldn't without getting a specific program. There's a whole bunch of things that are easier to do in command line than in a GUI environment.
"IDEs aren't forever" - I've never really understood why people mixed up IDE's and programming languages. It's... I just can't imagine how you could mix them up. Don't believe people think that IDE's are programming languages? Look around these forums a bit.
Martin
Posted: Tue Jul 19, 2005 3:44 am Post subject: (No subject)
I think the problem is that Windows doesn't offer a useful shell environment, so not using an IDE can be challenging.
With linux, when coding in vim or emacs everything works out nicely because to compile it's just a few keystrokes. With Windows however, one has to switch between windows to compile code in a non-IDE environment. The IDE, although definitely an example of killing a fly with a shotgun, provides containment for everything the user is doing.
What I want is an intuitively designed IDE based around vim. One where I can do absolutely everything without taking my hands off of the keyboard, with features like code completion and a debugger. And a web-browser that uses vim commands.
:wq
McKenzie
Posted: Wed Jul 20, 2005 2:56 pm Post subject: (No subject)
My biggest problem is that at my current school board they don't allow students access to the shell because they fear that the students will abuse the privilege.
Sponsor Sponsor
bugzpodder
Posted: Wed Jul 20, 2005 9:10 pm Post subject: (No subject)
a student will gain more from debugging right from the source code (consider some console output) rather than tracing with an IDE debugger.
rizzix
Posted: Thu Aug 04, 2005 10:39 am Post subject: (No subject)
logic problems can best be solved through tracing.
Aziz
Posted: Sun Jul 16, 2006 11:38 pm Post subject: (No subject)
I personally use an IDE . . . probably because I'm lazy, and like to avoid extra work. I started out (long ago) with DOS, and I know my way around the command prompt, but the organization of the IDE is what I like the most. I can compile, run, and check API (well, for the standard library, at least) quickly in the same program. It's small (JCreator) and I don't use the project or debugging features (if it has debugging features, never really looked in to it i always peferred debugging myself because I know what's going on). I also like the "data view" of JCreator. I can see in a little sidebar all my methods and members. I've thought about looking at text editors with syntax editing. For a good text editor for me, though, it'd have to have:
- Syntax highlighting
- Auto-indent (I wouldn't want to press space 4 times EVERY new line)
- Shortcuts to compile/run (and possibly jar!) (Pain in the ass to switch to command line everytime to compile, which I do often)
And I would prefer:
- API search (no problem to do in browser, but again, lazy)
- Data view
If anyone's got a good simple texteditor out there like this? I don't really use most of the features that JCreator offers, I mostly like the organization and at-you-fingertips options.
[Gandalf]
Posted: Sun Jul 16, 2006 11:55 pm Post subject: (No subject)
Aziz, try out Crimson Editor, it'll have most of the features you ask for. It's also far, far, far more lightweight and faster than JCreator. Probably my favourite editor, and definately my favourite editor for Java.
Aziz
Posted: Mon Jul 17, 2006 8:33 am Post subject: (No subject)
Crimson editor? I'll check it out. I downloaded jEdit last night with some plugins but I'm not to sure about it.
EDIT: Does that blow or does that blow? Code completion is onyl available in the Pro version
Cervantes
Posted: Mon Jul 17, 2006 11:46 am Post subject: (No subject)
jEdit seemed to be really awesome, at first. But then I installed the Ruby plugin, and typing was laggy. But if you're doing Java, you don't need the Ruby plugin, so you're probably okay.
SciTE is another good editor, though I've lost part of my love for it, mostly due to crappy out-of-the-box settings. (Not that you buy it and it comes in a box. Download here: http://www.scintilla.org/SciTE.html)
Aziz
Posted: Mon Jul 17, 2006 1:37 pm Post subject: (No subject)
I've looked at Crimson Editor, too. I think I'm going to stick with JCreator. Probably biased but it does what I need and I'm used to it. Just a comfort thing. I suppose the real tool is being able to do it with anything. If you can do it with notepad and command line, then IMO you're good to go, but with those basic skills, I think some organization and convience is a plus, for those that can "handle" it (meaning, still realize what they're doing. Sorta like sitting at a computer with RTP and writing code, where you already know how, instead of using the stupid hsa package)