Taxonomy/supplement/language

Uit Werkplaats
< Taxonomy‎ | supplement
Versie door Boudewijn Geijtenbeek (overleg | bijdragen) op 8 feb 2008 om 14:41 (Language in Computer Science)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Ga naar: navigatie, zoeken


View on Formal and Informal Language

In my PhD thesis I have argued for formal versus informal use of language. In this way, mathematical formulae can jolly well have an informal interpretation, depending on who reads them, and likewise informal (NL) statements can be interpreted formally (automated NLP!).

Also, if information boils down to "state change" in the broadest sense, there is (I believe) no essential difference between a state change in a human mind and a state change in a machine (hence, no essential difference between semantics (here: plural of semantic); just "flavours"). Note: semantics of language are "language conventions"; when actual interpretation takes place, semantic meaning is embedded in pragmatic meaning (language in action). Compare this to a computer program as just code (syntax, with an agreed semantics), and the same code bing executed (operational semantics "coming alive": arguably, operational pragmatics).

→pragmatics 
what langage does, in concreto; of course this always depends on context.
→semantics 
what language is supposed to/expected to do, in abstracto.
→syntax 
how the "visible" part of the language (form) is structured: how "form components" are (not) allowed to be combined.

The syntactic, semantic, and pragmatic rules of formal/informal languages are, indeed, very different, just no essentially so. (Pragmatic rules/conventions concern how operationalization of syntax/semantics is to take place: how a representation is linked to action, i.e. state change).

Language for Communication versus Language as a Calculus

Witgenstein (among others, I suppose) in his Philosophical Investigations (14e) explicitly discussed the view on langage as a calculus: a set of rules restricting what can possibly be said. Others (for example, Leibniz) have phrased a similar idea: language as a "calculus of thought". How can the views of "language as a communication instrument" and "language as a calculus" be expressed in terms of syntax/semantics/pragmatics, how do they interrelate, are they compatible, and how do the notions relate to computer science at large? In particular, how does the syntax / semantics / pragmatics discussion land when applied to calculi and communication?

A calculus is a set of formal ``rewriting rules: they determine how certain expressions in a formal syntax can be/are allowed to be rewritten into (one or more) other, somehow equivalent expressions. In what way they are "equivalent" depends on the underlying focus of the syntax/calculus.

Is there, in terms of "what it essentially does", a fundamental difference between "a calculus" and "a syntax"? I believe that structurally, there is not; syntax is a set of rules restricting allowed combinations of symbolic items, and so is a calculus. However, the goal of a calculus is rather special: it allows for rewritings with a very particular (semantic?) load.

There are three flavours of syntax relevant to the current discussion, and "calculus" is one of them:

Grammar 
rewriting rules that determine which combinations of categories or terminals are allowed in a language
Semantics 
rewriting rules that map some representation (allowed by some grammar) to an alternative representations that is meant to reflect the meaning of the grammatical expression. A favourite vlavour of "semantic language" is predicate logic of some sort. Note that in a way, syntax is thus reqritten to syntax: meaning is still expressed in a language, though it is meant to be "better fit to express pure meaning".
Calculus 
rewriting rules determining how certain syntactic combinations can be deemed equivalent. Typically used for logical proofs etc. (I apologize for this rather lame explanation of calculus at this point; please someone help out here).

So if a calculus is a syntax of a very special kind, the distinction between calculus-syntax and other syntax is in the goal, the utility, behind the particular syntactic rules. There are two important utilities we mention here, but there seem to be more:

  • Make sure the interpretation of an expression is unambiguous
  • Make sure the reasoning expressed in an expression is rationally valid
  • ... (other forms of calculation?)

Minimally, formal languages have been given their syntax (and also their strongly "syntactified" semantics) in order to be unambiguous. Natural language, on the other and, does not have an engineered syntax/semantics: it "just happened". It is linked to human cognition an pretty complex (and still ill-understood) interaction between parts of the brain. We can try to describe its syntax and semantics, but so far this is a rough approximation based on intuitive judgements of human subjects. Yet the fact that we cannot (yet?) capture NL syntax and semantics very well does not prevent it from existing.

Is er nog een ander onderscheid?

Ik zie, vanuit de informatica, nog een andere manier van onderscheiding. Wat heeft die ermee te maken?

3 * 4

Dit kan, zo als al onder multiple semantics aangeduid, verschillende dingen betekenen:

  • het produkt van 3 en 4
  • het getal 7, geschreven op een onhandige manier
  • de blawdruk van een machine uit drie blokjes, die twee getallen produceert en vervolgens vermenigvuldigt
  • de opdracht, zo'n machine te bouwen (de realiseren)
  • het gedrag van deze machine


Eigenlijk moet men dus altijd precies aangeven welke semantiek men bedoelt. 10:23, 27 November 2005 (MET)
Hanno Wupper.jpg
Hanno WupperTaxonomy Remove this comment when resolved!


Op zoek naar Formele Pragmatiek, of is het de Pragmatiek van Formaliteit?

Het bovenstaande is een mooi voorbeeld!

Als je daaraan pragmatiek probeert te koppelen, dan zie je dat je een bepaalde syntactische parsering kunt kiezen, en een bepaalde semantische duiding, en dat je kunt zien waar dat vervolgens pragmatisch naar toe zou kunnen gaan. Heel generatief allemaal --mits je contextuele informatie meeneemt in je generatie, hetgeen in de praktijk heel moeilijk is. Neem gewoon "het produkt van 3 en 4". Op zich is dat (binnen ons rekensysteem) universeel, tenminste wanneer je 3 en 4 inderdaad als deel van de expressie ziet (dus even niet als ingevulde variabelen). Maar wat en wie 3 * 4? Het is eerst nog een volledig syntactisch/semantische, dus volledig symbolische, constructie. Wat je ermee zou kunnen doen is bijv. uitrekenen hoeveel echte knikkers je totaal in drie echte bakjes van 4 knikkers elk hebt liggen. Dan vul je het "scenario" dus ook pragmatisch in (met elementen uit een bepaalde context). Maar de berekening bevindt zich strikt op het niveau van pure "kennis": je hebt je syntactische en semantische structuren gemanipuleerd en uitgebreid zodanig dat jouw model van de wereld een stukje verder is ingevuld (je weet een exact aantal knikkers; blijkbaar stel je dat op prijs). Die kennis kun je wellicht verder gebruiken om in de fysieke wereld iets voor elkaar te krijgen, bijv. je hebt minimaal 7 knikkers nodig om te ruilen tegen een glas appelsap. Maar dat is geen direct gevolg van de berekening als zodanig, dus het effect van de berekening (de pragmatiek) is echt puur een kennis-state-verandering: epistemic pragmatics.

Dit voorbeeld suggereert een bruikbaar onderscheid tussen epistimische pragmatiek (veroorzaakt veranderingen in symbolic states in mens en machine) en fysieke pragmatiek (physical state changes), en wellicht ook nog sociale pragmatiek (state changes in social structures --haha, en dat is dan dus weer een speciale smaak epistemische pragmatiek)? Als dat zo is dan is het onderscheid fysiek/epistimologisch overigens betrekkelijk, want ultiem aan elkaar gerelateerd (we hopen symbolische structuren ooit nog eens machinaal/biofysisch te kunnen representeren, hoewel dat nu nog pure science fiction is).

Laten we even aannemen dat het maken van het onderscheid epistemisch/fysiek/sociaal zin heeft. Van belang lijkt dan vooral dat pragmatiek daadwerkelijke state changes incorporeert, terwijl syntax/semantiek slechts een set conventies zijn: sociaal gegronde, symbolische uitdrukkingen van niet (volledig) gecontextualiseerde stukjes symbolen in wat een pragmatische symboolmanipulatieketen kan worden.

Ziedaar abstractie: het zien van mogelijkheden in pragmatische zin, maar deze (op een lambda-achtige manier) buiten de pragmatische invulling plaatsen, en verzamelen en ontwikkelen totdat je ze misschien kunt gebruiken in weer een pragmatische stap. Het manipuleren van die structuren heeft overigens zeker weer zijn eigen syntax/semantie/pragmatiek... een mogelijke meta-meta-meta-... val die we moeten zien te vermijden.

En wanneer is iets dan een pragmatische stap? Nou, dat doet er niet zoveel toe: elke stap die je in staat stelt een bepaald doel te bereiken (een state change). Als het mijn doel is om het product van 3 en 4 te berekenen, dan is het bereiken daarvan pragmatiek (epistemische). Maar daar heb ik dan eerst wel de syntax en de semantiek van "3 * 4" voor nodig.

Ik vermoed hier een sterke link met de semiotiek. Moet ik Janos Sarbo eens over benaderen (Pierce expert).

Taal is dan een stelsel van symbolische conventies dat ons in staat stelt om abstracte kennisstructuren in het leven te roepen en uit te wisselen. De taal zelf bestaat uit syntax (vorm) en semantiek (betekenis, eventueel uit te drukken in vorm, maar niet ultiem --zie Wittgenstein); pragmatiek legt de link tussen taal en niet-taal (pragmatische regels horen dus wel bij de taal!). Dan is pragmatiek dus datgene wat abstractie koppelt aan niet-abstractie: de regels volgens welke we die koppeling tot stand denken te kunnen brengen. Is sterk gerelateerd aan type/instantie onderscheid --hetgeen filosofisch cruciaal is, want anders kunnen we zeggen dat alles taal/conceptueel is en er geen non-talige werkelijkheid bestaat, en dat geloof ik persoonlijk niet zo.

Taalgebruik = Verwoorden van Abstracties

Enfin, wat kunnen we na dit alles zeggen over taal-als-communicatiemiddel versus taal-als-calculus? Welnu, het zijn twee complementaire aspecten behorende bij hetzelfde truukje dat mensen geleerd hebben: abstractie.

1. Als je abstraheert kun je structuren opzetten die een stukje van de werkelijkheid oningevuld laten. Woorden/concepten zijn sterk geabstraheerde stukjes kennis, zinnen-uit-context zijn wellicht wat minder abstract; rekenregels zijn erg abstract, maar complexe logische formules wellicht wat minder. Maar abstracties zijn het allemaal. Wat een syntax doet is taalregels specificeren die bepaalde restricties opleggen aan het koppelen van bepaalde taalstructuren (dus taalstructuren met een bepaalde syntax/semantiek). Daardoor kun je grammaticaregels zelf direct klassificeren als taalstructuren, waarschijnlijk pure syntax. De regels van de wiskundige taal zijn speciaal bedoeld om non-ambigue zinnen te kunnen afdwingen.

2. Taalstructuren (dus abstracte symbolische structuren) zijn daarnaast ook erg geschikt/nodig om coordinatie en kennisuitwisseling tussen verschillende agents mee tot stand te brengen. Mensen (en machines?) kunnen met abstractie omgaan, en dus willen ze abstracte begrippen ook kunnen uitwisselen. Non-talige communicatie gaat voorbij aan het gebruik van abstractie; talige communicatie is (door mij) gedefinieerd door het uitwisslen van abstracte begrippen. Maar wil je abstracte begrippen gebruiken in communicatie, dan moet je daarvoor gezamenlijk conventies hebben/ontwikkelen: syntax, semantiek, en als je de hele handel wilt linken aan het niet-abstracte (en dat wil je!), ook nog pragmatiek.

  • Je kunt communicatie hebben met en zonder taal, oftewel met en zonder gebruik van abstractie;
  • Je kunt geen taal hebben zonder abstractie (misschien wel abstractie zonder taal?)
  • Je kunt geen taal hebben zonder een vorm van syntax (gedachten, ook abstrace gedachten, zijn nog geen taal; taal = vorm plus betekenis).
  • Je kunt in principe wel een taal hebben die niet bedoeld is voor communicatie tussen verschillende agents (dus een "privetaal"), maar ook deze heeft syntax en semantiek (dit is een aaname die in de filosofie soms sterk bevochten wordt). Let wel: "taal" is niet hetzelfde als "gedachten", zelfs al zijn beiden sterk gerelateerd.

Je hebt dus in taal altijd:

  • abstractie-aspecten (het weglaten van stukjes van de pragmatische puzzel: van de "werkelijkheid")
  • communicatieve aspecten (het over een zekere tijdspanne delen van abstracte constructen tussen agents; eventueel agents met zichzelf)
  • regels (syntax) die beperkingen opleggen aan de manier waarop je taal-items mag koppelen
  • semantiek, maar dat komt feitelijk neer op abstracte concepten (want wat je denkt is niet hetzelfde als dat waaraan je denkt --hoewel dat ook weer een filosofisch aanvechtbaar punt is)
  • pragmatiek: de link tussen type niveau en instanties; abstract en concreet. Daarbij kunnen wel verschillende pragmatische niveaus onderscheiden worden: het laagste niveau is "fysiek" (mechanische of neurofysiologische gevolgen van taalgebruik) maar daarbovenop is er ook epistemische pragmatiek (knowledge state change op symbool-niveau; ander niveau van abstractie!) en als onderdeel daarvan ook sociale pragmatiek (gevolgen van taalgebruik voor het sociale "plaatje"). Het is lastig te verwoorden maar op epistemisch-pragmatisch niveau gaat het om het teweeg brengen van "concrete abstracties": feitelijke, concrete state changes (niet potentieel maar actueel), maar dan wel state changes die abstracties (abstracte kennis, gedachten) betreffen (die noodzakelijkerwijs wel gebouwd zijn op fysieke state changes!).

Language in Computer Science

Computer Science has brought forward many languages. In its first decades there has been a lot of confusion about language properties. (Can a language be 'purely imperative'? Can an imperative language at the same time be declarative?) Some distinctions arose from ill-understood concepts and all-defined semantics. Others, essential from the view of compiler contructors, are irrelevant to language users. As long as an "imperative" language allows to define and "call" functions recursively, one can write purely "functional" programs in it, with the same input-output-relation as they would have in some "purely functional" language.

Here, we will investigate general undelying principles. Our starting points are communication and the Rationality Square.

Language properties

Some language properties can be helpful when a language to support an activity has to be chosen, as different purposes require different language properties. (The reader should keep the disclaimer on terminology in mind.)

→formal
as opposed to "natural" language and the vast amount of acaringly ill-defined computer languages): Is semantics defined unambiguously? Note that a formal language can have multiple semantics.
→declarative as opposed to →operational
What can be expressed in s straightforward way?
→state based
Does the language allow to give "commands" that state what is to change while the rest remains the same?
→modal as opposed to →absolute
How does the language deal with context and context shifts?
→typed
Do expressions have attributes that define how they may be combined with other expressions?
→modular
...

Under these definitions, a →declarative language can very well be →state based, if "assignments" and "commands" are natural concepts in the application domain. On the other hand, a →declarative language by definition allows to specify problems before we know whether there is a program that can solve them. Therefore, a programming language can never be →declarative.

Relations between and operations on languages

  • Texts in one language can be translated "1:1" to another language if syntax and semantics of both languages are completely known. Pragmatic effects of languaging are then not covered by translation: translation is "decontextualized". If syntax and semantics are (partly) unknown, translation will involve guesswork. If pragmatics (context) of source or target text are (even partly) unknown, the pragmatic result (the effect of the text) again is: guesswork.
  • Programs, i.e. texts in a programming language can also be executed on a physical or "virtual" machine (an "interpreter").
  • Languages can be equivalent to each other, but hundreds of different notions of equivalence have been defined in the literature.


-- 16:46, 28 November 2005 (MET)
StijnhTaxonomy Remove this comment when resolved!