BASIC

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
Gnome-colors-edit-find-replace.svg יש לשכתב ערך זה. ייתכן שהערך מכיל טעויות, או שהניסוח וצורת הכתיבה שלו אינם מתאימים.
אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה.

BASIC הוא כינוי למשפחה של שפות תכנות הנחשבות לידידותיות למשתמש וקלות לתכנות. בזכות תכונות אלו, הן זכו לפופולריות רבה בעבר. קוד BASIC מורץ על פי רוב על ידי מפרש (Interpreter), כלומר תוכנה הקוראת את הקוד ומריצה אותו שורה אחר שורה (זאת בניגוד למהדר (Compiler) שמתרגם את הקוד לשפת מכונה, אשר ניתנת להרצה בכל זמן ללא זיקה לקוד המקורי). בחלק מסביבות הפיתוח שהתפתחו משפה זו קיימות גם יכולות הידור, אך לרוב ביצועי קובצי הרצה המתקבלים מהן נחותים לעומת קובצי הרצה שהתקבלו ממהדרים של שפות מהירות כגון C או C++‎.

מבוא[עריכת קוד מקור | עריכה]

BASIC נוצרה בשנת 1963 בקולג' דרטמות, כשפת תכנות פשוטה וקלה ללמידה, שתוכל לשמש כשפת תכנות ראשונה לצורכי לימוד. מטרה זו באה לידי ביטוי בשמה של השפה, BASIC, שהוא ראשי תיבות של Beginners All-purpose Symbolic Instruction Code.‏[1]

בסוף שנות ה-70 ובתחילת שנות ה-80, עם תחילת התפוצה הנרחבת של המחשבים האישיים ועוד לפני הופעת המחשב האישי (PC) של יבמ בשנת 1981, זכתה BASIC להצלחה רבה על מחשבים כגון אטארי, קומודור, סינקלייר ועוד. ראשיתה של חברת מיקרוסופט הייתה בפיתוח מהדרי BASIC. למרות קיומו של תקן ANSI לשפה נוצרו בתקופה זו ניבים שונים מאוד של BASIC, שלחלקם אף לא היו כמעט פקודות משותפות.

חברת מיקרוסופט צירפה למערכת ההפעלה שלה DOS מפרש של BASIC (עד גרסה 5 של DOS נעשה שימוש בניב שנקרא BASICA, ולאחר מכן QBASIC) ולכן שפת התכנות נשארה בשימוש. כאשר הופיעה מערכת ההפעלה חלונות, פיתחה חברת מיקרוסופט את שפת Visual Basic, בהתבסס על התחביר המקובל של שפת BASIC. שפת הVisual Basic היא, כנראה, הניב הנפוץ ביותר של BASIC כיום. זמן קצר לאחר מכן הוציאה מיקרוסופט גרסה של Visual Basic גם עבור DOS.

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

בגרסאותיה המקוריות (ובמידה פחותה גם כיום), היו שורות הקוד ממוספרות ונעשה שימוש רב בפקודות GOTO, המורות למפרש לעבור לביצוע שורת קוד אחרת מהשורה העוקבת. נטען כי שימוש זה גורם לחוסר מבניות בקוד ומקשה על מעקב אחר השתלשלותה והרצתה של התוכנה. עם זאת, שפות הVisual 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 ובשפות אחרות הוא תרגול תכנותי מגונה.‏[2] בנוסף, מומחים אחרים טענו ש-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 ואילך), ואפילו תכנות מונחה עצמים עם הורשה בגרסה האחרונה. ניהול זיכרון הוא קל יותר מאשר בשפות תכנות פרוצדורליות רבות אחרות בשל אוסף הזבל הכלול שם בדרך-כלל.

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

פרוצדרות ובקרת זרימה[עריכת קוד מקור | עריכה]

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

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

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

טיפוסי נתונים[עריכת קוד מקור | עריכה]

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

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

לכל דיאלקט בייסיק מודרני קיימים טיפוסי מספר ומחרוזת. טיפוסי נתונים בדרך-כלל מובחנים על ידי תו-מבחין ("sigil") שנוסף בסוף; באופן טיפוסי, מזהי מחרוזת מסתיימים עם '$', בעוד שמספרים שלמים בדרך-כלל מסתיימים עם '%'. במספר דיאלקטים, משתנים חייבים להיות מוצהרים לפני השימוש הראשון בהם (באמצעות הצהרת ה-DIM); דיאלקטים אחרים אינם דורשים זאת, אבל יש להם אפשרות לחייב זאת - בדרך כלל בשימוש בהוראה כמו Option Explicit (בעברית "אפשרות של מפורש"). לדוגמה, ב-ויז'ואל בייסיק הצהרת משתנים מפורשת איננה בגדר חובה, אך ניתן לתת הנחיה למפרש/מהדר לבדוק שכל המשתנים הוגדרו - באמצעות ההוראה 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" של השפה כדי להציג את ההודעה (כמו שמו של המתכנת) על המסך. פעמים רבות, נעשה שימוש בלולאה אינסופית כדי למלא את התצוגה בהודעה.

בייסיק קלאסי[עריכת קוד מקור | עריכה]

ראוי לציין שדוגמה זו היא מובנית היטב - מה שמדגים שהשימוש בפקודת GOTO אינו בהכרח מביא לתוכנית לא מובנית.

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

בייסיק מודרני[עריכת קוד מקור | עריכה]

דיאלקטים מובנים "מודרניים" של בייסיק (לדוגמה 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 בשם "בסיסית", שבו הקוד נכתב באמצעות אותיות עבריות.

מראי מקום[עריכת קוד מקור | עריכה]

סטנדרטים[עריכת קוד מקור | עריכה]

  • 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"

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ ראשי התיבות הופיעו בשמו של מאמר שלא פורסם של תומאס קורץ והן אינן ראשי תיבות שהומצאו בדיעבד כפי שלעתים נטען.
  2. ^ ראו את מכתבו של דייקסטרה משנת 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;