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.