Talk:BASIC
From Wikipedia, the free encyclopedia
[edit] Essential Reading
Someone else here mentioned the book "Back to Basic" by John G. Kemeny and Thomas E Kurtz, the originators of basic. This book goes a LONG WAY towards resolving many of the myths perpetuated about Basic (it was always interpreted, etc.). It comes from the horse's mouth, so to speak, and it gives some surprising insights to the Basic language. For example, did you know that Qbasic and True Basic are fairly complete implementations of ANSI full Basic? Unfortunately, John Kemeny passed away in 1992.
This book is highly recommended reading for people here adding to the history section of this page.
--Samiam95124 21:48, 9 November 2005 (UTC)
The correct title is Back To BASIC: The History, Corruption, and Future of the Language. If you're talking about Dartmouth BASIC and its direct descendants, BASIC should always be capitalized, as it is an acronym, and it distinguishes the language from BASIC-like languages such as Microsoft's Visual Basic (a trade name). I agree, Kemeny and Kurtz's book should be required reading for anyone interested in BASIC programming and all who deride the language because their only exposure to it was a crippled, interpreted microcomputer version. Quicksilver 19:22, 11 November 2005 (UTC)
[edit] Backronym
The statement read "it was a backronym", but was later reversed. This is:
A. Completely irrelivant to the subject at hand ("what does BASIC stand for").
B. It say it is, then says it isn't. Need we be subjected to this sentence that debates with itself ?
This entire sentence belongs on the talk page. It is irrelivant to the subject at hand, and CERTAINLY does not belong in the INTRODUCTION. Think of it from the point of view of someone who knows nothing about Basic. How does this side argument reflect anything useful about the language ?
Respectfully, Ross, you guys have discussed this issue to death. I think it is more appropriate to discuss why this needs to be IN, that why it needs to be OUT.
Also, I deleted the comment about "not being based on Ogden's Basic book" because I am the one who said that. Now I'm taking it out. Basic is not a soft drink, either, but I don't see how that denial belongs at the top of the page, either.
--Samiam95124 21:15, 20 October 2005 (UTC)
[edit] BASIC's (former) great popularity
- BASIC was at one time the world's most popular programming language,
When and reference ? --User:Taw
- However, the Visual Basic programming language and its close relatives, which have diverged greatly from the original BASIC, are probably the most widely distributed languages in the world today due to their inclusion in every major Microsoft Office application, so BASIC's influence continues to be strong.
This sentence make no sense. First, being "the most widely distributed" is of no importance as compared to be language where actual programs are made, and second - Javascript is much more "widely distributed" than Basics thanks to webbrowsers. --User:Taw
Its clearly nonsense. The most realistic measure is number of active programmers, for which Basic in all forms is probally the most popular. The difficulty lies in measuring the number of programmers, attempts at which have failed. The most common attempt is "number of web hits" which simply gives the language that people are talking about right now, not necessarily using. By any estimation, Basic is runaway popular for small and demo programs.--Samiam95124 01:37, 17 Jun 2005 (UTC)
[edit] Scorned by professionals
- Despite its popularity, BASIC has been scorned by most computer professionals since shortly after the development of the first version. The disdain comes from the misconception that BASIC is a "slow interpreted unstructured language". However the first version of BASIC, Dartmouth BASIC, was not interpreted, and not particularly slow. All versions of Dartmouth BASIC and its direct descendants have been compilers, as are many modern dialects.
This is clearly anti-antibasic and not npov. If you think that majority of computer scientists are "misconcepted" you have to prove it. Quote from Jargon, which explains some issues:
BASIC /bay'-sic/ n. A programming language, originally designed for Dartmouth's experimental timesharing system in the early 1960s, which for many years was the leading cause of brain damage in proto-hackers. Edsger W. Dijkstra observed in "Selected Writings on Computing: A Personal Perspective" that "It is practically impossible to teach good programming style to students that have had prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." This is another case (like {Pascal}) of the cascading {lossage} that happens when a language deliberately designed as an educational toy gets taken too seriously. A novice can write short BASIC programs (on the order of 10-20 lines) very easily; writing anything longer (a) is very painful, and (b) encourages bad habits that will make it harder to use more powerful languages well. This wouldn't be so bad if historical accidents hadn't made BASIC so common on low-end micros in the 1980s. As it is, it probably ruined tens of thousands of potential wizards.
--User:Taw
The idea that "Basic ruins programmers for futher work" is attributed to Dijkstra. It isn't proven out by any actual studies, likely because the comment was bombast and not meant to be factual. Basic makes it easy to enter programming. It is also easy to LEAVE Basic and advance to better languages. All this makes Basic a great introductory language. Why this translates to scorn is beyond me, and I suspect a mystery to most reasonable people. --Samiam95124 20:36, 20 October 2005 (UTC)
- It isn't even borne out by Dijkstra's article in which he made a facetious comment about every major language current at the time bar his own favourite, Algol 60. -- Derek Ross | Talk 06:07, 12 November 2005 (UTC)
People can learn bad programming habits in any language, not just BASIC. The large number of buggy, bloated commercial programs written in C by professionals is proof enough! Quicksilver 19:56, 11 November 2005 (UTC)
[edit] BASICs slow performance(?)
Anyone claiming that their favourite language is faster or that someone else's is slower should post timings of the same algorithm written in both languages. Otherwise such discussion generate more heat than light. Kjwhitefoot 10:57:49, 2005-08-29 (UTC)
- The false reputation for BASIC's slow performance may be tied to the GE FORTRAN compiler for that hardware which placed the startup code at the beginning of the runtime tape and the shutdown code at the end resulting in an empty FORTRAN program taking a very long time to run. Dartmouth BASIC has never had this problem.1
I seriously doubt it has anything to do with some mainframes. Basics for PCs are also very slow. --User:Taw
- Since the early days of the personal computer, BASIC compilers, some of them generating code as fast as the fastest versions of Pascal and C, have made a comeback; but despite the addition of structured programming capabilities, their reputation remains.
Really ? Which basic compiler makes code "as fast as the fastest versions of Pascal and C" ? That would be very interesting to know. --User:Taw
PowerBASIC makes a BASIC compiler which outputs code with speed comparable to that of code output by fast PASCAL or C++ compilers. Don't know how it would compare with the fastest versions though. -- Derek Ross
- Some versions of the best-selling Visual Basic product line are also compiled, although Microsoft has altered Visual BASIC into a language minimally compatible with even early versions of Dartmouth BASIC.
"best-selling" ? That's enciclopedia, not an ad. --User:Taw
- "Best-selling" is a fine adjective for an encyclopedia article, especially when it had at some points in history as much as 70% of the market of all implementations of the language. It should be put back, because this statement is a simple, accurate statement of historically important facts (and I'm typing this on my Linux machine, so it's not because of any pro-MS bias on my part). --LDC
-
- Well, we can objectively state that by just giving exact figures, of course if there is such thing as "exact figures" in software, what I seriously doubt. --User:Taw
The reputation comes entirely from its common implementation as an interpreter. Aside from that, even a compiled Basic is not going to be fast, because users are encouraged to use strings for everything, which is not going to result in the best code. Nobody seems to care that Basic is slow, look at VB's lack of a compiler.--Samiam95124 01:41, 17 Jun 2005 (UTC)
- VB Does not lack a compiler. VB6 is compiled using the same back end as Microsoft C++. Kjwhitefoot 10:54:41, 2005-08-29 (UTC)
[edit] Unstructured program example origin
Re the unstructured star program...
- Question: What is the origin of this program? I recognize it, and seem to recall typing it in sometime in the early 1980s from a book by TAB publishing.
[edit] Bad programming habits
Could someone please give examples of the sort of bad habits that BASIC encourages in newbie programmers?
I wonder why I do not see anything like a manual of BASIC functions here. Would a BASIC tutorial on Wikipedia violate anyone's copyright? --User:Juuitchan
I think that the two main problems that led Dijkstra to his famous comments were 1) BASIC did not have proper function/procedure definition facilities, fully formed IF/THEN/ELSE or WHILE structures and therefore it was easy to write malformed code since one had to use GOTO quite often and it is difficult for a newbie to decide whether its use is properly structured or not. 2) Unlike other languages of the time, BASIC had a built in IDE and was intended for use directly on the computer. This was more likely to lead to "code first, think later" behaviour or even "code, test, code, test... " behaviour (no thinking involved) compared to other languages and that type of behaviour mostly leads to poor programs.
Point 1 doesn't apply to modern versions of BASIC and point 2 applies to just about all modern programming languages, so Dijkstra's comments, although understandable at the time, no longer have the same force. In my opinion, a modern BASIC like QBASIC is no more likely to lead newbie programmers into bad habits than any other language. --Derek Ross
Gotos, gotos, gotos, and maybe gotos. Largely erased from modern implementations, I say we let Basic off this particular hook, goto only Basics have been dead for a while.--Samiam95124 01:43, 17 Jun 2005 (UTC)
- Try using DASM on an average program and, lookie lookie, one third of all the CPU insturctions used are JUMPs, which are GOTO equivalents. The only diffirence between BASIC and all those other programming languages is that in BASIC, you can choose to do plenty of GOTOs, while in all the other programming languages, the compiler just does it for you... So much about BASIC being the cause of bloated programs.--DustWolf 15:43, 14 December 2005 (UTC)
[edit] Compiled/interpreted
History paragraph 3: Does anyone have a reference stating that BASIC started out as a compiled language? I've never heard that one before. Rlee0001 08:24 Jul 25, 2002 (PDT)
Jean Sammet (History of Programming languages) discusses this. Admittedly that book is hard to find now.--Samiam95124 20:42, 20 October 2005 (UTC)
Just for an explanation, that at the time BASIC was made, it wasn't made specifically for the concept of interpreter or compiler, so you have some characteristics of interpreters and some characteristics of compilers. Hence you are unlikely to come accross a book saying "BASIC is a compiler-driven language".
For one, the program first needed to be written down in a memory area, and then the RUN command executed, which included no debugging engine, and all of the BASIC instructions pretty much were (alternate names for) CPU instructions. That is Very simmilar to the way Intel uses microcode to execute normal instructions in their CPUs. And since binaries running on Intel processors are not considered to be interpreted (in the programming language sense), you can pretty much say that prefomance-wise BASIC was a compiler-driven language, even tho in all theory, it would probably still be an interpreter-driven language.--DustWolf 15:56, 14 December 2005 (UTC)
- <Sigh>. I have come across a book saying "BASIC is a compiler-driven language". It was written by Kemeny and Kurtz, the inventors of the language. It is called Back To BASIC: The History, Corruption, and Future of the Language. It explains how the very first version of BASIC (Dartmouth CardBASIC) was used before the Dartmouth Time Sharing System was ready. BASIC programs had to be entered on punch cards and fed into a punch card reader at that time. They were then compiled and executed.
- The book explains that once DTSS was introduced it was used to write the programs and RUN various different compilers (not just BASIC). When you typed RUN (which was a DTSS command, not a BASIC command), the DTSS would pick the correct compiler for the job -- ALGOL, FORTRAN, and BASIC were all available -- and compile and execute the program. BASIC was most definitely a compiled language until the introduction of DEC BASIC which was an interpreter. -- Derek Ross | Talk 20:13, 14 December 2005 (UTC)
[edit] Dialect links and upper case BASIC
I'm going to move the dialects in such a way that they are all suffixed with "programming language" for consistency as described in talk:programming language. Furthor, I propose that the acronym "BASIC" be capitalized consistently in all the dialect pages. Anyone have any objections? Rlee0001 00:12 Jul 29, 2002 (PDT)
- Seems like a good idea to me. Jeronimo
- I disagree. While the core BASIC language is properly all caps, the case does matter for product names. Therefore, it's valid capitalize in HP BASIC but not for HTBasic. ^_^ Of course, this could just be lingering bias from workin case-sensitive languages like C... Sean Duggan 11:02 Dec 07, 2004 (EST)
- Sean Duggan is 110% right, of course (how can this even be discussed... beats me). There are also some BASIC dialects where the dialect name is capitalized as well, such as ATARI BASIC (see, for example, De Re Atari, Ch.10). --Wernher 19:01, 7 Dec 2004 (UTC)
[edit] Article deterioration?
The first time I read this article back in 2001, it was incomplete but reasonably accurate. Looking at it in Summer 2002, I find it larger but much less accurate. There seem to have been a lot of myths and half-truths added to it. For instance the original Dartmouth BASIC was a compiler, not an interpreter. From a fairly early stage, it included proper procedures and function based on the FORTRAN ones, not just GOSUB and RETURN. There are other examples like this. Someone has written that most languages don't differentiate between procedures and functions. Really ??? Well that certainly hasn't true for most of the last forty years that BASIC has been around and even if it has become true lately, it hardly seems to be relevant.
When adding to the article, please act as if a lot of what you know about BASIC history is actually untrue. Even if you are sure of a fact you should check it before adding to the article, particularly if it conflicts with what already exists there. That way we may end up with a collection of facts rather than a collection of nonsense. -- Derek Ross
- Derek, I'm not an expert on the subject but I am one of the people who have been contributing to the article including some of the things that you are pointing out. Just as a matter of curiosity, are you sure that the original BASIC would have been a compiled language used for timesharing systems? That doesn't make sence. I've used some later (~mid-70s) time-shareing systems and the BASICs that were used were all interpreted. As you point out, IDE commands like LIST, NEW and SAVE are part of the language -- but how could a compiled language possibly have built in IDE commands? Furthor, why would you ever used a compiled language on a time-sharing machine? It seems that after you transmit the source tape into the machine, there would be a huge "compiler" overhead in terms of CPU time, before the program was ever executed. Or are you saying that the tape would have contained the binary of the compiled source? In which case the source still would need to have been compiled by the machine seperately. It just seems that timesharing and compiling doesn't mix well. I'm not saying your wrong or anything, you seem to know a lot more about it then I do. I was just curious. Also, I've read in several texts that basic is in fact the most popular language in existence.
http://www.digitalcentury.com/encyclo/update/BASIC.html
The above even mentions that the language was not only based on FORTRAN, but also on ALGOL. It also says that the language as it was originally created, allowed students to edit the program using an IDE, where commands could be executed immediately. That doesn't sound very compiled to me. I realize that the article in the URL above does state that the language was compiled. It just doesn't make sence. Enless only some of the commands were compiled where the IDE commands were not? I don't know. Anyways, I just wanted to let you know that I did do some research and that I had no intention of upsetting you view of history.
I used BASIC on a LEASCO time sharing system in 1969, there was nothing interactive about our use of it, we punched the source onto 8 bit paper tape and submitted the job to the remote data centre a 100 miles away. Whether it was compiled or not I don't know for sure but we were billed in CPU seconds and even very long jobs cost very little so i suspect that it was. In fact our principal cost was the long distance telephone call (300 baud acoustic modem). Might be able to find the reference card somewhere. Kjwhitefoot 11:03:49, 2005-08-29 (UTC)
[edit] Dartmouth BASIC compiled
I know it's difficult to believe but Dartmouth BASIC was compiled. Every time the user pressed return after typing in a line that single line was checked. If it didn't have a line number it was compiled and then executed in the current environment. If it had a line number it was compiled and added to the list of compiled statements. This is known as incremental compiling and it's routine in a time sharing environment nowadays although it was pretty revolutionary in 1964. Paper tape just didn't come into it. You could use paper tape to submit a program but you didn't have to. Like you I've used mid-1970s mainframes for BASIC programming and I know that not all BASIC translators were compilers but I can assure you that the Dartmouth one was, just as it says in the article you referenced. Re the other points about "most popular" -- that's probably true --; FORTRAN plus ALGOL -- that should be added to the article.
Finally please don't think I'm getting at you. I'm glad that someone is interested enough in BASIC to want to write about it. But I'll still bring up or change things I think need correcting. Just bear in mind that I get corrected all the time too. It's just part of working on Wikipedia. :) -- Derek Ross
[edit] Altair BASIC origin
195.186.243.65 wrote that
- Bill Gates, Paul Allen and Monte Davidoff ported BASIC from public domain sources to the MITS Altair microcomputer
This has been removed because, while it might be true, it's difficult to believe that there was a public domain 4K BASIC around that they could port from. If the sentence can be substantiated, it can be put back in -- Derek Ross 09:19 Aug 14, 2002 (PDT)
- Dr Dobb´s Journal started as a journal devoted to TinyBasic, a BASIC implementation done in assembler. Somebody might check out old issues and verify if it was public domain at the time and verify the publication date.
- It is entirely untrue. See the French history of Microsoft and other references. Microsoft developed and ran their Basic on a 8080 simulator running on a PDP-11 before they had access to an Altair at all, and this was in the very early years of the Altair.--Samiam95124 20:47, 20 October 2005 (UTC)
[edit] GNU/Fre/Open Source BASICs
Are there GNU BASIC compilers which directly compile to machine language?
- I found the following (using Google):
- http://xbasic.sourceforge.net/ XBasic
- http://lbpp.sourceforge.net/
- http://www.sunbeem.net/quickforward/
- -- Paul Ebermann 01:19 Sep 10, 2002 (UTC)
[edit] Dartmouth BASIC datatypes
Thanks for the information on Dartmouth BASIC datatypes, User:24.34.212.37, it's always good to have more since it is the BASIC. -- Derek Ross
- Derek -- I think it's me that you're thanking. (I'm new to this and not quite sure about how to get a link to my name the way you've got one. If anyone wants to point me in the right direction for some instructions on how to get myself attributed here by name instead of by IP address, email me at <rhs AT rhs.com>.) I can attest to the fact that original Dartmouth BASIC was compiled. I wasn't at Dartmouth at the time, but I was later, and I had courses taught by the creators of the language. By the time I was there, a version called "SBASIC" was in use, which provided structured IF... THEN... ELSE, SELECT... CASE, and some other niceties. SBASIC was a precompiler for the version 6 BASIC compiler. The version 7 compiler directly implemented all of the SBASIC improvements. One thing that was said above that I don't think is accurate is the bit about incremental compilation. We certainly didn't have incremental compilation on the Dartmouth Time Sharing system in the 1970s. Nothing was syntax checked or compiled until you gave the "RUN" command. If you entered text without line numbers, it was interpreted as a system command (e.g. "RUN", "SAVE", etc.), not as a BASIC statement.
- Well, thanks again, RHS. I'm interested in the history of Dartmouth BASIC and I like to read information like this so that we can make the article's historical section more accurate. When there is enough, I'd like us to to create a separate Dartmouth BASIC page. After all it's rather sad that we have a page for other BASICs of limited significance but none for the original. And if we're wrong about the incremental compilation part (or anything else), please change the article to reflect this.
[edit] Registering in Wikipedia
- Turning to your query, if you want to become a name rather than an IP address, follow these steps
-
- Log in via the link in the top right of the screen
- Fill in the page with details of your name, your nickname and anything else that you want to set.
- Save your preferences.
- That gives you a name, a user page which you can use to say a little about yourself (or nothing if you prefer), and a user talk page that other people can use to leave notes for you, ask questions, etc.
- To sign your name after a comment like this one, you type three ~ signs in a row while you are editing. The Wikipedia server will automatically change them to your user "nickname" and a link to your user page when it saves this page. If you type four ~ signs in a row, the server will also add the date and time when you made the modification which can be useful to others when they want to know when you asked a question or when you left a reply, for instance. -- Derek Ross 17:01, 27 Aug 2003 (UTC)
-
- Thanks Derek, I've created my account, set up a brief user page, added some pages to my watch list, and I'll try to check in every now and then. Rhsatrhs 00:38, 6 Sep 2003 (UTC)
[edit] Structured/unstructured examples
It's just occurred to me that, although their dialects differ, the structured/unstructured examples are almost identical in terms of structure. In fact both are well structured. The only difference is that one implements the structures using IF/THEN and GOTO whereas the other implements the same structures using DO/LOOP.
We really need the unstructured example to be less structured to make the point. -- Derek Ross 16:37, 18 Nov 2003 (UTC)
- Or do we, actually? Biased as I am (I did the recent modifications to the code example), as I see it, the example illustrates 1) the better structuring support you get from structured BASIC, and, 2) equally important, that a programmer who cares for easily identifiable structure in her/his code will often be able to impose this whether the language of choice/force supports it. --Wernher 03:37, 20 Nov 2003 (UTC)
- That said, it could be fun to add an example stub that goes to the extreme in what you said, i.e. a quite incomprehensible (but correct) BASIC stub :-) --W.
What is the difference between "structured" and "unstructured"? I was kind of offended, having grown up using Applesoft, that it was called "unstructured". Imho the example is really bad too. REPEAT$, STRING$, UCASE$, are functions specific to the language, and do not demonstrate that "non-structuredness". The only real difference in the program is the DO:LOOP structure, which is accomplished just as easily with the GOTO statements. It would help if someone defined what exactly is meant by "structured" (Applesoft has GOSUB, ON X GOTO, and DEF FN for functions). BASIC interpreters without line numbers just interpret them internally. Is that really enough to call the language "structured" vs "unstructured"? line numbers?
(Additionally, it is my opinion that data declaration is actually more of a step backward in terms of BASIC as a language.)--Ben 08:27, 18 Jun 2004 (UTC)
Firstly, you are right about the examples: both of them are structured (in the sense that Dijkstra defined) despite the fact that the first one uses GOTO statements and line numbers. We really need a better example of unstructuredness.
Secondly, the simplest definition of structuredness that I have seen is this. When a programmer rewrites the program as a flowchart, a structured program produces a flowchart with no crossing lines; an unstructured program doesn't. No crossing lines is good because it implies that the original program flow is easier to follow and thus the original program is easier to debug or to change at a later date. BASIC doesn't force programmers to program in this way any more than C does but it is certainly possible (and recommended) that they do so.
Structured programming also implies local variables. Unfortunately, early versions of BASIC (including Applesoft) did not support this concept and thus all variables were global. This has little or no effect on small programs but it does cause problems for larger programs as the number of variables that the programmer has to remember becomes bigger. It eventually becomes a near certainty that the programmer will create a new variable with the same name as an old one, leading to problems, if not to disaster. This not nearly so likely to happen with local variables which are cleared whenever their particular procedure has finished and so can have the same names as local variables in other procedures.
Lack of data declaration leads to a similar problem in that, as a program becomes larger, it becomes more and more likely that it will contain a mis-spelled variable name. This does not cause a problem when data declaration is compulsory, since BASIC complains that the programmer is using a new variable which has not been declared. However it does cause a problem when data declaration is optional since BASIC creates a new variable where one was not intended, leading to minor problems if the programmer is lucky and major problems if not. That is why data declaration is definitely a step forward. A nice thing about some dialects of BASIC (including Visual BASIC) is that you can choose whether you want compulsory declaration or not via the OPTION EXPLICIT command. Naturally it should always be turned on when writing large programs. -- Derek Ross | Talk 14:50, 2004 Jun 18 (UTC)
The way you are talking about it, to me it sounds like "structured programming" and "unstructured programming" are based on a 'style' of programming rather than the language? It doesn't seem like you can say Applesoft is unstructured, but you can say that the style often used is unstructured. Earlier BASIC languages (like Applesoft) often tempted the programmer to use an unstructured style, but there was nothing preventing them from using a structured style. Your example, while you make a good point, seems to be more concerned with the ease of use rather than the workings of the language. The only thing I can think of that would give the programmer a hard time when the program is running would be that having less control over the space that variables use could prove difficult if the program stored other data in the same area of memory. Declaring the variables ahead of time could help the programmer use the memory the way they want to. Other than that, those just seem to be gripes. BASIC isn't object-oriented so local variables and global variables don't matter to the finished product (right?), and neither does data declaration except possibly in the example I gave. If there is a BASIC language without functions, or gosubs, then I would call that 'unstructured'. Applesoft, I still think, is a structured language (now that I know more about it) it's just that it would be more difficult to program in a structured way, but it could be done, and the resulting compiled program and flowchart would be identical. --Ben 05:44, 30 Aug 2004 (UTC)
- You're quite right, Ben. It is a style of programming rather than anything to do with the language. We shouldn't say that a particular language is structured or unstructured -- only that people use it in an unstructured way. What people normally mean when they talk about a "structured" language is one that makes it easier to program in a structured style, or perhaps -- like Pascal -- makes it more difficult to program in an unstructured style. But as you say in your final comment, the results will depend more on the style of programming than the programming language. -- Derek Ross | Talk 06:33, 2004 Oct 4 (UTC)
[edit] Article credits to Nupedia/Fedorow
This was snipped from the main page:
Based on an article originally written for Nupedia by Peter Fedorow <fedorowpATyahoo.com>.
chocolateboy 09:33, 2 Jun 2004 (UTC)
This is not a vanity credit. It is actually a legal requirement. This article is based on a Nupedia article written by Peter Fedorow and we are only allowed to use it if Peter is credited in the article, since, unlike you, me and the rest of the Wikipedia editor/authors, he doesn't show up in the Page History as an author. I will replace it in the article. -- Derek Ross | Talk 16:54, 2 Jun 2004 (UTC)
- I would favor a policy here that forbids Wikipedia content that requires such a notice. How much Nupedia content remains in this article, anyway? - Bevo 18:11, 2 Jun 2004 (UTC)
More than you might expect. The overall structure of the article is unchanged and most of the work done on the article has been in the form of additions rather than modifications. Paragraphs from the Nupedia article still exist practically unchanged. Even where changes have been made they may well have consisted of moving things around rather than completely rewriting them. -- Derek Ross | Talk
- Apparently this article needs to be added to the list kept at http://en.wikipedia.org/wiki/Wikipedia:Nupedia_and_Wikipedia . In reviewing other Nupedia sourced articles, I don't see the exact pattern of attribution that is used here (especially the email address inclusion). I also see that the links to the original Nupedia articles are now deadends. Maybe we just need some uniformity of attribution style. - Bevo 19:48, 2 Jun 2004 (UTC)
[edit] POV statement
"such elitism is a recurring theme in the computer industry." I think that this statement is unessesarily POV. This is not a statement of truth, it's a statment indicating that someone (some author of this article I assume) feels that elitism is a recurring theme in the computer industry. It's an undisputed fact that goto statements can cause unnessessary confusion, the paper by Dijkstra simply pointed out why goto statements should be avoided in favor of higher level syntax. You probably won't find anyone these days that still disagrees with Dijkstra. This whole sentence needs to be scraped in my opinion.
- Almost immediately after its release, computer professionals started deriding BASIC as too slow and too simple;² such elitism is a recurring theme in the computer industry.
Should be rephrased:
- After it's release, several highly-respected computer professionals, notably Edsger W. Dijkstra, expressed thier opinions that the use of goto statements, which existed in BASIC, promoted poor programming practices. Some also derided BASIC as too slow and too simple.²
Let me know what you all think. I think this rewording helps make the sentence much les POV. If no one objects, I will add it to the article shortly. — マイケル ₪ 20:18, Aug 20, 2004 (UTC)
- Your first replacement statement is true of all 1960s programming languages, so if it's worth putting in the BASIC article, it's worth putting in the others too. As for your second statement, Dijkstra derided just about every language that he knew about for one reason or another. So perhaps we should add that into every other language that he mentioned in his SIGPLAN article too. If you don't agree, it would be nice to hear why you think that BASIC should be an exception. -- Derek Ross | Talk 15:43, 2004 Aug 23 (UTC)
-
- That's not the point. The point is there was a POV statement. I rephrased it so that it was not a POV. If you think it could use some adjusting, fine, but I think it is worth mentioning what critics had to say about BASIC. It seems to me that the statement was included in the article in the first place because someone had confused two separate papers written by Dijsktra. One which outlines many problems he saw with languages in general, and then a more in depth paper which only dealt with the use of goto statements in general. Now, I personally think that it would be better to outline more specific criticisms of BASIC. Dijsktra's statements as currently sourced do not consist of the bulk of serious criticisms imho. I don't think the second paper he wrote was meant to be taken as seriously as some people take it. The first, involving goto statements, clearly was meant to be taken seriously though. Now, I'm sure he wasn't the only one criticizing BASIC, so including only reference to his criticism of BASIC, and then claiming criticism of BASIC is elitism which runs rampant is completely and utterly POV. It's irrelevant weather elitism did or did not exist in the computer industry, elitism exists everywhere, in any industry. Also, to point out a case of elitism as criticism and then dismiss all criticism as elitism, is a straw man argument. In any case, I was more concerned with removing the POV statement, which I did. If you can find a better way to phrase the criticism section, you are more than welcome to have at it. — マイケル ₪ 18:57, Aug 23, 2004 (UTC)
-
-
- Fair enough (I actually agreed with your point and that was why I didn't bring it up -- I just wanted to change the way that you were tackling it) but the POV could have been most easily fixed by removing the clause about elitism. It wasn't really necessary to repeat vaguely negative information (which appears elsewhere in the article in more detailed form in any case). All that does is change the POV and we actually want to remove it. -- Derek Ross | Talk 00:12, 2004 Aug 24 (UTC)
-
-
-
- You should note that BASIC was not particularly intended as a beginners language. In their book "Back to BASIC", the designers make it clear that it was intended as a language for use by all the students at Dartmouth, including those non-technical humanities-type students who nevertheless wished to do simple programming without having to learn more about computers than absolutely necessary. -- Derek Ross | Talk 00:12, 2004 Aug 24 (UTC)
-
-
- Also, the reason it is worth including Dijsktra criticism of goto statements is the following:
- Dijsktra believed that the use of goto statements encouraged poor programming practices. He later stated his belief that people who learn programming via BASIC pick up such poor programming practices, that they can never be good programmers. It is my impression that goto statements were the root of his second criticism. I could be wrong of course, but this seems logical. I think my new rephrasing of this section is less POV than the previous version, and provides better context for these reasons. I agree it could probably use a little more work, but it is certainly an improvement, since it is not longer POV. — マイケル ₪ 19:12, Aug 23, 2004 (UTC)
-
-
- I agree that the reason that Dijkstra criticised BASIC was because it led its users "into bad programming habits". However having read a fair bit of the man's writing, I would hazard a guess that although he disliked them, it wasn't so much the BASIC GOTOs that he was thinking of (since they were a feature of nearly every programming language at the time); it was more the BASIC online IDE (extremely unusual at the time) that was the problem, since like most modern IDEs, it encourages thoughtless coding. Dijkstra was very much in favour of mathematical design of the algorithm followed by coding of the program. He disliked the mindless "code, test, code, test, code, test, etc." style of programming which IDEs encourage and this in my opinion is the reason why he said the BASIC programmers had been "mentally mutilated". To some extent I would agree with him. However I think that the mutilation is just as likely if you start programming via an IDE in FORTRAN, ALGOL or C since it is the IDE which encourages the really bad programming habits, not so much the language constructs. I doubt that Dijkstra liked that aspect of the modern programming paradigm at all. -- Derek Ross | Talk 00:12, 2004 Aug 24 (UTC)
-
[edit] backronym, not acronym, right?
From the Jargon File:
- Note: the name is commonly parsed as Beginner's All-purpose Symbolic Instruction Code, but this is a backronym. BASIC was originally named Basic, simply because it was a simple and basic programming language. Because most programming language names were in fact acronyms, BASIC was often capitalized just out of habit or to be silly. No acronym for BASIC originally existed or was intended (as one can verify by reading texts through the early 1970s). Later, around the mid-1970s, people began to make up backronyms for BASIC because they weren't sure. Beginner's All-purpose Symbolic Instruction Code is the one that caught on.
func(talk) 12:26, 3 Oct 2004 (UTC)
Whoops, never mind. The most recent version of the Jargon file has apparently changed its mind:
- BASIC stands for “Beginner's All-purpose Symbolic Instruction Code”. Earlier versions of this entry claiming this was a later backronym were incorrect. [1]
It's a bit annoying that they don't cite any sources... (but then again, neither does Wikipedia most of the time).
func(talk) 04:15, 4 Oct 2004 (UTC)
<sigh>, Forget the Jargon file -- Use The Source, Luke. In this case the appropriate source is the original Dartmouth BASIC manual written in October 1964 which states on page 2 that BASIC stands for Beginners All-purpose Symbolic Instruction Code. -- Derek Ross | Talk 06:03, 2004 Oct 4 (UTC)
- The weird thing about this is that during the last 4 or 5 years or so, I have heard at least 6 unrelated people in completely different contexts refer to BASIC as a backronym or state that it isn't a proper acronym. This is an odd thing for there to be a sort-of urban legend about. func(talk) 13:44, 4 Oct 2004 (UTC)
Well, there are three types of acronymic item: those where the name was created from a phrase which already existed, like NATO; those where the word was created at the same time as its acronymic phrase, like BASIC; and those where the phrase was created for an existing word like ACME which is supposedly an acronym for American Company Making Everything but which is actually a Greek word meaning highest point. The first two types are commonly thought of as true acronyms, natural or contrived, whereas the last type is a backronym since the true origin of its word is unrelated to its acronymic phrase. I can see that people might argue that the last two types were similar though, so perhaps that explains why some people don't think that BASIC is a proper acronym. -- Derek Ross | Talk 14:51, 2004 Oct 4 (UTC)
- After performing some google-hit tests, I think this might be notable enough an error to comment on in the article. What do you think about adding something like this somewhere:
-
- Several versions of the popular Jargon File once claimed that BASIC is a backronym created in the 1970s, (recent versions have corrected this). Evidence from the original Dartmouth BASIC manual (1964) show this to not be true, but numerous online dictionaries and reference works on the Internet have now proliferated the earlier Jargon File's error.
- func(talk) 16:18, 4 Oct 2004 (UTC)
-
-
- Sounds good to me. - [[User:Bevo|Bevo]] 17:27, 4 Oct 2004 (UTC)
-
- Yes, that seems reasonable. A small quibble -- please change "show this to not be true" to "show this to be untrue". It sounds better. -- Derek Ross | Talk 17:52, 2004 Oct 4 (UTC)
[edit] Preformatted text's column widths
To rationalize my recent edit where I reinserted one horizontal spc char between the columns of the preformatted (ASCII, nonproportional font) 'Relational operators' section: I just did it from the -eh- conviction - that a definition table should have noticably more space between its columns than between intracolumn 'definee-definiter' pairs. In this case, four spaces vs two is the minimum, I think. --Wernher 17:55, 18 Dec 2004 (UTC)
[edit] Upper index bounds
- DIM myIntArray (100) AS INTEGER
- Depending on the dialect of BASIC and use of the Option Base statement, values can range from myIntArray(0) to myIntArr(100), from myIntArr(1) to myIntArr(100) or from myIntArray(LowInteger) to myIntArray(HighInteger).
I'm no BASIC expert, but wouldn't this declare an array indexed between 0 (or 1) and 99? 66.92.237.111 19:47, 20 Feb 2005 (UTC)
- I can assure you that it wouldn't. -- Derek Ross | Talk 05:05, Feb 21, 2005 (UTC)
[edit] My 2 cents on a couple of points
First off, I saw a early 1980's documentary a few years back which contained an interview with K&K. One of them (I can't remember which) stated that a large number of students were having difficulty learning "progamming concepts" when FORTRAN was their first computer language. So they (K&K) originally created BASIC as a student's learning language.
- They go into more detail about this in their book Back to BASIC. Yes, one of the aims was to use it as an easy-to-learn first language for beginner Comp. Sci. students but it was also intended as an easy-to-use language for art and humanities students who would never be expected to learn anything else. Remember that at that time FORTRAN could not handle text (unless encoded as numbers) which made it extremely difficult to use for artistic purposes. -- Derek Ross | Talk 01:26, May 16, 2005 (UTC)
p.s. Prior to BASIC, almost every computer science made sure the student knew some COBOL and FORTRAN so learning BASIC first was originally seen as a good thing. There are people in the field who believe that once your mind has been infected with BASIC, you're forever screwed as a progammer. (I don't believe this by the way)
- Glad to hear it. The big reason why BASIC was supposed to screw you up was because of the IDE which supposedly led to thoughtless "code first, design later" programs. Nowadays all languages have IDEs which allow you to "code first, design later" so I guess that we are all screwed!
BASIC is still evolving and one of the biggest changes happened when "Visual BASIC 6" morphed into "Visual BASIC .Net". Prior to ".NET" it was possible to DIM an array from any number to any higher number. When Microsoft developed "Visual Studio.NET" they wanted to be able to easily link object files produced by one language with object files produced by any other language. Since vanilla C and C++ require all arrays to be dimmed from subscript zero, then BASIC would be forced to do the same. (Other operating systems don't pass a pointer to an array but rather a pointer to an array descriptor; this can be handy if you want to do run-time bounds checking. I don't know if MS considered this but they probably realized there is more lines of C/C++ code in production and decided it was easier to force the BASIC developers to change rather than the C/C++ developers but this is just conjecture on my part. On the flip side, lots of code in .NET is only compiled to MSIL (Microsoft Intermediate Language) rather than x86 binary and maybe their decision is related to this)
--Neilrieck 22:40, 2005 May 15 (UTC)
- I know what you mean. This C-like array thing really puzzles me. But it's got nothing to do with object code compatibility. It's easy to write a compiler so that it translates an array definition like DIM A[5 TO 7, -15 TO 8] into DIM A[0 TO 2, 0 TO 23] and automatically adds or subtracts a constant offset to any references that appear. In fact even with the C compiler or the VB.NET one, it has to translate DIM A[0 TO 2, 0 TO 23] into A[0 TO 71] and fix up all the references so that they point to the right element. So there is no technical reason why they couldn't have carried on with arbitrary array bases in VB.NET. A properly written compiler would still produce object code which was totally compatible with any of the other .NET languages whether the object language is x86 or MSIL. -- Derek Ross | Talk 01:26, May 16, 2005 (UTC)
Paul Vick, a Technical Lead for Visual Basic.Net, gives a somewhat disapointing explanation in his Panopticon Central blog. According to him, although the .Net CLR (Common Language Runtime) had two types of arrays to suit both the VB and the C camps (one that allowed arbitrary lower bounds, one optimized for zero bounds), the VB.Net team chose to use the zero based array model for reasons of interoperability... -- Branco Medeiros
That's rather a sad explanation. Even now it would be possible to write a separate preprocessor which went through a VB.NET project remapping all arrays with arbitrary lower bounds to zero lower bound equivalents. Why wasn't that done as an integral part of the IDE ? Even the VB6 -> VB.NET convertor utility doesn't do it and the excuse given on that blog won't wash for it since it's a source to source convertor. -- Derek Ross | Talk 2 July 2005 18:49 (UTC)
Delphi is a Pascal dialect and lets you not only set the bounds on the index of an array but to use a newly defined ordinal type to do so. The latest Delphi can compile to .NET, so what problems would be caused by allowing VB.NET to do the same? Kjwhitefoot 21:06:11, 2005-09-06 (UTC)
[edit] Note on move
I undid Eyu100 (talk • contribs)'s move of this article to BASIC (programming language) because: (a) this is a fairly major article and so such a move should be discussed beforehand, and (b) because Eyu100 did not bother to fix the many links pointing to the old title (i.e., almost all of them), nor any of the broken redirects. -- Hadal 04:40, 17 Jun 2005 (UTC)
- Agreed -- I was just about to do the same. Note also that the title as it stands is in conformance with Wikipedia established practice -- see Ada programming language, C programming language, Lisp programming language, Python programming language. --FOo 04:42, 17 Jun 2005 (UTC)
[edit] Missing dialect
Just noticed there's a missing dialect reference, though there is a wikipedia node already, BBC_BASIC.
- It's included in List of BASIC dialects and List of BASIC dialects by platform. This article isn't trying to include every dialect as that would be a duplication of those lists.-gadfium 19:38, 26 August 2005 (UTC)
[edit] Peter Fedorow
- I removed the following sentence from the article: Based on an article originally written for Nupedia by Peter Fedorow <fedorowpATyahoo.com>, licensed under the GNU Free Documentation License. As far as I can tell there has never been an article on BASIC on Nupedia (neither finished, in-progress or on the chalkboard). —R. Koot 21:30, 5 December 2005 (UTC)
- Yeah thats true since there's no mention of BASIC at http://nupedia.8media.org/newest.phtml , I also removed this reference from Wikipedia:Nupedia_and_Wikipedia article. 202.65.149.2 13:40, 17 January 2006 (UTC)
- Oops, my apologies for reverting you since it seems you may be right; however, the claim of a link goes back as far as it's possible to know: the earliest (surviving) version of this page. OTOH, that version only claims it was written for Nupedia, not on it - maybe it was never actually submitted, and it was the author who put it here, rather than someone using the GFDL? All a bit academic, I know, but kinda interesting, in a vague way... - IMSoP 13:51, 17 January 2006 (UTC)
- This seems to be the most likely explanaition. I'll try to contact him. —Ruud 13:59, 17 January 2006 (UTC)
- Oops, my apologies for reverting you since it seems you may be right; however, the claim of a link goes back as far as it's possible to know: the earliest (surviving) version of this page. OTOH, that version only claims it was written for Nupedia, not on it - maybe it was never actually submitted, and it was the author who put it here, rather than someone using the GFDL? All a bit academic, I know, but kinda interesting, in a vague way... - IMSoP 13:51, 17 January 2006 (UTC)
- Yeah thats true since there's no mention of BASIC at http://nupedia.8media.org/newest.phtml , I also removed this reference from Wikipedia:Nupedia_and_Wikipedia article. 202.65.149.2 13:40, 17 January 2006 (UTC)
[edit] Pictures
This page looks like a tetris game. The images are all either blue or black blocks, in a uniform size. It could do with some morevaried sizes, and more main sections with less subsections. MichaelBillington 05:23, 12 June 2006 (UTC)
[edit] Hello World
Does anyone besides me think there should be a Hello World program listed on this article that is not just an image?
10 PRINT "Hello World"
Or for some people:
10 PRINT "Hello World" 20 GOTO 10