Which programming language...?(iamgabeaudick.tumblr.com) |
Which programming language...?(iamgabeaudick.tumblr.com) |
Before learning any language, first learn some DSLs, like ActionScript or Processing; they'll give you 100x the sense of "instant gratification" (really just a good feedback loop, to avoid learned helplessness) of general-purpose languages.
Then read a book on C; but don't bother trying to "learn" it yet. You won't get it, not at first. Then learn Javascript and PHP (and SQL), and use them until you get tired of Javascript's missing standard library and PHP's disorganized one. Quit using PHP; quit using Javascript for now. Read the C book again. Also read a book on Lisp.
Learn Python or Ruby now. Now read the C book one more time. This time you should understand it.
Now's a good time for a university education, if you'd like, or algorithms/data structures/discrete math books, if not. Become really good at creating normalized data structures and efficient indeces for them (to the point where you stop craving ORMs and NoSQL.) Learn to cache data.
Learn the sundry unix shell scripting languages (basically trying to live anything resembling a normal life on a non-GUI Linux set-up will force this on you, so that's a good proximal reccomendation.) Try to code some sort of compiler. Realize that, despite knowing however many of the algorithms involved, there still seems to be something magical about them. Learn an assembly language, and how the dynamic linker/loader, executable object format, and virtual memory subsystems of your OS work. Grok that compilers just do clever string processing, and write a simple one. Learn to cache instructions, and make your compiler do a few optimizations.
Keep learning other languages until the Lisp book makes sense. Then pick a language to work in, for you are now a Journeyman.
(If you'd like to like Javascript again at this point, learn Smalltalk or Lua, or look at how MOOs work. If you'd like to ever like C++, learn Haskell first and treat C++ as a compromise between it and assembler. Don't bother liking Java or C#, but learn some language on the JVM/CLR so as to like managed code in general.)
The first language learning question is a though one. (1) Probably the best would be anything which goes out of your way to concentrate on the important concepts behind it. (2) It depends on the way you want to teach it.
I don't mean to be overly reductionist. But the languages that I'm currently happiest with are statically-typed, compiled, and run on the JVM.
When I'm in a position to choose, I opt for the one in which myself and my coworkers are most productive that meets project requirements. There's not much to say beyond that.
And it's not a very serious article to begin with.
But you are sane. So many here...aren't...
I felt no childlike wonder while doing Objective C and this compared to Java. It's less verbose, but it's nothing that good about it. It did remind me of lisp but just barely([]).
Oh, an memory management wasn't something I was looking forward to...
works just fine. String concatenation is no harder than a format string. Writing a category on NSArray to add join is pretty dead simple as well.
Of course in Objective-C I would use casting so, indeed, it might be more verbose overall.
I think that the best First Programming Language to learn would still be C, followed by some flavor of Lisp. C, because it's both practical and teaches you how your computer works at a low level, and Lisp, because it shows you how powerful computers can be when you strip them down to the mathematical bone.
Everything else is just some balance between the two.
isn't even really that funny.
Yep, this one was better: http://james-iry.blogspot.com/2009/05/brief-incomplete-and-m...My two cents, take it for what it's worth.
To understand the mathematical theory of computation: Turing Machine Tape
To follow the subject from its roots: Babbage Analytic Engine Heap
To truly grasp algorithms: Psuedocode
And which of the two editors -- EMACS or vi -- should I use? Paper and pencil.
Heck, I started with BASIC, followed by C++. Now that I've got those out of the way, I know I can tackle all kinds of bullshit.
Python still seems most reasonable as a first language, to me. Not my favorite, these days, but local maxima, you know? (Probably followed by C, then Prolog. Lua and Erlang are practical syntheses, and should be picked up easily afterward.)
"... and you also want to get a website up fast."
and to C#: "... you want Java but Microsoft-ified"Here's an example I just made:
#-----begin------
from Tkinter import * #part of standard library
def reverse():
s=entrybox.get() #get text from entry widget
entrybox.delete(0,END) #delete text from entry widget
entrybox.insert(0,s[::-1]) #reverse text, insert it
root=Tk() #create a windowentrybox=Entry(root) #create an entry widget
entrybox.pack() #display it in the window
button1=Button(root, text='Press Me', command=reverse)
button1.pack()
entrybox.insert(0,'type here') #add a default value
root.mainloop()
How so? F# and Scala, and Haskell aren't dynamically typed languages...