Jump to content

Smalltalk

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

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

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

Շարահյուսությունը

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

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

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

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. https://wiki.squeak.org/squeak/172
  2. «Smalltalk.org™ | versions | ANSIStandardSmalltalk.html». Smalltalk.org. Արխիվացված է օրիգինալից 2015 թ․ սեպտեմբերի 7-ին. Վերցված է 2013 թ․ հունիսի 25-ին.
  3. Արխիվացված 2018-06-13 Wayback Machine
Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Smalltalk» հոդվածին։