MOST LANGUAGES

EVERYTHING I say in these slides
is fuzzy and opinionated



When people think of..

COMPUTER LANGUAGES.

(though I'll modify this a bit)

What is programming?


Changing your screensaver
Writer/Word
Calc/Excel
HTML/CSS
Bash
PHP/MYSQL/Javascript
Python/Perl/Ruby interpreted/scripted
C compiled
Assembly (00 4E A3 77 8C 0A etc)

On classic "Languages"



A few things 95% of languages have in common:

- this is important to remember:
Written BY humans FOR humans.
Most everything you see isn't some weird computer artifact: it's a choice.



Things people debate about over languages:

Procedural/Functional/Object-Oriented?




Before I descend into more "classic language" stuff

Consider, e.g. Excel, which many would call
the best computer language ever created,
and perhaps a very good balance between
Simple and Easy

MOST LANGUAGES


also, most languages will have exceptions to the below :)


Are general purpose


and/or "Turing complete"

(I will use this term loosely)


MONOSPACE TEXT BASED

- Punishingly difficult and picky syntax.


Are fundamentally IMPERATIVE


and often have a REPL


Have VERBS, NOUNS, (and conditionals)


This may just be me, but
"parts of speech" helps me immensely

VERBS

Operators
Commands
Functions
Methods


NOUNS - Deal with DATA

NUMBERS

Decimals are a pain in the butt.
You already know this when you do 1/3 on a calculator
SO, often Integers v. "Floats/Doubles" etc.

WORDS

Really, "strings"
Could be numbers or sentences etc.

LISTS

Tons of different ones here:
Arrays, (ordinal/associative) Tuples, Dictionaries, etc
Can nest


MIGHT BE:


High or Low level

"Scripts" are probably highest

Recap


Simple like a Command line =
"Unfriendly, but a great deal of power and possibility through simplicity"

Easy like Siri /Alexa =
"Friendly, lots of complexity, but it only lets you do like seven things" ☺

Many of these boil down to: SIMPLE vs EASY

Or, I should probably say, a particular couple of ways to
redefine SIMPLE and EASY.

SIMPLE: (Think "command line")

and use MORE language to get things done.


EASY: (Think "iPhone" or "Siri")



MIGHT have a "paradigm"...


Procedural/imperative
Object-oriented
Functional
Declarative

"Important" real life Categories.

(these are fuzzy and non-exclusive)

Procedural/Imperative ("default")

Do things step by step

Important "real life" Categories.

Functional

Turn it into straight up math. No variables, no
"procedures"

Important "real life" Categories.

Object Oriented

Everything uses an "object" metaphor.
("Black Box Approach")..

Important "real life" Categories.

Declarative:
Uncommon, because very hands-off.
You don't say "how" - you just tell what to do over a limited set of possibilities.
(This is HTML and MySQL, and increasingly a lot more things..)

e.g. YAML is used to define things. This is EASY (not SIMPLE)


EXAMPLES



Examples of classic languages

C
Rust
Go

- Low level, Compiled, Native

Examples

Java
Python

(Midrange, Python's honestly probably the best all around, let the fights begin)

Examples


Bash and other SCRIPTING LANGUAGES

Very powerful, and weirdly often not considered
"languages"

Examples


What about MySQL, et al?
Declarative, and not specialized
(why do I hate workbench? :))



..And then the holy mess that is the web.

Here goes: This ONLY makes sense if you remember that the web grew and accreted on itself, and encouraged to do so primarily by "market forces"...
as opposed to "designed."

Text


Plain ol' text. BBS and the like


HTML

"Lets make this look better than the Matrix, SEMANTICALLY"

CSS

"Still kind of ugly, now let's go VISUAL"


Okay but we need interactivity...

OKAY, how about, lets just reach into the computer and run random programs

cgi-bin

This actually worked for a while when we were oh so innocent...
..but honestly, i think we've come full circle.

Server-Side


PHP.

Click a menu and get back some generated HTML. Cool!

Combine with MySQL for even more power!

Client-side

uhoh.

"Okay, so we want things to move around. And maybe more..."

Client-side

We've got this thing people are using to literally make cartoons...
..so I guess we're going to use it for EVERYTHING.

Flash

Javascript

Clearly, we can do better than Flash. I mean, we could slap that together
in a weekend and name it something similar to something that already exists because okay

Javascript part deux

Okay, maybe that wasn't a great idea...

but too bad, here we are.