Tom Hoffman wrote a long and very interesting reply to my previous post for which I am very grateful. He makes some thought provoking statements and I like having my thought provoked. I was going to reply in an additional comment but things got really long so I decided that a new post (this one) was in order.
The short version though is that Tom doesn't make a good case as to why a language being non-proprietary is relevant. For example, I think that if a person says "I want to give my students a copy of the software to use at home" that is relevant. That has absolutely nothing to do with the language being proprietary or not. Tom talks about different things that are relevant but does not make a good case that these issues are the property only of non-proprietary tools. He also doesn't make a good case for why proprietary or commercial tools are "bad" or should be avoided.
Further I would add that automatically ruling commercial software out just because it is proprietary or commercial is closed-minded, short sighted and intellectually indefensible. Teachers should be judging a product on how well it does the job not on who produces it.
Tom's comments are in italics below. My replies are inline following Tom's comments.
First off, there is nothing wrong with an educator using free software for philosophical reasons. Teachers often make decisions for philosophical reasons. I'd be frightened to trust my kid with someone who didn't.
Well it depends. How would you feel about a teacher who refused to teach about George Washington because the man was a slave owner? Valid philosophical reason or not? I think that the philosophy used should revolve around how well a tool teaches concepts rather than around the source of the tool.
Now, what do you get with a free software license?
1) the freedom to use the language for any purpose.
For schools, the most important part here may be that this right doesn't expire. You don't have to renew the license, you can't be forced into paying for an upgrade. This isn't a limited educational version, you can use it to write and deploy any kind of application you want.
This is not something that non-proprietary software has a lock on. I don't know very many licensees that expire. The license for Visual Studio does not expire. And the academic version is the professional version with a different label on the box. Hardly limited. The difference is in the license which does not allow commercial development. That does not limit students in a first programming course in any real way. If fact any commercially viable software would easily generate enough income to buy a commercial license.
2) the freedom to study how the language works and adapt it to your needs.
Is this of practical value to 90% of the kids in an intro class? Probably not. Is it of value to teachers who really want to understand what they're teaching and kids who are fired up about programming? I think it is. Good programmers learn a lot by reading well written code. You can read and learn from code that would be too complex for you to write, or understand completely.
If by how the language works you mean looking at the source code for the compiler, I would argue that this is of use to fewer than 1% of the total population of people who have ever programmed in the history of programming. Of practical value to a single student in a first programming course? I don't think so. You can understand quite a bit about how a language works without having access to the source. Should the student know more than what is being covered in the first programming course? Of course, but that will be something they learn during their training and not something they will require in a teaching tool.
But beyond that, yeah, this is a philosophical issue. I believe that computer science is a science, and I can't imagine being in another science class, like biology or physics, where a student would be told, say, "Well, as a matter of fact, mitochondria do have their own RNA, but I can't tell you why, because that is a trade secret." We should value engagement and drilling deeply into issues, without running into black boxes and proprietary code.
You are addressing issues that are years away from a first programming course and outside the scope of my post. Interesting to be sure but a red herring in this discussion.
3) the freedom to redistribute copies.
This is very important for schools. The language isn't limited to specific computers in the school. It can be installed at home by students. They can install it on their friends computers and show their friends how to program.
You mean like Visual Studio .NET in the MSDN AA program, Visual Basic Express (free download) or the command line compilers that come free as part of newer Windows installs or updates though Windows Update? I don't see the connection to open source.
4) the freedom to improve the program, and to redistribute your changes.
Maybe not a big deal on the local level, but globally, it means that derivatives can be created that may suit local or educational needs better than the generic version.
You do understand that you are making an argument against using Java and for using C# right? There are several C# compilers available in source form and one can easily make ones own modifications to the language without fear of legal action. The same is not true of Java which is a proprietary language and which Sun has taken people to court and won hundreds of millions of dollars in judgements against a company for making changes they didn't like.
I'd like to address this on several fronts. First off it seems irrelevant to a first programming course. Neither students or teachers are going to be modifying compilers in that course. Secondly I don't see a whole lot of need for modifying compilers or IDEs by non-professionals. In fact few professionals are up to doing major modifications to compilers and IDEs. Even when they are I think that too many derivatives can cause software to be less productive as a teaching/learning tool because of a lack of consistency. It also makes finding comparable textbooks problematic. Further more it can make sharing of sample code and projects difficult which can limit what teachers can use in class.
The may be some value in source availability for established professional developers but a) I don't see it for beginners and b) I don't see many professionals taking advantage of it either.
Also, cross-platform compatibility does not always accompany free software, but it often does, and it is important for keeping schools' options open for their OS platform, and it ensures that students can use the software at home.
The idea of cross-platform comparability does have merit. At the same time I think that in general the costs of maintaining multiple OS platforms in a single school (I have some experience in this from previously working in schools) adds costs and complexity that is hard to justify. Running Macs for graphic arts program makes some sense even though the rest of the building is Windows for example. However maintaining two platforms for teaching the same subjects is generally not a good idea. That's just my opinion based on my own experience in previous jobs in a couple of schools.
FWIW The nice thing about a fast Internet connection is that schools can offer Virtual Terminal Access to a development platform at school for students to access from home on any platform. That is not used nearly as often as I think it could be or should be.
Actually both C# and Java meet the non-proprietary bar - both have Free Software (open source) implementations, and I'd heartily recommend either as a learning language (and I *agree* with Tom's points, for what it's worth - I don't think a proprietary language should be used as a learning language).
In the case of C#, Mono provides an excellent Free compiler and runtime package, SharpDevelop is a free IDE, etc. I'm not sure about the status of the DotGNU project which was attempting to provide another alternative.
In the case of Java, Eclipse includes an IDE and a Free compiler (which is also available standalone from various sources as "ecj"), and as far as runtimes there are a whole host, from Kaffe to gcj to JamVM to cacao (all using GNU Classpath as their runtime library) to the in-progress Apache Harmony project which has made pretty good progress in a very short time due to some big corporate donations.
The point is, believing that a non-proprietary language is critical for teaching is *not* an anti-MS position or a pro-Java one. If Sun had their way I'd be just as anti-Java as I am anti-VB right now. The Free Java community exists despite Sun to at *least* the same extent that the Free C# community exists despite MS. (Still waiting on a clear statement from MS that "Mono is definitely legal and encouraged and we welcome the competition" though).
As an aside, note that I'm fine with a proprietary *implementation* of a non-proprietary language being used. I don't have a problem with using the JDK for teaching Java or VS Express for teaching C#.
I buy into the original argument that proprietary vs. non-proprietary language is irrelevant - mostly because it seems to add a level of indirection where none is warranted. There just aren't so many languages that you can't talk about Java, or C#, or Ruby, directly; and as noted above, whether a language qualifies as proprietary is largely in the eye of the beholder.
SO far no one has made a good case why proprietary language shoulf not be used. Actually I'm not sure anyone has made any case for it in comments here.
Off the top of my head (some of these are incidental benefits that typically come with open source, others are inherent; I'm unaware of any proprietary language that actually meets even all of the incidental ones though)
- So that students who use a different OS at home can still experiment with the language
- So that students can share what they've learnt about the language with others who aren't in the same course, or the same school even - and their friends can easily get hold of the language to experiment with themselves
- So that the students can - without having to throw away what they've learnt and learn another language - release their programs publically with source for feedback. Sometimes even beginners come up with a great idea that could be the germ of a highly successful program. Also, if you really succeed in giving a student with natural talent the "programming bug", they'll learn rapidly by themselves beyond the course you're teaching; saying these issues "don't apply to beginners" ignores this.
- So that neither the students nor the teachers are beholden to a particular vendor continuing to provide zero-cost upgrades, security fixes, and support for OS upgrades (consider that VS2003 won't ever run correctly on Vista; suppose that Express had existed in the 2003 version but not in 2005 rather than the other way around; or remember what happened to VB6 programmers? Or further back, what if you taught QuickBasic around the time win95 came out?)
There are ways around to peoblem of a student not having the same OS at home as at work. And if fact while being able to run on more OS is good you are probably never going to get something to work everywhere. A lot of open sourse stuff does not appear to be usable on the VMS system I use regularly. At least not without a lot of work on my part.
Your second and third items are pretty much met by any language I have ever heard of proprietary or otherwise. Certianly they are met by Visual Basic .NET.
As for the fourth point you are always going to be dependent on someone unless you have great skill and unlimited time. The fact that in one case it is a company with a vested interest in supporting you and in the other you are dependent on someone just wanting to fix the problem out of the goodness of their heart seems like a win for proprietary software.
VB 6 programs and the VB 6 IDE will both be supported on Vista. I haven't tried QuickBasic, QBasic or GB Basic on Vista but I know people using them on Windows 2000 and XP. Commercial companies have a greater incentive to work on backward compatability than do open source developers.
Shouldn't the students be part of the decision? Most of the students I know want to learn language that get them jobs. It isn't "academic" anymore. I teach as an adjunct and the students are excited about C# and VB, and find Java boring and confusing. I have a minority of students (not minority students) that had taken years of Java programming and scheme and so forth, but NEVER got what a DLL is or really anything about Object oriented classes.
Open source is nice for a very few, but most people use Windows, there I said it: Windows. The students feel that teachers that try to use the multiple OS story to be boring and ancient. these students want to get jobs, and have no problem with learning Java and C# or VB, but aren't willing to take on languages like ROR, etc. The modern student is focused and passionate, but finds the professors and internet posters who focus on the "OPEN Source" argument as sort of "out of touch".
Modern students KNOW that they are dependent on someone else. They have no time to dig down into the O/S. They like free, but they are goin go to do nothing to improve the Open Source software. If it breaks they move on, CU.
XNA rules, over and out.
Hi, I am a professor who is looking for Imagine Cup contestants to help me program my nanobots.
This argument about OS versus Proprietary software is interesting. What I would propose is that people who believe in Open source, and Java programming, see if they can assist me with my contest that I am involved with called the Imagine Cup. This will allow them to demonstrate that Java is a better language for students to learn over C# or VB. The contest has extensive tutorials on how to program and to participate in the game play. It is very exciting.
Using either C# or VB, students over the age of 18, attending an acredited university can participate.
I hope my friend Alfred will let me post more about this exciting contest on his site as we approach the contest start date. To participate you will need to download some free tools from Microsoft and an SDK from the Imagine Cup site.
BTW if you want a tool that runs on several OSes say so. If you want to look at source code say so. There are options available for those options that are independent of a product being proprietary or not. Lots of proprietary products run on multpile OSes. That is the reason I say that propriatary or not is irrelevant. I'm not saying that open source is bad or even that one shouldn't use it. I've released code to the wild without strings myself. I'm just saying that treating proprietary software as if it were automatically "bad" and should never be used is just wrong and not justifiable.
With free software, you always get the benefits outlined above. With a proprietary license, the school is dependent on the vendor, and the terms may change in future versions, or the product may be discontinued, sold to another less friendly company, etc.
I felt my response to your question in the comments of your previous post to be deserving of its own post. You can find it here...
If I may be allowed to share my admittedly non-professional opinion on this subject. I agree that the proprietary-vs-nonproprietary issue is irrelevant for the most part, especially as it pertains to introductory computer programming subjects in K-12 studies.
Back in my junior high school days (rather, it's equivalent in my country), the first programming language I ever learned was GWBasic, followed by Turbo Pascal. Now, these programming languages are most likely archaic by today's standards, not to mention that they are pretty limited in capabilities. But the importance of teaching these subjects back then is not that they have immediate practical and vocational value, but that they introduce the concepts of computer programming. This is the important philosophical point, not whether it was blessed by Richard Stallman or Bill Gates. Just like conceptual mathematics introduces the ideas of numbers and operations, concepts learned in an introductory computer programming course will guide the child's later understanding of how programming languages work.
With GWBasic and Pascal we learned the idea of proper syntaxing, of proper structures in a program. Badly formatted code would result in uncompilable programs, or erratic and nonfunctional ones. To a student who has never tried using a PC before, this was both perplexing and exhilarating stuff. We learned how to troubleshoot and devise kludgy workarounds to make our code work. And while we may not get good grades with such antics, the fact that we end up with a working program was reward enough.
That's what introductory courses are all about. We can't do it all well on the first go, but the lessons we learned on the concepts of programming, how the code should "flow," that will prove indispensible later on, when some of us will end up taking college degrees (or vocational school courses) on computer programming.
And let's tackle the brouhaha on proprietary-vs-nonproprietary programming languages. I must admit ignorance with any of more advanced computer languages. I did not take any further programming courses since high school. Can VB or Java teach the concepts and ideas of computer programming in a user-friendly way? If it can, then let's teach the kids that. Can Python do that? Again, if so, then let's teach that too. The first programming language implies that it won't be the last. The kids can be taught other languages later on, if they (or perhaps the school board curriculum) require it.
As for availability, yes that is of some consideration. Kids take home their school work all the time, and computer programming is no exception. If Alfred Thompson says that there are freely available (or at worst, at nominal expense) tools for proprietary languages especially for students' use, then that will definitely be a plus.
In the end, the choice of first programming language for K-12 students must ultimately be decided by the teacher, unless the school or school board mandates a specific language.
A good programming language should not be shunned just because it's proprietary.
Наткнулся тут на интересные посты по поводу обучения computer science .(Смотри ссылки раз , два и три