[Edu-sig] trails through the ecosystem: language sequence

kirby urner kirby.urner at gmail.com
Sun Jul 26 22:36:27 CEST 2015


Thinking of how I might design a robust computer
science learning thread using today's open source
tools.  See caveats at the bottom.

Python is oft circled as a great first language,
but then what?  From a practical standpoint,
I'd say:  leverage your Python to tackle a second
OO language: Java (not JavaScript yet).  Then
leverage your Java, which need not be super
polished, to tackle Clojure.  That'll be a first
LISP-family language and will start to formalize
ground covered, making the concepts more
clear.  Pick up concurrency concepts here.

Finally:  back to Python i.e. take what you've
learned on this circle tour to move into concurrency
with Python if you wish, and with new fondness
for a LISPish mindset.  From here you're ready
to branch to whatever your career calls for:
more C family?  More Apache stuff (Tomcat?).
I'd say you've got even going on the language
side with this point to start tackling DB world and
its SQL/noSQL APIs.

In sum:

Python first
Bridge to Java
Tackle concurrency in Clojure (runs on JVM)
back to Python, add more layers and polish
===
DB stuff:  SQL + noSQL

In between all this comes installation and
simple sysadmin devops baby steps i.e. just
learning the above interactively will bring an
OS shell and perhaps an IDE into focus.

Speaking of IDEs, that's a good place to
introduce version control, where you can back
end your code plane (screens) straight into some
repository.

Caveats:

Note that I'm not talking about theory, not trying
to outline general principles, hardware abstractions,
parsing / compiling  (back to theory of data structures,
parse trees etc.).  I'm imagining all that as content
and/or background, while the above simply tracks
an evolving skills set in terms of language and
exposure to specific APIs.  An alternative would be
a more traditional LAMP stack approach, which
still works as a thumbnail guide:

L -- OS level on down to hardware
A -- All lower level server processes e.g. httpd
M -- Persistence Layer (keeping / updating state)
P -- Application layer (hosted processes e.g. PHP's)

i.e. it remains useful to break it down that way.


Kirby
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20150726/af71b169/attachment.html>


More information about the Edu-sig mailing list