home *** CD-ROM | disk | FTP | other *** search
/ Neil's C++ Stuff / neilcpp.iso / newsletters / 001-16jan1999.txt
Text File  |  1999-01-15  |  16KB  |  138 lines

  1. -----------------------------------------------------------------------
  2. Neil's C++ Stuff
  3. Newsletter #001, January 16, 1999
  4. --------------------------------------------------www.cyclone7.com/cpp-
  5.  
  6. -<CONTENTS>------------------------------------------------------------
  7.  
  8.   I apologize it took me so long to send one of these out.  Most of you, I'm sure, can understand my position when I say I'm short on usable time (the kind where I'm not working OR sleeping :).  I'm going to try to keep the contents of every newsletter basically the same as far as organization.  That way you can find things easier and it makes writing new ones quicker as well.  Here is a list of the sections I have come up with.
  9.  
  10.   [CONTENTS]
  11.     An overview of the newsletter.
  12.   [FEEDBACK REQUEST]
  13.     When I need explicit feedback from you (the reader) then you will find this section listed.  Inside I'll explain what the dilemma is and what kind of response I need.
  14.   [SITE NEWS]
  15.     A description of what has been changed on the site since the last newsletter.  When new articles are added you will find them listed here along with direct links.  Site news may also have information on other things relating to the web site itself.
  16.   [MAJORITY QUERY]
  17.     When I get similar requests from many of you (and didn't have time to write you a detailed reply or make a FAQ entry) then I will address that here.  These will mostly be non-coding specific queries, like this one's is MULTIMEDIA PROGRAMMING.
  18.   [FREE STUFF]
  19.     Links to free stuff that I recommend for programming ventures.
  20.   [NEIL'S YACK]
  21.     I always feel the urge to bitch about one thing or another.  Well, this is a section for that.  Dont worry though, all of my whining in here will relate to C++.
  22.   [ASSISTING THE SITE]
  23.     This section will probably remain as it is through most of the newsletters.  Just a small ditty on how you can keep the site strong and growing without getting migraines in the process.  Very simple, please read this!
  24.   [CLOSING]
  25.     Simple closing, nothing special.  Sometimes I might make funny comments here or something.  Just there IN CASE I think of anything nifty to close with.
  26.  
  27.   Since this IS the first letter and not very well written (its 1:00 am, what did you expect!? :), you won't find a great deal of information.  Future information you get is going to depend on you, so make sure you read this whole thing anyway.
  28.  
  29.   Some things you'll find in here is my idea of an HTML newsletter vs plain text, overview of djgpp, information about multimedia programming and portability issues.
  30.  
  31. -<FEEDBACK REQUEST: html or plain text newsletter>---------------------
  32.  
  33.   I would like to send out this newsletter in HTML format so it will look all pretty and nice.  However I understand that some of you do not have the luxury of a mail client which can view these types of messages.  Note, that if I were to send this in HTML format I would hand-craft it to make it as readable as possible with ANY mail client.  So, I want response as to whether or not to make this change.
  34.  
  35.   If you would like to vote on this, send an email to "nobremski@hotmail.com" with the subject "newsletter format".  In the body of your message simply put "HTML" or "plain text".  Thanks in advance if you take the time to do this!
  36.  
  37. -<SITE NEWS>-----------------------------------------------------------
  38.  
  39.   It has been brought to my attention that for some people, the site causes JavaScript errors to pop-up.  If you are on of these people and you would like to have this fixed then you must send me the following information:
  40.     -> browser being used, including version number
  41.     -> error that popped up (a general description will be fine)
  42.     -> what you were doing at the time (if you weren't doing anything, then say that)
  43.   Thanks, I'd like to get this fixed ASAP.
  44.  
  45.   Most of what I added has been to the FAQ which you may want to check out.  I added the following Q/A's (these is since I rebuilt the site so most of you are aware of some or all of these): Pointers/Arrays, Exits Immediately After Execution, Screen Clearing (CLS), Checking User Input, Random Numbers, Passing Enumerated Types, Basic Menu System, and Returning Strings From Functions.
  46.  
  47.   You may find various other cosmetic changes throughout the site.  And always remember that you can always find a listing of all changes on the HISTORY page:
  48.   
  49.   http://www.cyclone7.com/cpp/history.html
  50.  
  51. -<MAJORITY QUERY: multimedia programming>------------------------------
  52.  
  53.   Many people have asked me about things relating to multimedia programming.  If you would like to pursue this subject then please check out the section titled "MULTIMEDIA" on my links page.  There are some great libraries for easily creating multimedia masterpieces.  Most of the support for them is good as well, so please be sure you check them out:
  54.   
  55.   http://www.cyclone7.com/cpp/links.html
  56.  
  57.   One of my current projects is called FATHOM.  Its basically a cross-platform multimedia skeleton.  It will provide "portable bells & whistles" for graphics, timing, sound, and input.  When I complete it (at least partially), I will list it on the downloads page.
  58.  
  59. -<FREE STUFF: djgpp>---------------------------------------------------
  60.  
  61.   DJGPP is a **FREE** C/C++ compiler for computers running Windows or DOS.  Game players who remember Quake will note that it was compiled with DJGPP.  There are good and bad things to DJGPP, but IMHO the good pretty well out-number the bad.
  62.   
  63.   PROS:
  64.     -> COMPLETELY FREE
  65.     -> "bell & whistle" functions are much like GCC (compiler for LINUX)
  66.     -> can make either pure DOS or Windows programs
  67.     -> 32-bit unsegmented access to the computer's RAM
  68.     -> tons of web pages dedicated to it, i.e. good support
  69.     -> lots of crazed followers that refuse to switch to something they have to buy
  70.  
  71.   CONS:
  72.     -> compiled programs require at least a 386 (sometimes I DO make programs for older computers, mostly for nostalgia)
  73.     -> like LINUX it is a sometimes a bitch to set up, I am thinking of making a page for this
  74.     -> DOS EXEs are sometimes bloated because they each contain their own DPMI server
  75.     -> does not completely comply with current ANSI standards (I ran into this once when I attempted to make an abstract, derived, template class with protected static data members *whew*)
  76.     -> compiling windows programs require this weird extra thing called RSXNTDJ
  77.  
  78.   You can find information on DJGPP at:
  79.   
  80.     http://www.delorie.com/djgpp/
  81.  
  82. -<NEIL'S YACK: portability, c++ left in the dust?>---------------------
  83.  
  84.   *PRELUDE NOTE***
  85.     Neil's Yack is, unless explicetly stated, my own opinions and whining.  I am not a 100% expert on anything I bitch about so don't always rely on me to be 100% right.  Likewise if I am wrong about something you only have to mention it to me and I will consider it.  No one in the history of humans has ever been completely open-minded, but I give it my best shot. :)
  86.   ****************
  87.  
  88.   If C++ programs are written correctly, they will be portable, extensible/flexible, and efficient.  Yet the recent craze in the past couple years has been over Java.  The major reason being, that you can run your programs on any platform supporting a JVM without having to alter or recompile your programs.  Inadvertently this immediately appealed to a great many people, and created a hype unlike anything else I have ever seen.  The kind of trend that ignorantly swept aside most other languages, including C++.
  89.  
  90.   This rave is not completely without substance and I will easily agree that Java is a good language.  Like any decent language it has its high points and a flaws.  Pros include almost seamless portability, applets, dynamic classes, almost completely object-orientated, and standard network/internet capabilities to name a few.  Cons are lack of pointers (though this is also considered a blessing, byte-code apps are slow(er), inability to directly access anything via machine-specific code, and (until recently I think) lack of a universally recognized standard.  All in all then, Java is a (as my friend George would say) "kickin" language.  Why then, am I writing all of this?
  91.  
  92.   C++ is also portable.  Yet when Java came along claiming complete portability, some people immediately began assuming that C++ was not.  This is bullshit and admittedly, it irritates me when: people brag that Java is slaying C++, that I am using a dead-end language, that Java is "BETTER" than C++, etc.  Let me dispell a few of these myths by addressing them individually.
  93.   
  94.   1.) C++ is NOT a dead language and will not die for a very long time.  Things, like programming languages, which gain momentum in the computer industry rarely burn out for a great deal of time.  When they do it takes even more time because many new products are forced to provide "backwards compatibility".  Why do you think DOS still has its hands around Windows's balls?  And notice that even COBOL, one of the OLDEST languages and considered/revered among some as a dinosaur is VERY prominent (and no longer causing Y2K problems I dear hope :).
  95.  
  96.   2.) C++ programs are STILL inherently faster than Java ones simply because they are compiled into explicit machine instructions rather than byte-code.
  97.  
  98.   3.) C++ HAS a standard.  Unfortunately many compilers (especially non-commercial ones) do not completely meet the current ANSI standard.
  99.  
  100.   4.) C++ IS portable accross all platforms.  C++ is a language that requires a compiler to generate machine code.  Which means that if you have a (decent) compiler on/for your operating system - you can compile and run any well-written C++ program.  Portability with C++ is sometimes a painful process if you like some of its more eccentric features.
  101.  
  102.   But, you may already know, that machine code itself is not portable which means you must recompile your source on every platform you wish to use the program.  And, although machine code is fast, it varies greatly from one operating system to another.
  103.   
  104.   Where does this cause problems?  When you're directly accessing hardware through very system calls and inline assembler, mainly for multimedia programming (graphics, sound, input, timing).  Putting that kind of code in your program basically nails its feet to that platform.  
  105.   
  106.   How do you get around this?  One way is to use a library (pre-compiled source code) that has versions for various operating systems (like Allegro, OpenGL, and SciTech MGL).  So when you compile your program, you link with it the library that is appropriate for that operating system.  This can sometimes be a pain in the ass, mainly since many libraries are limited to only a couple of operating systems which hardly makes using them very portable.  Another way is to just not use anything that isn't portable - ha ha ha ha ha ha ha ha.  Good luck, you won't be able to write anything visually or audibly stunning, but it'll *compile anywhere*!
  107.  
  108.   There is another way and I find it to be impressively useful.  The current focus of my C++'ing has been on what I have named FATHOM (a little information about it is at "http://www.cyclone7.com/gsb/dev.html") and it uses this method which I will explain.  It still requires you to link a library after compiling, but it requires no rewriting of code to be portable to different operating systems.  I use one of the basic functionalities of C++ (and C): pre-processor directives.
  109.  
  110.   All compilers set some sort of macro when you include standard header files (like 'stdlib.h').  I have a header file which uses a bunch of #if statements to check which compiler is being used (and which operating system).  Based on what is found, the right files are included which contain bodies of a set of generic functions that I have previously prototyped.  These defintions for depend on which file that is included based on what compiler is being used.  They use what I call "work-horse" engine functions to carry out their specified task.  A "work-horse" engine is one of those libraries I was talking about earlier and depending on the operating system, the appropriate one is used.  The biggest benefit is that I can make my applications run at the highest possible speed on many unique platforms by only recompiling them.  Hmm, this is a very broad overview but you get the idea.
  111.   
  112.   In conclusion, NO programming language is better than any other.  They each have their own individual blessings.  Even INTERCAL has the advantage of being cryptic and amusing, PERL is readily equipped for CGI, and ASP isn't good for anything but its slow ;) (biases showing through).  Let it me stress the point again!  If you say ANY language is just "BETTER" than ANY other than you obviously don't know that other language!  A crappy program is a crappy program, no matter what the language.  There are Java apps with a hot coffee sizzle, and butt-whipping C++ applications that will rival any bean I know.  Its all in the programmer, not the language.
  113.   
  114.   If you're interested in making your C++ programs portable then it would be a good idea to check out this site:
  115.  
  116.   http://www.mozilla.org/docs/tplist/catBuild/portable-cpp.html
  117.  
  118. -<ASSISTING THE SITE>--------------------------------------------------
  119.  
  120.   Neil's C++ Stuff has a promise to be free as long as my will power holds out.  And this will depend mostly on you.  By free I mean FREE of charge, FREE of ugly banners, FREE of crappy advertisements, FREE of pathetic donation requests, FREE of pop-up consoles, and FREE of uncontroled browser redirection.  I'd LIKE to keep it this way because I like the site the way it is and I know how it is trying to browse so called "free sites", like "http://www.perplexed.com/GPMega/index.htm" (check that one out, its got great resources but an almost choking amount of advertisements).
  121.  
  122.   So what can you do?  Well, I don't need anyone to donate hundreds of dollars or pay my car insurance (though it would be nice).  All I need is for you to click on one of my ugly banners that have been locked away on my banners page.  If you click on the topmost banner it earns me a measily 12 cents.  So for the small effort of clicking on that banner and waiting for that page to load up, I get 12 cents.  If you could spend just two minutes of your time doing this then you have made me a happy man.  My goal is to actually have the site pay for the server that it is hosted on.  If this is reached then you can be sure I'll have much more inclination to adding new articles in a more timely fashion.  The banners page is located at:
  123.   
  124.   http://www.cyclone7.com/cpp/banners.html
  125.   
  126.   And one other thing.  If you're planning on buying a book from Amazon.com then go through my site to do so.  I can earn up to 5% of an indirect purchase (meaning you buy stuff that was not listed directly on my site).  If you wish to go through me to buy stuff at Amazon.com, you can click on one of their logos from this page:
  127.  
  128.   http://www.cyclone7.com/cpp/books.html
  129.  
  130.   Believe it or not, but for all the traffic I get; I have earned only just below eighteen dollars.  This is dissappointing and not very inspiring.  Please give me more incentive to update this site.  Otherwise I usually spend my time on projects and work that I KNOW will earn me some living expenses.  Thanks in advance to all those who have graced me with 12 cents *chuckle*.
  131.  
  132. -<CLOSING>-------------------------------------------------------------
  133.  
  134.   I'm always interested to get feedback.  Any glaring errors you see in this, disagreements, etc.  Anything you want to tell me send it to "nobremski@hotmail.com" with the subject "C++ Newsletter".  I ask you to PLEASE use that subject title so it can be filtered properly and be gotten to more quickly.
  135.   
  136.   Thank you for reading this and perhaps we can all make the web a better place *ha ha ha ha ha ha ha - yeah right ;) *
  137.  
  138.   -NCO