Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Concepts in Programming Languages (cam.ac.uk)
74 points by g3orge on Dec 26, 2011 | hide | past | favorite | 19 comments


Has anyone looked at How to Design Programs? http://www.htdp.org/

It seems to steer away from PL details and focus more on how to design programs and think about programming.


No logic programming?

I'll add Robert Kowalski's "Predicate Logic as Programming Language" to the reading list.


the ommision of APL makes me sad.


Yes, APL is an excellent language but suitable for prototyping only (imho). Here a sample for Conways game of life in APL:

http://uk.youtube.com/watch?v=a9xAKttWgP4&fmt=18


Something something subset Lisp.


I like the cut of your jib, however: I believe APL actually exposes you to an even higher(est) order of abstraction which makes you truly confront the meat of the problem space/algorithm v.s. allowing for a few sessions of syntax abstraction before you get down to business. Believe me I LOVE lisp, but I also recognize that many times I enjoy it because it allows me to create these amazingly succinct domain specific languages before ever "getting to work". When I attempt to write/think something in APL I find myself actually just pondering the problem. It was the language in which I realized math was my true (and neglected) love.

Also: http://archive.vector.org.uk/art10500180 - great article on array languages for lisp programmers.


Thank you for explaining the conceptual framework APL provides. My comment was merely poking a little fun at the kind of comments we sometimes see when people are trying to the tell the virtues of Lisp. I could not say much about APL but did want to find out if it really gives you a new way of thinking.


A general approach to concepts in programming languages is called, obviously enough, concept programming. See http://xlr.sourceforge.net/Concept%20Programming%20Presentat... or http://en.wikipedia.org/wiki/Concept_programming for more info.


If Cambridge made a textbook of this, and did it right, it could be a very effective replacement for the great, but ageing, SICP.


I think if you're looking for a replacement for SICP that covers a broad spectrum of language paradigms, (in particular paradigms beyond just imperative vs. functional) a good choice might be Concepts, Techniques and Models of Computer Programming, which uses the Oz programming language.


Might be a bit ambitious covering Fortran, Lisp, C, Smalltalk, Scala, and more in an intro to programming course. This looks more like a history and comparison of languages.


To an extent, you're right. But SICP already covers most of the concepts of these languages -- it just chooses to cover them all in Scheme, with a functional bias. I don't see why differing syntax should affect the teaching of the concepts, as long as focus is maintained on one language when it comes to actual programming. That said, this course as it is does teach too broadly to be an effective intro to CS.


It is not just a difference in syntax, it is about the core. While all those programming languages are great in their respective areas, Scheme is directly based on the lambda calculus and as such it defines a minimal amount of primitives/constructions, on top of which you can build almost any other concept from scratch. This is great for a person learning the ropes.


There are plenty of good PL books. The main text for the course in question is Scott's "Programming Language Pragmatics", which is excellent.


We used Concepts of Programming Languages (http://www.pearsonhighered.com/educator/product/Concepts-of-...) in my undergraduate Comparative Languages course which was very good and seems to cover much of the same material as the course.

I sadly lost the book when I moved but I remember loving both the book and the course and learning a ton thanks to seeing a number of different language types side by side. I have fond memories of trying to wrap my mind around Prolog the first time I saw it.


How can Scala be state of the art when it is so bad. They probably meant to say newest, in which case I nominate Dart to take Scala's place.


Perhaps it's not Scala but the paradigms that define it that are "state of the art". Multiple paradigms like functional programming, OOP, and other nice syntactical things make Scala very much a language of the future, even if its current implementation is poor. It's a marker to where we may be headed in language development.


The presentation is worth reading. Scala is an awesome language whose main disadvantage is that it is a language for smart people.

http://www.paulgraham.com/vanlfsp.html


State of the art doesn't mean good implementation of state of the art. I personally wouldn't call Scala bad either, but that's another discussion.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: