Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have been familiarizing myself with LISP for self improvement purposes. One of the things I have noticed is that LISP is much more within the paradigm of Mathematics than say C. The syntax and design structure seems to echo directly the actual mathematical model of an algorithm. It doesn't make sense to me why even good Mathematics based CS programs study C instead of LISP. I think that LISP more directly employs higher mathematical concepts than C. I am not saying that you can't model mathematical structures in C. I am merely noticing that LISP seems to be hard-wired for mathematicians.

I have read many of Joel Spolsky's rants on the JAVA schools and what not--and I agree with his assesment--, but my school didn't teach JAVA for that very reason. They were stringent in teaching fundamental concepts like pointers, algorithm design, recursion, and even assembly instructions. However, they did this all in C and c++. Does anyone know the reasons for this and/or its history?

share|improve this question
    
At the end of the day a computer science degree should be language agnostic to some extent. The idea of a CS is he/she should be able to learn any new language as computer science is theoretical. To outsides CS appears to be the all inclusive teach you how to be a programmer and a scientist. This is not the case, learning how to learn a language is what CS is about. –  Chris Aug 17 '11 at 20:17
2  
Much the same way LISP "echos the actual mathematical model of an algorithm", C echos the actual structure of the hardware and it is straightforward how constructs in C map to memory (which is naturally especially useful for embedded systems). However, I totally agree with you. I would have appreciated some more undergraduate coursework in LISP so I could really dive into it further –  B. VB. Aug 17 '11 at 21:08

3 Answers 3

up vote 13 down vote accepted

OK. So, the boring answer is that, in the end, most schools teach what the professors are comfortable with, and most professors did not grow up hacking Lisp; they spent their early years in the field with Algol-based languages. Because of this, years later, when they are building curriculum, you wind up with schools that teach CS with a foundation in Pascal, then C, then C++, and then Java.

Then you have schools that are a tier lower and some years younger. And they look up to the bar that was set by the schools leading the way, and they see that students leave those schools knowing C, and they see that their own students expect the same -- so they begin teaching C, then C++, then Java.

Finally, you have some of the technical or 'lower end' institutions that simply teach whatever set of tech will match keywords the students want on their resumes -- so you pretty much just get Java.

That being said, some schools do teach Lisp, although it may be more of an elective rather than a foundational language. And even the schools that do not teach Lisp as a standalone language, use it extensively in AI courses, so beginner AI courses do get a concentration in beginning Lisp programming.

share|improve this answer
2  
I hear ya. No disrespect to C and c++, they have been my languages of choice my entire career, but LISP would be a much better teaching tool for mathematics students than is C. C is a great language, and by all means, I would never hire someone who didn't know it, but the purpose of a CS degree is not technical field training, it is to master the concepts of Mathematics and Computer Science. LISP seems much more suited for this purpose. –  Jonathan Henson Aug 17 '11 at 19:14
    
I think both have their place, and universities may benefit from having a more theoretical/academic track to a CS degree where you broaden your mind. That track should have a nice range of languages, including Lisp, Prolog, Algol-based, etc, And a track that's practice-based, with a concentration on whatever the practical flavor of the day is. –  Andrey Butov Aug 17 '11 at 19:18
    
@Jonathan Henson: Spot on! –  Chris Aug 17 '11 at 20:18

This really depends on the university. Scheme (a dialect of lisp) has been the language for the introductory course in computer science at MIT for ages, although it has been replaced by python recently. I got my BS in CS at an engineering school, where I was exposed to C, Scheme, Prolog, and C++ during my first year. I think that was a good mix.

I firmly believe that what language you start with is much less important than being exposed to multiple paradigms early on, before your brain freezes into one way of looking at the world.

share|improve this answer

Fundamentally, computer science theory is mathematical. Software engineering, however, is not. Modelling mathematical concepts directly is not an inherent advantage- I'd argue it can often be a disadvantage.

Good theories and good programs are not necessarily related.

share|improve this answer
    
"Good theories and good programs are not necessarily related.": Programming is about building and combining abstractions that solve problems. And, according to wikipedia, "Theory is a ... type of abstract or generalizing thinking, or the results of such thinking." (en.wikipedia.org/wiki/Theory) So, theory and (good) programming are really very close to each other. –  Giorgio Nov 22 '12 at 13:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.