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.