I think it goes a bit further than you do. Article 19 of the United Nations Universal Declaration on Human Rights identifies two key components to freedom of expression; the right to opinion, and the right to expression. Stating:
Everyone has the right to freedom of opinion and expression; this right includes freedom to hold opinions without interference and to seek, receive and impart information and ideas through any media and regardless of frontiers.
A third component is implied here, the right to access to information, defining the right to accesses as including the rights to seek, receive and impart information and ideas. Without the unrestricted access to impart ideas and information, there is no point in seeking it out. Thus, the right to receive and impart information and ideas must be a necessary consequence of seeking.
These ideas about what constitute freedom of expression are the very basis by which the United Nations declared the internet a human right.
The right to freedom of opinion and expression is as much a fundamental right on its own accord as it is an 'enabler' of other rights, including economic, social and cultural rights, such as the right to education and the right to take part in cultural life and to enjoy the benefits of scientific progress and its applications, as well as civil and political rights, such as the rights to freedom of association and assembly. Thus, by acting as a catalyst for individuals to exercise their right to freedom of opinion and expression, the Internet also facilitates the realization of a range of other human rights.
Like it or not, software design is actually *hard*.
Yes, it is. Of course, I don't expect an interested hobbyist to start off writing code that's easy to maintain any more that I expect a first year engineering student to be able to competently inspect a bridge. They've got to start somewhere, so why trash the tools that give them an easy start?
Python is not some magical bullet that means you can't write bad code.
I agree. It may even be the exact opposite of that:)
However, it is designed around good design. It encourages good indentation (where good == standardised), if nothing else.
I wouldn't go that far! Besides, they'll learn the importance of indenting code as they begin to write longer, less trivial programs in any language.
So it's got very little to do with elitism or scarying away newbies, as simply not giving somebody who's never seen a gun before a loaded handgun with the safety off
I disagree. If not for elitism, why artificially raise the bar? It's not like they can hurt themselves with bad code! Sure, a few idiots will try to go pro once they've grasped the basics (and we've all see what happens then!), but it's a pretty low price to pay to encourage kids to take an interest in the field.
Take VB for example, the most hated language on slashdot. It was perfect for a broad range of application at the time, and was very easy to use. It was easy for a good developer to write good code in VB, unfortunately, it was also easy for a bad or inexperienced developer to write astonishingly bad code that still managed to work.
A novice could get started in VB with just a few hours of effort, and learn virtually on their own from there. They would eventually learn how to write good code, but the mess armatures working professionally (totally inappropriately) is what gave VB such a bad reputation. This wasn't the fault of the tool, it was the products amateurs produced with that tool that experienced developers objected to. Still, they blamed VB for the rash of bad code and not inexperienced developers.
Any tool that's easy for a novice to use now gets trashed by the elites afraid of a VB repeat. I remember seeing these same elitists bashing Java for being too easy to use! (As most of us here know, it's really hard to write good code in Java, and ridiculously easy to write bad code. The barriers to entry there are much higher than good old VB, still, they persisted...)
So, yes, I do see this as elitism. Raising artificial barriers is a hallmark of elitism, and that seems to be exactly what you're advocating with the gun analogy.
Really, I don't see how anyone can learn to write good code without making lots of mistakes and, of course, writing lots of unmaintainable, bug-ridden, code. I've taught computer programming for years, and I've found no better way to teach students good practices aside from first letting them fail, and later offering advice. Give them examples to emulate and problems that force them to manage complexity and they will improve. Give them a list of best-practices, however, and you'll see some really interesting failures that manage to conform to the letter! They simply won't understand the purpose or value of [whatever] until they actually see how it benefits them.
Writing code is skill, like painting; and the slashdot crowd wants to take away the novice's crayons just in case they try to hang their pictures in the front-room instead of on the fridge. (All the while lobbying to have crayons outlawed!) After all, only professions should be allowed to paint, considering how difficult planning a painting actually is...
The point was that PHP's scope rule can't really be called "a mess", considering their simplicity. I was offering an example of scope rules that may more legitimately be called "a mess".
Code written in C# or Java for example will be inherently better because more errors are checked at compile time
Don't be silly. Java's overzealous checked exceptions, for example, lead to *worse* code as lazy developers code to satisfy the compiler, rather than write efficient code. How often have you seen (or done this yourself) large blocks of code wrapped up in a try/catch that ignores whatever exception that might be raised just to get around the compiler (to test something out, or even just to keep the code legible?)
I won't even start on the problems caused by Javas overly strict type system and the code-horrors that nightmare has forced on the world. (Java generics are a non-solution to a problem caused by bad language design.)
Just trying to keep the code readable while still satisfying the compiler means that lazy developers will do remarkably stupid things just to keep their code short or easy to read (in an effort to combat the cruft and clutter). Using string where they should use stringbuilder, for example, is a common problem caused by the developer trying to save a few lines of code and avoid littering clean-looking lines by sprinkling toString() all over.
This bizarre belief that you can trust the compiler to spin your crap code in to gold needs to die. Bad code is bad and no overly strict compile-time checking is going to change that.
I've seen WAY too much bad Java code to believe your claims that the language will help them write better code. The same goes for C#. You've not see spaghetti-code until you've seen a large Java or C# project! Those languages practically encourage you to create a personal class dependency hell -- not surprisingly, in an effort to create additional levels of abstraction to avoid writing more compiler-placating cruft!
I think that one of the reasons that PHP is criticised so much is that anyone can shove up a.php file and it'll run straight away
This. For some bizarre reason slashdotters absolutely HATE any tool that is easy to use.
Granted, PHP has more that it's fair share of warts; still, the flaws it has certainly don't warrant the enmity you see for the language on this and other tech sites.
Really, it's VB6 all over again. Of course, this time, the same zealots who bashed VB for its poor performance are the same zealots promoting Python at every opportunity! So, why did VB get nothing but hate while Python somehow maintains a decent reputation? Because any idiot with some spare time can write a half-way functional application in VB where it takes considerably more effort to do the same in Python. VB was so easy to use, beginners could get up and running with little more than a short tutorial. (This lead to some seriously amateur code, but who *didn't* write crap code when they were first learning?) Those zealots didn't care that VB was a great tool for things like CRUD apps, all they knew was that if beginners could use it, it must be bad!
PHP is the same. It's astonishingly easy to use, and so it attracts those evil novices slashdotters hate so very much. (How dare they write their own code!)
Bash PHP, and you may chase off a few of those nasty beginners. Sure, it means they'll be forced to use more complicated tools, but that's okay with them -- both their job security and their tiny fragile egos are wrapped up in their ability to write computer programs. (Just don't try to maintain the garbage they hack together! Those sorts of developers are highly prone to jump on the latest fad, claiming it's the future or "essential for serious development" without reason, just to so that they can feel superior to anyone who doesn't buy in to the latest buzzword fad.)
Software half-baked? LOL, way to parrot nonsense that you obviously know nothing about!
Compare the Playbook to any Android tablet, and tell me if you still think QNX is "half-baked".
It's light years beyond Android and iOS. That half-baked bullshit was because it shipped without native email (and for good reason, as far as business clients were concerned.) Everyone who's ever bought a playbook has had email from day one. Get real.
Enjoy your half-baked, bug-ridden, insecure Android tablet. Call me when the UI even comes close to what we've had on the Playbook. I won't be holding my breath.
20% is FAR above their actual desktop market share. The figures I have from October 2011 put Macs at 6.45% (Windows is at 92.23%).
As for WMV, you can play those on OSX with VLC, Flip4Mac or Windows Media Player 9 for Mac.
Alternately, people who want to use obscure operating systems can always make use of the computer access provided by their institution. You'll find most schools offer student accessible computers in dorms, libraries, and many other places around campus.
Again, it's not the schools responsibility to make sure that you can competently operate your personal computer or to make sure that any required software will run on whatever obscure OS you want to run.
Why should the university cater to them? They make up such a small portion of the personal computer market, they're not really worth taking the extra time to support. Should instructors go out of their way to accommodate Linux users? How about JNode or KolibriOS users? Get real.
It's the student's responsibility to make sure that they have access to required resources, be they text books or software, not that of the university.
Besides, it's not like students can't make use of the computer access provided by the institution if they insist on using some obscure operating system on their personal equipment.
University of Phoenix is a real University, it is well above vocational schools.
They're regionally accredited (North Central), which is far better than many vocational/trade schools. (You'll find that many small tech schools only maintain state approval.)
While I don't know if their reputation is undeserved, they did suffer from quite a bit of unwarranted criticism just for being one of the first online-only correspondence schools. Needless to say, distance education has come a long way since then, at least as far as public opinion is concerned. Today, many traditional institutions offer a wide variety of distance-only degree programs.
Reputation aside, there are many other reasons to avoid University of Phoenix, the most obvious being their outrageous tuition which is higher than many traditional private colleges and universities.
I don't see how. My guess is you just got a bad definition -- hey, you learned it on slashdot after all:)
"Begging the question" is a very similar to the "circular argument", which the quote we're talking about superficially resembles. In this case, however, the poster is claiming that "python makes a good beginner language" because these various institutions say that it is. (Hence, it's an appeal to authority, and not a circular argument or begging the question)
You can think of "begging the question" as "begging the question to support the premise" In that for a premise to "beg the question" the truth of that premise rests on the conclusion. (That is, for the premise to be valid, it must assume the conclusion of the argument.)
I was not talking about ON n GOTO... I was talking about various "event handler" type routines, like ON PLAY or ON STRING. These only exist in GOTO/GOSUB versions.
Well, ON [event] really only exists in QBasic, you'll find that more modern structured BASIC variations handle events more sensibly (though you won't find ON PLAY and the like outside of QB) Of course, events aren't something that you teach to beginners unless you're teaching at a trade school. There, you likely aren't concerned about teaching a student to program as you are hoping they pick that up as you walk them through the "text book" so that they "know how to use [tool x]". Yuck. (Events come much later, long after they've written a few event loops already. Doing so otherwise is like expecting them to fully understand linked-lists because they've used the equivalent object in Java. [Madness!])
Well, why array isn't a type, then? It's a type everywhere else.
Hence my disclaimer. Arrays are collections of primitives of some type, but not really a type themselves (if that make sense) Think of them like arrays in C, where the identifier is just a pointer to some type, except that BASIC doesn't have pointers in the proper sense. (Wow, I've made this even less clear. Horray!) Anyhow, I can't speak to more modern structured BASICs where this feature may very well be present. (Even to ones I've used as this isn't something I'd be covering while still in BASIC.)
if the language cannot handle it, it's not good for much.
Well, the language can handle it, though it can be a bit messy (at least in older BASIC variations). Still, whatever limitations this puts on the users, it certainly doesn't limit the language so significantly that it's useless for the purpose that I'm proposing it be used for (as a beginners language).
Now, if the structured variation you're using supports records, making linked-lists isn't as nasty or illegible as it is in QB. Still, by the time I'm teaching about those structures, we've already moved past BASIC (to C, of course, the greatest language for teaching data structures!) Heh, if you think teaching linked-lists in BASIC would be bad, you should try doing it in Java!:)
Anyhow, if I get your meaning it's not that BASICs syntax is necessarily inconsistent -- only that it differs significantly from other structured languages? Well, I can't argue that.
Still, I haven't seen this as an impediment to learning other languages. Quite the contrary, in fact. A billion years ago when I tutored VAX assembly, I'd have students work out an assignment in unstructured BASIC first, then convert their solution to assembly. It was a remarkably effective technique which turned more than one students' grade around.
We we move to C, to keep with your examples, I've found that students find things like file handles obvious, having worked with the # thing in BASIC. The # system is great for learning -- it eliminates questions like "so if I print this to the screen, will I see what's in the file?" (#1 isn't obviously a variable, but it does clearly represent the open file, so the question never comes up. #1 is just "the first file opened" in their minds. Once we get to C, the idea of a file handle is obvious, again avoiding the question!)
Done right, most students pick-up C in a few days, once they've been introduced to the syntax. The details come as they need them, but it's not nearly the struggle it would be had we started with the language. (Why a struggle? Even in C there is too much "cruft" for the beginner -- that is, necessary code that the student has no hope of understanding for several weeks or months -- magic code, if you will. When they can understand everything they've typed, it's empowering. When they can't, it's disheartening.)
Anyhow, that's really one of the greatest advantages of BASIC as a beginners language. There isn't
So long as I don't try to encrypt removable storage it is plenty secure though.
You still can, just use the stronger Device Password & Device Key option, like you should anyway.
Both iOS and Android may be a full generation or two ahead in terms of user interface
Not for long. RIM is already a generation ahead in terms of UI on their tablet. (They've been ahead of iOS on notifications and a few other things on phones basically forever:) ) The BB10 phones in 2012 should put BB phones well ahead of iOS and (current) Android phones in terms of UI sometime this coming fall. [Well, I think they're ahead now (I love the OS7 UI, the 9900 is about the best smartphone I've ever used) but I understand why they're considered "behind" here.] BB10, however, represents the future, bringing a new standard in stability, security, and multi-tasking.
Hang in there, RIM may be down, but they're certainly not out.
Why should it be? Are there other functions that return a handle to a resource? OPEN works the same for resources other than files (in variations I'm familiar with anyhow). That's consistent, not inconsistent.
Ditto for NAME, and why isn't it RENAME?
Why isn't it MOVE? I don't see what this has to do with consistency?
Why the special syntax... for all graphics primitives
This is the one I agree with, though it's the only place where I've found the syntax to be irregular. (This seems limited to only a few BASIC variations, however.)
What about all the ON... GOSUB... stuff, and why aren't there any structured programming equivalents that'd work with proper functions
You'll find that in structured BASICs, there are proper structured equivalents (CASE, in this case) that replace ON... GOTO type statements. (You'll find that ON... GOSUB is only included for compatibility with unstructured BASICs in older structured BASIC variations)
Why can't you have arrays of arrays
Again, I don't see anything wrong here. That is, arrays are arrays of primitives of some type. An array isn't a type, so to allow arrays of arrays would be inconsistent! (Er, that's terribly unclear and a bit misleading, but I think you can still figure out what I mean here.)
How do you organize a linked list, a tree, or any other structure where you need links between nodes?
This has absolutely nothing to do with "semantic consistency" and is instead a feature of the language that you think should be included. Anyhow, you can model those kinds of structures fairly easily with muti-dimensional arrays. Some BASICs even let you dynamically resize an array (you have to specify the largest size you'll think you need otherwise) Still, it can be done, though you may want to look elsewhere if you need those kinds of structures. (Present-day structured BASIC variations may have better support for creating these kinds of structures, but I'd need to look.)
If by "modern structured BASIC" you mean the like of VB
What? No, by structure BASIC I mean, well, what everyone else means when they say structured BASIC. That is, the procedural variations of the language (dig up an old structured BASIC textbook and you'll see what I mean). I don't know that I'd count VB, as it's so far removed from what most people consider structured BASIC that I don't know that a meaningful comparison could be made. VB had its place (for better or worse), but it isn't what I'm talking about here at all.
What's worse is that BASIC is very irregular in its syntax
Care to give examples? I can't think of any case where this is true save one exception (The LINE and CIRCLE routines from BASICA & QBasic) Though I'd hardly call that "very irregular".
Anyway, Python is a very reasonable middle ground.
Not really. Python is a nightmare as a beginning language -- and it's not terribly good as a production language. (I think we've had this discussion before. I doubt we'll come to any agreement here.)
(why the hell should a beginner understand the difference between e.g. INTEGER and LONG?)
When I teach beginner programming I spend a good bit of time talking about data types. Of course, I stick with a few simple types (int, float, boolean, character, & string). I find it helps to have a language that will yell at them a bit if they stray too far.
Sure, they may not need to know the difference between int and long early on, but I do take types all the way down to their binary representation. If they have any hope of using bit-wise operators, they'll need to know this. It's good to expose them to these concepts early, so that it's both not magical and not a surprise when it becomes important later. The last thing they need is to stop caring about types because the language is too forgiving (see: PHP).
most of it comes from legacy syntax like type characters
Oddly enough, it's one of the reasons that I prefer BASIC as an introductory language. Those goofy characters really are helpful for beginners. It may be an extra thing to remember, but they're also still learning about types. I find that they're a helpful reminder for students. (Remember Hungarian Notation? Yeah, that turned out to be a bad idea, but I've found that the $ behind strings is a good thing for beginners.)
Still, I don't see why this makes the syntax and grammar a mess? You'll need to explain yourself a bit more here.
I agree. Though I'd also add that those unstructured BASIC's on early-80's micros did a MUCH better job at preparing young programmers for moving on to assembly than did any other language at the time. (Thinking about how you structure and organize your code in an old unstructured BASIC mirrors how you'd structure and organize your assembly program.)
So... what is your "very good reason" (or reasons, as the case may be)
On #1, some time last year I used QBasic to write a simple program that parses an archive of email from our bounce address and creates a list of addresses to be removed from our contact list. I did it to annoy a co-worker, but it turned out to be a reasonably good choice. The code is really easy to understand, and took all of 10 minutes to put together (including hunting down a copy of qb45)
Sure, there are places where BASIC isn't well suited, but that's true of all languages. BASIC shines as a first programming language, and it's the only place where I really advocate it's use. That doesn't mean that it's not well-suited to other areas, it's that there are reasons external to the language that may inhibit its use.
Still, I want to know your "good reasons" as I've yet to see anyone articulate an actual "good reason".
What? VB is a different animal, surely, but it's not the structured part that you're students are having trouble with -- it's that it's event-driven. (Didn't everyone stop using VB by 2001?)
Unless your students are from the past, then whatever BASIC they learned is likely a structured basic, will all the features of any procedural language.
I've found that teaching beginners using BASIC to start to be much more productive than other language if for no other reason that it "stays out of the way" and doesn't force you to include code that a beginner has no hope of understanding.
Now, you say that "Microsoft recognized that there were massive problems with BASIC" but you haven't told me what they are. Structured BASIC is just as capable as any other structured language, it just happens to be very well suited for beginners (That's what the "B" in BASIC stands for, after all.)
So, what are these supposed "massive problems"? No one seems to be able to tell me what they are! I suspect people who make these claims are just parroting nonsense, and don't actually have a reason.
Rights are granted by default, not by enumeration.
Well said. This should be carved in stone and placed at the entrance of all government buildings, and branded on every one of our representatives.
I think it goes a bit further than you do. Article 19 of the United Nations Universal Declaration on Human Rights identifies two key components to freedom of expression; the right to opinion, and the right to expression. Stating:
Everyone has the right to freedom of opinion and expression; this right includes freedom to hold opinions without interference and to seek, receive and impart information and ideas through any media and regardless of frontiers.
A third component is implied here, the right to access to information, defining the right to accesses as including the rights to seek, receive and impart information and ideas. Without the unrestricted access to impart ideas and information, there is no point in seeking it out. Thus, the right to receive and impart information and ideas must be a necessary consequence of seeking.
These ideas about what constitute freedom of expression are the very basis by which the United Nations declared the internet a human right.
The right to freedom of opinion and expression is as much a fundamental right on its own accord as it is an 'enabler' of other rights, including economic, social and cultural rights, such as the right to education and the right to take part in cultural life and to enjoy the benefits of scientific progress and its applications, as well as civil and political rights, such as the rights to freedom of association and assembly. Thus, by acting as a catalyst for individuals to exercise their right to freedom of opinion and expression, the Internet also facilitates the realization of a range of other human rights.
while you have the right to speak, a "right to be heard" would infringe on others' rights to ignore you.
It's this sort of twisted thinking that leads to tyranny.
Like it or not, software design is actually *hard*.
Yes, it is. Of course, I don't expect an interested hobbyist to start off writing code that's easy to maintain any more that I expect a first year engineering student to be able to competently inspect a bridge. They've got to start somewhere, so why trash the tools that give them an easy start?
Python is not some magical bullet that means you can't write bad code.
I agree. It may even be the exact opposite of that :)
However, it is designed around good design. It encourages good indentation (where good == standardised), if nothing else.
I wouldn't go that far! Besides, they'll learn the importance of indenting code as they begin to write longer, less trivial programs in any language.
So it's got very little to do with elitism or scarying away newbies, as simply not giving somebody who's never seen a gun before a loaded handgun with the safety off
I disagree. If not for elitism, why artificially raise the bar? It's not like they can hurt themselves with bad code! Sure, a few idiots will try to go pro once they've grasped the basics (and we've all see what happens then!), but it's a pretty low price to pay to encourage kids to take an interest in the field.
Take VB for example, the most hated language on slashdot. It was perfect for a broad range of application at the time, and was very easy to use. It was easy for a good developer to write good code in VB, unfortunately, it was also easy for a bad or inexperienced developer to write astonishingly bad code that still managed to work.
A novice could get started in VB with just a few hours of effort, and learn virtually on their own from there. They would eventually learn how to write good code, but the mess armatures working professionally (totally inappropriately) is what gave VB such a bad reputation. This wasn't the fault of the tool, it was the products amateurs produced with that tool that experienced developers objected to. Still, they blamed VB for the rash of bad code and not inexperienced developers.
Any tool that's easy for a novice to use now gets trashed by the elites afraid of a VB repeat. I remember seeing these same elitists bashing Java for being too easy to use! (As most of us here know, it's really hard to write good code in Java, and ridiculously easy to write bad code. The barriers to entry there are much higher than good old VB, still, they persisted...)
So, yes, I do see this as elitism. Raising artificial barriers is a hallmark of elitism, and that seems to be exactly what you're advocating with the gun analogy.
Really, I don't see how anyone can learn to write good code without making lots of mistakes and, of course, writing lots of unmaintainable, bug-ridden, code. I've taught computer programming for years, and I've found no better way to teach students good practices aside from first letting them fail, and later offering advice. Give them examples to emulate and problems that force them to manage complexity and they will improve. Give them a list of best-practices, however, and you'll see some really interesting failures that manage to conform to the letter! They simply won't understand the purpose or value of [whatever] until they actually see how it benefits them.
Writing code is skill, like painting; and the slashdot crowd wants to take away the novice's crayons just in case they try to hang their pictures in the front-room instead of on the fridge. (All the while lobbying to have crayons outlawed!) After all, only professions should be allowed to paint, considering how difficult planning a painting actually is...
The point was that PHP's scope rule can't really be called "a mess", considering their simplicity. I was offering an example of scope rules that may more legitimately be called "a mess".
I'd hardly say that two ways to access globals makes PHP's scoping rules "a mess". Scope in PHP is mindlessly simple and perfectly obvious.
If you want to see some weird scope rules, take a look a javascript some time.
Code written in C# or Java for example will be inherently better because more errors are checked at compile time
Don't be silly. Java's overzealous checked exceptions, for example, lead to *worse* code as lazy developers code to satisfy the compiler, rather than write efficient code. How often have you seen (or done this yourself) large blocks of code wrapped up in a try/catch that ignores whatever exception that might be raised just to get around the compiler (to test something out, or even just to keep the code legible?)
I won't even start on the problems caused by Javas overly strict type system and the code-horrors that nightmare has forced on the world. (Java generics are a non-solution to a problem caused by bad language design.)
Just trying to keep the code readable while still satisfying the compiler means that lazy developers will do remarkably stupid things just to keep their code short or easy to read (in an effort to combat the cruft and clutter). Using string where they should use stringbuilder, for example, is a common problem caused by the developer trying to save a few lines of code and avoid littering clean-looking lines by sprinkling toString() all over.
This bizarre belief that you can trust the compiler to spin your crap code in to gold needs to die. Bad code is bad and no overly strict compile-time checking is going to change that.
I've seen WAY too much bad Java code to believe your claims that the language will help them write better code. The same goes for C#. You've not see spaghetti-code until you've seen a large Java or C# project! Those languages practically encourage you to create a personal class dependency hell -- not surprisingly, in an effort to create additional levels of abstraction to avoid writing more compiler-placating cruft!
What are talking about? Those scope rules make perfect sense!
Why, in your opinion, do you think "Scoping is a mess in PHP"?
I think that one of the reasons that PHP is criticised so much is that anyone can shove up a .php file and it'll run straight away
This. For some bizarre reason slashdotters absolutely HATE any tool that is easy to use.
Granted, PHP has more that it's fair share of warts; still, the flaws it has certainly don't warrant the enmity you see for the language on this and other tech sites.
Really, it's VB6 all over again. Of course, this time, the same zealots who bashed VB for its poor performance are the same zealots promoting Python at every opportunity! So, why did VB get nothing but hate while Python somehow maintains a decent reputation? Because any idiot with some spare time can write a half-way functional application in VB where it takes considerably more effort to do the same in Python. VB was so easy to use, beginners could get up and running with little more than a short tutorial. (This lead to some seriously amateur code, but who *didn't* write crap code when they were first learning?) Those zealots didn't care that VB was a great tool for things like CRUD apps, all they knew was that if beginners could use it, it must be bad!
PHP is the same. It's astonishingly easy to use, and so it attracts those evil novices slashdotters hate so very much. (How dare they write their own code!)
Bash PHP, and you may chase off a few of those nasty beginners. Sure, it means they'll be forced to use more complicated tools, but that's okay with them -- both their job security and their tiny fragile egos are wrapped up in their ability to write computer programs. (Just don't try to maintain the garbage they hack together! Those sorts of developers are highly prone to jump on the latest fad, claiming it's the future or "essential for serious development" without reason, just to so that they can feel superior to anyone who doesn't buy in to the latest buzzword fad.)
Software half-baked? LOL, way to parrot nonsense that you obviously know nothing about!
Compare the Playbook to any Android tablet, and tell me if you still think QNX is "half-baked".
It's light years beyond Android and iOS. That half-baked bullshit was because it shipped without native email (and for good reason, as far as business clients were concerned.) Everyone who's ever bought a playbook has had email from day one. Get real.
Enjoy your half-baked, bug-ridden, insecure Android tablet. Call me when the UI even comes close to what we've had on the Playbook. I won't be holding my breath.
20% is FAR above their actual desktop market share. The figures I have from October 2011 put Macs at 6.45% (Windows is at 92.23%).
As for WMV, you can play those on OSX with VLC, Flip4Mac or Windows Media Player 9 for Mac.
Alternately, people who want to use obscure operating systems can always make use of the computer access provided by their institution. You'll find most schools offer student accessible computers in dorms, libraries, and many other places around campus.
Again, it's not the schools responsibility to make sure that you can competently operate your personal computer or to make sure that any required software will run on whatever obscure OS you want to run.
How does it work for lectures with MacBooks?
Why should the university cater to them? They make up such a small portion of the personal computer market, they're not really worth taking the extra time to support. Should instructors go out of their way to accommodate Linux users? How about JNode or KolibriOS users? Get real.
It's the student's responsibility to make sure that they have access to required resources, be they text books or software, not that of the university.
Besides, it's not like students can't make use of the computer access provided by the institution if they insist on using some obscure operating system on their personal equipment.
University of Phoenix is a real University, it is well above vocational schools.
They're regionally accredited (North Central), which is far better than many vocational/trade schools. (You'll find that many small tech schools only maintain state approval.)
While I don't know if their reputation is undeserved, they did suffer from quite a bit of unwarranted criticism just for being one of the first online-only correspondence schools. Needless to say, distance education has come a long way since then, at least as far as public opinion is concerned. Today, many traditional institutions offer a wide variety of distance-only degree programs.
Reputation aside, there are many other reasons to avoid University of Phoenix, the most obvious being their outrageous tuition which is higher than many traditional private colleges and universities.
"A store not operated by Samsung used Apple's icons" is a BIG difference from "Samsung stole Apples Icons"
It's a lie.
I don't see how. My guess is you just got a bad definition -- hey, you learned it on slashdot after all :)
"Begging the question" is a very similar to the "circular argument", which the quote we're talking about superficially resembles. In this case, however, the poster is claiming that "python makes a good beginner language" because these various institutions say that it is. (Hence, it's an appeal to authority, and not a circular argument or begging the question)
You can think of "begging the question" as "begging the question to support the premise" In that for a premise to "beg the question" the truth of that premise rests on the conclusion. (That is, for the premise to be valid, it must assume the conclusion of the argument.)
No, it's not. The above is an example of an "appeal to authority".
I was not talking about ON n GOTO ... I was talking about various "event handler" type routines, like ON PLAY or ON STRING. These only exist in GOTO/GOSUB versions.
Well, ON [event] really only exists in QBasic, you'll find that more modern structured BASIC variations handle events more sensibly (though you won't find ON PLAY and the like outside of QB) Of course, events aren't something that you teach to beginners unless you're teaching at a trade school. There, you likely aren't concerned about teaching a student to program as you are hoping they pick that up as you walk them through the "text book" so that they "know how to use [tool x]". Yuck. (Events come much later, long after they've written a few event loops already. Doing so otherwise is like expecting them to fully understand linked-lists because they've used the equivalent object in Java. [Madness!])
Well, why array isn't a type, then? It's a type everywhere else.
Hence my disclaimer. Arrays are collections of primitives of some type, but not really a type themselves (if that make sense) Think of them like arrays in C, where the identifier is just a pointer to some type, except that BASIC doesn't have pointers in the proper sense. (Wow, I've made this even less clear. Horray!) Anyhow, I can't speak to more modern structured BASICs where this feature may very well be present. (Even to ones I've used as this isn't something I'd be covering while still in BASIC.)
if the language cannot handle it, it's not good for much.
Well, the language can handle it, though it can be a bit messy (at least in older BASIC variations). Still, whatever limitations this puts on the users, it certainly doesn't limit the language so significantly that it's useless for the purpose that I'm proposing it be used for (as a beginners language).
Now, if the structured variation you're using supports records, making linked-lists isn't as nasty or illegible as it is in QB. Still, by the time I'm teaching about those structures, we've already moved past BASIC (to C, of course, the greatest language for teaching data structures!) Heh, if you think teaching linked-lists in BASIC would be bad, you should try doing it in Java! :)
Anyhow, if I get your meaning it's not that BASICs syntax is necessarily inconsistent -- only that it differs significantly from other structured languages? Well, I can't argue that.
Still, I haven't seen this as an impediment to learning other languages. Quite the contrary, in fact. A billion years ago when I tutored VAX assembly, I'd have students work out an assignment in unstructured BASIC first, then convert their solution to assembly. It was a remarkably effective technique which turned more than one students' grade around.
We we move to C, to keep with your examples, I've found that students find things like file handles obvious, having worked with the # thing in BASIC. The # system is great for learning -- it eliminates questions like "so if I print this to the screen, will I see what's in the file?" (#1 isn't obviously a variable, but it does clearly represent the open file, so the question never comes up. #1 is just "the first file opened" in their minds. Once we get to C, the idea of a file handle is obvious, again avoiding the question!)
Done right, most students pick-up C in a few days, once they've been introduced to the syntax. The details come as they need them, but it's not nearly the struggle it would be had we started with the language. (Why a struggle? Even in C there is too much "cruft" for the beginner -- that is, necessary code that the student has no hope of understanding for several weeks or months -- magic code, if you will. When they can understand everything they've typed, it's empowering. When they can't, it's disheartening.)
Anyhow, that's really one of the greatest advantages of BASIC as a beginners language. There isn't
So long as I don't try to encrypt removable storage it is plenty secure though.
You still can, just use the stronger Device Password & Device Key option, like you should anyway.
Both iOS and Android may be a full generation or two ahead in terms of user interface
Not for long. RIM is already a generation ahead in terms of UI on their tablet. (They've been ahead of iOS on notifications and a few other things on phones basically forever :) ) The BB10 phones in 2012 should put BB phones well ahead of iOS and (current) Android phones in terms of UI sometime this coming fall. [Well, I think they're ahead now (I love the OS7 UI, the 9900 is about the best smartphone I've ever used) but I understand why they're considered "behind" here.] BB10, however, represents the future, bringing a new standard in stability, security, and multi-tasking.
Hang in there, RIM may be down, but they're certainly not out.
Pretty suspect you can't even point out one thing that is a "lie"
The "stole icons" claim with the AllThingsD link is a well-known lie. That's just one, I'm sure you can find more.
Why is OPEN a statement and not a function?
Why should it be? Are there other functions that return a handle to a resource? OPEN works the same for resources other than files (in variations I'm familiar with anyhow). That's consistent, not inconsistent.
Ditto for NAME, and why isn't it RENAME?
Why isn't it MOVE? I don't see what this has to do with consistency?
Why the special syntax ... for all graphics primitives
This is the one I agree with, though it's the only place where I've found the syntax to be irregular. (This seems limited to only a few BASIC variations, however.)
What about all the ON ... GOSUB ... stuff, and why aren't there any structured programming equivalents that'd work with proper functions
You'll find that in structured BASICs, there are proper structured equivalents (CASE, in this case) that replace ON ... GOTO type statements. (You'll find that ON ... GOSUB is only included for compatibility with unstructured BASICs in older structured BASIC variations)
Why can't you have arrays of arrays
Again, I don't see anything wrong here. That is, arrays are arrays of primitives of some type. An array isn't a type, so to allow arrays of arrays would be inconsistent! (Er, that's terribly unclear and a bit misleading, but I think you can still figure out what I mean here.)
How do you organize a linked list, a tree, or any other structure where you need links between nodes?
This has absolutely nothing to do with "semantic consistency" and is instead a feature of the language that you think should be included. Anyhow, you can model those kinds of structures fairly easily with muti-dimensional arrays. Some BASICs even let you dynamically resize an array (you have to specify the largest size you'll think you need otherwise) Still, it can be done, though you may want to look elsewhere if you need those kinds of structures. (Present-day structured BASIC variations may have better support for creating these kinds of structures, but I'd need to look.)
If by "modern structured BASIC" you mean the like of VB
What? No, by structure BASIC I mean, well, what everyone else means when they say structured BASIC. That is, the procedural variations of the language (dig up an old structured BASIC textbook and you'll see what I mean). I don't know that I'd count VB, as it's so far removed from what most people consider structured BASIC that I don't know that a meaningful comparison could be made. VB had its place (for better or worse), but it isn't what I'm talking about here at all.
What's worse is that BASIC is very irregular in its syntax
Care to give examples? I can't think of any case where this is true save one exception (The LINE and CIRCLE routines from BASICA & QBasic) Though I'd hardly call that "very irregular".
Anyway, Python is a very reasonable middle ground.
Not really. Python is a nightmare as a beginning language -- and it's not terribly good as a production language. (I think we've had this discussion before. I doubt we'll come to any agreement here.)
(why the hell should a beginner understand the difference between e.g. INTEGER and LONG?)
When I teach beginner programming I spend a good bit of time talking about data types. Of course, I stick with a few simple types (int, float, boolean, character, & string). I find it helps to have a language that will yell at them a bit if they stray too far.
Sure, they may not need to know the difference between int and long early on, but I do take types all the way down to their binary representation. If they have any hope of using bit-wise operators, they'll need to know this. It's good to expose them to these concepts early, so that it's both not magical and not a surprise when it becomes important later. The last thing they need is to stop caring about types because the language is too forgiving (see: PHP).
most of it comes from legacy syntax like type characters
Oddly enough, it's one of the reasons that I prefer BASIC as an introductory language. Those goofy characters really are helpful for beginners. It may be an extra thing to remember, but they're also still learning about types. I find that they're a helpful reminder for students. (Remember Hungarian Notation? Yeah, that turned out to be a bad idea, but I've found that the $ behind strings is a good thing for beginners.)
Still, I don't see why this makes the syntax and grammar a mess? You'll need to explain yourself a bit more here.
I agree. Though I'd also add that those unstructured BASIC's on early-80's micros did a MUCH better job at preparing young programmers for moving on to assembly than did any other language at the time. (Thinking about how you structure and organize your code in an old unstructured BASIC mirrors how you'd structure and organize your assembly program.)
So ... what is your "very good reason" (or reasons, as the case may be)
On #1, some time last year I used QBasic to write a simple program that parses an archive of email from our bounce address and creates a list of addresses to be removed from our contact list. I did it to annoy a co-worker, but it turned out to be a reasonably good choice. The code is really easy to understand, and took all of 10 minutes to put together (including hunting down a copy of qb45)
Sure, there are places where BASIC isn't well suited, but that's true of all languages. BASIC shines as a first programming language, and it's the only place where I really advocate it's use. That doesn't mean that it's not well-suited to other areas, it's that there are reasons external to the language that may inhibit its use.
Still, I want to know your "good reasons" as I've yet to see anyone articulate an actual "good reason".
What? VB is a different animal, surely, but it's not the structured part that you're students are having trouble with -- it's that it's event-driven. (Didn't everyone stop using VB by 2001?)
Unless your students are from the past, then whatever BASIC they learned is likely a structured basic, will all the features of any procedural language.
I've found that teaching beginners using BASIC to start to be much more productive than other language if for no other reason that it "stays out of the way" and doesn't force you to include code that a beginner has no hope of understanding.
Now, you say that "Microsoft recognized that there were massive problems with BASIC" but you haven't told me what they are. Structured BASIC is just as capable as any other structured language, it just happens to be very well suited for beginners (That's what the "B" in BASIC stands for, after all.)
So, what are these supposed "massive problems"? No one seems to be able to tell me what they are! I suspect people who make these claims are just parroting nonsense, and don't actually have a reason.
Structured BASIC has been around for almost 30 years. BASIC did not begin and end with your C64.