Well, I'm not entirely sure that this thread belongs in the Crusades forum section, but this appears (to me) to be the forum section for "Other programming languages besides asm" so I thought it might fit. Sorry if it's misplaced.

Anyhow, IMO, you should know the following languages and my resoning is given for each. In fact, I don't see any reason to bother learning any other languages other than these, as you can do everything you want with just these.

C --Great general purpose language which is fairly portable across platforms (especially if you only make console
applications). If you use the right APIs with it, you can make some truly portable GUI code across platforms,
too. Also allows inline assembly, which is a plus.
Java --You're going to want to learn either this or the java machine language so that you can make Java applets.
JavaScript/JScript --You're going to want to learn these so you can make higher interactive web pages
CGI ---Doesn't matter, as long as you learn one CGI language---could be Perl, PHP, Python, whatever. Only need
Shockwave Lingo --If you want to make shockwave web programs. Either that or learn the .swf file format.
Assembly languages ---One for each platform you wish to program on.

Anything else that some other language can do can easily be implemented in any of those languages (at least I think it can).

Now the question goes out to everyone else. --What languages should you learn, and why?

*edit* just thought I'd add HTML in here as well, but I don't really consider that a programming language, but it is something you should just know. I think the reasons are obvious;)
Posted on 2003-11-16 15:45:38 by ShortCoder
There have been a couple people here programming CGI asm - this can be used on the server side to get as complex as one needs. On the client side JAVA/.NET/JavaScript might be needed, but should be avoided, imho. :grin:
Posted on 2003-11-16 16:31:40 by bitRAKE
Here's my list :)

c/c++ : Two of the most widely used languages. So its useful to learn one or both of them. You need to understand C to understand the window api documentation and the example code and a lot of the code available on the net is in C or C++. If I want to buy a book on game programming or compiler design the language the book uses will probably be c or c++.

Some RAD language ( Delphi or vb or something) : Sometimes you want to get something done quickly and don't want to write millions of lines of code to do it.

asm: Everthing else :)
Posted on 2003-11-16 17:24:43 by Odyssey
asm mentioned: C/C++, some VHLL/RAD, asm
and pseudocode (basically BASIC + some old programing language from the days when one byte made or broke your day...)
Linux Shell Scripting mustn't be forgotten, you can do things with it that would require an app/exe in windows. Knowing basic batch file writing is not as important, as you'd probably be better of using a pascall app on windows... but it can make windows dev easier sometimes.
Knowing HTML (or IMO now days preferably XHTML (where one must not SHOUT with the TAGS, ie, no captial letters) - it is less acceptant to semi-html code, it must be "well formatted") is good, on top of that knowing PHP and JavaScript (not JScript - M$ should learn how to implent things propperly!) is good if you need it. (for a simple "I've gotta a site there fore I exist" and an on-line CV plaim HMTL will do fine).
Posted on 2003-11-17 11:38:14 by scientica
I would suggest English, French, German and Spanish. Italian is good too if you want to pick up chicks like the guy in "A Fish Called Wanda". Besides those - C++ ASM and HTML are the heavy hitters. ASM not so much for you're ability to get a job because you know it but because it gives you a low level understanding of the machine that is hard to get in the other languages.
Posted on 2003-11-17 14:29:54 by donkey

I would suggest English, French, German and Spanish. Italian is good too if you want to pick up chicks like the guy in "A Fish Called Wanda".

w00t? You mean the chicks don't speak assembly? :( Does that mean they don't speak L33T either? (however that does provide an reasonable explanation for me to why they look like I'm an idiot/alien when I speak with them - guess I'll have learn english and see what happens... ;))
btw, doesn't he speak Russian too?
Posted on 2003-11-17 16:49:51 by scientica
Yeah, he speaks Russian too but JLC gets of on the Italian. That was a great movie, the stupid "brother" was about the funniest character I have ever seen :grin: "Calling you stupid would be an insult to stupid people !" :grin:
Posted on 2003-11-17 16:56:02 by donkey
The truth is, a good programmer doesn't limit him/herself to some set of languages that *need* to be known. A good programmer is constantly looking at new languages and determining what facilities are useful in those languages and how to apply the programming paradigms of those languages to programs they write (regardless of language).

It's very important for programmers to learn a variety of languages that follow different programming paradigms. In particular, the following is such a wide set:

1. Some imperative language (Pascal, C/C++/C#, Java, Ada, etc.)
2. Some functional language (e.g., Lisp)
3. A declarative language (e.g., Prolog, Flex/Bison, etc.)
4. A set based language (e.g., SETL)
5. A string based language (e.g., SNOBOL4 or Icon; sorry, AWK, Perl, etc., are a bit weak for this category).
6. An assembly language
7. A spreadsheet
8. A parallel language
9. A database language (e.g., Oracle)
10. A stack-based language (e.g., FORTH or Postscript)
11. A true object-oriented language (e.g., Smalltalk)
12. A simulation language (e.g., Dynamo)
13. A "safe" language (e.g., Eiffle)
14. A business-oriented language (e.g., COBOL or RPG)

the list goes on...
So little time, so many languages.

It is really funny to read posts by people who only know one language (worse, only know an assembly language) that act like they are expert programmers. Knowing only one programming language limits the programmer to solving problems using that particular programming paradigm. Like the old joke says "need a numeric application? Write it in FORTRAN. Need a string processing program? Write it in FORTRAN? Need a business application? Write it in FORTRAN. Need a compiler? Write it in FORTRAN. Need a database application? Write it in FORTRAN. Need an Operating System? Write it in FORTRAN." Substitute "C" for "FORTRAN" and you've pretty much described the situation today.
Randy Hyde
Posted on 2003-11-18 12:11:55 by rhyde
Hmmm, interesting spin on things, Donkey.:D Personally, I think it would be really great to know quite a few foreign languages, most useful being Spanish, German, French, Italian, Latin, Japanese, Mandarin Chinese, Indian, Portuguese, Russian, Hebrew, and Greek, in no particular order.

BTW, Randall, thanks for your list and input on this. You had a few languages in there which I had not heard of before (SETL, Icon, FORTH, Dynamo, and RPG, to be exact).

I used to try to learn all of the languages I could, but now I think it best if I just try to concentrate on C and x86 assembly language (for now) and differences in compilers and try to become confident creating Windows programs using those.

Also, thank you for your Art of Assembly language programming tutorials for DOS. My university didn't have an assembly language programming class, so I felt extremely gypped and cheated by that (and wished I had gone to this certain other university I had been accepted into, as it was more well-known for its technological courses), but, being the high school student (soon to be in college) that I was at the time, and, having no programming experience (at that time) other than TI82 and TI86 calculator programming, I thought this university would be easier, but it turned out to be worse, and, turns out I even switched majors here because I simply loathe certain professors in the CS department here. One of them did something which I would consider "the last straw", and so I switched. To save this university embarrassment or whatever, and to make a long story short, I will not say which it is or who the particular professors are/were, but I will say that I am and was very grateful for your Art of Assembly language programming tutorials for DOS, because that was the first place I turned to begin learning assembly language programming, and I did indeed learn it using those tutorials.:) (although I later invested in a couple of textbooks to read as well, concerning x86 DOS programming.)

I might have said too much there, but I guess all I'm trying to say is that I really appreciated your AoA pages.;) However, I think I will pass on HLA, no offense. I'd rather stick with a more low-level assembler for assembly language, and use C for any high level language stuff, and then link the object files together, or else stick to C with inline assembly.;)
Posted on 2003-11-18 13:36:31 by ShortCoder

However, I think I will pass on HLA, no offense. I'd rather stick with a more low-level assembler for assembly language, and use C for any high level language stuff, and then link the object files together, or else stick to C with inline assembly.

Well if you're happy with C and asm there's really no need to use HLA but I think HLA is useful for the type of applications where you would need to use inline assembly. :) HLA can do both high level and low level programming :grin: What I like about HLA is that one one hand it's an assembly language so you have access to all the machine instructions and on the other hand it has a lot of high level features to make coding in asm easier :) It's both more low level and high level than C at the same time :grin:. Check out this thread to see an example of a pure asm program with HLA :grin:
Posted on 2003-11-18 13:51:45 by Odyssey

I might have said too much there, but I guess all I'm trying to say is that I really appreciated your AoA pages.;) However, I think I will pass on HLA, no offense. I'd rather stick with a more low-level assembler for assembly language, and use C for any high level language stuff, and then link the object files together, or else stick to C with inline assembly.;)

Not to try and force you to use HLA against your wishes, but you suffer from a common misconception - that you can't write low-level assembly with HLA. This isn't true. There is very little 32-bit flat model code you could write with FASM, MASM, etc., that cannot also be written with HLA. Indeed, MASM and TASM are capable of most of the high-level stuff that you can do with HLA, so unless you're making the same statement about MASM and TASM, then you really misunderstand what HLA is all about.

The advantage of HLA over other assemblers is not so much the high-level facilities. The advantage of HLA is that it has a vastly more powerful macro subsystem and HLA has the HLA Standard Library. The macros let you (or the author of a library package) extend the language, the Standard Library routines spare you the bother of writing all your own I/O routines (a process that seems to be repeated *every* time an individual decides to learn assembly language, what a waste).

AoA, 32-bit edition, teaches assembly language from a high-level perspective, which is perfect for its target audience (students who've learned at least one high level programming language). But by the time you get to chapter seven (in the published edition, anyway), you're doing low-level programming. Beyond that point, using high-level constructs is simply a matter of taste.

The bottom line is that HLA is not at all comparable to C, with or without in-line assembly. For example, C fully supports arithmetic expressions (HLA does not). C is a machine independent language (HLA is not). C's data types are not well-defined (e.g., there is no such thing as a byte, word, or dword in C). C doesn't support all the things you can normally do in assembly language (like messing with the stack in a coherent fashion), whereas HLA does.

Ultimately, the choice of which assembler you want to learn with is yours. What HLA/AoA offers is an easier way to learn *assembly* language for those who already know a high level language like C. HLA, MASM, and TASM do not force you to use high-level or low-level instructions - they give you the option of using them when, where, and if appropriate. During the learning process, for example, it's appropriate to use these; in certain critical code sequences, it's inappropriate. Either way, you've got the choice -- something a traditional assembler doesn't give you.

Randy Hyde
Posted on 2003-11-18 15:01:11 by rhyde

I would suggest English, French, German and Spanish. Italian is good too...

Now I can see why I can't write more than 10H bytes of code
Posted on 2003-11-21 10:14:12 by S.T.A.S.
Pertaining to the languages. I'm working on a presentation for school (opengl demo my teacher wanted me to throw together) and i was at first doing it in asm(using masm), but now after reading all of this and esp. Mr. Hydes statements, I think im gonna just use C for it(or some other high level construct), as it will be most efficient. Hopefully...

Posted on 2003-11-23 09:59:53 by Guy on ASM
Right tool for the job and everything.
I guess I should have a look at HLA one day. While it might not be my cup of tea syntactically, it does seem like an interesting and worthwhile tool.
Posted on 2003-12-05 08:10:07 by f0dder

i would tend to see languages as core and peripheral. For you core languages, I refer to languages like asm, basic, C and Pascal as the ones that will be the most use to you over the longer haul. All 4 have code going back many years so they do not die out easily.

Others have come and gone as the circumstances that generated them have changed but where you have very large user bases of a particular language, newer versions tend to be written to satisfy that user base.

ASM is useful because of its capacity, basic because its probably the largest user base in the world, C is effectively portable if you avoid platform specific extensions and Pascal is one of the oldest high level languages still afloat.

There will be times when you use a different style of language for a special purpose, VB, server side scripting and many others but they tend to come and go so if you have a good base in one or more of the core languages, you will outlast the short term languages.

Posted on 2003-12-05 09:19:18 by hutch--
C and ASM. simple as that.

ASM for whatever architecture, and C for all purpose... the two languages compliment eachother, and if your only programming for one archicture, you really dont need to know much else to port to another OS.

Other Langs just to save time:

shell scripting (batch or bash whatever OS)
html just to throw some quick stuff on the web if u need too

thats all i can think of. i mean, asm and c.. what more can i say.. im tearing up..
Posted on 2003-12-12 14:52:54 by bnice2137
C++ to build large systems with good performance.
Other languages for tasks where they make life easier without giving unacceptable performance,
Posted on 2003-12-12 18:45:44 by f0dder
Depends on why you want to learn another language.

If you want to broaden your knowledge of programming technique, style, and vocabulary(!), then Randy's suggestion is the way to go.

If you want to narrow your knowledge to specific application areas, pick the languages used in those areas.
Posted on 2003-12-12 19:29:54 by tenkey
You can add Sphinx C-- to the list,it's a combination of asm and C.
Posted on 2003-12-26 05:04:22 by Vortex
C\C++ and assembly (x86):
Posted on 2004-01-12 10:28:11 by Eternal Idol Birmingham