Smalltalk
Smalltalk֊ը օբյեկտներին-կողմնորոշված, դինամիկ տիպիզացվող, ռեֆլեկտիվ ծրագրավորման լեզու է։ Այն 1970-ականների նախագծվել և իրականացվել է Xerox PARC կազմակերպությունում Ալան Քեյի (Alan Kay) կողմից (մասնակցությամբ Դեն Ինգալսի, Ադել Գոլդբերգի և ուրիշների), որպես ուսուցողական ծրագրավորման լեզու։
Տեսակ | օբյեկտ կողմնորոշված ծրագրավորման լեզու, class-based programming language? և ծրագրավորման լեզու |
---|---|
Առաջացել է | 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-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
Ծանոթագրություններ
խմբագրել- ↑ https://wiki.squeak.org/squeak/172
- ↑ «Smalltalk.org™ | versions | ANSIStandardSmalltalk.html». Smalltalk.org. Արխիվացված է օրիգինալից 2015 թ․ սեպտեմբերի 7-ին. Վերցված է 2013 թ․ հունիսի 25-ին.
- ↑ [1] Արխիվացված 2018-06-13 Wayback Machine [2]
Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Smalltalk» հոդվածին։ |