Merkintäkielet

2023-03-28
Lassi Haaranen

CC-BY-SA

Agenda

  • Johdatus merkintäkieliin
  • Data
  • HTML & JavaScript

Johdatus Merkintäkieliin

Mitä on merkintäkielet?

"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

Yleinen vs. Erityinen

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

Ohjelmointi- ja merkintäkielet

"Data without instruction"

Merkintäkieliä on paljon...

... katso esim. Wikipedian luettelo merkintäkielten luetteloista

Ja merkintäkielten käyttötarkoitukset vaihtelevat reilusti

Musiikista (MusicXML) maantieteelliseen annotaatioon (Keyhole Markup Language)

Seuraavassa joitain esimerkkejä käytettyihin merkintäkieliin, keskittyen dokumenttien ja tekstin tuottamiseen

BBCode

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

Markdown lienee suosituimpia ja yksinkertaisimpia merkintäkieliä dokumenttien tekoon

Syntaksi on hyvin yksinkertainen ja kevyt:

# Otsikko
Tekstiä, *lihavoitua tekstiä*

1. lista
2. sanoja

Markdown-esimerkki

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)

ReStructured...

reStructuredText Markup Specification
.. pick-one:: 10

    Mitä merkintäkieltä A+ käyttää?

    a. XML
    b. Python
    c. BBCode
    d. Markdown
    e. Javascript
    *f. reStructuredText

    

kysymys A+:ssa

Proteiinien kuvaus merkintäkielellä

Kannattaa muistaa, että merkintäkielillä voi tehdä paljon muutakin kuin muodostaa ihmisten luettavaa tekstiä.

Yksi esimerkki on proteiinien rakenteen kuvaus Protein Data Bank -kielellä.

Data vs. Merkintäkieli?

Määrämuotoinen data

Määrämuotoinen data auttaa tiedonvaihdossa

Raja dataformaatin ja merkintäkielen välillä on utuinen

Seuraavassa yleisiä dataformaatteja

Tab/Comma Separated Values eli TSV/CSV

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?

Extensible Markup Language (XML)

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?

JavaScript Object Notation (JSON)

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?

Ohjelmointikirjastot

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

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, CSS ja JS

HTML → Sisältö

CSS → Ulkomuoto

JavaScript → Käyttäytyminen

Sananen työkaluista

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)

Online-työkalut

Selaimessa saa tehtyä myös kaikenlaista koodin ja datan tarkistusta ja muotoilua. Tärkeimmät:

Selaimen kehitystyökalut

Selainten mukana tulee koko joukko hyödyllisiä työkaluja, joilla voi tehdä monenlaista:

  • Poistaa/lisätä elementtejä sivuille
  • Muokata sivun rakennetta...
  • ... ja tyyliä
  • Ajaa nopeasti JavaScriptiä
  • Ja paljon muuta!

Sivun muokkaaminen

Johdatus JavaScriptiin

MDN-sivustolla (entinen Mozilla Developer's Network) on erityisen hyviä resursseja. Esim. Learn web development

Muuttujat

Vakiot

Funktiot

Funktioiden kutsuminen

Funktioharjoitus

Kutsupino (Stack)

Esimerkki

Ehtolauseet (conditionals)

While-silmukat

For-silmukat

Taulukot (array)

Objektit (objects)

Map ja taulukot

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]

Tapahtumien käsittely

Ohjelmointi JavaScriptin avulla perustuu usein tapahtumiin

Esim. käyttäjä painaa nappia tai tietty aika on kulunut

Esimerkki

JavaScript ja kirjastot

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

Reveal.js

Esimerkiksi nämä luentokalvot ovat kirjoitettu HTML:llä reveal.js-kirjastoa käyttäen.

Bootstrap

Bootstrap on kirjasto joka helpottaa käytettävämpien sivujen kirjoittamista.

Ja kirjaston lisäksi Bootstrap tarjoaakin hyvän pohjan "tavalliselle" web-sivulle.

Datan Visualisointi

HTML & JS yhdistelmällä voi myös visualisoida dataa. d3.js on tähän suosittu kirjasto.

Toinen suosittu kirjasto on Chart.js.

Demo (JavaScript-koodi datan hakemiseen)

Grafiikkaa selaimessa

WebGL-rajapinnan selaimissa mahdollistaa erilaisia efektejä

three.js-kirjasto on suosittu

Molekyylejä visualisoituna three.js:n avulla ( lähdekoodi)

Client-server -malli

Kursseja Web-kehityksestä

Yhteenveto

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

Kiitos! Kysymyksiä?