Maybe it's you that is stuck in the 1980s, functional programming is used in a number of industry sectors and has recently seen a resurgence thanks to languages like Erlang and Scala being used by companies like Facebook et al...When are you taking this class 1980?
Kidding! It will not teach you anything to do with current languages. Not one bit of it is relavent. Does that help?
This sucks, I'm trying to be positive and cannot think of one redeeming feature of Lisp ( common or scheme ). It's easy to learn? But so is C and that leads to C++, Java, C#, php, ect.
Who would teach the next generation of coders if everyone got a job writing coding?960Design said:If the teacher knew anything relevant they would have a job writing code?
Quite possible, the 80's had pretty amazing clothes, music and hair.Maybe it's you that is stuck in the 1980s, functional programming is used in a number of industry sectors and has recently seen a resurgence thanks to languages like Erlang and Scala being used by companies like Facebook et al...
Could not agree more; which is why I am at a loss for the educational benefits of lisp. None of its theory applies to current languages, the loops are... well, different; I'm not going into a language bashing monologue.When learning programming it's about the concepts and theory not the language.
Name one that would come from lisp. I tried really hard to come up with a few positives and failed. Help me out here. I know there has to be a good reason, somewhere and I'm just missing it. Couldn't get the answer to Wheel of Fortune yesterday either, even though all but one letter was showing. Must be something I ate.You will learn concepts that will be relevant to a career in computer science.
Name one that would come from lisp. I tried really hard to come up with a few positives and failed. Help me out here. I know there has to be a good reason, somewhere and I'm just missing it. Couldn't get the answer to Wheel of Fortune yesterday either, even though all but one letter was showing. Must be something I ate.You will learn concepts that will be relevant to a career in computer science.
Ranching cattle would be a lot easier on horse back than in a jet. As you've said yourself pick the right tool for the job, but just because there aren't many cattle ranching jobs doesn't mean they don't existLearning to ride a horse will not assist you in flying a jet, in anyway. 100 years ago horse riding was a great skill, if not mandatory. Today, not so much. That's all I'm saying.
Thank you Ap0ks and biboa:
Too right you are. How could I have forgotten the really basic stuff like structure, function concepts ( scheme does OOP? that's new to me also )?
I guess I was missing the base by looking at the.... ooohhh pretty, shiny....
I'm an idiot, please disregard everything I've written. Now stop reading and start coding!
I was taught Scheme at University, and the book "Structure and Interpretation of Computer Programs" came highly recommended.
I'm inclined to agree about SICP, but I've just suggested a book written for high school students that teaches them how to design programs. It's much different from most programming books I learned from in college because those books start with programming language statements, not with principles.One person even called that the best computer programming book ever written!
Another well-regarded book, for complete beginners in programming, is at http://www.cs.berkeley.edu/~bh/ss-toc2.html
What I don't get is, if they're getting you to learn a Functional Language as a first language, why not Haskell or Scala?
Just like object orientated languages there are numerous options for functional languages. The argument could be made for any of the following languages as well:
- Erlang
- F#
- ML
- OCaml
sometimes you just need to make a decision and stick with it. There are always going to be alternatives and if you spend too long looking for the "perfect" choice you end up not making a decision at all. Sometimes you just need to be pragmatic about things and Scheme is a popular language at Universities around the world.
Name one that would come from lisp. I tried really hard to come up with a few positives and failed. Help me out here. I know there has to be a good reason, somewhere and I'm just missing it.
I realize that, but Languages like Haskell or Clojure is used in industry and Universities around the world and are much more modern. Scheme is also very unforgiving of tinkering, which denies some students who learn that way the chance to learn in a way that is most useful to them. A good teaching language should be flexible to various learning styles. (EG: Python) F# would fit that nicely, as much as I despise the .Net platform.
main = do
ints <- readIntsFromFile "FileOfInts"
let maxInt = foldl max 0 ints
putStrLn ("Max int is " ++ maxInt)
foldl' f a [] = a
foldl' f a (x:xs) = strict (foldl' f) (f a x) xs
Name one that would come from lisp. I tried really hard to come up with a few positives and failed. Help me out here. I know there has to be a good reason, somewhere and I'm just missing it.
I learned CLISP in my AI class and even touched a bit of other functional languages, but it was mostly in CLISP. Haven't touched it in quite a few years. Did have CLISP on an old iBook running Mac OS X 10.1. Not sure if CLISP has been updated to run on modern Macs, though.
I do think it's a great idea for students to learn Haskell at some point, just not as a first programming language.
I also can't figure out what you mean by saying Scheme isn't amenable to tinkering.
It's un-amenable in the opposite way that Haskell isn't. Haskell requires you to think about what your code is doing, and small changes can cause the Type Inference to fail and chuck up unhelpful error messages to a beginner. Scheme has a dynamic system, and in my experiments with it similar code can do exactly the same thing and when it does break it's not clear what you broke.
I also think that if you look at real life experience you'll see that it's very common to teach beginning programming classes in Scheme or some other dynamically typed language, and I have never seen any evidence that students fare worse than in a class which uses say Java or C++.
I have no issue with Dynamic Typing, My First "real" programming language was Objective-C.But in teaching languages its helpful if you can break things down easily. Generics is also very bad at doing just that. :/
I also think C++ and Java are not ideal teaching languages.Although coding at the terminal is beneficial, when trying to convince someone that programming is fun, quickly making a GUI or Sprite Engine in a language helps a lot.
When I (privately) tutor people, I often teach them in Python and the concept catches on much better than C#. (The teaching Language Waikato uses) Python has very verbose error messages in IDLE and it is very receptive to fiddling.
Not sure if CLISP has been updated to run on modern Macs, though.