Smalltalk

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Smalltalk
Տեսակ օբյեկտ կողմնորոշված ծրագրավորման լեզու, class-based programming language և ծրագրավորման լեզու
Առաջացել է 1972
Ստեղծող Ալան Քեյ
Նախագծող Ալան Քեյ
Տիպիզացիա խիստ, դինամիկ
Հիմնական իրականացումներ Squeak, GNU Smalltalk, Dolphin Smalltalk
Ընթացիկ տարբերակ ANSI Smalltalk
Ներշնչվել է Lisp, Simula, Euler
Ներշնչել է Objective-C, Self, Java, Ruby, Scala
Կայք smalltalk.org

Smalltalk֊ը օբյեկտներին-կողմնորոշված, դինամիկ տիպիզացվող, ռեֆլեկտիվ ծրագրավորման լեզու է։ Այն 1970-ականների նախագծվել և իրականացվել է Xerox PARC կազմակերպությունում Ալան Քեյի (Alan Kay) կողմից (մասնակցությամբ Դեն Ինգալսի, Ադել Գոլդբերգի և ուրիշների), որպես ուսուցողական ծրագրավորման լեզու։

Լեզուն առաջին անգամ հրապարակվել է Smalltalk-80 անվանումով։ Հետագայում Smalltalk-ին նման լեզուները շարունակեցին ակտիվ զարգանալ և իրենց շուրջը հավաքեցին հավատարիմ օգտագործողների խմբեր։ ANSI Smalltalk տարբերակը հաստատվեց 1983 թվականին, և այժմ հանդիսանում է Smalltalk լեզվի ստանդարտ[1]։

Շարահյուսությունը[խմբագրել | խմբագրել կոդը]

Smalltalk-80 լեզվի շարահյուսություն մինիմալիստական է, հիմնված մի քանի հայտարարությունների ու ծառայողական բառերի վրա։ Փաստացի Smalltalk լեզվում կան միայն վեց ծառայողական բառեր. true, false, nil, self, super և thisContext։ Իրականում այս բառերը կոչվում են փսևդո-փոփոխականներ. այնպիսի իդենտիֆիկատարներ, որոնք ենթարկվում են փոփոխականների իդենտիֆիկատորների կանոններին, բայց չեն կարող փոփոխվել ծրագրի կողմից։ true, false և nil փսևդոփոփոխականները singleton կաղապարի նմուշներ են։ self-ը և super-ը համապատասխանաբար կապված են հաղորդագրություն ուղարկող օբյեկտին և այդ օբյեկտի դասի ծնող դասին։ thisContext-ը կապված է մեթոդի ընթացիկ ակտիվացիայի կադրին։ Լեզվի միակ ներդրված կառուցվածքներն են հաղորդագրության ուղարկումը, վերագրումը, մեթոդից արժեքի վերադարձը և օբյեկտի լիտերալային գրառումը։ Քանի որ Smalltalk-ը նախագծվում էր որպես բոլոր տարիքի երեխաների համար ծրագրավորման լեզու, կետադրությունը նրանում ավելի նման է անգլերենի կետադրությանը, այլ ոչ թե տարածված ծրագրավորման լեզուներում ընդունված կետադրությանը։ Լեզվի մյուս բոլոր կառուցվածքները, ներառյալ ճյուղավորման ու կրկնման կառուցվածքները, իրականացված են լեզվի ներդրված տարրերի օգնությամբ։

Ասացվածքը, թե «Smalltalk-ի շարահյուսությունը տեղավորվում է փոստային բացիկի վրա», կարելի է ցուցադրել Ռալֆ Ջոնսոնի գրած կոդի հատվածի օգնությամբ, որում ցուցադրված են մեթոդների բոլոր ստանդարտ շարահյուսական տարրերը[2].

exampleWithNumber: x
    | y |
    true & false not & (nil isNil) ifFalse: [self halt].
    y := self size + super size.
    #($a #a "a" 1 1.0)
        do: [ :each |
            Transcript show: (each class name);
                       show: ' '].
    ^x < y

Փոփոխականների հայտարարումը[խմբագրել | խմբագրել կոդը]

Smalltalk լեզվում օգտագործվում են երկու տեսակի փոփոխականներ՝ դասի անդամներ և լոկալ փոփոխականներ։ Լոկալ (ժամանակավոր) փոփոխականները հայտարարվում են մեթոդի մարմնի սկզբում՝ իրարից բաժանված բացատներով և ընդգրկված ուղիղ գծիկների մեջ։ Օրինակ, հետևյալ կերպ հայտարարված է index և vowels անունով փոփոխականները.

| index vowels |

Վերագրումը[խմբագրել | խմբագրել կոդը]

Փոփոխականին արժեք է վերագրվում := գործողությամբ։ Այսինքն.

vowels := 'aeiou'

արտահայտությունը նախապես հայտարարված vowels փոփոխականին վերագրում է 'aeiou' տողը։ Տողն օբյեկտ է, որը կոմպիլյատորի կողմից ստեղծվում է կոմպիլյացիայի ժամանակ։

Հաղորդագրությունները[խմբագրել | խմբագրել կոդը]

Հաղորդագրությունը Smalltalk լեզվի հիմնարար կառուցվածքն է։ Նույնիսկ ղեկավարող կառուցվածքներն են իրականացված հաղորդագրությունների ուղարկման միջոցով։

Հետևյալ օրինակում 42 թվին ուղարկվում է factorial հաղորդագրությունը.

42 factorial

Այս դեպքում 42 կոչվում է հաղորդագրությունն ընդունող, իսկ factorial-ը հաղորդագրության տարբերակիչ (selector)։ Ընդունողը հաղորդագրությանն արձագանքում է արժեք վերադարձնելով։ Հաղորդագրության արդյունքը կարելի է վերագրել փոփոխականի.

aRatherBigNumber := 42 factorial

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

  1. «Smalltalk.org™ | versions | ANSIStandardSmalltalk.html»։ Smalltalk.org։ Վերցված է 2013-06-25 
  2. [1] [2]