That’s cause many don’t know how to program and they don’t know where to get started with this even people who have an interest in it can learn and those that know how can work together. I wasn’t around when you posted it in applications or else I would have helped you out.
I agree that setting up kits, and setting up server services which do something useful, is plenty challenging enough for many people. You know, following a faint but fairly-well-blazed trail, still with plenty of adventurousness, and manly brain sweat. Programming is a level of challenge even beyond that. That’s akin to hacking a new trail through a dense jungle, where the going is much slower.
Some of us have only incomplete or obsolete projects to show, unfortunately. The closest thing to a “useful” project I’ve ever made was a Python script that set up an OverlayFS mount to get around Mod Organizer 2’s (a mod manager for Bethesda games) built-in VFS feature being broken in WINE. It was feature-complete, but then a WINE patch was released that fixed the VFS issue (mostly).
If I may offer a suggestion, one I’ve been exploring myself recently.
When I decided to learn to script I selected a popular book to learn a language that was popular at the time. I learned a lot about the language from that book. When I decided to learn Python, I followed the same process. I bought a popular book about Python and started to learn a lot about the language. I learned about the data types, builtin functions, the standard library. I began to write simple scripts. But soon, I realized that Something was missing. This became very apparent as soon as I bought an intermediate Python book that I couldn’t quite comprehend.
The missing piece had nothing to do with Python, it had everything to do computer science. The study of programming that is not language specific. Program design, functional programming, algorithms, and data structures.
Someone recommended another book that I teaches computer science, how to program, and teaches good program design while also teaching Python along the way. This book is available free online.
The value of learning good software design early on will save you from reading book after book. The book listed above will teach you not only how to write functions, it will teach why to write functions, and then it breaks functions down into components like clean interface design, encapsulation, refactoring, etc. These are good concepts to know no matter what language you use.
Hopefully, this will help others as much as it has helped me.
I think an expansion on this idea would be great. It would be nice to have a sub-forum to showcase not only programing, but to also have a place to share other Linux produced output such as media, blogs, sites, ect. A way to give back or pick up collaborative momentum.
I am always surprised one does not see these advices mentioned more often. I suppose it is understandable that people new to programming want to jump right to the “fun part” and completely skip the basics, the theory behind programming and the whole computer science part because… Who needs a science in order to “do some light programming or scripting”, right?
Well, as a CS and IT graduate and further CS student, I may be a bit biased, but in my case, learning a new language is simply learning what is the syntax of a new language. The rest, when one know which paradigms the language uses, is the same for each language, with slight differences in how the language implements specific features.
Nevertheless, I have seen numerous people try to start with studying a number of books for different programming languages and, when faced with a practical example, completely fail to think for themselves and actually come up with a solution. The only problem, in my opinion, is that no one told them how to think when programming. How to decompose a given problem to subproblems, implement the basic and easy subproblems and put together the finished parts into a functioning result.
I really wish there were more online resources telling beginners to get some basic CS knowledge, learn how to think and what to think about and explaining to them why they are doing that and that in that example. It cheers me up when I see a resource properly explaining the why, maybe even before introducing the reader to the what. For example, I like both Learn C++ site or The Rust Programming Language book. They both, even if “only” programming guides, not CS books, try to point to the reader the reasoning behind the described actions and point them in the right direction regarding the proper formal education about the topic.
I think part of the reason for that is because some want only to learn to script, not to program. By that I mean, very entry level or light duty scripting. For example, using Python to do a single simple task such as move files from one location to another or send an email. Such tasks are very simple to do, but when one finds themself needing to do this over and over because of some program or task that routinely requires it, it becomes an opportunity to automate. IMHO, this simple automation scripting isn’t the same as designing a program, where computer science knowledge is needed, although it definitely doesn’t hurt.
If one progresses from simple scripts to something more complex, the need to study computer science eventually reveals itself.
I too studied computer science (C++, OO, program design, UML, etc) in college, but I don’t consider myself to be a developer. My job does require me to script quite often and I have had to apply some computer science elements, but most of the scripting that I do is simple scripting, like run a cmd on a remote host and then do something with the results of that cmd.
Those are some very good points. I agree with you. However, I feel that when simple scripting turns into a more robust and complex problem-solving, many people do not realize that something such as computer science exists. Then, they have a hard time figuring out what they should do or how to approach the problem.
If they were previously told that CS is useful knowledge for resolving a more complex problems, they might be more likely to actively look for some CS basics. That might help them think properly about the problem and its possible solutions, executing them afterwards, thoroughly thought-over.
As you said. Nevertheless, I think I have seen plenty of times that even if the need reveals itself and people find there is something missing in their knowledge to handle the present problems, they might have difficulties identifying what the missing part is. As I view it, they usually lack any CS knowledge and maybe a lesson in critical thinking regarding computers and how they operate in order to approach the problems from the right angle.
That is a problem. I wish I knew any, if only to be able to point others in their direction. As I study CS at university, I have never really looked for any general CS materials accessible online which would provide complete basic CS theory knowledge.
If I want to look something up nowadays, I just search for that particular term/topic. Therefore, I have not seen any sources guiding readers through general CS topics to provide them with the fundamentals, to be honest. When one gets the basics, it is much easier to learn additional things with whatever sources you can find later, I think. But, for that, one needs to have a good basic knowledge, I believe.
I would love to hear what others may know of and recommend, too. Sadly, my recommendation could be only random search results.
Exactly. I am somewhat surprised how there are no well-known and quality sources for CS (well, unless my searches are really poorly written). I like these C++ and Rust tutorials for how they introduce the reader to at least a bit of the theory behind some language features and the motivation for them. Especially the Rust book, which is brilliant in what it strives to achieve.
However, those are just some explanations of something in a language, not proper CS sources agnostic of the language. As I see it, programming languages are simply tools to utilize your CS knowledge for solving problems. Therefore, learning a programming language should be, in my opinion, a next logical step after learning some CS: to be able to solve the problems not only theoretically (in your mind and/or on paper), but also practically (using the programming language). I am looking for sources which would talk about CS in general, not necessarily tied to a certain language and its paradigms. No luck so far, though.
There is an author online who writes a series of books named ‘How to think like a computer scientist…’. There are editions for several different languages, including C, C++, Python, and others. It appears that the original author gave permission for others to port his work, so you may find this series from several different authors.
That is the only reference I can provide. My university studies were more than 20 years ago and many of the things I learned, such as the use of UML, are not outdated. While I did take a class on CS, it was just one class and the book was not great. I was working towards a Business Information Systems degree, so it was a bit light on CS.
If anyone has any good sources, I would be interested.