
Ask HN: What should I learn first, Algorithms or ..? - sanosuke
Algorithms or Programming Languages Theory (Grammars, lexers, etc)?<p>Background: I just know the basics about programming (conditions, loops, classes, etc) And I almost got 30 years old, hopefully is not to late.<p>My goal is to help the advance the Computer Science field (No kidding).<p>P.S: Could you elaborate on your answer please, besides &quot;Learn Algorithms first&quot;. Thank you.
======
greenyoda
Given a choice between those two, I'd recommend algorithms, since you can
probably apply that knowledge more readily to everyday programming projects.
For example, it's useful to know roughly how long it takes to sort an array,
add an element to a hash table (like a Python dictionary), etc.

Language theory probably won't be that useful unless you're planning to write
a parser for a programming language or something similar. I occasionally need
to deal with grammars (for the Bison parser generator) in the work that I do,
but most people probably do that kind of thing very rarely, if at all.

Also, it's never too late to learn stuff.

------
angersock
Neither, because you'll either get burned out or full of trivia that is not
useful.

Instead, pick some practical projects, and work on those. Maybe a music
player, or a game. Games are good because they bring you through the whole
spectrum of high-level abstraction (how should I build this system?) to the
low-level drudgery (oh god why is this buffer getting corrupted how do I fix
this aaaagh).

------
hashberry
You should start with what interests you. Passion is a strong motivator for
learning.

------
blawa
As a computer science graduate, and having worked as a s/w engineer,
researcher and quant and currently writing code in strongly typed language, I
can assure you that unless you're doing research and writing your own PL, you
wouldn't need to understand PL theory, so much so that now I'm rusty in less
than 6 years.

Also, just to clarify- PL itself has not much to do Grammars and lexers. PL
theory mostly deals with programming paradigms, and type-safety. Lexers and
grammars knowledge can help you write a compiler for a PL, but PL theory
doesn't care about it- its the job of compiler writer.

I suspect you mean 'theory/models of computation' when you refer to Languages
theory
([http://en.wikipedia.org/wiki/Introduction_to_Automata_Theory...](http://en.wikipedia.org/wiki/Introduction_to_Automata_Theory,_Languages,_and_Computation))
That's what covers "language"/grammars. While it's good information to have- a
ground up understanding of "computation" science- you would need that pretty
late into your foray if you really want to learn about "Computer Science"

CS is a big field- you'll have to choose what you want to learn.

So start with Algorithms first, when you come to the Big(O) notation, you'll
get a brief and usually enough introduction to the Theory of Computation.

