Languages
|
On July 2, 2000, Elrac said:
Before this topic degrades to a discussion of hacking, I'd
like to contribute my 2 cents' worth as well. Here are my
opinions:
If you know no language at all or just a little BASIC, then
BASIC in some form (Visual Basic, these days) is an acceptable
choice. This is assuming you're an amateur who doesn't want to
spend a long time learning things, who wants to throw together
something trivial and just play around with coding for a
couple of weeks or so. I designed a multiplayer text MUD
(well, a very small core) in MS BASIC once, but I would not
try to do a project larger than about 2000-5000 lines of code
in BASIC. It's just too poorly structured, and learning BASIC
as a first computer language does irreparable damage to some
people.
C takes longer to learn than BASIC but is a sophisticated,
portable and sensible language. You will destroy all kinds of
things with pointers but you will have fun doing it. Apart
from assembly language, which I cannot recommend to anyone for
this purpose, C generally produces the fastest code. C is
supported, usually with free compilers and environments, on
most computer systems known to mankind. Oh yes, and Astonia is
programmed in C.
C++ takes even longer to learn than C. I never properly
learned it because I consider it too complicated. But C++ is
the programming language for vast sectors of the industry, so
if you teach yourself C++ by programming a game you may be
able to sell those skills. The object oriented capabilities of
C are very powerful in skilled hands but newbies tend to use
too many classes or for the wrong things, and their programs
end up as slow as many well-known Microsoft products. C++
compilers are not quite as easy to come by as C compilers, but
can be had for free (see a previous post of mine in this
topic).
Someone mentioned Delphi. I am a great fan of Delphi. Delphi
has much of the ease of use of Visual Basic, combined with a
language that is clean and elegant and produces code that's
about as fast as C. You can 'do objects' in Delphi but you
don't have to - that's a nice comfortable way to work. With
objects and other structuring, Delphi is well suited even to
large projects. Unfortunately, few people nowadays know Pascal
(that's the language inside of Delphi) and Delphi is kind of a
niche product. Borland is working on a port of Delphi to Linux
but for the time being, Delphi is only available for Windows.
And like Visual Basic, it's not free. Some people also worry
about Borland, the only supplier, dropping out of the market.
My current favorite language is Java. It's on the upswing in
the programming industry, so learning to program in Java is
probably never a waste of time. Java is a rather
object-oriented language so you will be forced to learn the
concepts but once you have it's pretty painless. Java comes
with a VERY complete library of graphics, I/O, networking,
data management and all kinds of other routines. Whereas you
may need to buy special-purpose libraries for most of the
other languages mentioned (such as a socket communications
library for Delphi or C++), you will probably not need one
with Java. I'm currently programming a simple little
client/server Internet game in Java and found the networking
code to be almost ridiculously simple. If you're interested,
there's also a pretty sophisticated 3D library for Java which
abstracts away the complications of Glide or Active3D or
whatever it's called. Java and its libraries and add-ons are a
free download from www.javasoft.com . The only downside, and
the reason Ishtar won't consider a game like Astonia written
in Java, is that it's typically slower than other languages.
Our server could host fewer people if Ishtar had not wisely
chosen the fastest possible language.
Just for interest, let me throw in Python. If you're only
going to learn one language, and only for your own enjoyment,
or if you want to learn your first language, consider Python.
It's a very modern, clean and elegant language, has extensive
libraries including some GUI stuff, is supported on many
platforms, is free, and people found it very easy to become
productive with in a short time. Fans worldwide are writing
incredible things in it. Python is a clever language, but it's
always interpreted and thus it's even slower than Java in most
cases.
As Ishtar already hinted, unless you're a genius and have lots
of energy for months at a time (like Ishtar), you should not
try to write an online game as your first experience with a
computer language or with programming. You'll be disappointed.
Learn to walk before you run.
|
On July 7, 2000, Elrac said:
Finally, I can add a qualified answer to the original
question: "Is it hard..."
I just got mostly through writing a client-server type of
Internet game. I'm the most experienced programmer in this
game, though hardly the quickest. I programmed in Java a
rather simple kind of game, hardly to be considered graphical.
It took me 4150 lines of code and Sharra says I was at it for
about 3 weeks, off and on.
Astonia, by comparison, is a nicely graphical game with lots
of features. Last I looked, I think it had 20,000 lines of
rather tight code and several thousand graphics. It took 18
months to get to most of its current state, and I think Ishtar
is a much more productive programmer than I.
It's nice to see programs like Astonia in action and to think,
"I could do that too!" The truth is, it's awfully
difficult and an enormous amount of work.
|
On July 09, 2000, someone said:
K.. i wanna know one thing.. some kid i know tells me
VB6(Visual Basic 6) cant make online games.. this true or is
he lieing?
|
On July 9, 2000, Elrac said:
He's lying. Heaven knows I don't like VB6, but it's a fairly
full and complete programming language. As far as I know, it
has a little bit of WinSock support (that's for Internet
communications) and you can buy or download some components
that do the job even better. Given an NT Server, you can build
yourself a server program to run on it, and even without
extensions VB is easily graphical enough for many kinds of
games.
These days, the language is hardly the deciding factor on
whether you can do project X; it's more a matter of:
- Do you know the language well enough?
- Do you know the required technology (Internet, graphics,
whatever) well enough?
- Are you a sufficiently good programmer?
- Can you debug your program if something goes wrong?
- Do you have the time and energy to go through with it?
|
On October 12, 2000, Elrac said:
Pascal is a fine language. If more programs were written in
Pascal, there would be fewer bugs. Borland/Inprise Delphi
contains an excellent implementation of Pascal, and there is
now an Open Source (=FREE) version of Object Pascal out.
Pascal is fussier than most other languages, and requires more
typing than, say, C or BASIC. But learning Pascal as a first
language may make you a better programmer. Be warned, though,
that future job markets will probably favor Java and C++.
|
On October 12, 2000, Elrac said:
I found a cool Java programming tutorial at:
http://www.ibiblio.org/javafaq/javatutorial.html
It's pretty fast-paced so you will probably be less likely to
get bored. There are many more like it here:
http://www.taxpolicy.com/tutorial/jvtutor.htm
I have sampled a few C tutorials, and find this one the best:
http://www.math.cinvestav.mx/manuales/ctut/clist.html
|
On December 29, 2000, Elrac said:
I'm at work but it's the afternoon of the last working day of
the year and almost everybody has gone home. I'm mostly here
to man the phones in case there's a problem somewhere. There's
some testing and debugging work I should be doing, but I'd
rather vent my opinions about how programming is taught, so
that's what I'm going to do.
These are just my opinions; whether you take me as an
authority is up to you. My qualifications include:
- a B.Sc. in Computer Science
- practical experience with about 20 programming languages
- more than 20 years programming experience
- untold computer magazines and books I have read
This is just the introduction. My "speech" follows
in the next post.
|
On December 29, 2000, Elrac said:
A Brief Overview of Selected Programming Languages
- Assembler
- Assembly language is translated more or less 1:1 into
machine language. Each statement you write (generally)
encodes one machine instruction. If you write "Y = X
+ 5" in a higher-level language like BASIC or C, a
(hypothetical) assembly language might instead code:
LOAD RegA,X
LOAD RegB,5
ADD RegA,RegB
STOR RegA,Y
where X and Y are variables, usually implemented as
storage locations somewhere in memory, like 0458 and 045A.
The assembler (a "compiler" for assembly
language) takes away the drudgery of setting up space in
memory for variables and remembering where it is, but
other than that you need to tell the machine exactly what
to do, step by step. To this day, a skilled assembly
language programmer needs 2-3 times as long to write any
non-trivial program as a programmer working in one of most
other languages. Why does anyone still program in
assembler? Because, by telling the machine exactly what to
do, you can usually write the fastest possible code for
any given task. Where speed is essential, assembler still
reigns. Modern assemblers help the programmer with
conveniences like macros, local variables, etc.
- C (Similar: FORTRAN, BASIC, Pascal)
- C adds many of the conveniences of modern programming
languages to assembler. There are functions, local
variables, loop constructs (for/while), if/else,
user-defined and structured data types, and much more. You
can set a pointer to point at an element of an array, and
when you increment the pointer, it will automatically be
upped by the correct number of bytes to point at the next
element of the array. But you're still very close to the
machine level. You don't need to explicitly load and store
registers because the compiler manages that for you. But
most data types are sized to fit the machine's internal
data types: char for a byte, short int for a word (double
byte), int for a doubleword and long for a quadword. These
sizes aren't cast in stone but vary from system to system
to match the needs of the machine. On the mainframe I
program, 'int' and 'long' are both 36 bits in size. This
implies that C programs that exploit the full range of a
variable may work and behave differently on different
machines. That's the price you pay for working "close
to the metal". C programs are usually nearly as fast
as assembler programs. A good C compiler can often
out-optimize a less-than-perfect assembler programmer. C
coding is more expressive and more dense than assembler,
and many programmers abuse this fact to write badly
legible code like:
while
(!(ch=get1(++k<9?"now":"later",y+=11)))
(*do_x)(-5);
Something that helps make C efficient like Assembler is
its extensive use of pointers: A variable can be set up
with an address of a piece of data, and that data can be
accessed through the pointer. Then the pointer can be
changed to point at other data, either nearby or far away.
Pointers that inadvertently point at the wrong data are a
major cause of problems for C programmers: Basically any
piece of code that uses pointers could mess up any area of
data in a program. Bugs based on stray pointers are
fiendishly hard to find, and a whole industry of debugging
tools has arisen to help with these problems.
- Smalltalk (Similar: Lisp, Python)
- Smalltalk is a highly object-oriented language. Most of
the things we deal with in Real Life are objects, and it
seems natural to represent these things as objects in a
program. Objects are collections of data and code, usually
representing the "attributes" (how big? what
color?) and the "capabilities" (print me! take
my square root!) of the object. Smalltalk takes object
orientation to the extreme: Even numbers and characters
are objects. The beauty of this is that all things in a
program are handled the same way, all things have a basic
set of similar capabilities, and all things in a program
are related, either closely or distantly, because all
objects are sub-species of "the master object".
All this elegance has its price: Objects tend to be
created spontaneously when they are needed, and need to be
cleaned up afterward. Before you can add 5 to a numeric
object, the system first needs to create a '5' object.
Thus, a Smalltalk program is constantly finding free
memory to build objects in, and part of the runtime called
the Garbage Collector is always running around looking for
no-longer needed objects so it can reclaim valuable
memory. All this takes time, so speed-critical systems are
never written in Smalltalk - at least not Smalltalk alone.
On the other hand, there are no (visible) pointers. Every
data access is a "message" to an object, and an
object either "understands" the message and
responds to it, or it refers the message to an ancestor
object which understands it, or it creates a well-defined
error condition. I'm told that, because everything works
the same and everything makes sense, because there is a
huge, well thought out and growing library of
pre-programmed Smalltalk objects, programming in Smalltalk
is a joy. Good Smalltalk programmers are very productive.
- C++ (Similar: Objective C)
- The core of C++ is mostly similar to C. In fact, to this
day, most C programs will compile and run under C++. In
building C++, its inventor "tacked on" a number
of object-oriented features in a way that made it possible
to enjoy most of the benefits of object orientation
(bundling of data with code that "knows" the
data, "hiding" some data and/or code from
unauthorized access, similar handling of similar objects)
without sacrificing the speed of C. There are libraries of
objects for C++ which make programming more convenient.
File objects like cin and cout are
arguably more convenient to work with than the file
buffers stdin and stdout and the
numerous library functions used to access them.
Unfortunately, in the interest of speed, memory management
is left to the programmer. This means that the programmer
must create objects when needed and (in many, but not all
cases) remember to destroy them when they're not needed.
So-called "memory leaks" due to "forgotten
objects" are a major problem in C++ programs, and
again they feed a thriving industry of debugging tool
makers. Other problems include the fact that C and its
runaway pointers are alive and well underneath C++ and
could mangle the innards of objects and other data.
Operator overloading allows you to change the meaning of
any function, including "built-in" ones like
+ and -. Operator overloading lets
you use the shift operators (<< and
>>) to make it look like data is flowing
into and out of iostreams. This is cute, but largely
abused. When you define + for strings, does
that mean you concatenate them, or that you will add the
values if both strings happen to contain numbers? Some
string libraries have defined / to operate on
strings. Do you have any idea what it's used for? Neither
do I. But given the opportunity to create a mess by taking
familiar symbols and giving them a new meaning, many
people have done so. Objects themselves are a problem for
C++ because they hide complexity. Programming a Windows
GUI (Graphical User Interface) used to be tremendously
complicated: A "hello world" program example
took 80 lines of code. Microsoft built the Microsoft
Foundation Classes (in C++) to make this task more
approachable, but these classes don't make it THAT much
simpler. So toolkit manufacturers generate larger, more
complicated C++ libraries to "wrap up"
complicated functions and make routine tasks even easier.
I remember a slew of ads that read, "Look! A complete
GUI application with just 1 line of code!" Well, what
happens is that this 1 line of code triggers the execution
of hundreds, perhaps hundreds of thousands of lines of
code deep in some library. In taking complexity away from
programmers (so that programmers become cheaper and easier
to train), the industry takes control away from them. A
simple 10-line program may be thousands of times slower
than a more difficult, but well written 100-line program.
I believe this is why Microsoft Word is so amazingly slow
at things that shouldn't be. Millions of lines of code
unknown to and beyond the control of its programmers. The
basic idea behind C++ has grown like a cancer until it has
become the perversion of what it once was. A popular
saying about C++ goes, "C (with its pointers) lets
you shoot yourself in the foot. C++ makes it harder, but
when you do, you blast your whole leg off."
- Java (Similar: C##, Object Pascal)
- Java is younger than C++ and has tried to learn from the
mistakes of C++ and other languages. The basic data types
have well-defined sizes: An int is 32 bits no matter
where. There are no pointers to blast your data with. The
handful or so of basic, integer data types are built
directly on the hardware's data types (like in C) and
operations on these data types are as fast as in C. All
other data types are objects. And objects are garbage
collected automatically. There is a large and well thought
out library. I'm particularly pleased with the fact that
not just file-based input/output but also network
communications, GUI control and even security are built
directly into the "stock" library. I have
written a number of Java programs and never needed to use
a third-party library for anything.
Java leaves out a number of the dangerous features of C++,
so Java programs tend to have fewer mysterious bugs than
C++ programs. Still, some programmers miss the convenience
of some of the more powerful features of C++, such as
templates. And once again there is an industry out there
wrapping objects around objects to make them simpler and
more powerful. Speed is only about the third priority for
Java; Java programs are (mostly) slower than equivlent C
programs and often slower than C++ programs, and I worry
that the libraries of objects intended to make programming
idiot-proof will make it slower still.
|
On December 29, 2000, Elrac said:
I'm finally getting to the point where I argue why C++ is a
lousy choice for a language to teach to beginning programmers.
From the overview above, we remember that C++ is C, with
the following stuff tacked on:
- Objects (data and code are bundled, objects inherit from
other objects)
- Operator overloading ("<<" means
"shift" or "move this data",
"+" means "add" or maybe
"concatenate" or maybe...)
- Templates (if you define an algorithm to work with ints,
you can have the compiler copy it to work with floats, or
some objects)
Mr. Stroustroup has written a
fine language here. Some of the library of objects he has
thunk up, like iostreams, solve a number of long-standing
problems with the previous functions. Doesn't this:
cout << "Joe" << "and"
<< "Bob" << nl;
look a lot neater than this:
printf("%s %s %s\n", "Joe",
"and", "Bob");
Sure it does. And Strings are a lot easier to work with than
arrays of characters. But the fact remains that many of these
features that started out in a small and well-defined way have
become huge, complicated and unmanageable. Here are a few
examples:
Multiple inheritance means that any class can inherit the
properties (data and code) from one, two or more parent
classes. For any given data member (err, field) or any
function (err, method) which is defined in two or more parent
classes, how do you know which class contributed it? It's
determined by the order in which the parent classes were
mentioned in the declaration of the child class. This applies
not just to the class you're looking at but to its entire
parent hierarchy. There is a good reason why C++ is
practically the only language with multiple inheritance.
Operator overloading has a few "sexy" applications,
but it's mostly used just to cut down on typing and it
confuses people in the process. I've already given examples.
Templates let you write a set of functions to do something
with some data, and you can apply the same set of functions to
each data type you use it with. So if you use your
"double-ended queue" algorithm on 20 different data
types, the compiler will copy your code 20 times. The 20
different versions of your code, each specialized for a
certain data type, will doubtless run more quickly than a
single version that has to give different treatment to
different data types. But it sure can bloat your code! And of
course all this code takes a long time to load. Character
arrays, character array functions and Pointers are still alive
and well in C++! You can mix "old-style" string
handling with "object" string handling in the same
routine if you want - and confuse the heck out of yourself.
Similarly, a single misused pointer in an otherwise completely
object-oriented program can bring the whole thing crashing
down. C is a fine language in and of itself, but the fact that
it lives on in C++ is a liability. Objects, the big selling
point for C++, can also be a liability. They can be used to
hide a lot of complexity. They can make difficult things easy,
but this also means they can make you unaware of what you're
doing. Consider the controls in an automobile. My parents used
to have a car with no power steering and a manual
transmission. Driving that car was WORK! I would never have
dreamed of getting into that car and driving it when I was 6
years old, simply because I couldn't have. Modern US cars with
Power everything are so simple to drive that kids often do,
and often with fatal results, because there's a difference
between being able to control a machine and being a qualified
operator of it. The industry needs programmers, and other
parts of the industry are cranking out tools and add-ons that
promise to make programming child's play - much of it
object-oriented. It's easy these days to click-and-drag
yourself a graphic user interface, but I see many programs
that don't work the way I would like or expect, simply because
the toolkits and libraries used in constructing them didn't
think of certain ways a program might be used. Have you ever
noticed how, when you scroll a multi-page document in Netscape
using the PageDown key, your cursor stays on the last page you
positioned it on? Sometimes touching the wrong key zaps me
back to where my cursor was, ages ago, and surprises the heck
out of me. It's built into Windows that way, and all the
programs that use the Microsoft Foundation Classes work the
same way. That was probably a poor example, maybe someone
intended for it to work like this. Consider another example: A
colleague of mine, programming in C++, passed an object by
value rather than a pointer to it into a function. Passing a
variable by value causes a copy to be made. It so happens this
object contained most of the data of his program, several
megabytes in all. This function call was in a loop. Every time
the function was called, megabytes of data needed to be
copied. He never realized this - it was just one little
variable being passed around! He needed outside help to
understand why his program was running so slowly.
I got started on this when I realized (or assumed) why
Corwin's teacher didn't show him the argc
and argv[] arguments
to main(): It's because argv[]
is an array of character
arrays! This is evil. Consider that, for months, Corwin's
class has been working with these nice, clean array objects.
They have a definite size, they're accessed only with
subscripts, never with pointers, and if a subscript is out of
range a well-defined error condition occurs. argv[],
on the
other hand, is a C array. Its size depends on the number of
command line arguments; argc tells you how many there are but
you're free to ignore argc. argv[]
isn't really an array, it's
a pointer. You could change its value if you wanted to. You
can access the elements of argv[] either with
a subscript or a
pointer. If the subscript is out of range or the pointer is
out of range, you may never know. Similarly, the characters in
the elements of argv[] (actually, they're not
in argv[];
argv[] is really just a list of -you guessed it-
pointers) are
just arrays of characters. We don't know how long these
strings are, other than that they end when you hit a character
that's a binary zero. The "strings" in
argv[] can't
be concatenated with "+", they don't have
"substring" member functions, and although they're
input-only data to your program, you can change their
contents. I imagine the horror: A class used to the nice,
clean, object-oriented methods from the textbook, suddenly
confronted to the unshielded ugliness of primitive C. Their
teacher (I am guessing) is keeping C a deep, dark secret from
his class so that he can get on with the rest of his course
load.
When Corwin gets a job, he may end up maintaining C++ code
written by old cronies like the colleague I mentioned earlier.
This guy is essentially a C programmer, using object-oriented
stuff only when he has to. So his code is mostly C, with
arrays and pointers and the "old-style" function
calls. Corwin will be in for culture shock.
So C++ ends up as an animal like that mythical elephant with
the 3 blind men. One of them felt the trunk and thought it was
a snake; one felt a leg an said it was a tree; etc. C++ has
grown so big that there are a number of very distinctive ways
to program in it, and so rich that it takes a very fat book to
describe its features in detail. I follow the monthly
discussions in the C/C++ User's Journal. Novices write a
normal-looking program, then ask the masters why it doesn't
work, and the masters quote a page from the Annotated
Reference Manual which describes an obscure quirk of the
language which surfaces under rare circumstances, possibly
only in some compilers. Just yesterday, I read in the
editorial of this same magazine that the author had used a
certain template construct in his program, and that his
compiler had issued an "internal compiler error".
Complexity was layered on complexity until neither the
compiler nor the author of the program knew what was going on.
The author rewrote the construct by trial and error until the
compiler stopped choking on it.
Anyone remember PL/I? It had the record structures of COBOL,
the arithmetic expressions of FORTRAN, data types from ALGOL,
some string-handling capabilities from SNOBOL, I/O facilities
from all of these languages. The compiler we had at the
University was high-tech; if you made syntax errors, it would
try to guess what you REALLY meant and would then generate
code to implement its guess. For a while, I thought that PL/I
was cool. But when I went to buy the manual from the
library/bookstore, it was thicker and more expensive than all
the other language manuals. I had learned (enough for a first
project) all my other programming languages by buying the
manual and reading through each from cover to cover. I
couldn't do that with the PL/I manual; if I read it all the
way through, I would miss the project deadline. Well guess
what: PL/I is practically dead now. C++ isn't quite as
feature-laden, but it's well on its way. C++ got a good step
up from C, the many programs written in C and the many
proficient C programmers. Now C++ has a stranglehold on the
industry because there are too many programs written in it to
quickly turn away from it. But I think that the
dissatisfaction with C++ is still on the rise.
I don't like the War of the Languages being carried out on the
backs of young students. I think a language should be small
enough to fit into the curriculum of one semester. Pascal and
C were such languages; even BASIC was a good learning language
in its days. C++ is not. It is too bloated, there are too many
rules and too many exceptions to the rules.
I recently bought a book called Java How To Program by
H.M.Deitel and P.J.Deitel, (I think) a father-and-son team of
professors at some Ivy League college. I think they've written
an exceptionally well thought-out book. In their foreword,
they say that they were in the midst of setting up to write
the 3rd edition (or so) of their (you guessed it) C++ How To
Program book when they heard about the emergence of Java. I'm
paraphrasing from memory here, but they said they more or less
threw their C++ manuscripts out the window and immediately
went to work instead on making Java more accessible to
students with this new book. They said some nice things about
Java that I don't remember, but I remember gathering that they
were positively impressed.
I realize I won't make a lasting difference in the Great War
of the Languages, and I realize that Java also has its
shortcomings. Its worldwide debut in worldwide-compatible
browsers was thoroughly botched by both Netscape and
Microsoft; it is lacking some features which appear sexy in
C++, and can't compete with the speed of C. Still, Java is
quietly gaining a lot of ground on servers and workstations
all over the world, and is still growing (carefully) and
improving. Best of all, I feel Java is considerably simpler
than C++ both to learn and to teach.
If you're dead set against Java, there are other possibilities
to consider:
- C
- The classic. There's still not a lot to be said against it, even
after all these years. Ishtar has built a very cool game
with just his bare hands and a C compiler.
- Objective C
- A less obese brother to C++. More speed, less clutter.
- Python
- A very modern and clean, very object-oriented language.
Available on practically all systems, with a good and
growing library for all purposes. Interfaces nicely with
C, Java and other languages. Never as fast as C++, but
great for programmer productivity. The core language is
tiny and easy to learn.
- Object Pascal
- Evolved from Pascal, which is also a very clean, simple
language. The object-oriented stuff is there if you want
it but it's unobtrusive. Borland has given it a Windows
IDE and a large, useful library, and called it Delphi.
Coming soon to Linux too!
Got to wrap this up before the year ends... best of everything
to you all, no matter what language you prefer to program in!
|
On January 02, 2001, Elrac said:
Simple. In what we foolishly call "Real Life",
almost nobody programs in a vacuum. Much of the work of
programming involves having to deal with other peoples' code,
if only to make use of libraries or "steal" code.
Even if you have the discipline to write "clean"
code, be assured that others don't.
Code communicates not just with computers but also with other
humans (usually). English has about 50,000 words and people
with different subsets of this vocabulary often have trouble
communicating. Think of C++ as a language with 500,000 words.
|
On January 02, 2001, Elrac said:
I'm just reading Dr. Dobb's Journal, my favorite computer mag.
This is its 25th anniversary issue. In this issue, they
introduced yet another new programming language called Ruby.
This is a very object-oriented language, very simple and very
clean. The person who invented it did so because he had this
dream of making and using the perfect programming language.
No, I doubt it will replace C, C++, Visual Basic and Java. But
there are three reasons you may want to look at it:
- If you're a non-programmer, you may want to learn and
play with this language... maybe you'll like it and become
one of us!
- If you're a programmer, it's never a bad idea to have a
good number of languages under your belt.
- But best of all... It's absolutely free!
Here's the URL for everything Ruby (or at least a good
starting point):
http://www.ruby-lang.org
I pay for my subscription of DDJ, and have been doing so for
10 years. My Dollars have been invested into putting up a free
Web site for the rest of you at:
http://www.ddj.com
|
On January 29, 2001, Elrac said:
Two languages? *laugh*
I'm familiar with almost 20 and I use 4 different languages
almost every day.
The sad thing is, though, that in 'real life' programming
languages are rarely chosen for their suitability for the
problem at hand. Usually it's a matter of what languages have
a sufficient number of proficient programmers available, or
cheap tools, or which one has a huge in-house code base to be
extended from.
Very often, political considerations win out over technical
advantages and the programmers have to live with the decisions
of people who may not be qualified to make these decisions.
|
On January 29, 2001, Elrac said:
I earn most of my money by programming in FORTRAN 77 for a
German airline. I write programs in support of a flight
schedule loading and distribution application. A small
fraction of the programming I do for this job is in assembly
language, C, BASIC and a proprietary script language called
SSG. I also once taught a one-week Java course at this place
of work.
As a second job, I am also currently writing a database
browsing utility for a small programming shop. They are using
an old DOS-based utility which they like a lot but would like
to have a Windows program with some more capabilities. So I am
writing a clone of their old program for them in Borland
Delphi 5.
For a little more fun, I am working on a little 3D online
multiplayer game. No, I don't think Ishtar needs to worry
about competition from me - I'd say Chong and I are neck to
neck. Against Ishtar's strong advice, I'm writing the whole
thing in Java, just to see if I can pull it off.
Lastly, I very occasionally look at Astonia's code, I am
teaching someone C by correspondence, and I occasionally
answer questions about C in this forum.
Even before the Internet craze and the Y2K panic, I never had
a shortage of jobs or money, so I think programming is a
healthy profession to work in. I realize, though, that it may
be possible to haul more money out of a computer-related
education based on something other than pure computer science.
I hear that various MBA programs with a lot of computing in
them make for very profitable careers.
|
On January 30, 2001, Elrac said:
As for what things one can program with "just" a
Computer Science degree, you can take a look at some of the
things I've done:
http://www.smotricz.com/SSS-projects.html
|
On March 22, 2001, Elrac said:
Bubble, remember to go VERY easy on Java hype. The moment you
make statements like:
- Java is cross-platform compatible!
- Java is clean!
- Java has no pointer problems!,
Ishtar tunes you right out out. He labels you as a SunSoft
drone, little better than an emissary from the Gates of Hell.
Before you can successfully teach someone, you have to get in
sync with his mindframe. So the way to start would be to say,
- Java is the bane of my existence!
- Given a choice, I would rather program in Assembler!
- I learned Java for one week and now I'm writing from an
asylum!
Then you go on to say, "but if they have the thumbscrews
on you and are holding your first-born hostage, and you
absolutely MUST program in Java, then you could do
this:..."
|
On March 24, 2001, Elrac said:
I'm hesitant to start another language war, but I think the
following comments are pretty harmless:
VB is not a bad language to write standalone games in, i.e.
ones you play on your PC without the need for network access.
Thousands and thousands of games are written in VB. Most of
them suck, but that doesn't (necessarily) mean VB sucks, and
you have to start somewhere. VB is probably easier to learn
and experiment in than many other languages.
More serious games, such that feature stunning graphics and/or
dazzling performance and/or network multiplayer-ness, are
usually written in C or C++. But you shouldn't even be
thinking of anything like this until you have experience with
a few simpler games under your belt.
So: C/C++ are a good bet for the long run but VB is OK for
first experiences. Do whatever you want!
|
| Back to Compilers
Back to Table Of Contents |