Best beginner programming language?
Tom Bruce Asks ...
I have a question to ask all of you BASIC language programmers: There is a movement to teach programming in school systems --primary and secondary. I would like to ask you if teaching BASIC language, as an introduction to programming, is not only viable but preferred.
My concern is this: There are two aspects to teach programming. The first is teach the grammar and structure of the language. The second is developing skills to translate real world problems and procedures into a program.
Many of the modern languages are so complex in their understanding that students leave the class unable to relate programming skills to their own personal use (career or otherwise).
So, if the intent is to teach programming to the general student body --understanding that we are not necessarily talking about students already on the fast track towards Science, Math and Engineering .. and computer science-- Is teaching BASIC the best answer?
I am familiar with most of the aspects of programming language and how they apply to organizational needs. Also I am very old. I started with some of the early languages including FORTRAN and COBOL .. went on through BASIC .. and eventually taught C, VISUAL C++, Visual BASIC and other web oriented languages now current. Also I am a strong OOP supporter .. but don't hold that against me.
That's a somewhat interesting question! Both the modern and old languages pose problems for teachers,
GWbasic is great in terms of simplicity, but it lacks some mechanisms that make real structured programming possible, and often encouraged bad coding habits in learners. That being said I learned on it, and it was a good way to start for me, but better alternatives exist nowadays although it would be a nice history lesson.
Qbasic (and the modern equivalent QB64) are better in that simpler code is still supported, but proper structuring can be easier accomplished with subroutines. It's not object oriented so it's not too complex. The downside of Qbasic is the lack of relevance to modern computing, and having to run it in a DOS emulator. I haven't really used QB64 so I can't really comment on it.
Modern languages such as C++, Visual Basic, Java etc are a problem because of the complexity just to get a simple program working, I'm sure everyone can see how hard it could be for a kid to learn them. Some people say python would be a good learners language, but I don't see it being better than Qbasic, as in some ways it's complicated unnecessarily.
I have however seen a modern beginners teaching language that may be of use to you. It's called Small Basic, and is made by Microsoft. (http://smallbasic.com) is where you can find it. I haven't used it, but it looks promising for beginners and seems to be in the spirit of the old basic interpreters. Interestingly it is modern in the sense that there are some simple OO elements in it.
Honestly I don't know if there is a simple answer. I'd suggest you start with something simple and then later graduate the kids onto a harder more complete language as they gain understanding of how things work. There's no reason you shouldn't use multiple languages to get the best of both worlds, most programmers learn many different languages over their careers (or even as hobbyists) so it would be valuable experience to learn a few different ones, even if only in part. The kids that are the most interested/excited will most certainly learn more in their own time, as long as they can get the tools and reference manuals for free.
If it were me I'd start with QBasic (using QB64 if it is any good) as I know it quite well, and it supports simple code for beginners. After they had a good grasp of how that works it would be more appropriate to introduce a more modern complex OO language. Java or C++ would be good standards to teach as they are commonly used by professionals, but Visual Basic or something easier would be fine as well. It would depend on how fast their skills progress and what their goals are in learning programming.
I hope that helps you decide in some way shape or form. Whatever you do decide, good on you for teaching kids this valuable skill!
Tom Bruce responds
You points are well taken. You are saying that by returning to an early language (BASIC in this case) could be the wrong way to go because it might not prepare the student with the knowledge and skills of the market place. There is no question that many language features (OO, Windows, HTML, etc) are absent .. and if this is a priority you may be right, here. But I am still thinking that training the mind to translating world problems into a digital format comes before becoming entangled in advanced language features.
Now suppose computer language training is sought at a primary school and then continued at the high school level. Would that change the nature of any responses to this issue? Again I am talking about the general student body.
Yes and no, I guess that would depend on the skills of the students and how old they are. But I'd say the simpler forms of basic are probably a good candidate to teach younger kids.
The simplicity of earlier forms of basic will make it easier for kids to translate a problem into code, even line numbers would probably prove helpful in helping them understand the sequence of the code. GWBasic has this in it's favour.
You're probably right that the advanced features of some languages will be too much for younger students. I think however once they are older and have mastered some of the basics of coding they will run into the limitations of simpler languages. This doesn't mean they should have learned something else just that they have learned as much as they can and ought to move onto something new.
So no one language is really a fit-all solution, you'll need to use one for beginners and another for more advanced students. I personally think Basic is fantastic for beginners, and some of the dialects have lots of documentation and books for beginners.
Gwbasic unfortunately doesn't have much available for it. The reference manual is fortunately available online, and a few people have posted some code (such as Neil and myself). Its successor qbasic has much more information available, and even still has a thriving coding community.
we started with Pascal in my high-school (around 1998). this gave us a good introduction to programming.
however, these days I would recommend new programmers to start with some of those modern languages as mr Sparcie mentioned
Jaime (Caracas, Venezuela) comments
Cursé programacion en la universidad y no conocia ni siquiera el sistema operativo. Empecé con BASIC. Lo más importante de la programación es desarrollar las habilidades de resolver problemas de la vida real a una solución en informática. Conocer un lenguaje específico es concer su sintaxis. Esto es secundario. Lo importante es dominar las estructuras principales de la programación. Es recomendable por saber cómo se traduce en un programa, por ejemplo, los matemáticas y el cálculo y luego por una base de datos. Existen diversas formas de aprender a programar. Hoy en día, el camino es más largo que antes y con un solo curso no basta. Se requiere al menos de una año para definir lo que es un progaramador. Recomiendo empezar con QBasic y aprender a desarrollar pseudocódigos resolviendo problemas de distinta naturaleza.
Rough Translation: Programming course in college and did not know even the operating system. I started with BASIC. The most important thing is to develop programming skills to solve problems of real computer to a solution life. Knowing a specific language syntax is concer. This is secondary. The important thing is to master the main structures of programming. It is advisable to know how translates into a program, for example, the mathematical calculation and then by a database. There are several ways to learn programming. Today, the road is longer than before and with a single course is not enough. It takes at least a year to define what a progaramador. I recommend starting with QBasic and learn to develop pseudocode solving problems of a different nature
Bob Joy comments
I have often shown inquisitive adults what computer programming is using gwbasic. I would have them write a program or type in a few small programs and run them. For a few hours I would be a teacher. After this little 'teach in' they would walk away with a good idea of what a computer programmer does.
Separately , I have been carrying gwbasic around with me for years because I could do almost anything with it. That has changed recently because DOS shell isn't really DOS anymore. Plus , I have to use FreeBasic with the -QB(QBASIC emulator) just to run programs I wrote forty years ago on my own machines.
I miss the simplicity and size of GWBASIC
Got something to add? Send an email to the poster: tom AT laplaza.org. Or email me at firstname.lastname@example.org if you have any comments or questions.