←back to thread

71 points susam | 9 comments | | HN request time: 1.359s | source | bottom
Show context
HexDecOctBin ◴[] No.43673899[source]
Why is it that Pascal is supposedly so good for Rapid Application Development? Is it simply a historical accident, or does Pascal have some features that make it easier? What features would need to be added to C to make C a viable language for RAD?
replies(7): >>43673957 #>>43673971 #>>43674284 #>>43674335 #>>43674504 #>>43674573 #>>43676653 #
graemep ◴[] No.43673957[source]
I cannot see any reason why the RAD for Pascal (i.e. Delphi, and now Lazarus) could not exist for other languages. They just happen not to.

Imagine this - if those had not exists, would anyone say Pascal was a good RAD language.

I suppose what I might be missing is why Pascal was chosen as the language for Delphi.

replies(1): >>43673970 #
1. dardeaup ◴[] No.43673970[source]
One aspect of Pascal that helps is compilation speed. Pascal's nature allows for single-pass compilers. It may not sound like a big deal, but it's a huge cumulative effect.
replies(2): >>43674179 #>>43674237 #
2. graemep ◴[] No.43674179[source]
That is a good point. Repeatedly waiting for compile of build steps is a productivity killer and I think especially relevant for RAD.

I played with Lazarus recently and the whole process of creating a simple GUI was so painless.

3. EVa5I7bHFq9mnYK ◴[] No.43674237[source]
That definitely was a big deal in the 80s when I used it. You could compile a program in seconds, all in memory, while a C program needed 5 passes, each pass writing and reading from quite slow hard disks of the time.
replies(1): >>43674381 #
4. WalterBright ◴[] No.43674381[source]
My C and C++ compilers (Datalight, Zortech) only required 2 passes:

1. preprocessor/parser/semantic all at once

2. optimizer (optional)

3. code generator

Later on in the 80s these were merged into one executable.

replies(1): >>43680637 #
5. EVa5I7bHFq9mnYK ◴[] No.43680637{3}[source]
CPP

C0

C1

C2

AS

LD

And an optional AR

replies(1): >>43683462 #
6. WalterBright ◴[] No.43683462{4}[source]
I know what the conceptual passes are, but ZTC merged them, including the multiple conceptual passes the CPP does.
replies(1): >>43685021 #
7. EVa5I7bHFq9mnYK ◴[] No.43685021{5}[source]
Those were not conceptual passes, but actual standalone programs executed in that order, to compile a C program. Each program operated within 64KB RAM, shared with the OS and all the drivers.
replies(1): >>43685436 #
8. WalterBright ◴[] No.43685436{6}[source]
And Zortech C, for 64K machines, had two standalone programs to compile a C program to an object file.
replies(1): >>43686258 #
9. EVa5I7bHFq9mnYK ◴[] No.43686258{7}[source]
Cudos to Zortech C