Thinking about learning something else

This is a discussion on Thinking about learning something else within the A Brief History of Cprogramming.com forums, part of the Community Boards category; Originally Posted by tiachopvutru
Also, my choice right now is Python, as it's heavily recommended for beginners, but I'm having ...

Until you can build a working general purpose reprogrammable computer out of basic components from radio shack, you are not fit to call yourself a programmer in my presence. This is cwhizard, signing off.

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration" - Edsger Dijkstra

Just thought it was worth mentioning

My secondary school computing course teaches TurboBASIC (or is it TrueBASIC?), either way I'm doomed! Thing is, I'll have to learn it to pass.

There is nothing wrong in learning any kind of programming language. BASIC has been the starting point of many programmers. Many who today easily stroll through these boards with one leg behind their backs.

In fact because they share an history of several programming languages, that makes them stronger programmers, capable of easily adopting new syntaxes and new programming paradigms. Something you can hardly see on someone who choses to adopt a more centered approach to their learning process and dismiss other programming languages on such subjective notions as "It's too simple", "It's crap", "It's a toy".

BASIC introduces fundamental programming aspects while retaining an easy syntax and freeing the student from complex constructs. In BASIC I learned all about program flow, variables, loops, conditionals and general programming logic while quickly building fun and useful programs and without having to wrap my head around complex debugging or hard to detect errors.

Certainly little nothings if one already knows about these things. But a national education system cannot be built on an individual basis. Regardless, If one already knows about these things, it should be a breeze to pass the exams while studying their own favorite subjects at home. If one doesn't know, they are about to learn. Just a few years ago you didn't even have computer related disciplines in high-school. You're the lucky ones.

BASIC is still a very interesting programming language to study. And the new generations like Visual Basic or PureBasic are powerful programming languages on their own right.

There is nothing wrong in learning any kind of programming language. BASIC has been the starting point of many programmers.

I tend to agree, but Dijkstra appears to disagree, at least where one's first programming language is concerned.

Many who today easily stroll through these boards with one leg behind their backs.

hmm... they stroll while hopping?

BASIC introduces fundamental programming aspects while retaining an easy syntax and freeing the student from complex constructs. In BASIC I learned all about program flow, variables, loops, conditionals and general programming logic while quickly building fun and useful programs and without having to wrap my head around complex debugging or hard to detect errors.

I have a feeling that the Dijkstra quote has something to do with GOTO rather than BASIC by itself, but we need more context to understand it. A slam on a language by one of the great pioneers of computer science is damning, but the language that he condemned and what is currently in use can be drastically different.

EDIT:
Oh, the context is in How do we tell truths that might hurt? Consequently, it is clear that Dijkstra was not being entirely serious, though he did intend to make a point about what he regarded as poor programming languages, among other things.

Definitely. The GOTO statement probably being on his mind, since historically he is perhaps its biggest and most famous detractor. The language itself is definitely one of the most innocuous alive. The GOTO statement was a necessity(?) in the imperative style of classic BASIC versions. But definitely, fell in disuse in the procedure-oriented versions. What's more, I'm yet to know of someone who was hopelessly lost to GOTO and label and couldn't learn anything that didn't use it or made its use reproachful under most circumstances (C/C++, for instance) .

Besides he himself was exposed to BASIC without any side-effects we can attribute... except perhaps a renowned bad temper

I think it's one of Dijkstra's famous tirades that stood the test of time and that perhaps makes a lot of sense at the time he wrote it (1975, precisely around the time BASIC was being put on about every home computer and everyone wanted to learn it) and the fact his favorite programming language, ALGOL, and BASIC sharing some similarities, particularly syntax.

Originally Posted by laserlight

hmm... they stroll while hopping?

Well, I could go on how you folks could easily develop an advanced roller_skates class and inherit yourselves from a finely-tuned balance class with heuristics. But... instead I will say, precisely, you can stroll with one leg

Until you can build a working general purpose reprogrammable computer out of basic components from radio shack, you are not fit to call yourself a programmer in my presence. This is cwhizard, signing off.

I'm particularly fond of python for beginners simply because it is fast to get stuff running. You can go from nothing to something very quickly, the syntax is simple and straightforward, and there are batteries included. After a few days you can probably get something interesting up that you could show to a friend or just use yourself. This is absolutely critical as a beginner, I feel: you must be able to motivate yourself, and nothing gets that pumping more than seeing something you've built up, running and working. You get a sense of accomplishment, and it feels good. You have fruits of labor.

I've technically released/accomplished little in my programming endeavors since I have started (then again, I've been a student in the US school system ever since I started; haven't had much of a chance for a job.) Even then, the feeling of accomplishment I get when I create something - whether it works on the first try, or I spend many hours debugging, tweaking and even rewriting it - is great. But you will also not create some things, you won't finish them, etc. etc.. However, this tolerance for failure and dealing with what is many times complete BS is acquired and learned, never given.
You'll go through a lot of failures no matter what, and the first ones are some of the most disheartening, I know. Even with Python, you will surely have problems, not accomplish something and so forth - the reason I recommend Python though is, I feel by using a higher level language than say C++, and, thus lowering the threshold of entry, it may make these failures more tolerable and instructive; not simply frustrating and demoralizing. At the very least I would think it would make it easier to accomplish many things, and that's important, regardless of skill.

I've seen a lot of people give up on programming because they couldn't get anything interesting working in something like C or C++ after spending a while learning it, and thus wrote off programming altogether as something that has little reward, is too arcane, or perhaps both. That's not to say they're stupid (I would think it's more a part of human nature: first impressions are critical) but more that they wanted fast results and they wanted to build fun stuff. There's absolutely nothing wrong with that, and if you want that, I highly suggest python. Don't get me wrong - you'll spend a few days getting up and running, familiar with the syntax/ideas, etc.. But after that, you'll have plenty of areas to explore and you'll be able to get stuff going quick. You will surely complete some things and never complete others: losing is a part of the game. In the end though, I think you'll have a language that can show you - as a beginner - that programming can be fun, instructive and easy. That you can create stuff, and that while it's not all fun and games, it can sure as hell be a lot of fun when it is.

The problem is with unreasonable expectations. Because C/C++ are billed as the most powerful language, people expect bigger results their first time out. If you follow the standard (hello world) tutorials, C/C++ are easy to get something up and running.

Until you can build a working general purpose reprogrammable computer out of basic components from radio shack, you are not fit to call yourself a programmer in my presence. This is cwhizard, signing off.

Wouldn't this mean if a person is uncomfortable learning C/C++ and finds Python easier to learn and it just so happens Python can handle whatever that person problem domain is at that time, Python becomes the perfect tool for the job? A better tool than C++?

Wouldn't this mean if a person is uncomfortable learning C/C++ and finds Python easier to learn and it just so happens Python can handle whatever that person problem domain is at that time, Python becomes the perfect tool for the job? A better tool than C++?

Wouldn't this mean if a person is uncomfortable learning python and finds C/C++ easier to learn and it just so happens C/C++ can handle whatever that person problem domain is at that time, C/C++ becomes the perfect tool for the job? A better tool than python?

Until you can build a working general purpose reprogrammable computer out of basic components from radio shack, you are not fit to call yourself a programmer in my presence. This is cwhizard, signing off.

Hehe, but as I remember you started the whole Python i not good debate

To be fair, my position is not that python lacks inherent goodness or fitness for any purpose, only that -

1. It (python) is not C/C++.
2. It lacks comprehensive close-to-the-metalness.

#2 is pretty important for a lot of scientific and engineering work, where every ounce of computing power needs to be sqweeeeeezed out of a system. Most of the applications I develop are pushing or exceeding the limits of todays COTS hardware. While this may not be an issue for 99&#37; of programmers today, what about in 10 or 20 years? Will you still be writing web apps or do you hope to move on to something more complex? When the time comes, will you have 10 or 20 years of experience in a languiage that can meet the engineering requirements of your complex tasks, or will you have 10 to 20 years experience with python?

Until you can build a working general purpose reprogrammable computer out of basic components from radio shack, you are not fit to call yourself a programmer in my presence. This is cwhizard, signing off.