Talk:BASIC
BASIC was one of the Engineering and technology good articles, but it has been removed from the list. There are suggestions below for improving the article to meet the good article criteria. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake. | ||||||||||||||||
| ||||||||||||||||
Current status: Delisted good article |
Computing B‑class Top‑importance | ||||||||||
|
This article has been mentioned by a media organization:
|
Computer science B‑class Mid‑importance | |||||||||||||||||
|
Screenshots
Why does the first screenshot show Atari Basic and not the famous C64 Basic start screen? 92.105.10.244 (talk) 10:13, 6 December 2009 (UTC)
Text Clash
On my computer, at the top of the History section the "[Edit]" text overlaps the word "special-", pushed there I think, by the image. I don't know how to fix this, so I'm mentioning it here. Dinoceras (talk) 09:32, 9 November 2009 (UTC)
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)
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)
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)
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)
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)
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.
Bad programming habits
Could someone please give examples of the sort of bad habits that BASIC encourages in newbie programmers? --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)
- I'd argue that it's less the problem of GOTO, more the wierd "line number" based format of a lot of primitive (low-RAM, etc) BASICs. QBASIC doesn't get around the issue so much by deprecating GOTO as obsoleting (though not necessarily removing) line numbers and out-and-out linear programming (introducing C-like modules, etc). Most BASICs did have reasonable IF/THEN/ELSE capability (though the ELSE was implicit rather than explicit --- e.g.
- 120 IF K>9000 THEN GOTO 310
- 130 REM The 'else' code goes here, i.e. the action to be taken if the value stored in variable K is 9000 or less.
- 140 PRINT "This will be an easy victory..."
- 290 GOTO 120
- 300 REM This return is of course optional... think of it like a musical score, almost
- 310 PRINT "That's not possible!"
- 320 REM The above is the code for what happens if K is over 9000.
- And of course it could even be contained in one line - 100 IF L$="Y" OR L$="y" THEN GOTO 200: IF L$="N" OR L$="n" THEN GOTO 300: PRINT "Sorry, please enter (Y)es or (N)o.": GOTO 90
- Which will bump the user to line 200 if they answer Yes, line 300 if they answer No, or print an error message and loop to the input prompt line on any other answer, the colons effectively taking the place of ELSE statements.
- BBC (Acorn) BASIC is a nice example of an early BASIC which tried to do away with some of these contraints, with GOSUB()/RETURN and (IIRC) DEF SUB() (jump to *named* subroutine, and escape it, returning to the previous point in program control flow regardless of where the GOSUB or the subroutine were, and allowing several references to the one subroutine from multiple places without having to resort to quite Heath Robinson multiple-goto/variable based returns) and FN()/DEF FN() arguments that allowed use of non-line number and non-goto based jumps. However its main structure was still line number based, and still allowed use of GOTO.
- Additionally, it is still not that bad a thing - it merely makes some routines quite verbose in this language, and makes editing a potentially quite longwinded and error prone process... for example if you needed to insert a small section needing 11 lines of code in between line 130 and line 140... with other parts of the program referencing line 140, rather than some named marker. I think Sinclair BASIC had a function ('renumber'??) to try and sidestep some of the issues (by re-labelling each line to start on a multiple of 10, and presumably fixing any GOTOs that referenced it), but otherwise, you'd then be in a nightmare of spaghetti code and misplaced jumps, and having to rewrite large parts of it just to deal with a small insertion & line number alteration. I suspect low-level Assembler is just as bad, but at least then it has an excuse ;)
- Also it didn't preclude planning. In fact any decent BASIC program would need a fair bit of it due to some of these issues, and the fact that good programs rarely write themselves. The best I ever managed without putting something down on paper was an experimental multi-part QBASIC program on a 486 that was reminiscent of a demo from 1983... no real structure, just random very simple built-in effects and silly minigames. Even trying to get textmode Space Invaders off the ground required a quick plan-out on paper - it never would even have got to its abortive peak (one alien... then the computer on which that copy of GWBasic was installed broke down) otherwise. My father even wrote several quite complex games using Sinclair BASIC on the 48k Spectrum, and somewhere all his paper notes and handwritten proto-code is stored up... Having seen whole, decent quality commercial platform games written in STOS BASIC on the Atari ST, it's maybe not so much the quality or structure of the language as a whole that gives it a bad name, as the fact that it's easy to pick up (but like so many things difficult to master) - STOS in particular as it had several utilities for inserting graphics and music - and so attracts a lot of complete, untutored beginners, who pick it up as they go rather than absorbing any best practice. Sort of like allowing new drivers out on the road in limited performance Microcars without any lessons or testing... the cars themselves will become a byword for dangerous, untutored driving and habits, even though a competent driver would be perfectly safe and find it an adequate vehicle for shopping and commuting even if not for intercity travel.
- Note from the BBC Basic thing above... you could still implement something similar to the GOSUB system using GOTO anyway, it would merely involve a lot of forward planning, and use of variables to store where the program flow had jumped from, and therefore where it should jump back to (i.e. using LET to store the line number or other mnemonic reference in the variable, then a load of IF/THENs to return to a given line depending on what the variable said (or even using GOTO <variable>, if the version of the language allowed it)). Byzantine and longwinded, easily confusing and hard to edit, but operable. As demonstrated with purposefully obfuscated languages such as Intercal and Befunge, you can carry out pretty much any task of a higher language (and wider instruction set) with very few base operators, enough thought, and enough programming/processing time. Everything else is basically a shortcut or a macro to make things easier and quicker, rather than more possible... such as GOSUB being a macro for the above process, or the more refined structures of professional languages (which also often have the benefit of e.g. more memory and more sophisticated IDEs) being macros for the programming process and planning/thoughts themselves.
- (any innaccuracies or falsehoods above are due to me pulling this stuff from memory and not having any BBC or Sinclair references available to crib from without going for a potentially lengthy websearch - even if the terms are wrong, the ideas are valid so far as I know) 82.46.180.56 (talk) 16:16, 12 April 2008 (UTC)
- I'd argue that it's less the problem of GOTO, more the wierd "line number" based format of a lot of primitive (low-RAM, etc) BASICs. QBASIC doesn't get around the issue so much by deprecating GOTO as obsoleting (though not necessarily removing) line numbers and out-and-out linear programming (introducing C-like modules, etc). Most BASICs did have reasonable IF/THEN/ELSE capability (though the ELSE was implicit rather than explicit --- e.g.
BASIC tutorial
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
My understanding is that another Wikimedia project, Wikibooks, is better than Wikipedia for things like programming language tutorials. Perhaps you could help write Wikibooks:Programming:BASIC ? --68.0.120.35 16:37, 2 May 2007 (UTC)
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)
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)
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)
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
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)
GNU/Fre/Open Source BASICs
moved to Talk:List of BASIC dialects by platform#GNU.2FFre.2FOpen_Source_BASICs
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.
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)
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)
- Is object-oriented programming something you can only do in an object-oriented language? Is C++ really object oriented, or is smalltalk the only object-oriented language?
- You can do structured programming in a non-structured language. Some languages were specifically designed to support structured programming. Structured programming as an idea, was the idea that a program should be made out of (standardised) structures. A structured programming language is a language which has built-in structures for structured programming (REPEAT-UNTIL), and support for user-defined structures (SUB, FUNCTION). Some BASICS had neither built-in structures nor support for user-defined structures, and, in a pattern we've seen repeated many times, drew the criticism of the structured-programming bigots.
- Since this is an article about a language, rather than an article about a style, I think that it is appropriate to have an example where the style is identical, and only the language elements differ.150.101.166.15 (talk) 08:12, 25 February 2008 (UTC)
- It is, of course, possible to do structured programming in a non-structured language. More surprisingly, it is also possible to program in an object-oriented style using a non-OO language. Bertrand Meyer's tome, Object-Oriented Software Construction, second edition contains advice on how to do so for various non-OO languages. Although BASIC is not one of the languages he discusses there, it is relatively easy to adapt the advice given for FORTRAN IV to a modern structured BASIC. The results are reasonable too.
- I can see how you could do it for a 1960s BASIC too, but it would be like teaching a dog to walk on its hind legs: entertaining but of little practical value. There's just too much work involved in emulating the structuring, the local variables and the OO methods. -- Derek Ross | Talk 16:14, 25 February 2008 (UTC)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
'FLaRN'
(talk) 18:17, 24 November 2006 (UTC)
About a footnote
Footnote 1 says "The acronym is tied to the name of an unpublished paper by Thomas Kurtz and is not a backronym, as is sometimes suggested." Says who? We can't just make an assertion like that without a verifiable source. 81.159.56.96 01:53, 8 May 2007 (UTC)
- Oh we can as long as no one contests it. However since you have now done so we'll need to provide one. -- Derek Ross | Talk 06:06, 8 May 2007 (UTC)
Object-oriented versus High-Level
Correct me if I'm wrong, But BASIC is not Object-oriented although it is a high level language? Complex-Algorithm-Interval 02:45, 11 August 2007 (UTC)
- Dartmouth BASIC was originally devised as a "high-level language" in 1964. During the early 1970s, structuring keywords were added to it and Dartmouth BASIC version 7 became a "structured programming language" (although you might not have noticed since a lot of clones of mid-1960s BASIC were written during the late 1970s and 1980s). During the 1990s, object-programming keywords were added to (Visual) BASIC and it became an object-based (somewhat object-oriented) language. Since 2003, VB.NET has appeared. It is a fully object-oriented version of BASIC. So we are now in the position where some dialects of BASIC are object-oriented, some are object-based, some are structured, and some are just high-level. So your statement is right for some versions of BASIC and wrong for others. -- Derek Ross | Talk 06:20, 11 August 2007 (UTC)
Popularity Today
The article states that BASIC "remains popular to this day in a handful of heavily evolved dialects". If you mean VB AND VB.NET this is obvious. For other “modern versions” such as Quickbasic that still have line numbers etc this needs documentation. COBOL is still around a lot in large corporate mainframe type machines. The article needs to state outside of the VB world where and how BASIC is used in 2007 Edkollin 16:21, 20 August 2007 (UTC)
- Only place that I can think of outwith the VB dialects, is PIC microcontrollers eg the BASIC Stamp. -- Derek Ross | Talk 18:48, 20 August 2007 (UTC)
- Lotus Notes (installed base 130,000,000 seats) incorporates a BASIC dialect that is called LotusScript. In addition to being the basis for countless applications written by IBM Lotus' customers, a great deal of the front-end functionality of Notes' built-in mail and calendaring system is implemented in it. Rhsatrhs 00:40, 21 August 2007 (UTC)
Y'all apparently forgotten about the various timesharing BASICs that were developed in the 1970's for minicomputer use (e.g., MAI Business Basic, Wang Basic, etc.). A lot of that code is still in use and probably will continue to be so for many years. BTW, in the 1980's, companies such as Basis International and Thoroughbred were founded to port the MAI style business BASIC into UNIX. I still do some development with Thoroughbred's package (which is "semi-compiled" T-code). —Preceding unsigned comment added by 70.228.163.254 (talk) 06:02, August 28, 2007 (UTC)
- Visual Basic also has line numbers.--Dojarca 14:43, 1 October 2007 (UTC)
- As does QuickBASIC ... but having used the latter and assuming the former to be similar (as AFAIK its somewhat of a continuation of the same product line), they're not essential. I've seen enough QB programs, including nearly all of the included example files, that forego them completely, and just use text labels and seperate modules if they need to jump to a certain section 82.46.180.56 (talk) 16:41, 12 April 2008 (UTC)
Visual Basic
Does it include the different/similarities between Basic and Visual Basic? Visual Basic has totally different commands, although the first BASIC versions had relatively the same keywords. Complex-Algorithm 00:49, 5 September 2007 (UTC)
- Not totally different - this is easy to overstate. Visual Basic includes If, Then, For, Next, Goto, Dim, Int, Asc, Len, End, Stop, Rem. VB 1-6 had no console-mode support, so it's natural enough that Print and Input were missing (having said that, Print was still possible for files, for the debug object, and if used with a form object, Form1.Print, and Input was also possible with a file number). VB.NET (version 7 onwards) reintroduced console mode but without Print and Input (although again, they can be used for file I/O, but with slightly different syntax from before). All versions of VB, even .NET, allow optional type-declaration characters such as % and $ to be appended to variables. VB 1-6 allow Str$, Chr$, Left$ alongside Str, Chr, Left - in .NET the $ is dropped completely. All versions have VB have exactly the same mathematical operators (+, -, *, /, \, Mod, ^) as earlier versions of MS Basic. All versions of VB, even 2008 beta, allow optional line numbers to be entered at the start of lines, albeit VB only allows them on certain lines, not all. VB 1-6 include While, Wend, Gosub, Return. VB 7 onwards have While / End While and drop Gosub. -- 86.137.136.182 (talk), 22:37, 9 September 2007 (UTC)
- VBA 5 and 6 have console support and "print" coommand as well. Probably and VB have.--Dojarca 14:37, 1 October 2007 (UTC)
- Well said. VB and other BASIC dialects have far more in common with each other than they do with other languages. It still makes sense to think of VB as one more dialect of BASIC -- even the .NET variant. -- Derek Ross | Talk 22:44, 9 September 2007 (UTC)
- VB3 has "console-not-console" support: Print prints to the surface of a form. I don't think that Win 3.x had any console support, so this was a resonable approach.150.101.166.15 (talk) 04:51, 13 December 2007 (UTC)
- VB before .NET never really had true console support, even under Win32 where it was avaiable. PRINT in VB6 still printed to a form (unless otherwise specified, and stdout was not an option). -- int19h (talk) 21:02, 15 December 2007 (UTC)
Modern BASIC
The example shown here as an example of "modern Basic" is not a modern basic in fact. It is a Basic of second generation (structured) while VisualBasic and StarBasic are basic systems of 3rd genegarion (object).--Dojarca 14:34, 1 October 2007 (UTC)
Alternate version of Visual Basic .NET version of example
Option Explicit Off
Module stars
Sub Main()
10: Console.Write("What is your name: ")
15: U$ = Console.ReadLine
20: Console.WriteLine("Hello " + U$)
30: Console.Write("How many stars do you want: ")
35: N = Val(Console.ReadLine)
40: S$ = ""
50: For I = 1 To N
60: S$ = S$ + "*"
70: Next I
80: Console.WriteLine(S$)
90: Console.Write("Do you want more stars? ")
95: A$ = Console.ReadLine
100: If Len(A$) = 0 Then GoTo 90
110: A$ = Left$(A$, 1)
120: If A$ = "Y" Or A$ = "y" Then GoTo 30
130: Console.Write("Goodbye ")
140: For I = 1 To 200
150: Console.Write(U$ + " ")
160: Next I
170: Console.WriteLine()
180: End
End Sub
End Module
Madlobster 15:53, 1 December 2007 (UTC)
- You do not need to separate line numbers with colon. VB supports line numbers as well.--Certh 13:33, 3 December 2007 (UTC)
I didn't type them. Visual Studio 2008 put them there automatically.Madlobster 21:26, 3 December 2007 (UTC)
Historical Context?
Historical context: Late Seventies through early Eighties |
It must be understood that the computing experience in the late 1970s through the late eighties was one continually limited by insufficient memory resources, as RAM was very expensive and typical usage was limited to text-based programs which used less memory than most medium resolution image files in today's graphical environments.
The eighties were marked by a remaking of the industry almost top to bottom about every three years or so — today's hot company fading into obscurity almost overnight, albeit kicking and screaming. The cumulative mortality rate amongst the companies which led the way in the PC revolution — and no term was ever so apt, as life post-revolution is very different — was very high: the majority of all such companies came and went in a few years. Industry standards too, were frequently being set today and being discarded tomorrow after falling behind the next big advance. Through all the turmoil (and excitement), two constants emerged: better PCs which were a little IBM incompatible (e.g. see Z-100, Commodore PET, VIC-20 Apple IIe, and many others) failed "commercially" (meaning in the business world, though some eked out an existence in home computing) and went away; and the winner gradually became not the IBM architecture which stabilized, but the MS-DOS/PC-DOS and eventual Windows operating systems which knitted the industry together.
Because memory chips were very expensive, 8-bit computers did not have the capacity to run a memory intensive compiler-linker program. Even commercial developers were dependent upon machine-language coding and relatively crude native assemblers (see MASM, the advanced and much more capable Macro-assembler that eventually evolved). Even these simple programs still had problems with memory ceilings and file size limitations. Floppy disks were limited to about 360 kilobytes, and held not only source code files, but executable files a system needed as well. The only compilers in existence for microprocessors were cross-compilers, programs written on a computer (usually a minicomputer — or an even more powerful computer) that compiled non-native code for another computer platform. Native compilers became feasible only in the late days of the heyday of the IBM/AT machines when memory ceilings of around 512 kilobytes became affordable. With the advent of the 80386-based PC compatibles, many other compiled languages became available on microcomputers $mdash; provided memory was double (or better) the typical 128k or 256k RAM sold with most PCs. |
I believe that the entire premise of this section is factually incorrect.
I.e., The key sentences are:
- "Because memory chips were very expensive, 8-bit computers did not have the capacity to run a memory intensive compiler-linker program."
- "The only compilers in existence for microprocessors were cross-compilers"
- "Native compilers became feasible only in the late days of the heyday of the IBM/AT machines when memory ceilings of around 512 kilobytes became affordable."
Those assertions are simply not true. In 1980 (i.e., before the first IBM PC was available, not to mention years before the AT), I was using Leor Zolman's C compiler known as BDS C, running it on a microcomputer known as the Intertec Superbrain. This was a dual Z-80 system (the second Z-80 was used as an i/o controller) with just 64K of RAM. I also recall using the Digital Research PL/1 compiler (known as "PL/1-80") on that same machine. And although I was not a user of it, I think that the Mark Williams Company C compiler was also used on IBM PCs well before the AT was available, and possibly the Lattice and Whitesmiths compilers. And Microsoft C was certainly available before the "late days" of the AT, if not even before the AT shipped.
Frankly, I'm leaning toward deleting this entire section. Perhaps it can be re-worked to emphasize that compilers were infeasible on microcomputers in lower-end configurations used by many typical hobbiests... but I don't really see what value that fact adds to this article. Rhsatrhs (talk) 03:06, 28 December 2007 (UTC)
- I think deletion is the best idea. I was not happy with this section either. -- Derek Ross | Talk 04:57, 28 December 2007 (UTC)
- Done. Text pasted here in case anyone wants to try to make something better from it.Rhsatrhs (talk) 02:41, 29 December 2007 (UTC)
A Bit of History sidebar
In addition to the "Historical Context", I removed this box from the article and dropped it here. The first sentence makes no sense. In fact it should be several sentences, but how they relate to each other and what point they are trying to make is a mystery.
A bit of history |
---|
Microsoft BASIC (also known then, and most widely as M BASIC) which was soon bundled with IBM-PC computers among personal computer afficionados—at the time, PC's were the exclusive realm of hobbyists, researchers, and enthusiasts like the Home Brew computer club) and because it was written so that it would be easy to convert to different operating systems—soon started appearing on other platforms under license; when International Business Machines approached Gates, they wanted his BASIC, not his operating system—CPM was the OS standard in that day on PC's. The battle for CP/M versus MSDOS raged fiercely in the small computer industry for several years, but the marketing weight and respect of the DOS used by IBM gradually tipped the industry to DOS.[1] |
Dartmouth College
I have given a fuller description of the location so as to avoid confusion with http://www.dartmouthcollege.co.uk/bayard/int/ —Preceding unsigned comment added by 86.147.253.126 (talk) 16:29, 6 January 2008 (UTC)
- If they want to know where it is, they can click on the link. It's, at best, a parenthetical description, and probably should not be in the article at all. — Arthur Rubin | (talk) 16:43, 6 January 2008 (UTC)
- I disagree. If it remains there is nothing wrong with a proper description, in fact it helps. —Preceding unsigned comment added by 86.147.253.126 (talk) 16:46, 6 January 2008 (UTC)
GA Reassessment
- This discussion is transcluded from Talk:BASIC/GA1. The edit link for this section can be used to add comments to the reassessment.
In order to uphold the quality of Wikipedia:Good articles, all articles listed as Good articles are being reviewed against the GA criteria as part of the GA project quality task force. While all the hard work that has gone into this article is appreciated, unfortunately, as of October 18, 2008, this article fails to satisfy the criteria, as detailed below. For that reason, the article has been delisted from WP:GA. However, if improvements are made bringing the article up to standards, the article may be nominated at WP:GAN. If you feel this decision has been made in error, you may seek remediation at WP:GAR.
- The article is almost entirely without inline citations, as is required by 2b of the good article criteria.
- There has been a request for citation in place since June.
- There are external links in the body of the article. External links should only appear in an External links section.
- The prose needs some attention. For instance:
- "As the popularity of BASIC on CP/M spread, newer computer designs also introduced their own version of the language, or had Micro-Soft port version to their platform."
- "Third generation BASIC dialects such as Visual Basic and StarOffice Basic introduced features to support object-oriented and event-driven programming paradigm."
- "Most built-in procedures and functions now represented as methods of standard objects rather than operators."
- The article confuses object-based BASIC with object-oriented BASIC.
--Malleus Fatuorum (talk) 20:04, 18 October 2008 (UTC)
What's the difference between RAM and memory?
"Newer computer systems supported time-sharing, a system which allows multiple users or processes to use the RAM and memory"
But... RAM stands for Random Access Memory. In other words, RAM is Memory.
Shouldn't it be "processor and memory" (or "CPU and RAM")? —Preceding unsigned comment added by 216.218.41.190 (talk) 17:58, 9 September 2009 (UTC)
- Yes, RAM is memory... and ROM is memory, and Core is memory, and disc is memory and drum is memory. Computers of that era had an extremely limited amount of electronic RAM, a slightly larger amount of Core (magnetic RAM) and a much larger amount of disc- or drum-based virtual memory. Disc and drum can simulate RAM when used with paging hardware but they're not exactly RAM themselves. So RAM is always memory but memory is not always RAM. -- Derek Ross | Talk 05:28, 12 September 2009 (UTC)
- ^ Freiberger, Paul and Michael Swaine. Fire in the Valley The making of the Personal Computer. Osborne/McGraw Hill, Berkeley, CA, 1984.
A fascinating look at the 1970's and the hobbyists who created the personal computer and the p.c. industries. "The fire of the p.c. revolution broke out in many places... but nowhere did the fire spread as it did in Silicon Valley,the center of high tech development in California. This is the history of that revolution in the Valley and elsewhere.
{{cite book}}
: Cite has empty unknown parameter:|1=
(help)