Last updated 25 October 2001
Acknowledgements: J E Cripps, Jerry Coffin, Loopy, merrill196884, Mike_Wisdom, MrKite1982, Scoobi_FreeBSD,
WarmCupOfJava_TheFranchise
#include <disclaimer.h>
Those of us who like to chat in Yahoo!'s programming room get asked a lot of questions, of which the most common is... well, read on for that. Since it sometimes strains the atmosphere when you are happily nattering to a friend about sockets or recursion or whatever, and somebody wanders in asking, "Can anybody teach me HTML?", I decided to write this FAQ so that we can happily point them here, knowing that they will find the answer they need. Warning: it isn't always the answer they want. Anyway, here goes:
Q: Can I ask a question?
A: Obviously. You just did. This is the most common and the most irritating of all questions. Please, just ask the question you want to ask! You don't need permission to ask it.
Q: May I ask a question?
A: No. Go away. (See above.)
Q: You seem very negative. Have you had a bad day?
A: Yes. But keep going - you might find your answer in here yet.
Q: Any computer whizzkids in here?
A: No. We are all yashmak salesmen from Denver*. But some of us know JavaScript and/or HTML. The only reason that we are in the programming room at all is to say "Hi" to each other, in common with most other chat rooms.
*Except for one guy who's actually a pig farmer, but who can't spell it, and that's why he's in the programming room.
Q: I can't get my scanner to work / how do you attach a file in Hotmail / etc.
A: This is a programming room. We talk about programming here. If you can't get your scanner to work, try RTFM. If that fails, contact your vendor. If that fails, ask in the Lobby or in Yahoo! Chat Help. NOT HERE!!!
Just in case you didn't get the message, this is a programming room. Okay?
Q: Why won't anyone answer my question?
A: Usually one of four reasons. By far the most common is that the question is, quite simply, off-topic for this room. The second most common reason is that nobody in the room knows the correct answer to your question. It is a long-standing chatroom convention not to answer a question if you don't know the answer. This saves on bandwidth in the long run, and is much better than giving a wrong answer! Some people do say "No I don't know" but it's not required. Another reason is that the person who does know (or the people who do know) is busy right now, and will get to you in due course, if you're patient. The fourth reason people don't answer questions is because they are being repeated over and over and over and over again - a practice known as flooding. This almost guarantees that you won't get an answer.
Q: What's the Java market like right now?
A: About $1600 per tonne.
Q: Where can I download VB/C/C++?
A: Visual Basic, Visual C++, etc are commercial products - the full version cannot be downloaded legally. If there are demo versions available for download, I would be very interested to hear about them so that I can add links to this page.
Q: Well is there anywhere I CAN download a legal C compiler?
A: GNU C and C++ compilers may be freely downloaded from http://www.gnu.org/software/software.html. I'm told there are mirror sites listed at http://www.gnu.org/order/ftp.html. And on the commercial front, some people may be offering versions of Visual Basic etc for sale (cheap!) at ebay. DJGPP is a compiler with a good reputation and may be found at www.delorie.com/djgpp/ but, not surprisingly, it is a busy site so don't be surprised if you get a 404 - just retry later.
Or check out some early versions of Turbo C from Borland's museum site. All good (albeit pre-ANSI) stuff.
I'm not sure how long it will last, but Borland are currently offering, for free download, Borland C++ 5 !!! Go get it quick!
Or try this site where one can search an entire database of free compilers and interpreters for specific interests, languages, proficiencies, preferences, and platforms. There are probably many other similar such sites, but this is the first I have been told about.
Delorie update: the Delorie site apparently recommends that one download djgpp from Simtel Net either at http://www.simtel.net/simtel.net/ or ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/. Consult the FAQ(s) there for installation.
Another possiblity is to get a UNIX shell account and use the compiler that should be available there; check with your ISP to see what is already included in the fees charged.
Q: How do you dynamically allocate an array of M * N items in C?
A: For this and many more questions about C, please first check Steve Summit's C Programming FAQ to see if the answer is in there. Then, if it isn't, by all means ask in the room.
Q: Good tutorials on C?
A: These are the best I've found so far:
http://www.eskimo.com/~scs/cclass/
http://www.geocities.com/tom_torfs/cintro.html
Q: Good books on C?
GENERAL INTRODUCTION/TUTORIAL:
1) For real beginners looking for a solid introduction:
C Programming: A Modern Approach. K.N.King. W.W.Norton & Company, 1996. ISBN 0-393-96945-2
2) For somewhat more experienced users looking for a solid introduction:
The C Programming Language, 2nd Ed. Kernighan & Ritchie. Prentice Hall, 1988. ISBN 0-13-110362-8
3) Other recommended introductory books:
C: How to Program, 2nd Ed. Deitel, H.M. & Deitel, P.J. Prentice Hall, 1994. ISBN: 0-13-226119-7
REFERENCES:
C : A Reference Manual, 4th Ed. Harbison & Steele. Prentice Hall, 1995. ISBN 0-13-326224-3
The Standard C Library. P.J.Plauger. Prentice Hall, 1992. ISBN 0-13-131509-9
C Programming FAQs Steve Summit Addison-Wesley, 1996. ISBN 0-201-84519-9
ADVANCED TOPICS / FURTHER EXPLORATION:
C Traps and Pitfalls. Andrew Koenig. Addison-Wesley, 1989. ISBN 0-201-17928-8
Expert C Programming: Deep C Secrets, Peter Van Der Linden, Prentice Hall, 1994. ISBN 0-13-177429-8
Practical C Programming. Steve Oualline. O'Reilly & Associates, 1993. ISBN 1-56592-035-X
Problem Solving And Program Design In C, 2nd Ed. Hanly & Koffman. Addison-Wesley, 1996. ISBN 0-201-59063-8
Algorithms in C, 3rd Ed. Robert Sedgewick Addison-Wesley, 1998. ISBN 0-201-31452-5
(Forthcoming) C Unleashed, Heathfield & Kirby, Sams (Macmillan Computer Publishing), 2000. ISBN 0-672-31896-2
Some of you may know I've been working on a book on intermediate/advanced level C programming for a while now.
Well, it's ready! I wrote a little over 25% of the book (around 320 pages). Lawrence Kirby is the other principal author.
The rest of the book (i.e. most of it) was written by various contributing authors, including Peter Seebach, Steve Summit, Dann Corbit, Jack Klein, and our own Mike Wright (Mike_Wisdom), Ian Woods (hairyian), and Chad Dixon (Loopy/127001).
You can order it from Amazon. Fuller information on its
contents is available from The C Unleashed Home Page. Because I've given you that Amazon link, I think I'm obliged to put one of these things
here.
Q: Any hackerzz in hear?
A: Pleaze learn to zpell. Depends what you mean by hackers really. If you are looking for help cracking into somebody else's computer, you are not looking for a hacker - you are looking for a partner in crime. If you want to spend your life looking over your shoulder, that's your business. True hackers are those who love, and excel at, stretching the limits of what their computer, or language, or operating system, or network, can achieve. In the past, this included breaking systems for the sheer fun of it - but nowadays it's so easy that they don't bother. If you are looking for people like that, it is no good asking "Any hackers in here" because the good ones tend not to boast that title for themselves. (Imagine someone asking 'any geniuses in here?' - a real genius isn't going to answer 'yes, me', is he? The parallel with hackers is exact; hackers are very clever people.) So how do you find a hacker when you need one? Here's how. Watch the chat, and look for people whose opinion appears to be respected by many others in the room; people who offer intelligent and well-reasoned technical opinions; people who offer help freely when they can; people who speak with the authority that comes purely from knowing their subject. People with all these characteristics tend to be the true hackers.
For further information see the entry for "Hacker" in the Jargon File.
Q: What do people mean when they say "l8r"?
A: l8r means "See you later". (L-EIGHT-R). While we're at it, brb means Be Right Back, afk means Away From Keyboard, PM means Private Message, wb means Welcome Back. bbl is Be Back Later. LOL means Laughing Out Loud, or variations thereof (eg Laughs Out Loud, Laughed Out Loud etc). RO(T)FL means Rolls On (The) Floor Laughing. LMAO means Laughing My Posterior Off. There are others - work it out from context and you'll be fine.
Q: Does anybody know Java?
A: Yes, I understand that Sun Microsystems has a pretty good idea of how it goes.
Q: All right, pedant - does anybody here know Java?
A: Well, that's a better question at least. (By the way, pedants make the best programmers.) If you want to learn more about Java, try these sites first, just to check that the answer to your question isn't blindingly obvious:
http://java.sun.com/docs/books/tutorial/
For Visual J++ help, check out http://www.microsoft.com/visualj
Q: Can anybody help me with HTML / JavaScript?
A: No. You are beyond help. Oh all right, find a page that does what you want and save that page to your local machine. In Internet Explorer, you do this using View/Source...
If you'd rather "copy and type" try the Mosaic site here.
Or you could have a look at www.htmlgoodies.com. I can thoroughly recommend this site, which contains excellent tutorial material.
Also, there's a nice little book called '10 Minute Guide to HTML 4" by Tim Evans, and published by Que. ISBN: 0-7897-1491-4. In mid-1998 the book cost £13.99 UK, $14.99 USA, $21.95 CAN. (Have a care, because he's rather big on "Cascading Style Sheets" which aren't portable to all browsers.) You can reach Que at www.quecorp.com.
Q: Why do people never respond to my postings?
A: Possibly because you are advertising a site, or quoting a scripture, or flooding, or spamming. For the rules of behaviour on the Net, you are well advised to visit the sites http://www.albion.com/netiquette/book/index.html and/or
http://webreference.com/roadmap/map07.html and/or
http://www.isoc.org/internet/conduct
Q: Does anybody here know C?
A: Yes.
Q: Can you teach me C/C++/VB/whatever?
A: Yes we probably could, if we had the time and inclination. Most of us have neither. There are plenty of excellent books available (books are big flat things with hardcopy inside), and in fact when you buy a compiler it tends to come with documentation on how to use the language for which it is the compiler. (See a previous question for an update to this answer.)
Q: Could you please email me a copy of Visual C++ or Visual Basic? Alternatively, could you burn a copy of the CD and Fedex it to me?
A: Software piracy is a crime. Sensible people don't get involved with it. Programmers do not advocate software piracy. And burning CDs tends to melt them. :-)
Q: Where can I download some demo Java or Visual Basic code?
A: Try http://www.planet-source-code.com/PlanetSourceCode/
Q: Will you do my homework for me?
A: No. Go away.
Q: Which is the best language?
A: The reason there are so many languages is that different people like, and are good at, different things, and think in different ways. Find a reasonably mainstream language that you like the look of, and learn it. You will find learning other languages simpler after that.
Q: Can you help me fix my email?
A: No. Go away. The right place for this kind of question is Yahoo! Chat Help room, or the lobby. People in there are quite accustomed and happy to answer this kind of question.
Q: How do I do those cute smiley faces?
A: Type :) but if it is the only thing on the line, precede it with a space, or Yahoo will think you want to "emote". Once you have mastered :), try ;) :x :p and one or two other combinations. Experimentation is a wonderful thing.
Q: How do I delete the history in my browser?
A: If you didn't go to that kind of site, you wouldn't need to. Again, check the Yahoo! Chat Help room or the lobby.
Q: Can you recommend a good book on <language>?
A: For C, "The C Programming Language" by Kernighan and Ritchie (and see the list above too).
For C++, "The C++ Programming Language" by Stroustrup.
Update 10 November 1999
merrill196884 adds: Everyone peppers you with questions about a good c++ reference. My recommendation is "How to Program C++", Deitel & Deitel, Prentice Hall, ISBN 0-13-528910-6. It has a lot of similarities to many other treatments, but they really seem to have a knack for understanding what it was like not to know this stuff.
The book I REALLY liked was by the same authors called "Getting Started with MVC++6", same publisher, ISBN 0-13-016147-0. I think the target audience for it was fellas like me, who can and do pay for useful products and don't begrudge sending Bill Gates another fifty bucks. This books addresses what for me were the hardest parts of learning anything about programming as it is now done.
Thanks for that, merrill196884. Any other personal recommendations for books will be considered for inclusion on this page, except of course for Dummies books or anything by Herbert Schildt.
So what's wrong with Herbert Schildt then?
His explanations are simple, clear and, all too often, wrong. Check out this site to see what Clive Feather (a member of the ANSI committee) has to say about Schildt's Annotated ANSI C Standard
Java books - sorry, no recommendations. Watch this space.
For Visual Basic, check out the Books Online info that comes on the CD.
For MIX, "The Art of Computer Programming" by Knuth. This comes in three large volumes, and is highly mathematical in content, so be warned.
Q: I NEED HELP WITH MY PROGRAM, ANYONE CAN HELP?
A: The caps lock key on most keyboards is situated between the [shift] key and the [tab] key, over to the left somewhere. Please press it exactly once, and then never press it again.
Q: How do I determine the processor speed of my Pentium programmatically?
A: Okay, I'm cheating a bit. This isn't actually a FAQ. But it was asked once, and is fun to answer. Have a look here for Microsoft C code to do it (versions 4 onwards should compile it okay). In case you don't have MSVC, here is the binary.
Q: Why does everyone who comes in here expect us to be experts on every aspect of computing and know all the answers to all their questions, and be nice enough to help them even though their attitude is extremely pushy and rude?
A: Not everyone does this. But it's true. If you are looking for help, don't be rude or pushy. The more polite (up to a certain, nauseating point) you are, the more likely it is that people will help you.
Q: I've heard that you can't do graphics programming in C. Why not? And doesn't that make C rather limited?
A: C is defined by the ISO/ANSI C Standard; the definition explains the core language, the bit of the language that must work on all computers that have ANSI C compilers. That standard makes no provision for graphics. It doesn't even make provision for clearing the screen! These things simply cannot be done portably (Java fans will say 'Oh yes it can' but they don't even know what day it is, so we won't pay too much attention to them, will we? :-) ). Now, that's not to say that you can't do these things in C. Most compiler vendors supply extension libraries to allow you to do things like - well - clearing the screen!, and graphics, and stuff like that. But the trouble is, these differ from one compiler to the next. There have been attempts to standardise this non-standard behaviour - the most successful non-standard standard (or should that be standard non-standard?) is the POSIX standard.
Q: I need some ideas for programs. Has anyone got any suggestions for useful programs I could write?
A: Sure. Click here for a list of programs and other tasks that the world would thank you for completing.
Q: I have heard that there is a new chat client under development by some of the regulars here. Is this true?
A: Yes. Actually there are several people I know of who are developing clients right now. I'm writing one, in conjunction with Loopy, in C++ Builder for the Win32 platform. Others are also keeping themselves busy, and at least one Linux client is under way. I will be posting a link here shortly to a page with more information about the Builder client.
Update 26/10/1999 - I've (rather regretfully) had to stop developing Yahello! for a while, because of the book. Once the book is done and dusted, I'll get back to the client, I promise. In the meantime, Loopy may or may not be continuing work on it - I'm not sure how busy he is.
Update 07/07/2001 - Wow, has it been that long? Well, I guess I'd better either fix those bugs or shut up about releasing it.
Q: I heard MrKite1982 wrote a chat API! Where can I get KChat? A: You can get it from www.geocities.com/mrkite1982/kchat.zip. It doesn't work by the way, since Yahoo! changed their protocol, but he may well be producing a fix shortly.
Q: Is this the last question in the FAQ list?
A: Yes. For now.
General Tips On Finding Out What You Want
If you are looking for help, there are some important steps you can take to maximise your chance of getting what you need:
Firstly, do everything you can to research the problem yourself before asking. Often, it is quicker to find your answer in the documentation for your compiler, in supplied reference works such as Books Online, and so on. Have you done a Web search for the information you require? Have you found an appropriate newsgroup in Usenet and tried to post a question there (having first ascertained that it's on-topic for that group and not covered in their FAQ)? (Remember: never post attachments, binaries or HTML to a text newsgroup, or they'll ignore your question and focus on your having broken the conventions.)
Secondly, don't just stride into the room and announce your question. Check the chat for a minute or two to get a feel for the current topic. This way, you can get some idea of who is likely to be able and willing to help you. Also, the conversation in the room ebbs and flows. Sometimes the regulars (who are usually the experts) are deep in conversation with each other, and are unlikely to even see your question, because they are focusing on each others' postings. Be patient, and wait until a natural lull occurs (this happens a lot), so that you can be sure of their attention. The other way of getting their attention is to flood the room, but this is futile because they'll just reach for their 'ignore' buttons and that's not going to help you one bit.
Thirdly, ask your question without first asking if you can ask! Make sure your question is more like "Could somebody please explain strcpy() to me?" rather than "Any computer experts in here?" - otherwise it can take twenty minutes to establish contact with someone who can answer your question. Bear in mind that computing is a big subject, and nobody can know everything about everything. If you ask "any [insert subject here] experts here?", the real experts are unlikely to respond, because real experts know perfectly well that nobody can know everything, and they'll look a bit silly if they say they're experts and you then happen to ask them a question in one of the few areas they haven't studied thoroughly. Conversely, honest people who know they aren't experts will also not respond to an "any experts" question - and yet it may well be that your question doesn't need an expert or a guru; it may be that someone with a passing acquaintance with your subject happens to know the answer to your question. In summary, simply ask the question you need to ask. For example, "Can someone here explain to me how to update an Access database in Visual Basic?", not just "anyone here know VB?"
Fourthly, avoid PMing (Private Messaging) people. Doing so frequently irritates them (unless of course you are already friends with them) and even if they do respond, you are restricting the advice you get to that of one person. Talking about the problem in open chat gives others who know their stuff the chance to make corrections to the advice you receive. And if you want to know why Private Messages irritate people, just try concentrating on six or seven PM windows and the main chat window at the same time and try to be coherent in all of them. It's not easy, especially as PM windows become active whenever a message is received in them, which makes it practically impossible to complete any sentence in any window! Those fortunate souls who are using early alphas of Yahello! don't mind you PMing them, for a very simple reason - they have PM filters. This means they can't even see your PMs, let alone respond to them. (Yahello! periodically replies automatically to PMs, warning you of this.)
Fifthly, have patience. I have often posted a necessarily long answer to a question, only to find that the asker has left the room just before I could get my posting onto the screen.
And sixthly, when people do post answers, make sure you read them! Yet another source of annoyance to add to a long list is the person who asks a question over and over again, completely ignoring the answers that are flying at him or her from all directions. I think this is because of a tendency to distrust advice. There is a better way to handle this. If the advice seems reasonable, follow it up to the point where it doesn't seem reasonable any more. After a while, if you visit the chat room often enough, you will get a feel for who gives good advice and who doesn't.
Happy Chatting.
This page is not authorised or endorsed by Yahoo!
in any way. In fact, I doubt if they even know about it.