Click to See Complete Forum and Search --> : Which languages make a good set for web software engineering?


blm987
12-28-2002, 03:37 PM
Hi

I'm asking for your big picture perspective as to what languages to learn in order to get into modern Open Source software engineering. I've coded a little in C and Fortran.

Finding myself today in an n-tier world! How to make sense of it all? I want to learn generalities of web (B2B) programming along with linux. Am currently reading "Beginning Java Objects" by Jacquie Barker, which teaches object orientation (OO) and UML modeling before getting into the specifics of Java language coding.

I understand that "system programming languages", being rather close to the machine, execute fast and so are used to code components of overall applications. I understand that "scripting languages" are then used to "glue" together these software components into a functioning whole that the user can run over the internet. But how does all this work?? How do various lanuages work together? It's difficult knowing what to learn!

1. Which "glue" language(s) to learn - Ruby? Python? Other? Suggest one good beginner book for each? For description of ruby, see: http://ruby-lang.org/en/whats.html

2. Which one or two core "systems programming" OO languages to learn - Java? C++? C#? Other?

3. What about any addition language type I should be learning - eg, a functional language like Ocaml? Other type or types?

4. Soooo important... what do you suggest I read that teaches how various language types are used together as a package to code (beginner) open source projects, hopefully linux-related?

University catalogs aren't reflecting current practice. Please weigh in with your opinions?


TIA,
Brian McLinden
blm987@yahoo.com

ariell
12-28-2002, 05:50 PM
Hi Brian,

first of all, your text is neither a question nor a bunch of questions, but, to me, appears to be a "trial on philosophical approaches".
There is probably no certain language to the open source community in particular. C/C++, however, is native to unix (thus, to linux, too),
just love it or hate it.
Anyway, the "n-tier-world" is a logical result of what happend thru the last decade of prgramming. There's some very sophisticated "approaches"
to solve problems evolving from issues like reusability, component management, avoiding "white-boxes", brokering objects, and so on. Depending
on wich os you're mainly dealing with, most outstanding "results" are CORBA (non-M$) and COM (M$).
But, still, that was not your question.
To "make sense of it", as you mentioned it, you need to know quite a lot about OOP -the only way to settle in modern environments- and
distributed applications (if I may use that term). From that point of view, one could give you advices like: First get into it, ask again
later. Nevertheless, I'd really like to give you a helping hand, so I try it:

a) Java always relies on run-time-environments, which slows down performance. It is "somewhat" interpreted, so that effect is a logical one.
On the other hand, its upside is portability. I guess there's no os not armed with some sort of "Java-interpreters", so once you have your
code down it might be easier to port it on different systems.
b) C++, of course, is very fast code (given an experienced programmer). Also, I think there's almost nothing you really couldn't "do" with C++.
As for me, I'd always prefered it to ANY alternative.
Java and C++ are (whenever it doesn't look like that at a first glance) completely different concepts to solve a problem (I consider
important details as memory allocation, pointers, etc.)
c) /* left blank. I didn't want to use c) n context with c# */
d) C# is a classical "M$-approach" to offer some competition to SUN. C#, in syntax and behaviour very similar to Java, does not support
pointers and, as Java does, "maccaronis up" in millions of classes you have or (as usually) you do not have. What I'm saying is: It is closer to
Java than to C++. And, most importantly, it is M$, thereby: it runs on Windows. Only.

With C++ (if you are able to avoid usage of m$ frameworks like MFC or ATL, there's always a way to "cross-compile".

Finally, developing applications that will be used on the web is a big issue. There's a lot of questions to answer before "having the solution".
Whom are you developing for? YourSelf? Cool. It's your server, you have all the rights, you don't need to bother with scripting languages.
You have all the permissions to execute binary files.
Not yours? Hm. Need a scripting language. Which one, depends on what the system (the machine you are developing for) supports. What did they
install/support? PHP (very likely), Perl, Python, JSP, J2B.... See, it's exactly 'bout that. You need to know what might supposed to be to
work. THEN you can make a decision.

A good programmer (at least from my point of view) is fluent in C/C++, maybe other "major/all-purpose" languages, too. Scripting langs. are
almost always easy to learn (48h?) once you caught the glimpse of programming. As for that, there's actually no difference between unix,
unix-line, or non-unix.

well, I don't know whether or not I could be of some assistance to you. Send an email if that confusing you.

Best,
ariell.

raz0rblade
12-28-2002, 07:58 PM
For programming on system i would say C/C++ are good. Web, go php or perl. Both very powerful and support OOP.

blm987
12-28-2002, 08:26 PM
Thanks, ariell, for your posting.

My quandary has to do with a minimal SET of languages I might reasonably pick to design/code real world open source web applications in a linux environment.

I've heard languages are used together, in tandem, to come up with an overall modern web application ("n-tier"?). I don't know the process of marrying languages. Where can I see how it's done?

Where can I read about how a scripting language, say, is used in tandem with a low level language, to come up with a simple, rudimentary web application? As a newbie, where can I read up on sample beginner projects to get the hang of the process, regardless of syntax details?

I confess to not understanding most of the terms ariell happened to use!

Soooo ... What *classes* of language do I need to learn for internet programming? And, where can I read up on how they are meshed together in real applications?

Interested perhaps in a more conceptual approach, I don't want to get tangled up in language details or "religious issues.." ! ! ! !

Brian

re-v
12-30-2002, 12:27 AM
good question... I've thought about the same thing many times. It realy depends on what you want to do.
I notice you mention python and ruby. Perl has a much richer online database of examples and tutorials
re-v