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