An Introduction to Programming Languages
Author |
Message |
Andrew Cook #1 / 90
|
 An Introduction to Programming Languages
Hi, I have written an introductory survey of programming languages: http://www.*-*-*.com/ I hope it will be useful - I would appreciate corrections and comments. I have tried to write something I would have found useful a while ago, and I hope it will help others who are starting to explore new languages. (There's also a more conservatively formatted version at http://www.*-*-*.com/ if people prefer/want to make copies). Andrew http://www.*-*-*.com/ Sent via Deja.com http://www.*-*-*.com/ Share what you know. Learn what you don't.
|
Fri, 08 Feb 2002 03:00:00 GMT |
|
 |
Arthur T. Murr #2 / 90
|
 An Introduction to Programming Languages
Quote: > I have written an introductory survey of programming languages: > http://www.*-*-*.com/
You have written a really fascinating paper and I have saved it to disk for future reading and study. Your document is a kind of topology of the whole field of programming languages, chock full of valuable tidbits which we neophytes might otherwise have had to spend years accumulating from widely disparate sources. Quote: > I hope it will be useful - I would appreciate corrections and
Midway through, you mention the opposing US east coast and west coast mentalities, and you misinform that MIT is on the West Coast, but you were probably thinking of a programming bastion like my alma mater Berkeley, or Stanford, or UCLA, etc., -- not MIT. Quote: > comments. I have tried to write something I would have found > useful a while ago, and I hope it will help others who are > starting to explore new languages.
In the same vein -- although I have long resisted making this plea -- the time has come when as Mentifex/Mindmaker I/Arthur must ask some outrageous favors from all to whom these present tidings come. The first noncommercially available AI, Mind.Forth, needs to be taken apart, analyzed, enhanced, and ported to new languages. Accordingly, if you are just beginning to learn to program, and I know it sounds chauvinistic, but it is a once-in-two millenniums coelestial convergence of Shakespearean nature: There is a tide in the affairs of men, Which, taken at the flood, leads on to fortune; Omitted, all the voyage of their life Is bound in shallows and in miseries. Mind.Forth is looking for a few good minds. Please inspect http://www.*-*-*.com/ .{*filter*}ia.edu/classes/551/primer.txt -- A Beginner's Guide to Forth, by Julian V. Noble -- and learn simultaneously both the newly {*filter*} AI language Forth and the http://www.*-*-*.com/ #proglangs target language of your choice for re-creating the Forthmind. Quote: > (There's also a more conservatively formatted version at > http://www.*-*-*.com/ > if people prefer/want to make copies). > Andrew > http://www.*-*-*.com/
|
Fri, 08 Feb 2002 03:00:00 GMT |
|
 |
Matthew M. Huntba #3 / 90
|
 An Introduction to Programming Languages
Quote:
> Hi, > I have written an introductory survey of programming languages: > http://www.andrewcooke.free-online.co.uk/andrew/lang.html > I hope it will be useful - I would appreciate corrections and > comments. I have tried to write something I would have found > useful a while ago, and I hope it will help others who are > starting to explore new languages.
It's a rather naive chat about languages you happen to know something about. If you are serious about this, you do need to study the theory and history of programming languages in a lot more depth. A couple of points - You use "declarative" where others would use "logic". The accepted meaning of "declarative" in programming languages is as opposed to "imperative", and includes both functional and logic languages. When you wrote "commercial languages", I thought you were going to talk about things like Cobol, but you actually talk about C. For a long time, C was *not* a commercial language - its original user community was in academia. Matthew Huntbach
|
Fri, 08 Feb 2002 03:00:00 GMT |
|
 |
Leslie Paul Davi #4 / 90
|
 An Introduction to Programming Languages
Isaiah, ch. 28 v. 29 This also cometh FORTH from the LORD of hosts, which is wonderful in counsel, and excellent in working. GL -- Paul W2SYF/4 Ft Lauderdale "Heisenberg may have slept here... " Leslie Paul Davies
|
Fri, 08 Feb 2002 03:00:00 GMT |
|
 |
Andrew Cook #5 / 90
|
 An Introduction to Programming Languages
Quote:
> It's a rather naive chat about languages you happen to know something > about. If you are serious about this, you do need to study the theory > and history of programming languages in a lot more depth.
I think I make it pretty clear that I am no expert, and that it's not intended to be a great scholarly work. Quote: > You use "declarative" where others would use "logic". The accepted meaning > of "declarative" in programming languages is as opposed to "imperative", > and includes both functional and logic languages.
OK, I'll change that. Also, the comemnt about MIT being on the west coast is a bit embarassing if it's not (I'm English, but that's no excuse...) Quote: > When you wrote "commercial languages", I thought you were going to talk about > things like Cobol, but you actually talk about C. For a long time, C was > *not* a commercial language - its original user community was in
academia. I use that group to talk about languages that people like me use to write commercial software. Whatever the historical origins, I'm sure people in that position don't feel they are using an academic language. But I'll add some qualifications. Any other suggestions would be appreciated. I didn't have a formal education in computing and it's not likely I'll get one now, so the only way I can "study in more depth" is if you give pointers and/or point out errors. Thanks, Andrew Sent via Deja.com http://www.deja.com/ Share what you know. Learn what you don't.
|
Fri, 08 Feb 2002 03:00:00 GMT |
|
 |
Lynn Winebarg #6 / 90
|
 An Introduction to Programming Languages
Quote: >It's a rather naive chat about languages you happen to know something >about. If you are serious about this, you do need to study the theory >and history of programming languages in a lot more depth.
On a sort of related note, are there any texts about how to design a new language? It's a pretty esoteric art, so I'm not surprised to not find anything at Barnes and Noble, but I would also find it a little surprising if those who practice the art haven't felt like writing down their ruminations on what techniques/rules of thumb/whatever have been successful. Lynn
|
Sat, 09 Feb 2002 03:00:00 GMT |
|
 |
Sammy Mitchel #7 / 90
|
 An Introduction to Programming Languages
Quote: > On a sort of related note, are there any texts about how to design a >new language? It's a pretty esoteric art, so I'm not surprised to not >find anything at Barnes and Noble, but I would also find it a little >surprising if those who practice the art haven't felt like writing down >their ruminations on what techniques/rules of thumb/whatever have been >successful.
My favorite text in this area is "Programming Languages: A Grand Tour", Computer Science Press, edited by Ellis Horowitz. It contains articles by various authors, about various languages. For instance, "On the Design of Programming Languages", by N. Wirth, and "Hints on Programming Language Design", by C.A.R. Hoare. Algol, Pascal, Lisp, CLU, Modula, Ada, fortran, and C are some of the languages covered. Note that many compiler texts also mention various issues and alternatives in programming language design. My favorite is P.D. Terry's "Programming Language Translation" and "Compilers and Compiler Generators". Both have some interesting tidbits about language design scattered throughout the text. Though out of print, the second title is available directly from the author (loose-leaf format) for a small fee. See http://cs.ru.ac.za/homes/cspt/compbook.htm if you are interested. The famous "Dragon Book" as well as "Crafting a Compiler", and "The Theory and Practice of Compiler Writing" all contain various notes about design issues. Two interesting web references I have found are: Reviews of existing programming languages at: http://www.tunes.org/Review/Languages.html and "Designing a better scripting language" at http://www.geocities.com/SiliconValley/Lab/6888/langopts.htm
|
Sat, 09 Feb 2002 03:00:00 GMT |
|
 |
Jonathan Guthri #8 / 90
|
 An Introduction to Programming Languages
Quote:
> On a sort of related note, are there any texts about how to design a > new language? It's a pretty esoteric art, so I'm not surprised to not > find anything at Barnes and Noble, but I would also find it a little > surprising if those who practice the art haven't felt like writing down > their ruminations on what techniques/rules of thumb/whatever have been > successful.
For a clue about why nobody's written a book about it, you might read the introduction to the chapter titled "How the Language Got its Spots" in _Systems Programming with Modula-3_. It boils down to this: There is no known good way to design a programming language. There are lots of principles to follow, but it's not clear how turn those principles into a language specification. Want proof? How about some supporting evidence, instead. Consider that languages as different as Ada, Common LISP, Erlang, and Oberon that ALL have, as a basic premise, that a language design should help programmers not produce defective programs. You'd think that, having a unifying goal (and it's not the only one) would mean that the languages are more-or-less similar, but it's not true. Instead, designers tend to design languages that are more-or-less like other languages where the more-or-less comes in because something is considered deficient in the base language. --
Brokersys +281-895-8101 http://www.brokersys.com/ 12703 Veterans Memorial #106, Houston, TX 77014, USA
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
Lynn Winebarg #9 / 90
|
 An Introduction to Programming Languages
Quote:
>> On a sort of related note, are there any texts about how to design a >> new language? It's a pretty esoteric art, so I'm not surprised to not >For a clue about why nobody's written a book about it, you might read the >introduction to the chapter titled "How the Language Got its Spots" in >_Systems Programming with Modula-3_. It boils down to this: There is no >known good way to design a programming language. There are lots of >principles to follow, but it's not clear how turn those principles into a >language specification.
This was pretty much my guess, which is why I called it an art and not a science. Still, it seems like designers might have some useful tidbits from their own experience about what has worked and what hasn't. Maybe those Human-Computer Interaction people could do something useful for a change ;-) and research the area. Lynn
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
Matthew M. Huntba #10 / 90
|
 An Introduction to Programming Languages
Quote:
> >It's a rather naive chat about languages you happen to know something > >about. If you are serious about this, you do need to study the theory > >and history of programming languages in a lot more depth. > On a sort of related note, are there any texts about how to design a > new language? It's a pretty esoteric art, so I'm not surprised to not > find anything at Barnes and Noble, but I would also find it a little > surprising if those who practice the art haven't felt like writing down > their ruminations on what techniques/rules of thumb/whatever have been > successful.
If you need someone else to tell you how to design a new language, then you don't have a new language worth designing. Sorry, to put it so harshly, but there really are so many programming languages around that there's absolutely no point in designing a new one which while maybe no worse than others is no better. A new language would only be worthwhile if it really does contribute something no other language provides - a completely different programming paradigm. If you've got that far, and have enough knowledge of existing programming languages to be sure what you have is new and worthwhile, you're not going to need a little book to tell you about it. You will have already read hundreds of books and papers on programming languages. Matthew Huntbach
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
Matthew M. Huntba #11 / 90
|
 An Introduction to Programming Languages
Quote:
> > On a sort of related note, are there any texts about how to design a > >new language? > My favorite text in this area is "Programming Languages: A Grand Tour", > Computer Science Press, edited by Ellis Horowitz.
[...] Quote: > Algol, Pascal, Lisp, CLU, Modula, Ada, Fortran, and C are some of the > languages covered.
In Computer Science terms, that's ancient history. It represents the state of the art before the object-oriented revolution, and anyone who designs a new language in ignorance of the insights that have been gained through the development of object-oriented programming is really engaging in a pointless exercise. Apart from that, there have been huge developments, for example, in the world of functional programming since Lisp was first developed. There are whole books and journals on functional programming. To read about Lisp but to ignore all these would be stupid. Matthew Huntbach
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
Lynn Winebarg #12 / 90
|
 An Introduction to Programming Languages
Quote: >If you need someone else to tell you how to design a new language, then you >don't have a new language worth designing. >Sorry, to put it so harshly, but there really are so many programming >languages around that there's absolutely no point in designing a new one >which while maybe no worse than others is no better. A new language would >only be worthwhile if it really does contribute something no other language >provides - a completely different programming paradigm. If you've got that >far, and have enough knowledge of existing programming languages to be sure >what you have is new and worthwhile, you're not going to need a little book >to tell you about it. You will have already read hundreds of books and papers >on programming languages.
You seem to be thinking of computational features rather than what I'm interested in - usability. That's what the question is about. And whether there is a good source on where to find reflections of language designers. Your personal preferences are really irrelevant to this point. Lynn
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
Matthew M. Huntba #13 / 90
|
 An Introduction to Programming Languages
Quote:
> >If you need someone else to tell you how to design a new language, then you > >don't have a new language worth designing. > >Sorry, to put it so harshly, but there really are so many programming > >languages around that there's absolutely no point in designing a new one > >which while maybe no worse than others is no better. A new language would > >only be worthwhile if it really does contribute something no other language > >provides - a completely different programming paradigm. If you've got that > >far, and have enough knowledge of existing programming languages to be sure > >what you have is new and worthwhile, you're not going to need a little book > >to tell you about it. You will have already read hundreds of books and papers > >on programming languages. > You seem to be thinking of computational features rather than what > I'm interested in - usability. That's what the question is about. And > whether there is a good source on where to find reflections of language > designers. Your personal preferences are really irrelevant to this > point.
I can't see anything in what I wrote above where I mention my personal preferences in languages. Neither can I see anything where I mention computational features as opposed to usability. All I'm suggesting is that anyone who wants to design a serious new language should have a lot of knowledge about existing languages, and some definite ideas on what would be in the new language. The knowledge may well be on the usability of existing languages, and the ideas may be based in ideas about what makes programming languages usable. I'm just urging caution - a *lot* of work has been done on program language design, and before attempting to design a new one I think someone should be familiar with that work. Simple reading one introductory book on the subject would not be enough - there are whole conferences on the subject of programming languages. If you're not familiar with all that, you're very likely just to be reinventing the wheel. Matthew Huntbach
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
Charles Fiterma #14 / 90
|
 An Introduction to Programming Languages
Quote:
> Hi, > I have written an introductory survey of programming languages: > http://www.andrewcooke.free-online.co.uk/andrew/lang.html > I hope it will be useful - I would appreciate corrections and > comments. I have tried to write something I would have found > useful a while ago, and I hope it will help others who are > starting to explore new languages.
One male in seven is RG color blind and can't read much of this document. If you are RG blind red is grey generaly close to black while green is grey generally close to white. The people who started the computer revolution are now have aging eyes and need larger type. I'm sorry that I must end my comments there but when you fix those problems I'll read on.
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
 |
John Pan #15 / 90
|
 An Introduction to Programming Languages
Quote:
> You seem to be thinking of computational features rather than what >I'm interested in - usability. That's what the question is about. And >whether there is a good source on where to find reflections of language >designers. Your personal preferences are really irrelevant to this >point.
You may be interested in looking at our survey of usability issues in the design of programming languages for beginners. Most of the items are not firsthand relections by the language designers, and issues that are unique to expert programmers are largely ignored. Nonetheless, I think that this survey is a useful tool for anyone who is interested in language design: http://www.cs.cmu.edu/~pane/cmu-cs-96-132.html This survey, and related studies about the usability of programming languages, are products of our Natural Programming project, and part of my thesis research. Our website has an overview of the project and pointers to some additional papers: http://www.cs.cmu.edu/~NatProg/ Comments would be greatly appreciated. John Pane --
|
Sun, 10 Feb 2002 03:00:00 GMT |
|
|
|