Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!uunet!munnari.oz.au!uniwa!DIALix!metapro!bernie From: bernie@metapro.DIALix.oz.au (Bernd Felsche) Newsgroups: comp.sys.amiga.advocacy Subject: Re: Is C a High-level Language? Message-ID: <1991May17.070539.29847@metapro.DIALix.oz.au> Date: 17 May 91 07:05:39 GMT References: <1991May8.042432.27636@NCoast.ORG>> <1991May10.055512.29552@metapro.DIALix.oz.au> <1991May15.114537.22616@sugar.hackercorp.com> Organization: MetaPro Systems, Perth, Western Australia Lines: 84 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 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