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

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

Լեզուն առաջին անգամ հրապարակվել է 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. [1] Արխիվացված 2018-06-13 Wayback Machine [2]
 Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Smalltalk» հոդվածին։