6 ms·
Lisp and Smalltalk are dead: It’s C all the way down
- gruseom 17y agoAt least this way our secret weapons remain intact.
- swolchok 17y agoC (not C++) can be a secret weapon too, if it absolutely has to be as fast and efficient as possible.
- JBiserkov 17y agoAt my university we still have Functional programming (Scheme/Lisp), but the message is "what C++ can compute, Scheme can compute, only a bit weird, e.g. tail recursive factorial". We have an OOP "course" that teaches code like this class People { char* name; } The course's mantra: OOP is syntax, syntax, syntax. The Prolog course was even more weird - the message was "what Lisp can do with lists, Prolog can do too", but it was implicit because the Prolog course was before the Lisp one. The electives were only marginally better, with Python being the stellar exception.
- twopoint718 17y agoI had a similar experience, if I'm interpreting this correctly, in that my university was pretty focused on the theory. I had a lot of CS courses where we were programming in "pen and paper." When we did write code it was often Java, but you knew that any course you took the professor could swap in pretty much anything else. Depending on the AI professor, you'd work in Java or Scheme. Compilers class could be a C-like language targeting MIPS with the compiler written using C++ or it could be a Java-like language targeting the JVM with the compiler in Java (though I should say these "little languages" were probably very similar because they were a very small subset of their respective languages). I think if you learn the fundamentals (and that often means having a good grasp on C) it shouldn't be too terrifying to pick up at decent grasp on lots of languages.
- ilyak 17y agoThis is downright dumb considering the recent surge in Ruby and Javascript. And please, please, no C++ unless you understand what you're doing. However, I think nobody cares about this particular university anyway?
- inaka 17y agoUS News says georgia tech is the #4 engineering school in the US...
- ynniv 17y agoGeneral engineering and computer science are separate rankings. For 2009, they are #6 in "Computer Engineering", behind MIT, Stanford, CMU, UC Berkeley, and UIUC. This is actually a substantial improvement from the 12th place that I remember. Maybe "industry orientation" improves your US News ranking :-/
- cema 17y agoThey are pretty high in Computer Science too. US News ranking for 2008 (http://grad-schools.usnews.rankingsandreviews.com/best-graduate-schools/top-computer-science-schools/rankings http://grad-schools.usnews.rankingsandreviews.com/best-gradu...) places them at the 9th place, shared with UT Austin.
- ajg1977 17y agoI think that all comp sci students should begin by learning to become competent in C. Aside from having the widest support across platforms, and being syntactically similar to many other languages, it's the closest you can get to understanding how computers work at a low level without dropping into asm. Frankly, knowing these things will make you a better programmer. That said there is definitely a benefit to exposing students to higher level languages, both for productivity in solving more complex problems and understanding what the syntax and expressions of these languages have to offer. And by higher language I don't mean C++ :)
- ynniv 17y agoEveryone says that C is as close as you can get to how computers work, but I can't agree with this anymore. C stack management and function calling requires work that is not part of a CPU. malloc and free do not map to anything at the hardware level, these are OS calls. The closest C gets you to the "computer" is pointer arithmetic and manual memory management. If you want to teach someone how basic hardware works, start with an arduino and assembly. If you want to learn how to program modern applications, use a modern language (Java, C#, JavaScript, python, ruby). I think that people talk about C as an important language because it is difficult to write programs in. To these people it is a badge of honor to write clean, correct C code. Here's the rub: C absolutely sucks at networking, and concurrency, security and readability. Every year that goes by, C becomes less useful. How is this a good language to teach students? (Edit: BTW, This is the Computer Science curriculum, which is separate from Computer Engineering. Georgia Tech's CS curriculum had no mandatory hands on hardware classes.)
- ajg1977 17y ago>> C stack management and function calling requires work that is not part of a CPU Well in C you tend not to manage the stack. As for function calls, what exactly do you think a CPU spends its time doing? >> malloc and free do not map to anything at the hardware level, these are OS calls So memory is just some non-physical property of the OS? Erm... >> I think that people talk about C as an important language because it is difficult to write programs in. There is a learning curve, but it's hardly difficult. However I think I know the reason for your confusing statements above.
- naz 17y agoSmalltalk may be dead but there are millions of smartphones using Objective C which is in many ways a direct descendant.
- parenthesis 17y agoNot to mention the influence of Smalltalk and Obj-C on Java. (See, e.g., http://www.virtualschool.edu/objectivec/influenceOnJava.html http://www.virtualschool.edu/objectivec/influenceOnJava.html )
- capablanca 17y agoSometimes I feel like any newer language is said to be influenced by an older one...
- deleted 17y ago[deleted]
- rbanffy 17y agoSaying Smalltalk and C... Oh boy.. That's the danger of the beer goggles.
- ynniv 17y agoThe College of Computing has been alienating their more academic members in favor of "industry" orientation. I suspect that this comes from trying to increase funding, but more simply it is indicative that those making the decisions no longer have a clear vision of what they are teaching students. It isn't enough to say that they are showing preference to C based languages, as one of the primary "weeder" courses which was taught in C was discontinued years ago. I don't know if this uncertainty and doubt of academic computer science is limited to Georgia Tech. Just recently, MIT dropped their scheme course for one in python, with the goal of being more "practical". Is it better for undergraduate computer science to be practical or academic? I will suggest that if students don't learn abstract computing when they are undergrads, they are never going to.
- jsolson 17y agoTo be fair, when 2130 (along with the ECE2030 requirement) was cut they replaced it with 2110 and 3240. As I understand it (I tested for standing, so I can't claim first-hand knowledge), 2110 does a very good job of combining the relevant parts of ECE2030 and the C bits of CS2130. That, to me, makes it a solid replacement for those concepts. The first time 3240 was taught, Olin was the professor teaching it. It covered a fair chunk of the material you'd expect to see in CS4510 that semester while also being an excellent class on lexers, parsers, and interpreters (not so much on compilers, but of course it's not a compilers course). I can comfortably say that it was by far the most interesting and educational course I took during my undergrad career. Since Olin's unfortunate departure, 3240 has apparently turned into just another lexer and parser course. On the whole I'd say the changes they made w.r.t. CS2130 were good. However... Threads has made it so that you can get a CS degree without taking an algorithms or data structures course above the 1000 level, which I find wholly disappointing. It's not that the degrees these students are walking away with aren't perfectly valid things to have degrees in, but I have a hard time calling a lot of these undergrads "computer scientists". </rant>
- smithjchris 17y agoI agree entirely with this. I am not intending to start a flame war here, but this is how I see it: My rationale is that C/C++-based software powers nearly of all computer CPU cycles these days either directly or indirectly. From mobile phones to massive distributed systems like Google, it's there. It's probably even there in your fridge or smoke alarm these days albeit somewhat feature constrained. For the Ruby, PHP and Python users, most of your language is written in C! The .Net framework is mostly C/C++ underneath (Google for shared source CLI). Even the C# compiler is written in C++. Java is mostly written in C as well. The iPod software is written in C (not it's not objective-C - check out the About/Legal section for the libraries it uses). Objective-C even started as a load of C preprocessor macros. Ultimately, C/C++ is the foundation of the most software in frequent use, the Internet and our society. That's why they should teach it over Lisp/Scheme/Smalltalk/etc etc. Oh and possibly just as importantly, it works.
- pyre 17y ago> Objective-C even started as a load of C preprocessor macros. So did C++, IIRC. {edit} To add a bit more than a one-line comment, it seems to me that the gist of the article was that young programmers should be exposed to a wide variety of different programming paradigms. (i.e. functional languages, procedural languages, etc) Teaching only C and C-like languages is encouraging a monoculture. It doesn't matter whether or not they will use Lisp or SmallTalk in the real world. The idea is for them to come away with ideas and concepts they would not have been exposed to otherwise. I mean this is a university and not a vocational school. I would expect university students to be exposed to more ideas (even if they are ideas that never get commonly applied in the real world) than someone coming out of a vocational school. {/edit}
- smithjchris 17y agoThe problem with a university education is that it is becoming less relevant. A formal education doesn't necessarily teach people to deliver software, which is critical for the captialist society we live in to operate. A monoculture is seen to be negative due to this insane emphasis on diversity recently. Diversity generally hinders resource pooling which is what allows monumental things to be created. For the record, I am a pure autodidact with no formal qualifications.
- richcollins 17y agoHow is the choice of C/C++ a decision in favor of simplicity?
- SwellJoe 17y agoHe references Richard Gabriel's "Worse Is Better", which compares the simplicity of implementation model (C/C++) with the simplicity/correctness of interface model (Lisp). C/C++ are "simple", ya know, kinda like Cletus from the Simpsons. One could also generally argue that C is simple to use, as well. K&R is a tiny book, and it covers most of what you need to know to read C, and a good bit of what you need to know to write it (some of the ancillary tools, like cpp, make, libraries, etc. complexify things a bit, though). C++, on the other hand, is a huge pile of interwoven concepts and is extremely complex, so I don't think it's polite to combine them in to C/C++, but I don't get to make that call.
- thunk 17y agoCS departments are just less and less able to maintain illusions about what they really are -- trade schools for cranking out interchangeable corporate programmers. And there's nothing wrong with that. Honesty and unity of purpose are good things. Lisp and school never got along anyway. Lisp is for hacking. Its interests have moved elsewhere.
- cstew 17y agoI took CS 2340 in Smalltalk a year ago at Georgia Tech. I think most people in the class disliked the IDE more than Smalltalk itself. Visual works was absolutely unusable on a mac and the Windows version certainly had its quirks. That, coupled with the fact that Smalltalk isn't used too often anymore led to students being really unsatisfied with the language. I do think that the language needed to be changed for that class. The College of Computing is not entirely C though; I did learn lisp for an Artificial intelligence class, but not all students are required to take it.
- WilliamLP 17y ago> e.g., Lisp programmers are more productive and generate fewer bugs Lisp programmers tell themselves they are more productive and generate fewer bugs.
- erlanger 17y agoYou must not be familiar with this study. http://www.flownet.com/gat/papers/lisp-java.pdf http://www.flownet.com/gat/papers/lisp-java.pdf
- nvoorhies 17y agoA sample composed of volunteers from a particular usenet group doesn't seem like it would have people of equal skill in each of the languages in question, however. I'd expect that you'd get a different language winning in each newsgroup you sampled from.
- WilliamLP 17y agoIs that study a joke? Do you really take it seriously?
- erlanger 17y agoNo, but when people bring up "C vs Lisp" or "Java vs Lisp" it comes up. I don't give it much due however.
- pcc 17y agoOne train of thought seems notably absent in this discussion: The skill a good school attempts to teach has very little to do with any particular language. Instead they are seeking to teach you the one skill "to rule them all": To learn how to learn, how to acquire new skills, how to analyze, how to synthesize and how to think systematically; or said another way the ability to identify and understand the problem space, to identify a tool that fits the problem well (even though you've perhaps never used it before), to acquire that tool quickly, and to wield it powerfully. Consider that in your typical engineering degree, the half-life of your direct knowledge is but a few years -- half of what you "know" is obsolete within years. At the same time schools do want you to be "rapidly productive" in something that sees relatively wide use, or the job market gives them hell, and there just isn't enough time to cover all possible principles from all scenarios. So they can but strive to stimulate your intellect and pique your curiosity so that you will naturally want to be aware of the possibilities and be open minded to all the various tools out there; and that you will have some framework available to you to understand what you will come across.