Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As a complete newbie, I am curious as to what I should undertake after finishing Structure and Interpretation of Computer Programs (along with the MIT course). I am primarily interested in building desktop applications, and secondarily interested in web development.

How do I grasp the essence of desktop programming? And web? Are there any particular books or courses that survey the various areas of programming and the tools I need to build something solid?

share|improve this question

closed as off-topic by durron597, gnat, Ixrec, MichaelT, Snowman May 20 at 1:23

This question appears to be off-topic. The users who voted to close gave these specific reasons:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, Ixrec, Snowman
  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – durron597, MichaelT
If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers 3

up vote -1 down vote accepted

The distinction between desktop and web applications is practically non-existent at this point. Most desktop application now have some kind of net connectivity and with various frameworks like Adobe Air you can develop "web" applications that pretend they are desktop applications. I consider myself a web developer so I can't say how you would get into desktop application development but if you want to start with web development then "Learning Javascript" by Shelley Powers should be a good starting point.

share|improve this answer
Adobe Air is more the exception than the rule; desktop and web application development in general is still quite different. –  Zsolt Török Nov 30 '11 at 16:58

Having learnt scheme should now put you in a unique position where you can identify syntactic sugar and the key features of a language rather well.

Scheme is useful, but if you are looking at larger programs, you should probably have a look at Common Lisp. Though it is not that "clean" and "academic" as Scheme, it is far more powerful. (http://gigamonkeys.com/book/ is a good reference)

Otherwise, like davidk01 said, you should look at JavaScript. It isn't far from scheme - very functional, very dynamic, and it enables you to write powerful web applications.(Crockford's lectures on Javascript, and his "The Good parts" book are a good reference.)

Then again, you could go and learn a strongly typed functional language, like Haskell or OCaml. OCaml is particularly good for writing desktop applications.

If you do want to stick with Scheme, like Macnell suggested, I would suggest you to pick up Racket. It is easier to get things done with that MIT scheme.

Finally, you could (and probably should) learn Python. It is probably the easiest language out there to pick up, and has wonderful libraries that make most tasks easy. You can write your own email client, or a program to fetch you lyrics, or any of those nice little first-desktop-apps. "Dive Into Python" by Mark Pilgrim is a great source.

share|improve this answer

A nice follow up and complement to Structure and Interpretation of Computer Programs is How to Design Programs, which will give you a different perspective on Scheme and help you grow as a programmer, helping you move on from the basics and work toward design.

The book is by the same people responsible for PLT Scheme, which is now called Racket.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.