3 ms·
> First, read a textbook about programming in some language, then manuals for several programming languages including Lisp. If they make natural intuitive sense
by Wowfunhappy 3y ago
> First, read a textbook about programming in some language, then manuals for several programming languages including Lisp. If they make natural intuitive sense to you, that indicates your mind is well-adapted towards programming.
> If they don't make intuitive sense to you, I suggest you do something other than programming. You might be able to do programming to some degree with a struggle, but if you find it a struggle you won't be very good at it and you won't enjoy it. What's the point of programming if it is a struggle instead of a fascination?
I find this gatekeeping at odds with RMS's insistence that all software should be open source. What is the purpose of open source, if you can't do anything with the source code?
Whether or not you agree with the "open source everything" mantra, I would think that philosophy necessarily depends on more people having more programming literacy.
Personally, I believe more people should learn programming (at least at a basic level) partly because I believe in open source, and vice versa.
- foul 3y ago>I find this gatekeeping at odds with RMS's insistence that all software should be open source. What is the purpose of open source, if you can't do anything with the source code? Asking to/paying whomever you want and not calling the software maker or one of its licensees. Stallman is a libertarian, his theory is planted firmly on a market or a cooperative community. EDIT: Let's be pedantic: for those reasons GNU and himself insist on free/libre software, openness of the source grants your eyeballs to read the source, but you however may just be in the situation where you are evaluating a software under EULA, so: you can read it but can't modify the slightest line (and recompile).
- inhumantsar 3y agoCouldn't agree more. Like (I suspect) many people, I learned very little from textbooks. I learned by tinkering with source code and talking to people smarter than me.
- antigonemerlin 3y agoCounterpoint: part of how I learned from smarter people was to copy their habits, and part of their habits was to read good books with good practices. Learning how to read non-fiction books, as I discovered, is actually a skill that needs to be learned, as my historian friends who wolf down thirty books in a week will tell you (the trick is to read only the parts you need instead of reading cover to cover, though I am still learning how to learn). And counterpoint to counterpoint: While fields in the humanities are 'book-based', CS is mostly 'article-based'. And furthermore, on the bleeding edge, textbooks don't exist yet, documentation is shoddy, and sometimes you have to read the original source code.
- inhumantsar 3y agoReading only the parts you need sounds awfully like consulting the docs, source, or talking to other people (stack overflow, Reddit, etc falls into this category for me).
- Barrin92 3y agoevery time i see someone say 'If they don't make intuitive sense to you, I suggest you do something other than programming.' it reminds me of Andrew Kelley's (creator of Zig) first SO question https://stackoverflow.com/questions/7880/how-do-you-open-a-file-in-c https://stackoverflow.com/questions/7880/how-do-you-open-a-f...
- klyrs 3y agoAmazing. This from a guy who couldn't even figure out the python repl.
- winrid 3y agoThe Python repl isn't really anything like a Lisp is it? Like you can run the interpreter interactively, but every language has that. That's not a Lisp REPL where you can edit and save code while it's running and then just commit it. Unless I am missing some awesome features of the python repl :)
- klyrs 3y agoNo, not "every language" has a REPL. Most languages I have worked with don't. It's true that python doesn't have hot-reloading, and that its built-in REPL is less powerful than Emacs. But not every lisp has all of that power, either. And personally, I find the Jupyter notebook to offer all that I'd ever want from Emacs, with a better interface. But REPL stands for "read, eval, print loop." My kitchen knife doesn't fail to be a knife because it's missing the corkscrew, flashlight and screwdrivers of a Swiss army knife.
- winrid 3y agoI meant every scripting language.
- linguae 3y agoI've been thinking a lot about this, too. I believe open source software is beneficial even for non-programmers; if anything else, the preservation of the software isn't completely dependent on the goodwill of the company providing it when the source is freely available under generous licensing terms. If the maintainers of the software do something unpopular, then if enough people complain and there are enough technically-minded people willing to do something about it, then something will be done, which is more than what can be said compared to the "well, tough luck" attitude of many commercial software companies. While the FOSS ecosystem isn't completely immune from these things (e.g., the controversies surrounding GNOME, systemd, and Wayland and the resentment that some users have), it's easier for those using the FOSS ecosystem to adapt their computer environments to their own preferences rather than having to accept whatever Microsoft/Apple/Google/Adobe/etc. does. Personalization is an important part of the personal computing experience and should be preserved. Even so, the complexity of today's software is a challenge to the idea of an open source software ecosystem where users are encouraged to use and modify their tools as they see fit. Even though I've been programming for more than 20 years, learning the code bases of modern desktop software products like KDE, GNOME, LibreOffice, and Firefox is a major undertaking. This is why I'm very interested in the research behind Alan Kay's STEPS project (http://rickardlindberg.me/writing/alan-kay-notes/tr2012001_steps.pdf http://rickardlindberg.me/writing/alan-kay-notes/tr2012001_s...), which attempted to implement an entire desktop environment (including an office-like application) in just 20,000 lines of code. The researchers accomplished this through the liberal use of domain-specific languages to define subsystems and applications. If our software stack was less complex and easier to understand, then it would be easier for users to learn how to understand and modify the code making up the software they use.
- ravenstine 3y agoWith all due respect to Stallman, that's some of the worst advice I've ever read. I guess I should have never learned to program, according to him, even though I have always been fascinated with it despite the uninspiring books I read.
- winrid 3y agoI don't see it as gate keeping. I see it as, if it doesn't click for you and you don't enjoy it, don't push yourself.
- Wowfunhappy 3y agoOkay, but just taking that advice at face value, doesn't it conflict with RMS's ideas about open source?
- winrid 3y agoNot at all.