5 Reasons to Learn Scheme in 2024

  Рет қаралды 10,287

System Crafters

System Crafters

Күн бұрын

In this video, I'll give you 5 reasons why I think you should learn Scheme this year! Regardless if you are a programming beginner or an expert hacker, there is a lot to be gained from learning this language. Come let me know what you think!
#scheme #lisp #guile #racket #functionalprogramming #gnu
JOIN THE GUILE SCHEME COURSE:
I'll be running a live, interactive training course on Guile Scheme in February 2024! Click this link to learn more and sign up:
systemcrafters.net/courses/ha...
SUPPORT THE CHANNEL:
👍 Support My Work: systemcrafters.net/how-to-hel...
📰 Subscribe to the Newsletter: systemcrafters.net/newsletter/
👕 store.systemcrafters.net
📘 Get Your Copy of Mastering Emacs: www.masteringemacs.org/r/syst...
SHOW NOTES:
systemcrafters.net/learning-g...
RELATED VIDEOS:
- 5 Reasons to Try Guix in 2022:
• 5 Reasons to Try Guix ...
CHAPTERS:
- 00:00 Intro
- 00:08 What is Scheme?
- 00:54 You will deepen your programming knowledge
- 02:34 Incredibly powerful features
- 02:24 Efficient recursion
- 03:47 Hygenic macros
- 05:23 Continuations
- 07:28 Wide variety of Scheme implementations
- 09:51 You can write any kind of application with it
- 11:40 You will get the full benefit of GNU Guix
- 12:54 Let me know your thoughts!
JOIN THE COMMUNITY:
systemcrafters.net/community/
fosstodon.org/@daviwil
MY CONFIGURATION:
config.daviwil.com
config.daviwil.com/emacs
config.daviwil.com/systems (Guix)
OTHER SERIES:
- Emacs Essentials: • The Absolute Beginner'...
- Emacs From Scratch (2020 Version): • Emacs From Scratch #1 ...
- Emacs Tips: • Emacs Tips - How to Sh...
- Emacs Desktop Environment: • Emacs Desktop Environm...
- Emacs IDE: • Emacs From Scratch #8 ...
- Emacs Mail: • Streamline Your E-mail...
- Learning Emacs Lisp: • Introduction to Emacs ...
- Craft Your System with GNU Guix: • An Introduction to GNU...
CREDITS:
Coriolis Effect by logos feat. stefsax, licensed Creative Commons 3.0 CC-BY ccmixter.org/files/mseq/26296
reNovation by airtone, licensed Creative Commons 3.0 CC-BY ccmixter.org/files/airtone/60674
ukeSounds by airtone, licensed Creative Commons 3.0 CC-BY ccmixter.org/files/airtone/32655
Between Worlds (Instrumental) by Aussens@iter, licensed Creative Commons 3.0 CC-BY ccmixter.org/files/tobias_webe...

Пікірлер: 67
@ade5324
@ade5324 4 ай бұрын
scheme is perfect programming language to learn programming languages (how they work) currently enjoying "lisp in small pieces" book and half-way though mit 6.001 video lectures, i don't even care that its a niche language anymore, its been a pleasure.
@SystemCrafters
@SystemCrafters 4 ай бұрын
Lisp in Small Pieces is such a great book!
@bitwize
@bitwize 2 ай бұрын
Video length: 13:37. Perfection. Very fitting.
@memory-heap
@memory-heap 4 ай бұрын
Hi! Thanks for the great Scheme overview! I'm using Scheme for more than ten years already; there are several Guile libraries that I developed during the years and still maintain. One of the my libraries that I'm kinda proud of is Guile-SSH that is used in GNU Guix for its offloading feature and some other stuff.
@SystemCrafters
@SystemCrafters 4 ай бұрын
That's awesome! You certainly have made a bunch of useful libraries, thanks for that! The Guile ecosystem definitely needs people like you who are willing and able to flesh out the ecosystem
@nazmi3126
@nazmi3126 4 ай бұрын
I dabbled a little bit in Racket and Common Lisp by following the book Realm of Racket and Land of Lisp. Both great books and in the Lisp family of languages with Scheme. I really like lisp languages - something about all those parenthesis appeals more than 'C-type' syntax.
@capability-snob
@capability-snob 4 ай бұрын
Not just tail call optimisation but _tail call elimination_. The difference is that in scheme, it's a property you can rely on, and can happily tail call all day, safe in the knowledge you're not growing the stack.
@SystemCrafters
@SystemCrafters 4 ай бұрын
That's right, I should have referred to it like that. It's a great feature!
@alurma
@alurma 4 ай бұрын
True
@applecastaway4256
@applecastaway4256 4 ай бұрын
Thanks for the video! I just installed guix last week and now started learning guile scheme, looking forward to more guix & scheme videos from you in the future!!
@SystemCrafters
@SystemCrafters 4 ай бұрын
I also find it to be complex, but its ability to apply shared, reproducible configurations across machines keeps me there.
@9s-l-s9
@9s-l-s9 4 ай бұрын
So to the questions at the end: I was recently looking into which lisp I should learn. As I am already using guix, at first scheme seemed great. I also like the general design philosophy of a simpler feature set compared with other lisps. However my end goal would be to have some sort of lisp machine. And I found that actually common lisp currently offers a wider number of apps for this. I can configure stumpwm, nyxt and lem all with the same language. So I started with common lisp.
@SystemCrafters
@SystemCrafters 4 ай бұрын
Common Lisp is definitely a good choice for that. Perhaps if more people learn Scheme we'll see more Scheme-configurable apps of a similar kind. There is the Nomad browser which is like Nyxt for Guile Scheme but I don't know if it's still being developed/maintained.
@9s-l-s9
@9s-l-s9 4 ай бұрын
@@SystemCrafters Yeah, well I am not too happy with Common Lisp. I really would prefer a simple language. Btw, is the course going to be free? (also, the link is not working for me)
@SystemCrafters
@SystemCrafters 4 ай бұрын
The course is paid due to the interactive nature and time involved. It appears Codeberg Pages is down at the moment so my site is unfortunately down :( Hopefully will be back up soon
@gagagero
@gagagero 4 ай бұрын
​​@@9s-l-s9Common Lisp is simple. It (just like Scheme) has a large standard library, which is where most of the complexity comes from. But if you want to create a Lisp machine of sorts, probably the only way to do that is to load everything into one single CL image, maybe on different threads.
@joshuacottrell7225
@joshuacottrell7225 4 ай бұрын
I subscribed to the newsletter partially in hopes of seeing an intermediate scheme course. I hope the beginner one is successful enough to encourage you to run one.
@SystemCrafters
@SystemCrafters 4 ай бұрын
I will definitely run an intermediate Guile course, that's where the real fun will begin! What would you hope to learn from such a course?
@joshuacottrell7225
@joshuacottrell7225 4 ай бұрын
@@SystemCrafters I'd hope to learn how to move beyond the small (one to three source file) projects to something larger that maybe included an outside package (outside: via a package manager), where macro code goes relative to other code, and maybe utilize a database. What's a step or two beyond Advent of Code problems? That's my initial definition. I'd likely take it (finances allowing at the time of release) if it didn't re-explain syntax, expressions, car/first, cdr/rest, cond, recursion, lambda/anonymous functions, etc.
@SystemCrafters
@SystemCrafters 4 ай бұрын
@joshuacottrell7225 Yep, not re-explaining the basics would be the goal! My early thoughts on an intermediate to advanced course definitely cover a lot of what you mentioned there. I think we'd try to develop a networked application of some sort, enough to feel like it's an approximation of a real world application
@9s-l-s9
@9s-l-s9 4 ай бұрын
Yeah, a new video 🥳
@ymaysernameuay1113
@ymaysernameuay1113 4 ай бұрын
Racket is the best! Deserves it own video
@the-lisper
@the-lisper 4 ай бұрын
I really like simplicity and minimalism when designing software, but I wish the compiler could provide more warning!
@pedrodelfino9493
@pedrodelfino9493 4 ай бұрын
Nice! What about Racket? Except for Guix, Racket feels more like a 2024 topic than Scheme. What do you think about Racket?
@TheLittlehuihui
@TheLittlehuihui 4 ай бұрын
Nice video. What is your opinion on Scheme vs Common Lisp + Coalton ?
@SystemCrafters
@SystemCrafters 4 ай бұрын
Haven't tried Coalton! I'm more of a fan of Scheme than CL, but Coalton is surely interesting.
@lorensims4846
@lorensims4846 4 ай бұрын
Very nice, comprehensive, and concise video! I've noticed that you tend to ramble when you're not working from a script. I like this much better. I've been fascinated with Lisp[ ever since I first heard of it in 1980 in Byte magazine when it was introduced as the language of artificial intelligence. Emacs is a good example of what can be done with Lisp. The original version of Emacs was written in MacLisp, a version that featured easy use of macros. In GNU Emacs, Elisp is a version of MacLisp. I understand Gnu is currently looking to convert Emacs to work with Guile to better integrate with the whole Gnu ecosystem because Guile is intended to be THE system-wide scripting language for Gnu. I really like Guile because of its interoperability with C. It's easy to write a C program in Guile and to write a Guile program in C. The idea is to make it easy to add Guile to your application as the application's built-in scripting language, much the way Elisp is Emacs's built-in scripting language. It is a completely different paradigm in programming, much as OCaML, Forth, or even Tcl are. It's good to see different ways to do what you're used to doing to stretch your understanding of programming principles. I've started working with Guile a couple of times and have found it to be quite enjoyable, but somehow I keep getting distracted by something else. I feel that Guile is very important to the Gnu ecosystem and for that reason alone I want to become proficient in it. Thank you for offering the series. It's just what I've been looking for.
@infrofl6557
@infrofl6557 4 ай бұрын
This sounds extremely interesting. Will the course be available online at some point?
@SystemCrafters
@SystemCrafters 4 ай бұрын
I am considering making a recorded version without the live component but I want to run the live course a few times first to get real-time feedback on the content. The recorded one should be really polished!
@theena
@theena 4 ай бұрын
David, I am hoping to use this year to learn Common Lisp as a first-ish programming language (have experience with some python, some Lua (because I use NeoVim). Would this be a good way to get into Lisp as a whole?
@SystemCrafters
@SystemCrafters 4 ай бұрын
Common Lisp is a perfectly fine language to get started with, you will learn a lot that will transfer to other Lisps
@gagagero
@gagagero 4 ай бұрын
I wouldn't recommend it. Something else that doesn't need as much theory and is more common (like C or Python) would be better for getting core programming concepts down. Even Scheme with SICP would be a better choice.
@abarocio80
@abarocio80 4 ай бұрын
Guix is actually my main interest on scheme, but not the only one.
@c1dk1n
@c1dk1n 4 ай бұрын
Can we game on Guix yet?
@SystemCrafters
@SystemCrafters 4 ай бұрын
Steam and other game launchers are in the Nonguix channel, there's also the Guix Games Channels which package up a lot of games you might find on GOG, etc, but you need the data files for them to operate
@abarocio80
@abarocio80 4 ай бұрын
@@c1dk1n I have some mixed results with Steam. When a game responds well to a game pad, it is as good as with Archlinux.
@c1dk1n
@c1dk1n 4 ай бұрын
@@SystemCrafters thanks for the response as always. That just leaves flakes for me. I suppose I could just use nix with guix for that.
@cadetriestocode
@cadetriestocode 2 ай бұрын
I really love the idea of chicken but it hasn’t been maintained for about two years I think. (Hope I’m wrong!)
@reisen1553
@reisen1553 4 ай бұрын
Small is beautiful. Small is powerful. Small is easy to understand. I like the Scheme programming language because it is small. It packs a large number of ideas into a small number of features. - Guy L. Steele, Jr.'s foreword in Scheme and the Art of Programming.
@victorpinasarnault9135
@victorpinasarnault9135 2 ай бұрын
Scheme with WASM? That's lovelly!
@strix0797
@strix0797 4 ай бұрын
Wow a video! Who would've thought "_"
@SystemCrafters
@SystemCrafters 4 ай бұрын
The first of many this year!
@strix0797
@strix0797 4 ай бұрын
@@SystemCrafters hope so 🤞
@jollysan3228
@jollysan3228 4 ай бұрын
There is Gauche which conforms to R7RS !
@LeroyCellador
@LeroyCellador 4 ай бұрын
Which scheme to write backend services, like HTTP APIs etc?
@SystemCrafters
@SystemCrafters 4 ай бұрын
Guile, Chicken, Racket or Gerbil would work well for that
@bobanmilisavljevic7857
@bobanmilisavljevic7857 4 ай бұрын
🔥
@kodtaku
@kodtaku 4 ай бұрын
Ah memories my second programming language at uni. 😂
@vikinghornsfromhell
@vikinghornsfromhell 9 күн бұрын
When adding the non-free modules to guix, the "guile" scheme fails miserably! So don't waste your time, unless you use the defaults (libre)!
@SystemCrafters
@SystemCrafters 9 күн бұрын
It might be easier to get help if you start by sharing the actual error message. I'd recommend using forum.systemcrafters.net instead of posting comments on multiple videos.
@user-bm1qb4dp8i
@user-bm1qb4dp8i 4 ай бұрын
👍 for the "tail call optimization"
@alurma
@alurma 4 ай бұрын
Thanks. For learning functional programming, I think it's better to learn languages tailored for the paradigm, particularly Clojure, Haskell, Erlang, Elixir or OCaml, not Scheme or Lisp. I agree on the other points. Exciting to see Scheme on the Web!
@SystemCrafters
@SystemCrafters 4 ай бұрын
Scheme actually is tailored for the paradigm, its design is directly inspired by lambda calculus. I don't think that a language needs immutable data structures or to refuse binding reassignments to be an effective functional language, it all depends on how you write the code. You definitely can't say the same thing about Common Lisp, though, I would not call that a functional language even though you can program in a functional style.
@alurma
@alurma 4 ай бұрын
Yeah, we can agree to disagree. I'm not saying Scheme isn't functional. The word has many meanings. Having functional data structures syntactically close in languages like Clojure, Haskell, etc. makes a difference. It's possible to program in a functional style in ANY mainstream programming language (Go, Python, name it), there are ways to achieve this. Scheme makes some things easier (e.g. tail calls are eliminated). Haskell, OCaml, Erlang and Elixir even more so (one could argue that Clojure is a bit different because on JVM it's expensive to eliminate tail calls so Clojure doesn't do it automatically, gotta do yourself). So, I hope you got my idea. If so, we can agree do disagree (or agree to agree, you decide 🙂)
@mattinykanen4780
@mattinykanen4780 4 ай бұрын
I code in Haskell nowadays. (As a soon-to-retire academic, I can afford that luxury.) But I arrived there from Scheme: While I loved its delay/force mechanism, I hated how much self-discipline it took to get that code to work... or even to avoid a black hole... Oh how I wish the compiler could ease that burden! But hey, there's this "Hindley-Milner type inference" thingy; maybe it could help? Hence whenever a student asks me about how to get started in functional programming, I mostly suggest starting with Scheme and not Haskell. While types are _extremely_ important, it is easier to learn new stuff one step at a time.
@jakubdlugosz8090
@jakubdlugosz8090 4 ай бұрын
Where can I get this GNU/Guix hat?
@SystemCrafters
@SystemCrafters 4 ай бұрын
You can buy one from the designer of the Guix logo here: um4no.creator-spring.com/
@aminnairidev
@aminnairidev 4 ай бұрын
Do you realise this video is 13:37 long? 😂
@SystemCrafters
@SystemCrafters 4 ай бұрын
Was not on purpose, must mean that Scheme is really 1337!
@ciphertext01
@ciphertext01 4 ай бұрын
I can remember customizing the eGate (Software Technology Corporation --> renamed SeeBeyond --> sold to Sun Microsystems) Integrator product using a language known as Monk. Monk is a derivative of Scheme. It was a fast. I suspect Scheme is just as fast, if not faster, in its execution.
@SystemCrafters
@SystemCrafters 4 ай бұрын
Wow, that's cool!
@TheLongestConfidence
@TheLongestConfidence 11 күн бұрын
Clojure has an emphasis on immutable data structures, but *not* pure functions. You should write pure functions wherever possible, just like any other language, but functional purity is not a core philosophy of the language, nor even idiomatic.
@i-am-linja
@i-am-linja 16 күн бұрын
This video really adds nothing over the article. You could have at least shown and run some actual Scheme code.
@MMABeijing
@MMABeijing 2 күн бұрын
I did not know about the article, but I get what u r saying
@kosbarable
@kosbarable 16 күн бұрын
Only LamdaNative is noticed(( What game frameworks we have on Scheme?
Why Are Lisp Macros So Great!?
16:28
Gavin Freeborn
Рет қаралды 14 М.
How to run C program in command prompt
0:58
Coding is Love
Рет қаралды 231 М.
How I prepare to meet the brothers Mbappé.. 🙈 @KylianMbappe
00:17
Celine Dept
Рет қаралды 58 МЛН
когда достали одноклассники!
00:49
БРУНО
Рет қаралды 3,9 МЛН
1 класс vs 11 класс (неаккуратность)
01:00
What is Lisp used for?
4:56
The Lisper
Рет қаралды 1,1 М.
Win or Lose? - Day 6 - Spring Lisp Game Jam 2024
45:04
System Crafters
Рет қаралды 250
Open Innovation: Using Emacs to Bring Depth to Open Source
7:05
Positron's Emacs Channel
Рет қаралды 571
This is the best way to learn C++ for free
0:40
Mehul - Codedamn
Рет қаралды 345 М.
AI Hardware w/ Jim Keller
33:29
Tenstorrent
Рет қаралды 27 М.
Org Roam: The Best Way to Keep a Journal in Emacs
16:50
System Crafters
Рет қаралды 39 М.
The Blazor Competitor is Here!
15:08
Nick Chapsas
Рет қаралды 27 М.
Hilarious messages from SBCL Lisp compiler
0:34
Andrew Kravchuk
Рет қаралды 2,1 М.
ЭТОТ ЗАБЫТЫЙ ФЛАГМАН СИЛЬНО ПОДЕШЕВЕЛ! Стоит купить...
12:54
Thebox - о технике и гаджетах
Рет қаралды 148 М.
Will the battery emit smoke if it rotates rapidly?
0:11
Meaningful Cartoons 183
Рет қаралды 4 МЛН
Выложил СВОЙ АЙФОН НА АВИТО #shorts
0:42
Дмитрий Левандовский
Рет қаралды 1,8 МЛН
How To Unlock Your iphone With Your Voice
0:34
요루퐁 yorupong
Рет қаралды 18 МЛН