[comp.sys.amiga.advocacy] Is C a High-level Language?

bernie@metapro.DIALix.oz.au (Bernd Felsche) (05/10/91)

In <1991May8.042432.27636@NCoast.ORG> davewt@NCoast.ORG (David Wright) writes:

>	I know that 100% of what I write is in C or another HL that I could
>reasonably expect to be available for the new machine, and I would expect to
>be able to simply recompile my own software in a matter of minutes on the
>new machine, just as you say people will do with the nExt.

>	Do you really think that serious programs like WorkPerfect, Maple,
>etc. etc. which are available on many different platforms are written in
>some form of AL?

I have always believed that C is little more than protable
assembly language. Although it pretends to be an HLL, before
ANSI, there was no way it would fit many people's ideas of a
HLL.

Language Generations:
 1GL:	Machine code
 2GL:	Assembler
 2.5GL:	C
 3GL:	C++, Eiffel
 4GL:	Any language that hides how the data is stored and presented.
 5GL:	Something that writes itself from your specifications.
 6GL:	Something that works out the specifications.
 7GL:	Somebody else's problem :-)

This is certainly nor a language flame, I like portable assembler :-)

-- 
Bernd Felsche,                 _--_|\   #include <std/disclaimer.h>
Metapro Systems,              / sale \  Fax:   +61 9 472 3337
328 Albany Highway,           \_.--._/  Phone: +61 9 362 9355
Victoria Park,  Western Australia   v   Email: bernie@metapro.DIALix.oz.au

peter@sugar.hackercorp.com (Peter da Silva) (05/15/91)

In article <1991May10.055512.29552@metapro.DIALix.oz.au> bernie@metapro.DIALix.oz.au (Bernd Felsche) writes:
> I have always believed that C is little more than protable
> assembly language. Although it pretends to be an HLL, before
> ANSI, there was no way it would fit many people's ideas of a
> HLL.

You been spoiled, mate:

> Language Generations:
>  1GL:	Machine code
>  2GL:	Assembler
>  2.5GL:	C
>  3GL:	C++, Eiffel
>  4GL:	Any language that hides how the data is stored and presented.
>  5GL:	Something that writes itself from your specifications.
>  6GL:	Something that works out the specifications.
>  7GL:	Somebody else's problem :-)

Well, other than these sort of categories being pointless, in terms of how
high level they are I'd rank languages like so:

	Machine language
	Assembly language
	Forth, BLISS, etc... (structured assemblers)
	C, Pascal, Modula (Statically typed procedural languages)
	C++, Simula (statically typed object-oriented languages), and
		Basic, Perl (statically typed interpreted languages)
	Smalltalk, Scheme, Lisp, REXX, TCL (dynamically typed languages)
	UNIX shell, dBase, etc (database/dataflow languages)
	Prolog, Make, etc (goal-seeking languages)

There are a mixture of old and new languages here, so don't be surprised by
where older stuff finds itself. Also, you can write higher level programs
in lower level languages by applying a little discipline and maybe implementing
an interpreter... so the fact that you can do goal-seeking in Eniac machine
code isn't relevant.
-- 
Peter da Silva.   `-_-'
<peter@sugar.hackercorp.com>.

bernie@metapro.DIALix.oz.au (Bernd Felsche) (05/17/91)

In <1991May15.114537.22616@sugar.hackercorp.com>
   peter@sugar.hackercorp.com (Peter da Silva) writes:

>In article <1991May10.055512.29552@metapro.DIALix.oz.au> bernie@metapro.DIALix.oz.au (Bernd Felsche) writes:

>> I have always believed that C is little more than protable
>> assembly language. Although it pretends to be an HLL, before
>> ANSI, there was no way it would fit many people's ideas of a
>> HLL.

>You been spoiled, mate:

:-)
Not really, I still do a lot in C (more than is good for
me), but I try to do as much as possible at a higher level.
(Shell programming is great! I'll give anything a go if I
can see a use for it.) Sometimes, I even use assembler
(WD-16 and 68k).

>> Language Generations:
>>  1GL:	Machine code
>>  2GL:	Assembler
>>  2.5GL:	C
>>  3GL:	C++, Eiffel
>>  4GL:	Any language that hides how the data is stored and presented.
>>  5GL:	Something that writes itself from your specifications.
>>  6GL:	Something that works out the specifications.
>>  7GL:	Somebody else's problem :-)

>Well, other than these sort of categories being pointless, in terms of how
>high level they are I'd rank languages like so:

Couldn't you tell that I was having a go at 4GLs? :-)

The real point is that C is not much more than portable
assembler. (I mis-typed the original post.) There is little
to gain by anybody writing in assembler, especially
applications like word-processors. Sure, it goes faster, but
the bugs go faster too, and it take _much_ more skill to
debug assember source than C. (Usually, sometimes I cheat
and look at the assembler code generated by the C compiler,
if I'm lost in C pointer obfuscation.)

>	Machine language
>	Assembly language
>	Forth, BLISS, etc... (structured assemblers)
>	C, Pascal, Modula (Statically typed procedural languages)
>	C++, Simula (statically typed object-oriented languages), and
>		Basic, Perl (statically typed interpreted languages)
>	Smalltalk, Scheme, Lisp, REXX, TCL (dynamically typed languages)
>	UNIX shell, dBase, etc (database/dataflow languages)
>	Prolog, Make, etc (goal-seeking languages)

Very nice. I like the way in which the "AI" languages blend
into the more common one. Also, some of the language
categories you give may be a bit fuzzy around the edges,
especially the UNIX shell(s), which are "dynamically" typed
"- actually "type-less".

Variable typing and language structuring seem to be your
metrics for categorisation. Mine happens to be ease-of-use --
which is inversely proportional (in most cases) to the
ability to control the guts of the machine.

BTW: You forgot about Liverpool. It's goal-seeking too :-)
(Sorry 'bout that, severe pun attack)

>There are a mixture of old and new languages here, so don't be surprised by
>where older stuff finds itself. Also, you can write higher level programs
>in lower level languages by applying a little discipline and maybe implementing
>an interpreter... so the fact that you can do goal-seeking in Eniac machine
>code isn't relevant.

The name of the game is to be multi-lingual. If one knows a
dozen languages, which cover the range you've given, then
most tasks can be handled efficiently, and produce
maintainable code.

I only admit to knowing half a dozen (distinct) languages.
-- 
Bernd Felsche,                 _--_|\   #include <std/disclaimer.h>
Metapro Systems,              / sale \  Fax:   +61 9 472 3337
328 Albany Highway,           \_.--._/  Phone: +61 9 362 9355
Victoria Park,  Western Australia   v   Email: bernie@metapro.DIALix.oz.au