Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The idea is that the concepts of CS are universal, regardless of programming language. So instead of using a programming language that has been designed for real world use (carved with the footprints of a thousand language hackers, full of awkward inconsistencies, warts, and good-enough-for-nows), teach in a teaching language - a programming language that is very regular, with very simple semantics, not necessarily designed for speed.

However, this doesn't exclude it from being a Real Language. Scheme is both a very popular teaching language (perhaps the prototypical teaching language, being used in SICP), and has seen actual use, with a dedicated community around the various implementations of the language. For a teaching language, there are a lot of things built atop it. Like, say, this site (PG's Arc runs atop an old version of Racket, from back before Racket diverged quite so much from Scheme, and was still called Scheme).



If they are universal, what is wrong by using a reall word language?

>"full of awkward inconsistencies, warts, and good-enough-for-nows"

can not agree with 'full'. but Is there a teaching language better? I do not think so.


A teaching language doesn't have mounds of legacy code constraining its evolution.


Just mounds of legacy documentation and teaching materials.


Legacy teaching materials can be as much a curse as a boon. Look at all the people here who can't seem to wrap their heads around why some of the features of Pyret would be necessary for teaching programming. That's because their model of teaching programming is stuck in the 80s.


True, but the language that documentation and those materials teach is still a cleaner language than most.


Compare CL to Scheme. One was designed for Real Work, the other for PL research and teaching. The difference is stark.


And yet Racket grew out of Scheme and is now every much a Real Work language as CL, while avoiding CL's warts. So your point is…?


Racket is still immature, still has a focus on education, and has more than enough warts of its own.

For that matter, so does Scheme: It just has less of them. Which has its problems.

Oh, and Racket is in no way as good for Real Work as CL. It doesn't have the libraries, and it sure as heck doesn't have perf.


Says you, and many disagree, including Racket's commercial users. But of course it's pointless arguing with a CL fanatic (I learned that two decades ago on c.l.s, and looks like nothing has changed), so please do go ahead and have the last word.


Gladly.

>including Racket's commercial users.

A language doesn't need maturity to have commercial use. Rust had commercial adoption pre-1.0, and that adoption is increasing. Rust is also nowhere near mature.

Racket being built in part for education is also undeniable. Look it up.

Racket's library support vs CL's is highly debatable. Neithet is ideal, but both are "good enough," so let's leave it at that.

As for Racket's perf, that's just a fact. Look at Racket, then at SBCL. Then at Racket. Then at SBCL. Sadly, it isn't SBCL. But if it started doing native code compilation, maybe it could be a bit more like SBCL.

This is also true of Scheme: Some of the Schemes are much faster than Racket, for many of the same reasons (many of them aren't as fast as SBCL, as I understand it, although I haven't run the benches, so I can't be sure).

This doesn't make Racket a bad language by any stretch. I don't happen to like it, but that's just preferential: there's nothing unambiguously bad about it AFAICT. In fact, it's quite well designed.

>a CL fanatic

Crap. You got me. All that time I spent arguing with lispm that yes, Scheme is a Lisp, explaining to people what Scheme is and why it's cool, explaining that yes, Hygienic Macros are a good idea, and no, that doesn't just mean declarative macros ala syntax-rules, there are imperative systems that do the same thing, discussing the differences between Racket and Scheme, and why I think they matter, but you can choose either, depending, writing CHICKEN Scheme macros, barely tested (because I was busy), on my cellphone, and so on, was just a ruse. I've really been a CL user all along. /s.

While there are things I love about CL (and I've even considered moving to it for various reasons, despite it being an uglier language - although in some ways also a more practical one), and things I hate about the Schemes - CHICKEN in particular (familiarity really does breed contempt! At least a little...), I still think that Scheme is a beautiful language.

While I don't think I'm a fanatic for anything, if I am a fanatic, I'm a Scheme fanatic, not a CL one. I have, as I've mentioned above, argued a lot with CL fanatics on This Very Forum.

Idiot, I'd take with a grin. Incompetant, with a smile (I may well be). Possibly misinformed? I'll downright admit it.

But a CL Fanatic? That's not just a stretch, it's flat-out wrong.


> Racket being built in part for education is also undeniable. Look it up.

You realize who you said that to?


[flagged]



[flagged]


> Did I mention I'm not a CL fanatic?

The converted ones are usually the most fanatic.


> designed for real world use (carved with the footprints of a thousand language hackers, full of awkward inconsistencies, warts, and good-enough-for-nows)

Everything you mention here is a consequence of age not intent for real use.

An old teaching language would be just as bad if those are your only criteria.


But this doesn't happen to teaching languages. Because they don't have to work with real applications, they can change, and do their best to stay clean, and they be very minimalist (like Scheme), and only specify the bare minimum, ensuring a clean learning environment.




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

Search: