Playing around with Scratch has reminded me how much I enjoy programming. I've never taken it to an advanced level, however. I started with Basic, used Fortran a bit in school, and took a C course at a community college. I've also been exposed to Scheme a bit through writing scripts for GIMP.
Since some of you users on here are pretty advanced, I thought I'd ask your opinions on taking on Scheme more seriously. I've found some free online text books that use Scheme, and I know that MIT has a version of Scheme available for download. Would that route be a good choice, or is there another language that would be better for a more serious attempt? One of the things that turns me off about Scheme is that the editors I've used seem clunky. I also don't really know anything about compiling it, finding and adding libraries, etc.
I'm open to suggestions.
Offline
DB88 wrote:
I know that MIT has a version of Scheme available for download
What doesn't MIT have for download?
DB88 wrote:
Would that route be a good choice, or is there another language that would be better for a more serious attempt?
I'm learning Objective-C 2.0 right now and it seems like a pretty powerful language, I also like BASIC (I'm making a Scratch version
) and I'm teaching myself Squeak/Smalltalk. What you are asking is a hard question to answer because there are a lot of programming languages out there. If it were my choice I would stick to C because that's what almost everything is programmed in.
Offline
DB88 wrote:
Would that route be a good choice, or is there another language that would be better for a more serious attempt?
Since there are hundreds of programming languages currently in use, you're never going to learn them all. What's more, if you're anywhere near typical Scratch-user age, the programming language you're going to use most in your professional career hasn't been invented yet.
So instead of just collecting programming languages, I recommend collecting programming paradigms. If you look under the hood of Scratch you'll find Smalltalk, which in my more extreme moments I describe as "the only object oriented programming language." That isn't quite true; there are one or two others that you're unlikely to have heard of. (Not Java or C++, which are pale imitations of OOP.) So, learn Smalltalk to experience the object oriented programming paradigm.
Scheme, which is where you started this discussion, is my favorite language for learning the functional programming paradigm -- despite the fact that Scheme isn't exactly a functional programming language. (It encompasses functional and sequential programming styles.) I like it best partly because it has the best notation for introspection (that is, for writing programs that examine, create, compile, interpret, etc., other programs), and partly because the best computer science book ever written uses Scheme. BYOB3 is basically Scheme disguised as Scratch.
(But, because the notation is Scratch, not as good at introspection, alas.) If you want to see what a pure functional language looks like, check out ML.
Finally, you should learn the declarative or logic programming paradigm, for which pretty much everyone uses Prolog.
Oh, about editors: Real programmers use Emacs.
P.S. One way to learn Scheme (and SICP) is to watch me teach it.
Last edited by bharvey (2010-06-13 03:06:33)
Offline
@bharvey:
I'm definitely not of "typical" Scratch users age. I'm 40, but I found Scratch while looking for something my 9 yo daughter could use
I'm also an ME, and programming is something I'm unlikely to have to do at work since we have programmers for that.
Thanks for providing the link to your Berkeley website. I will certainly take a look at the lectures and text book materials there. I hope you have a lecture to explain why real programmers use Emacs
Offline
@ScratchReallyROCKS: I might take a stab at c or c++ in addition to Scheme. I know most of the programming that is done at my workplace is in c or c++, and while my job doesn't include programming, I would certainly have access to help from my coworkers when needed.
Offline
DB88 wrote:
I might take a stab at c or c++ in addition to Scheme.
Given that choice, I vote for C. C++ just adds a huge amount of complexity in an ultimately failed effort at better modularity through OOP. Plain C will keep you focused on pointer arithmetic and manipulation, which is the whole point of C.
I hope you have a lecture to explain why real programmers use Emacs
Emacs is crowdsourced -- the fact that it includes a serious programming language (Lisp) as an extension tool means that a huge developer community has built every tool you could possibly want, both serious things like a collection of appropriate keybindings for every known programming language and fun things like a towers of hanoi simulation (ASCII art) and various random text generators. Actually Emacs is extensible two different ways; it includes keyboard macros, which allow basically anybody to extend Emacs using its own surface notation (like BYOB) and it also includes access to it implementation language (Lisp) so programmers can extend it more deeply (like Panther). Additionally, Emacs was designed around out-of-band signalling (using non-ASCII keystrokes), rather than the disastrous in-band signalling of Vi (in which "d" sometiimes means to insert a "d" in your text, but sometimes means to delete a line). And finally, it'll happily edit your binary file so you can use it to patch executables.
Offline