BASIC
| פרדיגמות |
non-structured programming, תכנות פרוצדורלי, תכנות אימפרטיבי, תכנות מונחה-עצמים |
|---|---|
| תאריך השקה |
1964 |
| מתכנן |
ג'ון קמני |
| מפתח |
Thomas Eugene Kurtz, ג'ון קמני, מרי קנת' קלר |
| הושפעה על ידי |
Fortran, JOSS, FORTRAN II, ALGOL |
| סיומת |
bas |
BASIC (ראשי תיבות של Beginners’ All-purpose Symbolic Instruction Code, בתרגום חופשי: קוד הוראות סמלי רב־תכליתי למתחילים) היא משפחה של שפות תכנות עיליות שתוכננו להיות נגישות ללומדים ולמשתמשים חסרי הכשרה מקצועית בתכנות. השפה המקורית תוכננה בשנת 1963 בידי ג'ון קמני ותומאס קורץ בדארטמות' קולג', והופעלה לראשונה במאי 1964 כחלק ממערכת חלוקת זמן של המכללה. בשנות ה־1970 וה־1980 הייתה BASIC לאחת משפות התכנות הנפוצות במחשבים ביתיים, ובהמשך התפתחו ממנה ניבים ושפות כגון QuickBASIC, Visual Basic ו־Visual Basic for Applications.[1][2]
ל־BASIC אין מימוש או תחביר יחיד המחייבים את כל הניבים: כמה גרסאות פועלות באמצעות מפרש, אחרות באמצעות מהדר, ותכונות כגון מספור שורות, טיפוסי נתונים ותכנות מונחה־עצמים משתנות בין המימושים. לצד גרסאות BASIC שנועדו ללימוד ולעבודה אינטראקטיבית, נוצרו גם סביבות לפיתוח תוכנה מקצועית.
מקורות השפה ומטרותיה
[עריכת קוד מקור | עריכה]באמצע המאה ה־20 דרשה העבודה במחשבים היכרות טכנית נרחבת, ולעיתים נעשתה בשיטת עיבוד באצווה: המשתמש מסר תוכנית להפעלה והמתין לקבלת תוצאותיה. קמני וקורץ ביקשו לאפשר לסטודנטים מתחומי לימוד שונים לכתוב תוכניות בעצמם, בלי תלות במתכנתים מומחים. הם פיתחו במקביל את מערכת Dartmouth Time-Sharing System (DTSS), שאפשרה למשתמשים להפעיל תוכניות ממסופים מרוחקים ולחלוק את זמן המעבד.[1]
שמונת העקרונות שעמדו מאחורי פיתוח השפה, כפי שהם מתוארים בסקירות על Dartmouth BASIC, היו:
- קלות שימוש למתחילים.
- התאמה לתכנות למטרות כלליות.
- אפשרות להוספת יכולות מתקדמות מבלי לפגוע בפשטות המערכת.
- אינטראקטיביות והידוד עם המחשב.
- הודעות שגיאה ברורות וידידותיות.
- תגובה מהירה לתוכניות קצרות.
- היעדר צורך בהיכרות עם פרטי החומרה.
- יצירת חציצה בין המשתמש לבין מערכת ההפעלה.
הרעיונות הללו נועדו לשנות את אופן ההוראה והשימוש במחשב, ולא רק לפשט את אוצר הפקודות של שפת תכנות. היא הושפעה משפות מוקדמות, ובהן FORTRAN II ו־ALGOL 60, וכן מהניסיון שנצבר במערכות JOSS ו־CORC. בדארטמות' עצמה קדמו לה ניסויים בשפות הוראה בשם DARSIMCO משנת 1956 ו־DOPE משנת 1962. עם זאת, BASIC ביקשה להיות קלה יותר ללימוד. Dartmouth BASIC תמכה בפעולות חשבון, בהשמות, בחזרות ובפעולות על מטריצות; הרחבות מאוחרות הוסיפו יכולות נוספות, ובהן טיפול משוכלל במחרוזות. המימוש הראשוני במערכת דארטמות' השתמש במהדר, בניגוד לדימוי המאוחר של BASIC כשפה מפורשת בלבד.[1]
היסטוריה
[עריכת קוד מקור | עריכה]מחשבים מרכזיים ומיני־מחשבים
[עריכת קוד מקור | עריכה]הפצת BASIC התאפשרה בזכות מוסדות לימוד, מערכות חלוקת זמן ומחשבים קטנים יחסית לתקופתם. ניבים שונים הותאמו למערכות של דיגיטל אקוויפמנט קורפוריישן (DEC), Data General ויצרניות אחרות. סדרת HP 2000 של היולט פקארד הציעה סביבת BASIC מרובת משתמשים. ניבים מוקדמים שימשו גם לכתיבת משחקים ותוכניות חינוכיות; משחקי מחשב שעברו ממערכת למערכת הצריכו לעיתים התאמה להבדלים בתחביר ובפקודות.[2]
במערכת דארטמות' נעשה שימוש במחשבי General Electric, ובכללם צירוף GE-225 ו־DATANET-30. מערכות אלה אפשרו למספר משתמשים להפעיל תוכניות במקביל, באמצעות חלוקת זמן. דארטמות' הפיצה את השפה ואת הידע עליה למוסדות חינוך אחרים.[3]
הצלחת BASIC לא הייתה רק תוצאה של תחביר פשוט: מגוון מערכות מיני־מחשבים, ובהן מחשבי PDP-11 ו־Data General Nova, אימצו מפרשים או מהדרים של השפה, והגישה באמצעות מסופים הרחיבה את מעגל המשתמשים. בד בבד התעוררה ביקורת על שימוש מופרז בפקודת GOTO. אדסחר דייקסטרה פרסם בשנת 1968 מאמר נגד שימוש בלתי מרוסן בקפיצות כאלה; הטיעון היה עקרוני לגבי מבנה תוכניות, ולא הוגבל לשפת BASIC.[4]
המיקרו־מחשבים והמחשבים הביתיים
[עריכת קוד מקור | עריכה]עם הופעת Altair 8800 בשנת 1975 פותח עבורו Altair BASIC בידי ביל גייטס, פול אלן ומונטה דוידוף. היה זה המוצר הראשון של החברה שהפכה למיקרוסופט. בתקופה זו הופיעו גם מימושים קטנים כגון Tiny BASIC, שנועדו לפעול במחשבים שזיכרונם היה מוגבל במיוחד. חלק מניבי BASIC הוכנסו לזיכרון ROM של מחשבים ביתיים, כך שהיה אפשר להפעילם מיד עם הדלקת המחשב. פתרון זה התאים למחשבים בעלי זיכרון מצומצם, ללא כונן דיסקים, שבהם תוכניות נשמרו לעיתים על סרטי נייר או על קלטות שמע.
Tiny BASIC הופיעה במהלך שנות ה־1970 כתגובה לצורך במפרש קטן המתאים למחשבי 8 סיביות דלי זיכרון. בין השמות הקשורים להתפתחותה נמצאים דניס אליסון ולי־צ'ן ואנג, ופרסומים של המיזם הופיעו בכתב העת Dr. Dobb’s Journal בשנת 1976. להיסטוריה של Tiny BASIC יש להבחין בין תכנון המפרש, גרסאותיו השונות והסבות למחשבים מסוימים.[5]
בין המחשבים שנמכרו עם ניבי BASIC נמנו מחשבים של קומודור 64, אטארי, סינקלייר ו־Acorn Computers. ב־BBC Micro פעל BBC BASIC, שפותח בידי Acorn לפרויקט המחשוב של BBC, וכלל יכולות תכנות מובנה מתקדמות יחסית לחלק מניבי המחשבים הביתיים, וכן אפשרות לשלב פקודות אסמבלר במתכונת התואמת למערכת. בהמשך נוצרו הסבות שלו לפלטפורמות אחרות.[6] מגזיני מחשבים, ובהם Creative Computing, פרסמו תוכניות שלמות להקלדה, וכך התנסו משתמשים רבים בתכנות משחקים, גרפיקה ויישומים פשוטים. ספרים ומגזינים הציעו גם תרגילי "נסה זאת ב־BASIC", שסייעו להנגשת תכנות בבתי ספר ובבתים. הסופר דייוויד ברין התייחס בדיעבד לאובדן סביבת תכנות זמינה כברירת מחדל במחשבים חדשים, במאמרו "Why Johnny Can't Code" משנת 2006.[7] עם זאת, תוכניות שנכתבו עבור מחשב מסוים לא פעלו בהכרח ללא שינוי בניב BASIC של מחשב אחר.[2]
המחשב האישי וניבים מובנים
[עריכת קוד מקור | עריכה]בשנות ה־1980 הופיעו למחשבי IBM PC ולמערכות DOS מימושים כגון BASICA, GW-BASIC ו־QuickBASIC. גרסאות מתקדמות הוסיפו פרוצדורות, משתנים מקומיים, בקרה מובנית ותמיכה משופרת בקבצים, בגרפיקה ובטיפוסי נתונים. QBasic הופץ עם גרסאות של MS-DOS כסביבת תכנות ולימוד, ואילו QuickBASIC כלל גם אפשרויות הידור. יצרנים אחרים פיתחו ניבים משלהם ובהם Turbo BASIC של בורלנד, שפותח בשנות ה־1980, ובהמשך PowerBASIC. בין מימושי BASIC שהתקיימו במערכות עסקיות היו גם גרסאות מהודרות, כגון CBASIC, ששימשו בתוכנות ייעודיות ובמערכות מסחריות. השימוש בניבים כאלה נבדל מהשימוש החינוכי של מפרשי BASIC במחשבים ביתיים.
באותן שנים פחת הצורך של משתמשים רבים לכתוב בעצמם תוכניות, משום שמחשבים אישיים החלו להגיע עם מגוון יישומים מוכנים. עם זאת, BASIC לא נעלמה: היא נשארה בכלים ללימוד, בתחזוקת תוכנות ותיקות ובסביבות פיתוח חדשות.
בשנת 1991 הציגה מיקרוסופט את Visual Basic, ששילבה תחביר ממשפחת BASIC עם כלי לבניית ממשקי משתמש גרפיים. בהמשך התפתחו Visual Basic .NET ו־Visual Basic for Applications (VBA), המשמשת לאוטומציה של יישומים. שפות אלה שונות בכמה היבטים מהניבים המוקדמים, ואין לזהות אותן עם מפרש BASIC של מחשב ביתי.[8]
ניבים ומימושים נוספים כוללים את True BASIC, שהמשיכה חלק ממסורת Dartmouth BASIC; Bywater BASIC, מפרש חופשי; FreeBASIC, מהדר בקוד פתוח; BASIC09; ומימושים מצומצמים כגון MiniBasic, שנכתב בשפת C. כל אחד מאלה מייצג החלטות תכנון שונות ואינו מימוש שקול של תקן אוניברסלי אחד. המעבר בין ניבים דורש לעיתים התאמות, בעיקר במבני בקרה, בטיפוסי נתונים ובקלט־פלט.
בשנת 2008 הציגה מיקרוסופט את Microsoft Small Basic, סביבת לימוד שמטרתה להקל על צעדים ראשונים בתכנות. לצד מימושים חדשים נשמר עניין בניבים ותיקים, הן לצורכי חינוך והן כחלק משימור ההיסטוריה של המחשוב. בשנת 2025 פרסמה מיקרוסופט ברישיון קוד פתוח גרסה היסטורית של BASIC למעבדי 6502.[5]
מבנה השפה
[עריכת קוד מקור | עריכה]מספור שורות ופקודות
[עריכת קוד מקור | עריכה]בגרסאות BASIC קלאסיות כללה כל הוראה מספר שורה. המספר שימש לזיהוי השורה ולמעבר אליה באמצעות פקודות כגון GOTO או GOSUB. דוגמה בסיסית למימוש התומך במספור שורות:
10 INPUT "What is your name"; N$
20 PRINT "Hello "; N$
30 END
בגרסאות מאוחרות יותר אפשר לכתוב תוכניות ללא מספור שורות ולהשתמש בבלוקים מובנים. לא כל פקודה הנתמכת בניב אחד קיימת בניבים אחרים; גם השימוש בסימן הדולר בסוף שם משתנה מחרוזת אופייני לניבים מסוימים ואינו כלל של כל משפחת BASIC.
בקרה ופרוצדורות
[עריכת קוד מקור | עריכה]פקודות כגון IF ... THEN, FOR ... NEXT ו־GOTO שימשו לשליטה בזרימת התוכנית. הרחבות מאוחרות הוסיפו מבנים כגון DO ... LOOP, SELECT CASE ופרוצדורות בעלות שמות. השימוש הרב בקפיצות לא מותנות בניבים מוקדמים עורר ביקורת במסגרת התפתחות התכנות המובנה. עם זאת, אין להסיק שכל תוכנית BASIC, או כל ניב מאוחר, מחייבים כתיבה בלתי מובנית.
ספריות, שגרות ופונקציות
[עריכת קוד מקור | עריכה]בניבי BASIC מוקדמים סיפק המפרש עצמו פקודות ופונקציות שימושיות רבות: חישובים מתמטיים, קריאת נתונים, כתיבה למסוף ולעיתים גרפיקה וטיפול בקבצים. בחלק מהמימושים ניתן היה להגדיר פונקציות קצרות באמצעות DEF FN; פקודת GOSUB אפשרה להעביר שליטה לקטע קוד ולהחזיר אותה באמצעות RETURN, אף שבמימושים בסיסיים לא הייתה בכך שקילות מלאה לפרוצדורה עם פרמטרים ומשתנים מקומיים. בגרסאות מתקדמות יותר, כגון QuickBASIC, נוספו שגרות ופונקציות בעלות שמות, העברת ארגומנטים ותמיכה במשתנים מקומיים. ההבחנה בין פונקציה המחזירה ערך לבין שגרה שאינה מחזירה ערך מקובלת בחלק מן הניבים; היא אינה זהה בכל גרסאות המשפחה.
משתנים, מחרוזות ומערכים
[עריכת קוד מקור | עריכה]בגרסאות שונות של BASIC תמכו במשתנים מספריים, במחרוזות ובמערכים. בחלק מן הניבים שם משתנה המסתיים בסימן $ מציין מחרוזת, ובניבים אחרים קיימות הצהרות טיפוסים מפורשות. פקודות ופונקציות נפוצות כוללות DIM להגדרת מערך ו־LEFT$, MID$ ו־RIGHT$ לטיפול במחרוזות. טווחי האינדקסים, ברירות המחדל וסוגי הנתונים תלויים בניב; למשל, ההוראה OPTION BASE מופיעה בחלק מהניבים לקביעת בסיס האינדקסים.
ניבים מסוימים מסמנים משתני מספר שלם בסיומת %, בעוד שניבים אחרים מאפשרים הצהרות מפורשות באמצעות AS INTEGER, AS STRING וסוגים נוספים. ב־Visual Basic ניתן להשתמש ב־Option Explicit כדי לדרוש הצהרה מראש על שמות משתנים, ולצמצם טעויות הקלדה בשמותיהם. בשפות BASIC מתקדמות קיימים גם טיפוסים מורכבים יותר, טיפוסים שהגדיר המשתמש, מערכים מרובי ממדים ולעיתים מנגנוני ניהול זיכרון אוטומטיים.
דוגמאות להצהרת מערכים
[עריכת קוד מקור | עריכה]בחלק מהגרסאות של BASIC התומכות בהצהרת טיפוסים אפשר לכתוב:
DIM myIntArray(100) AS INTEGER
DIM myStringArray(50) AS STRING
בניבים אחרים הסיומת של שם המשתנה מסמנת את טיפוסו:
DIM myIntArray%(100)
DIM myStringArray$(50)
כאשר בסיס האינדקסים הוא 0 והגבול העליון כלול בטווח, DIM myIntArray(100) עשויה להקצות איברים ממוספרים 0 עד 100, כלומר 101 איברים. כאשר בסיס האינדקסים הוא 1, אותה פקודה עשויה להקצות 100 איברים. אין להסיק את מספר האיברים מן הדוגמה בלי לבדוק את הניב המסוים ואת הגדרת גבולות המערכים בו.
אופרטורים
[עריכת קוד מקור | עריכה]| אופרטור | משמעות מקובלת |
|---|---|
= | שוויון בהשוואה; בחלק מהניבים גם השמה, בהתאם להקשר |
<> | שונה מ־ |
> | גדול מ־ |
< | קטן מ־ |
>= | גדול או שווה ל־ |
<= | קטן או שווה ל־ |
AND, OR, NOT | פעולות לוגיות; בחלק מהניבים גם פעולות על סיביות |
המשמעות המדויקת של פעולות על ערכים בוליאניים, אופן חישוב ביטויים וקדימות אופרטורים עשויים להשתנות בין מימושי BASIC. לפיכך יש להסתמך על התיעוד של הניב שבו נכתבת התוכנית.
תקינה והבדלים בין ניבים
[עריכת קוד מקור | עריכה]נעשו ניסיונות לתקנן חלקים משפת BASIC, ובהם תקן ANSI X3.60-1978, שעסק ב־Minimal BASIC, ותקן ANSI X3.113-1987 ל־Full BASIC. אולם בפועל פותחו ניבים רבים עם הרחבות שונות, בין השאר לצורך גישה לגרפיקה, לקול, לקבצים ולחומרה של יצרנים מסוימים. תאימות ברמת השם BASIC אינה מבטיחה שתוכנית תעבור מניב לניב ללא שינויים.
תקני BASIC המרכזיים כוללים גם את ANSI X3.60-1978 ו־ISO 6373:1984 ל־Minimal BASIC, ואת ANSI X3.113-1987 ו־ISO/IEC 10279:1991 ל־Full BASIC. לתקן Full BASIC נוסף תיקון ISO/IEC 10279:1991/Amd 1:1994 העוסק במודולים ובקלט תו יחיד. העובדה שנקבעו תקנים אינה מעידה שכל הניבים והמהדרים פעלו לפיהם במלואם.
דוגמאות
[עריכת קוד מקור | עריכה]תוכנית קלאסית
[עריכת קוד מקור | עריכה]התוכנית הבאה, בסגנון BASIC קלאסית, מקבלת שם ומדפיסה ברכה מספר פעמים:
10 INPUT "Name"; N$
20 FOR I = 1 TO 3
30 PRINT "Hello, "; N$
40 NEXT I
50 END
תוכנית ללא מספרי שורות
[עריכת קוד מקור | עריכה]דוגמה לניב מתקדם התומך בפרוצדורות ובבקרה מובנית:
INPUT "Name"; N$
FOR I = 1 TO 3
PRINT "Hello, "; N$
NEXT I
END
הדוגמאות ממחישות רעיונות מרכזיים, אך אינן מהוות מפרט תקני אחיד של כל ניבי BASIC.
BASIC בישראל
[עריכת קוד מקור | עריכה]כמו במדינות אחרות, לימוד BASIC בישראל נקשר לחדירת המחשבים הביתיים ולשיעורי מחשבים במסגרות חינוך. משתמשים הקלידו תוכניות מתוך ספרי הדרכה ומגזיני מחשבים, ועשו שימוש בניבי BASIC שסופקו עם מחשבים ביתיים ומחשבי PC. היקף השימוש המדויק, שנות ההוראה במסגרות מסוימות והיקף תרומתם של מוסדות או יצרנים ישראליים מחייבים מקורות היסטוריים ייעודיים; אין להסיק אותם מעצם הפופולריות של השפה בעולם.
השפעה ומורשת
[עריכת קוד מקור | עריכה]BASIC תרמה להפיכת התכנות לפעילות נגישה מחוץ למעבדות מחקר ולמחלקות מחשוב מקצועיות. העובדה שמשתמשי מחשבים ביתיים קיבלו סביבת תכנות כחלק מהמחשב אפשרה ללמוד עקרונות כגון משתנים, לולאות, תנאים ומערכים באמצעות ניסוי וטעייה. לצד תרומתה החינוכית, הבדלים בין הניבים והדגש על קוד עם מספרי שורות עוררו דיון על שיטות הוראה ועל איכות המבנה של תוכניות. התפתחותן של גרסאות כגון Visual Basic ממחישה כיצד שם השפה ומאפיינים מתחבירה המשיכו להתקיים גם בסביבות תכנות שונות מאוד מן המימוש המקורי.[1][2]
לקריאה נוספת
[עריכת קוד מקור | עריכה]- John G. Kemeny and Thomas E. Kurtz, BASIC: A Manual for BASIC, Dartmouth College Computation Center, 1964; מהדורה שלישית 1966. רשומה בספריית דארטמות'.
מראי מקום ותקנים
[עריכת קוד מקור | עריכה]- מדריך ההוראות המקורי של BASIC ממאי 1964, Dartmouth College Computation Center.
- ANSI X3.60-1978, Minimal BASIC.
- ISO 6373:1984, Data processing — Programming languages — Minimal BASIC.
- ANSI X3.113-1987, Programming Languages — Full BASIC.
- ISO/IEC 10279:1991, Information technology — Programming languages — Full BASIC.
- ISO/IEC 10279:1991/Amd 1:1994, Modules and Single Character Input Enhancement.
ראו גם
[עריכת קוד מקור | עריכה]קישורים חיצוניים
[עריכת קוד מקור | עריכה]- BASIC, באתר אנציקלופדיה בריטניקה (באנגלית)
שפת תכנות מחשבים, ביסיק, דף שער בספרייה הלאומית- BASIC at Dartmouth – תולדות השפה באתר דארטמות'.
- מדריך BASIC ההיסטורי – רשומה בספריית דארטמות'.
- תיעוד Visual Basic באתר מיקרוסופט.
- פרסום הקוד ההיסטורי של Microsoft 6502 BASIC.
הערות שוליים
[עריכת קוד מקור | עריכה]- 1 2 3 4 BASIC at Dartmouth, Dartmouth College, פרסום לציון חמישים שנה ליצירת השפה.
- 1 2 3 4 Ed Price, A Brief History of BASIC, Microsoft, 12 בפברואר 2019.
- ↑ The 1960s — Dartmouth Computing History, Dartmouth College.
- ↑ Edsger W. Dijkstra, Go To Statement Considered Harmful, Communications of the ACM, 1968.
- 1 2 Bringing BASIC Back: Microsoft’s 6502 BASIC Is Now Open Source, Microsoft Open Source, 3 בספטמבר 2025.
- ↑ BBC BASIC, אתר BBC BASIC.
- ↑ David Brin, Why Johnny Can't Code, Salon, 14 בספטמבר 2006.
- ↑ Visual Basic documentation, Microsoft Learn.