18 ms·
Racket is 25
- lowdose 7y agoPretty bold name when you think about it. Could it be that the name association had a negative impact on implementation by others? > The program was called “MrEd” because it was mostly an editor. I liked the “Mr” part and didn’t mind that it was already the name of a talking horse. > I called it "Ms. Scheme", but since "Ms" seemed too likely to suggest "Microsoft", spelled it "MzScheme". Naming is important, you shouldn't name a program MrEd nor should a language go by the name MzScheme when you want people to take your work serious. Edit: delete sentence "Start a project and call it a racket from day one"
- moron4hire 7y agoIt wasn't from "day one". The name Racket is only about 10 years old. It started life as PLT Scheme. A racket is a kind of scheme. EDIT: You've edited your post to include more ridiculous assertions. Python was literally named after Monty Python. You know what, whatever, I'm not playing this stupid game.
- zests 7y ago> A racket is a kind of scheme. That's hilarious. It only took me 5 years to get.
- catalogia 7y ago'Gambit Scheme' has a similar style of name.
- cgsullivan 7y agoGambit Scheme is also a pun on Marc Feeley's surname in Irish -- O Fithcheallaigh -- which means 'chess player'. The name is derived from the ancient Irish board game fidchell, rules unknown, but taken to be akin to chess. https://www.libraryireland.com/names/of/o-fithcheallaigh.php https://www.libraryireland.com/names/of/o-fithcheallaigh.php
- skrishnamurthi 7y agoThat's a bit different. Guy Steele's first Scheme compiler was called RABBIT (it ran fast). The Yale T project created the Orbit compiler. This set off a *bit trend, including Gambit and also Will Clinger's Twobit.
- Igelau 7y agoGuile makes sense now too.
- lowdose 7y agoYou are right that I removed in sentence because I read to quick but the whole article is about naming. Is it so strange to comment on specific names? I don't think the authors could have done worst. Synonyms for racket: haphazardness, disagreement, noise, stochasticity, interference, dissonance, dissension, fraudulent scheme, disturbance, randomness, illegitimate enterprise.
- traes 7y agoIn fact, that's clarified in the very next sentence of the article.
- gcmrtc 7y agoI don't know why "application performance" is brought up here, do you mean adoption? I think Racket is a pretty bad choice, I'm from Italy and here you find that word in news about mafia and organized crime, so imagine the kind of association it bears with it. Naming things is hard, but sometimes hackers seem to choose to make it harder... https://racket-lang.org/new-name.html https://racket-lang.org/new-name.html
- frostburg 7y agoI'm also from Italy and you know perfectly well that nobody even aware of the existence of Scheme dialects would be confused by this.
- Bost 7y agoAnd what about people without any knowledge of Scheme dialects? (Let's call them, for the sake of brevity "CS juniors".)
- ipnon 7y agoConsequently, Doom and Quake are banned from your household in favor of Animal Crossing?
- skrishnamurthi 7y agoI presume you refuse to play tennis, then, solo calcio.
- Bost 7y agoUhm, I wonder how would people from this village comment on it https://en.wikipedia.org/wiki/Fucking,_Austria https://en.wikipedia.org/wiki/Fucking,_Austria
- rst 7y agoThere was a tradition of such self-deprecating names for lisp dialects specifically -- an early system called PLANNER had an offshoot which was named CONNIVER, and SCHEME itself was another branch off this tree (originally named SCHEMER, and truncated because the MIT AI lab's homebrew ITS timesharing system limited filenames to six characters). https://en.wikipedia.org/wiki/Scheme_(programming_language) https://en.wikipedia.org/wiki/Scheme_(programming_language)
- lowdose 7y agoThe question still stands if insider jokes are an efficient source of inspiration for naming your work.
- catalogia 7y agoIt's a catchy name that's fun to say. Being an amusing pun only makes it better. So the answer is yes, it's a wonderful name for a scheme.
- akuchling 7y ago"I would recommend not wasting any more time on the naming issue. (This is a recurring theme in my posts -- remember, I spent about 0.3 microseconds thinking about whether "Python" would be a good name for a programming language, and I've never regretted it.)" -- Guido van Rossum, 25 Nov 1998.
- diegof79 7y agoThe answer is: yes. Some examples: - Python comes from Monty Python - Ruby is inspired by Perl but according Wikipedia chosen because of a bright stone used by one of the authors colleagues - Smalltalk was chosen by Alan Kay to avoid a god-like name and lower expectations (see The Early History of Smalltalk) - Lua is a Portuguese word for Moon, because of a previous project named SOL (sun) I can continue with Pascal, Ada, and Haskell based on people names. Also with Java (maybe inspired by a coffee store), C (which is not even a word), D... The point is: systems and programming languages are made by people. Good naming is important for function/operators/libraries because they play a part in system comprehension. But, otherwise having a “fun” name reflects the humane part of the creation :)
- skrishnamurthi 7y agoThe name MrEd was also an in-joke because Matthias Felleisen was notoriously anti-TV, so his students thought it fun to sneak in a TV reference. Lots of the old subsystems had prefixed-names. MrEd and MzScheme begat DrScheme; others include SrPersist (Sister Persist) and FrTime (Father Time). We built a debugger called MzTake ("when you make a mistake, use MzTake"). My favorite is an IRC client that Robby Findler wrote called MzCommunication.
- skrishnamurthi 7y agoYou know it's also the name of a sporting good, right? There's this game called tennis. Quite popular, can be fun to play and to watch. You should check it out.
- pjmlp 7y agoHappy birthday! Looking forward to Racket CS as main implementation. The talks done by the Racket team are always interesting to watch.
- pankajdoharey 7y agoWell this is a Birthday year for many languages. 1995 must be some super anomaly year Ruby, Java, Javascript, PHP, Delphi and Racket all were invented in the same year.
- skrishnamurthi 7y agoI don't think it's a coincidence that the mid-90s was a hot time for language design: the CGI-bin protocol of the Web suddenly made it possible to write code in any language you wanted and distribute the results, even with a loosely graphical interface, painlessly to clients (in the sense they didn't need to install anything). I call it the "Cambrian explosion of languages". Though Racket was not created for that purpose, it's unsurprising that many others from that era were linked to the Web.
- pankajdoharey 6y agoPerhaps you are right, I was just just 11 when these languages were invented so I really lack any context.
- traes 7y agoI feel like this article has a rather abrupt ending. Is there another resource that covers Racket's early history?
- ipnon 7y agoQuixotic CS professors probably were too fixated on Mothers' Day to remember their other anniversary. A cause for celebration!
- samth 7y agoIt's really just about the initial steps of the project. One talk you might like is https://www.youtube.com/watch?v=wEgaVMOYLEU https://www.youtube.com/watch?v=wEgaVMOYLEU from 9 years ago.
- sohamsankaran 7y agoTaking an SICP-like class in Racket and playing with recursive constructs for the first time was one of the highlights of my CS education. This language gave more unalloyed joy than anything else I've done as a programmer, though I've yet to build anything practically useful in it.
- onemoresoop 7y agoI feel the same but unlike you I don’t care much about doing something practical. Well, I do, but am forgiving if the efficiency is not there. Just playing around with bigbang I came up with some game ideas that would not have come in a different environment. My take is that it is an environment fertile with creativity and ideas due to simplicity of scheme. Those can be taken and rebuilt elsewhere if needed. To me the joy is in the playground.
- billfruit 7y agoI thought similarly too, until I spent some time with Prolog. Lisp seems wonderful and clever, but Prolog feels even more magical. Even a simple thing like concatenation of two lists, that in Prolog it could be done purely declaratively, without expressing how it needs to be performed, seems levels more magical than how it is done in lisps.
- JadeNB 7y ago> Even a simple thing like concatenation of two lists, that in Prolog it could be done purely declaratively, without expressing how it needs to be performed, seems levels more magical than how it is done in lisps. Not to argue with the claim—Prolog does feel magic sometimes—and maybe I'm not sufficiently idiomatic in Prolog, but I would express them similarly: something like concat([], Bs, Bs). concat([A|As], Bs, [A|Cs]) :- concat(As, Bs, Cs). I don't have Lisp code at my fingertips, but that's quite like how I'd do it in Haskell: concat [] bs = bs concat (a:as) bs = a:(concat as bs) (I just looked up a Scheme primer to refresh myself, and I think there I'd do (define (concat as bs) (if (null? as) bs (cons (car as) (concat (cdr as) bs)))) … but don't hold me to it. Certainly not using pattern matching makes the Scheme more verbose, but I think the algorithms are the same.) Is one of these an un-idiomatic way to do it? (If you downvote, of course that's your right, but I'm not being sarcastic or dismissive; I really would like to know, as not a professional programmer in or fluent speaker of any of these languages, if I'm not writing idiomatically, so I'd be grateful if the downvote came with a comment!)
- ipnon 7y agoWhat I learned from studying Racket is that I can now only reluctantly forego functional programming languages in all contexts personal and professional.
- skrishnamurthi 7y agoWhy forego at all? (-:
- ipnon 7y agoIt seems functional programmers are alone in being able to take a joke. Long live Racket!
- teodorlu 7y agoWhat is "the infamous Felleisen-Wadler paper"?
- throwaway17_17 7y agoBased on context I would assume it is: A Call by Need Lambda Calculus. Zena Ariola, Matthias Felleisen, John Maraist, Martin Odersky, and Philip Wadler. 22'nd Symposium on Principles of Programming Languages, ACM Press, San Francisco, California, January 1995. There is a humorous story about how the paper and collaboration came about, which Felleisen discusses in an interview [1]. [1] —> https://www.cs.cmu.edu/~popl-interviews/felleisen.html https://www.cs.cmu.edu/~popl-interviews/felleisen.html
- teodorlu 7y agoThanks!
- mark_l_watson 7y agoI used Racket a lot about 2 months ago. I was prototyping an application [1] in three different languages: Racket, LispWorks Common Lisp, and Swift. Racket produces standalone applications that can be codesigned using Apple's tools, in preparation for their App Store. Best regards to the Racket team. [1] http://www.knowledgegraphnavigator.com/ http://www.knowledgegraphnavigator.com/
- threepio 7y ago> Racket produces standalone applications that can be codesigned using Apple's tools Can you elaborate on how this works? I've been wanting to try something similar.
- mark_l_watson 7y agoMy codesigning notes for Racket Build an application, unpack the .dmg file, add my own data files, create a new subdirectory with same name and move all files into it, discard the dmg, use Disk Utility to build a new .dmg and sign it: codesign --force --deep --options runtime -s mark@mydomain.com -v New.dmg Note: my app had required data files, which complicated the process.
- fiddlerwoaroof 7y agoI’ve figured out a somewhat automatic way to do the dmg bundling which may be of interest: https://github.com/cjdev/aws-access/blob/master/Makefile#L26 https://github.com/cjdev/aws-access/blob/master/Makefile#L26 The manifest file used is here: https://github.com/cjdev/aws-access/blob/master/dmg.json https://github.com/cjdev/aws-access/blob/master/dmg.json It’s a bit annoying because it requires having a working node installation, but I found the whole process of building and configuring a dmg much too manual and undocumented to not use some kind of utility for.
- samth 7y agohttps://defn.io/2020/01/04/remember-internals/ https://defn.io/2020/01/04/remember-internals/ describes some of this.
- submeta 7y agoHow does Racket compare to Clojure? Anyone knows both worlds and would like to give some infos? I know Clojure is JVM based, one of those new languages built on Java technology (the others being Scala and Groovy). So very solid tech used by the likes of Soundcloud or young startups like RoamResearch. But Racket? Mostly education?
- madhadron 7y agoThere is very little commercial use of Racket. I've used it several times to make little GUI apps to deploy on multiple platforms, and it excels at that. Probably the best way to think about the two of them is that Clojure is a focused language design, and the assumption is that you stay in the language and extend it with macros. Racket is an environment for generating languages. The assumption is that you will build language variants to do various tasks.
- neilv 7y agoVery little commercial use of Racket is maybe an understatement. A few notes to people thinking about commercial use of Racket... The big customer of my consulting business (public sector) did amazing "force multiplier" things with Racket and my help, even when many general-purpose libraries had to be built in-house. But there were virtually no other prospective clients in that niche after over a decade. There are a few organizations who use Racket to great production effect. But two problems for consulting&employment for those: * Their generally one-person teams could usually do everything that's needed, and perhaps some developers prefer that; * When they would like additional help, they generally didn't have the money/authority to pay HCOLA developers. I tried half-heartedly for a few years to promote the idea of doing one's startup prototype with Racket. But the browser-side and iOS&Android app stories aren't there yet. And my own startup, I self-funded too long before my co-founder and I realized we should've found a CEO to court funding months earlier. The startup where I currently lead engineering uses (for historical reasons) Python for server backend and for device interfacing on a light embedded system, and framework-like JS on one frontend, and interfaces with a SaaS for a different frontend. All the Python bits could've been done in Racket, and Racket would've been more productive and fun to work with, but it's not worth rewriting at this time. I recently prototyped a new embedded system frontend in Kivy, and was able to get a running GUI mockup nice in a few hours, but realized afterwards it would've been better with Racket's GUI toolkit. When I recently had to pick a method to do an iOS app that wasn't consumer-facing, I was tempted to use Gambit Scheme. But I decided on Swift and SwiftUI, to be safe, and so we'd have more experience with it for the next iOS app (consumer-facing, for a high-quality/prestige brand) that was more likely to need a more-native toolkit and APIs. That said, if someday I have a startup that uses Racket or another Scheme (or another fringe platform), I expect the platform appeal to help me attract a larger pool of higher-powered developers than I otherwise could. If you're considering using Racket for making money, one start is to participate in this low-traffic email list (which has some unusual conventions): https://www.neilvandyke.org/racket-money/ https://www.neilvandyke.org/racket-money/
- ken 7y ago> "If functional programming is that good, why is nobody using it?" In the past 25 years, I think we've seen quite clearly that programming language popularity depends on many different factors, and "quality of he underlying paradigm" is way down on that list -- if it's even a factor at all. Just a quick glance at any list of most-used-languages will tell you that 50% of popularity is "is it being pushed by a big company?", and 25% is "is it the primary interface for a popular platform?" Take away those two factors and there's maybe only about 3 languages left in the top 25 (Python, Ruby, PHP?). Where quality shines is in being able to stay a viable niche for a long period of time. That's Scheme.
- hintymad 7y agoOh, lots of people are using functional programming. They just don't use the paradigm exclusively nor do they use a purely functional programming language. Let's see, - Supporting higher order functions in programming languages. Check. - Usual operations on higher-order functions like currying? Check. - Functional reactive programming. Check. Rx was a big thing a few years ago. - Purely functional data structures. Check. Even Java has a few reasonably popular libraries that support such data structures. - Using referential transparency whenever we can. Check. - Using CPS (continuation-passing style) in daily programming. Check. - Using recursion in production. This is not functional programming per se, but given that so many people mention recursion whenever they mention functional programming, it's worth listing recursion here. And mutual recursion and tail recursion, two of the hallmarks of entry-level functional programming techniques? Check and check. For instance, RxJava implements trampoline just to support tail-recursion, as it is necessary to implement cleanly some of RxJava's operators. - Common techniques seen in functional programming, particularly the ones that involve map, reduce, scan, left-fold and right-fold. Check. This is just the items that are on top of my mind. I'm sure I missed plenty. The gist is that people have been adopting functional programming. They just don't necessarily move to a purely functional programming language for practical reasons: platform, support, community, ecosystems, or even marketing. Programming paradigm is just one factor among many when people choose their programming languages.
- sweeneyrod 7y ago
- nickmain 7y agoI've used Racket for many prototype languages and tools and love its facilities and philosophy. The thing that always gives me pause when considering it for a new project is that it has no robust mobile or client-side web story. If the tool lives on beyond prototype then I have to rewrite it in a native language or restrict it to the subset of Scheme that can run in Gambit on iOS. I really hope that Racket can evolve and adapt to a world where more computing and even development is going to happen on mobile and web.
- peatmoss 7y agoI keep looking at Gerbil Scheme as another “modern feeling” scheme with some opinions and creature comforts. And it’s built on Gambit.
- ethagnawl 7y agoRacket has some of the best documentation I've ever seen and is a joy to use. I don't use it, but DrRacket is also a great IDE -- especially for beginners. I wish either Racket was more widely used in industry or I had more time/energy/excuses to use it.
- catalogia 7y agoScribble documentation rendered as HTML is alright, but I wish there was better support for accessing that documentation in your editor. Racket Guide and Racket Reference are both very well written though.
- sorawee 7y agoIn DrRacket, when the cursor is on an identifier, you can hover over the big arrow at the top right corner of the definition window. A popup will appear showing basic usage of functions / macros without detailed explanation. However, you can click "read more..." which will open up the full documentation in a browser. Also, this documentation is installed locally and does not require the internet.
- pankajdoharey 7y agoThe documentation is beautiful but is far from complete, API's lack examples and if you do a search there is confusion about which module the function refers to. I find Clojure and Common Lisp documentation quite complete for a lisp. I also find Ruby docs have tons of example code in its docs. Though I agree none is as beautiful as racket docs.
- samth 7y agoWhile I can certainly believe that more examples are needed, the second issue I don't understand. If you search for something, it tells you exactly what module it's from: https://docs.racket-lang.org/search/index.html?q=call-in-con https://docs.racket-lang.org/search/index.html?q=call-in-con for example.
- manish_gill 7y agoI've picked up Racket recently after a long while and I'm enjoying it. Does anyone have recommendations of how to learn to think recursively? Sure, using the language more and more does it, but what about a more general recursion as a problem solving paradigm pattern? I'm enjoying doing recursive code exercises and got into Backtracking problems. Creating things like Sudoku solvers, Knight's Tour grid etc was quite fun. I still can't develop recurrences easily though. Any books/exercises that people here found helpful?
- doneata 7y agoThis paper, "Programming by Numbers: A Programming Method for Novices", presents a recipe of how to design recursive functions: https://eprints.soton.ac.uk/254242/1/p_by_numbers.pdf https://eprints.soton.ac.uk/254242/1/p_by_numbers.pdf And the "The Little Schemer" book has a series of exercises that expose recursive thinking: https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992 https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0... Hope this helps!
- skrishnamurthi 7y agoI would say the vast majority of How to Design Programs (https://htdp.org/ https://htdp.org/) is about exactly this. It's not presented this way, but that's what the Design Recipe makes you really good at.
- bgorman 7y agoThe little schemer is a book purpose built to teach this.
- emmanueloga_ 7y agoI like EOPL 3rd edition, the first two chapters are pretty much dedicated to explaining recursion [1]. 1: https://en.wikipedia.org/wiki/Essentials_of_Programming_Languages https://en.wikipedia.org/wiki/Essentials_of_Programming_Lang...
- nikofeyn 7y agoas others have said, the little schemer (for functions) and also the little mler (for types) are purpose built to thinking about functions and types recursively. also, the coursera course programming languages by dan grossman is an excellent course on doing things recursively. in part a, you learn sml, and in part b, you learn racket and build a simple interpreter. https://www.coursera.org/learn/programming-languages https://www.coursera.org/learn/programming-languages https://www.coursera.org/learn/programming-languages-part-b https://www.coursera.org/learn/programming-languages-part-b
- emmanueloga_ 7y agoI wish the team did away with Dr Racket... It does have some unique features but I feel like it adds megabytes to the whole package and is not really very usable for anything other than learning (imho). I've seen this acknowledged by the Racket docs I think (the fact that it is supposed to be a learning environment). I suspect Racket would be a lot more popular as a development environment if the team did away with Dr Racket and put those resources into maintaining a very solid Emacs, Vim and VS Code integration.
- nikofeyn 7y agoracket doesn't have any less of a solid integration into emacs (racket-mode) and visual studio code (magic racket) than most other languages.
- emmanueloga_ 7y agoI don't think this is true. I don't think racket-mode has a big community around it, and sadly doesn't come even close to slime [1] or cider [2], both very feature full dev envs for Emacs. Magic racket is very bare bones and can't compare to integrations like Calva [3]. So I saw someone down voted me... just to be clear, I use Racket despite having to work against a poor tooling experience, when comparing to say, CL or Clojure. I want Racket to succeed in industry, so is not like I'm complaining. I'm pointing out what I think is a weakness, maybe a blind spot by the team, since they seem to be very attached to Dr Racket! 1: https://common-lisp.net/project/slime/ https://common-lisp.net/project/slime/ 2: https://cider.mx/ https://cider.mx/ 3: https://github.com/BetterThanTomorrow/calva https://github.com/BetterThanTomorrow/calva
- soegaard 7y agoHave you checked the new features recently? https://www.racket-mode.com/ https://www.racket-mode.com/
- emmanueloga_ 7y agoSo part of the problem is that racket mode has a bus factor of 1. I saw that the maintainer posted this [1] a while ago, which is a bit concerning. My point is that would be ideal if the core Racket team also participated in polishing the IDE integrations, other than Dr Racket. 1: https://www.greghendershott.com/2019/07/future-of-racket.html https://www.greghendershott.com/2019/07/future-of-racket.htm...
- spdegabrielle 7y agoHappy Birthday Racket! I’ve learnt a lot working with Racket and I hope that will continue: next on my list `#lang typed/racket` https://docs.racket-lang.org/ts-guide/quick.html https://docs.racket-lang.org/ts-guide/quick.html
- EXO1 6y agosander jordens
- mtsx 6y agowelcome