Cruthaigh do theanga cláir féin (I)

Éabhlóid na dteangacha cláir

Tar éis an chéad alt a scríobh ar conas do chóras oibriúcháin féin a chruthúDúirt duine éigin liom an bhféadfainn alt a dhéanamh ar conas teanga cláir a chruthú. Ar dtús níor thug mé mórán airde, ach anois agus ar bhealaí eile d’fhoghlaim mé i bhfad níos mó faoi chruthú teangacha cláir. Mar sin déanaimis teanga bhunúsach cláraithe, in-leabaithe go héasca i gcláir eile agus a oibríonn le meaisín fíorúil a cheapfaimid freisin. Sa lá atá inniu ann ní mór dúinn an meaisín fíorúil is bunúsaí a dhéanamh.

Is dócha go bhfuil tú ag déanamh iontais: Meaisín fíorúil? Ach nach bhfuil sé sin an-deacair agus an gcuireann sé moill ar na cláir freisin? " I gcodarsnacht leis sin, tá meaisín fíorúil simplí an-simplí agus réasúnta tapa. Roghnaigh mé Meirge mar theanga don mheaisín fíorúil. Ach cad é Meirge?

Meirge Is teanga ríomhchlárúcháin í atá dírithe ar shlándáil an fhorghníomhaithe, agus mar sin beidh sé dodhéanta go praiticiúil do dhuine a bheith in ann an meaisín fíorúil a dhúnadh. Is teanga tiomsaithe í atá á forbairt ag Mozilla. Servo, an t-ionadach Gecko, ag forbairt ann. Is féidir leat do chomhréir a athrú fós ach coimeádfar an cód a úsáidfidh mé go dtí an chéad eisiúint chobhsaí.

Meirge suiteálacha i Linux Ar bhealach simplí. Mar sin féin, níl aon dáileacht oifigiúil ann. Úsáideoirí ubuntu is féidir leat an dá rud seo a chur leis PPA: ppa: hansjorg / meirge  y ppa: cmrx64 / lasta, úsáideoirí Arch féidir a úsáid AUR (lasta-git an pacáiste a shuiteáil gach rud). Is féidir an chuid eile a úsáid:

curl -s https://static.rust-lang.org/rustup.sh | sudo sh

Conas a oibríonn meaisín fíorúil?

Má tá a fhios agat conas a oibríonn domhan an chóimeálaí tá sé díreach mar an gcéanna, leis an gcruach nó leis an gcruach. Mura ndéanann, míneoidh mé duit é. Samhlaímid an cód seo a leanas:

priontáil 2 + 3

Ní thuigeann an ríomhaire cad is brí le 2 + 3, ná níl a fhios aige cén t-ord atá le leanúint. Oibríonn ríomhairí le cadhnraí nó cruacha ina ndéantar sonraí a charnadh agus a eastóscadh go leanúnach. Ba cheart go bhféachfadh an cód sin inár meaisín fíorúil rud éigin mar seo:

PUSH 2 PUSH 3 ADD PRINT

Go bunúsach chuirfimis an 2 ar an gcruach ar a bharr, an 3 chomh maith. Tharraingeodh ADD (i.e. é a bhaint den chruach agus a luach a fháil) an 2 earra dheireanacha ar an gcruach agus an toradh a chur le barr na cruaiche. Thógfadh PRINT an t-earra deireanach ar an gcruach agus úsáidfeadh sé é chun é a thaispeáint dúinn. Anois déanaimis é sin a dhéanamh i Meirge.

Ní mór dúinn teanga a shainiú ar dtús don Bytecode, d’fhéadfaimis ceann atá ann cheana a úsáid cosúil leis an gceann i java nó an CLR de .NET / Mono, ach táimid chun ceann níos bunúsaí a chruthú.

https://gist.github.com/a01de8904fd39a442c20

Úsáidimid nodaireacht heicsidheachúlach do gach treoir. Ar ard atá curtha againn # [ag teacht (FromPrimitive)], is peculiarity of Meirge agus cuideoidh sé linn níos déanaí a bheith in ann an t-áireamh le bearta a chur i gcomparáid go díreach.

Anois ní mór dúinn feidhm a dhéanamh a fhorghníomhaíonn gach ceann de na treoracha sin. Chuige seo ní mór dúinn beart a léamh agus é a chur i gcomparáid leis na treoracha atá againn san áireamh. Má aimsíonn tú aon cheann atá ann, caithfidh tú do ghníomh a dhéanamh.

https://gist.github.com/8950ce212a2de2f397f9

Déanaimid é sin chun gach beart a léamh ina n-aonar agus chun iad a fhorghníomhú:

https://gist.github.com/12e24a1f0dd65e4cd65d

Mar a fheiceann tú, déanaimid idirdhealú má tugadh an t-ordú PUSH (ár n-ordú INTEGER) dúinn roimhe seo, tógfar an chéad bheart eile go hiomlán chuig an gcruach. Tá dhá fheidhm á n-úsáid againn nár mhúin mé duit, féin.pop () y féin.push (), ar ndóigh atá i gceannas ar an gcruach a láimhseáil.

https://gist.github.com/54147f853a8a2b8c01d9

Níl siad an-chasta, ach tá meicníochtaí braite earráide ag an bhfeidhm pop. Go deimhin, i Meirge, má bhainimid na meicníochtaí sin thabharfadh sé botún tiomsúcháin dúinn. Anois níl le déanamh againn ach clár a ghlaoch isteach Perin (ár meaisín fíorúil) agus bytecode a fhorghníomhú.

https://gist.github.com/99b1ab461318b3a644d0

Is féidir an bytecode sin a léamh ó chomhad, ach anseo ar mhaithe le simplíocht tá sé stóráilte agam in athróg. Má dhéanaimid é a fhorghníomhú, tabharfaidh sé an toradh ionchais dúinn:

Forghníomhaíonn Perin v0.1 Perin VM bytecode FlopFlip Ag tosú mar shampla PerinVM PerinVM v0.1.0 Luach slánuimhir 5

Tá gach cód ar fáil ag GitHub faoi Ceadúnas Apache 2.0: https://github.com/AdrianArroyoCalle/perin. Chun iad a chur le chéile caithfidh siad a bheith Cargo suiteáilte agus curtha:

muirear a thógáil && ./target/main

Sa chéad chaibidil eile feicfimid níos mó faoinár dteanga cláir.


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

17 trácht, fág mise

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.

  1.   bóthar a dúirt

    Fiosracht spéisiúil, cé nach bhfuil sé an-úsáideach i ndáiríre, ní ghortaíonn sé a bheith ar an eolas.

    Is iontach an rud é go bhfógraíonn tú Rust, is teanga í a bhfuil gealladh fúithi go leor, ní amháin go bhfuil sí níos sláine ná c ++, ach (go dtí seo) níos soiléire ina chomhréir.

    Maidir le grianghraf, ní mheasfainn éabhlóid java XD.

    1.    bóthar a dúirt

      Agus ó fortran, níor úsáid mé riamh é, ach níor chuala mé a lán rudaí maithe faoi ...

      1.    Phorious a dúirt

        Déanaim, agus tá sé an-úsáideach san innealtóireacht cé go bhfuil Python ag dul chun cinn.

      2.    John a dúirt

        B’fhéidir gurb í Fortran an teanga iontach eile in éineacht le C. Fiú amháin inniu i gceisteanna criticiúla beidh ceann amháin nó ceann eile.

        Agus bheadh ​​sé dochreidte go bhfuil Fortran mar ‘éabhlóid’ de C, nuair b’fhéidir gur chóir go mbeadh sé an bealach eile timpeall, mar go bhfuil C níos nuaí, níos nua-aimseartha agus le níos mó féidearthachtaí; cé nach bhfuil ceann scoite ón gceann eile ar a laghad.

        Cé go bhfuil na suíomhanna deiridh go léir dochreidte ó thaobh éigin.

    2.    Francisco a dúirt

      +1 go Java

  2.   portaro a dúirt

    A ligean ar a fheiceáil más maith liom é seo, tabharfaidh mé rud éigin do ríomhchlárú ach bunúsach le feiceáil an dtuigim níos mó.

  3.   usergnulinux a dúirt

    Cad é an fíorchuspóir atá le teanga cláir nua a chruthú? Feictear dom go pearsanta gur ploy an cód foinse a cheilt.

  4.   Yeily a dúirt

    A chara, cad a tharla le leanúint de “do chóras oibriúcháin féin”? Ná fág ansin é le do thoil lean ar aghaidh leis.

    I ndáiríre, is máistir tú agus tá an dá amhrán seo tar éis m’aird a ghabháil go hiomlán, ach níor mhaith liom go stopfadh siad leath bealaigh.

    Tá a fhios agam go gceapann go leor againn an rud céanna agus táimid ag fanacht le leanúnachas agus conclúidí na n-ábhar an-spéisiúil seo.

  5.   Cristian David a dúirt

    An-suimiúil, go raibh míle maith agat. 🙂

  6.   Franco a dúirt

    Ní mheasaim gur teanga cláir í java, seachas ateangaire ordaithe, ós rud é nach bhfuil sí furasta a thiomsú

    1.    Mario a dúirt

      [Is teanga fhoirmiúil í teanga cláir atá deartha chun próisis a chur in iúl ar féidir le meaisíní mar ríomhairí a dhéanamh.]

      Ar an gcúis seo, is teanga cláir í Java. Is teanga cláir ann féin fiú an teanga Bash (teanga bhlaosc linux).

      Tá dhá chineál teangacha ann:
      - Tiomsaithe
      - Léirmhínithe
      - Measctha (Meaisíní fíorúla, tiomsaítear na leabharlanna dúchais agus déantar an cód feidhmiúil a léirmhíniú)

      Tá na hateangairí an-úsáideach maidir le il -formform agus níl feidhmíocht thubaisteach acu chuige sin. Is teangacha measctha iad Java, VB.NET, C ++ .NET, F #, C #. Is teangacha léirmhínithe iad an teanga bash, bat, PHP, Javascript, agus go leor eile.

      Mura measann tú Java mar theanga toisc go ndéantar í a léirmhíniú (rud nach bhfuil) níor cheart duit smaoineamh ar go leor teangacha eile a úsáidtear chun cláir a dhéanamh. Thairis sin, leis an riail sin de thrí níor cheart duit a mheas nach bhfuil aon teanga cláir ann seachas an teanga meaisín féin.

      Agus cén fáth nach bhfuil? Ní fhéadfaí fiú teanga meaisín a mheas mar theanga ós rud é nach bhfuil inti i ndáiríre ach sraith orduithe a "léirmhíníonn" an próiseálaí.

      Mar gheall go héifeachtach, níl i GACH teanga ach tacar orduithe a léirmhíníonn próiseálaí.

      B’fhéidir gur mhaith leat teanga níos mó nó níos lú (Java, sa chás seo), is cosúil go bhfuil sí níos mó nó níos lú úsáideach agus cumhachtach ach a rá nach teanga cláir í toisc nach bhfuil sí tiomsaithe ... téann sí i gcoinne na sainmhínithe teanga cláir go léir.

    2.    Mario a dúirt

      Hope Tá súil agam nach raibh cuma ró-dhona orm

      1.    maria antonieta de manuela cardenas a dúirt

        ní ciúin níor scrios tú ach ár saol

      2.    Mario a dúirt

        hahahahaha, perdoooon. ní raibh sé ar intinn agam xD

    3.    carlos a dúirt

      Is teanga cláir í java. Toisc gur féidir leat feidhmchlár a fhorbairt agus nuair a thiomsaíonn tú déanann tú .jar a léirmhíníonn an JVM. Ansin de réir do loighic python ní dhéantar é a léirmhíniú ach an oiread, ach tiomsaíonn sé do inrite éagsúla ...

  7.   Elias Mongelos a dúirt

    Faisnéis an-mhaith

  8.   Carlos Arturo a dúirt

    eolas maith ach tá amhras orm, beifear in ann teanga cláir nua a chruthú ón tús gan a bheith ag brath ar analaí nó bogearraí eile. Labhraím ar an gcaoi chéanna is a rinneadh teangacha eile cosúil le java nó HTML.
    Bheinn an-bhuíoch díot as do chabhair ar an gceist seo.