2023-03-28
Lassi Haaranen
"Formaali kieli, jolla rakenteistetaan tekstiä tai sen esitystapaa eli luodaan rakenteisia aineistoja. Merkintäkielet perustuvat aineistoon lisättävien tunnisteiden käyttöön. Osa merkintäkielistä, kuten XML ... ovat niin sanottuja metakieliä eli niiden avulla voidaan paitsi luoda rakenteisia aineistoja myös määritellä merkintäkieliä." Tieteen termipankki - Merkintäkielet
Erityiset merkintäkielet on kehitetty tiettyä tarkoitusta varten. Esimerkiksi HTML (HyperText Markup Language) www-sivuja varten
Yleisillä merkintäkielillä kuten XML voidaan kuvailla hyvinkin erilaisia asioita
"Data without instruction"
... katso esim. Wikipedian luettelo merkintäkielten luetteloista
Musiikista (MusicXML) maantieteelliseen annotaatioon (Keyhole Markup Language)
Seuraavassa joitain esimerkkejä käytettyihin merkintäkieliin, keskittyen dokumenttien ja tekstin tuottamiseen
Merkintäkieli keskustelupalstoille
Linkki BBCodella:[url]https://en.wikipedia.org/wiki/BBCode[/url]
...sitä vastaava HTML:
<a href="https://en.wikipedia.org/wiki/BBCode">
https://en.wikipedia.org/wiki/BBCode
</a>
...ja lopputulos: https://en.wikipedia.org/wiki/BBCode
Markdown lienee suosituimpia ja yksinkertaisimpia merkintäkieliä dokumenttien tekoon
Syntaksi on hyvin yksinkertainen ja kevyt:
# Otsikko
Tekstiä, *lihavoitua tekstiä*
1. lista
2. sanoja
A First Level Header
====================
A Second Level Header
---------------------
This is just aregular paragraph.
### Header 3
> This is a blockquote.
>
> ## This is an H2 in a blockquote
Markdownista HTML:ksi Pythonilla:
import markdown
html = markdown.markdown(your_markdown_string)
.. pick-one:: 10
Mitä merkintäkieltä A+ käyttää?
a. XML
b. Python
c. BBCode
d. Markdown
e. Javascript
*f. reStructuredText
Kannattaa muistaa, että merkintäkielillä voi tehdä paljon muutakin kuin muodostaa ihmisten luettavaa tekstiä.
Yksi esimerkki on proteiinien rakenteen kuvaus Protein Data Bank -kielellä.
Määrämuotoinen data auttaa tiedonvaihdossa
Raja dataformaatin ja merkintäkielen välillä on utuinen
Seuraavassa yleisiä dataformaatteja
Yksinkertainen tapa jakaa taulukkomuotoista dataa
Tiedostosta tiheys.txt:
0.000 3.353
2.000 3.179
4.000 3.379
6.000 3.637
8.000 3.930
...merkintäkieli?
XML on laajasti käytetty koneluettava ja "ihmisluettava" yleinen merkintäkieli. Ks. Esimerkkidokumentti.
Mukautuu moneen tarkoitukseen, käytetyt elementit ja haluamansa rakenteen voi määritellä itse.
...merkintäkieli?
JSON on jotain CSV:n ja XML:n välistä.
{
"catalog":{
"bk101":{
"author":"Gambardella, Matthew ",
"title":"XML Developer 's Guide",
"genre":"Computer",
"price":44.95,
"publish_date":"2000-10-01",
"description":"An in -depth look at creating applications with XML."
},
...
}
}
...merkintäkieli?
Kannattaa hyödyntää ohjelmointikielien kirjastoja yleisten tietotyyppien käsittelyyn
Esim. Pythonille JSON, XML ja CSV
# esim json:
import json
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
HTML eli Hypertext Markup Language on nimensä mukaisesti merkintäkieli
Internet-sivut on kirjoitettu HTML:nä, selain käsittelee tämän tiedon ja näyttää sen käyttäjälle
HTML koostuu elementeistä, joille voidaan määritellä CSS-kielellä. Sivun toimintaa voidaan muokata JavaScript ohjelmointikielellä
HTML → Sisältö
CSS → Ulkomuoto
JavaScript → Käyttäytyminen
Kannattaa ehdottomasti käyttää tarkoitukseen sopivaa editoria.
Visual Studio Code on hyvä ilmainen vaihtoehto. Muitakin vaihtoehtoja löytyy (esim. notepad++ ja Sublime Text)
Pelkästään värikoodaus auttaa paljon, mutta kannattaa myös asentaa koodintarkistimia (esim. jslint)
Selaimessa saa tehtyä myös kaikenlaista koodin ja datan tarkistusta ja muotoilua. Tärkeimmät:
Selainten mukana tulee koko joukko hyödyllisiä työkaluja, joilla voi tehdä monenlaista:
MDN-sivustolla (entinen Mozilla Developer's Network) on erityisen hyviä resursseja. Esim. Learn web development
Map on tapa kutsua funktiota jokaiselle taulukon elementille: Array.prototype.map() (MDN)
const numbers = [0,1,2,3,4,5,6];
const squares = numbers.map( num => num*num );
console.log(squares); //[0, 1, 4, 9, 16, 25, 36]
Ohjelmointi JavaScriptin avulla perustuu usein tapahtumiin
Esim. käyttäjä painaa nappia tai tietty aika on kulunut
Lähes kaikkeen löytyy valmis kirjasto → kannattaa käyttää hyödykseen
Kirjastot lisätään script-tagilla:
<script src="https://code.jquery.com/jquery-3.1.1.min.js"> </script>
Ja suosituimpia kirjastoja ei tarvitse erikseen ladata vaan niitä kannattaa käyttää suoraan palvelimelta
Esimerkiksi nämä luentokalvot ovat kirjoitettu HTML:llä reveal.js-kirjastoa käyttäen.
Bootstrap on kirjasto joka helpottaa käytettävämpien sivujen kirjoittamista.
Ja kirjaston lisäksi Bootstrap tarjoaakin hyvän pohjan "tavalliselle" web-sivulle.
HTML & JS yhdistelmällä voi myös visualisoida dataa. d3.js on tähän suosittu kirjasto.
Toinen suosittu kirjasto on Chart.js.
WebGL-rajapinnan selaimissa mahdollistaa erilaisia efektejä
three.js-kirjasto on suosittu
Molekyylejä visualisoituna three.js:n avulla ( lähdekoodi)
Merkintäkieliä on monenlaisia, moniin tarkoituksiin
Kannattaa hyödyntää ohjelmointikielien kirjastoja niiden kanssa toimiessa
HTML&JS ympäristössä on paljon valmiita kirjastoja, joilla voi tehdä monenlaisia sovelluksia ja analysoida/visualisoida dataa