ቤሲክ (BASIC)

ከውክፔዲያ
(ከባሲክ (basic) የተዛወረ)

በኮምፒውተር ፍርገማ (ፕሮግራሚንግ) ዘርፍ ቤሲክ (BASIC) የሚሰኘው የከፍተኛ ደረጃ ፍርገማ ቋንቋዎችን የሚያዝል ቤተሰብ ነው። የቃሉም ትርጉም 'መሰረታዊ' ወይም 'ቀላል' ቢሆን የተሰየመው ግን ከእንግሊዝኛው Beginner's All-purpose Symbolic Instruction Code አኅጽሮተ ቃል ነበረ። ይህም ማለት "የጀማሪዎች ሙሉ-ምክንያት ምልክታዊ ትምህርታዊ ኮድ" የሚያሕል ነው።

ቤሲክ መጀመሪያ በ1963 እ.ኤ.አ.ኮምፒውተር ዘርፍ ውጭ የሚያጥኑ ተማሪዎች ኮምፒውተሮች ይጠቀሙ ዘንድ ጆን ጆርጅ ኬሜኒቶማስ ዩጂን ኩርትዝ አበጅተው በዳርትመ ከሌጅ አቀረቡት። በጊዜው እያንዳንዱ ኮምፒውተር ሌሱ የሚሆን ሶፍትዌር መጻፍ ይጠይቅ በነበረበት ሁኔታ በሳይንስና በሂሳብ የተሰማሩ ሰዎች ብቻ የመስራት ዝንባሌ ነበሯቸው። ቤሲክ በሰማኒያዎቹ (እ.ኤ.አ.) በቤት ኮምፒውተሮች የተሰራጨ ሲሆን፥ ዛሬም በአንዳንድ በጣም በተለወጡ ቋንቋዎች አማካኝነት ተጠቃሚዎች አሉት።

ታሪክ[ለማስተካከል | ኮድ አርም]

ክ1960ዎቹ (እ.ኤ.አ.) አመታት መሃክል በፊት ኮምፒተሮች በጣም ውድና ለተወሰኑ አላማ ባላችው ስራሞች ላይ የተወሰኑ መሳሪያዎች ነበሩ። ቀላል የባች ሂደቶች (batch processing) አይነቶችን በመጥቀም በአንድ ጊዜ አንድ ስራ ብቻ ይሰሩ ነበር። በ1960ዎቹ ውስጥ የኮምፒውትር ዋጋ የትንንሽ ድርጅቶት የግዢ አቅም እስከሚፈቅደው ድረስ አሽቆለቆል። ፍትነታቸውም ክመጨመሩ የተነሳ የለስሯ የሚቀመጡበት ጊዜ ይበዛ ጀመር። የዘመኑ የፕሮግራም ቋንቋዎች አሰራር ልክ እንደ ማሽኖቹ ለተውሰኑ ሰራዎች የታለሙ (እንደ ሳይንስ ነቅ ፎርሙላዎች ወይም የጽሁፍ ሰሌዳዎች) ነበሩ። እነዚህ ባንድ ስራ የተወሰኑ ማሽኖች በመወደዳቸው፥ የቋንቋዎቹ የአሰራር ፍጥነት ከሁሉም ግጽታዎች የላቀ ወሳኝነት ነበረው። ባብዛኛው እነዚህን ቋንቋዎች መጠቀም አስቸጋሪና ሥርአት አገባችው (syntax) በጣም የተለያየ ነበር።

በዚህ ጊዜ ነው የጊዜ መጋራት (time sharing) ሃሳብ ተቀባይነት እያገኘ የመጣው። በዚህ ሲስተም ስር የዋና ማሽን የስራ አቅም ይከፋፈልና እያንዳንዱ ተጠቃሚ በየተራው አነስተኛ ጊዜ ይሰጠዋል። እነዚህ ማሽኖች በቂ ፍጥነት ስለነበራቸው አብዛኛው ተጠቃሚ ለራሱ አንድ ማሽን የተመደበለት ያስመስሉት ነበር። በቴዎሪ ደረጃ የጊዜ መጋሯት ለኮምፒውትር የሚወጣውን ወጪ በእጭጉ ቅንሰዋል:: በመቶ ለሚቆጠሩ ተጠቃሚዎች አንድ ማሺን ይበቃ ስለነበር።


የመጀመሪያዎቹ አመታት[ለማስተካከል | ኮድ አርም]

...

ታላቅ እድገት ። የቤት ኮምፒውትር ዘመን[ለማስተካከል | ኮድ አርም]

...

ብስለት — የግል ኮምፒውተር ዘመን[ለማስተካከል | ኮድ አርም]

...


ቋንቋው[ለማስተካከል | ኮድ አርም]

ሥርአት አገብ (Syntax)[ለማስተካከል | ኮድ አርም]

የቤሲክ አረፍተ የመስመር መቀጠያ ፊደል ከሌለ መስመር መጨረሻ ላይ ያልቃሉ። በጣም አነስተኛ ቤሲክ LET, PRINT, IF and GOTO የሚሉት ትእዛዞች ይበቁታል::

የመስመር ቁጥሮች የቤት ኮምፒውተር ቤሲክን ከሚለዩ ገጽታዎች አንዱ ነው። አንዳንድ ቆይተው የመጡ የቤሲክ ተርጓሚዎች (interpreters) አምበሮ የሚመጡ RENUMBER የሚባል መስመር ቆጣሪ ትእዛዝ ነበራችው ።

አንዳንድ ዘምዝናዊ ባሲኮች የመስመር ቁጥርን ትተው አብዛኛው በሌሎች ቋንቋዎች (እንደ ፓስካል) የሚታወቁትን የመዝገብና (data) የመቆጣጠሪያ (control) አቀማመጥን አስገብተዋል። (አንዳንድ በመስመር ቁጥር ላይ የተመሰረቱም ቋንቋዎች እነዚህን አቀማመጦች ማስገባታችውን መመዝገብ ያሻል።)

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

በቅርብ የተሰሩ እንደ ቪሱአል ቤሲክ (Visual Basic) የቤሲክ ተዛማጆች እቃ አዘል ገጽታዎችን እንደ For Each...Loop ያሉ አቀማመጦችን ሰብስቦችና ተርታዎችን በጥምዝ (loop) ለመፈተሽ ቪሱአል ቤሲክ 4 አንስቶ ሲያስገቡ ብእቃ አዘለ ፍርግምና ውርስ ተብሎ የሚታወቀውን አሰራር በመቅረብ አስገብተዋል። የማህደረ እውስታ (memory) አስተዳደር ዘዴው ካብዛኛው የተደራጁ ቋንቋዎች የቀለለ ነው። ይህም ሊሆን የቻለው ቋንቋው garbage collection ወይም የቆሻሻ ሰብሳቢ ይዞ ስለሚመጣ ነው::


አደረጃጀትና የፍሳሽ ቁጥጥር[ለማስተካከል | ኮድ አርም]

ቤሲክ እንደ ሲ የውጭ ቤተ መጻህፍት (external library) የለውም። የቋንቋው ተርጓሚ (interpreter) ሰፊ ቤተ መጻህፍትና አብረውት የተገነቡ ፕሮሲጀሮች (procedures) ይይዛል: ለነዚህ ፕሮሲጀሮች አንድ ፈርጋሚ ሙያውን ለመማርም ሆነ ቀለል ያሉ ፕሮግራሞችን ለመጻፍ የሚያስፈልጉትን አብዛኞቹን መሳሪያዎች (የሂሳብ ተግባሯትን፥ የፊደል ክር-string, የማስገቢያና የማሶጪያ መስኮት፥ የስዕልና የመዘገብ መሳሪያ) ያካትታል። አንዳንድ የቤሲክ ቤተሰብ አባል ቋንቋዎች ፈርጋሚው የራሱን ፕሮሲጀሮች እንዲጽፍ አይፈቅዱም:: ፈርጋሚው ከአንድ ቅርንጫፍ ወደሌላ ለመዘዋወር በዛት GOTOን በመጠቀም ፕሮግራሙን ይጽፋል። የዚህ ውጤት ደግሞ ለአንባቢ እጅግ አስቸጋሪ የሆነ የፕሮግራም ምንጭ (source)፥ በተለምዶ "እንደ ፓስታ የተወሳሰበ" ወይም spagetti code፥ አይነት ይሆናል። GOSUB የቅርንጫፍ ዝውውሩን የሚያደርገው ወደ ንዑስ ክንውኖች (አነስተኛ የፕሮግራም አካሎች) ሲሆን ባብዛኛው ያለግቤት (parameters)ና ያለሰፈር ተለዋጭ (local variable) ነው። ዘመናዊ የቤሲክ ስሪቶች እንደ ሚክሮሶፍት ኪክ ቤሲክ ሙሉ ንዑስ ክንውኖችንና (subroutines) ተግባራትን (functions) አስገብተዋል። ይህ ቤሲክ ከሌሎች ቋንቋዎች የሚለይበት አንዱ ገጽታው ነው። ቤሲክ፥ እንደ ፓስካል፥ መልስ በማይጠበቅባቸው ፕሮሴጀሮችና (ንዑስ ክንውኖች የምንላቸው) መልስ በሚሰጡት (ተግባራት) መሃከል ልዩነት ያደርጋል። ሌሎች እንደ ሁሉንም በተግባራት ስያሜ (አንዳንዶቹን ባለ ባዶ መልስ በማለት) ለዩነትን አያደርጉም።

የመዝገብ አይነቶች[ለማስተካከል | ኮድ አርም]

ቤሲክ ለፊደል ክሮች (strings) ስሪ የሚያገለግሉ ጥሩ ተግባራት ያለው ቋንቋ እንደሆነ ይታወቃል። የቀድሞው የዚሁ ቤተሰብ ቋንቋዎች እንደ (LEFT$, MID$, RIGHT$) የመሳሰሉት መሰረታዊ ተግባራት በማቀፍ የፊደል ክሮችን የሚመለከቱትን ስራዎች ያቃልላሉ። የፊደል ክሮች የለት ተለት ስራዎች ላይ በተደጋጋሚ ሰላሚያጋጥሙ ከሌሎች የዘመኑ ቋንቋዎች በዚህ ረገድ ብልጫ አሳይቷል።

የቀድሞው የዳርትሙንት ቤሲክ ለቁጥርና ለፊደል ክር አይነቶችን ብቻ ድጋፍ ይሰጥ ነበር። የሙሉ ቁጥሮች (integers) አይነቶች አልነበሩም። ቁጥሮች በሙሉ ባለነጥብ (floating points) ነበሩ። የፊደል ክሮች አለ ተለዋዋጭ ርዝመት ነበሩ። ቤሲክ የፊደል ክርም ሆነ የቁጥር ተርታዎችን (arrays) እንዲሁ ባለሁለት ማአዘን ተርታዎችን የሚደግፍ ወይም የሚይዝ ቋንቋ ነበር።

ማንኛው ዘምዝናዊ የቤሲክ ቤተሰብ ቋንቋ ቢያንስ ቁጥሮችንና የፊደል ክሮችን ይይዛል። ...

ምሳሌ[ለማስተካከል | ኮድ አርም]

የመጀመሪያ የቤሲክ ፕሮግራም ወይም ፍርግም[ለማስተካከል | ኮድ አርም]

ጀማሪ የቤሲክ ፈርጋሚዎች የቤት ኮምፒውትሯቸው ላይ የሚጀምሩት በ ከርኒጋንና ሪቺ አማካኝነት እውቅና ያገኘውን ሰላም አለም ፍርግም አይደለም። ይልቁኑ የሚቀጥለውን የማያባራ ጥምዝ የሚመስል ነው።


10 PRINT "BOB IS AWESOME!"
20 GOTO 10

ክላሲክ ወይም የቀድሞው ቤሲክ[ለማስተካከል | ኮድ አርም]

ክላሲክ ወይም የቀድሞው ቤሲክ፤ ይህ ምሳሌ በስራአት የተደራጀ መሆኑን 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

ዘምዝናዊ ቤሲክ[ለማስተካከል | ኮድ አርም]

"ዘምዝናዊ" የተደፘጀው ቤሲክ (ለምሳሌ፥ ኩኢክቤሲክፓወርቤሲክ), GOTO የተሰኘውን ቃል በዘመናዊ ቃላት ተክተው።

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


Notes[ለማስተካከል | ኮድ አርም]


References[ለማስተካከል | ኮድ አርም]

Standards[ለማስተካከል | ኮድ አርም]

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