ACT Release GTK Based Development Environment
aidan skinner writes: "ACT have a new GTK based IDE out for Ada, C and C++, called GPS. There's a Press
Release, Quick Tour(pdf) and Detailed Tour. It's also apparently editor neutral, so I don't have to give up my beloved emacs... Sweet!"
Ada is actually a pretty darn clean language compared to C++ and Ada95 added a lot of object-oriented (gotta have those buzzwords to survive) features without really making the code uglier.
Then again, it's pretty hard to be uglier than C++.
Plus it has support for tasks (think threads) which have been in the spec since '83. Ahem, as long as the *cough* compiler *cough* works.
Ada uses (a = b) instead of (a==b) (worst idea ever). Assignment is ":=". It has "and then" and "or else" for explicit short circuiting.
It uses "begin" and "end" instead of "{" and "}", but the "end" supports an optional additional argument which must be the name of the function or loop (you can label loops). You can call a function like this:
blah(a=>1, b=>2, c=>3) where a, b, and c are presumably the names of the arguments in the function's spec. They can be in a different order. But this way, the compiler will check if you have any arguments missing.
It's strongly typed, so it's very helpful at finding bugs at compile time. And Ada has a powerful package system to support data encapsulation. And I love the way Ada's syntax works for generics (templates).
Probably it's bane is the fact that it is case-insensitive. Which is really a shame, but that's probably the reason why it will die.
Problem is, it doesn't work. Try installing it on a Mandrake system, then building even the simplest project. It barfs all over the place.
I tried asking the developers for assistance as to why nothing would freakin' build. Or any clue as to how to use Glade with it - and received NO REPLY.
Any websites out there as to how to get Anjuta to actually WORK?
--- Jump!! Fire!! Bullet time!! - Lego version of the Matrix
> Ada, eh? I sincerly thought that this language was dead, along with Lisp, Fortran
and Cobol, the other dead dinosaurs-era "programming" languages.
I suppose you're trolling, but in case you aren't...
The current Ada standard is Ada 95, 7 years old. A standard for Ada 0x is under development right now.
There's a surprising lot of stuff going on in the Ada world right now. An Ada compiler will be integrated with GCC starting with version 3.1 (as an optional component, actually, as with Fortran). Also, the new GNU Visual Debugger is written in Ada; it supports languages on a plug-in basis, with plugins currently available for C, C++, and (of course) Ada.
Part of what's driving things like GPS and GVD is the maturation of GtkAda, a "thick" Ada binding of GTK+. This is a very polished free {beer,speech} product: it comes with 475 pages of PostScript documentation. (The bindings are also fully OO.)
I won't bother commenting on the pros and cons of Ada as a language, since everyone knows "My language is best!" -- regardless of who the speaker is.
Sheesh, evil *and* a jerk. -- Jade
You shouldn't dereference NULL because the kernel owns that memory and you'll get a segmentation fault (memory protection error):
// This will crash here with a SEGFAULT
int main(int argc, char *argv[])
{
unsigned char *pointer;
pointer = 0;
*pointer = 1;
return 0;
}
Don't Panic...
It's not really true that Java doesn't have pointers. In fact EVERY object in Java is accessed via a pointer. It just tries to hide them via simpler syntax.
// The following will throw a NullPointerException because m is null.
MyClass m;
m.doSomething();
// The following will work
MyClass m = new MyClass();
m.doSomething();
So, m is really a pointer, but the dereference syntax is the period rather than the '->'.
The other thing, of course, is garbage collection. I don't ever have to call 'delete m;' as I would in C++. Doing 'm = null;' is often useful to help keep the memory footprint down. It makes the memory used by m eligible for garbage collection (assuming noone else has a copy of the pointer).
Well, although the warning seems right along the lines of "Don't touch the positive and negative leads a car battery", the results are somewhat less cool. You just get a a run time error (depends on your platform as to what you get, a Segmentation Fault from *nix, a GPF from windows, ect) that crashes a program, no fireworks, no fires, not even a puff of smoke. As far as how you do this //everything that would be before, such as main, skipped for brevity
int *a;
a = NULL;
*a = 5; //The star denotes a dereference, this will crash right here..
Along the same lines, youd encounter a dereference situation more common in something like this...
int *a = new int [5]; //dynamic array of ints.. //some code to work with array here ...
delete [] a; //OK were done with out dynamic array, clear it
a = NULL; //assigned to NULL for ease //some more code so you forget that you cleared a and assigned it NULL for housekeeping purposes
*a = 4; //whoops.....
things like that happen more often than youd think, the warning was there so it sticks out in your mind so you can remember little things like that, a very basic mistake, just be weary of it.
Its also common in function calls that use pointers as paramters.
Well if you look at the other products from GNAT you will see that they are publically available. Their Ada95 compiler GNAT is also released publickly and is now being integrated with gcc 3.1! Also check out the debugger frontend GVD which you can find here: http://libre.act-europe.fr/gvd/
It is very good and much faster than DDD.
So we will see in Q4 if it will be released to the public or not.
Preben
--
For me, Ada95 puts back the joy in programming.