Starting an Education in IT? 425
AriaStar asks: "It's overwhelming to start trying to learn all the different technologies needed to go into programming. It seems that every type of technology assumes knowledge of a different one, which in turn requires knowledge of another, until it's gone full circle. I am interested in everything from Unix to AJAX to Perl. Things like HTML, Javascript, and SQL are like English, but then again, they're basic. Where is the best place to start? What is a good path for someone who learns quickly and easily, but who is simply too overwhelmed, to take?"
look under the hood (Score:5, Interesting)
Discrete Math: Foundation of Computer Science (Score:5, Insightful)
1. Discrete Mathematics (recommended textbook: Discrete Mathematics [amazon.com] by Kenneth A. Ross and Charles R. Wright)
2. Finite Automata and Computability (recommended textbook: Introduction to Automata Theory, Languages, and Computation [stanford.edu] by John E. Hopcroft, Rajeev Motwani and Jeffrey D. Ullman)
Technologists who understand the fundamental theory can generally write more elegant, more efficient computer programs than pseudo-technologists who are ignorant of the science in computer science.
Once you have trained your mind on the fundamental theory, you will discover that most information technologies are quite simplistic.
Finally, one often overlooked subject is English. Learn to write and speak well in English. It is the fundamental mode of communication in the world of advanced science and technology. You may have great ideas, but if you cannot them to your English-speaking peers, then you are no better than a pseudo-technologist.
Errata (Score:5, Funny)
Re:Errata (Score:2)
Re:Discrete Math: Foundation of Computer Science (Score:3, Informative)
You ought to write a review at Amazon.com since the others there gave it an average of two stars.
Mathematical Association of America (Score:5, Informative)
The book by Ross and Wright is quite good.
The mediocre reviews at Amazon are likely at anomaly.
Re:Mathematical Association of America (Score:2)
I think the truth may be that there is
Re:Discrete Math: Foundation of Computer Science (Score:3, Insightful)
If the questioner can't even decide on what technology to learn (not knowing the dependences of AJAX on Javascript on HTML, etc) recommending a Discrete Mathematics book is a complete waste of time. That's telling someone to learn how to drive a car by researching SMELTING. You are assuming they will ever make good use of such high level concepts (as far as American college students are concerned) which is
Re:Discrete Math: Foundation of Computer Science (Score:2)
Sorry about that.
Re:Discrete Math: Foundation of Computer Science (Score:3, Insightful)
grunting house-apes (Score:2)
The best approach to learning information technology is to first learn the foundation of the technology.... Once you have trained your mind on the fundamental theory, you will discover that most information technologies are quite simplistic.
By your logic, one should begin learning French by studying the history of French linguistics, cataloguing the phonemes/morphemes, and diagramming the inflectional forms. What a wonderful approach, you'll be speaking French in 5-10 years tops. Sure, you could get s
Re:grunting house-apes (Score:2)
Linguistics is a post-hoc analysis of language, so the example of learning French versus French grammar is not an informative one. In programming, the language was designed, not grown (though some might argue with that in some cases-- hard to imagine anyone actually having designed VB for example). And in a deep technical discipline, practice uninformed by theory is just incompetence.
The prerequisite to doing non-trivial work in IT is to kno
Re:look under the hood (Score:2)
Re:look under the hood (Score:2)
I have seen bad Fortran code written in a wide variety of languages. Strive to move beyond the syntax.
DIY (Score:3, Informative)
Re:DIY (Score:5, Insightful)
The best way to learn a certain language or technology is to work in an environment that you understand and build on your current knwoledge. Jumping into a different environment and leanring it can get you frustrated and distracted from the true goal and I am sure has lead more than one perosn to be discouraged enough to stop pursuit of what they set out to accomplish.
I am drunk, sorry if I am rude. But being a linux fanboy is not the answer to every f'ing question posted to
You can't learn everything (Score:5, Insightful)
It isn't about "everything" (Score:5, Insightful)
And there are computer curicula that do the same thing. And one possible strategy is to work your way through such a curiculum. But most computer geeks would rather work on their own, and they'd rather study technology they see being used, not what some textbook says are "basics". That's actually the way I learned.
And if you take that approach, you will constantly run into references to technology you know nothing about. So deal with it. It isn't a mortal sin to skim over the parts you don't understand well. So you're reading that PHP manual and it starts talking about SQL. That doesn't mean you have to drop PHP and start studying SQL. It probably means that SQL is something that you'll have to learn eventually. But for now, the thing to do is just skim the SQL parts and get a vague sense of what it is and how it relates to PHP. Maybe take a little time to Google or Wikipedia SQL — but don't lose your focus on PHP.
Of course, sometimes you will discover a new topc that's a prerequesite for stuff you don't understand. (Every programmer know aboutbinary encodings and two's complements.) But mostly not. I've been working with computers longer than most Slashdotters have been alive — and I still encounter places where the subject I'm trying to study seems to intersect subject I know little or nothing about.
Re:It isn't about "everything" (Score:2)
Programtic structure (Score:5, Insightful)
Once you understand the proper structure it is much easier to branch out to the nuiances of the various languages.
Generalist, or specialist? (Score:4, Insightful)
Here's a question you might first want to answer: do you want to be a specialist or a generalist? to be a generalist, you probably want to be a specialist at one field, security, database, web design, web programming..etc. The fact of the matter is that there is so much out there, that you have to be a bit disciplines to really get anywhere. Or you can find an IT job doing support or so, then on the side start learning the underpinnings of a certain vertical market. Perl + Unix + C would be very good fundamentals to look at. IT is not a field like medicine, it's hard to draw a path, since there's so much to know and so many options. I would consult with someone who is an IT pro and possibly follow his/her footsteps. But yes it's a challening feat to 'master'.
Wrong focus, perhaps (Score:3, Insightful)
Yes, you have to learn tools. But be aware that there is more to it than that, that your ultimate success of failure will depend on your vision, not the facility with which you use your tools.
I am reminded of the amusement of a master carpenter when confronted by an apprentice with a shiny new box of tools. You will, at some point, learn how to use a hammer. But knowing how to use a hammer does not teach you how to build a house.
Learn how to learn (Score:2, Insightful)
OK, for practical advice, learn 1) an object-oriented language like Java, C# or C++. Nowadays, even PHP is OO, if you want it to be. But with Java, you can't even write "Hello World" without acquainting yourself with classes and objects.
Learn relational databases, including normalization. You would not believe how far ahead this will get you.
DO (Score:5, Insightful)
Find a pet project, find someone with a pet project, volunteer to help a friend or community organization set up a website. It has to be something you're interested in doing or you'll avoid it and not enjoy it. Pick a target and shoot for it, O'Reilly and Google at your side.
The only way to really learn anything is to do it. I read a bazillion books about DNS/Bind but none of it sank in until I had to set it up myself. Same with SQL, Perl, Python, Template Toolkit, C++, etc.
It's annoying, it's painful, it's frustrating, but the only way to really learn anything is to get in there and get your hands dirty.
That is very important (Score:2)
Seriously, yes, try things out. Write your own mini programs, get involved in projects, try experiments to see what happens. Not everything has to be long and complicated, either - start by writing a Java applet that produces animation by colour cycling, for example, or a simulator for a very primitive, fictional microprocessor. In fact, pick anything that isn't too trivial, but would actually be interesting
Re:DO (Score:2)
Here's a refinement. After you do a project, write down a few paragraphs about what was awkward, what felt like it took too much time, and what new concepts and tools you would invent to make the job easier. Then pick up a related book, preferably a textbook rather than one of those shovelware man pages between covers. Reading the book will be a much better experience, more fun and more useful.
Or, conversely, when you
learn by solving *your* problems (Score:5, Informative)
If you want to learn how to skate, take a tennis ball and chase it around a parking lot while having skates strapped to your feet. Don't spend more than a few minutes trying to consciously learn how to stand, roll forward, brake, or fall. Chase the ball. Do something OTHER than learn how to skate, but do something that requires skating. Your medulla oblongata will do the job far faster if it's allowed to do it without micromanagement from your conscious mind.
Same goes for programming. You won't learn how recursion works by typing in a fibonacci example. You'll learn how recursion works when you want to make a gallery thingy and find yourself needing to catalogue all *.jpg files below a certain directory. You won't learn how object oriented programming works by re-reading the wikipedia article on polymorphism, you'll learn more valuable lessons when you decide it's insane to be writing almost identical code in so many places and realize that's what a parent class is for.
Solve YOUR problems, not the book's, and you will develop a passion for problem solving. Almost all of the "programmers" out there who succeed have one thing in common: they wanted something implemented so they got it working on their own.
Re:learn by solving *your* problems (Score:2)
That's the most cogent statement of that princ
Re:learn by solving *your* problems (Score:2)
-WS
Re:learn by solving *your* problems (Score:2)
Knowing what to learn (Score:3, Insightful)
Knowing what to focus on can be taken as a research problem. Before actually trying to learn how to go about using the individual technologies, you need to research what each one is, why it is important, and how it will fit in with other technologies you would like to learn.
In some cases, the answer may be to learn a little about each technology progressively. Learn a little HTML, then some Javascript, then more HTML, then more javascript, more HTML, the DOM, XML, ...
When technologies are interrelated you sometimes need to learn a little about all of them before you can really start to master any of them.
Or just start trying to learn the most about what you're most interested, and when you discover another technology is involved -- start learning a little about that other technology too.
PHP (Score:5, Interesting)
Part of the reason I prefer to give people PHP, is because quite a few web servers support it now. Another reason, is because you don't need a compiler. The next would be the simplicity of string manipulation. And from there, you can get people into basic file handling and other things of that nature which will carry over nicely to other languages.
Re:PHP (Score:3, Insightful)
I agree that a budding programmer should start with a language that's, simple, not so simple it makes is useless for much more than instructional purposes (my main gripe with BASIC), and widely supported/used. Now, PHP fits those three pretty well, but I'm of the opinion that more general purpose languages like Perl (including Python, Ruby, etc') are going to be more beneficial in the long run
Re:PHP (Score:3, Insightful)
Best way to start... (Score:4, Interesting)
I went to college for psychology and criminal justice. Since I was paying my own way, I went around looking for jobs. I tinkered in PCs before and was willing to learn anything, so I applied for and got accepted to a job with our ResNet (Residence Hall Network) department. All I knew at that point was installing Windows, some network stuff, and other odds and ends with computers.
We had a small team, probably 14 students in total and had a non-techie but very nice and open supervisor. We were given specific areas to work in given our strengths but there was absolutely no problem with teaming up to learn something new.
When one of the students left, leaving a half-finished VB project, I decided to try and tackle it. Working closely with my friend Sean, we worked out what was done and what needed to be done. Any resources I needed were supplied by other staff members or my gracious supervisor. In the end, I learned a whole new programming language (albeit, not the one that many Slashdot geeks are friends with). I worked with our web dev guy to try and learn PHP and Perl (I failed miserably) and worked with another guy to learn about imaging. I talked with the university's network admin about how routing worked, Novell stuff, whatever.
In the end I picked up so much that I decided to pursue a career in IT. Now I am a helpdesk manager, I love my job, and I try and emulate my old supervisor as much as possible. I learn a lot from my students (my latest challenge is ASP) and I try and teach them what I know in return.
Just like the OSS community I feel bound to take what I've been given and pass it on to others. I'm not certain what your particular situation is, but I think surrounding yourself with people who know the technology, languages, or protocols goes a long way to staking out your own learning experince.
Don't be afraid to hit the local library either. They usually have the latest books (for some reason the latest PHP/MySQL book is always available!) Ask a lot of questions, and don't be afraid to set up a sandbox and just play. Last bit of advice: Don't get frustrated. I can recall many times when I was against a wall with some weird configuration problem or what have you only to find the solution after using Google or taking a walk.
Good luck!
Unix (Score:2)
I'd learn Unix first. Download yourself an emulator (I'm not telling you to switch to Unix) and a Linux or FreeBSD distribution (or open up Terminal.app if you have a OS X Mac), get yourself a Unix book or online Unix tutorial, and start learning some basic Unix commands. Once you are bored with ls, grep, and friends, learn how to set up X11 and basic system administration skills. Having a grasp of Unix will help you out in a lot more areas than one would imagine at first.
Much of computer technology (sc
Don't start with the tools, start with the concept (Score:5, Insightful)
For the most part, all the high-level languages are the same. There are differences and strengths, but at the point you're at most of these would be lost on you anyway. You already know Javascript, so pick another language -- and try to build your project in it. PERL, Python,
About 5 years ago I wrote a project for my brother so I could sink my teeth into PHP/MySQL. It's turned into a product we now sell and make (a small amount of) money on each year. The hardest part for me is sticking to the project with no real client to be beholden to -- hence MY need to build something I really want to make, not some example out of a textbook.
When I decide it's time to learn something new, I generally see what is "up and coming" and learn that so by the time I'm fluent, I'm much more marketable. Right now, Ruby looks like a pretty decent choice.
Good luck!
One language/platform at a time (Score:2)
There are real advantages in learning something thoroughly, and what you learn often applies we
So many responses, so much BS (Score:4, Informative)
Finally, learn Assembler. Yes, Assembler. It will teach you how things work. NOW you can learn ANY programming.
Next a course in Data Structures is good. Follow up with a course in database management. Especially if you can get a good one that teaches Network DBMS structure, not just Relational.
Operating systems are LAST, and only if you want to be systems programmer.
Re:So many responses, so much BS (Score:2)
And how do I know this? I've been around long enough that I wrote some DDL translators. (And had them marketed as well, by AT&T and Bachman Information Systems.) The Rel
A Good Foundation... (Score:5, Informative)
My suggestion is that (and in this order):
Now you should have a solid good base to learn just about anything. I would stay away from IDE's as much as possible and try to learn by hand, it is sort of doing division long hand before using the calculator.
Be aware that most technolgies like LAMP, AJAX, DHTML, etc are just applications and combinations of technologies that will be super easy to undertsand if you have a good grounding in the basics.
Re:A Good Foundation... (Score:3, Insightful)
I recommend the free book Common Lisp: A Gentle Guide to Symbolic Computation.
http://www-cgi.cs.cmu.edu/afs/cs.cmu.edu/user/dst/ www/LispBook/index.html [cmu.edu]
After that, Practical Common Lisp by Peter Seibel.
The reason I recommend lisp is this: I started on C/C++ and those languages were always a pain to program in, I was wrestling them to translate the ideas in my head to the screen. Lisp is pretty easy once learned (easier than most languages I find), especially when you have
Python (Score:3, Insightful)
Not the best advice...but a good starting point... (Score:3, Insightful)
First, it doesn't pay to learn programming languages. Programming languages change or are replaced by the next new thing. Who knows what programmers will using in 5-10 years.
If you want to program, learn how to write algorithms. Once you learn how to write algorithms, you can write in any programming language, even if you have never been trained in it.
That was the first thing I learned in the programming section of my IT degree. We didn't touch a programming environment until halfway through the semester, and by that point, we could write the algorithm for a PB&J sandwich in pseudocode.
When you can write algorithms, you can become language portable. If you have a job that requires C#, you can use a desk reference and the help system to implement your code. If your next job requires Delphi, you won't need to completely retrain yourself.
Finally, give yourself projects. I learned how to develop databases by giving myself personal projects in that field, taking advantage of the MSDNAA to get SQL Server 2000 and Microsoft Access. With a simple SQL refresher, I would feel comfortable sitting down and hand coding a simple DB in Oracle, DB2, or MSSQL (not taking into account differences in each SQL implementation).
Lots of different paths are available! (Score:2)
I'm really dating myself here, but my first exposure to computers was with an inexpensive Commodore home machine that shipped with manuals detailing the entire memory map of the system. With 4K of RAM and all the specs publis
If you are interested in web applications (Score:2)
The IT field is huge. You need to find your own way around it. You might like client side development using Javascript and AJAX, or you might prefer to work in the database with languages like PLSQL (Oracle). I always found I learned the most by taking on a tough project and working at it until I
IT (and programming) does not happen in a vacuum (Score:3, Insightful)
Why? Because experience and an interest in what the organization is actually doing (and which the IT people are there to support) is harder to come by than someone who can remember some bit of API syntax or or write a select statement with a 5-way join right on the first try. Be well rounded in IT, sure, but also take time to understand where money comes from. Why projects fail. How Sarbanes-Oxley impacts database backups. What HIPAA is.
If you're going to expect an IT paycheck, get hip to what it is that generates the demand for what IT does, and what it means to be worth the money. That sounds rather vague, but if you follow the other advice you're seeing here (about how to get acquainted with various languages, coding structures, etc) you're only partway into a successful scenario. You'll be far more likely to be paid to learn the interesting new things that come along if the organization you're working for sees that you're interested in the bigger picture.
Re:IT (and programming) does not happen in a vacuu (Score:2)
Re:IT (and programming) does not happen in a vacuu (Score:2)
Re:IT (and programming) does not happen in a vacuu (Score:2)
A common theme in all of these companies was that they were biased against Computer Science students. Instead they'd recruit from any discipline (the apptitude
Mainframes (Score:4, Insightful)
You've missed something (Score:2)
O
Look at your local university's curriculum (Score:3, Insightful)
I'd suggest that this is a good path.
I'd also suggest you avoid php like the plague. It is a language that does not encourage good programming practice among novices. Also, it is terribly designed: you should see the best that IT has to offer, rather than the worst.
Re:Look at your local university's curriculum (Score:2)
Re:Look at your local university's curriculum (Score:2)
"Basic Programming -> Data Structures -> intermediate topics: " Here I would add RDBMS concepts since a huge chunk of the work developers do is SQL/DB related code. Many developers (frighteningly enough) do not understand basic RDBMS and SQL stuff, leaving it to people like me to explain to them why certain things are very, very bad.
-WS
Just start. (Score:2)
You want to learn AJAX. Ok, learn (X)HTML, CSS, JavaScript, some basic XML (XSLT can help, as you can play with it in the browser), and learn the server-side technologies -- PHP, Perl, Python, Ruby, even C/C++/C#/Java -- Perl might be the fastest to get started with, and learn some SQL programming -- MySQL.
You don't necessarily have to do all of those for basic AJAX programming, but it helps. You also don't have to go a
there is an order (Score:2)
To make a metaphore, it's the same thing as asking people how you could become great at sports. Your goal is to be great at all sports such as baseball to hockey to golf, but you don't know where to start. The most obvious answer is you should start where you are most naturally talented. The other side of the response
Just my .02 (Score:2)
Formal Education (Score:2, Insightful)
Re: (Score:2)
What Does Your Job Require? (Score:3, Informative)
There is another angle that you can take in looking at this question: what does your job require you to know? Or perhaps, what do you need to know in order to qualify for a particular position?
I've been in the IT industry for a long time, including as a consultant and I've seen companies of various sizes. I'll never forget one huge financial services firm, which of course had a correspondingly huge IT department (on the order of 1,000 people), had a guy who was in charge of DNS. That's it. This guy probably got paid 6 figures just to manage their DNS. I'm not saying DNS isn't important, but I can't believe it took up 40 hours of work a week. Anyway, that was just an example of one extreme. On the other hand, you could work for a small company that has lots of IT demands like I do, and they need me to know stuff ranging from managing the computers/network/security to the PBX and phone lines.
So if you're not currently employed in IT, do a little research. Find out what kind of company you'd like to work for, and what they want in an IT guy.
PS> If you're in England or at least get Channel 4, check out the IT crowd [youtube.com]. It's a pretty funny sitcom on life in IT. If not, you can find episodes on the show's website [channel4.com] or on YouTube [youtube.com].
structured code (Score:3, Interesting)
The one thing I do believe strongly is that once you learn a few of the programming languages, you take the time to learn structured programming and design. You don't truly realize how important it is until you learn it and then have to go back and try to maintain code written by some guy who taught himself Visual Basic and thinks he's uber programmer because of it.
Seriously. The code you make after you learn structured programming and design will take about half to a quarter of the effort to maintain. The only problem is that you sort of have to learn to do code in the first place before it'll make any sense.
Why IT? (Score:5, Interesting)
Consider "real" engineering (mechanical, civil, even electrical). Many old-timers in these professions are retiring/have retired. Based on input from my discussion group, there are not enough people getting into this field to replace the out-goers.
With the current generation's "pre-installed" computer knowledge, we need more people to get into the traditional engineering disciplines. It's hard and you might not be in an office every day, but this is going to be a booming area soon.
If you have highly-developed computer/programming skills already, all the better.
Re:Why IT? (Score:3, Interesting)
I don't know why they didn't take a job in their field. Maybe the jobs are crap, maybe the pay just isn't worth it. Maybe the engineers are so old and wise that there are too few people graduating who can take up the slack?
Re:Why IT? (Score:3, Interesting)
Good point - you can alway move into IT later when your Masters project simulating something just turns into a computationally expensive random number generator run on a supercomputer.
Oddly enough a mechanical engineering subject based around optimising models of dynamic systems to run on analogue computers gave a surprisingly good insight on how to write code in a lot of different situations. Also after milling machine G codes the hairiest
Re:Why IT? (Score:3, Interesting)
I graduated from RPI last year with a dual BS in Mechanical Engineering and Computer Science. As such, I looked into the job market for both of these areas. A number of things drove me towards IT rather than engineering, but the two biggest were money and time. Let m
What's The Best Way To Eat An Elephant? (Score:2)
It's actually a personality "trait" when you often find things too overwhelming to just dive in and start. I have it, and it's something you should talk to a specialist about if you want to save yourself years of difficulty before you learn to overcome it on your own.
That said, computer technology and programming is truly one of the most complex systems mankind has ever created. Don't feel bad. Just pick a language and start working on Hello World. You don't have to be able to write y
just follow what interests you... (Score:2)
Learn C (Score:2)
In addition, many other languages borrow from C's syntax (prefix operators, for loops, etc). Knowing the syntax will
Classes help structure learning (Score:5, Insightful)
What you're trying to do is somewhat akin to trying to understand paragraphs before you know how to construct a sentence or before you have an adequate vocabulary. An intro to CS class will provide the grammar and basic concepts that you can then apply to all these high level things.
I'm sure some anti-school posters will tell you just the opposite, but you should remember that schools are only as good as the teachers and your willingness to learn. CS classes developed to provide structure to what seemed, even in the 80s, like a vast quantity of unregulated knowledge. A year of classes at your local community college may provide more help than three years of wading through newsgroup postings and online tutorials you don't entirely understand.
Don't Neglect the Basics (Score:2)
The othe
Seriously (Score:2)
But the ones I consistently use are VB and PHP. And while you might think SQL is simple - it isn't. It's a very powerful query language. Do a primer in XML too.
Don't be a wheelwright (Score:2)
First, pick something else you're interested in and use this as a focus for your studies, because the technologies you mention are almost random. If you don't have a reason for doing what you do other than "this stuff is cool" you're never going to learn anything. Like games? Start making games. Like online communities? Make one of those. Whatever, but you've got to have a direction.
Next you need to learn more meta-techno
not IT (Score:2)
Programming ? (Score:2, Informative)
For fast development: Smalltalk & SQL (Score:2)
Now for the Free Database of choice:-
And the books to study:-
Get your head around that lot and you will be a very valuable item. Toss in a modicum of accounting knowledge to ice the cake.
Everything mentioned in the above links is $ free.
Re:Where to start (Score:2, Interesting)
Re:Where to start (Score:5, Insightful)
It's like telling an architect that he needs to learn how to make bricks to be a good architect.
You can learn only so much in a given period of time. Don't waste it on something you can't use. I understand assembly, and it is at times a comforting feeling, but in all honesty I belive the time I spent learning assembly would have been better spent learning design patterns.
Re:Where to start (Score:4, Insightful)
No, it's suggesting that you have to know how strong bricks are to build a building that won't collapse. And the Dean of the school of architecture where I went to school was there because a building he designed collapsed.
Anyone that suggests that you DON't need assembler is fooling themselves.
Re:Where to start (Score:3, Insightful)
Re:Where to start (Score:4, Insightful)
I agree that in IT there is nothing to fear but fear itself. So be technologically independent, get your hands dirty, get the hard stuff out of the way first then enjoy the ride back down, set yourself up an Apache server or install Gentoo. Compile "Hello World" with GCC. Try to use Emacs or Vi.
While graphical IDEs are all well and good, if you can put up with the command line, text-only way of doing things then you are a bit more future proof, know a bit more how it works and are ready when the brown stuff hits the fan.
Re:Where to start (Score:4, Insightful)
If you want to become a good programmer I would suggest doing something like this:
Start with C.
A) Write a program to open a file and display it to your screen.
B) Expand that to make a copy of the file backwards.
C) Make a new program that gets 2 numbers from a file (A and B) and prints A + B.
Move on to C++ I would read Ivan Horton's beginning C++
A) Start with a program that opens a file, reads a list of numbers, and sorts them.
B) Extend that so you can work with 10+GB files quickly. (This would be a good time to pick up a book on computer algorithms and learn how your operating system handles memory.)
Learn enough ASM to replace 2 functions in the above project with ASM
I would stick with java for a while.
A) All the above projects
B) A simple web server.
C) Extend the web server so it returns the contents of a small Database.
Learn enough LISP and Pearl to parse a java file and find all the variable names for each function.
At this point you should pick complex project you want to work on and using the best language for that task get it to work.
PS: Have fun.
Re:Where to start (Score:5, Insightful)
If you insist on learning C first, it's probably a good idea to learn Java before C++, because that way I think it's easier to get into OO habits.
It may even be a good idea to have some LISP experience before going to C++, because some advanced template techniques are basically functional style (I guess that's why many people shy away from those).
BTW, I guess you meant Perl [perl.com], not Pearl [uni-hannover.de].
Re:Where to start (Score:4, Insightful)
Naw, it's because C++'s template syntax is crufty and stupid, and the error messages are totally opaque.
I'd say Java (or C# - same thing, really, except C#'s libraries suck more), C++, Lisp, C++.
Re:Where to start (Score:2, Insightful)
Re:Where to start (Score:4, Insightful)
Basically from a programming perspective I would not be as good as a specialist, however I don't normally program for a living and actually design at a much higher level so I normally tell programmers what is required.
Not sure about the Mac. I find Linux with some good stats packages work for me and If you want a serious document preparation package use LaTeX (it's free and surprisingly easy to use).
Re:Start not; do or do not. Powertools kick butt t (Score:3, Informative)
Re:Where to start (Score:5, Informative)
You can draw a line like C____C++_Java____Python___Ruby_Lisp
I suggest Common Lisp an Interactive Approach [buffalo.edu].
Re:Where to start (Score:5, Insightful)
Re:Where to start (Score:3, Informative)
More suggestions (Score:5, Informative)
1. Episodic Learner Model/An online Lisp tutorial [uni-trier.de]
2. Common Lisp: A Gentle Introduction to Symbolic Computation [cmu.edu]
3. How to Design Programs [htdp.org]
4. Practical Common Lisp [gigamonkeys.com]
5a. The book - Structure and Interpretation of Computer Programs [mit.edu]
5b. The movies - Structure and Interpretation of Computer Programs [mit.edu]
6. Loving Lisp - the Savvy Programmer's Secret Weapon [markwatson.com]
7. Common Lisp the Language, 2nd Edition [cmu.edu]
8. On Lisp [paulgraham.com]
9. common lisp: a web application tutorial for beginners [blogspot.com]
10. JavaScript: The World's Most Misunderstood Programming Language [crockford.com]
11. Free JavaScript Learning Center [javascriptmall.com]
12. JavaScript for Scared People [anaesthetist.com]
13. JavaScript Closures [jibbering.com]
14. Why's (Poignant) Guide to Ruby [poignantguide.net]
= 9J =
Re: (Score:3, Interesting)
Re:Where to start (Score:2)
Re:Where to start (Score:2)
I would guess it's between Java and Python.
Re:Where to start (Score:2)
df
Re:Where to start (Score:4, Funny)
Re:It doesn't matter (Score:2)
Seriously -- you should write childrens' books.
Re:Don't Worry About It, It'll Change (Score:2)
You HAVE to choose an area of interest. Also, learn the business environment that your interest rests in. If you are going to be skilled AND revenue generating in an area of expertise this is a must. Once you understand the underlying concepts of a field and its diciplines - you will need to be vigilant on where they are going in order to apply your knowledge to maintain your revenue. If you can maintain your revenue in this manner, it effectively co-opts business to fund your learning.
Finally, A
Re:Knuth's Literate Programming. (Score:2)
Eh... That site is pretty messy. I'm not even sure they proofed what they wrote.
Oooh, it's recursive.
The FAQ is hidden under articles and is a PDF. WTF? I can't even find out what it IS without starting loading up a freaking PDF? C'mon. No serious programmer stores ANYTHING they might have to actually look at in PDF if they can possibly help it.
I admit the idea of a programming language with built-in documentation and the idea of programming as 'do
Re:Republican WAR on IT (Score:2)
Businesses and their lobbyists want A+ workers at D wages, and they will invent "shortages" etc. to create the "need" for offshoring and visa workers.