Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

what to study next?

Name: Anonymous 2014-01-08 22:37

dear programmers:

would it be harmful or dumb to learn functional programming before any other paradigm, such as imperative, or object-oriented? i took one course in college intro c++ and want to move forward now, so i'm thinking either object-oriented and moving to data structures (berkeley cs dept available free on their site), or functional programming w scala (coursera) next.

thoughts?

Name: Anonymous 2014-01-09 19:22

>>13

Ok. Thanks for the background info.

There's diminishing returns on classes when it comes to improving actual programming ability around 2nd or 3rd year.

I am serious about not learning another language. Given your situation, and my own experiences, I highly recommend you just branch out to Java (not C#, not D, but Java) (at this point your inexperience is on your side. It means you won't feel a thing going from C++ to Java), and stick with Java.

Don't learn different programming styles through different languages. As fashionable as it is, it's not important, and like all fashions, its kind of a joke to anyone who doesn't care about fashion. More importantly, at this point it will just waste your time and hold your back. Learning different languages is a luxury for only very advancedc programmers. Almost all the programmers I've seen that have "learned" a few different languages don't really know any of them, and are very bad programmers.

Java is a good, mainstream, multi-paradigm, old school (newbies often make the mistake of thinking that something being around for a long time is a bad thing, it's not, as you get more experienced you'll value it more and more) language. I've seen Java wizards do some pretty amazing things.

The programming style most studied and used (structured, procedural) is precisely the style you write (most) Java programs in, but Java also lets you write programs in other styles too (e.g. I've seen Java wizards use it as a dynamic language; I've seen a wizard call a method given a string with that method's name, I myself have passed objects of anonymous classes around like I do lambdas in Common Lisp, there are REPLs written in Java (e.g. Dr. Java)...).

Java VMs also have concurrent GC and concurrent JIT which is really really cool.

Anyway enough about Java (I hate that language ;). Given your background and your goals this is my serious recommendation for you:

1. Take no more classes.
2. Read the book "Introduction to Algorithms"
3. Read the book "Compilers: Principles, Techniques, and Tools"
4. Read the book "The Java Language specification"
5. Don't do anything beyond this!

You should read the Java book along side the other two, and you should read the algorithms book first then the compiler book. As you read these books, complete all exercises, and make concrete any examples or things you don't understand (i.e. write programs, experiment), in Java. Read the books cover to cover. Don't skip. Write notes as you read them. Be very very meticulous.

If you are studious you should finish everything in 3 months. In these 3 months you will have learned more than a gazillion classes of "learn X style of programming with hipster language Y".

And seriously, you don't need anything more than these three books; You definitely don't need to learn any other programming languages. If you need to know something incidental like IDK UNIX sockets or something just google it and learn exactly what you need and don't follow any rabbit holes. Just stop there.

Especially don't worry about your programming style. It's great. If it's not causing you any headaches it's great. Don't worry about this. The people that do are terrible programmers.

Thank me in 3 months. Get to work.

- The Lisp guy ;)

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List