24 ms·
John Carmack working on Scheme as a VR scripting language
- hyperion2010 11y agoAnd on the 2nd day The JC spoke and proclaimed: The metaverse shall be written in lisp. And it was good.
- roghummal 11y agoAnd on the 3rd day The Facebook spoke and proclaimed: All your metaverse are belong to us and shall be written in "web-native" "technologies". [Sign In With Facebook]
- TeMPOraL 11y agoSomebody set up us the like.
- DaveSapien 11y agoThe Like button is people!
- roghummal 11y agoThey're making our news out of people. Next thing they'll be breeding us like cattle; For clicks. You gotta tell 'em. You gotta tell 'em. >I promise tiger, I promise, I'll tell the exchange. Listen to me DaveSapien, you gotta tell 'em. HN is people. We gotta stop 'em! Somehow!
- DaveSapien 11y agoD:
- roghummal 11y agoI didn't mean to bum you out.
- DaveSapien 11y agono no, that was just me looking at lisp...
- pka 11y agoJust had to: https://xkcd.com/224 https://xkcd.com/224
- kruhft 11y agoFinally.
- shawnps 11y agoI attended Northeastern University where PLT Scheme (now Racket) was the first programming language I ever learned in a classroom. Matthias Felleisen, the second poster in that thread, is a professor at NU and co-author of How to Design Programs: http://www.ccs.neu.edu/home/matthias/HtDP2e/ http://www.ccs.neu.edu/home/matthias/HtDP2e/ I recommend this book for anyone interested in learning more about Racket.
- icu 11y agoI would also like to recommend these fantastic edX courses: 1) https://www.edx.org/course/systematic-program-design-part-1-core-ubcx-spd1x https://www.edx.org/course/systematic-program-design-part-1-... 2) https://www.edx.org/course/systematic-program-design-part-2-ubcx-spd2x https://www.edx.org/course/systematic-program-design-part-2-... 3) https://www.edx.org/course/systematic-program-design-part-3-ubcx-spd3x https://www.edx.org/course/systematic-program-design-part-3-... Part 1 started 2nd of June so you can still start it and catch up (if you are familiar with programming concepts already then the first 2-3 weeks are easy). Note that there is archived (older) courses on Coursera here: https://www.coursera.org/course/programdesign https://www.coursera.org/course/programdesign I emailed Professor Kiczales about having the course on both edX and Coursera and he confirmed that new course iterations will be on edX. I cannot recommend the book and the course enough for newbie programmers and even those 'new learners' who are stuck between newbie and hacker. I would say that if you know less than four languages that is you. Doing this course will be like taking the red pill. One last thing, the course may start off slow but if you stick at it the difficulty climbs and you will be well rewarded.
- dschiptsov 11y agoI can't overemphasize how good this course is! It is second only to the Abelson and Sussman video lectures.)
- brudgers 11y agoI was wondering what happened to part 2 of "Introduction to Systematic Program Design" on Coursera. I took the inaugural instantiation, and it was offered again, but then disappeared. Kickzales's ability to cut across the complexities of recursion and get to the point is just one aspect of his teaching style. From a literary point of view, I find the style of HtDP a bit harder to engage than Feilison's other works and SICP. I wish it read less like an over the transom argument. A more overtly opinionated and passionate case for TDD and the rest of the HtDP methodology would be great for the third edition. One of the things that makes SICP great is that it is entirely unapologetic, and the reason it works is that espousing sound engineering principles needs no apology.
- minikomi 11y agoBonus "easter eggs" from the rkt source: John's Office: http://s3.amazonaws.com/o.oculuscdn.com/v/test/social/avatars/office_john.JPG http://s3.amazonaws.com/o.oculuscdn.com/v/test/social/avatar... Demo Room: http://s3.amazonaws.com/o.oculuscdn.com/v/test/social/avatars/office_demo.JPG http://s3.amazonaws.com/o.oculuscdn.com/v/test/social/avatar...
- shawnps 11y agoAs well as an "office lobby" photo: http://s3.amazonaws.com/o.oculuscdn.com/v/test/social/avatars/office_lobby.JPG http://s3.amazonaws.com/o.oculuscdn.com/v/test/social/avatar...
- mkagenius 11y agoDifficult to figure what parts are really curvy :)
- myth_buster 11y agoRender the metaverse - May 2015 It's happening Neil.
- daredevildave 11y agoExplore them properly: http://playcanv.as/p/apIKHp7a http://playcanv.as/p/apIKHp7a :-D
- ndesaulniers 11y agoThis is neat, how did you rig this up?
- daredevildave 11y agoPretty simple in PlayCanvas. It's a sphere with a camera in the centre. Texture is applied as an emmissive map on the material. Took me about 5 mins. Project is here: https://playcanvas.com/project/349830/overview/office https://playcanvas.com/project/349830/overview/office
- viach 11y agoI thought the industry standard for game scripting is Lua. I mean - if you want to attract the wide range of game devs, why choose lisp?
- technomancy 11y agoBecause you're John Carmack. You'll attract devs no matter what you use, so it makes sense to use the best tools available.
- viach 11y agoYes, he of course can afford this - to play with things he likes. But will it blend?
- codygman 11y agoDoes it need to blend? Were Racket the only supported scripting language for Oculus I'm sure people would just learn Racket rather than skipping out on Oculus.
- sklogic 11y agoNo need to learn Racket, it's easy to build any language on top of it. Having a single meta-language as a base allows diversity and choice for end users that is not possible with any of the inferior (non-meta) languages.
- p4bl0 11y agoAs sklogic said, no need to learn Racket: It has multiple Lipsy dialects: http://docs.racket-lang.org/guide/dialects.html http://docs.racket-lang.org/guide/dialects.html And a datalog one: http://docs.racket-lang.org/datalog/index.html http://docs.racket-lang.org/datalog/index.html It knows C: http://pkg-build.racket-lang.org/doc/c/index.html http://pkg-build.racket-lang.org/doc/c/index.html And Javascript: https://github.com/lwhjp/ecmascript https://github.com/lwhjp/ecmascript And Algol: http://docs.racket-lang.org/algol60/index.html http://docs.racket-lang.org/algol60/index.html And Pascal: https://github.com/soegaard/minipascal https://github.com/soegaard/minipascal It shouldn't be too difficult to teach it Lua ;).
- kriro 11y agoThat's pretty interesting. I recall that there was a project to integrate Clojure and Unity but I don't know how active it is: https://github.com/arcadia-unity/Arcadia https://github.com/arcadia-unity/Arcadia Either way getting Carmack into language design has very exciting implications. He seems like an ultra pragmatic guy and is undoubtedly a great programmer.
- macmac 11y agoIt is very active. Search youtube for "arcadia clojure" - lots of very compelling/recent demos.
- cellarpaper 11y agothey're also super active on gitter and twitter, fyi. often fielding and answering questions about arcadia. https://gitter.im/arcadia-unity/Arcadia https://gitter.im/arcadia-unity/Arcadia https://twitter.com/arcadiaunity https://twitter.com/arcadiaunity
- pella 11y agoStrange Loop(2014) video:"Clojure in Unity 3D: Functional Video Game Development" by Ramsey Nasser and Tims Gardner" https://www.youtube.com/watch?v=tJr_TD1BtF0 https://www.youtube.com/watch?v=tJr_TD1BtF0 __ and __ http://arcadia-unity.tumblr.com/post/100257212548/arcadia-0-1a-launched http://arcadia-unity.tumblr.com/post/100257212548/arcadia-0-... HN: https://news.ycombinator.com/item?id=8472792 https://news.ycombinator.com/item?id=8472792
- ramseynasser 11y agoArcadia dev here! We're always actively working on Arcadia, and are closing in on our next release that brings with it a package manager and all kinds of other goodness. Keep an eye on the repo or jump in the gitter for updates. Lisp in VR is super exciting! We're following Carmack's work closely.
- sgrove 11y agoAlso worthwhile to checking out a SkillsMatter talk Tim (one of the Arcadia authors) gave, really appreciate the sense of freedom/interactivity in the demo talk (once he gets into it) https://skillsmatter.com/skillscasts/6416-games-and-3d-graphics-in-arcadia https://skillsmatter.com/skillscasts/6416-games-and-3d-graph...
- pjmlp 11y agoThis is great! Hardcore game devs need to have their idols doing this type of work to convince them to move to something higher in the chain. Like it happened with Pascal, C and C++. Or having an OS underneath their engine.
- bottled_poe 11y agoI'm not convinced it has anything to do with who is using the language. If the best framework happens to be written in some language in some way, well I guess that is what I will use...
- davedx 11y agoFor me, Carmack is one of those people I will watch and maybe follow just on reputation alone.
- unknownentity 11y agoTechnical talent aside, it's a shame he's never been involved in the development of any games actually worth playing :(
- pjmlp 11y agoThat is a matter of taste, as our LAN parties would prove.
- sbarre 11y agoYou must be pretty young.
- wavefunction 11y agoIt's not like he's probably indirectly responsible for all the games you feel are worth playing.
- baq 11y agodoom had a bigger installed base than windows 95. you sir are gravely wrong.
- macmac 11y agoI love the humility he displays by asking if Gear VR/Scheme is an appropriate topic for the list.
- carloscm 11y agoLuaJIT is, by far, the best option for scripting in games/RT, thanks to the incredible JIT performance and its incremental GC with deadlines. But there's something when you start playing with Lisp and then you want to keep using it more and more. Suddenly the classic Ruby/JS/Python/Lua language design feels boring and stale (ironically, given the age of Lisp). After getting my feet wet in v2, I'm doubling down on Scheme for The Spatials v3, this time using S7 Scheme, a true gem of an interpreter (first class environments, hook on symbol-access for reactive programming, super extensive C FFI support, etc.)
- deleted 11y ago[deleted]
- sklogic 11y agoMillions of developers got no clue about the power of meta-languages.
- jarcane 11y agoGoing from Python to Lisp to Racket was an absolutely mind-blowing experience. It literally changed my life, my perspective on programming, even what jobs I sought out.
- k__ 11y ago> It literally changed ... what jobs I sought out. Why?
- moron4hire 11y agoI'm somewhat surprised he isn't basing his work on Fluxus: http://www.pawfal.org/fluxus/ http://www.pawfal.org/fluxus/ > people who might be a little hostile to working in a Lisp. Hostility is an excellent word for it. > Doing VR GUI development in the native apps is unpleasant – you can gut it out in C++ with our current interfaces, but the iteration times and code structure don’t make it a lot of fun. > In-editor prototyping is nice in Unity, but actual on-device testing cycle times are terrible, and you wind up with all the bulk of Unity and poor access to the native VR features like TimeWarp layers. This is exactly the reason I've focused on WebVR with my Primrose project. Otherwise, JS sucks. > I am a big believer in functional programming (and static types) for large projects, but there is an undeniable bit of awkwardness compared to just imperatively poking things for small projects That's funny, because I would say the opposite is true: imperative code with global state is harder to poke around on because it's harder to reason about your state, whereas functional code [0] can be sliced and diced and put back together much more readily. There are places where traditional for-loops, with a readily exposed counter, are extremely useful in game programming. Perhaps that is what he means? Map and for-each are great when they are the right tool, but I've personally never subscribed to the idea that they are particularly "easier" to use than for-loops, or "more functional". > The design usage is to reference pre-processed models loaded from the net This is a great point. Most (all?) beginner 3D programming tutorials start you off with making your own meshes by hand in code and leave loading models from files until far, far later. This, to me, is exactly backwards. The basics of modeling are not hard to teach, Blender is free, and building static, non-mathematically defined meshes in-code really sucks. [0] with a REPL, any modern language without a REPL is defective. And that means with Readline, or something similar. A REPL without command history is a defective REPL.
- douche 11y ago> This is a great point. Most (all?) beginner 3D programming tutorials start you off with making your own meshes by hand in code and leave loading models from files until far, far later. This, to me, is exactly backwards. The basics of modeling are not hard to teach, Blender is free, and building static, non-mathematically defined meshes in-code really sucks. Your mileage may vary, but I wouldn't necessarily say that modeling is easy, especially not trying to use Blender. Most beginnner 3D programming tutorials use simple geometric shapes because it is a helluva lot easier to figure out if your lighting is off or your projections wrong when the scene objects are simple. Loading complex models from file is not exactly a piece of cake, either - you either need a fully-featured library with support for models baked in, or to use something like Assimp, or even write your own model format parsers.
- milkworsethan 11y agoI can already see Lispers using "but Carmack uses it for VR stuff, therefore it's the best!" as an argument in language wars.
- DonHopkins 11y ago"James Clark uses it for SGML stuff, therefore it's the best!" Of course James Clark is to markup languages as John Carmack is to games, or Jesus Christ is to religion. ;) http://www.jclark.com/dsssl/ http://www.jclark.com/dsssl/ https://en.wikipedia.org/wiki/Document_Style_Semantics_and_Specification_Language https://en.wikipedia.org/wiki/Document_Style_Semantics_and_S...
- rayalez 11y agoOh my goodness this sounds absolutely amazing. I really-really hope that this will happen. Working on VR in lisp would be the most fun thing in the world ever.
- protomyth 11y ago"With app signing, we have no way for developers to casually share work with each other or limited communities." This is such a sad state of affairs. I miss the excitement of handing a friend a floppy (well, a tape at one time) so they could play with code I wrote.
- morley 11y agoLuckily, adding the "web-like" scripting mode will potentially circumvent this. “Web like”, where the script is downloaded from the net for each execution and run by a single signed app that we provide (NetHMD). Fully specified by an app-scheme URI, this allows VR experiences to be launched directly from web pages or app-links on Facebook, which I think is VERY powerful – read about how great something is while browsing on your phone, then just click the link and get the “insert into HMD” dialog and jump right there. VR scripts can link to other VR scripts without leaving VR. There is no direct monetization here, but IAP can eventually be supported. I think this is a positive outcome of Facebook owning Oculus. If another hardware company owned it, they would potentially be much more myopic about the "Internet"-related possibilities of VR.
- dopamean 11y agoI'm not sure I understand this. I think I'm missing something so maybe you can help. I share code with friends all the time. Sometimes it's something small and I save it as a gist on github and sometimes it's something larger and I make an entire repo. I have also made tarballs and emailed them to people when necessary.
- larsberg 11y agoWow! This takes me back to the late-90s. I worked on the Neverworld project, which was a set of Scheme48 extensions for modeling virtual worlds in VRML: http://www-personal.umich.edu/~jeffshuo/neverworld/ http://www-personal.umich.edu/~jeffshuo/neverworld/
- siscia 11y agoNot really related, but instead of using a LISP to code VR, I will suggest to do the other way around, so code LISP in a VR environment. The real core of LISP are pure function and simple structure. It really makes sense to have a 3D representation of a function where you plug variable inside and get variable out...
- sklogic 11y agoAny other language out there is just a subset of Lisp (or any other sufficiently powerful metalanguage). So it's superior simply by definition. EDIT: downvote count = a number of people who got no clue what meta language is.
- steveklabnik 11y agoI understand your sentiment, but this isn't what 'subset' means. Definitional arguments aside, this would mean that machine code is the best language, since all other languages are 'subsets' of it.
- sklogic 11y agoNo, this is exactly what 'subset' means. Any code in any language can be in fact a Scheme code, and there is no way you can tell if it's Scheme or not. And this is exactly what superiority is about: you can do in Scheme anything that is possible in any language, existing or not invented yet. There is absolutely no way one can even compare meta-languages vs. fixed ones.
- scott_s 11y agoYou're describing Turing completeness, which is a property of all general purpose languages. In the context of programming languages, "subset" implies that one language is identical in form and semantics to the other, plus some extra stuff. Good examples of this are Objective C and C++ to C. (Although C is not a strict subset of Objective C and C++, it is pretty close.)
- sklogic 11y ago> You're describing Turing completeness, which is a property of all general purpose languages. What? It's totally irrelevant here. > In the context of programming languages, "subset" implies that one language is identical in form and semantics to the other, Exactly. And, say, a Pascal implemented as a thin macro layer on top of a Lisp is semantically 100% equivalent to a standalone Pascal. In other words, you can build a Pascal (undistinguishable from the "real" one) on top of Scheme, but you cannot build Scheme on top of Pascal.
- mrspeaker 11y agoThis is pretty exciting! Also, I love this tweet from John Carmack last week: "The web gets assembly... and I'm using a Lisp for VR. Bizzaro world" https://twitter.com/ID_AA_Carmack/status/611279873852731392 https://twitter.com/ID_AA_Carmack/status/611279873852731392
- sagivo 11y ago> "Javascript would have been more familiar to a broader base of web industry developers, but I have basically no experience with javascript, and little desire to explore it." that's not a good reason to give up on the most popular scripting language that will engage more developer to VR.
- TeMPOraL 11y agoHow about having those developers get off their asses and learn something new for a change? Seriously, JavaScript is not the best thing since sliced bread. People will code up support for it anyway, but I suppose Carmack is aiming for power instead of popularity.
- jlarocco 11y ago> that's not a good reason to give up on the most popular scripting language that will engage more developer to VR. Maybe, but there are a lot of good reasons to avoid Javascript, too. I've actually been part of a project that used Javascript as a scripting language inside non-web software. IMO a better language should be used whenever possible. First, even today, 98% of the Javascript code and tutorials on the internet and in books is focused squarely on website scripting, and it's difficult to find out what's actually part of Javascript, and what parts come from the browser. So saying, "There are a ton of Javascript resources available," ends up not meaning much, because they're all telling you how to manipulate CSS or navigate through the DOM. The other 2% covers node.js, which is still not useful for embedded scripting. Second, Javascript sucks as a language. There's all kinds of stuff like weird conversion rules and lack of real arrays (and I could keep going, but won't) that end up making things more difficult than they need to be. It's a commonly held belief that it was unfortunate Javascript became the de-facto scripting language of the web. No use propagating that mistake to other fields. Third, there's no reason to believe that web developers familiar with Javascript will be particularly good at (or interested in) scripting VR systems or whatever. Finally, a lot of existing Javascript code is just really, really bad. It may be the most popular scripting language, but I would wager large amounts of money that as a percentage, there's more flat out bad Javascript code than there is in any other language. Missing out on that part of the developer pool helps more than it hurts. Besides all of that, Scheme isn't very hard to learn and is a far better language than Javascript. People turned off because they can't learn Scheme probably weren't going to contribute much anyway.
- mark_l_watson 11y agoVery cool. When I started work at Angel Studios (mostly they did work for Nintendo and Disney) I experimented with an embedded Scheme (probably SIOD). I was hired for game AI and I thought that a scripting language would facilitate rapid experiments. I ended up sticking with C++ which was not so bad because I always had a very beefed up SGI Reality Engine from either Nintendo or Disney, depending on what I was working on. Turns out that Reality Engines do C++ builds very quickly :-)
- lnanek2 11y agoPretty bizarre. He says he is "favoring ease of development over performance," but the best way to ease development would have been to use a well known language like JavaScript or C#. Those are the two scripting languages in Unity as well, so it would have immediately worked with Unity developers, and C# isn't far off from Java for one of the other biggest languages. Kind of sad VR development is going to hobbled like this.
- TeMPOraL 11y agoEase of development for a programmer is a different thing than ease of development for a company, the latter usually means you can hire tons of cheap programmers to crank out code. Carmack simply decided to choose a powerful tool instead of a popular one; a choice which I applaud and wish more people and companies would make.
- forrestthewoods 11y ago"over performance" doesn't mean "with complete disregard to performance". You still need to hit >= 90fps with zero hitches and zero dropped frames. A less performant scripting language can be a wise choice if the the productivity gains are sufficient. However that language still needs to hit 90fps with no dropped frames.
- davexunit 11y ago>Kind of sad VR development is going to hobbled like this. Racket is a much more powerful, well-designed language than JavaScript or C#.
- mister_m 11y agoI think you vastly underestimate how capable developers are of learning new programming languages.
- scanr 11y agoA long time ago, Dave Taylor left id to create Crack dot Com. They then wrote the game "Abuse" using C++ and a lisp variant: https://en.wikipedia.org/wiki/Abuse_(video_game) https://en.wikipedia.org/wiki/Abuse_(video_game) http://lispgames.org/index.php/Abuse http://lispgames.org/index.php/Abuse Although, from the FAQ: http://abuse.zoy.org/wiki/doc/faq http://abuse.zoy.org/wiki/doc/faq "Approximately seven percent of the game engine and Abuse combined is Lisp code. The rest is C++."
- TeMPOraL 11y agoAbuse, good memories. It's one of the games (other being StarCraft and Unreal Tournament) which pushed me into learning programming as a kid. Funny that after 10 years I suddenly remembered that I had my first Lisp exposure over a decade before I learned about the language itself - it was by browsing Abuse data files.
- tsax 11y agoYeah yet another programming language discussion/argument.
- frik 11y agoNaughty Dog (Uncharted, Crash Bandicoot, Jak and Daxter) uses PLT Scheme (a LISP variant) and used "Game Oriented Assembly Lisp" (GOAL). http://www.slideshare.net/naughty_dog/statebased-scripting-in-uncharted-2-among-thieves http://www.slideshare.net/naughty_dog/statebased-scripting-i... https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://news.ycombinator.com/item?id=2475639 https://news.ycombinator.com/item?id=2475639 https://en.wikipedia.org/wiki/Racket_(programming_language) https://en.wikipedia.org/wiki/Racket_(programming_language) (formerly named PLT Scheme)
- stchang 11y agoThey switched to Racket when moving to the PS3. Here's a talk discussing the use of Racket in developing The Last of Us: https://www.youtube.com/watch?v=oSmqbnhHp1c https://www.youtube.com/watch?v=oSmqbnhHp1c
- titanomachy 11y ago"Racket" is the new name for PLT Scheme.
- stchang 11y agoYup! I meant that they switched from GOAL to Racket for the PS3. Here's a summary from a presentation at the CUFP workshop (likely a shorter version of the slides above): Dan Liebgold from Naughty Dog Software in Santa Monica then came on stage with the first gaming related talk at CUFP. They produce the popular Uncharted game series for the Playstation, which is famous for its complex and interactive scripted scenes. Dan described modern game development as a major production effort where, roughly, artists produce data and programmers produce code. Naughty Dog has a history of using various Lisp dialects to handle the code and data in a unified way. But when making the jump from the Playstation 2 to the Playstation 3, they decided that maintaining a custom Lisp-based game development system was too costly, and instead dedicated their efforts to rebuilding the tools, engine, and game in C++ and assembly language. This decision left no scripting system for gameplay and, more importantly, no system for creating DSLs and the extensive glue data that is typically required to develop a major video game. There was no off-the-shelf scripting system that fit the stringent memory requirements in a Playstation 3, and no language that would allow rapid DSL creation that fit into the existing tool chain. With a bit of naivety, a penchant for the Scheme language, and a passion for functional programming techniques, the team dove in and put together a system to fill in the gaps! They used mzScheme, which can compile to fast native code. Dan reported that the results have been very good, but not without issues. In particular, garbage collector performance sometime led to manual tuning being required, and build environment integration was tricky. Syntax transformations and error reporting led to confusion with new programmers too. On the other hand, the functional nature of the system was a big win, as it allowed them to flexibly distill game data down to just the right form to embed into the resource- constrained run-time environment. The final result is a system where programmers, artists, animators, and designers are productively programming directly in an S-expression Scheme- like language. Dan closed his talk by wowing the audience with the trailer for the game, which has now been released and is garnering extremely positive reviews. anil.recoil.org/papers/2011-cufp-scribe-preprint.pdf
- bsder 11y agoThese quotes make me cry: > Doing VR GUI development in the native apps is unpleasant – you can gut it out in C++ with our current interfaces, but the iteration times and code structure don’t make it a lot of fun. > “Remote development”, where the script is actually executed in an IDE on a PC, communicating with NetHMD over a TCP connection. This allows sub-second code-change to VR change iteration cycles, and the use of a debugger. There might also be a use for a related mode where a central server directly drives one or more clients. Why can't people see that this is the same problem even for standard GUI development rather than just VR GUI development? I would kill for these tools on my desktop ...
- mmastrac 11y agoThis is one reason why I don't mind building apps using Eclipse + Java. Swing sucks, but I can live-edit my code and see it running immediately. If you've ever watch Notch live-coding a Java game, he uses this extensively as well.
- zem 11y agoswing was slightly nicer to work with in clojure. not actually pleasant, mind you, but more pleasant than it was in java.
- _pmf_ 11y agoYet you constantly see Clojure enthusiasts droning on about their interactive development setup, all while poorly emulating what hot swapping did 10 years ago. Kids.
- TeMPOraL 11y agoThis is something you get so used to with Lisp that later any environment that doesn't support it seems unnecessarily and terribly constrained. SLIME + Common Lisp is a wonderful toolset.
- deleted 11y ago[deleted]
- drmeister 11y agoI've implemented a Common Lisp that interoperates with C++ and uses LLVM as the backend because I was motivated by the same shortcomings in traditional software development languages and tools (https://github.com/drmeister/clasp https://github.com/drmeister/clasp). I choose Common Lisp rather than Scheme because the killer feature of Lisp is Macros and they are easier to use in Common Lisp than they are in Scheme. Also, Slime (Emacs interface to Common Lisp) is one of the most powerful software development environments available IMHO.
- vfclists 11y agocool
- sesquipedalian 11y agoWhat makes Common Lisp macros easier to use than Scheme's?
- drmeister 11y agoIn short Common Lisp has two namespaces, one for functions and macros and a second for variable names - Scheme has one namespace. So you have fewer conflicts in naming in Common Lisp. In Scheme there is a lot of concern about hygienic macros that don't mess up the namespace. For more on that here is an inflammatory but well thought out exposition. http://www.xach.com/naggum/articles/3236789642671151@naggum.net.html http://www.xach.com/naggum/articles/3236789642671151@naggum.... The book Let Over Lambda lays it out really well as well.
- NhanH 11y agoScheme macro is hygienic, which make certain type of macro impossible to be done (those that capture itself). Also depend on who you ask, hygienic macro is slightly more annoying to use.
- kenko 11y agosyntax-rules macros can break hygiene: http://okmij.org/ftp/Scheme/macros.html#dirty-macros http://okmij.org/ftp/Scheme/macros.html#dirty-macros