המונח "בייסיק" מפנה לכאן. לערך העוסק בסרט קולנוע, ראו בייסיק (סרט).

**BASIC** היא משפחה של שפות תכנות מפורשות ידידותיות למשתמש וקלות לתכנות אשר זכו לפופולריות רבה עד שנות ה-90.

מבוא
----

הגרסה המקורית של BASIC נוצרה על ידי ג'ון ג'י קמני ותומס א' קורץ במכללת דארטמות' ב-1963. כוונתם הייתה לאפשר לסטודנטים בתחומים שאינם מדעיים להשתמש במחשבים. שם השפה, BASIC, ראשי תיבות של Beginners All-purpose Symbolic Instruction Code מבטא את היעוד הזה כשפה פשוטה ושימושית. זה בניגוד לרוב המחשבים באותה תקופה, שדרשו כתיבת תוכנה ייעודית להם, שרק מדענים ומתמטיקאים נטו ללמוד.

בנוסף לשפת התוכנית, קמני וקורץ פיתחו את מערכת שיתוף זמן של דארטמות' (DTSS), שאפשרה למספר משתמשים לערוך ולהריץ מספר תוכניות BASIC בו-זמנית על מסופים מרוחקים. המודל הזה הפך לפופולרי מאוד במערכות מיני-מחשבים כמו PDP-11 ו-Data General Nova בסוף שנות ה-60 ותחילת שנות ה-70. Hewlett-Packard ייצרה את HP2000, סדרת מחשבים שפעלו בשיטת זו ושווקו מסוף שנות השישים עד שנות ה-80. משחקי וידאו מוקדמים רבים נכתבו במקור באחת הגרסאות של BASIC.

BASIC זכתה לפופולריות רבה עם תפוצתם המסיבית של המחשבים הביתיים כמו אטארי, קומודור, סינקלייר ואחרים שהופיעו בסוף שנות השבעים וקדמו למחשב האישי (PC) של IBM.

למרות קיומו של תקן ANSI, נוצרו ל-BASIC ניבים שונים, שלחלקם כמעט ולא היו פקודות משותפות.

חברת מיקרוסופט הוקמה במטרה לפתח מפרשי BASIC ולמערכת ההפעלה MS-DOS שלה צורף מפרש BASIC (עד גרסה 5 שלה נעשה שימוש בניב GW-BASIC/BASICA, ולאחר מכן ב-QBASIC) וכך נשתמרה הפופולריות של שפת התכנות.

יחד מערכת ההפעלה חלונות, מיקרוסופט פיתחה את שפת Visual Basic, שהתבסס על התחביר המקובל של BASIC. שפה זו היא, כנראה, הניב הנפוץ ביותר של BASIC כיום.

שפת בייסיק בהגדרתה המקורית כבר לא נמצאת בשימוש נרחב. ישנם מספר יישומים יותר מודרניים המתבססים על התחביר המקורי, כמו גרסאות חדשות של Visual Basic, שפת תסריט Visual Basic for Applications (VBA) המשולבת בתוכנות חבילת היישומים Microsoft Office, או שפת תסריט Visual Basic Script המשולבת בדפדפן האינטרנט של מיקרוסופט.

בגרסאותיה המקוריות (ובמידה פחותה גם כיום), היו שורות הקוד ממוספרות ונעשה שימוש רב בפקודות GOTO, המורות למפרש לעבור לביצוע שורת קוד אחרת מהשורה העוקבת. שימוש זה גורם לחוסר מבניות בקוד ומקשה על מעקב אחר השתלשלותה והרצתה של התוכנה. עם זאת, כפי שניתן לראות באתר מיקרוסופט שפות ה־Visual Basic המודרניות הן שפות תכנות מונחה עצמים המאפשרות פיתוח תוכנה בהיקפים גדולים לפי כל כללי הנדסת תוכנה, ויצירת קוד איכותי אשר ניתן לתחזוקה ושינוי מהירים וקלים, כמו בכל שפות התכנות המודרניות האחרות.

בשנת 2008 יצא Microsoft Small Basic המיועד לילדים.

היסטוריה
--------

עד אמצע שנות ה־60, מחשבים היו כלים יקרים ביותר שנעשה בהם שימוש רק למטרות מיוחדות כחישובים מדעיים או צבאיים. מחשבים אלו הפעילו אצווֹת (Batch) של משימות להרצה בזו אחר זו, והיה לעיתים צורך להמתין זמן רב עד להתפנותו של המחשב. מסוף שנות ה־60 ואילך הוזילו התפתחויות בתחום האלקטרוניקה את מחירי המחשבים באופן משמעותי, עד כדי כך שכוח החישוב עלה לרוב על הנדרש.

שפות התכנות בעידן הרצת האצווֹת, כמו גם המחשבים שעליהם רצו, תוכננו לרוב עבור מטרה מסוימת כחישובי נוסחאות, עיבוד מידע עסקי או עיבוד תמלילים. לאור העלות הרבה של כוח מחשוב, נחשבה היעילות (כלומר, זמן ביצוע הקוד) כתכונה החשובה ביותר של שפת תכנות. לכן, השפות ה"מתמחות" הללו היו לרוב קשות לשימוש ובעלות תחביר ייחודי להן.

עם הוזלת מחירי המחשבים, הופיעה גישת "חלוקת הזמן" (time sharing) מול מחשב מרכזי גדול. בגישה זו "נפרסה" יכולת העיבוד של המחשב על ציר הזמן ולכל משתמש ניתנו "חלונות" של זמן עיבוד לסירוגין עם משתמשים אחרים. כיוון שהמחשבים נעשו מהירים מספיק, קיבלו המשתמשים את הרושם כאילו המחשב עומד כולו לרשותם בלעדית. חלוקת הזמן הוזילה את מחיר השימוש במחשב באופן ניכר, משום שמכונה יחידה יכלה לתמוך בחישוביהם של מאות משתמשים.

### שנים מוקדמות - עידן המיני־מחשבים

שפת ה־BASIC המקורית תוכננה ב־1963 על ידי ג'ון קמני ותומאס קורץ, ומומשה בהדרכתם על ידי צוות של סטודנטים במכללת דארטמות', בהם מרי קנת' קלר. BASIC תוכננה לאפשר לסטודנטים לכתוב תוכניות עבור מערכת חלוקת זמן שנקראה Dartmouth Time-Sharing System. היא תוכננה להיות מסובכת פחות משפות התכנות שקדמו לה, שכן המשתמשים החדשים, שעשו שימוש במערכות חלוקת זמן, היו על פי רוב בעלי רקע טכני ומתמטי מועט יותר מקהל היעד הוותיק. ניב זה של BASIC כונה מאוחר יותר Dartmouth BASIC.

שמונה עקרונות עמדו לנגד עיניהם של מתכנני BASIC:

1. קלות שימוש למתחילים.
2. השפה תתאים לכל מטרה (general-purpose programming language).
3. תתאפשר הוספת תכונות מתקדמות, ללא פגיעה בפשטות.
4. הידודיות (אינטראקטיביות).
5. מתן הודעות שגיאה ברורות וידידותיות.
6. תגובה מהירה לתוכניות קצרות.
7. המשתמש לא יידרש להכיר את חומרת המחשב.
8. חציצה בין מערכת ההפעלה והמשתמש.

השפה התבססה בחלקה על FORTRAN II ‏ובחלקה על ALGOL 60, תוך שהוכנסו בה מספר שינויים כדי להתאימה למערכות חלוקת זמן (אף מערכות אחרות מזאת שפעלה בדארטמות' כגון JOSS ו־CORC ובמידה פחותה יותר LISP). קדמו לה ניסיונות אחרים לתכנן שפת הוראה בדארטמות' כמו DARSIMCO ב־1956 ו־DOPE ב־1962.

מראשיתה, תמכה BASIC בביצוע פעולות מתמטיות פשוטות ובפעולות על מטריצות. האפשרות לטפל במחרוזות נוספה במלואה רק ב־1965. BASIC מומשה לראשונה, כשפת מהדר דווקא, על מחשב מרכזי מסוג GE־265 שתמך במספר מסופים. השפה הייתה יעילה למדי, ועקפה בביצועיה את המימושים FORTRAN II ו־ALGOL 60 שרצו על ה־GE־265.

מתכנני השפה החליטו שהמהדר יהיה זמין לכול ללא תשלום כדי להפיץ את השפה. הם הרשו שימוש בו בבתי ספר באזור דארטמות' והשקיעו כמות נכבדה של מאמץ לקדם את השפה. מאמציהם נשאו פרי, ידע של BASIC נעשה נפוץ יחסית. השפה מומשה על ידי מספר ספקים ונעשתה פופולרית על מיני־מחשבים כסדרת ה־PDP של DEC, וה־Nova של Data General. לרוב מומשה BASIC בדרך־כלל כשפת מפרש, במקום (או בנוסף על) מהדר.

מספר שנים אחרי הפצתה, הביעו מספר מומחי מחשבים בעלי־שם וביניהם אדסחר דייקסטרה, את דעתם שהשימוש בהצהרות GOTO הנפוצות ב־BASIC ובשפות אחרות הוא הרגל תכנותי מגונה.
בנוסף, מומחים אחרים טענו ש־BASIC איטית מדי (מרבית הגרסאות המפורשות איטיות מהגרסאות המהודרות המקבילות) או פשוטה מדי (גרסאות רבות, במיוחד למחשבים חלשים, לא מימשו תכונות ויכולות חשובות).

### גידול מהיר - עידן המחשבים הביתיים

תמונת מסך של Qbasic
הצגת המחשב הביתי אלטאיר 8800 ב־1975 הזניקה את הפופולריות של בייסיק. רוב שפות התכנות האחרות דרשו יותר זיכרון (או יותר נפח בכונן הקשיח) ממה שהיה זמין במחשבים הביתיים, ואילו בייסיק יכלה להתמודד עם המגבלות האלו ואף התחשבה באחסון האיטי על טייפ נייר (או יותר מאוחר טייפ של קלטות אודיו, באותה תקופה לא היו כוננים קשיחים למחשבים ביתיים) ובהיעדר עורכי טקסט מתאימים. לבייסיק היה גם היתרון של פופולריות בקרב המתכנתים הצעירים שגילו עניין במיקרו־מחשבים. אחד המימושים הראשונים של השפה שהופיעו למכונות ה־8080 כמו האלטאיר היה Tiny BASIC, מימוש פשוט שנכתב במקור על ידי ד"ר לי־צ'ן ואנג, ושהוסב לאלטאיר על ידי דניס אליסון בעקבות בקשתו של בוב אלברכט (שמאוחר יותר הקים את Dr. Dobb's Journal). התכן של Tiny BASIC וקוד המקור המלא פורסמו ב־1976 בכתב עת זה.

תמונת מסך של Qbasic2
חברות חדשות ניסו ללכת בעקבות ההצלחות של "Micro Instrumentation and Telemtry Systems", "IMSAI", "North Star" ואפל מחשבים, ובכך יצרו תעשיית מחשבים ביתיים; בינתיים בייסיק נהפכה לתוכנה מובנית בכמעט כל המחשבים הביתיים. מרביתם שווקו עם מפרש בייסיק ב־ROM (זיכרון לקריאה בלבד) ובכך התגברו על בעיית הכוננים שהיו לא זמינים או יקרים מדי. מהר מאוד היו מיליוני מחשבים שהריצו ניבים של בייסיק ברחבי העולם.

ה־BBC פרסם את BBC BASIC (אנ'), שפותח עבורם על ידי חברת מחשבי Acorn וכללה מילות מפתח מבניות רבות נוספות וגישה ישירה, מקיפה וגמישה למערכת ההפעלה. כמו כן היא כללה אסמבלר משולב. BBC BASIC היה דיאלקט מאוד מוערך, ועבר הסבה ממחשב ה־BBC Micro (אנ') המקורי ללמעלה מ־30 פלטפורמות אחרות.

בזמן זה שבו חל גידול בשימוש בבייסיק, התפרסמו מגזינים רבים כמו *Creative Magazine* שכללו בסיסי קוד מקור שלמים למשחקים, כלי־עזר ותוכניות אחרות. הודות לפשטותה של בייסיק, היה זה קל להקליד את הקוד מהמגזין לתוך המחשב ולהריץ את התוכנה. מגזינים שונים התפרסמו עם תוכניות למחשבים מסוימים, אך מספר תוכניות בייסיק היו אוניברסליות וניתן היה להשתמש בהם כקלט לכל מחשב שעשה שימוש בבייסיק.

### בגרות - עידן המחשבים הביתיים

גרסאות בייסיק חדשות רבות נוצרו בתקופה הזאת. מיקרוסופט מכרה מספר גרסאות של בייסיק עבור MS-DOS או PC-DOS כולל BASICA, GW-BASIC (גרסה תואמת BASICA שלא דרשה את ה־ROM של IBM), ו־QuickBASIC. בורלנד, החברה שמכרה את טורבו־פסקל, הוציאה את Turbo BASIC 1.0 ב־1985 (גרסאות חדשות שלה עדיין משווקות על ידי הכותב המקורי תחת השם PowerBASIC).

שפות אלה הכניסו הרחבות רבות לבייסיק המקורי של המחשבים הביתיים, כמו טיפול משופר במחרוזות, תמיכה בגרפיקה, גישה למערכת הקבצים וטיפוסי נתונים נוספים. חשובים עוד יותר היו האמצעים לתכנות מובנה, כולל מבני בקרה נוספים ושגרות שכללו משתנים מקומיים.

אולם, עד למחצית השנייה של שנות ה־80, מחשבים חדשים היו בעלי יכולת גבוהה בהרבה עם יותר משאבים שעמדו לרשותם. באותו הזמן, מחשבים הפכו ממכשירים שהיוו תחביב, לכלים ששימשו בעיקר ליישומים שנכתבו על ידי אנשים אחרים, ותכנות נעשה פחות חשוב למרבית המשתמשים. בייסיק התחילה להיות פחות חשובה, אף שמספר רב של גרסאות עדיין היו זמינות. בייסיק מהודרת או CBASIC עדיין נמצאת בשימוש במערכות נקודת מכירה רבות המבוססות על מערכת־ההפעלה IBM 4690.

מזלה של בייסיק התהפך שוב עם כניסתה לשוק של Visual Basic של מיקרוסופט. קשה למדי להחשיב שפה זו כבייסיק, בעיקר בגלל המעבר הבולט בנטייה שלה לכיוון תכנות מונחה עצמים ו־תכנות מונחה אירועים. בעוד שזה עשוי להחשב כאבולוציה של השפה, מספר קטן מאוד מהתכונות הייחודיות של בייסיק דארטמות' המוקדם, כמו מספרי שורות ומילית המפתח `INPUT`, עדיין נשאר שם.

ניבים רבים של בייסיק צצו בשנים האחרונות, כולל Bywater BASIC ו־True BASIC (היורש הישיר של בייסיק דארטמות' מחברה שנשלטת על ידי קורטז). לאחרונה, שארית הקהיליה שהשתמשה במוצרי הבייסיק של מיקרוסופט שלפני ויז'ואל בייסיק החלה לעבור באופן מלא ל־FreeBASIC, מהדר תחת רישיון GPL, שמהדר את בייסיק באמצעות GCC. וריאנטים רבים אחרים של בייסיק והסבות נכתבו על ידי חובבנים, מפתחי ציוד ואחרים, מכיוון שהיא שפה פשוטה יחסית לפתח מתרגמים עבורה. דוגמה של מפרש קוד פתוח שלה, הכתוב ב־C, היא MiniBasic.

התפוצה של מפרשי בייסיק במחשבים ביתיים הייתה כזו שספרי לימוד פעם כללו תרגילים פשוטים של **נסה זאת בבייסיק** שעודדו תלמידים להתנסות עם מושגים מתמטיים וחישוביים במחשבי הכיתה או הבית. העתידן וסופר המדע הבדיוני דייוויד ברין מבכה את האובדן של הבייסיק הנפוץ במאמר בעיתון "סלון" - מדוע ג'וני לא יכול לתכנת.

השפה
----

### תחביר

פקודות בייסיק נגמרות בסופי שורה אלא אם כן יש תו המשך שורה. תחביר בייסיק מינימלי ביותר צריך רק את הפקודות "LET", "PRINT", "IF" ו־"GOTO".

מספרי שורות היו פן מאוד ייחודי של מפרשי הבייסיק הבסיסיים של המחשבים הביתיים. יותר מאוחר, מספר מפרשי בייסיק הופיעו עם פקודת "RENUMBER" (= מספר מחדש) מובנית.

חלק מהדיאלקטים המודרניים של בייסיק (אבל לא כולם) נטשו את מספרי השורות, ותומכים במרבית (או בכל) מבני הבקרה המובנית והצהרת הנתונים הידועים בשפות אחרות כמו C ופסקל. חלק מהגרסאות המתקדמות של מימושי הבייסיק למחשבים ביתיים שהתבססו על מספרי שורה, שילבו מבנים כאלה לנוחות המתכנת:

`* do - loop - while - until - exit
* on *x* goto / gosub (switch & case)`

וריאנטים חדשים כמו ויז'ואל בייסיק הציגו תכונות כמו מבנה ה־"For Each...Loop" לאיטרציה מתוך מאגרים ומערכים (שהוצגה ב־"Visual Basic for Applications" ובויז'ואל בייסיק 4 ואילך), ואפילו תכנות מונחה עצמים עם הורשה בגרסה האחרונה. ניהול זיכרון הוא קל יותר מאשר בשפות תכנות פרוצדורליות רבות אחרות בשל אוסף הזבל הכלול שם בדרך־כלל.

העושר הזה של הוואריאנטים מראה שקהילות המשתמשים והמפתחים של השפה הן פעילות, ושניתן לראות את בייסיק כתת־תרבות שמטפלת בתכנות במקום באוסף מוגבל של חוקים תחביריים. זה נכון גם לשפות תכנות "ישנות" אחרות כמו קובול או פורטרן, אך התנועה מאחורי בייסיק היא ללא ספק הגדולה ביותר; ניתן להסביר זאת על ידי המספר הגדול של מקצועני תעשיית המידע שלמדו לתכנת בבייסיק בעידן המחשבים הביתיים של שנות ה־1970.

### פרוצדורות ובקרת זרימה

מרבית מימושי הבייסיק אינם עושים שימוש בספריה חיצונית לפעולות נפוצות כמו שפות אחרות כגון C. במקום זאת, המפרש (או המהדר) מכיל ספריה מובנית מקיפה של פרוצדורות פנימיות, באופן דומה למרבית מימושי השפה פסקל. פרוצדורות אלה כוללות את מרבית הכלים שהמתכנת צריך כדי ללמוד תכנות ולכתוב יישומים פשוטים, כולל פונקציות למתמטיקה, טיפול במחרוזות, קלט ופלט למסוף, גרפיקה וטיפול בקבצים.

מספר דיאלקטים של בייסיק אינם מספקים יכולות הבנייה מובנות, כמו מבנה Procedure. כשהם מתכנתים באלה, מתכנתים צריכים לכתוב את התוכניות שלהם על ידי שימוש בהצהרות GOTO (בעברית "לך ל") כדי לדמות את המבנים האלה. זה עלול להוביל לתוכניות מבלבלות למדי, שנהוג לקרוא להן קוד ספגטי. הצהרות GOSUB (בעברית "לך לשגרה") פונות לסוגים פשוטים של שגרות אשר על־פי רוב אינן מקבלות פרמטרים או משתנים מקומיים. מרבית הגרסאות המודרניות של בייסיק, כמו Quick BASIC, הוסיפו תמיכה בשגרות ופונקציות מלאות. זהו עוד תחום בו בייסיק שונה משפות תכנות רבות אחרות. מרבית מימושי הבייסיק, בדומה לפסקל, מבחינים בין פרוצדורה שאינה מחזירה ערך (שגרה) לבין פרוצדורה שמחזירה ערך (פונקציה). שפות רבות אחרות (בייחוד C) אינן עושות הבחנה זאת ומחשיבות את כל אלו כפונקציות המחזירות ערך, שערכו יכול להיות ריק מתוכן (void).

בעוד שפונקציות, במובן הרחב של שגרות המחזירות ערכים, נוספו לבייסיק רק מאוחר, מערכות מוקדמות רבות תמכו בהגדרה של פונקציות מתמטיות של שורה אחת באמצעות DEF FN ‏("DEFine FunctioN") או "הגדר פונקציה" בעברית. בייסיק דארטמות' המקורי תמך גם בפונקציות ושגרות דמויות־אלגול החל מזמן מוקדם, וכך גם הוואריאנט BASIC09 מסביבות שנת 1979.

### טיפוסי נתונים

בייסיק ידועה בפונקציות הטובות שלה לטיפול במחרוזות. דיאלקטים מוקדמים כבר כללו מספר פונקציות יסודיות (LEFT$, MID$, RIGHT$) לפעולות על מחרוזות. מכיוון שנעשה שימוש רב במחרוזות ביישומים של יום־יום, זה היה יתרון משמעותי של נוחות, על פני שפות רבות אחרות בזמן שבייסיק הוצגה.

בייסיק דארטמות' המקורי תמך רק בטיפוסי נתונים מספריים ומחרוזתיים. לא היה טיפוס של מספר שלם, מה שהשאיר את כל המשתנים המספריים כמשתני נקודה צפה. מחרוזות היו דינמיות ויכלו לשנות את אורכן. מערכים של גם מספרים וגם מחרוזות נתמכו, כמו גם מטריצות פשוטות (כלומר, מערכים דו־ממדיים).

לכל דיאלקט בייסיק מודרני קיימים טיפוסי מספר ומחרוזת. טיפוסי נתונים של סימני משתנים בדרך־כלל מובחנים על ידי תו־מבחין ("sigil") שנוסף בסוף הסימן; באופן טיפוסי, משתני מחרוזת מסתיימים עם '$', בעוד שמשתני ספרים שלמים בדרך־כלל מסתיימים עם '%'. במספר דיאלקטים, משתנים חייבים להיות מוצהרים לפני השימוש הראשון בהם (באמצעות הצהרת ה־DIM); דיאלקטים אחרים אינם דורשים זאת, אבל יש להם אפשרות לחייב זאת - בדרך כלל בשימוש בהוראה כמו *Option Explicit* (בעברית "אפשרות מפורשת"). לדוגמה, ב־Visual Basic הצהרת משתנים מפורשת איננה בגדר חובה, אך ניתן לתת הנחיה למפרש/מהדר לבדוק שכל המשתנים הוגדרו - באמצעות ההוראה *Option Explicit* לפני התחלת הקוד. אפשרות זו מסייעת למצוא משתנים ש"אבדו" בסבך הקוד ושמם השתנה בטעות.

ניבים רבים גם תומכים בטיפוסים נוספים כמו מספרים שלמים בני 16 או 32 סיביות, ומספרי נקודה צפה. לחלק יש טיפוסים של "polynomial" ("פולינומים"), "complex" ("מרוכב"), "list" ("רשימה"), וטיפוסים ממוקצעים שתוכננו לתמוך בצרכים של משתמשים מסוימים. בנוסף, חלק מהניבים מרשים הצהרת טיפוסים שהוגדרו על ידי המשתמש באופן דומה לרשומות ("record") של פסקל או למבני ה־"struct" של C. רוב הניבים של בייסיק, מעבר לבסיסיים ביותר, תומכים גם במערכים של מספרים או טיפוסים אחרים. בחלק מהם, חייבים להצהיר על המערכים מראש (כלומר להקצות אותם עם הוראת ה־"DIM") לפני שניתן יהיה להשתמש בהם. תמיכה במערכים של שני ממדים או יותר, כמו גם מערכים של טיפוסים שאינם מספרים, היא נפוצה בגרסאות מתקדמות של בייסיק.

#### דוגמה להצהרת מערכים

```
DIM myIntArray(100) AS INTEGER
DIM myStringArray(50) AS STRING

```

חלק מהגרסאות יאפשרו רק את:

```
DIM myIntArray%(100)
DIM myStringArray$(50)

```

כתלות בניב של בייסיק, המערכים מתחילים מ־0, בעוד שאחרים מתחילים מ־1. באופן זה, בחלק מהם, הפקודות כמו הראשונה בדוגמה יגדירו מערך של 101 איברים של שלמים עם איברים מ־0 עד 100, אחרים יגדירו מערך של 100 איברים של שלמים עם איברים מ־1 ל־100, או באופן יותר נדיר מ־0 ל־99. קיימת אפשרות שניתן גם להגדיר את מספר האיבר הראשון לאחר מאשר 0 או 1, עם פקודה נוספת כמו *Option Base*. הדוגמה לעיל בבייסיק של מיקרוסופט תיצור מערך עם איברים ממוספרים מ־0 עד 100.

בעבודה עם מחרוזות, פקודות כמו השנייה עשויות להקצות מערך של 50 איברים של מחרוזות באורך משתנה, או שהן עשויות להקצות מחרוזת יחידה של 50 תווים. הבדלי המספור שהוזכרו לעיל תקפים גם לגביהן.

דוגמאות לא סטנדרטיות, ולחלק מהאנשים, לא אינטואיטיביות ליצירת מערכים מבלבלים את המתכנתים המתחילים (ולעיתים גם המתקדמים). דיאלקטים חדשים מציעים מספור פרטני, כמו 

```
DIM myIntArray (10 TO 20) AS INTEGER

```
 שיהיה מערך בן 11 איברים עם איברים שממוספרים מ־10 עד 20.

### אופרטורים יחסיים ולוגיים

| אופרטור | משמעות |
| --- | --- |
| = | שווה |
| <> | שונה |
| > | קטן מ |
| < | גדול מ |
| => | קטן שווה |
| =< | גדול שווה |
| NOT | ניגוד לוגי |
| AND | חיתוך לוגי ("וגם") |
| OR | איחוד לוגי ("או") |

אין הבחנה סימונית בין אופרטור ההשמה לבין האופרטור השיויון בבייסיק - סימן שווה יחיד משמש לשניהם. אולם, אם המתכנת מעוניין שיהיה הבדל נראה לעין בין השניים, יש שיטה להשיג זאת: מילת הברירה "LET" מאפשרת להשמות להיות מובחנות באופן חד משמעי מהשימוש של אופרטור ה"שווה ל־". לדוגמה: `IF X=7 THEN LET Y=3`.

כמו כן, האופרטורים "AND", "OR" ו־"NOT" הם למעשה אופרטורים אריתמטיים מונחי־סיביות. ניתן להשתמש בהם גם כפעולות לוגיות, מפני שמרבית הדיאלקטים של בייסיק מייצגים את הערכים הבוליאנים על ידי -1 (עבור "אמת") ועל ידי 0 (עבור "שקר"). אולם, הם מזכירים את האופרטורים האריתמטיים מונחי הסיביות ב־C וב־C++ `&`, `|` ו־`~` בהתאמה יותר מאשר את האופרטורים הלוגיים `&&`, `||` ו־`!`: למשל, "AND" ו־"OR" תמיד מחשבים את **שני** הארגומנטים שלהם (הם אינם אופרטורים "מקצרים").

דוגמאות
-------

### תוכנית ראשונה

מתכנתי בייסיק חדשים שעובדים על מחשב ביתי עשויים להתחיל עם תוכנית פשוטה הדומה לתוכנית Hello world ("שלום עולם") שנעשתה מפורסמת על ידי קרנינגהן וריצ'י. מה שבדרך כלל כרוך בכך הוא שימוש פשוט של פקודת ה־"PRINT" של השפה כדי להציג את ההודעה (כמו שמו של המתכנת) על המסך. פעמים רבות, נעשה שימוש בלולאה אינסופית כדי למלא את התצוגה בהודעה.

### בייסיק קלאסי

דוגמה זו נכתבה בדיאלקט של BASIC הנקרא GW-BASIC.

```
10 INPUT "What is your name: "; U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: "; N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "\*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? "; A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF (A$ = "Y") OR (A$ = "y") THEN GOTO 30
130 PRINT "Goodbye ";
140 FOR I = 1 TO 200
150 PRINT U$; "";
160 NEXT I

```

### בייסיק מודרני

דיאלקטים מובנים "מודרניים" של בייסיק (לדוגמה QuickBASIC, FreeBasic, PureBasic, Blitz BASIC, PowerBASIC ו-TrueBASIC, תומכים בפקודות קלאסיות כמו הצהרות ה־GOTO במידות שונות, כשהן מוסיפות עוד מילות מפתח מודרניות רבות אחרות.

הדוגמה הקודמת ב־QuickBASIC:

```
INPUT "What is your name"; UserName$
PRINT "Hello "; UserName$
DO
 INPUT "How many stars do you want"; NumStars
 Stars$ = ""
 Stars$ = REPEAT$("\*", NumStars) ' <- ANSI BASIC
 ''--or--''
 Stars$ = STRING$(NumStars, "\*") ' <- MS BASIC
 PRINT Stars$
 DO
 INPUT "Do you want more stars"; Answer$
 LOOP UNTIL Answer$ <> ""
 Answer$ = LEFT$(Answer$, 1)
LOOP WHILE UCASE$(Answer$) = "Y"
PRINT "Goodbye ";
FOR I = 1 TO 200
 PRINT UserName$; "";
NEXT I
PRINT

```

לשם השוואה, אותה התוכנית במימוש PureBasic המודרני יותר:

```
OpenConsole()
Print("What is your name ")
UserName$ = Input()
PrintN("Hello "+ UserName$)
Repeat
 Print("How many stars do you want ")
 NumStars = Val(Input())
 Stars$ = RSet("", NumStars, "\*")
 PrintN(Stars$)
 Repeat
 Print("Do you want more stars ")
 Answer$ = Input()
 Until Answer$ <> ""
 Answer$ = Left(Answer$, 1)
Until UCase(Answer$) <> "Y"
Print("Goodbye ")
For I = 1 To 200
 Print(UserName$ + "")
Next I
PrintN("")
CloseConsole()

```

ההיבט הישראלי
-------------

בייסיק הייתה פופולרית בישראל בתחילת עידן המחשבים הביתיים ואנשים רבים התחילו לתכנת בה. סדרת החוברות "מחשבת" הייתה סדרה פופולרית ללימוד בייסיק בעבור מחשבים תואמי PC. בבייסיק נכתבו תוכנות רבות שהופצו או אף נמכרו.

בישראל פותח דיאלקט מעוברת של BASIC בשם "בסיסית", שבו הקוד נכתב באמצעות אותיות עבריות.

מראי מקום
---------

* Dartmouth College Computation Center (1964).*A Manual for BASIC, the elementary algebraic language designed for use with the Dartmouth Time Sharing System* — המדריך המקורי של בייסיק דארטמות'.
* Lien, David A. (1986). *The Basic Handbook: Encyclopedia of the BASIC Computer Language* (3rd ed.). Compusoft Publishing. ISBN 0-932760-33-3. מתעד שינויים בדיאלקטים השונים ליותר מ־250 גרסאות של בייסיק.
* Kemeny, John G.; Kurtz, Thomas E. (1985). *Back To BASIC: The History, Corruption, and Future of the Language*. Addison-Wesley. 141 pp. ISBN 0-201-13433-0.
* Jean E. Sammet. *Programming languages: History and fundamentals*. Prentice-Hall, Englewood Cliffs, N.J. 1969.
* האנציקלופדיה של שפות התכנות - BASIC - Beginners All-purpose Symbolic Instruction Code

### סטנדרטים

* ANSI/ISO/IEC Standard for Minimal BASIC:
	+ ANSI X3.60-1978 "FOR MINIMAL BASIC"
	+ ISO/IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC"
* ANSI/ISO/IEC Standard for Full BASIC:
	+ ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC"
	+ ISO/IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC"
* ANSI/ISO/IEC Addendum Defining Modules:
	+ ANSI X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987"
	+ ISO/IEC 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT"

ראו גם
------

* רשימת הדיאלקטים של BASIC

קישורים חיצוניים
----------------

ויקישיתוף מדיה וקבצים בנושא **BASIC** בוויקישיתוף
* BASIC, באתר אנציקלופדיה בריטניקה (באנגלית)
* שפת תכנות מחשבים, ביסיק, דף שער בספרייה הלאומית

הערות שוליים
------------

1. ↑  ראשי התיבות הופיעו בשמו של מאמר שלא פורסם של תומאס קורץ והן אינן ראשי תיבות שהומצאו בדיעבד כפי שלעיתים נטען.
2. 1 2  KathleenDollard, Object-oriented programming - Visual Basic, learn.microsoft.com, ‏2021-09-15 (באנגלית אמריקאית)
3. ↑  14:00-17:00, ISO/IEC 25010:2011 Systems and software Quality Requirements and Evaluation (SQuaRE), ISO (באנגלית)
4. ↑  Object-oriented programming - Visual Basic
5. ↑  "Go To Statement Considered Harmful"
6. ↑  "How do We Tell Truths that Might Hurt"
7. ↑  ראו את מכתבו של דייקסטרה משנת 1968:"Go To Statement Considered Harmful". המאמר לא הזכיר שפת תכנות מסוימת אלא הצהיר שהשימוש המוגזם ב־GOTO מזיק בשל כמה סיבות טכניות. במאמר סרקסטי משנת 1975"How do We Tell Truths that Might Hurt" ("כיצד אנו מבחינים באמיתות שעלולות לכאוב"), *Sigplan Notices* Volume 17 No. 5, דייקסטרה מביא רשימה של "אמיתות" לא נוחות, כולל את דעתו על מספר שפות תכנות דאז, כמו BASIC. BASIC לא ספגה ביקורת חריפה יותר מאשר PL/I, COBOL או APL;
8. ↑  *Tiny BASIC*, 2023-11-15, נבדק ב-2023-12-16
9. ↑  BBC BASIC, www.bbcbasic.co.uk
10. ↑  MiniBasic
11. ↑  מדוע ג'וני לא יכול לתכנת
12. ↑  *A Manual for BASIC, the elementary algebraic language designed for use with the Dartmouth Time Sharing System*
13. ↑  BASIC - Beginners All-purpose Symbolic Instruction Code

|  |  |
| --- | --- |
| בקרת זהויות עריכת הנתון בוויקינתונים | 
* NLI: 987007284639805171
* BnF: cb11939574k (data)
* GND: 4004624-2
* LCCN: sh85012076
* NKC: ph117376
* SUDOC: 027330176

 |