Hop (programmalıq támiynat)

**Hop** — bul Manuel Serrano tárepinen Web 2.0 ushın jaratılǵan Lispke uqsas programmalastırıw tili hám de usı tildi ámelge asıratuǵın veb-brokerdiń (server hám proksi) atı. Ol Bigloo Scheme tilinde jazılǵan. Bul INRIA tárepinen qarjılandırılatuǵın proekt.

## Til dizaynı
Hop — bul stratifikaciyalanǵan til, yaǵnıy bir programma faylı server ushın da, klient ushın da kórsetpelerdi óz ishine aladı. Server CPU -ǵa salmaq túsiretuǵın esaplawlardı hám fayllarǵa yamasa basqa resurslarǵa kiriw ushın sistema jeńilliklerin talap etetuǵın operaciyalardı orınlaydı. Klientler (olardıń sanı kóp bolıwı múmkin, mısalı, brauzerler, uyalı telefonlar hám t.b.) grafikalıq paydalanıwshı interfeyslerin programmalastırıw menen baylanıslı háreketlerdi orınlawǵa arnalǵan.
```lisp
(define-service (server-date)             ; 1
  (current-date))                         ; 2

(<HTML>                                   ; 4
  (<BUTTON>                               ; 5
    :onclick ~(with-hop ($server-date)    ; 6
                  (lambda (h) (alert h))) ; 7
      "Server time"))                     ; 8
```
Joqarıdaǵı kod úzindisi bir neshe koncepciyanı sáwlelendiredi.

* 8 qatarlıq kod tolıq programmanı anıqlaydı. 1 hám 2-qatarlar serverde servis anıqlamasına alıp keledi. 4-ten 8-ge deyingi qatarlar javascript funkciyaları menen tolıq HTML betine alıp keledi. Ol klientke (brauzerge) «Server waqtı» degen belgisi bar túymeni kórsetiwdi hám paydalanıwshı túymeni basqanda serverge soraw jiberiwdi tapsıradı. Hop klient penen server arasındaǵı baylanıs ushın kerekli barlıq kórsetpelerdi avtomat túrde generaciyalaydı.
* Hop Scheme tiline tiykarlanǵan. Sonlıqtan, Hop programması tiykarınan qawsırmalar menen baslanatuǵın hám tawsılatuǵın sózler hám/yamasa dizimlerdiń dizimi bolıp tabıladı. Mısalı, «(HTML kontent)». «HTML» — bul funkciya atı, al «kontent» — bul funkciya parametri.
* Hop tilindegi funkciya atları háripler menen sanlardan basqa simvollardı da óz ishine alıwı múmkin. Mısalı, «» — durıs at. Sonlıqtan Hop sintaksisi (qasaqana) HTML-ge júdá uqsas kóriniske iye. Hop ańlatpası «( kontent)» HTML ańlatpası «kontent»-ge uqsas.
* HTML parametrleri qos noqat penen baslanadı; mısalı, «:onclick».
* «$server-date»-tegi $ belgisi serverdiń HTMLdi klientke jiberiwden aldın «server-date» ózgeriwshi atın ózgeriwshiniń mánisi menen almastırıwı kerekligin bildiredi. Bul ASP hám JSP-niń islew usılına júdá uqsas.
* «:onclick ~(...)»-daǵı ~ belgisi klienttiń qawsırmalar arasındaǵı nárseni qayta islewi kerekligin bildiredi.
* «(with-hop (...) (...))»-daǵı «with-hop» funkciyası jumıstı serverge tapsıratuǵın hám eki parametr qabıllaytuǵın arnawlı funkciya bolıp tabıladı. Birinshi parametr klienttiń serverge asinxron túrde jiberiwi kerek bolǵan sorawdı óz ishine aladı. Ekinshi parametr klienttiń serverden juwap kelgende shaqırıwı kerek bolǵan qayta shaqırıw funkciyasın óz ishine aladı. «(lambda (h) (alert h))» — bul bir ǵana kirgiziw parametrli «(h)» anonim funkciyası bolıp, funkciya shaqırılǵanda server juwabın óz ishine aladı. «(alert h)» — bul funkciya denesi.

## Máseleler
Jaqında kirgizilgenligin esapqa alǵanda, Hop házirgi waqıtta bir qatar kemshiliklerge iye.

* Qáwipsizlik hálsiz. Bul aktiv izertlew tarawı bolıp tabıladı.
* Tarmaqtaǵı sátsizlikler házirgi waqıtta qol menen kodlanǵan taym-aut hám ayrıqsha jaǵdaylar procedurası arqalı qayta islenedi, bul usıl kóp miynetti talap etedi hám salıstırmalı túrde isenimsiz.

## Derekler

__BÖLİDİMÖNDEMEW__