[net.lang] more language reviews

taylor (03/30/83)

For sake of arguement, here my summary views of all the languages I know:


LISP -  wierd, hard to figure out, but I am sure that somewhere, someone
	knows and loves it.  I think it is too damn complex to be a viable
	language.

C    -  much better.  Its advantages are it is easy to use, has a small,
	sensible (SENSIBLE) structure and syntax, and allows the programmer
	to do almost anything (including reasonably easy interface with the
	OS).  On the other hand, some C code is soooo cryptic that it turns
	out to be easier to rewrite the whole %&%$& program than try to 
	modify it.   I use it for just about all my own programming tasks.

PASCAL- Swell language to learn programming from; clean, easy to read (of
	course this is highly dependent on the programmer....) and supports
	modularity, BUT I think that it is tooo structured (1 entry point
	and 1 exit point ISN'T always the best way to code!) and the syntax
	is a bit too confusing (do you know where the semicolon is optional,
	and where it CANNOT appear???  Does anyone???)  I use this for all
	my classwork.  *sigh*

FORTRAN-well...I use it at work.  Not too bad, actually.  The biggest problem
	is that it doesn't support global variables without the inclusion of
	the /COMMON/ statement, which can understandably be a big pain if there
	are 100's of variables!  Overall I'd rather not use it, though.

ADA   - Too soon to tell, but I suspect that it is going to suffer from the
	too much too cofusing syndrome, where the programmers begin to leap
	off of tall buildings due to the 'billions and billions' of language
	rules that must be learned.  I'm writing an ADA compiler, so I guess
	I should be more positive.  Oh well...

PROLOG- LISP without the confusion (and parenthesis).  Great for AI and just
	fun sort of stuff (puzzle solving etcetera) but I would not want to
	write a screen-editor or data base in it!  Its high points are its
	rule-based solutions with (!!) infinite backtracking (!!) and the
	fact that it is interpretive (I like interpreptive languages.)

BASIC - Much to the disgust of many high-and-mighty net.lang and USENET people
	I LIKE BASIC.  It is very easy to learn, reasonably consistent, and
	offers immediate feedback (no edit-compile-link-run-edit-com...).
	On the other hand, it does NOT support modularity in any sense of the
	word, and at times the code becomes completely unreadable.  I would
	use it to teach my Parents programming, but wean them to PASCAL as
	soon as possible.  (from there...I don't know)
	(I don't have kids, but if I did...)

ASSEMBLY- Not as bad as most people think.  I feel that all REAL programmers
	should be reasonably fluent in assembly language since it is in writ-
	ing assembly code that really teaches you how the machine works.
	Of course it is not 'user-friendly' (pardon the phrase) in any way,
	and most things become a real pain to write.  I use it for routines
	that HAVE to be as fast as possible.  (I/O...math...etc)

PL/1  - Oh boy!  Talk about a syntax gone mad!  This is probably one of the
	worst languages I have ever had the misfortune to use.  It is so
	confusing, and so LARGE that I have seen 'professional' PL/1 program-
	mers at a complete loss when it comes time to modify their old code.
	I mean they are lost at the STATEMENT level, not even the data structure	or modularity level.   Wierd.  I think FORTRAN is better than this.

	Well, that about exhausts my languages.  To conclude, I think that
the ideal language should support;

	1) System level and OS calls with grace (no 'execl' stuff)
	2) Incremental development (if a routine is not written yet,
	   the programmer shouldn't have to put a 'stub' in the code...)
	3) Modular design with static and dynamic variables at any lexical
	   level (ie subroutines can have dynamic vars (like PASCAL) and
	   static vars that are 'history sensitive' in that they keep the
	   old value next time the routine is invoked (like FORTRAN (honest))
	4) The language should support interpretation and compilation,
	   since it is a heck of a lot easier to debug a program by typing;
	   "change" "run" than "edit" "change" "compile" "link" "run" (not
	   to mention the time consumed compiling!)  (LISP is the only language
	   that I know (oops.  BASIC too) that supports this)
	5) There shouldn't be a distinct line between the 'programming language
	   environment' and the 'operating system environment' because there is
	   no real reason to burden the programmer with this garbage. (BASIC is
	   the only language that supports this: at least on the micro's)
	6) optional abbreviation.  That is, if the programmer wants to say
	   'show me all files, size greater than 500 bytes' rather than
	   'files, size>500b' it should be ok (notice that the comma indicates
	   the beginning of the arguements...and that this is obviously more
	   geared towards interpreters than compilers!)

	
	(!!!) Feel free to flame at me.  (!!!)


					With my asbestos on. (spelling??)

					-- Dave Taylor

					..sdcsvax!taylor

ps: Apologies to kimf for the redundancy.

		
				I hope this helps you.
				feel free to write back....


						-- Dave Taylor
						..sdcsvax!taylor

tim (03/31/83)

LISP is "too complicated"? Are we talking about the same language?
How can a language with only two syntactic rules be complicated?

Tim Maroney
a terminal Lisp hacker

alegria (04/01/83)

What do you mean by '...the languages I know'?  As for Lisp and Prolog,
you gave me the impression that you don't 'know' much about them.
Referring to Lisp as a 'too complex language'... and to Prolog as
'...LISP without the confusion (and parenthesis)...' only proves my point.

First, Lisp as a programming language couldn't be much simpler.  I
wouldn't be surprised if you had questioned the complexity of many Lisp
programs, but I found quite strange your remarks about the complexity of
the language.  After all, Lisp involves only a very small number of
principles!  Secondly, Prolog is not like Lisp!  Prolog is more of a
relational language than a functional one.  It is based on a subset of
logic (Horn clauses) and not on lambda calculus.  Just because Lisp and
Prolog are essentially used in the same problem domains that does not
qualify them as 'alike'.  Finally, how can someone that have STUDIED
Pascal find its ';' insertion rule hard?

Why don't we, in this forum, keep our comments to languages we have really
STUDIED and USED?  Making statements about things we do not KNOW will only
promote confusion and contribute to the establishment of 'religions' around
languages.  I know that most of the people interested in this forum are not
even interest in hard theoretical issues in language design.  But, it would
help if, before posting an article,  we ask ourselves ...

  'Do I know what I am talking about?'

If you are not sure, at least do not make it sound like a statement or a fact.


Jose' Alegria
Department of Computer and Information Science
The Ohio State University
...!cbosgd!osu-dbs!alegria