Domain: racket-lang.org
Stories and comments across the archive that link to racket-lang.org.
Comments · 19
-
Re:What is modularity, exactly?
This is a site that lists 'modules'. (based on the definition what a module is, as defined by the scheme standards)
There wasn't a Scheme standard for modules until R6RS and many R6RS-avoiding Scheme implementations avoid R6RS-style modules.
Not a site about a module system as in Java 9. It is misnamed in Java 9 and should be called packet manager.
Why? There can still be a mapping between language modules and implementation packages. In fact, one would prefer a system where you don't have to care about the latter at all.
In the new module system, a library/starting executable can define dependencies, which most notable includes the version of the library it depends on.
Yes, there are Scheme versions of such features, which I mentioned. Racket behaves like this, for example.
-
Universities
Computer Science education at many German universities is heavily based on open source software. You can easily get through a master's degree without ever touching proprietary software. The only exception I can think of was one mandatory FPGA course.
Systems programming: Linux with GCC and nasm.
Software design & OOP: Java
Functional programming: Racket.
Graphics programming: OpenGL ... and so on.
Thus graduates leave the universities with FOSS experience. It may be different at technical colleges. -
Re:Foundation
But more to the point, the obsession with the declarative programming paradigm is one of the things holding programming back.
Um, are you sure you don't mean the imperative programming paradigm? Imperative is "do this, then do that" - ie, C - and doesn't scale to parallel. Declarative programming - "this is what I want, I don't care how it gets done" is precisely what modern programming languages don't do, and what I reckon we need more of. Especially if your work involves describing complex interlinked data sets with no particularly well-defined types (hello Internet! hello Semantic Web! hello just about everything on your basic workstation desktop except for the low-level graphics code in your 3D games)
IMO the high-water mark of declarative programming is Prolog embedded in Lisp - but show Prolog to the average C++/Javascript hacker and they'll look at you like you're from Mars. Where are my functions? Where's the curly brackets? What are these "predicate" things? What do you mean, it works backwards as well as forwards? Logic what?
We lost two generations of programming advancement when the AI Winter crashed the Lisp scene. Granted, the Scheme/Common Lisp civil wars didn't help. But we could have had much nicer things to program with than C++. We still could, if we cared.
Racket's semi-okay, I guess; it would be better if it didn't throw a whole bunch of multi-language complexity in your face right away, though. And unfortunately, its implementation of Prolog (actually Kanren) is Not Really Sufficient for the stuff I want to do, owing to massively too busy syntax. Ironically, the stuff I want to do which turns out to be really hard to do in most modern langauges is text adventures.
-
LaTeX to HTML
LaTeX to bystroTeX should be easy, although I do not yet have a working converter. BystroTeX produces HTML. The syntax of bystroTeX is Racket Scribble, it is very similar to LaTeX so writing a converter should be more or less straightforward.
-
Re:What about new talent?
There are a lot of friendly projects fwiw, and many love any kind of new contributor, of any skill level, whether they're submitting technical contributions or documentation or even just comments on common use-cases that worked for them or didn't. Kernel development is probably the worst place to start, for a variety of reasons.
I've recently had good experiences interacting with the Racket and git-annex maintainers, to pick two examples.
-
Re:Scheme and beyond
For kids I would most recommend the Racket IDE. It has a window like other programs and buttons and even has a few games. For the smart kids though, I would give them Emacs and show them how the editor is written in the same language that they are using (Emacs has SLIME as well as GEISER that integrates well with Racket or Guile), and they really take off with that. Sometimes the kids spend hours just exploring of the Emacs operating system and all the different modes (and games).
I have tried VIM, especially for a C language class, and it does work too. Vim is a very powerful editor for compiled languages. But for LISP/Scheme Emacs is definitely superior. In Emacs you can even go Evil and teach them both.
-
Re:Writing LaTeX directly is often unnecessary
If you don't like LaTeX, take a look at scribble :
-
Python or Scheme
A lot of people these days recommend Python as a first language. It is easy to learn and powerful. I don't know which of them is best, but here's a list of Python tutorials aimed at non-programmers.
Another interesting choice might be Scheme. There are two very good books that use Scheme to teach programming:
- How to Design Programs is aimed at roughly your son's age group.
- Structure and Interpretation of Computer Programs is aimed at university students and assumes some basic knowledge of calculus (which I'm guessing is over your son's head, but maybe not!)
DrRacket is a good programming environment to use with either of them.
-
Re:Long time in the making
Check out Racket. It is fast, comes with "batteries included", and even has a fairly feature-complete cross-platform GUI toolkit. It even has its own built-in web server.
Some people claim it's no longer Scheme, though, because Racket lists are immutable.
-
Re:Reinvention of LISP
I know you're just joking, but for anyone just following along, please don't be scared off by the parentheses.
A good editor will keep track of the parentheses, and indent for you.
Knowing LISP or Scheme is a huge brain training exercise. If you want to sing (as a programmer), you have to train your voice.
Great Scheme implementation
http://racket-lang.org/How to Design Programs
http://www.htdp.org/Free LISP book
http://www.gigamonkeys.com/book/ -
Re:advantages of multiple inheritance
>This is sort of like saying democracy in the United States is better because the Constitutional Convention decided an Electoral College would help keep the masses in check.
Well, a lot of people actually think it does contribute to the stability of the US political system. Whether you think stability is good is a different matter.
Now for Java: It's great that there are a lot of cool and funky languages, which are good for different purposes. But for the average ho-hum business application, a severely restricted language is best. Regardless of if you or I are rockstar programmers, most programmers are not. In fact 50% are below average.
For the vast legions of corporate business logic programmers, simple programming leads to greater maintainability. Below average programmers do not have the capability to understand "weird" blocks of code.
Secondly, I don't understand why every language under the sun has to slowly have Lisp/Scheme incorporated into it. We already have those, so why reinvent the wheel?
-
PHP for the many--Lisp for the rest
Good that you brought up Lisp.
It always amuses me how "commando"-type programmers are always complaining about the lack of closures or some such in pedestrian language X.
Thing is, language X and its cousins are supposed to be dead simple linear-logic languages for the purpose of stuff like "if total_purchase < $50, shipping_surcharge = $10", and so on.
You're not going to be generating fractals in one-liners in PHP, so stop whining. PHP and the like are for "lite" programmers, i.e., web programmers. That's not disparagement; it's actually praise. PHP is How Stuff Gets Done (like Facebook growing into a 1/2 trillion dollar corporation).
Meanwhile, if you want a language beauty contest, why not go with LISP and Scheme? These languages allow you to easily extend the language, hence no whining allowed. I seriously doubt anybody's going to come up with a more elegant and extensible language than them.
So, come on language gourmets, what's the problem?
Learn Scheme now, and leave PHP as it is.
-
Re:Tennis Racket Bug Zappers instead?
Gee, $1M could sure buy a lot of these: http://www.amazon.com/Battery-Operated-Tennis-Racket-Shaped/dp/B003U55W6Y
And Mr Gates could certainly strong arm a much better price out of the supplier, or just buy the manufacturer.
Now he just needs to set up this racket racket with Racket before Slashdot posts a Hadoop dupe.
-
Tons
I don't know of any list but I'm pretty sure that tons of successful software has come from academia.
Racket is a particularly nice example. I'm too lazy to Google so perhaps others can provide a few hundred more.
-
Re:Project Lambda
The thing I've always wondered is:
If you want lambdas and such, why wouldn't you just use LISP or Scheme instead of trying to hack it into a C-syntax family language.
Not only that, but tacking lambdas on to Java is going to be some crazy reuse of syntax instead of having a well-designed syntax for it.
So then, you're neither here nor there. Neither do you have a powerful, but possibly tricky language, nor do you have a dead simple language for programming corporate CRUD apps.
-
Re:teach them right!
Along those lines: Racket: http://docs.racket-lang.org/
... from download to putting pictures on the screen in 30 seconds. -
LISP.
When people talk about such features, I wonder:
The classic quote of course is that every languge environment expands to implement LISP badly, so why not just start with the real deal?
You can just implement any language features you desire by yourself.
And if you say that corporate programmers can't handle LISP, what makes you think that they can handle closures, lamda expressions, and the rest?
The fact is, I think the legions of corporate programmers cannot handle advanced language features. They're better off being verbose.
But the line of reasoning employed against Java and for advanced language features (make the language more powerful, and code more terse) can be used continually until you end up with Scheme.
By the way, How to Design Programs is a great programming book using Scheme.
-
Teach Scheme, Reach Java
You may be interested in the Teach Scheme! project. The idea is to teach the programming fundamentals with Scheme where the syntax is simple and use those experiences as a scaffold for more complex languages. The project offers both a LGPL Scheme interpreter, Racket, and an online textbook, How to Design Programs. Follow up with How to Design Worlds, and students could be making games in no time! An intro course to game design might give that touch of creativity you were looking for.
-
Ruby is irrelevant
There's plenty of programming languages out there worth learning as a primary language and ruby isn't one of them.
Ruby is one of those languages that you learn in addition to another more general language. In that respect, PHP and ruby are about the same. As respects performance, both PHP and ruby are toys.