this post was submitted on 14 May 2024
154 points (99.4% liked)

Programming

17398 readers
104 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
 

Start learning at 50

I've always wanted to learn programming. I've read a blog post saying that at this age it was to late . Then I read a post here in saying the opposite. I've found a site that was learn x in y minutes where it has a bunch of languages there. After reading them, the languages that caught my attention were Julia, Clojure and Go. Are any of these good for a beginner or should I start with something else? I know what are variables, can spot an if/else statement but that's about it. What are some good resources for someone like me who likes to learn by doing things?

top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 1 points 6 months ago* (last edited 6 months ago)

I would recommend C for the simplicity. You'll get familiar with the nitty gritties of a relatively featureless programming language. Which will let you view other languages and their tools with more nuance. But it all depends on what you want to do with it, want to program an MCU like Arduino or learn linux? C is perfect. If you want to build something with graphical interfaces like websites or GUI apps, I would suggest something else but C is still a good place to get started.

Here is something written by AI:

  • Mental Toughness: C can be challenging, but mastering it builds strong problem-solving skills and a deeper appreciation for higher-level languages.
  • Widespread Influence: Many popular languages like Java and C++ borrow heavily from C's syntax and concepts, making it easier to learn them later.
  • Under the Hood: C provides a closer look at how computers work, memory management, and hardware interaction compared to higher-level languages.
[–] [email protected] 0 points 6 months ago* (last edited 6 months ago)

No to Python, Go, Lisp and C to begin. In fact at this level you just need to get a feel for process. You need to start where u feel attracted to. You need to learn principles and not languages nor frameworks. Im surprised not one of the replies gives an accurate picture of what it entails to think like a computer. Computation is not an efficient brain like a humans. It was made to work with the hardware we invented long ago. You have to learn the rudimentary and boring repetition the machine HAS to do so it can appear as a real memorable entity. A practical suggestion is to go install Linux From Scratch. When you complete that journey you will have a taste of some principles. Then I also suggest to simply rewrite character for character kilo.c. Why? So you learn how much a pain and a workout it is to crunch at the keyboard. Learn by doing. Learn by breaking and briking. Go find a game u love with all ur being and reverse engineer it. Who cares what u know at the moment, the goal is the process not the result and besides nothing is ever finished, just get it done. One baby step at a time. Oh and dont ask any more questions. All of those have been asked, its our jobs to find the answer. Please take all this as a simple nudges. None is written with any ill will, trolling nor negativity. Take away the knowledge not the pressumed attitude behind my words. Forget the internet and just dive into it. Another way is to pay some pro to mentor you. Good luck with that since most persons are too busy and are elite. Whatever u want to learn has to be done in the spirit of neglect. You cant care too much about computation. It is just a process for making fragmented business. No one NEEDS software nor money. We all agree to play these nonsensical games. Have fun and be grateful for the process itself. Good journey to you friend! Its a weird one. Ive been at it for 35 years and Im still a newbie.

PS The internet is filled with info. Its your job to determine the knowledge and not the judgement on the worth of the person who posted it. Too much drama and toxicity because everyone at the top of the food chain is pushing that vibe. Everyone everywhere is complaining about our violent ways, how we write to each other online and how we are all being subhuman. Peace to all!

#allerrorsmatter #cod-ape

[–] [email protected] 4 points 6 months ago* (last edited 6 months ago)

Never too old to learn. I think Python is a great beginner language. It has fairly broad applications, and easy to set up an environment (don't have to download/install a thousand things, you just install python and can run the text files in terminal). I also learned by doing starting in late middle school/early high school. I always found YouTube videos to be the most engaging way to get started. I used to like thenewboston. Once I had a handle on the basic programming language, I would do easy programming challenges where you have to solve some sort of basic problem. The challenges helped me learn basics like taking in input, changing the input based on the various rules and conditions of the challenges, then outputting the proper results formatted in the right way. Also helped me to think about algorithms, etc. After that, I started learning programming through a textbook. This was helpful for understanding some of the more technical aspects, basics of memory management, what different variable types are really for, OOP, abstraction, algorithms etc. I found that leaving these advanced topics till after I had a working understanding of the programming language helped understand the concepts better, and helped me understand why it's important to learn the concepts in the first place. I was using Java for learning most of this, which might also be a good place to start for you, but I feel like python has simpler syntax to start with. In the end once you learn one language, I recommend learning more and not being stuck to any particular language. Every language has it's own strengths and weaknesses, and understanding the commonalities and differences will only make you better in the long run.

Edit - now I use Go, python, JavaScript, R, Java, Julia, rust based on what I'm actually doing. It's fairly easy to switch languages once you get used to basic syntax.

[–] [email protected] 2 points 6 months ago

Go is a good bet for first language.

[–] [email protected] 1 points 6 months ago

I've been in the tech industry for about 12 years and learned my first programming language about 30 years ago. The choice of language really will depend on the sort of things that you want to do. That said, if choosing one of the three listed, I'd say Go with no reservation. It is a much better language for beginners than the other two as it is widely used, not esoteric, and has a C-like syntax.

I would probably recommend either Python or JavaScript as a better first language though, biased heavily towards Python because JavaScript's type system is awful (it still gets a lot done on the Internet though). Python is a great interpreted language that is very human readable. Yes, some hate that it uses whitespace for party of its syntax but there are very few footguns (don't mix tabs and spaces for indents and just don't use tabs, that's about all that isn't covered in a hello_world).

[–] [email protected] 7 points 6 months ago* (last edited 6 months ago)

I graduated in CS alongside a guy in his fifties. He's now retired, but he had easily 10-15 years as a software engineer, and was the lead of a group at a large company before he retired, so I assume it all went well for him.

If you want to learn something, do it. if you want to do it professionally, do it.

[–] [email protected] 1 points 6 months ago

I used to know someone who learnt Dutch from age 60, and granted he's very sharp, but if he can do that, I'm sure you can do this.

[–] [email protected] 2 points 6 months ago (2 children)

Clojure is an interesting language that will improve the way you work and think with other languages. A passionate community, but there are very few "starter" Clojure jobs; they mostly expect you to have years of experience.

I don't think anyone could go with doing the "Clojure For The Brave And True" book which is online and available in dead-tree form. I liked it so much, I bought the book.

It's a Lisp language which is the oldest kind. Instead of "object oriented", I think if it as verb oriented. Each statement is a verb (function) possibly followed by all the nouns you want to apply it to. Easy peasy, right?

People complain that there's "too many parentheses". People like to complain about dumb stuff.

[–] [email protected] 1 points 6 months ago

there are very few “starter” Clojure jobs; they mostly expect you to have years of experience.

That's because the language is made for people who wrote java for the last 10 years. It's cool and all, but it's horrible for learning programming when you compare it to cl or scheme. Neither of them break language uniformity and simplicity in order to accommodate java interop, while also having decades worth of excellent teaching material.

It’s a Lisp language which is the oldest kind.

Fortran, COBOL, ALGOL are older

Instead of “object oriented”, I think if it as verb oriented. Each statement is a verb (function) possibly followed by all the nouns you want to apply it to. Easy peasy, right?

I think you're over complicating the explanation, it's just a different notation:

(1 + 2 + 3) == (+ 1 2 3)

(1 + (2 * 3)) == (+ 1 (* 2 3))

People complain that there’s “too many parentheses”. People like to complain about dumb stuff.

I think it's got more to do with everything seemingly being completely different. Most languages have C-style syntax, and python is like the only popular exception. It's like knowing only latin and having to learn cyrilic or alphabet.

[–] [email protected] 4 points 6 months ago

People complain that there’s “too many parentheses”. People like to complain about dumb stuff.

😂I'm off on a tangent here, but this made me laugh so much! As a Maths teacher I see all the time people complaining about "this is ambiguous - add more parentheses for clarity!" when the reality is Maths is never ambiguous and they've just forgotten 2 of the most important rules of Maths (meaning we already have the correct amount). 😂 These very same people often put the brackets in the wrong place anyway when they do add them adding/removing brackets

[–] [email protected] 10 points 6 months ago

Lots of great advice here. NEVER too old to learn.

Check this out, if you're interested. Excellent free course to help you learn how to learn:

Learning How to Learn: Powerful mental tools to help you master tough subjects

[–] [email protected] 4 points 6 months ago* (last edited 6 months ago)

Kotlin is a really nice language with plenty of users, good tooling support, gets rid of a lot of the boilerplate that older languages have, and it instills many good practices early on (most variables are immutable unless specified otherwise, types are not nullable by default unless specified otherwise, etc)

But to get the most "bang for your buck" early on, you can't beat JavaScript (with TypeScript to help you make sense of your codebase as it keeps changing and growing).

You will probably want to develop stuff that has some user interface and you'll want to show it to people, and there is no better platform for that than the web. And JS is by far the most supported language on the web.

And the browser devtools are right there, an indispensable tool.

[–] [email protected] 5 points 6 months ago (1 children)

Pascal was designed for beginners, so I'd start there. Get a handle on the basics before you move onto something which is using object-oriented programming, as that's a whole thing to understand in itself. One step at a time (I'm a teacher, and we always only teach students one concept at a time). And once you've got the basics then C# in a Nutshell series of books (one for each version of C# as new features come out) is very good with explaining the next level stuff and not rehashing the basics (there may be similar books available for other languages, but that's outside my area of expertise).

[–] [email protected] 11 points 6 months ago (1 children)

For the people saying Python is beginner friendly, no, it isn't. I had to teach it to high school students (I had no choice in the language). Having to have exact indenting, whilst also not caring at all about how you use your variables, not to mention is OOP, is all a bit much for some students, some of whom don't even fully grasp how to use loops yet. One step at a time.

[–] [email protected] 3 points 6 months ago (1 children)

One nice thing about learning (and teaching) python is that it's a multiparadigm language. Students don't have to learn about indenting until you cover flow control. Classes and OOP can come way, way later.

I started with C++. Also multiparadigm, but the syntax and compiler errors were brutal, not to mention pointer arithmetic.

I'm not sure I can think of a language that would be better suited to learning. GDScript seemed kind of nice, and you get to make games.

[–] [email protected] 3 points 6 months ago (1 children)

don’t have to learn about indenting until you cover flow control

Which is one of the very first things they're taught - "hello world", variables ("Enter your name", "hello {name}"), branches, and loops, in that order.

I’m not sure I can think of a language that would be better suited to learning

Pascal - it's what it was designed for. Variables, branches, and loops, with strong types and optional indenting. Once people have a handle on that, THEN move onto OOP.

[–] [email protected] 2 points 6 months ago (1 children)

I am shocked there is someone besides me who still enjoys the wordy C.

Pascal was the first real language I learned (after basic)

[–] [email protected] 2 points 6 months ago* (last edited 6 months ago) (1 children)

Pascal was the first real language I learned (after basic)

Same. Taught myself some Basic in high school (first on a school computer, then we got a computer at home), learnt Pascal in 1st year Uni (programming basics - wrote a bunch of stuff for myself in Pascal for my computer) then C in 2nd year (OOP), and then Assembler in 3rd year. Later I taught myself (with the help of some books and courses.... and intellisense! 😂) C#.

[–] [email protected] 2 points 6 months ago

Oh, I nearly forgot! I had to learn Python too... because I had to teach it. Did try to argue for C#, which is allowed under the curriculum (and would be a more suitable language to teach), but then found it's hard to get that agreed on because so many schools just run Python because it's easier for them from an administrative point of view - I found I wasn't alone in this predicament. Thanks school admins...

[–] [email protected] 1 points 6 months ago

Languages that caught my attention were Julia, Clojure and Go.

What about these languages caught your attention?

What are some good resources for someone like me who likes to learn by doing things?

Check out https://inventwithpython.com/

[–] [email protected] 2 points 6 months ago

I'd actually recommend to start with C#, it's the perfect balance from complexity and simplicity, so you don't miss out on certain learning curves.

[–] [email protected] 6 points 6 months ago (1 children)

Honestly you'll find more beginner resources for Python than anything else and it's worth learning because it's used everywhere. Lua is also extremely beginner friendly (even if it has some bad habits like 1 indexed arrays.)

If you've got a math background LISP is a good place to start as well, particularly the old MIT/UCB Structure and Interpretation of Computer Programs (SICP) book, that was the start of a formal CS education before python took off.

[–] [email protected] 1 points 6 months ago

Clojure is a Lisp and a damn fine one,

[–] [email protected] 5 points 6 months ago* (last edited 6 months ago) (1 children)

I'm around the same age as you, and I taught myself front end development. Don't let anyone say you can't learn. If you want to make websites, I suggest HTML => CSS => JavaScript => React.js. I recommend learning on Scrimba.com. They have a screen cast system where an actual instructor tells you what to do in plain English with the corresponding code on screen. If you want to see how a change would affect the code, you can pause the cast and run the code yourself.

And if you want to learn back end, a back end programmer suggested learning PHP. Still in high demand in the job market.

[–] [email protected] 1 points 6 months ago (1 children)
[–] [email protected] 2 points 6 months ago

Changed it. Thanks.

[–] [email protected] 0 points 6 months ago

ChatGPT is great at tutoring python. Go as well. Not sure on the others.

[–] [email protected] 11 points 6 months ago

It is never too late to learn something like this. Especially now when there are so many resources that can help you to learn it. It is another story if you want to find a job as a programmer, because I think the majority of companies prefer to hire younger talents.

Python is an excellent choice for a beginner.

Good luck and keep going!

[–] [email protected] 11 points 6 months ago* (last edited 6 months ago)

Python is suitable for beginner and is also easy to write code in different fields. I'm a developer, half of my time is writing code to get things done, and the other half is learning more development techniques, which I've been learning for over twenty years.

[–] [email protected] 24 points 6 months ago (1 children)

I'm 48. Last year, during a period of unemployment, I decided that to kill time I wanted to create a 3D aircraft model for my flight simulator (X-Plane). I had dabbled in Blender in the past, but nothing too in depth. So I sat down and just did it.

Some of the features I wanted to implement required plugins that had to made with Lua (a programming language) so again...I just did it.

Age and learning have nothing to do with each other. Regardless of the topic. I feel like maybe the only valid reason that such ideas took hold is because the older we get, the less time we have to focus on learning new things, and so it can seem as though we can't learn, when in reality we just don't have the time to. That's certainly what I found to be the case personally. It wasn't until I had literally nothing else to do that I could focus on really learning 3D Modelling and basic programming.

The solution to that, that I found, was to be project based. I wouldn't have made as much progress if I didn't specifically have some thing I wanted to make, whether that's an app, a 3D model, or whatever.

[–] [email protected] 7 points 6 months ago

This is what I've found too. Tutorials help to learn tools and some basic techniques, but actual learning requires doing. That's easy if you have something you want to do, but incredibly difficult if you don't.

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago)

Out of the ones you listed I'd suggest Julia or Clojure. They are simple and have interactive modes you can use to experiment easily.

Experienced programmers often undersell the value of interactive prompts because they don't need them as much. They already have a detailed mental model of how most languages behave.

Another thing: although Julia and Clojure are simple, they are also quite obscure and have very experimental designs. Python might be a better choice. From a beginner's perspective it's very similar to Julia, but it's vastly more popular and lots of people learn it as their first language.

Based on the languages you found, I'm guessing you were looking for something simple and elegant. I think Python fits this description too.

[–] [email protected] 1 points 6 months ago

Age is not a factor. Your ability to learn is

[–] [email protected] 6 points 6 months ago (2 children)

I think the idea you stop learning/can no longer learn past a certain age is rather stupid.

I think its a misconstrued fact, but the brain is always learning, I think the actual fact is its easiest to learn as a younger child, but I'd argue that is just due to not having knowledge already and not having any habits etc.

If you want to learn programming go for it! There's lots of very good resources online.

A language like python is very flexible and syntax wise is made to read close to natural language/English :)

[–] [email protected] 2 points 6 months ago

I wonder how much of this idea that you can be "too old to learn" came from the advent of schooling and childhood education. Like, in a time before everyone went to school up until a certain age, did people still have this mindset?

[–] [email protected] 2 points 6 months ago

Sorry I didn't read the post - Julia is quite similar to python also re difficulty

[–] [email protected] 7 points 6 months ago

Find a computer problem that you want to solve and focus on technologies that will help you solve it. Traditionally python is considered an excellent learning language due to the wide library support and adherence to most common programming styles - is there any romanticized pet project you've got on your brain?

[–] [email protected] 1 points 6 months ago

nah, one is never to old to learn stuff.

a tough, but hands-on start would be something like https://www.theodinproject.com/

it's a free course for web development and their material is really good, so even if you don't finish it you'll aquire some good fundamentals about programming.

sadly that does not match your language preferences, but a lot of knowledge tends to transfer or helps to understand different approaches.

you could also try a course like Introduction to CS and Programming or other university/college courses. they are meant for people who start without programming experience.

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago)

I've had some students who started at 50. The biggest problem is that it is hard to find a junior position as a 50 year old. Age discrimination is definitely a thing. If your goal is to make a career in programming from scratch, you might be too late, but 30 is sometimes already too late in that regard. Networking, nepotism and the good old "foot in the door" helps there. If your goal is just to learn and maybe apply it to your current job or your own business, than it's perfect to start now.

Most succesful students I've seen of the older category are those that have drive and passion. One student had her own fotography studio and wanted to build a database and website for that. She struggled a lot, but persevered and made a great application. Another was a taxi driver who's children put him in the course. He turned out to be very talented and made and excelllent application for planning taxi rides as his final project.

So it depends what your goals are.

[–] [email protected] 4 points 6 months ago

People look down on Javascript (and therefore Typescript) but as someone who learned by doing I think its a really good option

Once you get past the hello world phase you can take it any direction you want: websites/apps, command-line stuff, desktop apps you name it. Just avoid the trap of getting sucked into specific frameworks or loads of tooling early on and learn the language

W3schools is a great resource and you can do the examples and exercises right there in your browser

[–] [email protected] -2 points 6 months ago* (last edited 6 months ago)
[–] [email protected] 1 points 6 months ago

Hey I'm you at almost 40! I was always dev adjacent, but never learned to do much more than basic scripting for work.

I started with a couple books: Chassels intro to emacs lisp and Python the hard way.

Python was helpful for a couple things, but the ecosystem is kind of a disaster. I found just the general emacs config helps quite a bit get your feet wet with lisp likes.

Other people have mentioned Go is a great start point because its simplified, and I've definitely found it a lot more helpful than the java and C compliers I tried to learn on in my teens.

The only other thing I'd throw out is Lua, it's super verbose in a way thats pretty easy to understand. it's also relatively easy to find programs like wezterm that are configured through lua and offer instant reaponses when you change something and see changes.

Just like any new language it takes time, and some hard work to internalize what youre learning, but I don't think there's a too old.

You don't have to be the best programmer ever to do useful things.

[–] [email protected] 1 points 6 months ago

Clojure could be fascinating for you to learn. It is a different type of language from more common industry standards, but it still has a good adoption and is used by many companies. Clojure for the Brave and True is commonly recommended as a starting point. The Land of Lisp is excellent as well.

[–] [email protected] 3 points 6 months ago

Its only too late if its for a career change since you really need to be safe about income and retirement (notto mentions age discrimination). Still could help you in your day job to automate tasks. If you like math puzzles then coding them is a nice hobby too! Learning is always worth it in my opinion.

[–] [email protected] 3 points 6 months ago

I don't know Julia, but Clojure and Go use two different programming paradigms (functional vs imperative). They are two different ways to think about programming. Which one you pick depends on what you feel comfortable with.

What I'd recommend is to find a free, online course or tutorial for the languages you'd like to learn and just give a go!

Otherwise, Python is quite the easy language to learn first. It's nearly as if someone wrote pseudo code on a napkin and said "this should be able to run on my PC".

Anti Commercial-AI license

load more comments
view more: next ›