I’ve read a few exercism forum posts that indicate that exercism is not really designed for beginners, and that it might be better to start some place else as a beginner (like freecodecamp.org), and then come here to get deeper into a language.
I would say that I’m an older beginner who doesn’t have a profession in IT or the tech industry, but I would like to learn programming to automate or create tools to make work tasks easier or enhance the fun I have in my homelab. I love Linux and only use Linux at home, but I touch Windows computers in my profession every day, and serve as the main “IT Guy” at work.
In looking at all the language choices, I have settled on learning Powershell using MS site learn.microsoft.com. Powershell should allow me to automate things at work and at home with it being cross platform now. Although I have written a few scripts in bash and in powershell, I haven’t done anything too complex like using loops, mostly just piped the result from one command into the next sequentially. So, I really consider myself a beginner.
Functional February has peaked my interest in picking up a functional language after I learn a bit more powershell so that I have a general purpose language that I can use to write CLI apps for both Linux and Windows (if possible, but not as necessary, CLI Linux apps would be good enough for most of my ideas.) I’m hoping that functional programming clicks more with my brain, and I like some of the simple syntax that I have seen in the functional languages.
So, with that background, could a beginner learn a Functional Language on exercism that has a “Learning Mode” like F#, or would it still be better to start with a different resource?
The learning mode is tied to concept and learning exercises. The concept exercises are tied to the syllabus (when they exist) and requiring you to unlock “concepts” before you can access exercises which list those concepts as a prerequisite. Some tracks have a syllabus. Others do not. Of the tracks with a syllabus, some provide a fairly high level overview of concepts while others go into more depth.
As a general rule, the syllabuses may provide a decent overview of some language constructs which can be helpful for getting started if you already know how to program in another language. On the other hand, I don’t think any of the syllabuses provide a full blown language introduction/tutorial/learning path (though there may be an exception or two).
There are talks of starting a Powershell track at exercism, if that’s something you’d be interested in being involved in! PowerShell track status?
This really depends on how you prefer to learn languages.
The learning mode some tracks have introduces you to some concepts of that language. Different tracks are more developed than others in the number of concepts they cover, but like Isaac says I don’t think there’s a track that covers every concept of the respective language. For most people, that’s ok, because the idea is just to present you with enough concepts for you to start writing programs in that language and be productive.
There’s also nothing stopping you from starting a language track here on Exercism and see how you feel. If after some time, you feel exercism is not being enough and you need more background on some topics, first let us know
what you are missing, and by all means use other resources to learn that topic. You can always come back to Exercism to practice anytime you want.
Don’t see Exercism as being mutually exclusive with other resources.
Usually, to learn a new language I pick a book on that language and try to do Exercism exercises as I’m reading the book. After ending a chapter or so, I check to see what exercises Exercism has on the topics I’ve just read. I find this really works for me - a bit of theory immediately followed by a bit of practice. A notable exception to this was the jq track, where the Exercism tack was the best resource to introduce to the language I’ve seen
Hi, I’m working on the Clojure syllabus and would value your feedback should you decide to try it Clojure is a functional language and is excellent for shell scripting, and I’m trying to make the learning path as accessible as possible.
Clojure is a Lisp, which may be an unfamiliar syntax but its consistent structure and emphasis on simplicity make it an ideal beginner language IMO. I personally only knew a little Python when I picked it up.
For example, it’s not purely functional so there’s no need to learn new concepts for managing state like say, Haskell. It’s very practical, when you want something stateful you just do it.
The input hypothesis. This states that learners progress in their knowledge of the language when they comprehend language input that is slightly more advanced than their current level. Krashen called this level of input “i+1”, where “i” is the learner’s interlanguage and “+1” is the next stage of language acquisition.
Most tracks have some suggested external resources on the track’s About page. It sounds like F# is ideal for you since it is also .NET and can interoperate with PowerShell. The F# About page suggests the “F# for Fun and Profit” website. There seems to be an “F# for Beginners” YouTube series. You may not need to move on from PowerShell though. Unlike bash, it’s a full featured scripting language that can scale up to Python-sized applications.
Thanks @bushidocodes I plan to stick with PowerShell for a while and try to do a few different projects that I have planned with it. I wondered if it might be a little more full featured than Bash, and would let me do a few things that are more in the realm of Python. What I’m struggling to find are resources that have more of a general PowerShell focus, especially things that would work on Linux too, since I love to spend most of my time on Linux, but picked PowerShell to learn because Bash is pretty limited on what it can do on Windows for automating things, and all of the non-Linux machines that I touch and want to automate are Windows boxes. When you try to search using PowerShell with imap email boxes the searches turn up lots of things about Exchange which I don’t run and won’t be running. When you do other PowerShell searches about server tasks most of it is about Azure Cloud where as I’m looking to automate Linux servers on prem in my homelab. So for someone who wants to do things on Linux and Windows, I’m going to be struggling to find examples of using PowerShell on Linux that I can build from.
“Learn PowerShell in a Month of Lunches” is the only book I’ve read personally, but I know there is a new edition of “Learn PowerShell Scripting in a Month of Lunches” which is coming out in a month or so. The latest editions really emphasize cross platform stuff.
@IsaacG, yes I run WSL on Windows all the time, mostly to use vim as my primary text editor in a Linux/bash environment. However, bash is limited in the automation that it can do in Windows. As an example it is relatively easy in PowerShell to change dual screens from “extended” view to “mirrored” view, but doing that in bash is not so easy. But you are right that if what you want to automate on your Windows computer is something bash could do easily in a Linux environment like manipulate files than bash in WSL is a great option.
@bushidocodes, I have heard that book focuses more on PowerShell in all environments. That might be my best option for digging deeper into the language.