Question about learning programming

Click For Summary

Discussion Overview

The discussion revolves around the learning of programming, specifically focusing on the importance of algorithms and data structures in understanding programming logic. Participants share their experiences and recommendations regarding educational resources and approaches to learning programming effectively.

Discussion Character

  • Exploratory
  • Technical explanation
  • Conceptual clarification
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant expresses a desire to study algorithms and data structures to gain a deeper understanding of programming logic.
  • Another participant emphasizes the importance of studying algorithms and data structures, suggesting they are crucial topics in programming.
  • Some participants recommend "THE ART OF COMPUTER PROGRAMMING" by Donald E. Knuth as a valuable resource, while others caution about the heavy commitment required to study it.
  • One participant argues that knowing how to write algorithms is not necessary when using high-level languages like Python, which already implement standard algorithms and data structures.
  • Another participant suggests that programming involves breaking down problems into smaller parts rather than relying on deeper logic.
  • Some participants discuss the value of practical experience and the potential pitfalls of relying too heavily on resources like Stack Overflow for problem-solving.
  • One participant notes the importance of having general knowledge of algorithms used in utility libraries, while another emphasizes the benefit of understanding theoretical knowledge for future applications.
  • Several participants mention taking courses on data structures and algorithms, highlighting the realization of their importance through these studies.
  • There is a discussion about Python being described as "executable pseudocode" and the implications of this characterization on learning programming.
  • Participants debate the principle of having "only one obvious way" to do things in Python, discussing its implications and the changes from Python 2 to Python 3.

Areas of Agreement / Disagreement

Participants express a mix of agreement and disagreement regarding the necessity of studying algorithms and data structures. While some advocate for their importance, others argue that practical experience and the use of high-level languages may reduce the need for in-depth knowledge of these topics. The discussion remains unresolved on the best approach to learning programming.

Contextual Notes

Some participants highlight the limitations of their previous educational experiences, noting a lack of focus on algorithms. There is also mention of varying levels of commitment required for different resources and courses.

Who May Find This Useful

Individuals interested in learning programming, particularly those seeking to understand algorithms and data structures, as well as those considering different educational resources and approaches to programming practice.

  • #31
sbrothy said:
Indeed, copy/paste is the backbone of programming. If someone already solved the problem for you reinventing the wheel is just stupid. If you can tell if it's worth copying that is. :cool:
stack overflow and geeks for geeks literally carry me... copy paste off those two is something I do way too often...

BUT please please do NOT try to learn by getting AI to generate code for you... it is not the same as copy pasting! When you copy paste sections of code... you have already broken things down and considered each step in solving the problem/building the software... however when you get AI to do it for you, there is no critical thinking involved whatsoever. You will not improve just by prompting an AI - using it to plan, to brainstorm, to compile... that's fine. But when you're learning - don't ask it to code. Sometimes you are getting it to do jobs you would benefit from doing without even realising.

By the way, a really fun programming challenge that comes out every year is Advent of Code (I am personally a huge huge HUGE fan...) - https://adventofcode.com/. Give it a shot when December rolls round. Or do the past year problems as practice!
 
  • Like
Likes   Reactions: sbrothy
Technology news on Phys.org
  • #32
Been programming nearly all my life, and I am now 70. I did it professionally for over 30 years.

Python is the best language to learn first.

But if you want to learn more, you need a language closer to systems programming. I do not like systems programming (to put it mildly). I am an application programmer through and through; for that, Python is excellent. But there is no getting around the fact that knowing more about systems programming will significantly enhance your computing knowledge.

I suggest learning the new system's language on the block, Zig. C and C++ have been the systems programming languages of choice for many years, but everything points to Zig as their modern replacement. Zig can compile both C and C++ (no kidding). It does this by translating it to C as an intermediate step and feeding the C into a C compiler or LLVM. It is a program optimiser that accepts several languages and spits machine code out or gives an optimised translation to another language.

It is gaining a foothold as the language to integrate with Python:
https://www.infoworld.com/article/3831676/how-to-boost-python-program-performance-with-zig.html

Thanks
Bill
 
Last edited:
  • #33
I'd recommend starting with assembler and coding your own operating system as you do as part of a proper CS education. Having a high level language handle your garbage collection may get you started quickly, but if you encounter a pointer or having to grasp the concept of a stack, learning Python doesn't prepare you for any of that.

EDIT: Then again I'm a retired dinosaur.
EDIT2: Assembler may be a little bit too low a starting point but you get my drift.
EDIT3: If you just want to learn programming go ahead with a high level language, but if you want to learn it in depth, I'd recommend starting from scratch.
 
  • #34
Posts #32, #33.
I tried to learn Python on my own many years ago and made NO progress. I have been only ever able to handle two different forms of BASIC. Initially, BASIC was most of the few little amount of Programming learning I had in school. I can not more than just guess that if Python was the main language to learn when I was a student then today I could have become familiar with and made progress with Python.
 
  • Like
Likes   Reactions: bhobba
  • #35
Python is such a popular language that nowadays there is so much infrastructure for learning it and getting good at it, and from what I've heard (from large communities of young coders), it seems the go-to language for beginners.
My advice is stick with python until you encounter something that is such an annoyance to make in python that you're better off writing it in another language...
 
  • #36
TensorCalculus said:
Python is such a popular language that nowadays there is so much infrastructure for learning it and getting good at it, and from what I've heard (from large communities of young coders), it seems the go-to language for beginners.
My advice is stick with python until you encounter something that is such an annoyance to make in python that you're better off writing it in another language...
Yeah, I guess that's the rational way if it doesn't interest you enough to be anything but a means to an end.

EDIT: There. Taken care of.
 
Last edited:
  • Wow
Likes   Reactions: FactChecker
  • #37
FactChecker said:
You can go a long way in programming without diving into assembly language. I wouldn't call application programmers "tools".

I think he meant to be anything but a tool user, so, as a mentor, I took no action; to me, it was rather obvious. But I would ask the OP to change it to a tool user.

Thanks
Bill.
 
Last edited:
  • Like
Likes   Reactions: FactChecker
  • #38
bhobba said:
I think he meant to be anything but a tool user, so, as a mentor, I took no action; to me, it was rather obvious. But I would ask the OP to change it to a tool user.

Thanks
Bill.
Sorry. That didn't occur to me. I removed my comment.
 
  • #39
Oh! Sorry. Yeah, obvious language eff-up! I know that calling someone a "tool" is an insult, but due to my non-native language it slipped by me without me really thinking it through. My apologies.
 
  • Like
Likes   Reactions: FactChecker and bhobba
  • #40
sbrothy said:
Yeah, I guess that's the rational way if it doesn't interest you enough to be anything but a means to an end.
what do you mean? Because you can decide to learn a language that has a lot of infrastructure in place for it and still want to learn the language for the sake of having fun and learning interesting things...
 
  • #41
What I mean is that there are surely a lot of instances where you don't have to dwell deep into the inner workings of programming as a discipline onto itself to be able to use it in your chosen profession. And I think that's perfectly fine.

Where you draw the limit is up to yourself and your level of need and interest.
 
  • Like
Likes   Reactions: TensorCalculus
  • #42
Those few inflexible people among us were or are taught some beginning computer programming language in school. We are taught how to understand variables, some fundamental commands, some ways to handle input and output, and are taught (or is this now become "were" taught) to create flow diagrams and to convert these into lines of code; and we use just the one language and no others. The few inflexible people become stuck and find difficulty learning a different language. We can find that reviewing and improving in that one language is possible. Yet we have extreme trouble trying to learn a new or different language. That is how things have gone with me. We few never installed anything to begin learning our first programming language. We went to our instructional lectures, went to our lab sections, performed our assignments as best we were able. Nothing to install! We sat at a keyboard with monitor, while the computer was in a big room.

What did those few inflexible people do later if they wanted to review and try to learn just the one language better? If lucky we found some old, used textbook and studied from it and tried to perform some exercises from the book. By this time, we might have been able to use a personal computer at home, and we either had QBasic on our computer or were able to install something moderately similar which allow us to use the very similar language which we earlier studied in school. For these so few of us inflexible people, we originally started with BASIC-PLUS, and MINIMAL-BASIC. Doing our later review studying, we would have some kind of BASIC running on a Windows operating system computer.

Seem to be, the more motivated people studied more than just one computer science and programming course when they were still in school and learned more than just one language.
 
  • #43
Indeed. I started with C out of pure interest (and because a friend of mine told me that this would "be the future" and be sure to land me a job (formal education or no). I crossed into assembler and thus got a pretty thorough understanding of programming. This made it easy for me to pick up new languages, and it turned out he was right. It did land me several jobs. (Some of them involving unofficially bailing him out of trouble with his various jobs because, as it turned out he had the formal education and a good theoretical understanding but he was still a poor programmer in practice. He was good at talking himself into good positions but bad at actually solving his assignments.) In retrospect it looks like he took advantage of me, but on the other hand he made sure, that when I was unemployed, I got jobs in the same companies as him, until I got tired of the dynamic and stayed with the same firm for years. (Still didn't prevent him from calling for help sometimes though.) :smile:
 
  • Wow
Likes   Reactions: symbolipoint
  • #44
TGV320 said:
TL;DR: Need advice about learning intermediate subjects of programming

Hello,

I am currently learning Python as a basis for further studies in programming. The course that I took at college was quite basic, teaching us the basic concepts required for programming, and some web oriented concepts like data scraping, APIs, automated tasks using bots. As I delved deeper into programming, I noticed that the course didn't teach us much about algorithms. That part of programming seemed like a really important one, since I found out that when I try to program from scratch, I really didn't have much idea about how to do anything, like the deeper logic control loops or data structures.

Therefore, I am now contemplating studying some computer programming textbooks about algorithms and data structures.

The question is : should I study it as mentionned and do you think doing so might really help me understand the deeper logic involved in programming?

Thanks a lot,
Regards
Hey, I think yes, it will really help. You know with this you will understand how programs really work, or you will learn how to solve problems better, and most importantly, it will build your foundation strong. Here are some good books for beginners, which are useful for you.

1. Grokking Algorithms by Aditya Bhargava
2. Data Structures and Algorithms in Python by Michael Goodrich.

Hope this will help you.
 
  • Like
Likes   Reactions: sysprog1

Similar threads

Replies
86
Views
2K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
Replies
16
Views
3K
  • · Replies 15 ·
Replies
15
Views
4K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 133 ·
5
Replies
133
Views
11K
  • · Replies 56 ·
2
Replies
56
Views
10K
  • · Replies 397 ·
14
Replies
397
Views
21K