Page 2 of 2

Re:Language Overload!

Posted: Wed Jun 02, 2004 1:41 am
by srg
Update

My course is going under hahaha! BAE Systems who sponsor the course have pulled out, there will be no new intake for next year, won't affect anyone on the course at the moment.

BTW The people on the second year of my course have compalined about one lecturer as he is well, crap. The most important complaint they made was that he changed parts of an asignment when they were half way through.

He also scrapped an assignment without telling anyone, guess what, I was banking on that one to pass!

srg

Re:Language Overload!

Posted: Sat Jun 12, 2004 10:20 pm
by Andrew_Baker
Y'know, I made a promise to my fiance to finish my Bachelor's Degree, and I fully intend to... but just to get a lambskin to hang on my wall and put in my CV.

While I've always found learning a language for its own sake a very raw experience, any time that I've needed a new language for a project (AGI for VG:QotD, GML for VG2, Python & TALES for a webserver project I'm working on, and Actionscript for another), I've found that the system inherent in my design has just had me going through the language until I find the comparable computer words to plug in to get it to do what I want.

Actual syntax and grammar change surprisingly little between languages, I've found, and while there are exceptions, these are mostly marginalized.

Yes, LISP and PERL are vastly different than say, C and Python, respectively. And, yes, I do believe LISP and PERL are great languages. But you don't ever need to use them.

You don't ever need to use C.

But if it ever comes up that you've got to work with LISP for a project... you absolutely MUST learn that language for the job... I think that the design of the job will lend itself as a nice blueprint for your work with the language.

That said, if you really want to learn how to code *anything*, go into the learning process with a well-designed project as your blueprint and I guarantee you will have better results than if you just dink around with your tutorial code.

That's just my opinion, and it's probably worth less than 2 cents after inflation.

Re:Language Overload!

Posted: Sun Jun 13, 2004 1:15 am
by mystran
I might want to say something more here, as I've been thinking about this a lot lately: if one is to become a good hacker, one will have to learn (at least bit of) about every programming language ever introduced, including hundreds of turing-complete configuration languages, that where never designed to be programming language.

To make any sense out of the whole mess, one will need some set of core concepts that one understands, so that one can fit new language into this core model. This model should ofcourse not be static. On the contrary, many languages make it necessary to extend the model in various ways, which ofcourse is part of the reason why knowing so many languages at least on theoretical level is such a huge win.

Since any universal (or turing-complete) model can emulate any other universal system, one can often apply the concepts learned from radically different languages, when they seem to fit a purpose. Without knowing the languages, one would not be likely to know the concepts, and even then, one would not have the practical understanding of how and when they are useful.

Now, I think the main question of this thread should be, how should the initial model be aquired. One could claim starting with something like Scheme would be optimal, as any features can be introduced one at a time. On the other hand, I'd claim that it is fairly irrelevant whether one learns to program by writing Assembler, JavaScript or Brainfuck (yes it's a language). More important I think, is that one should actually develop working, non-trivial software with the language, before trying to learn another one. Why?

Before having written a moderately large program (i'd say about 500kb source is a good point to aim to.. and yes, this is huge if you are programming in a high-level language). Yet it is not much compared to most commercial (whether stock or inhouse) codebases. Only when software starts to reach this size, one starts to understand the bigger view, and the real differences between programming languages become really visible.

As a somewhat unrelated side-note, Paul Graham made an interesting insight a while back: there are two kinds of readable programming languages. There are those like BASIC, where individual lines are very simple to understand, yet complete programs are always a mess, and then there's those like Lisp, where you can abstract almost everything behind complex macros and functions, making it relatively hard to read single lines (unless you're familiar with the codebase ofcourse), while at the same time making it easier to understand the big picture.

Of course there's then those like Brainfuck where the whole program is one big chuck of meaningless looking characters, which you can't generally decipher without working out the whole program at once. Finally, there's Whitespace (yes, it's a language too, related to Brainfuck actually). Whitespace stands out by only using whitespace for syntax; any normal non-whitespace characters are simply ignored. =)

Back to topic though: I think once should learn one language at first, and learn it really well. Just avoid becoming religious about it. As soon as you start feeling restricted in what you can express (even a little), you want to start looking at other languages. As the initial choice, I'd pick out a high-level one to make the path a little easier, but that depends what kinds of problems one is willing to solve. And the only really working way to learn to program is to program a lot; solve hard problems, and build programs that solve them.

I started by making the assumption that one wants to become a good hacker. What I ment, was that if one simply wants to be able to implement predefined business logic for some large financial organization as a dayjob, and holds no passion for programming and computers, then one might just as well learn COBOL (or it's modern equivalent Java) and forget about learning to program. =)

Re:Language Overload!

Posted: Sun Jun 13, 2004 5:24 pm
by Andrew_Baker
I just wanted to mention that there is an excellent pair of texts for Python by O'Reilly. Learning Python and Programming Python. Learning Python is so well-written that I'd guess even a child could learn from it. Programming Python is much stouter and arcane, but it deals with a lot of GUI stuff and advanced topics like linking Python to other language run-times and such.