Learning Lisp as a non prgrammer: AI to the rescue?
Edit - Corrected small mistake.
Hi there!
So I've been trying to learn Racket with the HTDP method as a non-programmer, and it's not going well...
The people of the Racket community are lovely and willing to help, but the so-called "beginners" section of their forum is so intimidating, I just feel embarassed asking stupid questions. That forum does *not* differentiate between "Newcomers to Racket", and "Absolute noobs"... They all go in the beginners section.
HTDP is much more difficult than advertised for self-learning, even though I'm totally fascinated with Lisp as a "tool for thought".
I stopped and resumed the course several times over the past four years, when it's supposed to take less than six months to complete it.
In my case, the lessons are clear and understandable, but the exercises are frustrating because they seem to have been written by a totally different person than the professor.
So I have two questions for you guys:
1) Is this a "sunk cost fallacy" type of scenario? Should I just admit that I'm not fit for this type of activity and let it go?
2) If not, do you guys have advice on how to effectively use AI as teacher? For now, I've just been asking for introductory explanations on the specific topics I'd be on, but that's it. Maybe there are more inventive ways of getting AI to help?
Anyway... Thanks for reading! Cheers!
2024-12-16 ยท 1 year ago ยท ๐ CarloMonte
4 Comments โ
๐ satch ยท 2024-12-16 at 23:13:
I'll have to disagree with @HanxBrix and say that while AI is a worse teacher than a real live person who knows the material and will talk to you, in most cases it's a lot better than nothing.
Strategies for effective learning with LLMs:
- Explain your understanding of something to the AI and have it correct you. It will usually make some small stupid corrections even when you got the explanation right, but when you can see that's what's happening that's a good sign about your own understanding. If you don't understand something, ask the AI to explain it to you. Figuring out how to explain to the AI what it is that you don't understand is a great learning excercise in itself.
- Don't let the AI write code for you to solve your problems. Instead, ask it for hints when you get stuck. If it tells you something about what you're learning that might be wrong, verify whether it's true or not for yourself. If it does something that seems wrong but you don't know if or how to fix, describe the wrong behavior and ask what the solution is.
- Make sure to practice working without the AI as well as with it. When you're not using the AI, every time something comes up that you want to ask the AI about, write it down and try to move ahead anyway. At the end of the session, go through the problems you wrote down and see what you were able to fix without the help of AI.
By following these guidelines, you should have a positive learning experience which allows LLMs to make knowledge and understanding accessible to you which wouldn't be otherwise.
PS - Don't give up!
๐ stack ยท 2024-12-17 at 01:17:
I've experimented with ChatGPT as a coding assistant, and here is what I've learned:
It is great if you know the subject, and just need a quick reminder. But it is often completely wrong. If you know the subject, you can ask again and it sometimes corrects itself. Again, you need to know enough to tell if it is hallucinating.
For instance: it is great as a manpage+ -- it provides examples of usage, and you can conversationally ask it about parameters, and it is mostly correct.
It is useful to provide boilerlplate. I asked it to write a particular kind of a unix domain socket server, and it gave me a couple of pages of C code, a good start. But it left out a crucial detail which made it not work, and it took me a couple of hours of research to figure it out.
When I asked it for some key binding advice for an editor, it was right on until it gave me entirely incorrect info. When I challenged it, it game me a different, incorrect binding 3 times, after apologizing profusely.
When learning spanish, it told me that 'esto' is the neuter form of the word, entirely wrong. Otherwise it gave me good advice, including what native speakers would say in particular circumstances. Although I don't know enough spanish to catch more subtle errors!
To summarize, it is nearly useless, and I laugh when I hear about the "AI revolution" and "programmers will lose their jobs" on the mainstream media news. Yeah, they will lose their jobs if they use ChatGPT to do their work.
If you are an expert, you can use it as a terrible assistant who knows quite a bit but will lie shamelessly -- at your own risk.
๐ stack ยท 2024-12-17 at 02:02:
Learning Lisp, you will encounter a few walls that you just have to push through.
- crawling through sexps and lists and trees
- really understanding bindings and closures
- macros
These are very different from anything else in other languages, and will break your brain.
It just means that you are doing it right!
It gets easier, and if you get through, you will understand that Python was created by a moron, and other things that you will have to keep to yourself.
PS I would strongly recommend switching to Common Lisp as soon as practicable. There are too many good reasons to go into here.
๐ stack ยท 2024-12-17 at 02:59:
Emacs lisp is a decent way to get going.
Although I chose to dive in head first into CL, after deliberating about whether to choose Common Lisp or a Scheme. CL was definitely the right choice, even though Scheme appears to be more minimal... Scheme completely misses the mark when it comes to practical coding, and especially, macros.
PS...I thought I was a seasoned programmer but then I learned lisp and realized I had spent my life just diddling around in the sandbox.