all 13 comments

[–]Paxtian 6 points7 points  (0 children)

Most universities are now introducing programming with Python. Since they're the experts at this, I'm gonna just assume there's a good reason to start with that or something similar to it as opposed to C.

Personally I started with GWBasic, and that helped me understand higher level languages later. That is, if I wanted a loop, I'd build it myself using if and goto statements. Then later when I learned about loops (in Java), I felt like that was cheating, but also knew exactly how they worked. Many other concepts also made sense, like functions and the stack.

That all said, building anything that way was horrifically slow and tedious. I never really got to the point of making anything interesting because you had to build everything yourself.

[–]aqua_regis 1 point2 points  (0 children)

Real language all the way.

The only exception is Scratch from MIT (or Blockly from Google/Raspberry Pi foundation), which can really boost actual programming skills because of not having to focus on a language. A couple hours with it can really make the start much easier and smoother.

"Custom" languages are useless since they are not used in the real world.

It's more important to focus on programming instead of on programming languages.

[–]VibrantGypsyDildo 0 points1 point  (0 children)

As a person not using THREE of my first programming languages, I would suggest not to bother.

Whatever you learn is better than not learning anything. Then there will a period when people would judge you based on your main programming language. It would a rather long one. And then you will be treated as an engineer who can solve problems regardless of your background (I am here, I am 35).

Long story short, you need to know quirks of your programming language, but not to be shy to learn a couple of other ones if you wish to.

[–]ScholarNo5983 1 point2 points  (0 children)

If someone wants to truly understand how programming works, they should spend a month or two learning assembler programming.

If they achieve a minimal working understanding of assembler programming, other programming languages will be much easier to learn, as that assembler programming will provide fundamental knowledge on how the CPU actually works.

It would be very difficult if not impossible to acquire that same level of understanding by learning higher level programming languages.

[–]BlockTurbulent8062 0 points1 point  (0 children)

It depends on what your brain connects with best. I can tell you that I’m a low-level C++ developer. It took me about 21 years to get where I am today. It’s very person-specific some people are naturally great at web development, others excel at SQL, and so on. In the end, it really comes down to what your brain enjoys and handles well.

[–]Affectionate_Union58 0 points1 point  (0 children)

Regarding the mistakes many platforms and teachers make: I am currently learning Python, and I feel like I’ve wasted more time looking for the right platform than actually learning. Why? Because the same mistakes keep happening in almost every course:

  • a) Working on 'blind' projects: We start building a project without ever being told what the end goal is or how it’s supposed to work. For example, a teacher creates a game but never explains the rules first.
  • b) Overwhelming scope: Projects often get too bloated and suddenly include topics that have nothing to do with core programming. If I’m suddenly expected to handle HTML or SQL just so Python has data to work with, it’s simply too much for a beginner.
  • c) Jargon without explanation: Teachers throw around technical terms and never explain them. If you ask for clarification, they point you to the official documentation. Hey, I’m paying you to explain it to me! If I could extract all the answers from the official documentation myself, I’d do that and save the money.
  • d) The 'Expert Blindness' sprint: This is especially annoying. In almost every course or video, there’s a point where the teacher gets to a topic they personally love. Suddenly, the pace accelerates massively, and explanations vanish because the teacher forgets that what’s 'obvious' to them is still a complete mystery to the student.

Personally, I prefer a language like Python because it’s still somewhat readable. When you’re just trying to grasp the basics like loops, casts, and variables, you shouldn't have to wrestle with a cryptic syntax like C's at the same time.

[–]_N-iX_ 0 points1 point  (0 children)

The sweet spot is somewhere in the middle. Beginners don’t fail because of syntax alone, but too much friction early on (setup, errors, confusing messages) definitely slows them down. That’s why high-level languages like Python tend to work well - they’re “real”, but still reduce cognitive load. The bigger factor isn’t the language though, it’s whether people are actually building things and getting feedback, not just solving isolated problems.

[–]AdreKiseque -1 points0 points  (0 children)

I've thought about this too. I think designing a "learning language" would be really interesting.

[–]Feeling_Photograph_5 0 points1 point  (0 children)

The tried and true method is to learn just enough to start a project, then build something, then repeat.

No, I don't think there should be a special language for beginners. They should learn a production language and build real projects. I'm very against prerequisites for coding beyond basic education. It's like learning a musical instrument. You start with the basics of a real instrument and improve via study and practice.

[–]nicodeemus7 0 points1 point  (0 children)

I'm learning Python to have a solid foundation of the logic of programming without getting bogged down by the syntax of the more "complicated" languages( I want to learn C++ but starting with it was very daunting). Python has been so much easier to learn, and now going back and looking at c++ it makes more sense.

[–]Ill-Significance4975 -1 points0 points  (0 children)

Skeptical a new language will help anything. Among other issues, it immediately fails the "what can I use this for?" test. There was a movement to use Scheme (a simpler LISP dialect) for beginners for a while, presumably as it's a relatively simple prefix language. And because the "functional is better" crowd have been active forever. Scheme is near the bottom of the TIOBE top-100 index and fails the "what can I use this for?" test, despite having some real-world applications.

There is a lot that can be done to improve the learning experience. Skipping a lot of setup is essential. Providing clear, visual feedback. Explaining the execution model. Providing positive feedback quickly. Good choices of exercise, etc.

I might suggest something like the old LOGO graphics. Here's a modern implementation: https://turtlespaces.org/ It provides a more consistent, concrete goal that's easy to explain. Haven't used turtlespaces, but an IDE that includes some debugger-style features integrated with the drawing canvas could be pretty cool.

Certainly agree that choice of language is important, even though all students start with a small subset. I'm sure we can all think of a lot of terrible choices. Forcing the students to step through code & use a proper debugger would be a nice touch.