三叉神经痛吃什么药好| 落枕是什么原因| 婴儿吃不饱有什么危害| 什么时候开始数伏| 肌肉疼是什么原因| 腋下有味道是什么原因| 1993年出生的属什么| ab型血可以给什么血型输血| 嗜酸性肉芽肿是什么病| 老赖是什么意思| 铭五行属什么| 如意代表什么数字| 如如不动是什么意思| 扭伤挂什么科| 乳房是什么意思| 什么是黑色素瘤| 各就各位是什么意思| 为什么近亲不能结婚| 甲醛什么气味| bayer是什么药| 1997年属什么生肖年| 葡萄籽什么牌子效果好| 5月25日是什么星座| iqr是什么意思| 白带异常用什么药| 腿抽筋是什么原因造成的| 开宠物医院需要什么条件| 大乔叫什么| 全国政协常委什么级别| 脉搏90左右意味着什么| 91年出生的属什么| 高血压吃什么药最好| dia是什么意思| 血离子是检查什么的| 什么样的歌声| 恳谈会是什么意思| 火龙果跟什么榨汁好喝| 花椒有什么作用| 胃病是什么原因引起的| 牙疼吃什么饭菜比较好| 维生素b5又叫什么| 有市无价是什么意思| 蝴蝶是什么变的| 女人左手掌有痣代表什么| 风调雨顺的下联是什么| 喝酒后吃头孢有什么反应| 肚子左下方是什么器官| 病毒感染吃什么药| 土字旁的字有什么| 为什么会得静脉曲张| 但愿人长久的下一句是什么| 湿热喝什么茶可以调理| 汉字最多笔画是什么字| 时间是什么| 什么水果是热性的| 佛舍利到底是什么| 后背发冷发凉属于什么症状| 感冒吃什么食物好得快| 隶属什么意思| 鱼用什么游泳| 子宫肌瘤有什么症状表现| 男人腰痛吃什么药| 摩羯座是什么性格| 比熊吃什么牌子狗粮好| 文盲是什么意思| 空调买什么品牌的好| 葫芦娃的爷爷叫什么| 梦见放鞭炮是什么意思| 为什么会得飞蚊症| 乳腺癌多发于什么年龄| 38岁属什么生肖| 尿隐血3十是什么病| 黑客帝国4什么时候上映| 过生日送男朋友什么礼物好| 摇曳是什么意思| 硌脚是什么意思| 输卵管造影是什么意思| michaelkors是什么牌子| 代言人是什么意思| 适得其反什么意思| 爱情是什么感觉| pm代表什么| 为什么一坐车就想睡觉| 2023年属什么生肖| 恒牙是什么牙| 孕前检查挂什么科室| 三月二十二是什么星座| 麦麸是什么| wt什么意思| 什么首什么胸| 拉肚子吃什么药好| 七月九号是什么日子| 金银花洗澡对婴儿有什么好处| 手莫名其妙的肿了因为什么| 启明星是什么意思| 阴毛有什么作用| 验孕棒两条杠什么意思| 黄喉是牛的什么部位| 喂母乳不能吃什么| 胃病能吃什么水果| 老生气会得什么病| 愤青什么意思| 睡觉流口水吃什么药| 黄体不足吃什么药| 牙齿痛什么原因| 稀释是什么意思| 清创手术是什么意思| 四季豆为什么叫四季豆| cindy什么意思| 李小龙属什么生肖| 驻外大使是什么级别| 正处级是什么级别| 腥臭味是什么妇科病| 塔塔粉是什么粉| 一月2日是什么星座| 牙痛吃什么药最管用| 支原体抗体阳性是什么意思| 汀是什么意思| 益生菌什么时候吃最好| 女人在什么时候最容易怀孕| 螺旋杆菌感染吃什么药| 肚脐眼位置疼是什么原因| mi是什么单位| 畈是什么意思| 葡萄都有什么品种| 孩子为什么有胎记| 头总是昏昏沉沉的是什么原因| 什么是肛裂| 猪蹄子炖什么好吃| 莼菜是什么菜| 梅花什么季节开| 蜈蚣是什么样的| smt是什么| 尿少尿黄是什么原因引起的| 狗上皮过敏是什么意思| 子宫瘢痕是什么意思| 咽喉炎吃什么药好得快| gigi 是什么意思| 2楼五行属什么| 唇钉是干什么用的| 尿检粘液丝高什么意思| 索条影是什么意思| 27属什么| 安徽菜属于什么菜系| 中考报名号是什么| 房速是什么意思| 车厘子是什么季节的| 女生两个月没来月经是什么原因| 范冰冰和洪金宝什么关系| l1椎体在什么位置| 巡视组组长什么级别| 奥运五环代表什么| 创客是什么意思| 梦见老公回来了是什么征兆| 为什么姓张的不用说免贵| 滑脉是什么意思| 减肥适合吃什么水果| 盲约大结局是什么| 简单是什么意思| 一失足成千古恨是什么意思| 枫树叶子像什么| 孕育是什么意思| hi是什么意思| 君子兰的寓意是什么| 促黄体生成素是什么意思| 湘雅医院院长什么级别| 越字五行属什么| 盛情难却是什么意思| 汉防己甲素片治什么病| 摸鱼是什么意思| 奴才是什么意思| 命途多舛是什么意思| 孕酮起什么作用| 危险期是什么时候| 什么品牌的卫浴好| 小孩贫血有什么症状| 晚上夜尿多是什么原因| 小儿多动症挂什么科| 静脉曲张是什么引起的| 什么水果泡酒最好| 顺产收腹带什么时候用最佳| 石英机芯什么意思| 泛滥成灾是什么意思| 老鼠跟什么属相最配| shadow是什么意思| 数值是什么意思| 同样的药为什么价格相差很多| 为什么会得多囊卵巢| 欧盟是什么| 屁股长痘是什么原因| 6.26什么星座| 789是什么意思| 香港脚是什么| 右肾错构瘤是什么病| 皮肤溃烂用什么药治愈最快| 什么是平行世界| 全国政协副主席是什么级别| 什么是多囊卵巢综合症| 1月出生是什么星座| 冷藏是什么意思| 腐女什么意思| 双肺纹理增多增粗是什么意思| 天生丽质难自弃是什么意思| 劲头是什么意思| 医院院长什么级别| 戌是什么生肖| 取笑是什么意思| 变蛋吃多了有什么危害| 为什么会缺钙| 动物的尾巴有什么用处| 看望病人送什么东西| 剖腹产后能吃什么水果| 妍字属于五行属什么| 修罗道是什么意思| stories是什么意思| 心度高血压是什么意思| 嘴唇肿是什么原因| 牙膏洗脸有什么好处和坏处| 卉是什么意思| 鱼头和什么搭配煲汤好| 属龙是什么星座| 虎鼠不结亲是什么意思| 什么是纯净水| 白羊座什么性格| 属牛的和什么属相最配| 喝水多尿多是什么原因男性| 低骨量是什么意思| 皮肤病用什么药膏好| 透析是什么| 鸡吃什么长得又快又肥| 看乙肝挂什么科| 现在的节气是什么| 为什么暑假比寒假长| 嘴唇为什么会肿起来| 嗓子不舒服做什么检查| 肚脐眼红是什么原因| 马赫是什么意思| 拉油便是什么原因| 风俗是什么意思| 风属于五行属什么| 蛋疼是什么原因引起的| 食管炎有什么症状| 乔迁是什么意思| 珍惜眼前人是什么意思| 狗是什么时辰| 3月29日是什么星座| 什么牌子的麦克风好用| 人绒毛膜促性腺激素是查什么的| 摩根石是什么| 腺肌症是什么病| 逍遥丸配什么治失眠| 11月17号是什么星座| 什么东西可以代替阴茎| 凉拌菜用什么醋好| 什么是放疗| 妇检tct是什么检查| 每天早上起来口苦是什么原因| 住院号是什么| 什么是潮热症状| 豌豆荚是什么| 早上流鼻血是什么原因| 上嘴唇长痘痘是什么原因| wilson是什么意思| 舌头白腻厚苔是什么原因| 百度Przejd? do zawarto?ci

Paysage printanier dans le centre de la Chine

Z Wikipedii, wolnej encyklopedii
Forth
Pojawienie si? 百度 大豆、能源、汽车、金融均可列入报复清单《南华早报》称,中国官员表示并不乐见这场贸易战,但对赢得这场贸易战有信心。

1970

Paradygmat

proceduralny, zorientowane stosowo, refleksyjny, concatenative

Typowanie

brak

Implementacje

SwiftForth (Forth, Inc.)
Gforth (Free software)
VFX Forth (MicroProcessor Engineering)

Twórca

Charles H. Moore

Strona internetowa

Forthj?zykiem programowania wysokiego poziomu, nale??cy jednocze?nie do kategorii j?zyków tzw. bliskich sprz?towi, czasem (potocznie) u?ywa si? okre?lenia asemblerowy j?zyk programowania wysokiego poziomu.

Charakterystyka j?zyka Forth

[edytuj | edytuj kod]

Do cech charakterystycznych tego j?zyka nale??:

  • natychmiastowa interpretacja wprowadzonych s?ów,
  • natychmiastowa kompilacja definicji nowych s?ów,
  • wykonywanie operacji za po?rednictwem stosu,
  • zapis wyra?eń arytmetycznych w odwrotnej notacji polskiej.

Specyfika j?zyka sprawia, ?e jest to j?zyk dla specjalistów, g?ównie z dziedziny automatyki. Jego g?ówne zastosowania to systemy czasu rzeczywistego i sterowanie urz?dzeniami.

Twórc? j?zyka jest Amerykanin Charles H. Moore, który stworzy? pod koniec lat 60. pierwsz? jego implementacj?.

Program napisany w Forth sk?ada si? z sekwencji s?ów rozdzielonych separatorami (jeden ze znaków: spacja, znak o kodzie zero #0, powrót karetki #13). S?owa pami?tane s? w s?owniku, w którym mo?na tworzy? pods?owniki i dowolnie je rozszerza? (a? do granic mo?liwo?ci systemu komputerowego). Nowo definiowane s?owa s? natychmiast kompilowane i gotowe do u?ycia.

Specyfika tego j?zyka prowadzi do programowania od do?u do góry (od szczegó?u do ogó?u).

Interpreter i kompilator

[edytuj | edytuj kod]

W trakcie swojego dzia?ania interpreter j?zyka mo?e znajdowa? si? w jednym ze stanów:

  • definiowania,
  • wykonywania.

Je?eli Forth znajduje si? w stanie wykonywania, wprowadzane s?owa s? natychmiast interpretowane i wykonywane. W?ród s?ów j?zyka Forth znajduj? si? s?owa, tzw. kompilatory (w nomenklaturze Forth), standardowe (np. ?:”, ?CONSTANT”) lub zdefiniowane przez programist?, które powoduj? przej?cie systemu w stan definiowana. W tym stanie kolejne s?owa s? traktowane jako cz??? definicji nowego – w?a?nie definiowanego – s?owa, a? do napotkania s?owa kończ?cego definicj? (standardowo ?;”). Taka definicja podlega kompilacji, a nowo zdefiniowane s?owo umieszczone zostaje w s?owniku.

S?owa j?zyka mog? nale?e? do kategorii:

  • operatorów biernych,
  • operatorów czynnych (które wykonywane s? tak?e wtedy, gdy interpreter znajduje si? w stanie definiowania, chyba ?e programista u?yje s?owa, które spowoduje umieszczenie w polu nowej definicji adresu tego operatora zamiast jego wykonanie).

Kompilatory

[edytuj | edytuj kod]

Poj?cie kompilatora w Forth

[edytuj | edytuj kod]

Kompilatorem (w nomenklaturze Forth), nazywa si? s?owo, które powoduje przej?cie systemu Forth w stan definiowania, zinterpretowanie najbli?szego s?owa jako nazwy nowego operatora (s?owa j?zyka Forth) i w konsekwencji skompilowanie kolejnych s?ów zawartych w aktualnie przetwarzanej definicji wed?ug zadanych (zawartych w definicji kompilatora) instrukcji oraz umieszczenie nowego s?owa w s?owniku (ewentualnie w pods?owniku).

W Forth wbudowane s? standardowe kompilatory, takie mi?dzy innymi jak: ?:” – podstawowy kompilator operatorów, ?CONSTANT” – definiowanie sta?ych i inne. Programista ma tak?e mo?liwo?? definiowania w?asnych kompilatorów.

 (POTEGA 3; a -- b)
POW DUP DUP * *;
 5 POW

Zdefiniowano operator bierny POW, który jest podprogramem w rozumieniu ?tradycyjnych” j?zyków programowania – podniesienie do 3 pot?gi, który zostaje skompilowany i umieszczony w s?owniku. Po tej operacji mo?e by? u?ywany tak jak s?owa standardowe. Umieszczenie na stosie liczby 5 (w stanie wykonywania) i wykonanie operatora POW powoduje umieszczenie na stosie wyniku operacji (5*5*5). Podprogram taki nie definiuje parametrów, pobiera po prostu okre?lon? w jego definicji liczb? argumentów ze stosu. Cz?sto stosowan? konwencj? jest umieszczenie w komentarzu opisu parametru (liczby pobieranych argumentów) i zwracanych na stos warto?ci (ich liczby). W powy?szym przyk?adzie, okre?lono jeden parametr ?a” (nazwa nieistotna) i jedn? warto?? stanowi?c? rezultat ?b” (nazwa nieistotna) podprogramu.

Kompilatory standardowe

[edytuj | edytuj kod]

J?zyk Forth posiada zdefiniowane kompilatory standardowe:

  • CONSTANT nazwa (a --): definicja operatora (s?owa o w?a?ciwo?ciach sta?ej) o nazwie jak najbli?sze s?owo wej?ciowe nazwa i warto?ci a pobranej ze stosu,
  • VARIABLE nazwa (a --): definicja operatora (s?owa o w?a?ciwo?ciach zmiennej) o nazwie jak najbli?sze s?owo wej?ciowe nazwa i warto?ci a pobranej ze stosu; wykonanie operatora powoduje umieszczenie adresu danej na stosie,
    nazwa s?owa_definiuj?ce ; (--): utworzenie operatorów, które mo?na przez analogi? porówna? do podprogramu w j?zykach programowania ogólnego przeznaczenia,
  • USER: podstawowy kompilator niskopoziomowy, wiele s?ów standarodwych jest utworzonych za pomoc? tego kompilatora,
  • VOCABULARY: utworzenie s?ownika.

Definiowanie kompilatorów

[edytuj | edytuj kod]

Definicja nowego kompilatora ma posta?:

nazwa
     <BUILDS
         s?owa kompiluj?ce
     DOES>
         s?owa wykonawcze

Instrukcje strukturalne

[edytuj | edytuj kod]

Wprowadzenie

[edytuj | edytuj kod]

Forth posiada, jak wi?kszo?? j?zyków programowania wysokiego poziomu, zestaw standardowych instrukcji strukturalnych umo?liwiaj?cych programowanie z?o?onych problemów i algorytmów. Jednak jego znamienn? cech? jest rozszerzalno?? przejawiaj?ca si? m.in. mo?liwo?ci? definiowania w?asnych, nowych instrukcji strukturalnych.

Standardowe instrukcje strukturalne

[edytuj | edytuj kod]
 warunek IF
   instrukcje wykonywane gdy warunek spe?niony
 [ELSE
   instrukcje wykonywane gdy warunek nie spe?niony]
 THEN | ENDIF

przy czym warunek jest po prostu ci?giem instrukcji j?zyka Forth, a operator IF bada czy na stosie jest warto?? ró?na od zera:

  • je?eli tak to wykonywane s? instrukcje wykonywane gdy warunek spe?niony,
  • je?eli nie to wykonywane s? instrukcje wykonywane gdy warunek nie spe?niony lub instrukcje po s?owie THEN (lub ENDIF co jest równowa?ne) je?eli fraza ELSE zosta?a pomini?ta.
   SELECT KEY 10 =
     IF
         +
     ELSE
         *
     THEN;
   2 3 SELECT
 przed_DO
     DO
         instrukcje
     LOOP | +LOOP
 po_LOOP

Operator DO ustala (na podstawie warto?ci ze stosu) dwa parametry iteracji: ograniczenie – warunek zakończenia, oraz warto?? pocz?tkow?. Dla s?owa LOOP krok wynosi +1, dla +LOOP warto?? kroku pobierana jest ze stosu, przy czym mo?e to by? warto?? ujemna. Cykl wykonywany jest co najmniej jednokrotnie, gdy? sprawdzenie warunku wykonywane jest na końcu. Operator I udost?pnia warto?? zmiennej steruj?cej cyklem.

 CIAG
   10 2 DO
     I. 2
   +LOOP;
 (wyprowadzenie liczb 2 4 6 8)
  • instrukcja repetycyjna
 BEGIN
   przed_WHILE WHILE
   po_WHILE
 REPEAT

Po wykonaniu przed_WHILE operator WHILE sprawdza warto?? na stosie, je?eli jest to zero to kończy instrukcj? REPEAT, je?eli nie to wykonywane jest po_WHILE a operator REPEAT powoduje skok do BEGIN i powtórzenie cyklu.

 WAINT_SP
   BEGIN
     KEY 32 = 0= WHILE
   REPEAT
 BEGIN
   instrukcje
 AGAIN

Definiowanie w?asnych instrukcji strukturalnych

[edytuj | edytuj kod]

J?zyk ten umo?liwia definiowanie w?asnych instrukcji strukturalnych przy pomocy operatorów skoków warunkowych i bezwarunkowych 0BRANCH i BRANCH.

Stosy w systemie j?zyka Forth

[edytuj | edytuj kod]

System Forth pos?uguje si? dwoma stosami:

  • stosem parametrów,
  • stosem powrotów.

Stos parametrów

[edytuj | edytuj kod]

Stos parametrów jest to podstawowy element systemu, równie? dla u?ytkownika, na którym wykonywane s? operacje. S?u?y przede wszystkim do przekazywania argumentów operacji i przekazywania wyników operacji (podprogramów).

Stos powrotów

[edytuj | edytuj kod]

Stos powrotów w zasadzie pe?ni rol? stosu systemowego. Lista operacji podstawowych na stosie powrotów jest do?? ograniczona. Do najwa?niejszych z nich nale??:

  • >R (a --): przeniesienie danej s?owowej a ze stosu parametrów na stos powrotów,
  • R> (-- a): umieszczenie danej s?owowej a na stosie parametrów ze stosu powrotów,
  • R (-- a): skopiowanie danej s?owowej a na stosie parametrów ze stosu powrotów,
  • RP! (--): usuni?cie wszystkich danych ze stosu powrotów,
  • RP@ (-- a): umieszczenie na stosie parametrów adresu szczytu stosu powrotów,
  • R0 (-- a): umieszczenie na stosie parametrów adresu pustego stosu powrotów (pocz?tku).

Jak wida? s? to g?ównie operacje steruj?ce, s?u??ce nast?puj?cym celom (dla których przeznaczony jest stos powrotów):

  • przechowywanie ?ladów wzajemnych wywo?ań operatorów (podprogramów),
  • przechowywanie parametrów instrukcji strukturalnych,
  • pomocniczy stos roboczy dla danych,
  • chwilowa pami?? podr?czna dla u?ytkownika (programisty),
  • inne.

System j?zyka Forth automatycznie wykorzystuje stos powrotów do przechowywania licznika interpretera IP steruj?cego wywo?ywaniem kolejnych s?ów (jako podprogramów).

S?ownik

[edytuj | edytuj kod]

S?ownik w j?zyku Forth skupia w sobie wszystkich zdefiniowane i dost?pne do u?ycia s?owa. Jest on struktur? drzewiast?, podzielon? na pods?owniki, które mog? by? podzielone na kolejne pods?owniki, przy czym g?ówny s?ownik nosi nazw? FORTH i skupia podstawowe operacje w tym zdefiniowane w kodzie maszynowym. Dodatkowo zwykle definiowane s? tak?e:

Zawsze jeden s?ownik jest s?ownikiem bie??cym, od którego rozpoczyna si? poszukiwanie definicji s?owa. Bezpo?rednio po uruchomieniu bie??cym jest s?ownik FORTH. Operacje s?ownikowe:

  • VOCABULARY nazwa IMMEDIATE: zdefiniowanie nowego s?ownika (w bie??cym s?owniku definiowania),
  • nazwa: ustalenie bie??cego s?ownika,
  • CONTEXT: zmienna przechowuj?ca odniesienie do bie??cego s?ownika,
  • nazwa DEFINITIONS: zmiana s?ownika definiowania,
  • CURRENT: zawiera odniesienie do bie??cego s?ownika definiowania.

Nale?y zauwa?y?, ?e przy takiej organizacji mo?na definiowa? wielokrotnie to samo s?owo w ró?nych s?ownikach w ró?ny sposób, a to, która definicja zostanie u?yta, zdeterminowane b?dzie kolejno?ci? przeszukiwania s?owników. Mo?na to uzna? za rodzaj przeci??ania nazw.

Zobacz te?

[edytuj | edytuj kod]

Bibliografia

[edytuj | edytuj kod]
cr是什么检查 诺如病毒是什么病 威士忌兑什么饮料好喝 拉条子是什么意思 rh是什么单位
投喂是什么意思 抗药性是什么意思 打完狂犬疫苗不能吃什么 京东白条什么时候还款 梦见狼是什么预兆
冰箱保鲜室不制冷是什么原因 中学为体西学为用是什么意思 一生一世是什么意思 rom是什么意思 鼻中隔偏曲是什么意思
锰酸钾是什么颜色 孕妇吃什么蔬菜对胎儿好 一什么土 阴道口瘙痒是什么原因 出汗少的人是什么原因
相安无事什么意思hcv8jop9ns9r.cn editor是什么意思hcv8jop6ns5r.cn 头皮一阵一阵发麻是什么原因xianpinbao.com 58什么意思hcv8jop6ns7r.cn 成吉思汗是什么族hcv9jop5ns0r.cn
农村一般喂金毛吃什么dajiketang.com 指甲的月牙代表什么aiwuzhiyu.com 为什么妇科病要肛门塞药hcv8jop7ns9r.cn 包皮红肿瘙痒用什么药qingzhougame.com 淡奶是什么hcv8jop1ns2r.cn
手抖是什么原因hcv8jop0ns8r.cn 男生腿毛旺盛说明什么hcv7jop6ns9r.cn 阴疽是什么意思hcv9jop4ns0r.cn cn是什么hcv8jop0ns0r.cn 浮生如梦是什么意思0735v.com
皮肤有白点是什么原因jinxinzhichuang.com ptsd是什么病hcv9jop8ns1r.cn 出马什么意思hcv9jop3ns7r.cn 总是口渴是什么原因hcv9jop4ns5r.cn 关节炎用什么药hcv8jop5ns6r.cn
百度