PDA

View Full Version : Language of choice after C++



gandalf_bar
06-10-2004, 06:48 AM
I know you guyz all love C++ very much. Me too. But to depend only for one language is not wise. So I started to learn another language. I learn C#, Java, Python. I learn just a little. I know ideally it would be good to master all language so you can choose the most suitable language for project. But 24 hours / day is not enough to learn all the things. So you have to choose to master only one language more.

It is hard to decide which language I should learn. I have try them all and still I cann't choose the perfect one for me.

Java
The documentation is very good. Multiplatform. You don't have to pay fee to learn this language. There are some in-depth tutorials in internet like from Sun website and Bruce Eckel. But I never like the GUI.

C#
Not really multiplatform. I know there is project called Mono but it is still not mature. But the language is cool. To master this language, you have to buy book because I cann't find free in-depth tutorial in internet.

Python
Cool but.... I have not test this language very much. There are good tutorials outthere in internet so you don't have to pay fee to learn this language.

They are all good. Right now I want to buy C# programming book because I choose C#. I don't have really good reason to choose C#. I just choose because I have to choose. Before I started learning this language, maybe you guyz could change my mind. Maybe there are suggestion from you guyz..... Before I dig in C# programming world, maybe you have some advice.... ( maybe " Don't choose C# because bla bla bla" or "That is the best language..., babe! YOu have done right thing" )

It is hard to decide..... :(

Thantos
06-10-2004, 06:54 AM
How about a language that is not derived from C? Branch out into something completely different.

ober
06-10-2004, 07:08 AM
VB has to be my "second language"... mainly because it's fast to develop with and that's what they use here where I work. But that's just on the PC development side... I'm more a fan of the web languages: PHP/Javascript... I think I could happily program in PHP all day long everyday. Heck, I'm in the process of migrating some of our desktop applications to a web-based platform and I can't imagine why anyone every did it any other way (besides lacking in tools/experience).

gandalf_bar
06-10-2004, 07:11 AM
How about a language that is not derived from C? Branch out into something completely different.

LIke what? Fortran? Perl? Lisp?
Well, I think it is good to choose popular language than less-popular language.

Thantos
06-10-2004, 07:33 AM
Perl is actually fairly popular in certain areas. ober made a good point about VB and PHP (I love php). The point is find something outside of what you are familiar with.

DavidP
06-10-2004, 07:33 AM
C# and Java draw a tie with me

C# - excellent language. I love it. However, like it has already been said, it is not really multiplatform. Microsoft is focusing on C# for Windows only and it doesnt look like they plan to port it anywhere else. :(

Java - also a good language, and easier to write code in with the new language options now being put in. I think Java is not very ideal for desktop applications, and that other languages are much better for that, but I think Java is very ideal for embedded programs. Like in cell phones and such. That is the good thing about Java, it can be used on almost any platform you can think of.

Prelude
06-10-2004, 07:35 AM
>I know you guyz all love C++ very much.
I don't. :)

>But to depend only for one language is not wise.
How wise of you to say so.

>I know ideally it would be good to master all language so you can choose the most suitable language for project.
Even in an ideal world, mastering all languages would be a little much. A popular subset and vigilant watch on what's popular will do nicely.

>I just choose because I have to choose.
You don't have to choose. You can work toward a better understanding of C++. That would help you learn other languages. You can learn general programming techniques and concepts that can be used in any language and implement them in C++. You can see what the C-ites are up to. ;)

At the very least I feel that you should be competent in C, C++, Java and at least one scripting language such as Perl or Python. Learning a language like Lisp provides valuable lessons as well as pulls you away from the Algol-like syntax of C, C++ and Java. Once you have that base, meaning you don't have to master these languages, just be able to use them without copying out of a beginners manual, branch out based on what you see being used in the marketplace and what interests you.

Or you could do what I did and just do what's most interesting. When something more interesting pops up, do that too. :D

vNvNation
06-10-2004, 09:22 AM
I used to work for a company called Bath Iron Works (I believe now a part of a company called General Dynamics since I've left). Although my job there was not design, I was able to see various "simulation" programs in the design phase of various ships. Surprisingly, the most commonly used language at the time to write and control the in-house simulations that I saw was ada (which I don't have any experience with by the way). I don't know if ada is a language designed for simulations (like list programming language is evidently designed for artificial intelligence).

Another neat 'language' that I've seen is the Adaptive Modeling Language
http://www.technosoft.com/aml.php
it basically is an API for engineering design. This, and some other software (tecpilot), is how I got into graphics and programming (although I have done no professional work with AML).

caroundw5h
06-10-2004, 10:36 AM
Learn Python. (http://pythonology.org/) it is an ubelievable language. easy to use and productive as c/c++. download from here (http://python.org/download/) and start programming and becoming productive in less than half an hour guranteed. here are some tutorials (http://python.org/topics/learn/non-prog.html) . With python you can do pretty much anything you can with the "other" languages. you have a plethora of gui toolkits (http://www.metaslash.com/brochure/tutorial/) to choose from, you can do games (http://www.pygame.org/) ,web programming (http://www.cs.virginia.edu/~lab2q/lesson_1/). Nokia even loves python so much they are adding it as a developer tool (http://www.mobilewhack.com/blosxom.cgi/programming/python/python_on_nokia_screenshots.html), so you can start coding for their phones. Think of the possibilities!!!!!

You even get to go away from the "C" type language becuase of its unique syntax. You code in python almost like your talking. Unbelievable.

IMHO

PYTHON OWNS!!
'nuff said.
:D

civix
06-10-2004, 10:42 AM
I was thinking more in an ASM direction... You have alot more control over the machine, and it's very multiplatform... Even though I don't know it, it's what I would choose if I decided to learn another language, which I wont.

linuxdude
06-10-2004, 11:07 AM
asm is not multiplatform, each chip can have its own asm commands, so it usually only works on one chip, unless all you are doing is simple commands. If you need to use cpu-specific extentions, the reason to use asm (to speed up multimedia, etc), your code will work on only one chip, or chips that support those extentions.

Prelude
06-10-2004, 11:16 AM
>easy to use and productive as c/c++.
More productive because it abstracts away the more powerful parts of C and C++.

>With python you can do pretty much anything you can with the "other" languages.
Provided you ignore mundane concerns like performance. I wouldn't want a frequently called yet complex system call to be implemented in Python, thank you. ;)

Python is excellent for prototyping as well as for production applications in some fields. The syntax is simple and easy to learn. I would rate the language as good all around, but it does have some issues that would make me think twice about "PYTHON OWNS!!" statements. Performance being one of those. Of the popular scripting languages these days, Python is the slowest. It also lacks a vast collection of libraries like Perl (and CPAN). Of course, I could be wrong on that last point as I don't keep fully up to date on such things.

Unless the OP has a specific project in mind and can weigh the advantages and disadvantages of different languages, my suggestion still applies. Learn the language that seems most interesting.

whackaxe
06-10-2004, 11:47 AM
PHP foreverz. i actually progrma much better in PHP than C++ so C++ is my 2nd language

Speedy5
06-10-2004, 11:52 AM
C# is pretty good although I really don't like any language outside of C++. VB6 was quick and easy to learn and to develop in but C++ is just too powerful to give up. PHP... I use it but I don't like it very much. Its code always ends up to be messy and very inconsistant. Java is too strict and ASM is impractical.

I say whatever gets the job done is good enough for me.

caroundw5h
06-10-2004, 12:16 PM
Provided you ignore mundane concerns like performance. I wouldn't want a frequently called yet complex system call to be implemented in Python, thank you. ;)

With processors today. performence issues aren't what they once were. And if its really that critical, then code the necessary part in C/C++ or JAVA and call it as a library from python.



It also lacks a vast collection of libraries like Perl (and CPAN). Of course, I could be wrong on that last point as I don't keep fully up to date on such things.
:p dead wrong sweetie (http://www.vex.net/parnassus/) . and then some more (http://www.python-eggs.org/links.html) just google it. And again. if you can't find the module, since you already have a base in programming just code it in C/C++ or java. There are modules for that as well. (http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/) .

'PYTHON OWNS
' :o PYTHON IS THE FUTURE!!!!

'Python is the only reason to get outta bed in the morning :D

[fanning the regligious flame]
by the way the majority of languages are an abstraction on other languages. Thats what makes them better. C a better Asm if you will, C++ a better C, Java a better C++. Python a better language period[/fanning. fanning. fanning. :) ]

Prelude
06-10-2004, 12:22 PM
>performence issues aren't what they once were.
Sorry, but that's incorrect. Even though computers are getting faster, the amount of data that they have to work with grows by a considerably larger amount. Performance issues are arguably more important now than they once were.

caroundw5h
06-10-2004, 12:31 PM
I stand by what i said about extending your python program with C/C++. and until we reach tachyon light speeds get a better algorithm (http://sciam.com/askexpert_question.cfm?articleID=000B32AA-54FA-1C72-9EB7809EC588F2D7&catID=3&topicID=5)

Jeremy G
06-10-2004, 12:47 PM
LIke what? Fortran? Perl? Lisp?
Well, I think it is good to choose popular language than less-popular language.


This mademe kekle because Perl is derived from c.


Prolog, or Lisp are good ones to learn.

But, I would pick assembly to learn and master. Theres always use for assembly programmers (if only for driver production :P)

DavidP
06-10-2004, 02:15 PM
With processors today. performence issues aren't what they once were.


It is saying those kind of things that make you a bad programmer.



'PYTHON OWNS
' PYTHON IS THE FUTURE!!!!


Hardly at all. C++ is the future of intense perfomance applications and games. Java is the future of multiplatform applications and embedded applications. C#....who knows where that will go....Python? It might be used, but it aint going to ever be the flagship of anything. Sorry, bud.



by the way the majority of languages are an abstraction on other languages. Thats what makes them better. C a better Asm if you will, C++ a better C, Java a better C++. Python a better


It is true that languages are made to abstract to a certain point such that it is convenient for the programmer to develop an application that is meant to be developed by that language. It is also true in many cases that abstraction can be a very good tool. However, we cannot go crazy about abstraction. Anything used too much can turn out to be a very bad thing. Such is the case with BASIC. BASIC is a very simple programming language to learn, mainly because it abstracts so much. However, you dont see it being used in any high end, top of the market applications out there, do you? The most BASIC ever gets used is in the case of Visual Basic, in which a company will hire a few programmers to develop some private databasing software for them, and that is about all.

Therefore, like you do in your little saying above, do NOT equate "abstraction" with the word "better." C is not necessarily a better Asm, C++ not necessarily a better C, Java not necessarily a better C++. And Python no better than ANY of the previously mentioned languages.

C is meant for low down systems development. That's what it was created for. It is meant for development of operating systems. It can also be used to make applications. C++ has many of the same purposes as C, only it is used less in operating systems and more in applications and games. Java is used in cross-platform tools and embedded applications, such as cell phone software and cell phone games. Python...who knows?

Like the saying goes, "One who tries to be the jack of all trades masters none."

By the way caroundw5h, how old are you?

Thantos
06-10-2004, 02:31 PM
Do a search and you'll find out.

Thantos
06-10-2004, 02:40 PM
THE BOARD! http://cboard.cprogramming.com/search.php?

Sang-drax
06-10-2004, 02:42 PM
>performence issues aren't what they once were.
Sorry, but that's incorrect. Even though computers are getting faster, the amount of data that they have to work with grows by a considerably larger amount. Performance issues are arguably more important now than they once were.Most of the time, there's absolutley no need to use a lower-level language like C to complete a task, and this is getting more and more true. In the old days, everything was written using assembler.

Could someone compare Python and Java? Is Python object-oriented?

Thantos
06-10-2004, 02:46 PM
with what keywords?
"Prelude hates C++" "C++ sucks" what?

Thats for you to figure out. How about trying and then asking.

Zach L.
06-10-2004, 02:48 PM
Lisp and Scheme are simply very fun to program in... Well, as long as your text editor can match parentheses for you. :D

They certainly won't take over the programming world, but they are quite fun.

Sang-drax
06-10-2004, 02:50 PM
It is saying those kind of things that make you a bad programmer. That doen't make him a bad programmer at all. Many good programmers say the same thing (albeit a little bit more nuanced)
Here's one (http://www.linuxjournal.com/article.php?sid=3882) example. (Note that I don't know any Python whatsoever)

DavidP
06-10-2004, 02:54 PM
Oh but performace issues ARE what they once were. They have not diminished in any way whatsoever.

True, we may not have to write in assembly code anymore to get the job done, but I guarantee you that if you try and get a job and you bring in some inefficient crappy code to show your future boss, you aint gonna be hired. And if you are coding your current projects with inefficient crappy code, they aint gonna act well or look pretty. <sarcasm>Go ahead....use a glorified bubble sort if you want...use a stooge sort even...Or...develop in an overly abstract language for a program that needs power and speed...we dont need to worry about performance anymore with the fast processor speeds we have nowadays....</sarcasm>

Speedy5
06-10-2004, 02:57 PM
> The most BASIC ever gets used is in the case of Visual Basic, in which a company will hire a few programmers to develop some private databasing software for them, and that is about all.

You'd be suprised how many companies use VB6 for... for everything. Now its shifting towards using .NET, mainly VB.NET although some old VB6 programmmers are migrating to C#. I believe Java is not used widely outside of universities. C# is the way to go and it will prove even more evident with Longhorn.

Sang-drax
06-10-2004, 03:01 PM
Oh but performace issues ARE what they once were. They have not diminished in any way whatsoever. The algorithm of choice is something entirely different.
I'm talking about using malloc/free versus Java garbage collection, to name one example.

The Boss pays me a lot of money, and I'm sure he wants me to produce as much as possible and not waste my time with memory management.

Note that I do almost all my programming in C++, but I'm getting quite good at Java because I feel that my productivity is higher in Java than in C++.

DavidP
06-10-2004, 03:01 PM
>I believe Java is not used widely outside of universities.

Really? I truly wish that was so because I am not a big Java fan, but I believe you are wrong. Just open up your newspaper and go to the jobs section. Or get on to monster.com. You will notice otherwise.

>C# is the way to go and it will prove even more evident with Longhorn.

C# is a beautiful language and I would love to develop in it, and there are certainly several jobs in C# out there right now. But as long as Microsoft isnt porting it to every platform known to man just like what has been done with Java, C# will only be used with Windows (and now with Linux since a 3rd party group ported it to Linux). It isnt fully multiplatform like Java is, and therefore there will still be a very large market out there for Java programmers. I would love to see C# become much bigger, because I like C# a lot, and I think it eventually will. But that wont be for awhile yet because Microsoft is only focusing on C# for Windows and nothing else.

Sang-drax
06-10-2004, 03:04 PM
How come you dislike Java so much, but love C# so much? They are as I understand quite similar.
C# has gotten much from Java.

DavidP
06-10-2004, 03:12 PM
Java has WAY too many input readers, output writers, input streams, output streams, etc. I posted a list here: http://cboard.cprogramming.com/showthread.php?t=53763

Java does not allow overloading of operators. Being able to overload operators has always made things quite convenient. For example, in C++ you can simply overload the << and >> operators using ostream and istream to output or input any type of object you want. That is a heck of a lot better that using the trillion different types of readers, writers, input streams, and output streams that Java has.

Java has always been quite bulky when it comes to typecasting, and using primitive data types is always a nuisance when you want to put them into a list or tree of some sorts because you always have to create a new object. And then when you get them out of the data structure you have to typecast out of it and then get the value using something like intValue() or whatever. This specific problem is now solved with the new features being added in Java 2 1.5.0, but they should have been added a LONG time ago. C# has never had that problem.

Also, Java's String class is gimp and can do virutally nothing. There is a class (is it StringStream...or something of that nature) that is meant to give Strings more versatility, but even it does not measure up to the string class of C#, and BOTH C# and Java's string classes dont measure up to the STL string class of C++. The STL string class of C++ is the most versatile and powerful string class I have ever seen in my life.

caroundw5h
06-10-2004, 03:55 PM
I said I wasn't gonna get caught up in this redundant and ridiculous verbal shove of "my language is better", but:


It is saying those kind of things that make you a bad programmer.

Hardly. Are you serious?




C++ is the future of intense perfomance applications and games. Java is the future of multiplatform applications and embedded applications. C#....who knows where that will go

I wish I had the crystal ball you have. I"d love to see the future. too. Can you tell me where the latest algorithm for optimizing the net is gonna come from? or maybe what the next best language is gonna be. I"m sure you know about the ones that are in development now. Using new programming techniques. Tell me please.


....Python? It might be used, but it aint going to ever be the flagship of anything. Sorry, bud.
what does being a flagship have anything to do with the language. You use whichever language is best for the task at hand. If you want ease of use, little learnign curve, high productivity. Python is the way to go. I don't think Eric raymond said python was his favorite language for sh**s and giggles. You might also wanna check out who uses python (http://pythonology.org/spotting).


sang-drax yeah, python is object oriented: check out some random code (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/266468)

DavidP. honestly, this argument is redundant. I can't imagine how many times it blazes across boards on the net. If you want more info about the relevance of python, do a search (http://cboard.cprogramming.com/search.php?searchid=34334)
, ask NASA (http://search.nasa.gov/nasasearch/search/search.jsp), check out the popular file sharing tool that corporations are trying to cash in on now, you might have heard of it its called bittorent (http://sourceforge.net/projects/bittorrent/). Or better yet, if you wanna know about python just ask google (http://googlesite.google.com/search?output=googleabout&site=googlesite&q=python&submit=Search)
they'll tell you exactly how relevant python is. And while your at it read this little article (http://archive.gamespy.com/legacy/articles/devweek_b.shtm).

as to how old i am. Check my profile. and WTF about that quote: jack of all trades master of none?? whats the relevance.

[???]no offence but anyone who l lists herbert schildt (http://students.cs.byu.edu/~dprucs/tutorials.html) amoung s/he's recommended reads. I wouldn't take language advice from. sorry[/???]

DavidP
06-10-2004, 04:02 PM
I wasnt saying Python is a bad language. I wasnt saying it is not used in the professional world. I was simply countering your immature remark of:

PYTHON OWNS!!!!
PYTHON IS THE FUTURE!!!!

Because your remark has about 0% truth in it.

caroundw5h
06-10-2004, 04:12 PM
I wasnt saying Python is a bad language. I wasnt saying it is not used in the professional world. I was simply countering your immature remark of:

PYTHON OWNS!!!!
PYTHON IS THE FUTURE!!!!

Because your remark has about 0% truth in it.

dude you need to lighten up or get out more. notice the smilies in that post??

as for remarks having truth, how can you talk of truth and then not give me scientific evidence of your quote

C++ is the future of intense perfomance applications and games. Java is the future of multiplatform applications and embedded applications. C#....who knows where that will go

I"m kidding. That too is a joke. heres the smilies to prove it.
:D :p and the last one ;)

Zach L.
06-10-2004, 06:07 PM
If you all step back a minute, maybe you'll see just how ridiculous this argument is getting. It is quite good entertainment, I must say.

gandalf_bar
06-10-2004, 06:21 PM
Thank guyz..... you are very helping......
My mind changes now.......

loopy
06-10-2004, 07:22 PM
I'm learning C, I have a ways to go yet. : )

jverkoey
06-10-2004, 09:36 PM
we should start a new board here at cboard classified as "completely useless flamewars" and use it as a museum of entertainment so we can see all of the people's simple questions that got turned in to flame wars ;) I've gotta say I agree with Zach here. Let's look back at the original question, which was basically "which other language should I learn?"

I'd have to say you should learn whatever suits you best. Like many people have already pointed out, there's pros and cons to each language, so it's really just a matter of what you'll use it for. I personally know C/C++ very well, but I've also taken a class on Java so I at least partially understand it. I've found that just like with spoken languages, once you learn a second language, other languages become much simpler to learn because most follow the same rules.

So in other words, if you need to learn C#, learn C#! and same goes with Java or Python or whatever else!

If you don't need to learn anything else, I'd suggest learning either Java or C#, as both of them are being used more and more nowadays (i'm pretty sure at least...check me if i'm wrong). So i'd suggest going with one of those two languages as a secondary.

-Good luck!

-The opinions above may or may not be correct, so if any of them don't agree with yours, I'm sorry in advance (to prevent any further flaming)

Mister C
06-10-2004, 10:04 PM
we should start a new board here at cboard classified as "completely useless flamewars" and use it as a museum of entertainment so we can see all of the people's simple questions that got turned in to flame wars I've gotta say I agree with Zach here. Let's look back at the original question, which was basically "which other language should I learn?"

I'd have to say you should learn whatever suits you best. Like many people have already pointed out, there's pros and cons to each language, so it's really just a matter of what you'll use it for. I personally know C/C++ very well, but I've also taken a class on Java so I at least partially understand it. I've found that just like with spoken languages, once you learn a second language, other languages become much simpler to learn because most follow the same rules.

So in other words, if you need to learn C#, learn C#! and same goes with Java or Python or whatever else!

If you don't need to learn anything else, I'd suggest learning either Java or C#, as both of them are being used more and more nowadays (i'm pretty sure at least...check me if i'm wrong). So i'd suggest going with one of those two languages as a secondary.

-Good luck!

Very well said...jverkoey

I usually here this question many times in a semester.

Also, some of you are very misinformed about some of the languages mentioned in this post. Do research!!

Prelude
06-11-2004, 05:31 AM
Wow, this thread took at decidedly nasty turn while I was away...

sand_man
06-11-2004, 08:20 AM
i only just read it.
funny isnt it?

Sang-drax
06-11-2004, 05:03 PM
Java has WAY too many input readers, [...]

Java does not allow overloading of operators. [...]

Java has always been quite bulky when it comes to typecasting, [...]

Also, Java's String class is gimp and can do virutally nothing. [...]
OK, that sounds like reasonable points to prefer C# over Java.
The string class you're looking for is called StringBuffer.

These are the things I really miss in C++:

A larger and useful standard library (sockets etc.) C++ is virtually useless by itself.
Package support: #ifndef is waaay too ancient. We need real package suppo
C++ also has the disadvantage that it is a very large language with many features and is thus hard to master. (template metaprogramming, multiple inheritance).

DavidP
06-11-2004, 05:14 PM
>Package support: #ifndef is waaay too ancient. We need real package suppo

Agreed, but it's much too late to add something like that to the C++ language. The current usage of namespaces and #ifndef's will have to do for C++.


>The string class you're looking for is called StringBuffer.

Thanks. Couldnt remember the name and was in kind of a hurry so I didnt look it up. :)

Prelude
06-12-2004, 09:06 AM
>A larger and useful standard library (sockets etc.) C++ is virtually useless by itself.
A great deal of the complexity of a language stems from the libraries it supports natively. The core Java language is small and simple. Even a non-programmer can learn the whole of it in a short amount of time. But even expert Java developers usually don't know the whole of the standard library. That's one reason why the C++ library (as large as it is) is relatively sparse compared to the Java classes.

But the primary reason is that it's difficult to write generic, portable standard libraries for a language that doesn't provide its own virtual machine. If you've written sockets on Unix and Windows then you'll recognize the subtle differences. Now what about Mac? Or any number of other platforms that support C++? It's easier to simply allow third parties to create those libraries and have the developer choose between them.

But I agree with you to an extent. There should be a standard interface convention that those libraries adhere to so that they're easier to pick up and use quickly. Perhaps committee sanctioned libraries that aren't a part of the standard, but recommended by it...

>Package support: #ifndef is waaay too ancient. We need real package suppo
Yes! Phase out the preprocessor completely and be done with it. :) But I don't see that happening anytime soon. Any sensible proposals would be met with screams of rage from the unwashed masses.

VirtualAce
06-13-2004, 08:02 AM
If they phased out the pre-processor then windows.h would be about 4 bytes in size.

:D

DavidP
06-13-2004, 04:15 PM
lol 4 bytes is smaller than the filename "windows.h"

golfinguy4
06-14-2004, 12:58 AM
He's using some good compression. ;)

ammar
06-15-2004, 01:20 AM
I think that it's a good idea to read a book about programming languages and paradigms in general and then choose what kind of language or paradigm you would like to learn( if you are taking programming seriously ), this will enhance you understanding of programming languages and among them C++ ofcourse.